요약

  • RFC 3334는 회계(accounting)를 설정 가능한 관측 체계로 다뤘습니다. 정책은 회계 기록이 존재하기 전에 플로우, 속성, 정확도, 샘플링, 집계, 보고 주기, 목적지, 보존 기간, 접근 권한을 선택할 수 있었습니다.
  • 따라서 기록이 없거나 대략적이라는 사실이 사용량이 없었다는 증거가 될 수 없습니다. 측정 범위, 수집기 필터링, 내보내기 손실, 집계, 만기 등을 반영할 수도 있습니다. 이 문서는 실험적(Experimental) 문서였고, 회계 구성과 과금 요금표 및 최종 청구를 명시적으로 분리했습니다.

카운터가 움직이기 전에 청구서는 시작되어 있었다

사용량 회계에 대한 통상적인 이야기는 중립적인 미터에서 출발합니다. 트래픽이 발생하고, 카운터가 이를 관측하고, 청구 시스템이 나중에 그 비용을 결정한다는 것입니다. RFC 3334는 더 정치적인 순서를 묘사했습니다. 사업 계약과 서비스 선택이 회계 정책을 만들어냅니다. 그 정책이 증거를 생성·전송·저장하는 장비를 구성합니다. 그 후에야 과금(charging)이 비용을 산출하고, 청구(billing)가 그 비용을 돈으로 바꿉니다.

이 계층 구조가 중요합니다. 회계는 청구서가 아니었고, 회계 정책은 요금표가 아니었습니다. 이 아키텍처는 미터링, 수집, 회계, 과금, 청구를 분리했습니다. 과금 정책은 같은 회계 데이터에 서로 다른 비용 지표를 적용할 수 있었습니다. 청구 정책은 청구서의 형식과 일정을 결정할 수 있었습니다. 회계 정책은 어느 쪽에든 제공될 데이터가 무엇인지를 결정했습니다.

RFC 3334는 2002년 10월에 실험적(Experimental) 문서로 발표되었습니다. 인터넷 표준이나 강제적인 정책 언어가 아니라, 일반적인 AAA 프레임워크 안에서 구성 요소와 메시지 절차를 제안한 문서였습니다. 그 가치는 소비 기록이 관측 계약에 의해 만들어진다는 점을, 이례적으로 명확하게 보여준 데 있습니다.

두 개의 미터는 같은 트래픽을 서로 다른 시점에 누락할 수 있었다

이 문서는 정적 미터와 설정 가능한 미터를 구분했습니다. 정적 미터는 고정된 세분도로 플로우를 관측하며, 과금 절차에 필요한 것보다 많은 원시 데이터를 만들 수 있습니다. 필터링과 집계는 이후 수집기나 다른 하류 단계에서 일어납니다. 설정 가능한 미터는 다르게 동작합니다. 미터링 정책이 애초에 수집할 플로우를 선택합니다.

이 구분은 '부재'의 의미를 바꿉니다. 정적 미터가 플로우를 보았고 수집기가 나중에 이를 버렸다면, 충분히 보존된 원시 피드로 관측을 복원할 수 있습니다. 설정 가능한 미터가 플로우를 아예 선택하지 않았다면, 어떤 하류 질의도 그 카운터를 재구성할 수 없습니다. 두 파이프라인은 같은 최종 기록을 만들 수 있지만, 증거상의 빈틈은 서로 다른 경계에서 발생합니다.

정책이 제어하는 것은 포함 여부만이 아니었습니다. 5-tuple 마이크로플로우부터 거친 네트워크 집계까지 플로우 세분도를 정하고, 속성을 고르고, 측정 주기와 타임스탬프 정확도를 결정하고, 샘플링을 구성할 수 있었습니다. 수집 단계에서는 푸시 또는 풀 방식, 집계와 보고 주기를 선택할 수 있었습니다. 저장 단계에서는 목적지, 보존 기간, 접근 목록을 정할 수 있었습니다.

그 결과물은 단순한 '사용량 데이터'가 아니었습니다. 특정 범위, 해상도, 시계, 샘플링 방식, 변환 경로, 보존 약속 아래에 놓인 사용량 데이터였습니다. 이 영수증들 중 하나라도 빠지면, 나중의 독자는 측정이 실제로 가진 것보다 더 높은 정밀도를 그 기록에 돌릴 수 있습니다.

조건은 사업 범주를 가시성으로 바꾸었다

회계 정책은 조건과 행동을 결합했습니다. 조건은 고객 또는 사용자 식별자, IP 주소, 시간대, 서비스 등급, 회계 유형을 매칭할 수 있었습니다. 행동은 기록 구조, 목적지, 보고 빈도, 저장 주기, 접근 권한, 플로우 세분도, 미터 정확도를 요청할 수 있었습니다.

이 덕분에 어떤 고객은 상세한 중간 보고를 받고 다른 고객은 세션 단위의 거친 기록을 받을 수 있었습니다. 프리미엄 서비스는 표준 서비스보다 촘촘히 측정될 수 있었습니다. '회계 유형'이 바뀐다고 물리적인 패킷이 바뀌는 것은 아니었습니다. 바뀌는 것은 시스템의 주의였습니다.

이 유연성은 제품 차별화와 고객 선호를 지지했습니다. 동시에 비교를 조건부로 만들었습니다. 두 사업자가 모두 '사용 바이트'를 보고하면서, 서로 다른 지점에서 관측하고, 다른 비율로 샘플링하고, 플로우를 다르게 묶고, 다른 속성을 보존할 수 있습니다. 도메인을 넘나드는 로밍 기록은 당사자들이 정책 의미 체계를 공유할 때만 의미를 지닙니다.

끌리는 실수는 회계 범주를 현실에 대한 기술로 취급하는 것입니다. '표준 회계'는 플로우의 자연적 속성이 아니라 사업자가 선택한 설정의 묶음입니다. 그 묶음이 없어지면 기록만으로 분쟁을 해결할 수 없습니다.

집계는 미래의 질문을 현재의 규모와 바꾸었다

큰 볼륨 때문에 필터링과 집계는 실용적인 필수가 되었습니다. 그러나 모든 집계는 질문을 미리 정해 버립니다. 마이크로플로우를 고객 단위로 묶으면 고객 총량은 보존되지만 어느 목적지나 애플리케이션이 기여했는지는 사라집니다. 구간을 묶으면 볼륨은 남지만 버스트는 지워집니다. 샘플링은 수집 비용을 낮추지만 추정 불확실성을 더합니다. 짧은 보존 기간은 저장을 저렴하게 하지만 항소의 창을 닫습니다.

이런 트레이드오프는 명시적일 때 정당합니다. 위험해지는 시점은 남아 있는 총량이, 버려진 모든 차원이 애초에 중요하지 않았던 것처럼 다루어질 때입니다. 집계는 자신이 설계된 질문에는 답하면서 보안 귀속, 성능 진단, 사업자 간 정산, 고객 이의 제기 같은 다른 질문에는 쓸모가 없을 수 있습니다.

RFC 3334의 미터 예에는 특히 직접적인 경고가 담겨 있었습니다. NeTraMet나 NetFlow 수집이 정확한 회계 데이터를 보장하지 않으며, 정확성이 요구되는 곳에서 사용해서는 안 된다는 문장이었습니다. 이 문장은 흔한 증거적 지름길을 차단합니다. 익숙한 텔레메트리 기술이 평판으로 정확성을 제공하지는 않습니다. 정확성에는 측정된 오차 모델, 손실 증거, 용도에 맞는 요건이 필요합니다.

내보내기는 추가 빈틈을 만듭니다. 카운터가 관측 지점에서 정확하더라도 수집기로 가는 데이터그램이 손실될 수 있습니다. 수집기가 기록을 받고 잘못된 템플릿이나 집계를 적용할 수 있습니다. 시계 불일치는 구간 귀속을 바꿀 수 있습니다. 각 단계는 자기만의 영수증을 필요로 합니다.

푸시와 풀은 정책을 신뢰 경계 너머로 옮겼다

회계 정책은 로컬에 있을 수도, 다른 AAA 서버에서 받을 수도, 고객이 공급할 수도 있었습니다. 푸시 모델은 로컬 설치용 정책을 전달하고, 풀 모델은 원격 당사자에게 정책을 요청합니다. 교환은 로밍과 외주 회계를 가능하게 했지만, 동시에 실행 가능한 측정 의도를 조직 경계 너머로 옮겼습니다.

RFC 3334는 위험한 부분이 행동만이 아니라고 경고했습니다. 악의적이거나 우발적인 조건의 평가 자체가 자원을 소모하거나 원치 않는 동작을 유발할 수 있습니다. 따라서 수신자는 평가 전에 조건과 행동을 모두 검증해야 했습니다. 발신자 인증은 필요했지만 충분하지 않았습니다. 인증된 정책도 권한을 초과하거나 안전하지 않은 작업 부하를 강제할 수 있었습니다.

정책 출처에는 저자, 발급자, 승인, 버전, 활성화 시각, 범위, 장비 구성으로의 정확한 번역이 포함되어야 합니다. 응용별 모듈(Application Specific Module)이 일반 정책을 NeTraMet 규칙이나 수집기 필터로 변환할 수 있습니다. 변환이 성공했다는 영수증은 서로 다른 두 구현이 의미적으로 동일한 측정을 만들어냈다는 증명이 되지 않습니다.

통합 회계와 분리 회계는 다른 세계를 보았다

통합 회계에서는 측정 절차가 서비스와 함께 존재하며 서비스 고유 정보를 사용할 수 있습니다. 예를 들어 IP 전화 회계는 통화 시그널링 데이터를 통합할 수 있습니다. 분리 회계는 측정을 여러 사업자의 웹, 파일 전송, 음성을 함께 다룰 수 있는 별개의 서비스로 다룹니다.

어느 쪽도 절대적으로 우월하지 않았습니다. 통합 회계는 일반 미터가 볼 수 없는 애플리케이션 이벤트를 볼 수 있지만, 서비스 자체의 해석에 묶입니다. 분리 회계는 제어와 외주를 중앙화할 수 있지만 다른 지점에서 관측하며, 파라미터와 분쟁 해결에 대한 명시적 합의가 필요합니다.

따라서 관측 지점은 기록의 출처 정보에 속합니다. 인그레스 에지에서 본 바이트, 애플리케이션 서버에서 본 바이트, 하류 내보내기에서 본 바이트는 서로 교환 가능하지 않습니다. 재전송, 캡슐화, 캐싱, 실패한 세션은 각 카운터를 자기 위치에서는 정확하게 만들면서 총량이 서로 어긋나게 할 수 있습니다.

이후의 플로우 표준은 오래된 증거를 자동으로 고치지 않았다

RFC 2903과 RFC 2904는 일반 AAA와 인가 설정의 배경을 제공했습니다. RFC 2975는 회계 관리를 다루었고, RFC 2924는 속성을 정리했습니다. RFC 2123은 NeTraMet을 정의했습니다. RFC 3954는 이후 NetFlow 버전 9를 문서화했고, RFC 7011과 RFC 7012는 IPFIX 프로토콜과 정보 모델의 기반을 표준화했습니다.

이 문서들은 독자가 주변 메커니즘을 이해하도록 돕습니다. 그러나 RFC 3334의 아키텍처가 배포되었다는 증거도, 과거 사업자가 특정 구성을 사용했다는 증거도, 오래된 기록이 IPFIX 의미 체계를 가진다는 증거도 아닙니다. 표준의 계보는 배경이지 소급적인 계측이 아닙니다.

같은 절제는 없는 기록에도 적용됩니다. 부재는 자원 사용이 없다는 뜻일 수 있지만, 정책이 플로우를 제외했거나, 관측 지점이 놓쳤거나, 샘플링이 선택하지 않았거나, 내보내기가 실패했거나, 집계가 차원을 지웠거나, 접근이 거부되었거나, 보존 기간이 만료되었다는 뜻일 수도 있습니다. 기록만으로는 이 설명들 중 하나를 고를 수 없습니다.

모든 총량에는 관측 계약이 필요하다

방어 가능한 회계 주장은 다섯 개의 영수증으로 시작합니다. 정책 영수증은 조건, 행동, 버전, 권한을 기록합니다. 구성 영수증은 정책이 어떻게 번역되고 실제로 적용되었는지 보여줍니다. 커버리지 영수증은 미터 유형, 관측 지점, 범위, 시계, 정확도를 명시합니다. 변환 영수증은 샘플링, 필터링, 집계, 내보내기 손실을 기록합니다. 관리 영수증은 목적지, 접근, 저장, 삭제를 기록합니다.

과금과 청구는 이 다섯 뒤에 자기 정책을 더합니다. 최종 청구서를 거꾸로 사용해 미터의 완전성을 증명할 수 없습니다. 회계 총량으로 기록되지 않은 사용이 0이었다고 증명할 수도 없습니다.

RFC 3334의 오래남는 교훈은, 측정이 숫자이기 전에 선택이라는 점입니다. 미터는 정책이 보이게 만든 것을 세었습니다. 책임 있는 운영자는 카운트와 함께 시야를 보존합니다.

출처