요약

  • RFC 3448은 수신자가 도착 속도, 손실 이벤트 비율, 타이밍 근거를 보고할 수 있게 했지만, 송신자는 여전히 TCP 형태의 속도를 직접 계산해 보고치를 상한으로 삼고, 패킷 전송 속도를 조절하며, 가속을 제한했다.
  • 침묵은 동의로 해석되지 않았다. 피드백이 끊기면 TFRC는 허용 속도를 낮췄다. 피드백, 매끄러운 전송 추적, 방정식 중 어느 것도 여유 용량, 정확한 공정성, 애플리케이션 전달을 증명하지 못했다.

더 매끄러운 흐름도 네트워크에 응답해야 했다

윈도 기반 TCP는 전송 속도를 갑자기 바꿀 수 있었다. 대량 전송에서는 감내할 수 있었지만, 음성 통화나 스트리밍 미디어에서는 짧은 시간의 큰 변동이 들리거나 보일 수 있어 문제가 되었다. 2003년 1월 Mark Handley, Sally Floyd, Jitendra Padhye, Jörg Widmer가 발표한RFC 3448은 유니캐스트 베스트 에포트 트래픽을 위한 속도 기반 대안으로 TCP-Friendly Rate Control을 규정했다.

“friendly”라는 수식어는 의도적으로 제한된 약속을 담고 있었다. TFRC는 TCP와 같은 경로를 공유할 때 어느 정도 공정함을 유지하는 것을 목표로 했다. 즉, 같은 조건에서 TCP 흐름에 대해 대체로 2배 이내의 범위를 유지해야 했다. 이는 동일한 순간 처리량, 동일한 큐 점유율, 동일한 애플리케이션 품질을 주장하는 것이 아니었다. 이 메커니즘은 혼잡에 대한 TCP 형태의 응답을 유지하면서 더 매끄러운 움직임을 추구했다.

또한 이것은 완전한 트랜스포트도 아니었다. 이 문서는 신뢰성이나 패킷 형식을 정의하지 않았다. TFRC는 RTP 같은 트랜스포트 안에, 자체 종단 간 제어를 가진 애플리케이션 안에, 또는 단말 혼잡 관리 안에 놓일 수 있었다.평문,RFC Editor 기록,Datatracker 파일,이력,참고 문헌,이후 인용,정오표 검색이 이 규격 기록을 확립한다. 이들만으로 어떤 특정 네트워크가 이를 사용했는지는 증명되지 않는다.

수신자는 패킷 이력을 이벤트 비율로 압축했다

수신자는 도착 순번, 손실 또는 ECN 마킹, 타이밍을 보았다. 단순히 잃어버린 패킷을 보낸 패킷으로 나누지는 않았다. TFRC는 대략 왕복 시간(RTT) 안에서 발생한 손실을 하나의 손실 이벤트로 묶었다. TCP는 보통 같은 윈도 안의 패킷마다가 아니라 하나의 혼잡 사건에 한 번 줄이기 때문이다.

이 압축이 중요했다. 가까이 발생한 다섯 손실은 하나의 제어 이벤트가 될 수 있고, 넓게 흩어진 다섯 손실은 다섯 개가 될 수 있었다. 수신자는 가중치를 적용한 손실 간 간격을 계산하고 그 평균을 역으로 취해 손실 이벤트 비율p를 얻었다. 이력 할인(discounting)은 상황이 개선될 때 현재의 긴 구간에 더 큰 영향을 줄 수 있었다.

그 결과는 단순한 원장이 아니라는 점에서 유용했다. 그것은 이력에 대한 제어적 해석을 인코딩했다. 패킷별 다발성은 버려졌고, 병목을 식별하지 못했으며, 혼잡에 의한 손실과 다른 모든 물리적 원인을 구분할 수 없었다.RFC 3168은 패킷 폐기 없이도 ECN 마킹이 같은 혼잡 신호로 들어가게 했지만, 마킹조차 여전히 애플리케이션 결과가 아니라 네트워크 신호를 기술한 것이었다.

수신자는 또한 자신의 도착 속도X_recv를 측정하고 타이밍 자료를 돌려보냈다. 피드백 패킷은 하나의 보고서였다. 이 구간 동안 이만큼의 바이트가 도착했고, 추정된 이벤트 비율은 이것이며, 이 타임스탬프를 되돌려준다는 뜻이었다. 그것은 예약도, 승인도, 미래 용량에 대한 선언도 아니었다.

송신자는 세 개의 독립된 브레이크를 적용했다

행동의 주체는 송신자였다. 송신자는 되돌려받은 타이밍 정보로 왕복 시간을 추정하고,RFC 2915에서 개발된 처리량 방정식을 적용했다. 패킷 크기, RTT, 손실 이벤트 비율, 재전송 타임아웃 항으로부터 TCP Reno 흐름에 근사하려는 방정식 속도X_calc가 나왔다.

그 숫자가 곧바로 링크로 흐르지는 않았다. 혼잡 회피 상태에서 TFRC는 전송 속도를X_calc와X_recv의 두 배 중 작은 쪽으로 제한하면서, 최대 백오프 구간에 연동된 작은 하한도 유지했다. 방정식은 모델화된 TCP 흐름이 얻을 수 있는 것이 무엇인지를 물었다. 수신 속도 상한은 최근에 실제 전달된 트래픽이 그 야망을 뒷받침하는지를 물었다. 어느 한 좌표가 다른 좌표를 대신 승인해주지는 않았다.

세 번째 브레이크는 속도 사이의 움직임을 다스렸다. 송신자는 보통 한 RTT 안에서 속도를 두 배 이상 높이지 않았고, 허용된 양을 한 번의 버스트로 내보내는 대신 패킷을 페이싱했다. 따라서 수신자 보고서는 모델, 최근 도착 상한, 시간적 제어를 모두 통과한 뒤에야 패킷 전송이 되었다.

이 분리는 부정직한 수신자도 제한했다. 손실을 적게 신고하거나 도착 속도를 과대 보고하는 수신자는 루프에 영향을 줄 수 있었고, RFC 3448은 그 위험을 논의했다. 송신자 자체의 방정식과 증가 규칙이 피해를 억제했지만, 신뢰할 수 없는 보고서를 검증된 진실로 바꾸지는 못했다.

피드백이 없으면 추론이 아니라 후퇴가 왔다

가장 뚜렷한 근거 경계는 피드백이 도착하지 않을 때 나타났다. 송신자는 침묵이 곧 경로가 막힌 없다는 뜻이라고 판단하지 않았다. 무피드백 타이머는 RTT와 현재 패킷 간 구간에 연동된 기간이 지나면 만료되었고, 송신자는 허용 속도를 낮췄다—보통 캐시된 수신자 속도를 절반으로 줄이고—타이머를 다시 시작했다.

침묵은 모호했다. 역방향 보고서가 유실되었을 수도 있고, 순방향 경로가 실패했을 수도 있고, 수신자가 멈췄을 수도 있고, 송신자가 유휴 상태였을 수도 있었다. RFC 3448은 보수적 행동을 선택하기 전에 어느 이야기가 사실인지 진단할 필요가 없었다. 안전한 응답을 인과적 확실성과 분리한 것이다.

이 선택은 간과하기 쉽다. 피드백 프로토콜은 명령 은유를 불러오기 때문이다. 수신자가 송신자에게 “몇으로 가라고 말한다”. TFRC는 더 절제된 방식을 택했다. 수신자는 관측을 공급했고, 송신자는 상태와 책임을 유지했다. 관측 채널이 실패하면 책임은 여전히 송신자에게 남았다.

메커니즘은 진화했지만 전달 확인증이 되지는 않았다

주변 표준들은 이 설계의 범위를 명확히 해준다.RFC 2914는 혼잡 제어를 인터넷 안정성의 의무로 정립했다.RFC 2581과RFC 3390은 당대의 TCP 동작과 초기 윈도 맥락을 공급했다.RFC 3550은 더 매끄러운 미디어 트랜스포트가 중요해진 RTP 환경을 제공했다.

RFC 4342는 이후 TFRC를 DCCP 혼잡 제어 ID 3으로 가져왔다.RFC 4828은 작은 패킷 변형을 탐구했는데, 여기서는 바이트 기준의 공정성과 패킷 처리 기준의 공정성이 갈라질 수 있었다.RFC 5348은 결국 RFC 3448을 대체하고 규격을 정제했다. 이 문서들은 개정과 재사용을 보여주지만, 보편적 배포나 측정된 성공을 확립하지는 않는다.

무엇보다, 어떤 제어 확인증도 스스로 애플리케이션에 도달하지 않았다. 손실 이벤트 비율은 물리적 진단이 아니었다.X_recv는 용량이 아니었다.X_calc는 승인이 아니었다. 선택된 전송 속도는 포워딩이 아니었고, 포워딩은 디코더의 수신이 아니었다. 매끄러운 그래프가 수용 가능한 미디어라는 뜻도 아니었다.

그 원장은 층위를 유지해야 했다

Lu Heng의현실 층위 원칙은 이 오래된 피드백 루프에 현대적 명료함을 부여한다. 패킷 관측, 수신자 집계, 피드백 메시지, 송신자 계산, 페이싱 결정, 네트워크 포워딩, 애플리케이션 체험은 서로 다른 기록이다. 하나의 편리한 숫자가 나머지 모두에 대한 증명으로 승격되는 순간, 시스템은 책임을 잃는다.

실행 코드 우선 원칙은 선언만으로는 믿지 않으려는 태도 속에 나타난다. 송신자는 수신자의 상징적 속도를 그냥 받아들이지 않았다. 재계산하고, 상한을 두고, 페이싱하며, 근거가 끊기면 물러났다.최소 초기 규격관점은 이 프로토콜의 절제를 설명한다. 혼잡 제어 루프를 규정하되, 보편적 패킷 형식이나 신뢰성 계층, 애플리케이션 계약까지 규정하지 않았다는 것이다. 이는 편집자의 해석이며, 저자들의 사적 의도에 대한 주장이 아니다.

따라서 RFC 3448의 오래된 교훈은 하나의 방정식이 아니다. 그것은 근거적 역할의 배분이다. 관측자는 보고할 수 있었다. 그러나 행동 주체는 여전히 안전하게 결정해야 했다. 어느 참여자도 어제의 도착 기록을 내일의 용량에 대한 권리로 바꿀 수 없었다.

출처