1. 개요
- IGMP는 하나의 라우터와 여러 호스트로 구성되는 서브네트워크(Sub-Network) 상에서 라우터가 자신에 속한 호스트들이 어떤 멀티캐스트 그룹에 속하는 가를 파악하기 위한 일종의 신호(Signal) 제어용 프로토콜(Signalling Protocol)을 말한다.
- 유저(단말)과 라우터와의 관계.
①. IGMP(Internet Group Management Protocol)은 멀티캐스트 그룹의 멤버쉽을 관리하기 위해 사용되는 Communication 프로토콜이다.
②. IGMP는 IP호스트와 바로 근처에 있는 멀티케스트 라우터에 사이에서 멀티캐스트 멤버쉽 그룹을 만드는데 사용된다.
③. IGMP는 IP 멀티캐스트에서 없어서는 안될 중요한 요소이며 네트워크 Layer (Layer 3)에서 수행된다. 그리고 unicast connections에 사용되는 ICMP 와 유사하다. IGMP는 온라인 스트리밍 비디오나 게임에 사용되며 이러한 유형의 응용 서비스에서 대역폭의 좀더 효율적인 사용을 가능하게 한다. IGMP는 몇가지의 외부 공격에 노출되어 있고 firewall 은 유저가 필요하지 않을 때 사용하지 않는것을 허용한다.
2. 동작설명
ㅇ 멀티캐스트 라우터는 주기적으로 Subnet 호스트 그룹들(224.0.0.1)에게 IGMP Query 메시지를 전송한다.
ㅇ 호스트는 IGMP Query 메시지에 응답하며, 자신이 가입하고자 하는 그룹주소 정보를 IGMP Report 메시지를 통해 라우터에게 알려준다.
ㅇ 한편, 호스트는 Query 메시지 없이도 먼저 Report 메시지를 라우터에게 전송할 수 있다.
3. IGMP 패킷 구성
20 8 바이트
┌──────────────┲━━━━━━━━┓
│ IP Header (Protocol ID = 2) ┃ IGMP 메세지 ┃
└──────────────┺━━━━━━━━┛
┌───┬───┬────┬─────┬──────────────┐
IGMPv1 │ 버젼 │ 유형 │ Unused │Checksum 멀티캐스트 그룹 주소 │
└───┴───┴────┴─────┴──────────────┘
4 4 8 16 32 비트
ㅇ 버젼 : IGMP 버젼
ㅇ 유형 : 질의(조회) 및 응답(보고)
- 질의(조회) : 1 (Host Membership Query) (라우터 -> 호스트)
. 특정 그룹에 참여를 원하는 호스트 있는지 확인조회
- 응답(보고) : 2 (Host Membership Report) (호스트 -> 라우터)
. 특정 그룹에 참여를 원하거나, Query에 응답
ㅇ 멀티캐스트 그룹 주소(goupid) : 클래스 D 인 IP 주소 ☞ Multicast
┌───────┬────┬─────┬──────────────┐
IGMPv2 │ 유형 │ MRT │Checksum│ 멀티캐스트 그룹 주소 │
└───────┴────┴─────┴──────────────┘
8 8 16 32 비트
ㅇ 유형
- Membership Query : 0x11
- Membership Report : 0x16
0x12 (IGMPv1과의 호환)
- 특정그룹 탈퇴 : Leave Group : 0x17
ㅇ MRT (Membership Response Time)
4. IGMP 동작 구분
ㅇ 그룹 가입 (joining) : 그룹에 가입하고자 하는 요청을 라우터에 보고
ㅇ 그룹 멤버쉽 조사 (monitoring) : 멤버쉽 질의 메시지를 보내서 응답을 기다림
ㅇ 멤버쉽 연속 (member continuation) : 계속해서 유지하기 원하는 보고 메시지
ㅇ 그룹 탈퇴 (leavinig) : 탈퇴에 대한 응답메시지를 보내지 않음
5. IGMP Snooping
IGMP Snooping은 IGMP traffic을 감지하기 위해 사용된다. 이름에서 알 수 있듯이 스위치가 라우터와 클라이언트 사이에서 벌어지는 IGMP 송 수신을 스위치에서 Layer 3 에서 주고 받아지는 멀티캐스트 패킷 프로세싱에 의해 감지하도록 하게한다.
스위치에서 IGMP Snooping이 enable 되었을 때 스위치는 네트웍상에 있는 라우터와 host 사이에서 주고 받는 모든 IGMP 패킷들을 분석한다. 스위치가 호스트로 부터 주어진 멀티캐스트 그룹을 위한 IGMP Report를 감지했을 때 스위치는 멀티캐스트 그룹 리스트에 호스트의 포트 넘버를 추가한다. 그리고 스위치가 IGMP Leave를 감지했을 때 멀티캐스트 그룹 리스트에 그 호스트의 포트를 삭제한다.
6. 관련표준
ㅇ RFC 1112 (Host extensions for IP Multicasting, IGMP v1)
ㅇ RFC 2236 (IGMP v2)
ㅇ RFC 3376 (IGMP v3)
[출처] IGMP & IGMP Snooping|작성자 시윤아빠