요약

  • 송신 측은 두 ECT 표시 중 하나를 무작위로 선택했습니다. 혼잡은 어느 쪽이든 같은 CE 값으로 바뀌어, 수신 측이 완전히 깨끗한 피드백 이력을 꾸며내는 데 필요한 정보를 지워버렸습니다.
  • 돌아온 논스 합은 누적된 1비트 검사였으며, 인증도, 혼잡 횟수도, 특정 수신 측이 거짓말했다는 증명도 아니었습니다. 정직한 혼잡은 검사를 중단하고 나중에 다시 동기화해야 했습니다.
  • 실험은 제한된 배포 후에 끝났으며, 기본 메커니즘이 반증되어서 그런 것이 아니었습니다. 예약된 코드포인트를 해제하면 상호 공존 의무를 없애지 않으면서도 다른 지정된 용도의 공간을 마련했습니다.

수학적 실패 없는 은퇴 통지

은퇴 이야기에서 드물게 유용한 문장은 실험이 고장 났다고 부르기를 거부하는 문장입니다. 2018년 1월,RFC 8311은 ECN 논스가 명세대로 동작했다고 말했습니다. 그러면서도 그 메커니즘이 광범위한 사용에 이르지 못했다고 말했습니다. 두 관찰은 동시에 참일 수 있었고, 함께 놓이면 단순한 성공·실패 판정보다 더 중요한 의미를 지녔습니다.

여기서 다루는 자원은 작았습니다: 2비트 ECN(명시적 혼잡 통지) 필드의 한 코드포인트에 대한 해석입니다. 그럼에도 그 해석을 실험 전용으로 독점적으로 유지하는 데에는 비용이 있었습니다. 다른 실험들이 이 공간을 원했고, 혼잡 피드백을 검사하는 다른 방식들도 검토되고 있었습니다. 공표만으로 오래된 예약을 유지하는 것이 그 예약의 최선의 사용이라는 것을 확립할 수 없었습니다.

무엇이 은퇴되었는지 이해하려면, 부정직한 수신 측이 아니라 정직한 라우터에서 시작해야 합니다. 라우터의 평범한 혼잡 표시는 의도적으로 하나의 구분을 버렸습니다. ECN 논스 송신 측은 그 구분을 다른 곳에 보존했습니다. 이 비대칭적인 정보 접근이야말로 실험의 전체 기회였습니다.

하나의 출력, 가능한 두 이력

2001년 9월에 공표된RFC 3168의 고전 ECN 프레임워크는 네 가지 부호화를 사용합니다. Not-ECT는 00, ECT(1)는 01, ECT(0)는 10, CE(혼잡 경험)는 11입니다. ECN을 지원하는 패킷은 라우터가 혼잡을 신호할 때 폐기되는 대신 CE로 표시될 수 있습니다. TCP 수신 측은 ECE로 그 상태를 에코하고, 송신 측은 CWR로 혼잡 대응을 나타냅니다.

고전 ECN 라우터에서는 두 ECT 값 모두 패킷이 혼잡 표시를 운반할 수 있음을 나타냅니다. ECT(0)를 CE로 바꾸는 라우터와 ECT(1)를 CE로 바꾸는 라우터는 같은 최종 값을 만듭니다. 따라서 CE를 검사하는 수신 측은 송신 측이 원래 어느 ECT 값을 선택했는지 복원할 수 없습니다. 애플리케이션 데이터는 온전히 도착할 수 있으면서 그 구분은 사라집니다.

RFC 3540, 즉 N. Spring, D. Wetherall, D. Ely의 2003년 6월 실험 명세는 이 구분을 무작위로 선택된 비트로 바꾸었습니다. 송신 측은 ECT(0)와 ECT(1) 사이를 예측 불가능하게 선택하고 자신의 기록을 보존했습니다. 라우터는 기존처럼 평범한 혼잡 표시를 계속할 수 있었고, 새로운 챌린지 프로토콜에 참여하거나 수신 측의 신뢰성을 판단할 필요가 없었습니다.

어떤 수신 측이 CE 표시를 숨기려 한다고 가정해 보십시오. 혼잡 없이 모두 도착했다고 보고하려면 올바른 무작위 이력까지 보고해야 합니다. 그러나 패킷에는 그 이력 전체가 더 이상 없습니다. 송신 측은 피드백을 실제로 보낸 내용과 비교할 수 있었습니다. 깨끗한 전송 주장은 중앙의 증인을 추가하지 않고도 검증 가능해졌습니다.

이것은 신원 시스템이 아니라 정보 검사였습니다. 표시 자체는 수신 측을 누가 통제하는지 확립하지도, 경로를 인증하지도, 협조하지 않는 송신 측을 개선하지도 않았습니다. 설계는 송신 측의 결정과 공급되는 혼잡 정보 사이의 특정한 불일치를 다루었습니다.

왜 답은 이전 패킷을 기억해야 했는가

최신 패킷의 무작위 값만 돌려준다면 빈틈이 남습니다. TCP 확인 응답은 지연되거나 유실될 수 있고, 누적 확인 응답 하나가 여러 세그먼트를 커버할 수 있습니다. 생략된 확인 응답이 이전 무작위 값의 정산 의무까지 지우면, 증거가 피드백 일정 자체를 통해 사라질 수 있었습니다.

대신 논스 합은 2를 법으로 값들을 누적했습니다. NS 플래그에 담긴 패리티, 즉 XOR 결과입니다. 1에서 시작합니다. 누적 확인 응답이 순서대로 데이터를 덮어 나가면서, 수신 측은 관련 논스 값을 반영합니다. 송신 측은 원래 패킷의 종료 시퀀스 번호로 색인된 기대 누적 합을 유지하여 확인 응답을 적절한 기대값에 맞출 수 있었습니다.

순서가 바뀐 데이터는 누적 결과를 즉시 바꾸지 않았고, 누적 확인 응답이 그 위를 지날 때 반영되었습니다. 명세는 각 SACK 블록마다 별도의 논스 증명을 정의하지도 않았습니다. 세그먼트 경계와 확인 응답의 진행은 해석의 일부였습니다. 그 이력에서 떨어진 고립된 NS 플래그는 유용한 증명서가 아니었습니다.

보이지 않는 편향되지 않은 무작위 비트 하나는 수신 측에 2분의 1의 패리티 추측 확률을 남깁니다. 유용한 불확실성이지만 첫 시도에서 확실한 탐지는 아닙니다. 추가로 소거된 독립적 무작위성이 더 많은 탐지 기회를 만들 수 있습니다. 같은 누락된 비트에 의존하는 반복된 확인 응답은 자동으로 새로운 독립 시행으로 계산되어서는 안 됩니다. 이 메커니즘은 관찰자가 모은 ACK 개수에만 근거한 무조건적 신뢰도 계산을 허용하지 않습니다.

합은 또한 혼잡의 양에 대해서는 거의 말해주지 않습니다. 패리티는 정보를 압축합니다. 표시된 모든 패킷을 세거나 각 표시에 시각을 찍지 않습니다. 더 나은 무결성과 더 상세한 피드백은 서로 다른 설계 목표이며, 둘 다 송신 측의 결정을 개선할 때에도 마찬가지입니다.

정직한 사례 역시 합을 깨뜨린다

소거는 동기를 구분하지 않습니다. CE를 본 정직한 수신 측도 원래 논스 값을 잃었습니다. 그래서 RFC 3540은 수신 측이 빠진 논스 값을 무시하되 사실상 0으로 취급하고 ECE를 설정하도록 했습니다. 송신 측은 관련 혼잡 복구 기간 동안 논스 검사를 중단합니다.

윈도를 줄이고 CWR과 함께 새 데이터를 보낸 뒤, 송신 측은 해당 새 데이터 확인 응답이 도착하면 다시 동기화할 수 있습니다. 수신 측이 돌려준 합이 새 참조를 제공하고, 1비트 오프셋으로 조정을 구현할 수 있습니다. 이는 소거된 비트를 재구성하지 않습니다. 오래된 이력의 인정된 빈틈이 이후의 유효한 교환을 영원히 모순되게 보이지 않도록 막는 것입니다.

따라서 재동기화는 취약한 탐지기를 구하기 위해 뒤늦게 붙인 면제가 아니라, 보장의 일부였습니다. 그것이 없으면 ECN이 보고하려던 바로 그 사건이 정직한 행동을 검사 실패로 만들었을 것입니다. 논스를 “틀린 답은 부정행위”로 제시하는 어떤 서술도, 그 답이 해석되는 상태를 생략한 것입니다.

2003년 규칙은 재전송을 논스가 없는 Not-ECT로 만들었고, 송신 측이 선택한 비 ECT 구간을 정산하도록 동기화를 요구했습니다. 이것들은 이 실험의 역사적 조건입니다. 재전송이나 제어 패킷을 포함하는 ECN 실험에 대한 시간을 초월한 금지로 투영해서는 안 되며, RFC 8311은 이후 그 실험 제약을 완화했습니다.

국소적 대응은 유죄 판정이 아니다

검사와 대응은 별개의 선택이었습니다. RFC 3540은 검사를 선택 사항으로 만들고 잘못된 논스 합에 대한 대응을 국소 정책으로 기술했습니다. 송신 측이 잘못된 결과에 따라 행동할 때 명세는 적어도 ECE에 적절한 대응을 논의했으며, 더 강한 축소나 ECT 패킷 송신 중단 같은 가능성도 있었습니다. 균일한 처벌 절차를 만들지는 않았습니다.

그 구분을 지키기 위한 구체적인 이유가 있었습니다. 표시되지 않은 IPv4 조각은 다른 조각이 표시되었더라도 원래 논스를 드러내 은폐 방지를 약화시킬 수 있었습니다. 부분 세그먼트 확인 응답은 원래 세그먼트 경계에서의 해석을 필요로 했습니다. IPv6 헤더 비트 오류는 ECN 정보를 손상시키고 잘못된 합을 만들 수 있었습니다. 불일치는 신호 경로 어딘가의 간섭이나 오류를 반영할 수 있었으며, 책임 있는 사람이나 조직을 특정하지 않았습니다.

무작위 수열은 암호학적 강도 요건을 충족할 필요는 없었지만, 이전에 관찰된 비트들로부터 쉽게 예측될 수는 없어야 했습니다. 수열을 다른 목적으로 재사용하면 의도된 정보 경계가 훼손됩니다. 명세는 연결 무결성 보호를 추가로 제공하지 않는다고 명시했습니다. 지원 탐지조차 협상이라는 단어가 시사하는 것보다 좁았습니다: 초기 핸드셰이크 응답의 0이 아닌 NS로 송신 측이 지원을 추정할 수 있었지만, 문서는 이것이 협상이 아니라고 말했습니다.

이런 한계들이 실험을 텅 비게 만들지는 않습니다. 그것들은 실험의 증거가 무엇을 지지할 수 있는지를 특정합니다. 송신 측은 깨끗한 피드백 주장을 의심하고 자신의 행동을 조정할 수 있었습니다. 그것은 모든 피드백을 인증하거나 악의를 귀속시키거나 전역 행동 규칙을 강제하는 것과 실질적으로 다릅니다.

배포는 예약을 스스로 정당화해야 했다

2006년 11월의RFC 4774는 대체 ECN 의미들을 검토했습니다: 식별 방법, 점진적 배포, 고전 또는 비 ECN 라우터 및 경쟁 트래픽과의 공존. 질문은 단순히 다른 부호화를 발명할 수 있는지가 아니라, 독립적인 구현들이 관찰된 표시의 의미에 동의할 수 있는지였습니다.

2015년 8월RFC 7560의 요구사항은 더 정확한 혼잡 피드백과 그 무결성을 다루었습니다. 이 문서는 당시 논스를 사용하는 알려진 TCP 스택 배포가 없다고 보고하면서, 정직한 협조와 무결성을 하나 이상의 메커니즘으로 충족될 수 있는 요구사항으로 다루었습니다. 더 많은 피드백이 이 특정 검사의 보존을 자동으로 요구하지는 않았습니다.

RFC 8311의 후속 서술은 제한된 환경에서의 배포를 인정했습니다. 또한 2014년 데이터를 사용한 연구를 보고했습니다: ECN 협상 후 두 ECT 값을 함께 사용한 IPv4 서버는 581,711개 테스트 대상 중 없었고, IPv6 서버는 17,028개 중 4개였으며, 이 결과는 논스 사용이든 잘못된 재표시든 어느 쪽과도 양립 가능했습니다. 이것들은 그 RFC가 보고한 시점의 표본 관찰이며, 현재 인터넷 인구조사도 이 글에서 독립적으로 재현된 측정도 아닙니다.

그 결과의 결정은 실험을 종료하고 RFC 3540이 실험(Experimental)에서 역사(Historic)로 재분류된 이유를 설명했습니다. 구현이 존재한 적이 없다고 주장하지는 않았습니다. 오히려 제한된 배포는, 대체 실험과 무결성 접근이 가능한 상황에서 ECT(1)를 논스 전용으로 예약할 정당성을 더 이상 갖지 못했습니다. RFC 8311이 가능하게 한 실험들에는 적절한 IETF 스트림의 실험 RFC가 여전히 필요했고, 혼잡 제어와 공존 책임도 여전히 따랐습니다.

이후의 별개 용도는 2023년 1월 실험 문서RFC 9331에 나타납니다: 그 명세 하에서 ECT(1)는 L4S 트래픽을 식별합니다. 현재IANA ECN 필드 레지스트리는 네 가지 부호화를 유지하며 ECT(1)에 대해 관련 실험 문서들을 가리킵니다. 따라서 그 값을 포함한 현대의 트레이스는 그 자체로 오래된 논스 교환의 증거가 아닙니다. 이 후속 명세는 의미 변화를 보여줄 뿐, 보편적 배포나 성능·안전을 확립하지 않습니다.

실험의 지속적 기여는 신뢰를 다루는 유한한 방식입니다. 증거를 결정이 내려지는 곳에 두고, 그 증거가 확립할 수 있는 것만 검사하고, 유효한 검사가 불가능한 구간을 인정합니다. 그 은퇴는 공유 프로토콜 공간에 병행 규칙을 더합니다: 동작하는 아이디어도 역사에 자리를 얻을 수 있으며, 미래의 선택에 대한 무기한 청구권을 유지할 필요는 없습니다.