인터넷 그룹 관리 프로토콜

Internet Group Management Protocol

IGMP(Internet Group Management Protocol)는 IPv4 네트워크상의 호스트 및 인접 라우터가 멀티캐스트그룹 멤버쉽을 확립하기 위해 사용하는 통신 프로토콜입니다.IGMP는 IP 멀티캐스트의 일부이며, 네트워크가 멀티캐스트 전송을 요구한 호스트에게만 전송할 수 있습니다.

IGMP는 온라인 스트리밍 비디오 및 게임 등의 일대다 네트워킹 애플리케이션에 사용할 수 있으며 이러한 유형의 애플리케이션을 지원할 때 리소스를 보다 효율적으로 사용할 수 있습니다.

IGMP 는, IPv4 네트워크상에서 사용됩니다.IPv6 네트워크에서의 멀티캐스트 관리는 IGMP의 베어 IP 캡슐화와는 대조적으로 ICMPv6의 일부인 Multicast Listener Discovery(MLD)에 의해 처리됩니다.

아키텍처

IGMP를 사용하여 멀티캐스트서비스를 제공하도록 설계된 네트워크에서는 다음 기본 아키텍처를 사용할 수 있습니다.

IGMP basic architecture.png

IGMP는 호스트와 로컬멀티캐스트라우터 사이에서 동작합니다.IGMP 스누핑 기능을 갖춘 스위치도 이러한 IGMP 트랜잭션을 감시함으로써 유용한 정보를 얻을 수 있습니다.Protocol Independent Multicast(PIM)는 로컬 및 리모트멀티캐스트라우터 간에 사용되며 멀티캐스트를 송신하는 호스트에서 멀티캐스트트래픽을 수신하기 위해 IGMP를 통해 등록된 호스트로 전송합니다.

IGMP는 ICMP와 [1]같은 다른 네트워크 관리 프로토콜과 마찬가지로 네트워크 계층(레이어 3)에서 작동합니다.

IGMP 프로토콜은 호스트 및 라우터 에 구현됩니다.호스트는 로컬라우터를 통해 그룹에 멤버쉽을 요구하고 라우터는 이러한 요구를 리슨하여 정기적으로 서브스크립션쿼리를 송신합니다.이 쿼리 기능을 실행하기 위해 서브넷별로 1개의 라우터가 선택됩니다.일부 멀티레이어 스위치에는 레이어 2 네트워크에 IGMP 대응 라우터가 없는 경우에도 IGMP 스누핑 기능을 사용할 수 있도록 IGMP 쿼리어 기능이 포함되어 있습니다.

IGMP는 일부 [2][3][4][5]공격에 취약하며 일반적으로 방화벽에서는 사용자가 IGMP를 사용하지 않도록 설정할 수 있습니다.

버전

IGMP에는 [6]3가지 버전이 있습니다.IGMPv1은 다음과 같이 정의됩니다. RFC1112, IGMPv2는 RFC2236에 의해 정의되어 있으며, IGMPv3는 RFC3376에 의해 최초로 정의되어 있습니다.RFC4604송신원 고유의 멀티 캐스트를 보다 효과적으로 지원하기 위해 IGMPv3와 MLDv2를 모두 갱신하고 있습니다.IGMPv2는 호스트가 멀티캐스트그룹을 탈퇴하고 싶다는 신호를 보내는 기능을 추가하여 IGMPv1을 개선합니다.IGMPv3는 송신원 고유[7] 멀티캐스트를 지원함으로써 IGMPv2를 개선하고 멤버십리포트 집약을 도입합니다.

이들 버전은 하위 호환성이 있습니다.IGMPv3를 지원하는 라우터는 IGMPv1, IGMPv2 및 IGMPv3를 실행하는 클라이언트를 지원할 수 있습니다.IGMPv1은 쿼리 응답 모델을 사용합니다.쿼리는 224.0.0.1로 전송됩니다.멤버십 리포트는 그룹의 멀티캐스트주소로 송신됩니다.IGMPv2는 그룹 탈퇴 프로세스를 고속화하고 기타 타임아웃을 조정합니다.탈퇴 그룹 메시지는 224.0.0.2로 전송됩니다.그룹 고유의 쿼리가 도입되었습니다.그룹 고유의 쿼리는 그룹의 멀티캐스트주소로 송신됩니다.라우터가 네트워크의 IGMP 쿼리어를 선택하는 수단이 도입되었습니다.IGMPv3 에서는, 송신원 고유의 멀티 캐스트 기능이 도입되고 있습니다.멤버십 리포트는 224.0.0.22 에 송신됩니다.

메시지

IGMP 메시지에는 몇 가지 유형이 있습니다.

일반 멤버십 쿼리
멀티캐스트 라우터는 네트워크에 접속되어 있는 시스템의 대상 멀티캐스트주소를 판별하기 위해 멀티캐스트라우터에 의해 송신되어 네트워크상의 모든 시스템의 그룹 멤버쉽 상태를 갱신합니다.
그룹별 멤버십 쿼리
특정 멀티캐스트주소의 수신 상태를 판별하기 위해 사용됩니다.
그룹 및 소스 고유의 쿼리
라우터가 유니캐스트주소 목록에 지정된 송신원주소로부터 멀티캐스트그룹으로 송신되는 메시지를 수신할 필요가 있는지 여부를 판단할 수 있도록 한다.
멤버십 리포트
멤버십 쿼리에 대한 응답 또는 멀티캐스트그룹에 처음 등록할 때 멀티캐스트리시버에 의해 송신됩니다.
그룹 메시지를 남기다
수신측에서 지정된 멀티캐스트 전송이 필요 없게 되었을 때 멀티캐스트리시버에 의해 송신됩니다.

IGMP 메시지는 IP 프로토콜 [8]: §4 번호2의 베어 IP 패킷으로 전송됩니다.Internet Control Message Protocol과 마찬가지로 IGMP 메시징에서는 트랜스포트 레이어가 사용되지 않습니다.

IGMPv2 메시지

IGMPv2 패킷[9]: §2 구조
비트 오프셋 0–7 8–15 16–31
0 유형 최대 응답 시간 체크섬
32 그룹 주소

장소:

유형
메시지 유형을 다음과 같이 나타냅니다.
IGMP 메시지유형 값
메세지 유형값
멤버십 쿼리 0x11
IGMPv1 멤버십리포트 0x12
IGMPv2 멤버십리포트 0x16
IGMPv3 멤버십리포트 0x22
그룹 탈퇴 0x17
최대 응답 시간
구성원 쿼리(0x11)에 대한 응답에 필요한 응답을 지정합니다.이 필드는 Membership Query에서만 의미가 있습니다.다른 메시지에서는 0으로 설정되어 수신자가 무시합니다.필드는 0.1초 단위로 시간을 지정합니다(10 필드의 값은 1초를 나타냅니다).값이 클수록 IGMP 트래픽 버스트성이 감소하고 값이 작을수록 마지막 호스트가 [9]: §2.2 그룹을 떠날 때 프로토콜 응답성이 향상됩니다.
그룹 주소
이것은 그룹 고유 쿼리 또는 그룹 앤 소스 고유 쿼리를 전송할 때 쿼리되는 멀티캐스트주소입니다일반 쿼리를 전송할 때 필드가 0으로 설정됩니다.

메시지는, 다음의 IP 행선지 주소를 사용해 송신됩니다.

IGMPv2 수신처[9]: §9 주소
메시지 유형 멀티캐스트 어드레스
일반 쿼리 모든 호스트(224.0.0.1)
그룹 고유의 쿼리 쿼리 대상 그룹
멤버십 리포트(모든 IGMP 버전) 보고되는 그룹
그룹 탈퇴 모든 라우터(224.0.0.2)

IGMPv3 멤버십 쿼리

IGMPv3 멤버십[8]: §4.1 쿼리
비트 오프셋 0–3 4 5–7 8–15 16–31
0 유형 = 0x11 최대 응답 코드 체크섬
32 그룹 주소
64 리셋 S QRV QQIC 소스 수(N)
96 송신원주소 [1]
128 송신원주소 [2]
. . .
송신원주소 [N]

장소:

최대 응답 코드
이 필드는 응답 보고서를 보내기 전에 허용되는 최대 시간(1/10초 단위)을 지정합니다.수치가 128 미만일 경우 값이 직접 사용됩니다.값이 128 이상이면 지수 및 가수로서 해석됩니다.
체크섬
이것은 IGMP 메시지 전체의 16비트의 보완합입니다.
그룹 주소
이것은 그룹 고유 쿼리 또는 그룹 앤 소스 고유 쿼리를 전송할 때 쿼리되는 멀티캐스트주소입니다일반 쿼리를 전송할 때 필드가 0으로 설정됩니다.
리셋
이 필드는 예약되어 있습니다.송신할 때는 제로로 해, 수신할 때는 무시해 주세요.
S(Suppress Router-side Processing) 플래그
이 플래그가 설정되어 있는 경우는, 통상의 타이머 갱신을 억제하는 것을 수신 라우터에 나타냅니다.
QRV(Querier의 견고성 변수)
이 값이 0이 아닌 경우 쿼리 송신자가 사용하는 Robustness Variable 값이 포함됩니다.값이 0이 아닌 한 라우터는 최근에 수신한 쿼리와 일치하도록 Robustness 변수를 갱신해야 합니다.
QQIC(Querier의 쿼리 간격 코드)
이 코드는 쿼리어가 사용하는 쿼리 간격 값(초)을 지정하기 위해 사용됩니다.수치가 128 미만일 경우 값이 직접 사용됩니다.값이 128 이상이면 지수 및 가수로서 해석됩니다.
소스 수(N)
쿼리에 존재하는 송신원주소의 수를 지정합니다.General 쿼리와 Group-Specific 쿼리의 경우 이 값은 0입니다.그룹 및 소스 고유 쿼리의 경우 이 값은 0이 아니지만 네트워크의 MTU에 의해 제한됩니다.
소스 주소 [i]
[ Source Address [ i ]필드는 n개의 IP 유니캐스트주소의 벡터입니다.여기서 n은 Number of Source(N) 필드의 값입니다.

실장

FreeBSD,[note 1] Linux[note 2]Windows 운영체제는 호스트 측에서 IGMP를 지원합니다.

「 」를 참조해 주세요.

메모들

  1. ^ IGMPv3가 FreeB에 추가되었습니다.버전 8.0의 SD
  2. ^ IGMPv3는 Linux 2.5 커널 시리즈에 추가되었습니다.

레퍼런스

  1. ^ Forouzan, Behrouz A. (2012). Data Communications and Networking (5th ed.). New York, NY: McGraw-Hill. p. 658. ISBN 978-0073376226.
  2. ^ 스푸핑된 IGMP 보고서 서비스 거부 취약성.
  3. ^ "Fragmented IGMP Packet May Promote "Denial of Service" Attack". Dec 20, 2004. Archived from the original on 2005-02-13.
  4. ^ 2006-10-13년에 Wayback Machine에서 아카이브된 IGMP 보안 문제 스테이트먼트요건
  5. ^ "Vulnerability in TCP/IP Could Allow Denial of Service (MS06-007, 913446))". February 14, 2006. Archived from the original on 2007-02-05.
  6. ^ IP Multicast Routing Configuration Guide, Cisco, pp. 25–28, retrieved 2017-05-27
  7. ^ "Internet Group Management Protocol Overview". Javvin. Archived from the original on 2010-11-10. Retrieved 2010-11-18.
  8. ^ a b Internet Group Management Protocol, Version 3. doi:10.17487/RFC3376. RFC 3376.
  9. ^ a b c Internet Group Management Protocol, Version 2. doi:10.17487/RFC2236. RFC 2236.