Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Internet Group Management Protocol
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Protocol for establishing multicast group memberships on IPv4 networks}} {{IPstack}} The '''Internet Group Management Protocol''' ('''IGMP''') is a [[communications protocol]] used by [[Host (network)|hosts]] and adjacent [[Router (computing)|routers]] on [[IPv4 network]]s to establish multicast group memberships. IGMP is an integral part of [[IP multicast]] and allows the network to direct multicast transmissions only to hosts that have requested them. IGMP can be used for one-to-many networking applications such as online [[streaming video]] and [[Online game|gaming]], and allows more efficient use of resources when supporting these types of applications. IGMP is used on [[IPv4]] networks. Multicast management on [[IPv6]] networks is handled by [[Multicast Listener Discovery]] (MLD) which is a part of [[ICMPv6]] in contrast to IGMP's bare IP encapsulation. ==Architecture== A network designed to deliver a multicast service using IGMP might use this basic architecture: [[File:IGMP basic architecture.png|580px]] IGMP operates between a host and a local multicast router. [[Network switch|Switches]] featuring [[IGMP snooping]] also derive useful information by observing these IGMP transactions. [[Protocol Independent Multicast]] (PIM) is then used between the local and remote multicast routers to direct multicast traffic from hosts sending multicasts to hosts that have registered through IGMP to receive them. IGMP operates on the [[network layer]] (layer 3), just the same as other network management protocols like [[ICMP]].<ref name="Forouzan 2012">{{cite book|last1=Forouzan|first1=Behrouz A.|title=Data Communications and Networking|date=2012|publisher=McGraw-Hill|location=New York, NY|isbn=978-0073376226|page=658|edition=5th}}</ref> The IGMP protocol is implemented on hosts and within [[Router (computing)|routers]]. A host requests membership to a group through its local router while a router listens for these requests and periodically sends out subscription queries. A single router per subnet is elected to perform this querying function. Some [[multilayer switch]]es include an IGMP querier capability to allow their IGMP snooping features to work in the absence of an IGMP-capable router in the layer 2 network. IGMP is vulnerable to some attacks,<ref>Spoofed [http://www.securityfocus.com/bid/5020/info IGMP report denial of service] vulnerability.</ref><ref>{{cite web |title=Fragmented IGMP Packet May Promote "Denial of Service" Attack |url=http://support.microsoft.com/default.aspx?scid=kb;en-us;238329&sd=tech |archive-url=https://web.archive.org/web/20050213091318/http://support.microsoft.com/default.aspx?scid=kb;en-us;238329&sd=tech |archive-date=2005-02-13 |date=Dec 20, 2004}}</ref><ref>[http://www.securemulticast.org/GSEC/gsec3_ietf53_SecureIGMP1.pdf#search=%22igmp%20attacks%22 IGMP Security Problem Statement and Requirements] {{webarchive|url=https://web.archive.org/web/20061013122139/http://www.securemulticast.org/GSEC/gsec3_ietf53_SecureIGMP1.pdf |date=2006-10-13 }}.</ref><ref>{{cite web |title=Vulnerability in TCP/IP Could Allow Denial of Service (MS06-007, 913446)) |website=[[Microsoft]] |url=http://www.microsoft.com/technet/security/Bulletin/MS06-007.mspx |archive-url=https://web.archive.org/web/20070205172614/https://www.microsoft.com/technet/security/Bulletin/MS06-007.mspx |archive-date=2007-02-05 |date=February 14, 2006}}</ref> and firewalls commonly allow the user to disable it if not needed. ==Versions== There are three versions of IGMP.<ref name="Cisco Multicast">{{citation |url=https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3750x_3560x/software/release/15-2_2_e/multicast/configuration_guide/b_mc_1522e_3750x_3560x_cg/b_mc_3750x_3560x_chapter_011.html |title=IP Multicast Routing Configuration Guide |publisher=[[Cisco]] |access-date=2017-05-27 |pages=25β28}}</ref> IGMPv1 was defined in 1989.{{Ref RFC|1112}} IGMPv2, defined in 1997,{{Ref RFC|2236}} improves IGMPv1 by adding the ability for a host to signal a desire to leave a multicast group. In 2002, IGMPv3 improved IGMPv2 by supporting [[source-specific multicast]]<ref>{{cite web |url=http://www.javvin.com/protocolIGMP.html |title=Internet Group Management Protocol Overview |publisher=Javvin |access-date=2010-11-18 |url-status=dead |archive-url=https://web.archive.org/web/20101110115314/http://www.javvin.com/protocolIGMP.html |archive-date=2010-11-10 }}</ref> and introduces membership report aggregation.{{Ref RFC|3376}} The support for source-specific multicast was improved in 2006.{{Ref RFC|4604}} The three versions of IGMP are backward compatible. A router supporting IGMPv3 can support clients running IGMPv1, IGMPv2, and IGMPv3. IGMPv1 uses a query-response model. Queries are sent to {{IPaddr|224.0.0.1}}. Membership reports are sent to the group's multicast address. IGMPv2 accelerates the process of leaving a group and adjusts other timeouts. Leave-group messages are sent to {{IPaddr|224.0.0.2}}. A group-specific query is introduced. Group-specific queries are sent to the group's multicast address. A means for routers to select an IGMP querier for the network is introduced. IGMPv3 introduces [[source-specific multicast]] capability. Membership reports are sent to {{IPaddr|224.0.0.22}}. ==Messages== There are several types of IGMP messages: ; General membership queries: Sent by multicast routers to determine which multicast addresses are of interest to systems attached to the network(s) they serve to refresh the group membership state for all systems on its network. ; Group-specific membership queries: Used for determining the reception state for a particular multicast address. ; Group-and-source-specific queries: Allow the router to determine if any systems desire reception of messages sent to a multicast group from a source address specified in a list of unicast addresses. ; Membership reports: Sent by multicast receivers in response to a membership query or asynchronously when first registering for a multicast group. ; Leave group messages: Sent by multicast receivers when specified multicast transmissions are no longer needed at the receiver. IGMP messages are carried in bare IP packets with [[IP protocol number]] 2.{{Ref RFC|3376|rsection=4}} Similar to the [[Internet Control Message Protocol]], there is no [[transport layer]] used with IGMP messaging. ===IGMPv2 messages=== {{APHD|start|title=IGMPv2 packet structure{{Ref RFC|2236|rsection=2}}}} {{APHD|0|bits1=8|field1=Type|bits2=8|field2=Maximum Response Time|bits3=16|field3=Checksum}} {{APHD|4|bits1=32|field1=Group Address}} {{APHD|end}} ;{{APHD|def|name=Type|length=8 bits|text=Indicates the message type as follows:}} :{| class="wikitable" |- ! Message ! Type value |- | Membership Query | {{Mono|0x11}} |- | IGMPv1 Membership Report | {{Mono|0x12}} |- | IGMPv2 Membership Report | {{Mono|0x16}} |- | IGMPv3 Membership Report | {{Mono|0x22}} |- | Leave Group | {{Mono|0x17}} |} ;{{APHD|def|name=Maximum Response Time|length=8 bits|text=Specifies the required responsiveness of replies to a Membership Query (0x11). This field is meaningful only in Membership Query; in other messages, it is set to 0 and ignored by the receiver. The field specifies time in units of 0.1 second (a field value of 10 specifies 1 second). Larger values reduce IGMP traffic burstiness and smaller values improve protocol responsiveness when the last host leaves a group.{{Ref RFC|2236|rsection=2.2}}}} ;{{APHD|def|name=[[Internet checksum|Checksum]]|length=16 bits|text=This is the 16-bit [[ones' complement]] of the ones' complement sum of the entire IGMP message. Computed before sending, with this field set to zero. When re-computed on reception of the packet, this field is included, and the result should be zero.}} ;{{APHD|def|name=Group Address|length=32 bits|text=This is the multicast address being queried when sending a Group-Specific or Group-and-Source-Specific Query. The field is zeroed when sending a General Query.}} :The message is sent to the following IP [[multicast address]]es:{{Ref RFC|2236|rsection=9}} :{| class="wikitable" |- ! Message type !! Multicast address |- | General Query || All hosts ({{IPaddr|224.0.0.1}}) |- | Group-Specific Query || The group being queried |- | Membership Report (all IGMP versions) || The group being reported |- | Leave Group || All routers ({{IPaddr|224.0.0.2}}) |} ===IGMPv3 membership query=== {{APHD|start|title=IGMPv3 membership query{{Ref RFC|3376|rsection=4.1}}}} {{APHD|0|bits1=8|field1=Type|value1=0x11|bits2=8|field2=Maximum Response Code|bits3=16|field3=Checksum}} {{APHD|4|bits1=32|field1=Group Address}} {{APHD|8|bits1=4|field1=Reserved|bits2=1|field2=S|hint2=Suppress Router-side Processing|bits3=3|field3=QRV|hint3=Querier's Robustness Variable|bits4=8|field4=QQIC|hint4=Querier's Query Interval Code|bits5=16|field5=Number of Sources (N)}} {{APHD|12|bits1=32|background1=linen|field1=Source Address[1]}} {{APHD|16|bits1=32|background1=linen|field1=Source Address[2]}} {{APHD|999|bits1=32|background1=linen|field1=⋮}} {{APHD|999|hoctets=8+4n|hbits=64+32n|bits1=32|background1=linen|field1=Source Address[n]}} {{APHD|end}} ;{{APHD|def|name=Type|length=8 bits|text=Indicates the type of the packet. A value of {{Mono|0x11}} indicates ''IGMPv3 Membership Query''.}} ;{{APHD|def|name=Maximum Response Code|length=8 bits|text=This field is used to compute the Maximum Response Time (in 1/10 second increments) allowed before sending a responding report. If the number is below 128, the value is used directly. If the value is 128 or more, it is interpreted as an exponent and mantissa.}} ;{{APHD|def|name=[[Internet checksum|Checksum]]|length=16 bits|text=This is the 16-bit [[ones' complement]] of the ones' complement sum of the entire IGMP message. Computed before sending, with this field set to zero. When re-computed on reception of the packet, this field is included, and the result should be zero.}} ;{{APHD|def|name=Group Address|length=32 bits|text=This is the [[multicast address]] being queried when sending a Group-Specific or Group-and-Source-Specific Query. The field is zeroed when sending a General Query.}} ;{{APHD|def|name=Reserved|length=4 bits|text=This field is reserved. It should be zeroed when sent and ignored when received.}} ;{{APHD|def|name=Suppress Router-side Processing|short=S|length=1 bit|text=When this flag is set, it indicates to receiving routers that they are to suppress the normal timer updates.}} ;{{APHD|def|name=Querier's Robustness Variable|short=QRV|length=3 bits|text=If this is non-zero, it contains the Robustness Variable value used by the sender of the query. Routers should update their Robustness Variable to match the most recently received query unless the value is zero.}} ;{{APHD|def|name=Querier's Query Interval Code|short=QQIC|length=8 bits|text=This code is used to specify the Query Interval value (in seconds) used by the querier. If the number is below 128, the value is used directly. If the value is 128 or more, it is interpreted as an exponent and mantissa.}} ;{{APHD|def|name=Number of Sources|short=N|length=16 bits|text=This field specifies the number of source addresses present in the query. For General and Group-Specific Queries, this value is zero. For Group-and-Source-Specific Queries, this value is non-zero, but limited by the network's MTU.}} ;{{APHD|def|name=Source Address [i]|length=32 bits|text=The Source Address [i] fields are a vector of ''n'' IP unicast addresses, where n is the value in the Number of Sources (N) field.}} ==Implementations== [[FreeBSD]],<ref group=note>IGMPv3 was added to FreeBSD in version 8.0.</ref> [[Linux]]<ref group=note>IGMPv3 was added in the Linux 2.5 kernel series.</ref> and [[Windows]] all support IGMP on the host side. ==See also== * [[Internet Group Management Protocol with Access Control]] ==Notes== {{Reflist|group=note}} ==References== {{Reflist}} {{Authority control}} [[Category:Internet protocols]] [[Category:Internet Standards]] [[Category:Internet layer protocols]] [[Category:Network layer protocols]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:APHD
(
edit
)
Template:Authority control
(
edit
)
Template:Citation
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:IPaddr
(
edit
)
Template:IPstack
(
edit
)
Template:Mono
(
edit
)
Template:Ref RFC
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Webarchive
(
edit
)