요약

  • MARS는 계층 3 멀티캐스트 그룹을 ATM 엔드포인트에 매핑하는 클러스터 로컬 맵을 유지하고 반환했으며, 멀티캐스트 데이터 자체는 전달하지 않았습니다.
  • 송신자는 그룹 멤버가 아니더라도 완전한MARS_MULTI응답을 수집한 뒤 자체적으로 포인트투멀티포인트 VC를 만들거나, 별도의 재배포 경로를 숨기는 MCS 주소를 받아야 했습니다.
  • 멤버십, 부착된 리프, 끊김 없는 제어 시퀀스, 성공한 send 호출은 각각 시스템의 한 단계를 설명할 뿐입니다. 그 어느 하나만으로도 살아 있는 수신자, 패킷 전달, 신원, 권한 부여, QoS 또는 보안이 입증되지 않습니다.

RFC 2022에서 가장 시사적인 문장은 동시에 가장 지나치기 쉬운 문장이기도 합니다. MARS는 실제 계층 3 멀티캐스팅에 참여하지 않는다는 것입니다. 서버는 IP 멀티캐스트 주소와 ATM 엔드포인트 사이의 현재 연관 관계를 알고, 질의에 답하고, 가입 또는 탈퇴를 알릴 수 있었습니다. 그러나 패킷은 그 서버를 통과하지 않았습니다.

이 분리가 중요했던 이유는, ATM은 연결을 제공하는 반면 IP 멀티캐스트는 그룹 주소를 제시했기 때문입니다. 송신자는 그룹 주소를 ATM 호출에 그대로 넣을 수 없었습니다. 먼저 MARS에게 MARS 클러스터 안에서 현재 그 그룹을 대표하는 ATM 주소가 무엇인지 물어야 했습니다. 응답이 완전해지면, 송신자는 자신의 로컬 ATM 시그널링 관리자에게 포인트투멀티포인트 가상 회선을 만들고 반환된 주소들을 리프로 추가하도록 요청했습니다.

RFC 1112는 이 구분을 더 선명하게 만들었습니다. 호스트는 멀티캐스트 그룹에 가입하지 않고도 그 그룹으로 전송할 수 있습니다. RFC 2022는 이 규칙을 그대로 유지했습니다. 따라서 요청이 성공했다고 해서 송신자가 그 그룹에 속한다는 인증이 되는 것은 아니었습니다. 그것은 다만 송신자가 서버의 현재 맵을 요청했다는 뜻일 뿐이었습니다.

목록은 조각으로 도착했다

응답 그 자체에는 상태 기계가 있었습니다. 하나의 매핑에 여러 엔드포인트가 담겨 있으면, MARS는 그것을 여러 개의MARS_MULTI메시지로 나눌 수 있었습니다.x비트는 마지막 조각을 표시했고, 시퀀스 필드y는 요청자가 빠진 조각을 알아차릴 수 있게 해 주었습니다. 엔드포인트는 일관된 시퀀스를 갖는 종료 메시지를 받은 뒤에만 동작할 수 있었습니다. 갭, 타임아웃 또는 호환되지 않는 시퀀스는 부분 결과를 폐기하고 다시 시도함을 의미했습니다.

이는 어떤 응답이든 답으로 받아들이는 방식보다는 강하지만, 그 답을 세상에 대한 진실로 받아들이는 방식보다는 좁았습니다. 여기서 확립되는 것은 하나의 프로토콜 교환이 서버 측 스냅샷 하나를 온전히 전달했다는 사실뿐입니다. 수신자는 스냅샷 이후에 떠날 수 있고, 리프 추가는 실패할 수 있으며, 엔드포인트가 등록되어 있어도 데이터를 소비하지 못할 수 있습니다.

해석 이후의 회선 구성은 별개의 절차였습니다. 엔드포인트는 포인트투멀티포인트 설정 요청을 보내고 리프를 하나씩 추가했습니다. RFC 2022는 실패한 추가를 재시도할 수 있게 하고, 일부 추가가 아직 진행 중인 동안에도 데이터가 흐를 수 있게 허용했습니다. 따라서 VC가 "올라가" 있어도 의도한 모든 수신자를 담고 있지 않을 수 있었습니다. send 호출이 성공했다는 것은 데이터가 로컬 경로에 들어갔다는 증거일 뿐, 모든 리프가 존재하거나 모든 애플리케이션이 패킷을 받았다는 증거가 아니었습니다.

서버 주소 뒤에 다른 팬아웃이 숨어 있을 수 있었다

MARS는 멀티캐스트 서버(MCS)의 주소를 반환할 수도 있었습니다. 송신자의 관점에서 절차는 거의 변하지 않았습니다. 그룹을 해석하고, VC를 열고, 전송한다. 반환된 리프는 실제 그룹 멤버일 수도, MCS일 수도 있으며, 엔드포인트는 둘을 구분할 필요가 없었습니다. 그러나 트래픽을 받아 재배포하는 주체는 MARS가 아니라 MCS였습니다.

이 투명성은 송신자를 단순하게 만드는 동시에 근거 경계를 더 중요하게 만들었습니다. MCS 주소를 본다고 해서 최종 수신자 집합에 대해 아무것도 알 수 없습니다. RFC 2149는 나중에 MCS 아키텍처와 조율을 다루었지만, 그 후속 작업을 RFC 2022가 이미 다중 서버 운영이나 장애 처리를 정해 놓았던 것처럼 거꾸로 읽어서는 안 됩니다.

가입과 탈퇴는 로컬 회선 상태를 수리했다

멤버들은ClusterControlVC위에서 비동기MARS_JOIN및MARS_LEAVE메시지를 수신했습니다. 엔드포인트는 이 알림들을 사용해 영향을 받는 모든 발신 VC에서 리프를 추가하거나 제거했습니다. 제거가 마지막 리프를 지우면 VC를 닫았습니다. 그 그룹의 다음 패킷은 새로운 질의·구성 주기를 시작했습니다.

각 제어 메시지는 클러스터 시퀀스 번호(CSN)를 담았습니다. MARS는 하위 멤버십 레지스터가 변하지 않았더라도 제어 VC의 모든 전송마다 CSN을 증가시켰습니다. 따라서 점프가 있다는 것은 이전 제어 메시지를 놓쳤을 수 있음을 뜻했고, 어떤 이벤트가 유실되었는지는 밝혀 주지 않았습니다. 규정된 대응은 모든 열린 그룹 VC를 새로운 MARS 매핑과 대조해 재검증하는 것이었으며, 그 작업 동안에도 데이터는 계속 흐를 수 있었습니다.

그러므로 시퀀스 번호는 현실의 재구성이 아니라 불확실성의 탐지기였습니다. 연속성은 이 수신자가 순서 있는 제어 스트림을 관찰했다는 것을 보여 줄 뿐입니다. 시그널링 동작이 성공했는지, 리프가 여전히 살아 있는지, 패킷이 완성된 경로를 통과했는지는 증명하지 않았습니다.

이 아키텍처가 의도적으로 인증하지 않은 것들

RFC 2022는 자신을 하나의 MARS 클러스터 안으로 한정했습니다. 클러스터 간 라우팅은 그 모델 밖이었습니다. 계층 3 QoS를 ATM 속성에 매핑하는 일은 미해결로 남겨졌습니다. 백업 MARS 간의 조율, 죽은 멤버의 정리, 여러 MCS 사이의 조율은 없었거나 미루어졌습니다. 그 보안 절은 보안은 논의되지 않는다고 밝힙니다.

이러한 누락은 좁은 기록 속에 넓은 운영적 주장이 몰래 끼어들지 못하게 막습니다. 등록 기록은 엔드포인트가 등록했다는 것을 말합니다. 완전한 응답은 서버의 다부분 스냅샷이 도착했다는 것을 말합니다. 리프는 시그널링이 하나의 ATM 주소를 붙였다는 것을 말합니다. MCS 주소는 송신자가 트래픽을 제출한 곳을 말합니다. 이 기록들 중 어떤 것도, 혼자서는 현재의 생존, 종단 간 멤버십, 전달, 애플리케이션 수신, 실제 신원, 권한 부여 또는 보안을 확립하지 못합니다.

RFC 2022의 지속적인 기여는 그 간극을 숨기는 대신 드러낸 데 있습니다. 수신자 디렉터리와 포워딩 경로는 동기화될 수 있었지만, 서로 다른 주체가 소유한 서로 다른 대상으로 남았습니다. 연결 지향 네트워크 위의 멀티캐스트가 동작한 것은, 엔드포인트들이 반복적으로 하나를 다른 하나로 변환했고—그 변환이 낡았을지도 모른다는 것을 인정할 만큼의 상태를 유지했기 때문입니다.

출처