본문 바로가기

Information Network

Network layer : IGMP



IGMP

IP 프로토콜은 Unicasting과 Multicasting의 두가지 종류의 통신을 포함한다. Unicasting은 1:1통신 즉, 하나의 송신자와 하나의 수신자 사이의 통신이다. 이에 때로는 송신자 측에서 다수의 수신자에게 동시에 message를 보내기를 원하는 경우가 있는데 이를 Multicasting이라 한다.

IGMP(인터넷 그룹 관리 프로토콜)는 Multicasting과 관련된 필요한 프로토콜중 하나로써, Multicast Group에 대해 가입과 탈퇴를 유지하기 위하여 사용된다.




그룹 관리

인터넷에서 Multicasting을 사용하기 위해서는 Multicast packet의 경로를 지정할 수 있는 라우터가 필요하다. 이러한 라우터들의 Routing table은 Multicasting routing protocol중 하나를 사용하여 갱신되어야만 한다. IGMP는 Multicasting routing protocol이 아니라 그룹 소속원을 관리하는 protocol이다.

어떤 네트워크에서든지 Multicast packet을 호스트 또는 다른 라우터들에게 분배하는 하나 이상의 Multicast router가 존재하는데 IGMP는 멀티캐스트 라우터에게 네트워크에 연결된 호스트나 라우터의 소속원 상태에 대한 정보를 제공한다.





IGMP 메시지

IGMP에는 2가지 버전이 있는데 현재 사용중인 IGMPv2에 대해서 알아보자.

IGMP는 Query, Membership report, Leave report등 세 가지 message 종류를 가지는데, 이때 Query에는 General Query, Special Query가 있다.
 



Message format
IGMP message format은 다음과 같다.


이때 Type field에는 다음과 같은 값들이 들어가게 된다.







IGMP 동작

IGMP는 국부적으로 동작한다. 각 그룹마다 해당 그룹으로 가는 Multicast packet을 분배해야 할 책임을 가진 하나의 router가 있는데, 만약 여러 멀티캐스트 라우터가 한 네트워크에 연결되어 있을 경우 라우터의 그룹 ID 목록들은 mutually exclusive하다.

IGMP를 통하여 Multicast Group에 join 하려면 Client에서 데이터를 받기 원하는 Multicast 주소를 router에게 알려 Multicast Group에 가입시키고 더이상 Multicast 데이터를 받기를 원하지 않으면 Group에서 탈퇴하겠다는 message를 router에게 알린다. 또한 IGMP는 계속하여 Multicast 데이터를 받을 지를 묻는 Query(해당 group field는 0.0.0.0)를 수행한다.
 
이때 group field의 0.0.0.0은 소속원 자격 유지를 위한 query가 단지 한 그룹에만 해당되는 것이 아닌, 그 호스트와 관련된 모든 그룹을 위한 것임을 의미한다.




Encapsulation

IGMP message는 IP datagram으로 encapsulation되고 frame에서 스스로 encapsulation된다.
 


Network layer에서의 Encapsulation

IGMP protocol을 위한 protocol field 값은 2이다. protocol field에 이러한 값을 갖는 모든 IP packet은 IGMP protocol로 배달된 데이터를 갖는다.

message가 IP datagram을 encapsulation될 때 반드시 TTL=1이 된다.
이것은 IGMP 영역이 LAN이기 때문에 LAN을 벗어나 이동하는 IGMP message는 버려져야 하기 때문이다.

Datalink lyaer에서의 Encapsulation
network layer에서 IP packet에서 IGMP message는 encapsulation되고, IP packet으로 취급된다. 그러나 IP packet은 multicast IP 주소를 가지고 있기 때문에 ARP protocol은 data link layer에서  packet의 앞쪽에서 상응하는 MAC주소를 찾을 수 없다.

때문에 data link layer의 물리적 멀티캐스트 지원에 의존하게 된다.

물리적 멀티캐스트 지원 및 비지원

대부분의 LAN들은 물리적 멀티캐스트 주소지정을 지원한다. Ethernet도 그중의 하나이다

그러나 대부분의 WAN은 물리적 멀티캐스트 주소를 지원하지 않는다. 이런 네트워크를 통해서 Multicast packet을 보내려면 터널링이라 불리는 과정을 사용한다. 터널링에서 Multicast packet은 Unicast packet으로 encapsulation되고 네트워크를 통해서 전송된다. 여기에서 packet은 반대편에서 Multicast packet으로 나타난다.