요약

  • RFC 6928은 10세그먼트 TCP 초기 윈도우를 무조건이 아니라 선택 사항으로 만들었습니다. 정확한 상한은 MSS에 따라 달라지며 더 낮게 설정할 수도 있습니다.
  • IW10은 짧은 전송에서 왕복 지연을 줄일 수 있지만, 발신자가 경로에 대한 증거를 확보하기 전에 더 많은 큐 용량을 소비합니다. 따라서 모니터링과 폴백은 메커니즘의 일부이지 운영상 장식이 아닙니다.

TCP 연결은 정보 부족 상태에서 시작합니다. 핸드셰이크는 양 끝점을 확립하지만, 그 사이에 얼마나 많은 미사용 용량, 버퍼링, 경쟁 트래픽이 존재하는지 발신자에게 알려 주지 않습니다. 초기 혼잡 윈도우는 그 부족 상태 속에서 행동하기 위한 규칙입니다. 승인(ACK)이 경로를 기술하기 시작하기 전에 얼마나 많은 데이터를 보낼 수 있는지를 정합니다.

RFC 6928은 RFC 3390과 연관된 2~4세그먼트 체계에서 최대 10세그먼트로 상한을 두는 공식으로 허용 상한을 변경했습니다:min(10*MSS, max(2*MSS, 14600)). 10은 상한이지 명령이 아닙니다. 구현체는 더 작은 값으로 시작할 수 있습니다. 이 변경은 3방향 핸드셰이크 중 또는 이후의 첫 데이터 왕복에 적용됩니다. SYN/ACK와 핸드셰이크를 완성하는 ACK는 추가 윈도우를 얻지 못합니다.

이 구분은 IW10과 TCP Fast Open을 분리합니다. Fast Open은 핸드셰이크가 끝나기 전에 애플리케이션 데이터가 이동할 수 있는지를 묻습니다. IW10은 핸드셰이크 이후의 평범한 데이터가 첫 플라이트로 얼마나 많이 구성될 수 있는지를 묻습니다. 하나는 유용한 바이트가 언제 나타날 수 있는지를 바꾸고, 다른 하나는 혼잡 증거가 돌아오기 전에 노출되는 양을 바꿉니다.

절약되는 왕복

이득은 무한 대역폭, 무손실, 표준 지연 승인이라는 RFC의 단순화된 모델 아래에서 구체적으로 나타납니다. 초기 윈도우를 3에서 10으로 옮기면 4KB보다 큰 전송에서 최대 4회의 왕복을 절약할 수 있습니다. 문서의 예시에 따르면 32세그먼트 전송은 5왕복이 아니라 2왕복으로 끝날 수 있습니다. 더 큰 첫 플라이트는 초기 재전송 타임아웃을 기다리지 않고 Fast Retransmit이 일부 손실을 복구할 수 있을 만큼 충분한 후속 승인을 만들어 낼 수도 있습니다.

이 결과들은 현재 네트워크에 대한 약속이 아니라 메커니즘 시연입니다. 수신자 흐름 제어가 10세그먼트보다 작은 수신 윈도우를 광고하면 이득은 사라집니다. 서로 다른 MTU에 대해서는 인용된 테스트가 완전히 검증하지 않았습니다. 애플리케이션 동작도 중요합니다. 여러 동시 연결은 첫 플라이트 버스트를 배로 늘리며, 단일 윈도우가 지키려는 혼잡 제어 규율을 무너뜨릴 수 있습니다.

증거가 도착하기 전에 버스트가 도착한다

비용은 이득과 같은 순간에 나타납니다. 10개 세그먼트는 발신자가 어느 상태에 해당하는지 알기 전에 느린 링크, 얕은 접속 버퍼 또는 바쁜 큐에 도달합니다. 더 큰 버스트는 조기 손실, 재전송 타임아웃 또는 slow start의 조기 이탈을 유발할 수 있습니다. 네트워크 전체에서 IW10은 RFC 3390 흐름보다 더 공격적으로 시작하는 흐름을 일시적으로 유리하게 만들 수 있습니다. 큐가 깊은 접속 링크에서는 DNS, 음성, 게임 등 지연에 민감한 트래픽에 지연을 추가할 수 있습니다.

RFC 6928은 단일한 더 큰 첫 플라이트가 그 자체로 지속적인 혼잡이나 붕괴를 만든다고 주장하지 않습니다. TCP의 이후 백오프는 그대로 유지됩니다. 그러나 애플리케이션이 많은 연결을 함께 열면 그 안심은 약해집니다. 전송 계층의 일회성 허용이 애플리케이션 계층에서 반복되는 집합적 동작이 될 수 있습니다.

세 개의 윈도우, 세 가지 의무

이 RFC는 초기 윈도우, 재시작 윈도우, 손실 윈도우를 분리해 둡니다. 선택적 더 큰 값은 새 연결에 적용됩니다. 유휴 상태 이후의 재시작은 초기 윈도우 값과 현재 혼잡 윈도우 중 작은 쪽을 초과할 수 없습니다. 재전송 타임아웃 이후의 손실 윈도우는 1 MSS로 유지되어, 심각한 혼잡에 대한 최소한의 대응을 보존합니다. 4KB 이상을 보낸 후 초기 또는 재시작 윈도우에서 손실이 관찰되면, 구현체는 재시작 윈도우를 RFC 3390 동작으로 되돌려야 합니다.

타이머 규율도 똑같이 중요합니다. 저대역폭 경로에서는 직렬화 시간 때문에 큰 버스트가 타임아웃처럼 보일 수 있습니다. 따라서 RFC 6928은 새 데이터에 대한 모든 승인이 현재 재전송 타이머를 재시작하는 RFC 6298 동작을 요구합니다. 이 규칙이 없으면 더 빠른 오프닝이 스스로 중복 작업을 만들어 낼 수 있습니다.

근거 경계

이 분석은 2013년 4월에 실험적(Experimental)으로 발행된RFC 6928로 한정됩니다. 이 문서는 공식, 근거, 실험 요약, 조건부 배포 의무를 확립합니다. 현재 어떤 시스템이 IW10을 활성화하는지, 특정 네트워크가 어떻게 동작하는지, 10을 초과하는 값이 안전하다는 것은 확립하지 않습니다.