요약

  • RFC 1458은 동일 우선순위 혼잡 상황에서, 낮은 품질의 데이터가 그것 없이도 여전히 쓸모 있을 수 있다면 가장 높은 애플리케이션 품질의 패킷부터 폐기할 것을 제안했다.
  • 이 규칙은 애플리케이션 의존성, 클라이언트 수요, 라우터 상태, 패킷 마킹, 실제 손실, 복구, 최종 사용 가능성이 서로 구분되고 감사 가능하게 유지될 때에만 의미가 있었다.

한 패킷을 더 수용할 공간이 있는 라우터를 상상해 보자. 한 패킷은 분석가가 이미 활용할 수 있는 대략적인 이미지를 완성한다. 다른 패킷은 세부 정보를 더하지만 그 대략적인 이미지 없이는 이해할 수 없다. 어느 쪽이 더 높은 품질의 패킷인가?

RFC 1458은 현대 독자를 오해할 수 있는 어휘로 이에 답했다. 세부 정보 패킷이 더 높은 품질을 담고 있었다. 그러나 혼잡 상황에서 라우터가 가장 먼저 폐기해야 할 패킷이 바로 그것이었다. 이는 세부 정보에 가치가 없다는 주장이 아니라, 가치가 조건적이라는 주장이었다. 기반이 없는 증강은, 증강이 없는 기반보다 가치가 낮아질 수 있었다.

단 하나의 큐 선택이 1993년의 Informational 메모를 버려진 멀티캐스트 아이디어의 단순 목록 그 이상으로 만든다. 이 문서는 지금도 운영적으로 다루기 어려운 질문을 던진다. 네트워크 자신이 그 결과를 볼 수 없을 때, 네트워크가 애플리케이션 결과를 지킬 수 있는가?

메커니즘에 앞서 워크로드가 있었다

RFC 1458은 1993년 5월에 발표되었으며, 추상적인 패킷 서비스가 아니라 디지털 이미지에서 출발했다. 이 문서는 한 변당 수만 픽셀에 달하는 원격 탐사 이미지, 하루 수천 테라바이트, 몇 초에서 몇 분에 이르는 전달 마감, 그리고 대역폭이 최대 6자릿수만큼 차이 나는 네트워크에 접속된 뷰어를 묘사했다.RFC Editor 기록은 이 문서를 인터넷 표준이 아닌 Informational로 분류한다.

이 워크로드에는 신뢰성의 정의가 하나만 있지 않았다. 이미지 회의에서 마우스 이동 패킷 하나가 드롭되는 것은 무해할 수 있었다. 아카이브나 상세 분석에는 누락된 모든 패킷의 복구가 요구되었다. 계층형 이미지 코딩은 세 번째 사례를 허용했다. 베이스 공간 해상도를 신뢰성 있게 전송하고, 이후 세부 정보에서 어느 정도의 손실은 보간이나 픽셀 복제가 열화되었지만 사용 가능한 이미지를 만들어 낼 수 있기 때문에 감내할 수 있었다.

따라서 중요한 경계는 신뢰성 있는 트래픽과 신뢰성 없는 트래픽 사이가 아니었다. 하나의 애플리케이션 결과 안에 있는 신뢰성 하한이었다. 클라이언트는 풍부한 이미지를 요청하면서도 손실에 대해 오직 베이스 표현만 살아남기를 요구할 수 있었다. "요청된 품질"과 "최소 사용 가능 품질"은 서로 다른 사실이었다.

세 개의 제어 평면이 하나의 의존성을 옮기려 했다

이 메모는 단독 전송 계층이 아니라 스위트를 제안했다. 계층형 멀티캐스트 그룹 권한(Multicast Group Authority, MGA)은 Class D 주소를 할당하고, 서비스를 등록하고, 품질과 신뢰성 기준으로 멤버십을 관리했다. 신뢰성 적응형 멀티캐스트 프로토콜(Reliable Adaptive Multicast Protocol, RAMP)은 데이터에 순서를 부여하고, 손실을 복구하고, 전송률을 조절했다. 수정된 라우팅 지원은 각 아웃바운드 인터페이스에 그룹-및-품질 상태를 설치했다.

각 구성 요소는 진실의 일부만을 들고 있었다. 서버는 아무것도 전송하기 전에 서비스를 등록할 수 있었다. 클라이언트는 서버가 아직 제공하지 않는 품질을 요청할 수 있었다. MGA는 첫 수신자를 기록하고 서버에 그 품질을 시작하라고 알릴 수 있었다. 라우터는 적격 경로를 설치할 수 있었다. 그러나 그 어떤 기록도 패킷이 실제로 그 경로를 통과했음을, 클라이언트 애플리케이션이 이미지를 렌더링했음을 증명하지 않았다.

RFC 1458은 품질 변경을 일깝울 만한 방식으로 비용이 크게 만들었다. 한 수준에서 다른 수준으로의 전환은 한 수신자 수를 감소시키고 다른 수신자 수를 증가시키고, 변경을 MGA 계층 구조에 전파하고, 품질이 첫 수신자를 얻거나 마지막 수신자를 잃으면 서버에 알리고, 필요한 곳에서 라우팅을 갱신하는 것으로 이루어졌다. 품질 라벨은 단순히 에지에 붙은 선호가 아니었다. 그것은 시스템 전반의 생산 및 복제 상태를 바꾸었다.

같은 헤더 필드가 의미상의 분쟁을 담았다

RAMP 패킷은 하나 또는 여러 애플리케이션 품질 수준으로 마킹될 수 있었다. 수신자는 조인한 멀티캐스트 그룹과 요청된 품질 모두와 일치하는 경우에만 패킷을 받아들이도록 되어 있었다. 구형 IPv4 구현을 위해 RFC 1458은 Type of Service 필드를 품질 비트 집합으로 다룰 것을 제안했다.

이 메모는 또한 이것이RFC 1349와 호환되지 않는다는 점을 인정했다. 그 표준 트랙 문서는 TOS를 네트워크 경로에 대한 하나의 열거된 요청 — 지연 최소화, 처리량 최대화, 신뢰성 최대화, 비용 최소화, 또는 일반 서비스 사용 — 으로 정의했다. 그리고 논리 OR로 값들을 결합하는 것은 더 이상 의미가 없다고 명시했다. 그보다 앞선RFC 791도 Type of Service를 이미지 의존성의 애플리케이션 계층 지도가 아니라 네트워크 서비스 신호로 인터넷 헤더에 배치했다.

이 충돌은 역사적으로 중요하다. 비트는 유한하다. 의미는 그렇지 않다. 두 설계가 필드의 물리적 위치에는 동의하면서 그것을 해석할 권한이 누구에게 있는지는 disagree할 수 있다. 비트 패턴을 보여주는 패킷 캡처는 패턴을 증명한다. 프로토콜과 버전 출처 없이는, 송신자가 네트워크 트레이드오프를 의미했는지, 이미지 품질 멤버십을 의미했는지, 실험을 의미했는지, 다른 무엇을 의미했는지 증명하지 못한다.

"최고 품질 먼저"가 왜 합리적인 손실 순서였는가

RFC 1458은 라우터가 모든 아웃바운드 인터페이스에 대해 멀티캐스트 주소와 요청된 품질 집합을 유지할 것을 요구했다. 패킷은 그룹과 품질 모두가 일치하는 곳에서만 전달되었다. 큐가 넘칠 때 우선순위 마킹된 패킷은 마지막에 폐기되었다. 그러나 동일한 우선순위 안에서는 가장 높은 품질의 패킷들이 먼저 폐기되었다.

그 근거는 방향성 있는 관계에 의존했다. 낮은 품질의 데이터는 그 자체로 여전히 쓸모 있을 수 있었다. 높은 품질의 데이터는 그 낮은 계층 없이는 사용할 수 없을 수 있었다. 베이스를 보존하는 것은 가능한 결과의 가장 큰 집합을 유지했다. 어떤 수신자는 열화된 이미지를 표시할 수 있었고, 그 어떤 수신자도 증강 세부 정보만으로 누락된 베이스를 재구성할 수 없었다.

그 실제 예제는 독립적인 Q1과 Q2 스트림을 종속적인 것과 구분한다. Q1과 Q2가 독립적이라면, 라우터는 각각을 자신을 요청한 수신자 쪽으로만 보냈다. Q2가 Q1에 필요한 부분 집합이라면, Q2 패킷은 양쪽 수준으로 마킹되어 두 클라이언트 쪽으로 복제될 수 있었다. 라벨은 애플리케이션 멤버십을 묘사했고, 상태 테이블은 그 멤버십이 현재 전달을 정당화하는 위치를 묘사했다.

둘 다 쓸모의 증명은 아니었다. 애플리케이션 의존성은 잘못 선언되었을 수 있었다. 라우터 상태는 오래되었을 수 있었다. 패킷은 잘못 마킹될 수 있었다. 큐 정책은 구성과 다를 수 있었다. 베이스 패킷은 손상되거나 너무 늦게 도착할 수 있었다. 클라이언트 프로세스는 RAMP가 패킷을 받아들인 뒤 실패할 수 있었다. RFC 1458은 제안된 조정 체인을 제공했지, 최종 이미지에 대한 인증서를 제공하지 않았다.

복구에도 자체적인 문턱이 있었다

손실이 자동으로 또 하나의 멀티캐스트로 이어지지는 않았다. RAMP 수신자는 누락된 구간을 식별하는 부정 확인(NAK)을 보낸다. 송신자는 요청을 설정 가능한 구간 동안 보관하고 그 수를 문턱과 비교했다. 충분히 많은 수신자가 공유하는 손실은 멀티캐스트 복구를 정당화했고, 드문 손실은 유니캐스트로 복구되었다. 송신자가 이미 데이터를 해제했다면, 복구 요청조차 부정적인 응답을 받을 수 있었다.

그 결정은 또 하나의 유용한 분리를 보존했다. 시퀀스 갭은 한 수신자에서의 증거였다. NAK는 원인의 증명이 아니라 요청이었다. 문턱 통과는 모든 수신자가 그 패킷을 필요로 한다는 증명이 아니라 집계 결과였다. 재전송은 수신의 증명이 아니라 행동이었다. 애플리케이션 결과는 여전히 하류에 남아 있었다.

RAMP의 전송률 제어도 마찬가지로 경계가 분명한 신호를 따랐다. 재전송 요청과 라우터 백오프는 전송률을 낮출 수 있었고, 재전송 요청 없이 지나간 구간은 전송률을 높일 수 있었다. 증가폭은 진동을 제한하기 위해 가장 작은 감소폭보다 작았다. 침묵은 신중한 조정을 정당화할 수 있었지만, 모든 수신자가 건강하다는 것을 증명할 수는 없었다.

제안은 배치 기록이 아니다

RFC 1458은RFC 1301의 멀티캐스트 전송 프로토콜을 검토하며, 마스터, 전송 토큰, 선택적 NAK 복구를 포함해 그 마스터 중심 제어 오버헤드가 이미지 워크로드에 부적합하다고 판단했다. 또한RFC 1112가 기술한 멀티캐스트 호스트 모델에 의존했다. 이 참고 문헌들은 이 제안을 살아 있는 설계 논쟁 속에 놓는다. 그러나 RAMP, MGA 또는 품질 우선 라우팅이 이름이 확인된 운영 네트워크에 들어갔음을 보여주지는 않는다.

이 메모는 보안 이슈가 논의되지 않았다고 밝힌다. 따라서 조인한 그룹은 인증된 신원이 아니었다. 서비스 등록은 권한 부여가 아니었다. 품질 요청은 이미지를 볼 권한이 아니었다. 패킷 마킹은 출처나 무결성의 증명이 아니었다.

역사적 가치는 이 아키텍처의 명시적 불완전성에 있다. 그것은 애플리케이션 의존성을 여러 행정적·기술적 표면을 가로질러 옮겨야 했다. 그 반직관적인 폐기 규칙은 그 표면들이 서로 일치하는 동안에만 옳았다.