요약

  • 고전 RFC 3168에서 TCP 수신 측은 CWR을 실은 새 데이터 패킷이 도착할 때까지 CE를 관측한 후 확인 응답에 ECE를 계속 설정합니다.
  • 따라서 하나의 CE 관측에서 여러 개의 ECE ACK가 생길 수 있으며, 이는 패킷별 혼잡 계수기가 아니라 지속적인 피드백 상태입니다.
  • 연결 설정은 ECE와 CWR을 기능 협상에 사용하며, 터널, ACK 손실, 실험적 ECN 변형이 플래그 횟수만으로 증명할 수 있는 범위를 더 제한합니다.

하나의 표시, 반복되는 에코 구간

오해를 부르는 그래프는 상상하기 쉽습니다. 모니터가 ECE가 설정된 확인 응답 하나를 보고, 또 하나, 그다음 다섯 개를 더 본다고 합시다. 카운터가 일곱 번 올라가고, 인시던트 보고서는 조용히 “일곱 개의 패킷이 플래그를 실었다”를 “일곱 번의 혼잡 이벤트가 발생했다”로 바꿉니다. RFC 3168은 다른 대상을 정의합니다.

확립된 데이터 단계에서 ECN 지원 수신 측은 도착한 데이터 패킷의 Congestion Experienced 코드포인트를 인지하고 확인 응답에 ECE를 설정합니다. 지연된 확인 응답이 여러 패킷을 커버하고 그중 하나라도 CE 표시가 있었다면 그 ACK는 ECE를 실습니다. 수신 측은 그 뒤에 이어지는 ACK에도—설령 그 패킷들이 표시 없는 데이터에 해당하더라도—송신 측에서 CWR을 받을 때까지 ECE를 계속 설정합니다.

이 지속성은 신호의 결함이 아닙니다. 확인 응답은 사라질 수 있습니다. 한 번만 울리는 에코라면 유실된 반환 패킷이 혼잡 표시를 지워버릴 수 있습니다. 반복되는 플래그는 송신 측이 이를 보고 대응할 수 있을 만큼 수신 측의 상태를 오래 유지합니다. 따라서 유의미한 단위는 ECE 구간입니다. 즉, 여는 관측, 주장된 확인 응답의 연속, 그리고 닫는 응답입니다.

CWR은 닫는 영수증

송신 측이 이 핸드셰이크를 완성합니다. 고전 알고리즘에서 ECE 표시는 손실 신호에 대한 응답과 비슷한 수준의 혼잡 대응을 유발합니다. 송신 측은 ECE를 실은 ACK마다 창을 줄이는 것이 아니라, 하나의 데이터 창—대략 한 번의 왕복 시간—에서 일련의 손실 또는 CE 표시에 대해 혼잡 창을 한 번 이하로만 줄여야 합니다.

그 감축을 마친 후 송신 측은 처음 전송하는 새 데이터 패킷에 CWR을 설정합니다. RFC 3168은 이 표시를 재전송에 두는 것을 권하지 않습니다. 수신 측이 CWR을 실은 새 패킷을 받으면 이후 표시 없는 패킷에 대한 ACK에서 ECE 설정을 중단합니다. 새로운 CE 관측은 또 다른 구간을 시작할 수 있습니다.

이 영수증에도 한계가 있습니다. CWR을 실은 새 패킷이 유실되면 수신 측의 ECE 상태는 여전히 보이며, 이후 송신 측의 대응이 또 다른 CWR을 낼 수 있습니다. 캡처에 큐 표시의 반복 없이 반복 ECE가 담길 수 있는 이유가 바로 이 동작입니다. CWR 수신은 관련 데이터가 전송된 후 송신 측이 반응했다는 명제를 뒷받침할 뿐, 특정 ECE ACK의 전달이나 표시 큐의 위치를 증명하지 않습니다.

같은 비트가 설정 단계에서 의미가 달라진다

어떤 횟수를 세기 전에 패킷 단계가 먼저 중요합니다. ECN 설정 중에 개시 TCP는 자신의 SYN에 ECE와 CWR을 모두 설정해 ECN 지원 동작을 요청합니다. 지원하는 상대는 SYN-ACK에서 ECE를 설정하고 CWR을 지운 상태로 응답합니다. 여기서 플래그는 기능을 협상합니다. 그 응답의 ECE는 SYN이 혼잡을 겪었다는 에코가 아닙니다.

SYN 상태를 버리고 “ECE=true”만 남기는 필드 추출기는 협상과 확립 흐름의 피드백을 섞어버립니다. ECN 지원 연결이 태어날 때마다 혼잡 이벤트를 만들어낼 수 있습니다. 성공적인 협상이 이후 모든 송신 패킷이 ECN 지원 코드포인트로 전송됨을 증명하지도 않습니다. 근거 기록에는 연결 단계, 전체 플래그 조합, 방향이 필요합니다.

순수 확인 응답은 또 다른 한계를 더합니다. 고전 RFC 3168에서 확인 응답은 Not-ECT로 전송되므로 같은 메커니즘이 ACK 경로의 혼잡을 보고하지 않습니다. ECE 플래그의 흐름은 순방향 데이터 관측으로 만들어진 수신 측 상태를 기술할 뿐, 양방향 혼잡의 대칭적 센서스가 아닙니다.

표시는 큐의 전기를 말해주지 않는다

RFC 7567은 능동 큐 관리가 혼잡이 경미하거나 보통 수준일 때 폐기 대신 ECN 표시를 할 수 있고, 큐가 차기 전에 개입할 수 있음을 설명합니다. 따라서 CE 관측은 버퍼 오버플로, 패킷 손실, 특정 지연, 특정 장치의 임계값을 입증하지 않습니다. 이들은 별도의 측정을 요구하는 별도의 주장입니다.

터널은 위치를 더 복잡하게 만듭니다. 터널 내부의 포워딩 요소는 외부 헤더만 보고 표시할 수 있습니다. RFC 6040은 혼잡 정보가 전파될 때 터널 종단이 내부와 외부 ECN 필드를 결합하는 방식을 정의합니다. 따라서 종단의 ECE 상태는 캡슐화 경계를 넘은 CE 표시에서 기원할 수 있습니다. 피드백은 실제이지만 위치는 미확정으로 남습니다.

RFC 5681은 유용한 대조를 제공합니다. 중복 ACK는 자체 정의를 가지며 손실, 재정렬, 복제에서 생길 수 있습니다. 반복 ECE와 호환되지 않습니다. 건전한 트레이스 분석은 확인 응답 번호, 시퀀스 공간, 재전송, ECE, CWR, 타이밍을 서로 다른 필드로 유지하며, 하나의 카운터가 모든 것을 대신하게 두지 않습니다.

마지막으로 RFC 8311은 문서화된 실험이 RFC 3168의 일부를 완화하고 다른 표시 방식이나 송신 측 응답을 탐색할 수 있도록 허용합니다. 여기서 설명한 래치는 고전 RFC 3168 계약이지, 모든 ECN 실험이나 전송 계층을 위한 범용 디코더가 아닙니다.

출처