# Internet Group Management Protocol (IGMP) ## Multicast Multicast allows source send messages to a group of destinations/receivers by flooding multicast traffic to all the ports in a broadcast domain (or the VLAN equivalent). ps. There are three types of network transmissions: Braodcast, Multicast, and Unicast. ![](https://i.imgur.com/p9hwQ1t.png) ## IGMP Introduction - IGMP, an intergrated part of **IP multicast**, operates between a **host** and a **local multicast router** on IPv4 networks to establish multicast group memberships. - Multicast Sender: **Stream Source**, Hosts: **Receiver** - Multicast management on **IPv6** networks is handled by **Multicast Listener Discovery (MLD)**. - It allows stream source transmits packets to a selected and dynamic group of hosts by referring **one class D address**. ![](https://i.imgur.com/UJRtg7j.png) - Applications: **One-to-many networking applicastions** such as online streaming vedio and gaming. - Benifits: - Prevent hosts on a local network from receiving multicast traffic they haven't explicitly joined since multicast uses flooding to all ports in a local network. - Conserving **bandwidth** on communication links: *5 Unicast packets are sent to receiver from source -> 1 packet (flooding)* ![](https://i.imgur.com/EeLbtpX.png) ## Dynamic Multicasting Keywords: **IGMP membership query** & **IGMP snooping** ### Layer 3 Devices (Routers or Switches) - Multicasts are sent to which **Subnet** - maintain **Multicast routing tables**. - **IGMP membership queries**, aka IGMP general queries, are sent for confirming any port want to receive multicast messages. (QA: Only router? Will switches? A: Yes, switch send general queries when ports join/leave a multicast group table) - This mechanism will automatically executes in a period of time (severl seconds by defualt) - IGMP general queries from the IGMP querier must be unconditionally forwarded by all switches involved in IGMP snooping. - Routers/ layer 3 Switches listen **join/leave messages** from clients then update routing tables - 看不懂就 drop 掉 ### Layer 2 Devices (Switches) - Multicasts are sent to which **host** - Layer 2 devices maintain **Multicast group tables** and manage it by **port**. - **Dynamically forward the traffic to only the ports participations in the group.** - **IGMP snooping listen to IGMP network traffic between hosts and routers and maintain a map of which links need which IP multicast transmission.** - IGMP snooping with **proxy reporting (or report suppression)** actively filters IGMP packets in order to reduce load on the multicast router. A switch determines the router need the join/leave information or not (depens on will it affect the status of the group or not from the router's point of view ). - IGMP membership queries when **ports** join/leave Multicast group tables - If no join/leave messages -> **flooding** - Using RSTP,RTP,RTCP protocols at the first time. If host can reads packets then take it. (AQ: PIM?) - 看不懂就 snooping ## Communication address ![](https://i.imgur.com/y0FAnmc.png) ### IP based 224-239 (**Class D**): All Multicast routers ![](https://i.imgur.com/A3hsRe4.png) - 224.xxx.xxx.xxx - 239.xxx.xxx.xxx - Overlapping problems such as 224.1.10.10 and 224.129.10.10 has the same corresponding multicast MAC address. - Moxa's products MAC address: 01:00:5E:xx:xx:xx *### BPDU based* ## IGMP Versions ### v1 - Defines **Querier, Host**, and Join mechanism - Routers send **queries** to **224.0.0.1** (all multicast-cabable hosts). (QA: 送什麼?送完會發生甚麼事?) - **Membership reports** are sent to the group's multicast address. (QA:內容?) - 尚未有 leave 機制 ### v2 - Accelerates the process of leaving a group and adjusts other timeouts. - Hosts send **leave-group** messages to **224.0.0.2** (all Multicast routers). - **Group-specific** queries are sent to the group's multicast address. - Introduces a means for routers to select an IGMP querier for the network. ### v3 - Introduces **source-specific** multicast. - In addition to the Rx expressing interest in traffic to a multicast address, the Rx expresses interest in receiving traffic from only specific source sending to that multicast address. - Relieves the network of discovering many multicast sources - Reduces the amout of multicast routing information that the network must maintain - Membership reports are sent to **224.0.0.22**. - *Black/Whitelist, Specific source, include/exclude, router alert(Without reading payload)* ![](https://i.imgur.com/bii88fQ.png) ### Messages **General membership queries**: multicast routers -> routers/switches. - These queries are sent for confirming any port want to receive multicast messages. - 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. - Layer 3 devices kepp track of which ports belong to which Multicast groups. **Group-specific membership queries**: routers -> routers/switches - Used for determining the reception state for a particular multicast address **Group-and-source-specific queries**: routers -> routers/switches - 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**: multicast receivers -> switche - In response to a membership query or asynchronously when first registering for a multicast group **Leave group messages**: multicast receivers -> switche - When specified multicast transmissions are no longer needed at the receiver ![](https://i.imgur.com/yODPMs5.png) **Group Address** 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.* (QA: What's GQ? general membership query?) ![](https://i.imgur.com/PCNFJCB.png) ![](https://i.imgur.com/3BQIxhe.png) ![](https://i.imgur.com/0Vu5DAM.png) ## Practices 1. DA (224.10.7.100) 換算 Ethernet Multicast Add. - Convert the last 3 octects to binary: 0000.1010.0000.0111.0110.0100 - Change the leftmost bit to 0, if it's not already 0: 0000.1010.0000.0111.0110.0100 - Convert each nibble into hex: 0a-07-64 - Prepend Moxa's ID 01-00-5e: 01-00-5e-0a-07-64 3. H/W 會遇到什麼問題&怎麼設定 ## References - [Internet Group Management Protocol](https://en.wikipedia.org/wiki/Internet_Group_Management_Protocol) - [IGMP snooping](https://en.wikipedia.org/wiki/IGMP_snooping) - Reverse Path Forwarding (RPF) Check: Avoides duplicate copy of packets. ![](https://i.imgur.com/sJVJkxV.png) - ?? ![](https://i.imgur.com/EBrFqWV.png) - Prune messages: Avoides duplicate copy of packets