요약

  • RFC 3038은 한 가지 불일치를 다루었다. ATM의 로컬 VPI/VCI 레이블은 경로를 따라 다시 쓰일 수 있지만, 인접 ATM-LSR 간의 LDP 매핑에는 양쪽 끝이 동일한 VC에 연결할 수 있는 하나의 값이 필요했다.
  • 문서의 인밴드 포인트투포인트 절차는 확인되지 않은 제안을 신뢰하지 않았다. PROPOSE와 일치하는 ACK, 그리고 LDP REQUEST가 완료되어야 세 방향 교환이 끝나고, 그때 다운스트림 매핑이 VCID를 실어 보낼 수 있었다.

하나의 회선, 여러 개의 로컬 이름

2001년 1월, MPLS 표준 세트는 ATM 스위치를 레이블 스위칭 라우터처럼 동작하게 만들려 하고 있었다. 이는 이미 VPI와 VCI 필드를 보고 셀을 포워딩하던 하드웨어와 잘 맞았다. 그러나 하나의 ATM 링크에서 셀을 이동시키는 필드가 다음 스위치에서도 유효한 이름이 아니었다. 일반적인 경우 각 스위치는 레이블을 새로운 로컬 값으로 바꿀 수 있었다. 따라서 레이블 매핑 메시지를 받는 LDP 피어는 단일 VPI/VCI 값을 가상 회선의 엔드투엔드 식별자로 사용할 수 없었다.

RFC 3038은 로컬 이름 옆에 두 번째 이름, 즉 가상 연결 식별자(VCID, Virtual Connection Identifier)를 도입했다. 그 정의적 성질은 절제되고 정확했다. 동일한 VCID 값이 양쪽 끝에서 VC와 연관된다는 것. 이 값은 데이터 플레인의 모든 ATM 레이블을 대체하지 않았다. 대신 인접 ATM-LSR이 서로 조율 중인 VC를 어느 로컬 수신 또는 송신 레이블이 가리키는지 말할 수 있게 하고, 그 식별자를 LDP의 레이블 정보에 담아 전달할 수 있게 했다.

이 구분이 중요한 이유는 VC와 그 레이블이 이 통지 절차로 만들어진 것이 아니기 때문이다. 문서는 VC가 신호 절차나 관리 절차를 통해 이미 성립한 뒤에 시작한다. 그 통지가 두 피어의 로컬 레이블 상태를 연결한다. 그 연관이 성립한 후에야 LDP가 VCID를 사용해 매핑을 요청하고 돌려받을 수 있다. 설정 메시지, 로컬 VPI/VCI, 공유된 VCID, LDP 매핑, 실제로 경로를 통과하는 패킷은 서로 다른 증거 조각이다.

확인 응답이 마지막 말이 아니었다

인밴드 포인트투포인트 VC의 경우 업스트림 노드가 VCID를 선택하고 새로 성립한 회선을 통해 메시지 ID를 담은 VCID PROPOSE 메시지를 보냈다. 각 끝단은 제안된 ID를 자신의 로컬 레이블과 연관시켰다. 그런 다음 다운스트림 노드는 받은 VCID와 메시지 ID를 포함한 ACK를 돌려보냈다. 업스트림은 그 짝을 검사했고, 기대한 확인 응답이 도착하지 않으면 제안을 재전송했다.

놀라운 단계는 ACK 뒤에 왔다. 업스트림은 제안의 메시지 ID를 담은 LDP REQUEST를 보냈다. 다운스트림은 그 요청을 업스트림이 ACK를 수신했다는 증거로 다루었다. RFC 3038은 PROPOSE 전송이 신뢰할 수 없기 때문에 세 메시지 교환이 필요하다고 명시한다. 마지막 되돌아가는 다리가 없으면 다운스트림은 자신이 확인 응답을 보냈다는 것만 알 뿐, 개시자가 그것을 들었는지 알 수 없었다. REQUEST가 도착하기 전까지 다운스트림은 VCID PROPOSE 자체를 제외한 VC 위의 패킷을 폐기했다.

교환이 완료되면 LDP Mapping이 레이블 TLV에 VCID를 실을 수 있었다. 따라서 이 핸드셰이크는 응용 수준의 수신 확인이 아니었다. 두 인접 노드 사이의 특정 제어 플레인 연관을 성립시키고 협상의 전달 모호성을 닫는 것이었다. VC가 사용자 트래픽을 실었는지, 더 큰 경로의 모든 스위치가 동의했는지, 응용이 데이터를 받았는지는 보여 주지 않았다.

모든 ATM 연결에 동일한 절차가 필요한 것은 아니었다

RFC 3038은 모든 링크에 하나의 절차를 강제하지 않았다. 양쪽 끝이 이미 동일한 VPI/VCI를 사용하는 투명 직결 포인트투포인트 링크는 통지가 필요 없었다. 가상 경로는 인밴드 통지나 VPID 절차를 사용할 수 있었고, 좁은 단일 VP의 경우 공유 VCI가 직접 쓰일 수 있었다. 영구 가상 회선(PVC)은 인밴드 통지를 사용했다. 스위치 가상 회선(SVC)은 VCID를 담을 만큼 큰 신호 필드에 VCID를 실거나, 더 작은 임시 필드를 쓰거나, 인밴드 메시지로 후퇴할 수 있었다.

방향도 중요했다. 업스트림 끝이 통지를 개시했다. 양방향 레이블 스위치드 VC는 각 방향마다 절차가 한 번 필요했고, 단방향이면 허용된 방향만 필요했다. 표준은 이렇게 “동일한 회선”을 ATM 클라우드 전체에서 마법처럼 보이는 보편적 레이블이 아니라, 관련된 각 피어 쌍마다 성립시켜야 하는 관계로 다루었다.

작은 필드 옵션은 임시 상관과 내구성 있는 연관 사이의 차이를 특히 잘 보여 준다. ATM 신호 절차에서 BLLI 사용자 특정 필드는 전체 VCID가 교환되는 동안 회선을 임시로 식별할 수 있었다. 그 값은 같은 피어와의 다른 미완료 트랜잭션에서 사용되지 않아야 했지만, VCID 연관이 완료되면 재사용할 수 있었다. 멀티포인트의 경우 BLLI는 송신자 측에서 고유했지 수신자 측에서 전역적으로 고유한 것이 아니었다. 수신자는 이를 구별하기 위해 송신자 ATM 주소도 필요했다. 희소한 임시 토큰은 더 내구성 있는 매핑이 성립된 뒤에야 안전하게 재활용될 수 있었다.

이 RFC는 가상 경로를 위한 VPID 통지도 정의했다. 그 절차 이후에는 VPID와 VCI로부터 VCID를 만들 수 있어, 각 VC마다 별도의 VCID 교환 없이 LDP가 만들어진 식별자를 사용할 수 있었다. 이들은 제어 플레인 정체성을 링크 구조와 정렬하는 대안적 방법이지, 모든 네트워크가 각 옵션을 배치했다는 증거가 아니다.

유용한 역사적 경계

같은 달에 발표된 RFC 3033은 ATM 호출 신호 절차에서 세션과 자원에 사용되는 유형화된 식별자를 할당했다. RFC 3038은 다른 문제, 즉 VC가 존재한 뒤 인접 LDP 피어 사이의 로컬 ATM 레이블을 조율하는 문제를 풀었다. RFC 3036의 FEC 정의와 더 넓은 MPLS 레이블 아키텍처는 또 다른 것이다. 이 메커니즘들을 분리해 두면 “식별자”가 설정, 패킷 분류, 로컬 포워딩, 전달을 모두 아우르는 만능 단어가 되는 일을 피할 수 있다.

RFC 3038은 포인트투멀티포인트 통지를 미래 사용으로 기술하면서 당시 LDP 사양은 멀티캐스트를 지원하지 않는다고 밝혔다. 또한 VC 병합을 하지 않는 스위치가 리프가 추가될 때 인밴드 메시지를 보내려면 활성 LSP를 임시로 분할해야 할 수 있으며, 성능과 QoS 문제가 생길 수 있다고 경고했다. 이 구절들은 설계 제약을 기술한 것이지, 절차가 배치되었다는 현장 측정이나 증명이 아니다.

RFC Editor는 현재 RFC 3038을 Proposed Standard로 등재하고 RFC 7274가 이를 업데이트한다고 명시한다. 그 후속 문서는 특수 목적 MPLS 레이블의 할당과 은퇴를 다루며 “예약 레이블”이라는 용어의 오래된 사용을 업데이트한다. 레이블 용어를 읽을 때는 포함해야 하지만, RFC 3038의 VCID 핸드셰이크가 철회되었다는 증거로 과장해서는 안 된다. 어느 문서도 배치된 구현을 이름으로 제시하거나, 상호운용성 시험을 보고하거나, 사용량을 세지 않는다. 역사적으로 방어 가능한 결론은 더 좁다. ATM 레이블이 홉에 국한될 수 있을 때, MPLS 제어에는 피어 수준의 공유 정체성이 필요했고, 그 사양은 작고 명시적인 교환을 통해 합의를 관측 가능하게 만들었다는 것.

출처

Lu Heng의 에세이는 분석적 틀로만 공개된 것이며, Lu는 RFC 3038을 저술하거나 보증하지 않았다.