요약

  • RFC 2443은 여러 ATM 멀티캐스트 주소 확인 서버가 클라이언트와 멀티캐스트 그룹에 대한 뷰를 공유하도록 했지만, 각 클라이언트는 여전히 한 서버에만 속했습니다.
  • 서버가 하트비트 업데이트를 두 번 놓치면, 피어 서버들은 그 서버로부터 학습한 모든 멤버십을 폐기해야 했습니다. 그러면 클라이언트들은 백업 서버에 등록하고 그룹에 다시 가입해야 했습니다. 동기화된 사본만으로는 서비스가 복구되지 않았습니다.

일치하는 세 개의 사본, 사라진 출처

동일한 멤버십 행을 보여주는 세 개의 MARS 서버를 상상해 보십시오. 어떤 클라이언트가 멀티캐스트 그룹에 속해 있다는 것입니다. 공유 뷰는 건강해 보입니다. 그런데 클라이언트를 처음 등록한 서버가 리디렉트 엔트리 하트비트 전송을 멈춥니다. 나머지 두 서버는 여전히 동일한 레코드를 보유하고 있지만, RFC 2443은 그 일치를 출처—그리고 그 출처에 붙어 있는 클라이언트—가 여전히 살아 있음의 증거로 취급하지 않습니다. 두 번의 연속 업데이트가 놓치면, 그 서버로부터 학습한 멤버십을 플러시해야 합니다.

이 구분은 설계 그 자체였습니다. RFC 2022는 MARS(Multicast Address Resolution Server)를 ATM 위에서 계층 3 멀티캐스트 멤버십과 연결 정보를 배포하는 방식으로 기술했습니다. 분산 MARS 서비스에서는 각 LIS(Logical IP Subnet)의 서버가 해당 서브넷의 모든 멀티캐스트 그룹에 대해 답할 수 있는 충분한 정보를 필요로 했습니다. 1998년 11월에 실험적 RFC로 공개된 RFC 2443은 서버 캐시 동기화 프로토콜(SCSP)을 MARS 서버들 사이의 레코드 복제에 맞게 조정했습니다.

복제는 소유권이 아니라 레코드를 퍼뜨렸다

SCSP는 동기화 프레임워크를 제공했습니다. 서버들은 관계를 수립하고, 캐시 내용을 정렬한 뒤, 새 상태를 전파했습니다. RFC 2443은 MARS 애플리케이션 프로토콜 식별자0x0003을 할당하고 서버 그룹을 LIS로 한정했습니다. 클라이언트가 한 서버에 등록하면, 그 서버는 등록 정보와 이후의 그룹 변경을 피어들에게 전파했습니다. 그럼에도 각 클라이언트는 오직 하나의 MARS 서버에만 등록되고, 그 서버의 클러스터 제어 가상 회로(Cluster Control Virtual Circuit) 또는 서버 제어 가상 회로(Server Control Virtual Circuit)를 통해 연결되었습니다. 사본들은 그룹의 뷰를 넓혔지만, 클라이언트의 원래 제어 관계를 모든 피어로 옮기지는 않았습니다.

이것이 복제로는 해결할 수 없는 소유권 문제를 남겼습니다. MARS 클라이언트는 LIS 전체에서 고유한 Cluster Member ID가 필요했습니다. RFC 2443은 각 서버가 할당할 별도의 범위를 가진다고 가정했습니다. 외부 할당 시스템도 가능했지만 문서의 범위 밖이었습니다. 동기화된 데이터베이스는 식별자를 일관되게 반복할 수 있습니다. 그 자체로 충돌 없는 할당 권위를 만들어 낼 수는 없습니다.

하트비트는 낡은 지식을 무효화하는 규칙이었다

각 서버는 MARS 서버 리디렉트 엔트리를 최소 2분에 한 번 새로 고쳐야 했고, RFC는 1분마다 갱신을 권장했습니다. 어떤 피어가 출처로부터 두 번의 연속 업데이트를 놓치면, 그 출처로부터 학습한 모든 클라이언트 및 그룹 멤버십 상태를 플러시해야 했습니다. 이것은 단순한 서버 목록 갱신 그 이상이었습니다. 엔트리는 특정 출처의 운영 상태에 대한 증거를 제공했고, 플러시는 그 출처에 귀속된 정보로 의도적으로 범위가 한정되었습니다.

그 다음 복구는 클라이언트로 되돌아갔습니다. MARS 장애를 감지한 클라이언트는 백업 서버를 선택하고, 등록을 시도하고, 등록에 성공한 이후에만 이전 그룹에 다시 가입했습니다. 시도가 실패하면 다른 서버를 시도했습니다. 리디렉트 맵은 클라이언트에게 시도할 곳을 알려줄 수 있었지만, 그 클라이언트가 실제로 마이그레이션하고, 재등록하고, 멤버십을 복원하고, 멀티캐스트 수신을 재개했다는 것을 인증할 수 없었습니다.

마찬가지로 복원된 멤버십 행이 ATM 포인트 투 멀티포인트 회로가 구축되었거나 패킷이 애플리케이션에 도달했다는 증거가 되지는 못했습니다. 이들은 MARS 시스템에서 별개의 운영 전환 단계입니다. 이 구분은 운영 중인 네트워크에서 익숙한 것입니다. 복제된 제어 평면 레코드는 동작의 입력이지, 동작의 수신 확인이 아닙니다.

인증은 신뢰 경계를 만들고, 동시에 피해 범위도 만들었다

RFC 2443은 자체의 MARS 전용 캐시 상태 레코드를 암호화하지 않았습니다. SCSP의 프로토콜 독립 계층에 있는 보안 메커니즘을 가리켰습니다. 인증은 피어들이 인증되지 않은 위조 패킷을 폐기하도록 만들 수 있었지만, RFC는 신뢰의 결과도 명시했습니다. 제대로 인증된 서버로부터의 정보는 신뢰되고 그룹 전체에 전파됩니다. 인증된 MARS 서버 하나가 침해되면, 데이터베이스는 그 출처로부터 그룹 전체로 오염될 수 있었습니다. 인증은 누가 말할 수 있는지를 좁혔지만, 권한 있는 발신자의 데이터가 참이라고 만들거나 침해된 피어의 피해를 봉쇄하지는 않았습니다.

이후의 RFC 3790은 RFC 2443이 IPv4 기본값을 제공하면서 적절한 IANA 정의를 통해 IPv6로의 확장 경로를 남겨 두었다고 언급했습니다. 이것은 문서화된 설계 의도에 대한 증거이지, 구현이나 배포에 대한 증거는 아닙니다. RFC 본문은 프로토콜이 무엇을 요구하고 무엇을 경고했는지를 알려줄 뿐, 시스템이 얼마나 자주 운영되었는지 또는 모든 구현이 규칙을 따랐는지는 확립하지 못합니다.

“복제는 가용성을 개선한다”는 명제보다 지속되는 교훈은 더 좁습니다. 각 레코드를 누가 발생시켰는지, 출처 증거는 얼마나 신선한지, 그 증거가 만료될 때 무엇을 무효화해야 하는지, 다음 단계는 어떤 주체가 수행해야 하는지를 물어야 합니다. 그다음 등록, 그룹 재가입, 회로 구축, 패킷 전달, 애플리케이션 수신을 각각 따로 측정하십시오. 세 개의 일치하는 캐시는 과거에 대해 합의할 수 있습니다. 그러나 멀티캐스트 서비스가 돌아왔음을 보여줄 수 있는 것은 살아 있는 클라이언트와 동작하는 데이터 경로뿐입니다.

출처