핵심 인사이트 (3줄 요약)
- 본질: 앞서 배운 IGMP가 "시청자(PC)"와 "동네 라우터" 간의 채널 가입 리모컨이라면, PIM(Protocol Independent Multicast)은 그 동네 라우터들부터 서울 방송국 서버까지 이어지는 수백 대의 "라우터와 라우터 사이"에 멀티캐스트 영상 물줄기(트리)를 뚫어주는 핵심 라우팅 프로토콜이다.
- Dense Mode (PIM-DM, 막무가내 펌프질): 일단 묻지도 따지지도 않고 전국의 모든 라우터에게 기가바이트급 영상을 냅다 들이부은 다음(Push), 영상 안 보는 라우터가 "나 안 봐 이 미친놈아! 영상 끊어(Prune)!"라고 화를 내면 그쪽 밸브만 살짝 잠가주는 무식한 사내 방송(소규모)용 방식이다.
- Sparse Mode (PIM-SM, 당겨오기): 평소엔 영상 밸브를 꽉 잠가두고 아무한테도 쏘지 않다가, 시청자가 나타나 라우터에게 "영상 좀 줘!"라고 요청하면 그때서야 중앙 우체국(RP)을 향해 밸브를 하나씩 열어 제끼며(Pull) 영상을 당겨오는 가장 똑똑하고 대중적인 통신사(대규모)용 방식이다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: OSPF, BGP 같은 유니캐스트(1:1) 라우팅 정보를 기반으로(독립적으로) 활용하여, 멀티캐스트 트래픽(1:N)을 출발지부터 수신자 그룹까지 가장 효율적으로 복사하여 전달하는 라우팅 분배 트리(Distribution Tree) 형성 프로토콜.
-
필요성: 아프리카TV BJ가 1만 명에게 라이브 방송을 켰다. 서버에서 1만 개의 유니캐스트 패킷을 쏘면 서버가 터진다. 서버는 딱 1개의 패킷만 쏘고, 중간 라우터들이 갈림길에서 복사(Multicast)를 해줘야 한다. 그런데 수십 대의 라우터가 "어느 쪽으로 복사해서 던져야 시청자가 나오지?"를 알아야 물줄기를 열어준다. 라우터들끼리 "이쪽으로 물을 부어라! 저쪽은 시청자 없으니까 밸브 잠가라!"를 실시간으로 합의하여 나뭇가지 모양의 수로(Tree)를 건설하는 지능형 토목공사 기술이 필요했다.
-
💡 비유: 멀티캐스트 라우팅(PIM)은 거대한 **"농수로 밸브 개폐 시스템"**과 같습니다.
- Dense Mode (밀집 모드): 농장주가 100개의 밭에 무조건 스프링클러(물)를 콸콸 틀어버립니다(Flooding). 그러다 옥수수밭 주인이 "여기 비 와서 물 필요 없어!"라고 전화하면, 그쪽 밸브(Prune)만 살짝 잠가줍니다. (물이 너무 낭비됨).
- Sparse Mode (희소 모드): 기본적으로 100개의 밸브를 꽉 잠가놓습니다. 수박밭 주인이 목이 말라 중앙 통제실(RP)에 "물 좀 주세요!"라고 요청서(Join)를 보내면, 그때서야 수박밭으로 가는 파이프의 밸브만 싹 열어줍니다(Pull). (물이 1방울도 낭비 안 됨).
📢 섹션 요약 비유: PIM-DM이 원치도 않는 집에까지 무조건 신문을 쑤셔 넣고 거부해야만 끊어주는 **"악질 스팸 찌라시 배달"**이라면, PIM-SM은 내가 넷플릭스 구독 버튼(Join)을 눌렀을 때만 집으로 영상을 쏴주는 **"합리적인 VOD 구독 서비스"**입니다.
Ⅱ. PIM-DM과 PIM-SM의 트리 생성 메커니즘 (Deep Dive)
PIM은 이름 그대로 "Protocol Independent", 즉 밑바닥에 OSPF가 깔려있든 RIP가 깔려있든 유니캐스트 라우팅 지도만 있으면 거기에 기생해서 돌아가는 아주 범용적인 기술이다.
1. PIM-DM (Dense Mode) - Push 기반, Flood & Prune
시청자가 온 동네에 빽빽하게(Dense) 깔려 있을 때 유리하다.
- Flooding (밀어붙이기): 방송국(Source)이 영상을 쏘면, 라우터 1번은 자기 밑의 2번, 3번 라우터에게 냅다 복사해서 던진다. 2번은 4번, 5번에게 냅다 던진다. 전국의 모든 라우터가 일단 영상을 다 받아본다.
- Prune (가지치기): 라우터 5번 밑에는 시청자가 한 명도 없다(IGMP 가입자가 없음). 5번은 화가 나서 2번에게 Prune(치워버려) 메시지를 쏜다. 2번은 5번 쪽으로 가는 밸브를 닫는다.
- 주기적 반복: 이 가지치기는 3분에 한 번씩 초기화되어 또다시 전국에 플러딩을 때린다. 대역폭 낭비가 미쳐 날뛰므로 대기업 망에서는 절대 안 쓴다. (Source Tree 방식 사용).
2. PIM-SM (Sparse Mode) - Pull 기반, Join & Prune
시청자가 전국에 드문드문(Sparse) 흩어져 있을 때 유리하다. 현대 멀티캐스트의 99%는 이 방식이다. 핵심은 중앙 우체국 역할을 하는 **RP (Rendezvous Point)**의 존재다.
- RP의 등장: 전국 라우터 중 딱 1대를 RP(만남의 광장)로 지정한다. 방송국(Source)은 방송을 시작하면 무조건 이 RP 라우터 한 놈에게만 유니캐스트로 영상을 몰래 갖다 바친다. (전국에 플러딩 안 함!).
- Join (당겨오기): 제주도의 시청자가 리모컨을 눌렀다(IGMP Join). 제주도 라우터는 시청자가 생겼으니, 무조건 중앙 우체국인 RP를 향해 거꾸로 거슬러 올라가며 "영상 줘!(PIM Join)" 메시지를 쏜다.
- 트리 완성 (Shared Tree): RP에서부터 제주도까지 내려오는 밸브가 착착 열리면서 영상이 배달된다. 만약 춘천에 시청자가 없으면 춘천 쪽 밸브는 영원히 닫혀 있다. 단 1바이트의 트래픽 낭비도 없다.
┌─────────────────────────────────────────────────────────────┐
│ PIM-SM(Sparse Mode)의 랑데부(만남) 도식 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 방송국 (Source) ] [ 제주도 시청자 (Receiver) ]│
│ │ ▲ │
│ │ 1. 영상 송출 (나 방송 시작함!) │ │
│ ▼ │ │
│ [ 송신 라우터 ] [ 수신 라우터 ] │
│ │ ▲ │
│ │ 2. RP로 직행! 3. "RP야 영상 줘!" │ │
│ │ (PIM Join) │ │
│ ▼ │ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ ┃ [ RP (Rendezvous Point) ] 라우터 ┃ │
│ ┃ (송신자와 수신자가 만나는 중앙 우체국) ┃ │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ ▶ "RP라는 중매쟁이가 없으면 송신자와 수신자는 영영 만나지 못한다!" │
└─────────────────────────────────────────────────────────────┘
3. SPT Switchover (지름길 타기 꼼수)
PIM-SM의 단점은 수만 명의 시청자가 모두 RP(중앙 우체국)에 모여서 영상을 받아 가다 보니 RP 라우터가 과로사로 터진다는 점이다.
- 이를 막기 위해 제주도 라우터는 처음에만 RP에서 영상을 받아오다가, 영상 봉투에 적힌 "진짜 방송국 IP(Source)"를 슬쩍 훔쳐본다.
- "어? 방송국이 광주에 있었네? 굳이 서울(RP)까지 안 올라가고 광주 쪽으로 다이렉트로 길(SPT)을 뚫어버려야지!"
- 제주도 라우터는 즉시 방송국 쪽으로 최단 거리 다이렉트 트리를 뚫어버리고, 서울(RP) 쪽 밸브는 Prune(잠금)해 버려 RP의 부하를 확 줄여준다.
📢 섹션 요약 비유: PIM-SM의 RP(랑데부 포인트)는 택배 회사의 **"옥천 허브 물류센터"**입니다. 발송인(방송국)은 무조건 옥천 허브로 물건을 보내고, 수취인(시청자)은 무조건 옥천 허브에 내 물건 없냐고 찾으러 갑니다. 이 만남의 광장이 있어야만 넓은 대륙에서 물건이 엇갈리지 않고 완벽하게 배송(멀티캐스트)됩니다.