요약

  • RFC 3483은 모니터링, 기록, 보고, 삭제를 분리했습니다. 정책 결정 지점은 원치 않는 보고를 침묵시킬 수 있었지만 정책 강제 지점은 사용량 집계를 계속했습니다.
  • 또한 보고서가 타이밍, 삭제, 할당 식별 정보를 유지하도록 요구했으며, 최종 경계는 컨텍스트 비활성화, 요청 삭제, 캐시 정책 만료에 두었습니다.

모니터링 화면에 10분 동안 새 숫자가 나타나지 않는다고 상상해 보십시오. 아무 일도 일어나지 않았다는 결론이 유혹적입니다. RFC 3483은 이 결론이 안전하지 않게 만들었습니다. 정책 결정 지점(PDP)이 의도적으로 보고를 중단했더라도 정책 강제 지점(PEP)은 여전히 정책 사용을 관찰하고 누적하고 있을 수 있었습니다. 침묵은 보고 채널을 묘사했지, 측정된 세계를 묘사하지 않았습니다.

이 구분이 중요했던 이유는 COPS 정책 사용 피드백이 하나의 불가분한 과금 동작이 아니었기 때문입니다. 이 프레임워크는 세 가지 질문을 분리했습니다. 선택 정책은 무엇을 감시할지 정했습니다. 사용 피드백 클래스는 어떤 지표를 수집할지 정했습니다. 연계 정책은 이 선택들을 전달 조건과 결합했습니다. 따라서 이후의 보고서는 스스로 설명하는 총계가 아니라 특정 선택, 지표, 일정의 결과를 담고 있었습니다.

Accounting Timer가 바깥 속도를 정했습니다. 이 타이머는 COPS 연결에서 수용되는 원치 않는 회계 유형 보고의 최대 빈도를 정했습니다. RFC 3483은 이것이 정밀 동기화가 아니라 트래픽 페이싱임을 명확히 했습니다. 연계 정책은 여러 타이머 구간을 기다리거나, 임계값에서 보고하거나, 값이 바뀐 후에만 보고하거나, 바뀌지 않아도 주기적으로 보고할 수 있었습니다. 해당 규칙을 알지 못하면 어떤 상상된 마감 시점에 패킷이 없다는 사실은 거의 아무것도 증명하지 못했습니다.

가장 날카로운 경우는 타이머 값이 0인 경우였습니다. 0은 PEP가 원치 않는 사용 피드백을 보내지 않는다는 뜻이었습니다. PEP가 모니터링을 멈췄다는 뜻이 아니었습니다. 장치는 PDP의 정책이 선택한 것을 계속 추적하고 PDP가 요청할 때까지 결과를 보유했습니다. 운영 증거에서 전달 제어의 0은 카운터의 0이 아니었습니다.

일시 중지는 이 격차를 넓혔습니다. PDP는 모니터링을 계속한 채 보고 메시지를 중단했다가 나중에 전달을 재개할 수 있었습니다. 또는 모니터링 자체를 중단할 수도 있었는데, 이 경우 새 사용이 추적되지 않으므로 보고가 자연히 억제되었습니다. 어느 경우든 지시는 전환 시점에 현재 누적 사용량을 보고할지 여부도 지정했습니다. 프레임워크는 이 상태 변경을 하나의 피드백 정책에 적용할 수도, 전체에 적용할 수도 있었습니다. 따라서 조사자는 두 상태 변수를 모두 필요로 합니다. '보고 꺼짐'과 '측정 꺼짐'은 서로 교환할 수 없는 표기입니다.

온디맨드 피드백은 또 하나의 함정을 만들었습니다. PDP는 회계 구간 중간에 즉시 보고를 요청할 수 있었습니다. 사용 정책이 보고 후 속성을 삭제하도록 규정했다면 PEP는 그 속성을 삭제했습니다. 그러나 원래의 주기 일정은 계속되었습니다. 요청이 시계를 재설정하지 않았습니다. 가까이 도착한 두 보고서가 완전히 올바를 수 있었습니다. 하나는 요청에 답했고 다른 하나는 이미 예정된 경계에 도착했습니다. 첫 번째가 카운터를 삭제했는지 모르면 두 값은 더하거나 비교할 수 없습니다.

식별성도 시간만큼 중요했습니다. 일부 COPS 객체는 고유한 구성 항목을 나타냈습니다. 다른 것들은 PEP가 여러 실제 할당을 만들어 낸 공유 템플릿이었고, 각 할당은 독립적인 통계를 수집할 수 있었습니다. RFC 3483은 선택 기준 PRC와 사용 피드백 PRC가 함께 PEP가 지원하는 가장 세밀한 입도를 식별하기에 충분한 정보를 담도록 요구했습니다. 예를 들어 공유 IP 객체는 개수를 만든 할당을 구별하기 위해 포트가 필요할 수 있었습니다. 모호한 객체에 붙은 정확한 숫자는 여전히 약한 증거였습니다.

문서는 선택 기준에 완전한 고유 키를 담을 것을 권고했습니다. 또한 불완전한 기준이 여러 일치하는 할당을 선택하고 피드백 레코드가 빠진 구별 요소를 보충하는 선택적 형식도 허용했습니다. 이 선택은 레코드를 결합하는 방식을 바꿉니다. 선택 쪽만 보면 여러 카운터를 하나로 합칠 수 있고, 반환된 지표만 보면 수집을 승인한 정책을 잃을 수 있습니다.

컨텍스트 전환은 증거 주위에 형식적 경계를 그렸습니다. COPS-PR은 하나만 활성인 여러 분리된 정책 컨텍스트를 유지할 수 있었습니다. 사용은 해당 컨텍스트가 활성인 동안 모니터링, 기록, 보고되었습니다. 비활성화에는 그 컨텍스트의 피드백을 담은 보고가 요구되었고, 이후 PEP는 비활성 컨텍스트에 대해 어떤 모니터링, 추적, 보고도 수행하지 않았습니다. 마지막 보고는 단지 또 하나의 주기적 샘플이 아니라 마감 기록이었습니다.

Delete Request State도 똑같이 엄격한 종료를 가졌습니다. 삭제를 발행하기 직전에 PEP는 미전송 사용 데이터를 보내야 했습니다. 이는 PDP가 삭제를 시작하는 경우에도 적용되었습니다. 순서가 중요합니다. 최종 증거를 보존한 후에 요청 상태를 지우는 것이며, 이전 주기 보고가 충분히 가깝다는 가정으로 그 전에 지우는 것이 아닙니다.

연결 실패는 이 구분들을 지우지 않았습니다. PEP가 PDP와의 접촉을 잃으면 캐시된 정책을 계속 강제하는 동안에만 사용 추적을 계속했습니다. 설치된 정책이 만료되면 피드백 데이터도 만료되고 모니터링도 함께 끝났습니다. 재연결 후 PDP는 보고를 재개할 수 있음을 결정론적으로 선언해야 했습니다. 그러면 PEP는 캐시된 사용량을 보고하고 새 연결에서 수용된 Accounting Timer에 맞춰 일정을 조정했습니다.

이 규칙은 증거의 수명을 강제 중인 결정의 수명에 묶었습니다. 카운터는 데이터베이스 행이나 프로세스가 살아남았다고 해서 살아남지 않았습니다. 재연결이 PEP에게 정책 만료를 넘어서는 연속성을 발명할 권한을 준 것도 아니었습니다. RFC 3483은 정책 경계를 증거 경계로 만들었습니다.

이 RFC의 한계도 중요합니다. 이것은 Informational 문서이며 스스로를 프레임워크라고 불렀습니다. 과금, 요율, 청구 모델은 범위 밖이었습니다. 요청하는 Decision의 정확한 내용은 이후 구현 문서에 속했습니다. 기록에는 특정 네트워크가 이 프레임워크를 배포했다거나, 카운터가 정확했다거나, 벤더 간 상호운용이 있었다거나, 사용 보고가 고객에게 보이는 서비스를 나타냈다는 것을 증명하는 아무것도 없습니다.

역사적 기여는 개념적 규율이었습니다. RFC 3060은 정책 데이터를 로컬 실행과 구별했고, RFC 3084는 프로비저닝 상태와 캐싱을 기술했으며, RFC 3159는 정책 행 식별을 다루었습니다. RFC 3483은 정책이 설치된 후에 시작해 다른 질문을 던졌습니다. 어떤 사용 증거가 존재했는가, 언제 말했는가, 그 숫자는 정확히 무엇을 가리켰는가?

Lu Heng의 현실 계층 방법은 이 질문을 재구성으로 바꿉니다. 활성 컨텍스트와 실제 할당을 보존하십시오. 선택, 지표, 연계 정책을 결합하십시오. 모든 타이머, 임계값, 변경 조건, 보고 후 삭제 규칙을 기록하십시오. 요청, 중단, 재개, 최종 보고를 하나의 연대기에 놓으십시오. 실패 시에는 캐시된 강제가 멈춘 곳에서 증거를 멈추십시오.

그때에야 조용한 채널을 해석할 수 있습니다. 사용이 없었다는 뜻일 수도 있습니다. 원치 않는 보고가 없었다는 뜻, 전달 상태가 중단되었다는 뜻, 끝나지 않은 구간이라는 뜻, 요청 경계 뒤에 쌓여 기다리는 누적 증거라는 뜻일 수도 있습니다. RFC 3483의 오래된 교훈은 카운터와 그 메신저가 별개의 수명을 가진다는 것입니다. 보고는 침묵했습니다. 카운터가 꼭 멈춘 것은 아닙니다.

출처