본문 바로가기
IT, PC/Protocol

IGMP snooping 이란?

by Chan_찬 2011. 1. 27.
728x90

 AP 에서는 IPTV 등에 Multicast를 지원하기 위해 필요한 프로토콜이다.

IGMP는 인터넷 컴퓨터가 멀티캐스트 그룹을 인근의 라우터들에게 알리는 수단을 제공하는 인터넷 프로토콜이다. 멀티캐스팅은 인터넷상의 한 호스트 컴퓨터가 미리 지정된 다수의 다른 컴퓨터들에게 콘텐츠를 보낼 수 있도록 허용한다. 멀티캐스팅은 현장에서 이동용 컴퓨터 사용자들의 주소록을 수정하거나, 배포 목록에 맞추어 회사의 회보를 보내는 업무, 그리고 멀티캐스트 그룹 회원을 설정함으로써 수신 파장을 맞춘 청중들에게 스트리밍 매체의 고대역폭 프로그램을 방송하는 등과 같은 일에 사용될 수 있다.

IGMP는 OSI 참조 모델에서 네트웍 계층의 일부이다.


통신 회사들이나 기타 프로젝트에 있어서 요구사항에 자주 등장하는 문구인 IGMP snooping이란 무엇인가?


IGMP snooping에 대해서 살펴보기 전에 먼저 IGMP가 무엇인지 알고 넘어가자.

IGMP란 Internet Group Management Protocol의 약자로 Internet Protocol multicast group들의 membership을 관리하는 통신 규약이다.
즉, multicast를 관리 하는것이다.

- IGMP는 IP host들과 multicast router들에 의해 사용된다.
- 송수신 규약은 아니라도 network layer 상위에서 동작하는
   IP multicast spec의 필수 구성요소이다.
- Unicast connection에 있어서 Internet Control Message Protocol에
   해당한다.
- Streaming video나 game등에 사용되며 보다 효율적인 리소스사용을
   가능하게 한다.
- IGMP는 몇 몇 공격을 받을 수도 있으며 방화벽에 의해 차단 될 수도 있다.

위 그림에서 IGMP가 사용되는 구간을 확인할 수 있다.

 여기까지 IGMP가 무엇인지 알아 보았으니 이제 IGMP snooping이 무엇인지 알아보자.

한마디로 switch가 host와 router간의 대화내용을 듣는 것이다.
그 결과 switch는 multicast traffic을 필요로 하는 client에게만 전달것이다.

- 이 대화 내용은 mutlicast network에 보내진 IGMP packet들이며 구성은
   Layer3 packet들로 되어져 있다.
- Switch안에서 IGMP snooping이 enable되면 host와 switch 혹은
   multicast router간의 IGMP packet을 분석한다.
- 주어진 multicast group에 대하여 IGMP report를 받을 땐 multicast group에
   host의 port 번호를 더하는 역할을 수행하고 IGMP가 나가면(leave) host의
   port를 제거한다.
- Mutlicast를 이해 못하는 switch는 broadcast multicast traffic을 LAN상의
   모든 포트에 뿌리지만 IGMP snooping을 이용하는 switch는 해당 traffic을
   관심있어 하는 client에게만 전달
 할 것이다.
- 상기와 같은 multicast traffic의 감소는 switch에게서 packet processing을
   줄여주어 메모리 가격을 줄여 줄 수 있으며 host에게 있어서는 network
   card나 운영체제가 네트웍상에 발생되는 모든 multicast traffic에 대하여
   filter역할을 해 주므로 workload를 줄여줄 수 있다


==================================================================================

IGMP & IGMP Snooping 

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)

728x90
728x90

'IT, PC > Protocol' 카테고리의 다른 글

HTTP/1.1 (HyperText Transfer Protocol)  (0) 2011.01.25
HTTP Protocol 구조  (0) 2011.01.25
IEEE*802.11 Wi-Fi Protocol 프로토콜  (0) 2011.01.25
HTTP Protocol 정리  (0) 2011.01.24
Buy me a coffeeBuy me a coffee

댓글