요약

  • RFC 3409는 하위 계층이 오류가 있는 압축 헤더가 담긴 패킷을 명시적인 오류 표시와 함께 ROHC 디컴프레서에 전달할 것을 권고했습니다. 물론 패킷 자체는 폐기되어야 했습니다.
  • 불균등 오류 검출을 통해 헤더 무결성과 페이로드 손상을 분리할 수 있어, 네트워크가 모든 오류를 깨진 헤더로 취급하도록 강요하는 대신 관용적인 애플리케이션이 페이로드를 판단할 수 있었습니다.

헤더 압축은 작은 오류를 이례적으로 중대하게 만듭니다. 손상된 일반 패킷은 자기 자신만 잃을 수 있습니다. 그러나 손상된 압축 헤더는 이후 패킷을 재구성하는 데 쓰이는 공유 컨텍스트까지 오도할 수 있습니다. 그래서 RFC 3409는 하위 계층이 ROHC 헤더의 잔여 오류를 거의 0에 가깝게 만들 것을 요구했습니다. 다만 그렇다고 해서 디컴프레서가 관찰하기 전에 실패한 모든 객체를 지워버리라고 지시하지는 않았습니다.

권고는 미묘했습니다. 디컴프레서가 활용할 수 있으므로 유효하지 않은 패킷을 오류 표시와 함께 상위로 전달하되, 패킷은 반드시 폐기되어야 한다는 것입니다. 동일한 객체가 두 가지 자격을 갖게 되었습니다. 애플리케이션 전달 대상은 아니지만, 라벨이 붙은 실패는 압축 상태를 담당하는 기계를 위한 증거로 남을 수 있었습니다.

라벨이 없다면 전송 중 오염은 위험했을 것입니다. 디컴프레서가 손상된 비트를 유효한 컨텍스트 갱신으로 받아들일 수 있었기 때문입니다. 반대로 객체 자체가 없다면 ROHC 아래에서 모든 것을 드롭하면서 회복에 도움이 될 수 있는 사건을 숨겨버리게 됩니다. RFC 3409는 보수적인 데이터 결정과 상태 관찰자의 정보를 모두 보존했습니다.

하위 계층은 이미 재구성된 의미의 저자였습니다. IPv4 전체 길이, IPv6 페이로드 길이, UDP 길이는 링크가 제공하는 패킷당 하나의 길이 값으로부터 추론될 수 있었습니다. 디컴프레서는 단순히 받은 바이트를 확장하는 것이 아니라, 압축된 필드를 스택의 다른 곳에서 생산된 사실과 결합했습니다.

이후 오류 범위가 얼마나 많은 유용한 패킷이 살아남는지를 결정했습니다. 헤더와 페이로드에 하나의 체크섬만 있으면 어느 부분이 손상되었는지 알 수 없습니다. ROHC는 올바른 복원이 더 이상 보장될 수 없으므로 헤더 자체가 틀렸을 가능성을 가정해야 했습니다. 음성 코덱이 견딜 수 있었을 페이로드는 아마도 건전한 헤더와 함께 폐기되었습니다.

불균등 오류 검출은 이 결정 그래프를 바꿨습니다. 압축 헤더는 온전하고 페이로드만 손상되었다고 시스템이 말할 수 있다면, 헤더를 재구성하고 애플리케이션이 미디어가 여전히 사용 가능한지 판단하도록 할 수 있습니다. 이는 좋은 음질을 약속한 것이 아니었습니다. 무차별적인 네트워크 폐기에서 도메인별 관용성을 지닌 애플리케이션으로 판단 권한을 이전한 것입니다.

불균등 오류 보호는 별개의 선택지였습니다. 헤더에 더 강한 보호를 적용하면 헤더 오류 확률을 낮출 수 있지만, RFC 3409는 그 이득이 불균등 오류 검출에 의존한다고 지적했습니다. 수신측이 헤더 손상과 페이로드 손상을 구분하지 못한다면, 추가 보호가 신뢰할 수 있는 분류를 만들어내지는 못합니다. 보호 강도와 진단 분해능은 서로 다른 제어 수단이었습니다.

가이드라인의 나머지 부분도 증거가 위치에 의존한다는 점을 강화했습니다. 압축기 이전의 중복은 자원을 낭비하더라도 처리할 수 있었지만, 압축기와 디컴프레서 사이의 중복은 금지되었습니다. 압축 이전의 재정렬은 허용되었고, 원래 ROHC 경로는 짝을 이루는 상태 기계 사이에서 재정렬이 없다고 가정했습니다. 동일한 사건도 발생 위치에 따라 의미가 달라졌습니다.

핸드오버는 또 하나의 경계를 더했습니다. 시스템은 압축 컨텍스트를 이전하거나, 압축기에 통지하고 전체 헤더로 재초기화할 수 있었습니다. 어느 쪽 증거도 없는 긴 손실 폭주는 컨텍스트를 낡게 만들 수 있었습니다. 여기서도 상태를 이전하거나 새로 고치는 것과 페이로드가 전달되었음을 입증하는 것은 서로 다른 문제였습니다.

이후의 ROHC 문서들은 주변 프레임워크의 일부를 바꾸고 재정렬 문제를 더 직접적으로 다루었습니다. 그러나 이 Informational RFC에 대한 배포 결과를 제공하지는 않습니다. 이 문서의 지속적인 기여는 부분적 유효성을 위한 어휘입니다. 필요할 때는 데이터를 폐기하되, 유용할 때는 라벨이 붙은 증거를 보존하고, 각각의 결과는 적절한 계층이 결정하도록 하라는 것입니다.

출처