요약

  • RFC 1953은 포인트 투 포인트 링크의 다운스트림 끝이 자신의 레이블 공간을 관리하고 확인 응답 없는 Redirect를 업스트림으로 보낼 수 있게 했으며, 수신 노드는 제안된 바인딩 중 일부 또는 전부를 무시할 수 있었다.
  • 바인딩은 영구 경로가 아니라 임대였다. 갱신되지 않으면 만료되었고, 상충하는 레이블은 기본 포워딩을 복원시켰으며, 인접 상태가 일치하지 않으면 오래된 리디렉션 메시지는 폐기되었다.
  • 지름길을 제안하는 것보다 해제하는 데 더 강한 증거가 필요했다. Reclaim은 레이블이 실제로 해제되기 전에 명시적인 Reclaim Ack를 받아야 했고, RFC는 보안 문제를 전혀 다루지 않았다.

모래시계가 다 빈 뒤의 패킷

같은 패킷 스트림을 전달하는 인접한 두 장치를 상상해 보자. 일반 IP 포워딩 경로는 이미 동작하고 있다. 한동안 다운스트림 장치는 짧은 로컬 레이블을 제안하여 이후 패킷들이 캐시된 포워딩 상태를 사용하게 하고, 중간 노드의 양쪽이 모두 참여하면 3계층에서 다시 라우팅되지 않고 2계층에서 통과하게 한다.

이제 타이머가 만료된다. 다음 패킷은 버려지지 않는다. 특수한 연관이 사라지고 플로우는 기본 경로로 돌아간다. 그 결과가 지름길의 실패를 뜻하는 것은 아니다. 만료야말로 지름길이 경로를 결코 소유하지 않았음을 증명하는 방식이다.

이것이 Ipsilon Flow Management Protocol에서 가장 계몽적인 특징이다. 1996년 5월에 공개된 RFC 1953은 IPv4 플로우를 위한 사설 프로토콜을 기술했다. IESG 노트는 이례적으로 직접적이었다. 이 작업은 IETF 작업 그룹에서 나온 것이 아니었고, 표준 트랙이 아니었으며, 표준 트랙 문서에 수반되는 검토를 반드시 받은 것도 아니었다. 이 RFC는 공개 검토를 위해 특정 설계를 기록했을 뿐, 그 설계를 보편적인 인터넷 합의로 바꾸지는 않았다.

이 제안은 구체적인 성능 긴장을 다루었다. 라우터는 IP 경로와 정책을 이해하고, ATM 스위치는 짧은 VPI/VCI 식별자로 셀을 빠르게 이동시킬 수 있었다. IFMP는 라우팅된 결정을 보존하면서 그 결과를 인접 링크 하나에 캐시하려 했다. 레이블은 IPv4 필드를 통해 이미 분류된 플로우를 위한 간결한 핸들이 될 수 있었다.

역사적 관심은 '레이블'이라는 단어보다 그 주변의 규칙에 있다. 레이블은 하나의 링크의 한 방향에서만 의미를 가졌다. 할당자, 요청자, 설치자, 수명, 해제 영수증은 서로 다른 역할이었다. 이 분리 덕분에 빠른 경로가 조용히 글로벌 진실의 새로운 원천이 되지 않았다.

가속 이전의 분류

RFC 1953은 플로우를 출발지에서 유니캐스트 또는 멀티캐스트 목적지로 향하며 라우팅 또는 논리적 처리 정책으로 관련되는 패킷들로 정의했다. 플로우 타입은 그 플로우를 식별하는 데 사용되는 불변 헤더 필드를 선택했다. 타입들은 계층 구조를 이루어 수신자가 가장 구체적인 일치를 선택할 수 있었다.

한 타입은 식별자를 전혀 가지지 않고 캡슐화를 광범위하게 바꾸었다. 다른 타입은 TCP와 UDP에 적합하며 주소, 프로토콜, 포트를 사용했다. 더 거친 타입은 포트를 생략했다. 이 덕분에 분류는 유연했지만, 애플리케이션이나 개인을 인증하지는 않았다. 5-튜플에 가까운 키는 포워딩 엔진에 어떤 패킷들이 같은 처리를 공유하는지 알려줄 수 있다. 그러나 그 처리가 왜 승인된 것인지 증명할 수는 없다.

이 구별이 중요한 이유는 레이블이 맥락을 압축하기 때문이다. 바인딩이 존재하면 이후 패킷들은 같은 계층에서 전체 포워딩 결정을 다시 진술할 필요가 없다. 시스템이 효율적인 것은 바로 레이블이 기억된 작업을 대신하기 때문이다. 그 기억이 낡았거나 다른 인접 관계의 것이라면, 간결한 마커는 위험해진다.

따라서 IFMP는 리디렉션보다 상태 기계를 앞세웠다. 두 피어는 최근 인스턴스 값, 피어가 믿는 값, 다음 예상 리디렉션 시퀀스를 담은 인접 메시지를 교환했다. 링크나 노드가 다시 올라온 뒤에는 인스턴스가 바뀌어야 했다. 리디렉션 메시지는 동기화가 established 상태에 도달하기 전까지 보낼 수 없었고, 수신자는 출발지 주소, 발신자 인스턴스 또는 피어 인스턴스가 저장된 인접 상태와 일치하지 않으면 그 메시지를 폐기해야 했다.

이것은 최근 상태 위생이지 암호화된 신원이 아니었다. 메모의 보안 고려 사항 절은 단순히 보안 문제가 논의되지 않았다고 썼다. 체크섬은 전송 손상을 감지할 수 있었다. IP 주소와 인스턴스 값은 예상되는 최근 이웃 상태를 구별할 수 있었다. 그러나 어느 것도 인증된 기관 신원이나 권한을 제공하지 않았다.

다운스트림 이웃이 제안하고, 업스트림 이웃이 결정한다

링크의 각 방향은 별개였다. 다운스트림 끝이 자신 쪽으로 도착할 레이블을 관리하고, Redirect 메시지를 업스트림으로 보내 그 레이블 중 하나를 특정 플로우와 연관시켰다. 공간적 배치가 깔끔한 자원 규칙을 담았다. 로컬 레이블 공간을 소비하는 쪽이 토큰을 선택한다.

그러나 선택은 강제가 아니었다. 업스트림 수신자는 Redirect 요소 중 일부 또는 전부를 무시할 수 있었다. Redirect 자체는 확인 응답을 받지 않았다. 수신자가 수락하면, 그 자신이 멈추기로 하거나 수명이 만료될 때까지 이후 패킷에 지정된 레이블을 붙였다.

이것은 놀랍도록 좁은 권한 부여였다. 다운스트림 노드는 요컨대 "이 로컬 핸들로 이 플로우를 이만큼의 시간 동안 수신할 수 있다"고 말할 수 있었다. 업스트림 노드가 포워딩을 바꾸도록 강제할 수는 없었다. 업스트림 노드가 자신의 이그레스 동작을 통제하고 바인딩 설치의 운영 리스크를 부담했다.

Label Range 메시지는 같은 경계를 반대 방향에서 명시했다. 제안된 레이블이 수신 링크가 처리할 수 있는 범위 밖이면, 수신자는 자신의 포괄적인 로컬 범위를 광고할 수 있었다. 그 범위는 능력에 대한 증거였지, 전 세계가 소유한 번호의 레지스트리가 아니었다. 같은 숫자 레이블이 다른 링크에서 충돌 없이 다른 의미를 가질 수 있었다.

탈출구가 있는 임대

모든 Redirect는 초 단위의 0이 아닌 수명을 담았다. 동일한 Redirect로 갱신되지 않는 한, 그 연관은 그 한도 이전에 사라져야 했다. 이미 리디렉션된 플로우에 대한 일치하는 레이블은 수명을 리셋했다. 다른 레이블은 의도적으로 보수적으로 작동했다. 새 Redirect는 무시되고 플로우는 기본 상태로 돌아갔다.

프로토콜은 노드들에게 두 상충하는 지름길 중 어느 쪽이 더 최신이고 더 정당한지 추측하도록 요구하지 않았다. 최적화를 포기했다. 일반 포워딩이 안전한 공용 언어가 되었다.

이 폴백은 과소평가하기 쉽다. 성능 메커니즘은 최적화가 안정적으로 보이면 시스템이 느린 경로를 제거하면서 종종 어려운 의존이 된다. RFC 1953은 경로를 캐시 아래에 유지했다. 빠른 상태는 만료, 인접 리셋, 피어 변경, 시퀀스 불일치 또는 명시적 회수로 잃을 수 있었으며, 트래픽의 의미적 신원을 레이블만으로 재구성할 필요가 없었다.

RFC 1954는 ATM에서의 물리적 결과를 보여주었다. IFMP 레이블은 VPI/VCI 값이 되었다. 일부 리디렉션된 플로우 형식은 반복되는 IPv4 필드를 생략했고, 한 타입은 최초의 트랜스포트 포트까지 생략했다. 바이트와 작업을 절약했지만, 유지된 바인딩이 재구성에 필수가 되었다. 일반 캡슐화는 IFMP 제어 트래픽과 기본 포워딩을 위해 계속 사용할 수 있었다.

지름길은 그렇게 IP를 지우지 않았다. IP의 이전 결정을 빌려 인접한 공유 상태에 인코딩하고, ATM 식별자를 간결한 실행 핸들로 사용했다. 공유 상태가 더 이상 신뢰할 수 없게 되면, 핸들은 의미를 잃었다.

해제에 영수증이 필요했던 이유

설치는 기회주의적이었다. Redirect에는 확인 응답이 없었다. 요청자가 수신자에게 최적화를 수락하게 만들 필요가 없었기 때문이다. 재사용은 달랐다. 너무 일찍 해제된 레이블은 여전히 대기 중인 패킷에 붙어 있거나, 업스트림 노드가 아직 해제하지 않은 플로우에 붙어 있을 수 있었다.

따라서 Reclaim은 Reclaim Ack를 요구했다. 다운스트림 노드는 업스트림 노드에 바인딩을 제거하고 플로우를 기본 포워딩으로 되돌려 달라고 요청했다. 수신자는 알 수 없는 플로우조차 확인 응답했다. 플로우가 다른 레이블로 존재하면, 실제 그 바인딩을 제거하고 자신이 해제한 레이블을 보고했다. 가능한 경우, 확인 응답은 레이블을 사용하는 대기 중인 데이터가 전송될 때까지 기다렸다.

이 비대칭은 일반적 교훈을 담고 있다. 거부가 안전할 때는 약속 영수증 없이 성능 제안을 하는 것이 허용된다. 그러나 해제 요청이 이미 효과를 낸 것으로 가정하고 희소한 식별자를 재사용하는 것은 허용되지 않는다. 생성은 추측적일 수 있지만, 파괴적 재사용에는 완료의 증거가 필요하다.

확인 응답조차 한계가 있었다. 그것은 인접한 노드들 사이의 IFMP 상태에 대한 증거였지, 모든 구현 큐, 스위치 패브릭 또는 원격 목적지가 자신의 작업을 완료했다는 증명이 아니었다. 프로토콜은 전체 네트워크를 인증한다고 가장하지 않으면서 하나의 전환을 관찰 가능하게 만들었다.

여러 미래 중 하나의 제안

IFMP는 IP 제어와 ATM 포워딩을 결합하려는 더 넓은 시도의 일부였다. RFC 1954는 ATM 인코딩을 규정했다. Ipsilon의 GSMP는 비대칭 제어 관계를 통해 컨트롤러가 스위치의 연결, 포트, 통계를 관리하는 방식을 기술했다. 같은 시기의 Cisco Tag Switching 제안도 포워딩과 제어를 분리했지만, 여러 할당 모드를 기술하고 트래픽 발견 플로우에만 의존하기보다 토폴로지 기반 경로 바인딩을 강조했다.

이후 MPLS 아키텍처와 LDP는 더 넓은 레이블 스위칭 체계를 표준화했다. 그 문서들은 로컬 레이블 바인딩, 포워딩 동등성 클래스, 제어/포워딩 분리가 지속적인 설계 아이디어가 되었음을 보여준다. 그러나 IFMP가 MPLS를 직접 낳았거나, 이후 프로토콜이 IFMP의 정확한 임대, 인접 또는 회수 의미론을 보존했다는 증명은 아니다. 비슷한 문제가 여러 공학 경로를 통해 관련된 메커니즘을 낳을 수 있다.

정당한 역사적 주장은 더 작고 더 유용하다. RFC 1953은 지름길이라면 반드시 답해야 하는 질문들을 노출했다. 간결한 식별자를 누가 소유하는가? 그 사용을 누가 요청할 수 있는가? 누가 거부할 수 있는가? 상태는 얼마나 오래 사는가? 두 믿음이 갈라질 때 무슨 일이 일어나는가? 식별자를 재사용해도 안전함을 무엇이 증명하는가? 최적화가 사라지면 무엇이 남는가?

레이블과 그것이 일으킨 것

Lu Heng의 러닝 코드 관점은 증거 수준을 분리하는 데 도움이 된다. Redirect 같은 RFC 레이블은 명세된 메시지다. 수신된 Redirect는 이웃이 상태를 제안했다는 증거다. 그 제안을 수락하고 실행했음을 보여주는 것은 오직 수신자의 포워딩 동작뿐이다. 트래픽 관찰, 만료, 폴백은 상징적 토큰만으로는 얻을 수 없는 더 강한 운영 증거다.

최소 명세 관점은 IFMP가 어떻게 지역적으로 유지될 수 있었는지 설명한다. 피어들은 플로우 키, 인스턴스, 시퀀스 순서, 수명, 레이블 범위, 해제 영수증에 대한 공통 문법이 필요했다. 중앙 레이블 할당자나 모든 수신자가 최적화를 수락하도록 강제하는 규칙은 필요하지 않았다. 공유 계약은 한 에지를 조정하기에 충분히 얇았고, 실제 결정은 그 에지의 운영자에게 남았다.

현실 계층의 구별도 마찬가지로 날카롭다. 레이블이 패킷에 존재하면서도 현재 바인딩이 없을 수 있다. 바인딩이 한 노드에 존재하면서 이웃에는 없을 수 있다. 인접 관계가 어느 순간에 established처럼 보이다가 재시작 뒤에는 낡을 수 있다. 상징, 저장된 상태, 실행된 포워딩은 서로 관련되지만 서로 교환 가능하지 않다.

스위치는 지름길을 제안했다. 라우터는 거부할 수 있었다. 이 소박한 문장은 모든 패킷이 빠를 것이라는 약속보다 더 많은 아키텍처적 규율을 담고 있다.

출처와 경계

역사적 정체성과 정확한 프로토콜은RFC Editor의 RFC 1953 기록과RFC 1953에 있다. ATM 구현은RFC 1954와 그가 참조한 기본 캡슐화인RFC 1483으로 한정된다. 스위치 제어의 동반 맥락은RFC Editor의 RFC 1987 기록에서 나온다. 동시대 및 이후 비교에는RFC 2105,RFC 3031,RFC 5036을 사용한다. 분석적 틀은Running-Code Primacy,Minimum Initial Specification,Reality Layers에서 나온다.

이 출처들은 프로토콜 문서와 한정된 아키텍처 비교를 확립한다. 배포 점유율, 측정된 성능, 상업적 성공, 보편적 상호운용성, 암호화 보안, 또는 IFMP에서 MPLS로의 단일 인과 경로는 확립하지 않는다.