요약

  • RFC 3545는 컨텍스트 변경 값을 N+1개 패킷에 걸쳐 반복 전송함으로써, 손실 버스트가 가정된 링크 한계 내에 머무는 경우 압축 해제기가 복구할 수 있도록 했다.
  • 선택 사항인 HDRCKSUM은 IPv4의 UDP 체크섬이 0일 때 재구성된 헤더를 검사하는 데 도움을 주었지만, 이 체크섬은 IPv4 식별(Identification) 필드를 포함하지 않았다. N 회 이상의 손실이 발생하면 IPv4에서 더 안전한 조치는 컨텍스트를 무효화하고 상태를 요청하는 것이었다.

이 검사는 맹점을 안고 등장했다. RFC 3545는 압축기가 0으로 설정된 IPv4 UDP 체크섬을 16비트 헤더 체크섬으로 대체할 수 있게 하여, 압축 해제기가 재구성된 헤더를 검사할 방법을 제공했다. 그러나 IPv4 식별(Identification) 필드는 이 체크섬이 검증하는 필드에 포함되지 않았다. 평범한 정상 경로에서는 이 누락이 더 큰 복구 설계 안에 조용히 묻혀 있을 수 있었다. 그러나 인접 패킷이 지나치게 많이 손실된 후에는 “복구됨”이 정직하게 의미할 수 있는 범위 자체가 달라졌다.

RFC 2508에서 정의된 CRTP는 양쪽 끝에 공유 컨텍스트를 유지하는 방식으로 IP, UDP, RTP 헤더를 압축한다. 전체 헤더가 컨텍스트를 설정하고, 이후 패킷은 변경분이나 델타만 실을 수 있다. 갱신 정보를 담은 패킷이 사라지면 압축기는 앞으로 나아가지만 압축 해제기는 그러지 못한다. 이 불일치는 다른 압축 패킷이 도착할 때까지 보이지 않을 수 있다. 지연이 긴 링크에서는 컨텍스트 복구를 요청하는 데 왕복 한 번이 걸리고, 압축 해제기는 기다리는 동안 수많은 패킷을 폐기할 수 있다.

RFC 3545의 해법은 명시된 한계 안에서의 반복이었다. 이 문서는 링크의 손실 특성에 기반한 매개변수 N을 기술한다. 인접한 N개보다 많은 패킷이 손실될 확률은 작을 것으로 기대된다. 갱신을 연속 N+1개 패킷에 담아 보내면, 인접 손실이 N개 이하라면 적어도 하나의 복사본은 도착해야 한다. 압축 해제기는 “twice” 재구성 절차를 사용해 유한한 간격을 감안하고, 그 결과를 UDP 체크섬 또는 해당되는 경우 HDRCKSUM으로 검증할 수 있다. 이 프로토콜은 복구를 더 관용적으로 만들 뿐, 모든 버스트가 이 모델에 들어맞는다고 보장하지는 않는다.

링크 시퀀스는 4비트에 불과하고 16패킷마다 순환한다. 따라서 두 시퀀스 값 사이의 가시적 차이만으로는 패킷이 많이 손실되었는지, 아니면 나중 패킷이 먼저 도착하고 앞선 패킷이 그 뒤에 재정렬되어 도착했는지를 항상 판별할 수 없다. N+1 미만의 손실이라는 그럴듯한 해석이 가능하면 압축 해제기는 해당 재구성을 시도하고 검증할 수 있다. 그럴듯한 손실 수가 N을 초과하면 IPv4는 더 엄격한 규칙을 따른다. “twice”로 계속 추측하지 말고, 컨텍스트를 무효화하고CONTEXT_STATE를 보내 압축기가 공유 상태를 복원하도록 한다.

이 정지 규칙에서 체크섬의 커버리지가 문제가 된다. HDRCKSUM은 원래 IPv4 UDP 체크섬이 0일 때 사용할 수 있으며, 검사용으로 삽입되고 압축 해제기가 제거한다. IPv6에서는 0인 UDP 체크섬이 허용되지 않으므로 이 옵션은 사용되지 않는다. 그러나 헤더 체크섬은 IPv4 ID를 검증하지 않는다. N개를 넘는 패킷 손실 이후의 IPv4에서는 체크섬 통과가 그 누락된 필드를 메울 수 없다. 대신 RFC 3545는 압축 해제기에 불확실한 컨텍스트를 버리라고 지시한다. IPv6에는 IPv4 ID 필드가 없으며 다른 복구 규칙을 사용할 수 있다.

갱신 버스트에는 자체적인 식별 보호 장치가 있다. N+1개의FULL_HEADER패킷을 보내는 동안 고정 컨텍스트 필드가 바뀌면, 압축기는 새 버스트를 시작하고 세대(generation) 번호를 변경한다. 그렇지 않으면 압축 해제기가 겹치는 버스트를 더 큰 손실 허용치로 오해하여 컨텍스트 불일치를 놓칠 수 있다.CONTEXT_STATE응답 역시 반복 전송되어야 한다. 이는 프로토콜 메커니즘이며, 특정 장치가 이 확장을 사용하도록 설정했거나 어떤 RTP 애플리케이션이 페이로드를 재생했다는 증거가 아니다.

역사적 구분은 사소하지만 운영상 중요하다. 체크섬은 그것이 커버하는 필드만 증명하고, 유한 범위의 재구성은 전달이 아니며, 컨텍스트 복구는 미디어 확인이 아니다. 유효한 로컬 헤더 검사가 검증되지 않은 IPv4 ID와 공존할 수 있다. 손실 패턴이 명시된 한계를 넘을 때 무효화는 복구 실패가 아니라, 압축 해제기가 모호한 시퀀스를 거짓 확신으로 바꾸기를 거부하는 지점이다.

출처