IGMP技術總結
IGMP 是Internet Group Management Protocol(互聯網組管理協議)的簡稱。它是TCP/IP 協議族中負責IP 組播成員管理的協議,用來在IP 主機和與其直接相鄰的組播路由器之間建立、維護組播組成員關系。IGMP的工作原理是怎樣的?不同版本之間有何區別?本博文將為您詳細介紹...
1.IGMP 的版本
到目前為止,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 模型。
2. 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 路由器在一段時間之后便刪除該組播組所對應的組播轉發項。
#p#
3. IGMPv2 的改進
與IGMPv1 相比,IGMPv2 增加了查詢器選舉機制和離開組機制。
· 查詢器選舉機制
在IGMPv1 中,當某共享網段上存在多個組播路由器時,由組播路由協議(如PIM)選舉的指定路由器充當查詢器。
在IGMPv2 中,增加了獨立的查詢器選舉機制,其選舉過程如下:
(1) 所有IGMPv2 路由器在初始時都認為自己是查詢器,并向本地網段內的所有主機和路由器發送IGMP 普遍組查詢(General Query)報文(目的地址為224.0.0.1);
(2) 本地網段中的其它IGMPv2 路由器在收到該報文后,將報文的源IP地址與自己的接口地址作比較。通過比較, IP 地址最小的路由器將成為查詢器, 其它路由器成為非查詢器(Non-Querier);
(3) 所有非查詢器上都會啟動一個定時器(即其它查詢器存在時間定時器Other Querier Present Timer)。在該定時器超時前,如果收到了來自查詢器的IGMP 查詢報文,則重置該定時器;否則,就認為原查詢器失效,并發起新的查詢器選舉過程。
· 離開組機制
在IGMPv1 中,主機離開組播組時不會向組播路由器發出任何通知,導致組播路由器只能依靠組播組成員查詢的響應超時來獲知組播組成員的離開。
而在IGMPv2 中,當一個主機離開某組播組時:
(1) 該主機向本地網段內的所有組播路由器(目的地址為224.0.0.2)發送離開組(Leave Group)報文;
(2) 當查詢器收到該報文后, 向該主機所聲明要離開的那個組播組發送特定組查詢(Group-Specific Query)報文(目的地址字段和組地址字段均填充為所要查詢的組播組地址);
(3) 如果該網段內還有該組播組的其它成員,則這些成員在收到特定組查詢報文后,會在該報文中所設定的***響應時間(Max Response Time)內發送成員關系報告報文;
(4) 如果在***響應時間內收到了該組播組其它成員發送的成員關系報告報文,查詢器就會繼續維護該組播組的成員關系;否則,查詢器將認為該網段內已無該組播組的成員,于是不再維護這個組播組的成員關系。
4. IGMPv3 的改進
IGMPv3 在兼容和繼承IGMPv1 和IGMPv2 的基礎上,進一步增強了主機的控制能力,并增強了查詢和報告報文的功能。
· 主機控制能力的增強
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僅對從Source 1 發往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 了。
· 查詢和報告報文功能的增強
(1) 攜帶源地址的查詢報文
IGMPv3 不僅支持IGMPv1 的普遍組查詢和IGMPv2 的特定組查詢,而且還增加了對特定源組查詢的支持:
§ 普遍組查詢報文中,既不攜帶組地址,也不攜帶源地址;
§ 特定組查詢報文中,攜帶組地址,但不攜帶源地址;
§ 特定源組查詢報文中,既攜帶組地址,還攜帶一個或多個源地址。
(2) 包含多組記錄的報告報文
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,則向現有組播源列表中添加這些組播源。
#p#
5. 組播模型分類
根據接收者對組播源處理方式的不同,組播模型分為以下三類:
· ASM 模型:Any-Source Multicast,任意信源組播
在ASM 模型中,任意一個發送者都可以作為組播源向某組播組地址發送信息。眾多接收者通過加入由該組播組地址標識的組播組以獲得發往該組播組的組播信息。在ASM 模型中,接收者無法預先知道組播源的位置,但可以在任意時間加入或離開該組播組。
· SFM 模型:Source-Filtered Multicast,信源過濾組播
該模型繼承了ASM 模型,從發送者角度來看,兩者的組播組成員關系完全相同。SFM 模型在功能上對ASM 模型進行了擴展。在SFM 模型中,上層軟件對收到的組播報文的源地址進行檢查,允許或禁止來自某些組播源的報文通過。因此,接收者只能收到來自部分組播源的組播數據。從接收者的角度來看,只有部分組播源是有效的,組播源被經過了篩選。
· SSM 模型:Source-Specific Multicast,指定信源組播
在現實生活中,用戶可能只對某些組播源發送的組播信息感興趣,而不愿接收其它源發送的信息。該模型為用戶提供了一種能夠在客戶端指定組播源的傳輸服務。
SSM 模型與ASM 模型的根本區別在于:SSM 模型中的接收者已經通過其它手段預先知道了組播源的具體位置。SSM 模型使用與ASM/SFM 模型不同的組播地址范圍,直接在接收者與其指定的組播源之間建立專用的組播轉發路徑。
6. IP組播
§ 對于IP 組播,需要關注下列問題:
· 組播源將組播信息傳輸到哪里?即組播尋址機制;
· 網絡中有哪些接收者?即主機注冊;
· 這些接收者需要從哪個組播源接收信息?即組播源發現;
· 組播信息如何傳輸?即組播路由。
§ IP 組播屬于端到端的服務,組播機制包括以下四個部分:
· 尋址機制:借助組播地址,實現信息從組播源發送到一組接收者;
· 主機注冊:允許接收者主機動態加入和離開某組播組,實現對組播成員的管理;
· 組播路由:構建組播報文分發樹(即組播數據在網絡中的樹型轉發路徑),并通過該分發樹將報文從組播源傳輸到接收者;
· 組播應用:組播源與接收者必須安裝支持視頻會議等組播應用的軟件,TCP/IP 協議棧必須支持組播信息的發送和接收。
為了讓組播源和組播組成員進行通信,需要提供網絡層組播地址,即IP 組播地址。同時必須存在一種技術將IP 組播地址映射為鏈路層的組播MAC 地址。
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。
以太網組播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 組播組以外的組播數據,而這些多余的組播數據就需要設備的上層進行過濾了。
#p#
7. 組播協議
通常,我們把工作在網絡層的IP 組播稱為“三層組播”,相應的組播協議稱為“三層組播協議”,包括IGMP、PIM、MSDP、MBGP 等;把工作在數據鏈路層的IP 組播稱為“二層組播”,相應的組播協議稱為“二層組播協議”,包括IGMP Snooping、組播VLAN 等。
· 三層組播協議
三層組播協議包括組播組管理協議和組播路由協議兩種類型,它們在網絡中的應用位置如下圖。
三層組播協議的應用位置
(1) 組播組管理協議
在主機和與其直接相連的三層組播設備之間通常采用組播組的管理協議IGMP(Internet Group Management Protocol,互聯網組管理協議),該協議規定了主機與三層組播設備之間建立和維護組播組成員關系的機制。
(2) 組播路由協議
組播路由協議運行在三層組播設備之間,用于建立和維護組播路由,并正確、高效地轉發組播數據包。組播路由建立了從一個數據源端到多個接收端的無環(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 構建的通道即可實現組播信息的傳輸。
· 二層組播協議
二層組播協議包括IGMP Snooping和組播VLAN等,它們在網絡中的應用位置如下圖。
二層組播協議的應用位置
(1) IGMP Snooping
IGMP Snooping(Internet Group Management Protocol Snooping,互聯網組管理協議窺探)是運行在二層設備上的組播約束機制,通過窺探和分析主機與三層組播設備之間交互的IGMP 報文來管理和控制組播組,從而可以有效抑制組播數據在二層網絡中的擴散。
(2) 組播VLAN
在傳統的組播點播方式下,當連接在二層設備上、屬于不同VLAN 的用戶分別進行組播點播時,三層組播設備需要向該二層設備的每個VLAN 分別發送一份組播數據;而當二層設備運行了組播VLAN 之后,三層組播設備只需向該二層設備的組播VLAN 發送一份組播數據即可,從而既避免了帶寬的浪費,也減輕了三層組播設備的負擔。
#p#
8. 組播報文的轉發機制
在組播模型中,IP 報文的目的地址字段為組播組地址,組播源向以此目的地址所標識的主機群組傳送信息。因此,轉發路徑上的組播路由器為了將組播報文傳送到各個方位的接收站點,往往需要將從一個入接口收到的組播報文轉發到多個出接口。與單播模型相比,組播模型的復雜性就在于:
· 為了保證組播報文在網絡中的傳輸,必須依靠單播路由表或者單獨提供給組播使用的路由表(如MBGP 路由表)來指導轉發;
· 為了處理同一設備在不同接口上收到來自不同對端的相同組播信息,需要對組播報文的入接口進行RPF(Reverse Path Forwarding,逆向路徑轉發)檢查,以決定轉發還是丟棄該報文。RPF 檢查機制是大部分組播路由協議進行組播轉發的基礎。
9. IGMP SSM Mapping
IGMP SSM Mapping 通過在路由器上配置SSM 靜態映射規則,從而為運行IGMPv1 或IGMPv2 的接收者主機提供對SSM 模型的支持。
SSM 模型要求在接收者主機所在的網段,路由器能夠了解主機加入組播組時所指定的組播源。如果接收者主機上運行的是IGMPv3,則可以在IGMPv3 的報告報文中直接指定組播源的地址;如果某些接收者主機只能運行IGMPv1 或IGMPv2,則在IGMPv1 或IGMPv2 的報告報文中無法指定組播源的地址。這種情況下需要通過在路由器上配置IGMP SSM Mapping 功能,將IGMPv1 或IGMPv2報告報文中所包含的(*,G)信息映射為(G,INCLUDE,(S1,S2...))信息。
在下圖所示的SSM網絡中,Host A、Host B和Host C上分別運行IGMPv1、IGMPv2 和IGMPv3。
在不允許將Host A和Host B升級為IGMPv3 的情況下,若要為Host A和Host B也提供SSM組播服務,則需在Router A上使能IGMP SSM Mapping并配置相應的映射規則。
IGMP SSM Mapping組網圖
配置完成后,當Router A 收到來自主機的IGMPv1 或IGMPv2 報告報文時,首先檢查該報文中所攜帶的組播組地址G,然后根據檢查結果的不同分別進行處理:
(1) 如果G 不在SSM 組地址范圍內,則提供ASM 組播服務。
(2) 如果G 在SSM 組地址范圍內:
§ 若Router A 上沒有G 對應的IGMP SSM Mapping 規則,則無法提供SSM 組播服務,丟棄該報文;
§ 若Router A 上有G 對應的IGMP SSM Mapping 規則,則依據規則將報告報文中所包含的(*,G)信息映射為(G,INCLUDE,(S1,S2...))信息,可以提供SSM 組播服務。
IGMP SSM Mapping 不對IGMPv3 的報告報文進行處理。
10. IGMP Proxy
在一些簡單的樹型網絡拓撲中,邊緣設備上并不需要運行復雜的組播路由協議(如PIM),可以通過在這些設備上配置IGMP Proxying(IGMP 代理)功能,使其代理下游主機來發送IGMP 報文及維護組成員關系,并基于該關系進行組播轉發。在上游設備看來,配置了IGMP Proxying 功能的設備(稱為IGMP 代理設備)不再是一個PIM 鄰居,而只是一臺主機。
如上圖所示,IGMP Proxying中定義了以下兩種接口類型:
§ 上行接口:又稱代理接口,指IGMP 代理設備上運行IGMP Proxying 功能的接口,即朝向組播分發樹樹根方向的接口。由于該接口執行IGMP 協議的主機行為,因此也稱為主機接口(Host Interface)。
§ 下行接口:指IGMP 代理設備上除上行接口外其它運行IGMP 協議的接口,即背向組播分發樹樹根方向的接口。由于該接口執行IGMP 協議的路由器行為,因此也稱為路由器接口(Router Interface)。
IGMP 代理設備上維護著一個組成員關系數據庫(Membership Database),將所有下行接口維護的組成員關系記錄都存到這個數據庫中。組成員關系記錄的結構如下:(Multicast-address,Filter-mode,Source-list),每條記錄都是各下行接口上具有相同組地址的成員關系記錄的合集。
上行接口正是依據這個數據庫來執行主機行為——當收到查詢報文時根據當前數據庫狀態響應報告報文,或者當數據庫變化時主動發送報告或離開報文;而下行接口則執行路由器行為——參與查詢器的選舉、發送查詢報文并根據報告報文維護組成員關系等。
11. 組播傳輸的特點
· “組播組”是一個用IP 組播地址進行標識的接收者集合,主機通過加入某組播組成為該組播組的成員,從而可以接收發往該組播組的組播數據。組播源通常不需要加入組播組。
· 信息的發送者稱為“組播源”,一個組播源可以同時向多個組播組發送信息,多個組播源也可以同時向一個組播組發送信息。
· 所有加入某組播組的主機便成為該組播組的成員,組播組中的成員是動態的,主機可以在任何時刻加入或離開組播組。組播組成員可以廣泛地分布在網絡中的任何地方。
· 支持三層組播功能的路由器或三層交換機統稱為“組播路由器”或“三層組播設備”。組播路由器不僅能夠提供組播路由功能,也能夠在與用戶連接的末梢網段上提供組播組成員的管理功能。組播路由器本身也可能是組播組的成員。
12. 組播技術的優點
· 提高效率:減輕信息源服務器和網絡設備CPU 的負荷;
· 優化性能:減少冗余流量;
· 分布式應用:使用最少的網絡資源實現點到多點應用。
13. 組播相對單播、廣播的優勢
· 相比單播來說,組播的優勢在于:由于被傳遞的信息在距信息源盡可能遠的網絡節點才開始被復制和分發,所以用戶的增加不會導致信息源負載的加重以及網絡資源消耗的顯著增加。
· 相比廣播來說,組播的優勢在于:由于被傳遞的信息只會發送給需要該信息的接收者,所以不會造成網絡資源的浪費,并能提高信息傳輸的安全性;另外,廣播只能在同一網段中進行,而組播可以實現跨網段的傳輸。
組播信息傳輸與電視節目傳輸的類比
14. 組播技術應用
· 多媒體、流媒體的應用,如:網絡電視、網絡電臺、實時視/音頻會議;
· 培訓、聯合作業場合的通信,如:遠程教育、遠程醫療;
· 數據倉庫、金融應用(股票);
· 其它任何“點到多點”的數據發布應用。
原文鏈接:http://blog.csdn.net/zxh2075/article/details/9110989