1075. 멀티캐스트 MLD / IGMP 스누핑 기법 - IPv4 IPv6 멀티캐스트 그룹 가입 라우터 통제 L2 스위치 브로드캐스트 스톰 방지 최적화
핵심 인사이트: (1073번 멀티캐스트 심화) 멀티캐스트는 "원하는 놈들에게만 복사해서 뿌리는" 기적의 방송 기술이다. 근데 내가 MBC(239.1.1.1) 방송을 보고 싶으면 통신사 라우터한테 "나 가입할래!"라고 신청서를 내야 한다. IPv4 시절엔 'IGMP'라는 낡은 신청서를 썼는데, IPv6 시대가 되면서 ICMPv6 뼈대 위에 얹은 'MLD'라는 최신 신청서로 업그레이드됐다. 치명적인 문제는 중간에 낀 멍청한 L2 스위치(허브)다. 스위치 기계는 IP 주소를 못 읽어서 멀티캐스트를 그냥 브로드캐스트(모두에게 쏘기)로 착각하고 안 보는 놈한테까지 다 뿌려버린다. "야! L2 스위치야! 네가 L3 IP 주소를 못 보더라도 억지로 패킷(IGMP 신청서)을 몰래 훔쳐봐서(스누핑), 누가 MBC 신청했는지 장부 좀 적어둬라!" 스위치의 무식한 폭주를 막는 L2의 흑마법, IGMP 스누핑이다.
Ⅰ. 멀티캐스트 그룹 가입의 원리 (IGMP와 MLD) 🌟
컴퓨터가 멀티캐스트 방(IP)에 들어가 라우터로부터 영상을 복사 받기 위한 가입 신청 프로토콜입니다.
1. IPv4의 영혼: IGMP (Internet Group Management Protocol)
- 개념: 라우터와 내 컴퓨터(호스트) 사이에서, "나 239.1.1.1번 방(멀티캐스트 그룹)에 껴줘(Join)!" "나 이제 방송 다 봤으니까 나갈래(Leave)!"라고 그룹 가입/탈퇴 멤버십을 관리해 주는 IPv4 전용 제어 프로토콜입니다.
2. IPv6의 후계자: MLD (Multicast Listener Discovery)
- 개념: 899번 IPv6로 넘어오면서 기존 낡은 IGMP를 쓰레기통에 버리고, ICMPv6 (IPv6용 상태 알림 프로토콜) 뼈대 안에 기능을 쏙 집어넣어 새롭게 만든 IPv6 전용 멀티캐스트 멤버십 프로토콜입니다. (이름만 MLD로 바뀌었지 하는 짓은 IGMP와 100% 똑같습니다.)
Ⅱ. L2 스위치의 멍청함과 브로드캐스트 폭발 (BUM 트래픽)
문제는 내 컴퓨터와 라우터 사이에 껴있는 깡통 L2 스위치입니다.
- 라우터가 239.1.1.1(MBC) 멀티캐스트 영상을 쏩니다.
- 중간에 낀 L2 스위치는 목적지 IP(L3)를 읽을 지능이 없습니다. 오직 MAC 주소(L2)만 봅니다.
- 멀티캐스트 MAC 주소(
01:00:5E...)를 본 멍청한 스위치는 "어? 이거 누구 건지 주소록에 없네? 에라이 모르겠다! 나한테 꽂힌 모든 컴퓨터 포트(1번~24번 포트)에 모조리 다 쏴버려라(Flooding)!" 라며 최악의 뻘짓을 합니다. - 결국 방송을 보지도 않는 옆자리 김 대리 컴퓨터까지 초당 100MB의 영상 패킷 폭탄을 맞고 뻗어버립니다(네트워크 마비).
Ⅲ. 구원자: IGMP 스누핑 (IGMP Snooping) 🌟 핵심 기출 🌟
스위치가 자신의 무식한 한계(L2)를 뛰어넘는 기적의 반칙(스누핑) 기술입니다.
- 개념 (몰래 훔쳐보기): L2 스위치가 원래 자기 권한 밖인 L3 계층의 IGMP(가입 신청서) 패킷 속살을 몰래 까보고(Snooping, 엿듣기), 어느 포트에 꽂힌 컴퓨터가 진짜 멀티캐스트 방송을 신청했는지 스스로 장부(MAC/포트 매핑 테이블)를 작성하여 똑똑하게 핀셋으로 전송해 주는 기술입니다.
- 작동 원리 (모세의 기적):
- 1번 포트에 꽂힌 철수가 라우터에게 "IGMP Join(MBC 가입)"을 쏩니다.
- 중간에 낀 스위치가 이 패킷을 몰래 훔쳐보고 기록합니다. "아하! 1번 포트 철수가 MBC(239.1.1.1) 신청했구나. 장부에 적어놔야지!"
- 라우터에서 진짜로 어마어마한 용량의 MBC 영상 멀티캐스트 패킷이 내려옵니다.
- 옛날 같으면 1번~24번 포트에 다 뿌렸을 텐데, 스누핑 장부를 쓱 봅니다. "어? MBC는 아까 1번 철수만 신청했잖아!"
- 스위치는 나머지 2~24번 포트를 철벽처럼 막고(플러딩 차단), 오직 1번 철수 포트로만 깔끔하게 영상을 흘려보냅니다. 네트워크 대역폭 낭비가 99% 소멸하는 궁극의 최적화입니다.
- (IPv6 환경에서는 이름만 **MLD 스누핑(MLD Snooping)**으로 바뀌어 똑같이 작동합니다.)
📢 섹션 요약 비유: 기존 깡통 L2 스위치는 눈을 안대로 가린 채 아파트 현관에서 택배를 나눠주는 **'장님 경비 아저씨'**입니다. 우체부(라우터)가 '잡지 구독자 전용(멀티캐스트)' 박스를 던져주면, 장님 경비 아저씨는 이 아파트 100가구 중 누가 이 잡지를 구독했는지 몰라서, 박스를 100개 복사해 안 보는 사람 집 문 앞에도 무식하게 다 던져버립니다(브로드캐스트 폭발, 복도 마비). IGMP 스누핑은 이 경비 아저씨에게 **'우편물 훔쳐보기(스누핑) 신공'**을 전수한 것입니다. 경비 아저씨는 주민들이 평소에 우체국(라우터)으로 보내는 '잡지 신청서(IGMP Join 패킷)'를 중간에서 몰래 뜯어보고 장부에 적어둡니다. "아하! 101호랑 105호만 잡지 신청했군!" 나중에 100MB짜리 거대한 잡지(멀티캐스트 영상)가 도착하면, 장부를 보고 정확히 101호와 105호 문틈으로만 잡지를 밀어 넣고, 나머지 98가구의 복도는 깨끗하게 비워두는(트래픽 절감) 극강의 L2 눈치 게임 기술입니다.