簡介
Internet Group Management Protocol
互聯網組管理協議,負責IPv4組播成員管理的協議
在接收者主機和組播路由器之間交互IGMP報文實現組成員的管理功能,建立、維護組播組成員關系。
IGMP報文封裝在IP報文中
三個版本:IGMPv1、IGMPv2、IGMPv3 默認v2
- IGMPv3可以直接應用於SSM模型
- 而IGMPv1、IGMPv2需要IGMP SSM Mapping技術支持才可以應用於SSM模型
一、IGMPv1工作原理
兩種報文
1.普遍組查詢報文(General Query):查詢器向共享網絡上的所有主機和路由器發送查詢報文,了解哪些組播組存在成員
2.成員報告報文(Report):主機向查詢器發送的報告報文,用於申請加入某個組播組或者應答查詢報文
IGMPv1報文格式
64bit
Version(3bit) + Type(4bit) + Unused(8bit) + Checksum(16bit) + Group Address(32bit)
字段 | 說明 |
---|---|
Version | IGMP版本 |
Type | 報文類型兩種取值:0x1普遍組查詢報文;0x2成員報文報文 |
Unused | IGMPv1中為0 |
Checksum | 校驗和,校驗IGMP報文長度 |
Group Address | 組播組地址,普遍組查詢報文中為0、成員報告報文中該字段為成員加入的組播組地址 |
工作機制
1.查詢機制
路由器側完成(查詢器)
發送目的IP為224.0.0.1的普遍組查詢報文(周期60s)
multicast routing-enable //激活組播路由功能
int g0/0/1 //進入連接成員的接口
pim sm //用於選舉查詢器
igmp enable //激活IGMP
igmp version 1 //修改版本(默認為版本2)
v1版本,默認不自動選舉查詢器
- 由PIM協議的DR充當
- DR選舉規則:先比較優先級,再比較IP地址,越大越優
普遍組查詢報文內容
-
Version=1
-
Type=0x2
-
Group Address=0.0.0.0
2.響應機制
1.主動響應
- 成員主動向上發送成員報告報文
- 成員報告報文內容
- 加入的組播組地址
- 成員報告報文內容
2.被動響應
- 成員收到普遍組查詢報文后才發送成員報告報文
- 成員報告報文內容:
- 加入的組播組地址
- 查詢器的IP地址
- 成員報告報文內容:
- 被動響應存在響應抑制機制
- 接受者收到普遍組查詢報文后,開啟定時器(定時器時間隨機在1-10s內選擇),定時器超時后才會發送成員報告報文
- 定時器為超時
- 收到相同組的成員報告報文,執行響應抑制,不發送成員報告報文
- 收到不同組的成員報告報文,繼續等待定時器超時
- 定時器為超時
- 響應抑制機制可以減少成員報告報文的交互
- 接受者收到普遍組查詢報文后,開啟定時器(定時器時間隨機在1-10s內選擇),定時器超時后才會發送成員報告報文
3.離開機制
靜默離開
- 成員離組不會發送任何報文
查詢器會維護該組成員關系,130s后,老化,刪除
- 130s:2*普遍組查詢時間120s + 響應抑制時間10s
在130s內組播路由器會一直下發該組流量,造成浪費
缺點:浪費帶寬資源
IGMPv1存在的問題
1.自身不選舉查詢器,需要依賴PIM協議
2.靜默離開
3.響應時間范圍太小
二、IGMPv2工作原理
IGMPv2工作流程與IGMPv1大體一致
四種報文
1.普遍組查詢報文(General Query)
2.成員報告報文(Report)
3.成員離開報文(Leave):宣告自己離開某個組播組,成員離開組播組時主動向查詢器發送
4.特定組查詢報文(Group-Specific Query):查詢某個組播組是否還存在成員,查詢器向共享網段內指定組播組發送的查詢報文
IGMPv2報文格式
Type(8bit) + Max Response Time(8bit) + Checksum(16bit) + Group Address(32bit)
-
Type:報文類型
- 0x11:查詢報文,普遍組查詢報文或特定組查詢報文
- 0x12:IGMPv1成員報告報文
- 0x16:IGMPv2成員報告報文
- 0x17:成員離開報文
-
Max Response Time:最大響應時間
- 成員主機收到普遍組查詢報文后,需要在最大響應時間內做出回應
- 僅在IGMP查詢報文中有效
工作機制
IGMPv2針對IGMPv1的三個問題都做了改進
1.查詢機制
周期60s發送查詢報文
自身選舉查詢器(改進一)
- 通過發送查詢報文選舉
- 選舉規則:IP地址越小越優
- 選舉完成后,競選失敗的成為非查詢器;非查詢器會開啟一個定時器(125s);在定時器超時前收到查詢器的查詢報文,則重置定時器,否則認為原查詢器失效,重新發起查詢器選舉
新增特定組查詢報文
- 作用:配置成員離開報文,加快收斂
- 觸發條件:收到成員離開報文后,發送
- 發送間隔:1s一次,共兩次;
- 如果兩次都沒收到任何回應刪除該組
2.響應機制
與IGMPv1一致
報文中新增最大響應時間(改進二)
-
可以控制響應抑制時間;可以根據局域網的網絡環境靈活的修改最大響應時間,可以適應多用戶主機的局域網環境。
-
##查詢器側修改 interface g0/0/1 igmp max-reponse-time 5 ##修改最大響應時間為5.0s
-
用戶主機收到查詢報文,需要在報文內的最大響應時間內隨機選取時間進行回應
- 最大響應時間范圍:1.0s--25.0s,間隔0.1s
- 特定組查詢報文最大響應時間為1.0s,不可改
問題一:普遍組查詢報文與特定組查詢報文區別?
1.報文max-reponse-time字段不一致
2.目的IP不一致,普遍組查詢報文目的IP時224.0.0.1;特定組查詢報文針對特定的組播組IP
3.普遍組查詢報文周期60s發送;特定組查詢報文收到last report的離組報文才會發送
問題二:什么時候需要講最大響應抑制時間調大,調小?
響應時間調小,加快接收者響應,應用在接收者少的情況下
響應時間調大,減少響應時間重復概率
3.離開機制
新增成員離組報文(改進三)
每台成員主機在離開組播組時,都會發送成員離組報文,報文內容包含要離開組播組的組IP
三、IGMPv3工作原理
IGMPv3用於SSM模型,接收者需要使用232.0.0.0-232.255.255.255組播組地址
四種報文
A.三種查詢報文
- 普遍組查詢報文
- 特定組查詢報文
- 特定源組查詢報文(Group-and-Source-Specific Query):查詢該組成員是否願意接收特定源發送的數據,在報文中攜帶一個或多個組播源地址
B.一種報告報文
-
成員報告報文
-
不僅包含主機想要加入的組播組,而且包含主機想要接收來自哪些組播源的數據
-
一個成員報告報文可以攜帶多個組播組信息
-
無成員離組報文,成員離組通過特定的類型的成員報告報文傳達
IGMPv3報文格式
1.查詢報文
- Type:類型;0x11
- Max Resp Code:最大響應時間;成員主機要在最大響應時間內做出回應
- Group Address:組播組地址;普遍組查詢報文中為0
- Resv:保留字段;0
- S:接收到此查詢報文的其他路由器不啟動定時器刷新功能;1
- 選舉DR完成后,未被選舉上的路由器不會開啟定時器
- QRV:查詢器健壯系數
- QQIC:查詢間隔
- Source Address:組播源地址;受Number of Source字段限制
2.報告報文
- Type:類型;0x22
- Group Record:組記錄(成員加組方式)
Group Record詳解
-
Record Type:組記錄的類型;三大類
- 當前狀態報告:對查詢報文響應,通告目前狀態和想要接收的組播源流量
- mode_is _include:只接收源地址列表包含的組播源的流量
- mode_is _exclude:只接受源地址列表不包含組播源的流量
- 源地址列表:查詢報文中Source Address字段
- 過濾模式改變報告:當組和源的關系在include和exclude切換時,通告變化
- change_to_include_mode:由exclude轉換到include
- change_to_exclude_mode:由include轉換到exclude
- 源列表改變報告
- allow_new_sources:在原有源地址列表基礎上新增組播源地址
- 如果是include狀態,則在源地址列表增加新的組播源地址
- 如果是exclude狀態,則在源地址列表刪除組播源地址
- block_old_sources:在原有源地址列表基礎上排除組播源地址
- allow_new_sources:在原有源地址列表基礎上新增組播源地址
- 當前狀態報告:對查詢報文響應,通告目前狀態和想要接收的組播源流量
-
Aux Data Len:輔助數據長度
-
Auxiliary Data:輔助數據;預留給IGMP后續擴展
工作機制
與IGMPv2幾乎一致,IGMPv3增加了主機對組播源的選擇能力
並且IGMPv3取消了響應抑制機制,因為有特定的組播源,所以成員主機可能會接受同一組播IP當不同源設備的流量,存在相同組播組地址有不同組播源的情況;
- 如果采用響應抑制機制,如果兩台成員主機對同組播組地址但不同組播源發送成員報告報文。那么一成員主機會抑制另一成員主機對不同組播源的Report信息
1.特定源組加入
成員主機發送IGMPv3報告(G1,include,(S1))給查詢器:表示僅接收源S1、組G1的組播數據
成員主機發送IGMPv3報告(G2,exclude,(S2))給查詢器:表示不接收源S2、組G2的組播數據
2.特定源組查詢
查詢器接收到成員主機發送的 change_to_include_mode或change_to_exclude_mode 后,查詢器發送特定源組查詢報文(更新源地址列表)
四、IGMP Snooping
作用:避免組播流量在二層設備泛洪,只讓組播流量從特定的接口轉發出去
缺點:安全性無法的到保障
過程:通過窺探組播路由器和接收者之間交互的IGMP報文,形成二層轉發表項,后續組播流量就會按照組播轉發表項從指定接口轉發出去
開啟IGMP snooping,響應抑制機制失效
角色
-
路由器端口:收到IGMP普遍組查詢消息或者PIM hello消息感知路由器端口
- 也可以手動指定路由器端口
-
成員端口:收到IGMP Report報文的接口被認為是動態成員端口
- 也可以手動配置成員端口
配置
igmp-snooping enable ##開啟IGMP snooping
igmp-snooping enable vlan 1 ##vlan 1使能IGMP snooping
display l2-multicast forwarding-table vlan 1 ##查看二層組播轉發表
##靜態綁定接口為路由器端口
interface e0/0/5
igmp-snooping static-router-port vlan 1
##靜態綁定接口為成員端口,加入組239.1.1.1
interface e0/0/4
l2-multicast static-group group-address 239.1.1.1 vlan 1
五、IGMP SSM MAPPING
成員主機只能運行IGMPv1或者IGMPv2,為了使其能使用SSM服務,路由器上需要提供IGMP SSM Mapping功能**
實現方式:通過在路由器上靜態配置SSM地址的映射規則,將IGMPv1和IGMPv2成員報告報文中的(*,G)轉化為對應的(S,G)信息,提供SSM組播服務
- 如果G是在ASM范圍內,只提供ASM服務
- 如果G是在SSM組地址范圍內(232.0.0.0--232.255.255.255)
- 路由器上有G對應的SSM Mapping規則,依據規則將成員報告報文中的(*,G)信息映射為(G,INCLUDE,(S1,S2))信息,提供SSM服務
- 路由器上沒有G對應的SSM Mapping規則,則無法提供SSM服務,丟棄報文
配置
##路由器上進入與成員主機同一局域網的端口,開啟SSM Mapping
interface G0/0/1
igmp enable
igmp version 3 ##使用igmpv3,為了保證接口網段內運行任意版本IGMP的成員主機都能得到SSM服務
igmp ssm-mapping enable
##路由器上配置SSM Mapping規則
igmp
ssm-mapping 232.1.1.0 255.255.255.0 200.1.1.1
##查看SSM Mapping轉換規則
display igmp routing-table
六、IGMP Proxy
通常被部署在與接入設備和成員主機之間的三層設備
場景:與用戶網段相連設備RouterB不需要運行復雜的組播協議(如PIM),如果RouterB透傳IGMP報文給RouterA,會導致RouterA管理太多用戶。當網絡中存在大量成員主機的加組/離組,產生大量的IGMP報文,從而給RouterA帶來較大的處理能力
作用:
- IGMP Proxy設備可以收集下游成員主機的IGMP報告/離開報文,同時將IGMP報告/離開報文匯總后統一發給接入IGMP查詢器
- IGMP Proxy設備也可以代理IGMP查詢器向下游成員主機發送查詢報文,維護組成員關系,基於組成員關系進行組播轉發
IGMP Proxy中定義兩種類型接口
- 上游接口(主機接口):指IGMP代理設備上配置IGMP Proxy功能的接口,該接口執行IGMP代理設備的主機行為
- 下游接口(路由器接口):IGMP代理設備上配置IGMP功能的接口,該接口執行IGMP代理設備的路由器行為
七、MLD組播偵聽者發現協議
Multicast Listerer Discovery
MLD可以理解為IGMP的IPv6版本,兩者的協議行為完全相同,區別僅僅在於報文格式
MLD報文封裝在IPv6報文中
定義:用來在IPv6成員主機和與其直接相鄰的組播路由器之間建立和維護組播組成員關系
版本
- MLDv1,對應IGMPv2
- MLDv2,對應IGMPv3
1.MLDv1
用於ASM,接收者不能指定源加入組
報文類型
- 普遍組查詢報文
- 報文發送目的地址為:FF02::1;周期125s,查詢器失效時間255s
- 特定住查詢報文
- 成員報告報文
- 成員離組報文
報文格式
報文長度:192bit
- Type:=130查詢報文;=131成員報告報文;=132成員離開報文
配置
ipv6 ##使能ipv6
multicast ipv6 routing-table ##使能ipv6組播
interface g0/0/0
ipv6 enable
ipv6 address 2001::1/64
mld enable ##使能MLD
mld version 1
mld static-group FF1E::AA ##靜態加組FF1E::AA
2.MLDv2
用於SSM模型,接收者可以在加入組時指定特定源以及過濾特定源
報文類型
兩大類
查詢報文(type=130)
- 普遍組查詢報文
- 發送目的地址:FF02::16(本網段內所有是能MLDv2的路由器都能接收)
- 特定組查詢報文
- 特定源組查詢報文
報告報文(type=143)
- 成員報告報文
報文格式