본문 바로가기

컴퓨터 사이언스/네트워크

[모바일 컴퓨팅] IGMP (Internet Group Management Protocol)

IP multicast

- 화상회의, 라디오/비디오 방송 등 여러 곳에서 multicast를 필요로 한다.

- multicast가 되지 않는다면?

같은 패킷을 같은 라우터에 unicast로 여러 번 보내므로 큰 오버헤드

- Multicast Group은 224.0.0.0 - 239.255.255.255 (class D address) 범위에서 IP 주소로 정의된다.

- 모든 호스트(인터페이스)는 멀티캐스트 그룹에 동적으로 가입하고, 떠날 수 있다.

- 멀티캐스트에 전송되는 모든 IP datagram은 그룹의 모든 멤버에게 전해진다.

(보안에 취약하고, flow control이 불가능)

- IP multicast는 재전송도, 피드백도 하지 않으므로, Unreliable하다.

- UDP 사용

 

Multicast TTL

- Multicast의 그룹은 TTL에 의해 한정지어진다.

TTL 0 : node-local

TTL 1 : link-local

TTL 32 : site-local

TTL 128 : continent-loca

TTL 256 : global-local

대부분 TTL 1을 갖는다.

 

Multicast 주소

- http://www.iana.org/assignments/multicast-addresse

Examples of Reserved & Link-local Addresses

224.0.0.0 - 224.0.0.255: reserved & not forwarded

224.0.0.1 - All local hosts

224.0.0.2 - All local routers

224.0.0.4 – DVMRP

224.0.0.5 – OSPF

224.0.0.9 - RIP2

224.0.0.13 – PIM

224.0.0.15 – CBT
224.0.1.0 – 238.255.255.255 : Globally scoped addresses

224.0.0.1 - NTP
232.0.0.0 - 232.255.255.255: Source-Specific Multicast

233.0.0.0 – 233.255.255.255: GLOP

239.0.0.0 - 239.255.255.255: Administratively Limited Scope

 

Multicast group address to Ethernet address

- Multicast를 위한 logical address이다.

- 01:00:5E 로 시작하며, 나머지 비트는 IP address를 따와 그대로

- 모든 이더넷 카드가 하드웨어에서 멀티캐스트 주소를 필터링 하지 못한다.

- 이 때는 디바이스 드라이버를 사용해 소프트웨어를 통해 필터링 해야 한다.

 

GLOP

- 233.x.x.0/24의 globally unique한 주소

Ex. 만약 KT 방송이 23452 -> 91.156

233.91.156.0/24가 할당된다면

233.91.156.1 : KBS

233.91.156.2 : SBS

233.91.156.3 : MBC

이런 식의 채널 구독이 가능함.

- 233.91.156.0과 233.91.156.255를 제외한 254개의 채널을 운용가능함.

 

IGMP (Internet Group Management Protocol)

- 호스트의 멤버쉽 상태를 묻기 위해 사용된다. (가입, 탈퇴)

- ASM(Any-Source Multicast): IGMPv1, IGMPv2

어디서 오든 그룹 멤버들은 멀티캐스트 메시지를 받는다.

- SSM(Source-Specific Multicast): IGMPv3

수신자는 미리 정의해 놓은 소스 리스트에 따라, 받고싶은 메시지를 고를 수 있다.

- 멀티캐스트 그룹에 가입할 때, 호스트는 IGMP report를 보낸다.

- IGMPv1은 그룹을 떠날 때, report를 보내지 않는다.

- 멀티캐스트 라우터는 주기적으로 IGMP query를 모든 호스트들에게 보낸다.

- 멀티캐스트 라우터는 테이블을 유지해, 그룹에 가입되어 있는 호스트들에게만 해당하는 패킷을 보내준다.

 

IGMP Join

- all local routers를 의미하는 224.0.0.2를 목적지 주소로 해 IGMP report를 보낼 수 있다.

- Query에 대한 응답으로, 특정 목적지 주소(230.1.1.2)를 목적지 주소로 해 IGMP report를 보낼 수 있다.

- IGMPv1의 경우, leave가 없으므로 주기적으로 오는 IGMP query에 report를 보내주어야 한다.

 

IGMP query (IGMPv1)

- host는 가입하고 싶은 group의 query에 report를 보낸다.

- 260초 동안 아무런 응답이 없으면, 아무도 관심이 없다고 생각하고 그룹 구독이 끝난다.

 

IGMP leave (IGMPv2)

- Host가 그룹을 떠나고 싶으면 all local routers(224.0.0.2)에 report를 보낸다.

- router는 query를 보내, 해당 그룹을 구독하는 호스트가 있는지 확인한다.

- 하나의 클라이언트라도 구독하고 있다면, router에 계속 IGMP membership report가 전송된다.