요약
- RGMP는 라우터 포트를 향한 멀티캐스트 플러딩을 명시적이고 주기적으로 갱신되는 그룹별 수요로 대체했지만, 활성화된 각 스위치 포트에 정확히 하나의 활성화된 라우터가 직접 연결되어 있어야 했다.
- 한 포트에 라우터가 두 대 있으면 한 대가 Leave를 보낸 뒤 트래픽이 블랙홀에 빠질 수 있었다. RFC 3488은 용량 보호를 지우면서 건강해 보이는 플러딩보다 눈에 보이는 저트래픽 실패를 선호했다.
IGMP 스누핑은 호스트 쪽 질문, 즉 어떤 스위치 포트에 멀티캐스트 그룹의 청취자가 있는지에 답할 수 있었다. 그러나 라우터 쪽 질문에는 답할 수 없었다. 라우터는 자신이 라우팅해야 할 수 있는 모든 플로우를 IGMP로 광고하지 않으므로, 스위치는 보통 라우터 쪽 포트를 향해 멀티캐스트를 플러딩했다. 라우터가 가득한 백본에서 스위치는 원치 않는 트래픽을 전달했고, 각 라우터는 그것을 폐기하는 데 자원을 소모했다.
RFC 3488은 시스코의 Router-port Group Management Protocol을 협소한 해결책으로 문서화했다. RGMP 메시지를 발생시키는 것은 오직 라우터뿐이었고, 스위치는 그것을 소비했으며, 라우터는 수신한 메시지를 무시했다. Hello는 포트의 상태를 바꾸었다. Join은 하나의 그룹에 대한 관심을 설정했다. 주기적인 Join이 그 관심을 갱신했다. Leave는 그것을 제거했다. Bye 또는 다섯 개 Hello 간격의 만료는 포트의 이전 포워딩 동작을 복원했다.
그 상태 머신이 단순했던 이유는 물리적 불변 조건, 즉 하나의 RGMP 라우터가 하나의 RGMP 스위치 포트에 직접 연결된다는 전제에 의존했기 때문이다. 이 문장은 프로토콜 주변의 설치 조언이 아니라 프로토콜의 진실 모델의 일부였다. 스위치는 Hello와 Bye 메시지의 IPv4 출처를 기억하고 두 개 이상이 나타나면 경고할 수는 있었지만, 단지 라우터들의 패킷을 수용하는 것만으로 두 라우터의 독립적인 의도를 안전하게 만들 수는 없었다.
두 라우터가 하나의 물리적 포트를 공유한다고 가정하자. 둘 다 그룹 G를 원했다. 나중에 한 라우터가 Leave를 보냈는데 다른 라우터는 여전히 G가 필요했다. 스위치는 포트 뒤의 라우터별이 아니라 포트별로 상태를 저장하므로, 두 라우터 모두에 대한 G 전달을 중단할 수 있었다. 남은 라우터 뒤의 사용자들은 간헐적 블랙홀링을 관찰했다.
RFC의 반응은 주목할 만하다. 블랙홀은 실제 사용자가 알아차리기 쉬웠고, 그 실패는 더 많은 트래픽이 아니라 더 적은 트래픽을 낳았다. 스위치는 RGMP를 비활성화하고 포트를 멀티캐스트 플러딩으로 되돌리는 운영자 버튼을 제공할 수 있었지만, 문서는 그 옵션을 잠재적으로 위험하다고 불렀다. 플러딩은 모든 것이 작동하는 것처럼 보이게 하면서 트래픽 억제라는 이점을 조용히 버리게 만들었다.
이 잘못된 회복은 양뿐 아니라 시간도 바꾸었다. 무효한 토폴로지는 설치나 재구성 시점에 발생했다. 플러딩은 포트나 라우터가 혼잡해질 때까지 눈에 보이는 피해를 미룰 수 있었다. 과부하가 마침내 도래했을 때, 그것은 원인으로부터 며칠, 트래픽 성장, 다른 변경 사항만큼 떨어져 있을 수 있었다. 그 구간 동안의 도달 가능성이 설정이 옳다는 증거는 아니었다.
프로토콜의 나머지 부분은 단일 "joined" 필드가 불충분한 증거인 이유를 보여준다. 일부 링크 로컬 및 시스코 디스커버리 그룹은 항상 전달되어야 했다. 라우터는 원치 않는 그룹을 수신한 후 데이터 트리거 Leave를 보낼 수 있었지만, 이를 속도 제한해야 했다. 원하는 그룹과 원치 않는 IPv4 그룹이 같은 이더넷 목적지 MAC에 매핑되면, 라우터는 그 Leave를 억제할 수 있고 스위치는 선택적으로 필터링하지 못할 수 있었다.
다른 계층 2 메커니즘도 제거를 복잡하게 만들었다. RGMP와 IGMP 스누핑 또는 다른 필터가 동시에 작동하면, 어느 하나라도 요구하는 동안에는 포워딩이 유지되어야 했다. 어느 것도 요구하지 않을 때만 상태가 사라질 수 있었다. 따라서 캡처된 Leave가 하드웨어가 패킷을 멈췄다는 증거가 되지는 않았고, 계속되는 패킷 스트림 자체가 RGMP가 Leave를 무시했다는 증거도 아니었다.
스위치 간 링크는 또 다른 경계였다. RGMP는 그 링크들에 걸친 완전한 제한을 의도적으로 정의하지 않았다. 스위치는 RGMP 메시지를 포워딩하지 않으므로, PIM Hello 디스커버리나 수동 구성이 그 링크들을 플러딩 상태로 유지할 수 있었다. RGMP 없는 라우터는 모든 그룹을 수신했다. 활성화된 에지 포트와 제한된 LAN 전체는 서로 다른 주장이었다.
이 단순함은 라우팅 사례도 배제했다. PIM Dense Mode와 DVMRP는 명시적 Join 모델이 유보할 수 있는 트래픽을 필요로 했다. Bidir-PIM 지정 포워더는 그 네트워크에서 RGMP를 안전하게 활성화할 수 없었다. PIM-SM에서 직접 연결된 출발지를 가진 지정 라우터는 등록을 촉발하기 위해 무조건적 수신이 필요했고, PIM-SSM은 다르게 동작했다. 구성은 기능 가용성이 아니라 프로토콜 역할을 따라야 했다.
보안은 시스템당 하나의 포트라는 가정을 물려받았다. 물리적 고립이 다른 시스템의 상태 위조를 막는 것으로 기대되었다. 위조된 Hello는 RGMP가 아닌 라우터 포트를 제한 포트로 바꿀 수 있었다. 위조된 Leave는 선택된 그룹을 블랙홀에 빠뜨릴 수 있었다. 위조된 Bye나 Join은 원치 않는 트래픽을 복원시키고, 억제가 작동한다는 가정으로 프로비저닝된 용량을 과부하시킬 수 있었다. 따라서 공격은 상태 머신을 트래픽이 너무 적은 쪽이나 너무 많은 쪽으로 몰 수 있었다.
근거 사슬은 제어 패킷 이전에 시작된다. 정확한 물리적 포트와 그 뒤의 모든 시스템을 기록하라. Hello와 Bye 출처 주소, 다섯 간격 타이머, 그룹 주소, Join 갱신과 Leave 순서를 보존하라. 그다음 목적지 MAC 매핑, 병렬 필터 상태, 실제 스위치 포워딩 항목을 결합하라. 패킷 카운터, 라우터 폐기 부하, 포트 사용률, 다운스트림 수신을 확인한 후에야 운영자는 의도적 억제, 우연한 블랙홀링, 은폐된 플러딩을 구분할 수 있다.
Lu Heng의 현실 계층 규율은 RFC의 가혹한 기본값이 왜 가치가 있었는지 설명한다. 눈에 보이는 실패는 구성된 토폴로지가 프로토콜의 불변 조건과 정면으로 마주하게 만들었다. 플러딩은 대역폭, 라우터 작업, 지연된 진단으로 비용을 전가하면서 외양을 보호했을 것이다. RFC 3488은 보편적 가용성도 우아한 추상화도 선택하지 않았다. 위치를 여전히 찾을 수 있는 실패를 선택했다.
출처
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





