發布時間:2022-08-22 16:28:31  訪問次數:532
發布人:優洱士電腦維修
 
最全面的IGMP協議總結
一、IGMP 簡介
IGMP(Internet Group Management Protocol)互聯網組管理協議是TCP/IP 協議族中負責IP組播成員管理的協議,用來在IP主機和與其直接相鄰的組播路由器之間建立、維護組播組成員關系。
到目前為止,IGMP 有三個版本:
IGMPv1(由RFC 1112 定義)
IGMPv2(由RFC 2236 定義)
IGMPv3(由RFC 3376 定義)
所有版本的IGMP 都支持ASM(Any-Source Multicast,任意信源組播)模型;IGMPv3 可以直接應用于SSM(Source-Specific Multicast,指定信源組播)模型,而IGMPv1 和IGMPv2 則需要在IGMP SSM Mapping 技術的支持下才能應用于SSM 模型。
二、IGMP 工作機制
1. IGMPv1 工作機制
IGMPv1 主要基于查詢和響應機制來完成對組播組成員的管理。當一個網段內有多臺組播路由器時,由于它們都能從主機那里收到IGMP 成員關系報告報文(Membership Report Message)。
因此,只需其中一臺路由器發送IGMP 查詢報文(Query Message)就足夠了。這時就需要有一個查詢器(Querier)的選舉機制來確定由哪臺路由器作為IGMP查詢器。
對于IGMPv1 來說,由組播路由協議(如PIM)選舉出唯一的組播信息轉發者DR(Designated Router,指定路由器)作為IGMP 查詢器。
IGMP 查詢相應示意圖
如上圖所示,假設Host B與Host C想要收到發往組播組G1 的組播數據,而Host A想要收到發往組播組G2 的組播數據,那么主機加入組播組以及IGMP查詢器(Router B)維護組播組成員關系的基本過程如下:
1)主機將主動發送IGMP 成員關系報告報文到其要加入的組播組,以聲明加入,而不必等待IGMP查詢器發來的IGMP 查詢報文;
2)IGMP 查詢器周期性地以組播方式,向本地網段內的所有主機與路由器發送IGMP 查詢報文(目的地址為224.0.0.1);
3)在收到該查詢報文后,關注G1 的Host B 與Host C 其中之一(這取決于誰的延遲定時器先超時),譬如Host B 會首先以組播方式向G1 發送IGMP 成員關系報告報文,以宣告其屬于G1。
由于本地網段中的所有主機和路由器都能收到Host B 發往G1 的報告報文,因此當Host C 收到該報告報文后,將不再發送同樣針對G1的報告報文,因為IGMP 路由器(Router A和Router B)已知道本地網段中有對G1 感興趣的主機了。
這個機制稱為主機上的IGMP 成員關系報告抑制機制,該機制有助于減少本地網段的信息流量;
4)與此同時,由于Host A 關注的是G2,所以它仍將以組播方式向G2 發送報告報文,以宣告其屬于G2;
5)經過以上的查詢和響應過程,IGMP 路由器了解到本地網段中有G1 和G2 的成員,于是由組播路由協議(如PIM)生成(*,G1)和(*,G2)組播轉發項作為組播數據的轉發依據,其中的“*”代表任意組播源;
6)當由組播源發往G1 或G2 的組播數據經過組播路由到達IGMP 路由器時,由于IGMP 路由器上存在(*,G1)和(*,G2)組播轉發項,于是將該組播數據轉發到本地網段,接收者主機便能收到該組播數據了。
IGMPv1 沒有專門定義離開組播組的報文。當運行IGMPv1 的主機離開某組播組時,將不會向其要離開的組播組發送報告報文。當網段中不再存在該組播組的成員后,IGMP 路由器將收不到任何發往該組播組的報告報文,于是IGMP 路由器在一段時間之后便刪除該組播組所對應的組播轉發項。
2. IGMPv2 的改進
與IGMPv1 相比,IGMPv2 增加了查詢器選舉機制和離開組機制。
(1) 查詢器選舉機制
在IGMPv1 中,當某共享網段上存在多個組播路由器時,由組播路由協議(如PIM)選舉的指定路由器充當查詢器。
在IGMPv2 中,增加了獨立的查詢器選舉機制,其選舉過程如下:
所有IGMPv2 路由器在初始時都認為自己是查詢器,并向本地網段內的所有主機和路由器發送IGMP 普遍組查詢(General Query)報文(目的地址為224.0.0.1);
本地網段中的其它IGMPv2 路由器在收到該報文后,將報文的源IP地址與自己的接口地址作比較。通過比較, IP 地址最小的路由器將成為查詢器, 其它路由器成為非查詢器(Non-Querier);
所有非查詢器上都會啟動一個定時器(即其它查詢器存在時間定時器Other Querier Present Timer)。在該定時器超時前,如果收到了來自查詢器的IGMP 查詢報文,則重置該定時器;否則,就認為原查詢器失效,并發起新的查詢器選舉過程。
(2) 離開組機制
在IGMPv1 中,主機離開組播組時不會向組播路由器發出任何通知,導致組播路由器只能依靠組播組成員查詢的響應超時來獲知組播組成員的離開。
而在IGMPv2 中,當一個主機離開某組播組時:
該主機向本地網段內的所有組播路由器(目的地址為224.0.0.2)發送離開組(Leave Group)報文;
當查詢器收到該報文后, 向該主機所聲明要離開的那個組播組發送特定組查詢(Group-Specific Query)報文(目的地址字段和組地址字段均填充為所要查詢的組播組地址);
如果該網段內還有該組播組的其它成員,則這些成員在收到特定組查詢報文后,會在該報文中所設定的***響應時間(Max Response Time)內發送成員關系報告報文;
如果在***響應時間內收到了該組播組其它成員發送的成員關系報告報文,查詢器就會繼續維護該組播組的成員關系;否則,查詢器將認為該網段內已無該組播組的成員,于是不再維護這個組播組的成員關系。
3. IGMPv3 的改進
IGMPv3 在兼容和繼承IGMPv1 和IGMPv2 的基礎上,進一步增強了主機的控制能力,并增強了查詢和報告報文的功能。
(1) 主機控制能力的增強
IGMPv3 增加了針對組播源的過濾模式(INCLUDE/EXCLUDE),使主機在加入某組播組G的同時,能夠明確要求接收或拒絕來自某特定組播源S的組播信息。當主機加入組播組時:
若要求只接收來自指定組播源如S1、S2、……的組播信息,則其報告報文中可以標記為INCLUDE Sources(S1,S2,……);
若拒絕接收來自指定組播源如S1、S2、……的組播信息,則其報告報文中可以標記為EXCLUDE Sources(S1,S2,……)。
指定源組的組播流路經
如上圖所示,網絡中存在Source 1(S1)和Source 2(S2)兩個組播源,均向組播組G發送組播報文。Host B僅對從Source1 發往G的信息感興趣,而對來自Source 2 的信息沒有興趣。
如果主機與路由器之間運行的是IGMPv1 或IGMPv2,Host B 加入組播組G 時無法對組播源進行選擇,因此無論Host B 是否需要,來自Source 1 和Source 2 的組播信息都將傳遞給Host B。
當主機與路由器之間運行了IGMPv3 之后,Host B 就可以要求只接收來自Source 1、發往G 的組播信息(S1,G),或要求拒絕來自Source 2、發往G 的組播信息(S2,G),這樣就只有來自Source 1 的組播信息才能傳遞給Host B 了。
(2) 查詢和報告報文功能的增強
a. 攜帶源地址的查詢報文
IGMPv3 不僅支持IGMPv1 的普遍組查詢和IGMPv2 的特定組查詢,而且還增加了對特定源組查詢的支持:
普遍組查詢報文中,既不攜帶組地址,也不攜帶源地址;
特定組查詢報文中,攜帶組地址,但不攜帶源地址;
特定源組查詢報文中,既攜帶組地址,還攜帶一個或多個源地址。
b. 包含多組記錄的報告報文
IGMPv3 報告報文的目的地址為224.0.0.22,可以攜帶一個或多個組記錄。在每個組記錄中,包含有組播組地址和組播源地址列表。組記錄可以分為多種類型,如下:
IS_IN:表示組播組與組播源列表之間的過濾模式為INCLUDE,即只接收從指定組播源列表發往該組播組的組播數據。
IS_EX:表示組播組與組播源列表之間的過濾模式為EXCLUDE,即只接收從指定組播源列表之外的組播源發往該組播組的組播數據。
TO_IN:表示組播組與組播源列表之間的過濾模式由EXCLUDE 轉變為INCLUDE。
TO_EX:表示組播組與組播源列表之間的過濾模式由INCLUDE 轉變為EXCLUDE。
ALLOW:表示在現有狀態的基礎上,還希望從某些組播源接收組播數據。如果當前的對應關系為INCLUDE,則向現有組播源列表中添加這些組播源;如果當前的對應關系為EXCLUDE,則從現有組播源列表中刪除這些組播源。
BLOCK:表示在現有狀態的基礎上,不再希望從某些組播源接收組播數據。如果當前的對應關系為INCLUDE,則從現有組播源列表中刪除這些組播源;如果當前的對應關系為EXCLUDE,則向現有組播源列表中添加這些組播源。
4. 組播模型分類
根據接收者對組播源處理方式的不同,組播模型分為以下三類:
(1) ASM 模型:Any-Source Multicast,任意信源組播
在ASM 模型中,任意一個發送者都可以作為組播源向某組播組地址發送信息。眾多接收者通過加入由該組播組地址標識的組播組以獲得發往該組播組的組播信息。
在ASM 模型中,接收者無法預先知道組播源的位置,但可以在任意時間加入或離開該組播組。
(2) SFM 模型:Source-Filtered Multicast,信源過濾組播
該模型繼承了ASM 模型,從發送者角度來看,兩者的組播組成員關系完全相同。SFM 模型在功能上對ASM 模型進行了擴展。
在SFM 模型中,上層軟件對收到的組播報文的源地址進行檢查,允許或禁止來自某些組播源的報文通過。
因此,接收者只能收到來自部分組播源的組播數據。從接收者的角度來看,只有部分組播源是有效的,組播源被經過了篩選。
(3) SSM 模型:Source-Specific Multicast,指定信源組播
在現實生活中,用戶可能只對某些組播源發送的組播信息感興趣,而不愿接收其它源發送的信息。該模型為用戶提供了一種能夠在客戶端指定組播源的傳輸服務。
SSM 模型與ASM 模型的根本區別在于:SSM 模型中的接收者已經通過其它手段預先知道了組播源的具體位置。SSM 模型使用與ASM/SFM 模型不同的組播地址范圍,直接在接收者與其指定的組播源之間建立專用的組播轉發路徑。
5. IP組播
(1) 對于IP 組播,需要關注下列問題:
組播源將組播信息傳輸到哪里?即組播尋址機制;
網絡中有哪些接收者?即主機注冊;
這些接收者需要從哪個組播源接收信息?即組播源發現;
組播信息如何傳輸?即組播路由。
(2) IP 組播屬于端到端的服務,組播機制包括以下四個部分:
尋址機制:借助組播地址,實現信息從組播源發送到一組接收者;
主機注冊:允許接收者主機動態加入和離開某組播組,實現對組播成員的管理;
組播路由:構建組播報文分發樹(即組播數據在網絡中的樹型轉發路徑),并通過該分發樹將報文從組播源傳輸到接收者;
組播應用:組播源與接收者必須安裝支持視頻會議等組播應用的軟件,TCP/IP 協議棧必須支持組播信息的發送和接收。
為了讓組播源和組播組成員進行通信,需要提供網絡層組播地址,即IP 組播地址。同時必須存在一種技術將IP 組播地址映射為鏈路層的組播MAC 地址。
(3) IP 組播地址
IANA(Internet Assigned Numbers Authority,互聯網編號分配委員會)將D類地址空間分配給IPv4組播使用,范圍從224.0.0.0到239.255.255.255,具體分類及其含義如下表所示。
IPv4 組播地址的范圍及含義
說明:
組播組中的成員是動態的,主機可以在任何時刻加入或離開組播組。
GLOP 是一種AS(Autonomous System,自治系統)之間的組播地址分配機制,將AS 號填入該范圍內組播地址的中間兩個字節中,每個AS 都可以得到255 個組播地址。有關GLOP 的詳細介紹請參見RFC 2770。
(4) 以太網組播MAC 地址
以太網傳輸單播IP 報文的時候,目的MAC 地址使用的是接收者的MAC 地址。但是在傳輸組播數據包時,其目的地不再是一個具體的接收者,而是一個成員不確定的組,所以要使用組播MAC 地址。
IANA規定,IPv4 組播MAC地址的高24 位為0x01005E,第25 位為0,低23 位為IPv4 組播地址的低23 位。IPv4 組播地址與MAC地址的映射關系如下圖所示。
IPv4 組播地址與MAC 地址的映射關系
由于IPv4 組播地址的高4 位是1110,代表組播標識,而低28 位中只有23 位被映射到IPv4 組播MAC 地址,這樣IPv4 組播地址中就有5 位信息丟失。
于是,就有32 個IPv4 組播地址映射到了同一個IPv4 組播MAC 地址上,因此在二層處理過程中,設備可能要接收一些本IPv4 組播組以外的組播數據,而這些多余的組播數據就需要設備的上層進行過濾了。
6. 組播協議
通常,我們把工作在網絡層的IP 組播稱為“三層組播”,相應的組播協議稱為“三層組播協議”,包括IGMP、PIM、MSDP、MBGP等;把工作在數據鏈路層的IP 組播稱為“二層組播”,相應的組播協議稱為“二層組播協議”,包括IGMP Snooping、組播VLAN 等。
(1) 三層組播協議
三層組播協議包括組播組管理協議和組播路由協議兩種類型,它們在網絡中的應用位置如下圖。
三層組播協議的應用位置
a. 組播組管理協議
在主機和與其直接相連的三層組播設備之間通常采用組播組的管理協議IGMP,該協議規定了主機與三層組播設備之間建立和維護組播組成員關系的機制。
b. 組播路由協議
組播路由協議運行在三層組播設備之間,用于建立和維護組播路由,并正確、高效地轉發組播數據包。
組播路由建立了從一個數據源端到多個接收端的無環(loop-free)數據傳輸路徑,即組播分發樹。
對于ASM 模型,可以將組播路由分為域內和域間兩大類:
域內組播路由用來在AS 內部發現組播源并構建組播分發樹,從而將組播信息傳遞到接收者。在眾多域內組播路由協議中,PIM(Protocol Independent Multicast,協議無關組播)是目前較為典型的一個。按照轉發機制的不同,PIM 可以分為DM(Dense Mode,密集模式)和SM(Sparse Mode,稀疏模式)兩種模式。
域間組播路由用來實現組播信息在AS 之間的傳遞,目前比較成型的解決方案有:MSDP(Multicast Source Discovery Protocol,組播源發現協議)能夠跨越AS 傳播組播源的信息;而MP-BGP(MultiProtocol Border Gateway Protocol,多協議邊界網關協議)的組播擴展MBGP(Multicast BGP)則能夠跨越AS 傳播組播路由。
對于SSM 模型,沒有域內和域間的劃分。由于接收者預先知道組播源的具體位置,因此只需要借助PIM-SM 構建的通道即可實現組播信息的傳輸。
(2) 二層組播協議
二層組播協議包括IGMP Snooping和組播VLAN等,它們在網絡中的應用位置如下圖。
二層組播協議的應用位置
a. IGMP Snooping
IGMP Snooping(Internet Group Management Protocol Snooping,互聯網組管理協議窺探)是運行在二層設備上的組播約束機制,通過窺探和分析主機與三層組播設備之間交互的IGMP 報文來管理和控制組播組,從而可以有效抑制組播數據在二層網絡中的擴散。
b. 組播VLAN
在傳統的組播點播方式下,當連接在二層設備上、屬于不同VLAN 的用戶分別進行組播點播時,三層組播設備需要向該二層設備的每個VLAN 分別發送一份組播數據;而當二層設備運行了組播VLAN。