寫在前面:本人是一名計算機系大二的學生,會不定時的將我的學習筆記分享給大家!如果需要更多的學習資源可以通過我的GitHub自行下載!
組播技術
-
傳統的點到點
-
單播存在的問題
- 重復流量過多
- 消耗設備資源、帶寬資源
- 難以保證傳輸質量
概述
-
信息發送者:組播源
-
接受相同的信息接受這過程一個組播組,並且接受者都是
-
定義:一點發出,多點接應
優勢
- 提高效率
- 優化性能
- 分布式應用
缺點
- 基於udp
- 盡力而為
- 報文重復
- 報文失序
- 缺少擁塞避免機制6
1、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,具體分類及其含義如下表所示。
組播地址
D類地址范圍 | 含義 |
---|---|
224.0.0.0-224.0.0.255 | 為路由協議預留的永久組地址 |
224.0.1.0-231.255.255.255 / 233.0.0.0-238.255.255.255 |
用戶可用的asm臨時組地址,全網范圍有效 |
232.0.0.0-232.255.255.255 | 用戶可用ssm臨時組地址,全網范圍內有效 |
239.0.0.0-239.255.255.255 | 用戶可用的asm臨時組地址,盡在特定的本地管理域內有效,陳偉本地管理組播地址 |
IPv4 組播地址的范圍及含義
說明:
- 組播組中的成員是動態的,主機可以在任何時刻加入或離開組播組。
- GLOP 是一種AS(Autonomous System,自治系統)之間的組播地址分配機制,將AS 號填入該范圍內組播地址的中間兩個字節中,每個AS 都可以得到255 個組播地址。有關GLOP 的詳細介紹請參見RFC 2770。
2、組播模型分類
根據接收者對組播源處理方式的不同,組播模型分為以下三類:
(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 模型不同的組播地址范圍,直接在接收者與其指定的組播源之間建立專用的組播轉發路徑。
組播服務模型:針對接受者對源如何進行選擇
模型 | 備注 |
---|---|
asm | any-source multicast,任意源組播 ,任意發送者都可以成為組播,接受者無法預先只掉組播的位置,接受者可以在任意時間加入或離開該主機組,要求組播地址必須整個組播網絡中唯一 (同一個時刻一個asm地址只能被一種組播應用使用) |
ssm | source-secific multicast,源指定組播 ,接受者在加入組播以后,主機只會收到指定源發送該組的數據,主播地址不再要求全網唯一,只需要每個組播源上保持唯一(同一個源上不同的組播應用必須使用不同的ssm地址來區別) |
sfm | Source-Filtered Multicast,信源過濾組播 .該模型繼承了ASM 模型,從發送者角度來看,兩者的組播組成員關系完全相同。SFM 模型在功能上對ASM 模型進行了擴展。 |
asm模型
- 接收端只能加入某組播組,而無法具體選擇組播源
ssm模型
- 接收端指定組播源
組播ip地址
永久地址 | 含義 |
---|---|
224.0.0.1 | 所有系統,包含主機與路由器 |
224.0.0.2 | 所有組播路由器 |
224.0.0.3 | 未分配 |
224.0.0.4 | DVMRP(distance vector multicast routing protocol,,距離矢量組播路由協議)路由器 |
224.0.0.5 | ospf(open shorter path first,開放式最短路徑)路由器 |
224.0.0.6 | ospf指定路由器\備用指定路由器 |
224.0.0.7 | ST(shared tree,共享樹)路由器 |
224.0.0.8 | ST主機 |
224.0.0.9 | rip-2(routing information protocol version 2,路由信息協議版本2)路由器 |
224.0.0.11 | 移動代理 |
224.0.0.12 | DHCP(dynamic host configuration protocol,動態主機配置協議)服務器/中繼代理 |
224.0.0.13 | 所有pim(protocol independent multical,協議無關組播)路由器 |
組播mac地址
-
高24bit=0x01005e,第25bit=0,第23bit=組播ip地址的第23bit
-
mac地址=01-00-5e(前綴)
- 優於ip地址的前4bit是1110,代表主筆標識,而后28bit中只有23bit被映射到mac地址表,這樣ip地址中就有5bit信息丟失,直接的結果就是出現32個ip組播地址映射到同一個mac地址上。
組播的基本架構
- 數據發送
- 轉發
- 接受
關注事項 | 備注 |
---|---|
哪里有組播接受者 | 組播鄰居建立 |
從哪里可以獲得組播數據 | 組播源發現技術 |
將組播數據傳輸到哪里 | 組播尋址機制 |
如何傳輸組播信息 | 組播路由 |
- 組播路由協議包括
作用 | |
---|---|
DVMP | distance vector multicast routing protocol,距離矢量組播路由協議 ,一種密集式協議,該協議有跳數限制,最大32跳 |
MOSPF | ospf路由協議的擴展,他通過定義新的lsa來支持組播 |
PIM | protocol independent multicast,協議無關組播, 分為DM和SM兩種模型,當接受者分布為較密集時,使用DM,較為稀疏時,使用SM。PIM必須和單播路由協議同工作 |
#
PIM DM
#
MPLS 1
MPLS ldp
mpls 12vpn
mpls lsr-id 1.1.1.1
#
- 域間組播協議
名稱 | |
---|---|
MSDP | multicast source discovery protocol,能夠跨越as傳播組播源信息 |
MPBGP | multprotocol border getway protocol 能夠跨越as傳播組播路由 |
- 對於ssm模型,沒有域內和域間划分。優於接受者預先只掉組播的具體位置,因此可以借助pim sm的功能直接創建組播傳輸路勁
3、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
- 負責主筆成員管理,運行主機和路由器之間
- 主機側:通過ICMP協議向路由通告組承歡關系
- 路由器側:通過icmp維護組成員關系
版本 | 備注 |
---|---|
igmpv1 | 定義了基本的組成員查詢和報告過程,rfc1112 |
igmpv2 | 在igmpv1的基礎上太那幾了查詢選舉器和離開機制,rfc2236 |
igmpv3 | 成員可以指定接收或不接受某些組播源的報文,rfc3376 |
- 所有版本都支持asm模型
- igmpv3可以直接用用與ssm模型,igmpv1和v2則需要ssm-mapping技術的支持
- 圓形igmp高版本路由器可以識別低版本的(向前兼容)
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)維護組播組成員關系的基本過程如下:
- 主機將主動發送IGMP 成員關系報告報文到其要加入的組播組,以聲明加入,而不必等待IGMP查詢器發來的IGMP 查詢報文
- IGMP 查詢器周期性地以組播方式,向本地網段內的所有主機與路由器發送IGMP 查詢報文(目的地址為224.0.0.1);
- 在收到該查詢報文后,關注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,則向現有組播源列表中添加這些組播源。
IGMPv1
工作機制
- 普遍組查詢與響應。
- 響應抑制機制。
支持的報文
- 普遍組查詢報文(General Query):路由器周期性地向224.0.0.1地址(表示同一網段內所有主機和路由器)發送通用查詢報文,默認查詢周期為60秒,發送周期可以通過命令配置。
- 成員關系報告報文(Membership Report):用於主機加入某個組播組。
成員加入
- 不等待普遍組查詢報文
組成員離開
- 沒有離開的組消息
查詢器選舉
- 沒有路由選舉機制,依賴組播協議在某段網絡中選舉一個查詢器
IGMPv2
組成員離開
- 向組播源發送特定的組查詢,發送兩次后還沒有收到,就認為組播成員離開
查詢器選舉
以小為優
,將報文的源ip地址和自己的接口地址比較,ip地址小的成為查詢器
igmpv1和v2比較
IGMPv1報文:
- 版本:包含IGMP版本標識,因此設置為1。
- 類型:普遍組查詢 (0x11),成員關系報告 (0x12)。
- 組地址:普遍組查詢報文中,組地址為0;成員關系報告報文中,組地址為成員想要加入的組播組的地址。
IGMPv2報文
:IGMPv2報文與IGMPv1報文略有不同,它取消了版本字段,增加了最大響應時間字段。
- 類型:相比於IGMPv1,IGMPv2新增了兩種報文:
- 特定組查詢報文(0x11):查詢器向共享網段內指定組播組發送的查詢報文,用於查詢該組播組是否存在成員。
- 成員離開報文(0x17):成員離開組播組時主動向路由器發送的報文,用於宣告自己離開了某個組播組。
- 最大響應時間:表示主機響應查詢返回報告的最大時間。
- 對於普遍組查詢,最大響應時間默認為
10
秒。 - 對於特定組查詢,最大響應時間默認為
1
秒。
- 對於普遍組查詢,最大響應時間默認為
- 組地址:
- 普遍組查詢報文中,組地址設置為0。
- 特定組查詢報文中,組地址為需要查詢的組地址。
- 在成員報告或離開組的消息中,組地址為需要報告或離開的組地址。
IGMPv3
- 報文類型
- 查詢報文:含普遍組查詢報文和特定組查詢報文,還新增了特定源組
- 報告報文:含主機想要加入的組播組,而且包含主機想要接收來自哪些組播源的數據
- 沒有專門的成員離開報文,成員離開通過特定類型的報告報文來傳達。
IGMP配置
命令 | 備注 |
---|---|
multicast routing-enable | 啟用組播路由 |
igmp enable | 接口開啟igmp |
igmp version 2 | 配置igmp版本 |
display igmp interface | 驗證igmp接口 |
display igmp group | 驗證igmp組信息 |
igmp static-group 255.1.1.1 | 配置靜態igmp表項 (解決bug) |
igmp版本比較
機制 | igmpv1 | igmpv2 | igmpv3 |
---|---|---|---|
查詢器選舉方式 | 依靠pim協議 | 自己選舉 | 自己選舉 |
成員離開方式 | 靜默離開 | 主動發送離開報文 | 主動發送離開報文 |
特定組查詢 | 不支持 | 支持 | 支持 |
指定源、組 | 不支持 | 支持 | 支持 |
成員報告報文 | 支持 | 支持 | 支持 |
成員離開報文 | 不支持 | 支持 | 沒有定義專門的成員離開報文,成員離開通過特定類型的報告報文來傳達 |
指定組播源 | 不支持 | 不支持 | 支持 |
可識別協議版本 | igmpv1 | igmpv1,igmpv2 | igmpv1,igmpv2,igmpv3 |
asm模型 | 支持 | 支持 | 支持 |
ssm模型 | 需要igmp ssm mapping支持 | 需要igmp ssm mapping支持 | 支持 |
IGMP snooping
- IGMP Snooping,是Internet Group Management Protocol Snooping(互聯網組管理協議窺探)的簡稱,它是運行在二層設備上的組播約束的機制,用於管理和控制組播組。
- IGMP Snooping監聽IGMP協議包,提取相應的信息,形成組播成員關系表,然后對組播業務按照組成員關系進行轉發,保證組成員收到正確的的組播業務,而其余主機無法收到。
- IGMP Snooping相對於路由器和主機是透明的,它僅僅監聽兩者之間的IGMP報文,來建立自己的組播成員關系表
工作原理
- IGMP Snooping是二層組播的基本功能,可以實現組播數據在數據鏈路層的轉發和控制。當主機和上游三層設備之間傳遞的IGMP協議報文通過二層組播設備時,IGMP Snoopin g分析報文攜帶的信息,根據這些信息建立和維護二層組播轉發表,從而指導組播數據在數據鏈路層按需轉發。
路由端口 (Router Port)
-
路由器端口都是指二層組播設備上朝向組播路由器的接口,而不是指路由器上的接口。
-
二層組播設備上朝向三層組播設備(DR或IGMP查詢器)一側的接口,二層組播設備從此接口接收組播數據報文。
-
由協議生成的路由器端口叫做動態路由器端口。
-
收到源地址不為0.0.0.0的IGMP普遍組查詢報文或PIM Hello報文(三層組播設備的PIM接口向外發送的用於發現並維持鄰居關系的報文)的接口都將被視為動態路由器端口。
-
手工配置的路由器端口叫做靜態路由器端口。
成員端口 (Member Port)
-
如SwitchA和SwitchB上×××方框表示的接口。
-
又稱組播組成員端口,表示二層組播設備上朝向組播組成員一側的端口,二層組播設備往此接口發送組播數據報文。
由協議生成的成員端口叫做動態成員端口。收到IGMP Report報文的接口,二層組播設備會將其標識為動態成員端口。 -
手工配置的成員端口叫做靜態成員端口。
路由器端口和成員端口,是二層組播轉發表項中的一個重要信息:出接口。其中路由器端口相當於上游接口,成員端口相當於下游接口。通過協議報文學習到的端口,對應的為動態表項;而手工配置的端口,對應的為靜態表項。 -
除了出接口外,每條表項還包括組播組地址和VLAN編號。
組播組地址,可以為組播IP地址,也可以為組播IP地址映射后的組播MAC地址。按照IP地址轉發的模式可以避免MAC地址轉發模式中的地址重復問題。 -
VLAN編號,指定了二層廣播域范圍。如果使用了組播VLAN功能,入VLAN編號為組播VLAN的編號,出VLAN編號為主機所在的用戶VLAN編號。否則入VLAN編號和出VLAN編號均為主機所在VLAN的編號。
端口角色 | 作用 | 如何生成 |
---|---|---|
路由器端口 | 接收組播數據,上游接口 | a、收到源地址不為0.0.0.0的igmp普遍組查詢報文或pim hello報文的接口都將被叫為動態路由器端口 ;b、手工配置的路由器端口叫做靜態路由器端口 |
成員端口 | 發送組播數據,下游接口 | a、收到igmp report報文的接口,叫做動態成員端口 ;b、手工配置的成員端口叫做靜態成員端口 |
例子
#
multicast routing-enable
interface G0/0/1
ip address 192.168.1.1 255.255.255.0
igmp enable
igmp version 2
#
配置
命令 | 備注 |
---|---|
igmp-snooping | 開啟igmp-snooping,系統 |
vlan x / igmp-snooping enable | 開啟vlan下的igmp-snooping |
display igmp-snooping router-port vlan x | 驗證igmp-snooping路由器端口 |
display igmp-snooping port-info | 驗證igmp-snooping成員端口 |
bug
成員接口配置igmp s退出后還在,同一個交換機另外的成員查詢被隔離,報告也被隔離
- 解決:
igmp static-group 255.1.1.1
4、pim
概述
-
協議無關組播,利用rpf檢查
-
運行於路由器與路由器之間
-
給組播提供路由可以是一種單播路由協議
pim-dm
- PIM定義了兩種模式道:密集模式(Dense-Mode)和稀疏模式(Sparse-Mode)。
- 協議無關協議
- 使用推方式來傳送數據
- 使用小型網絡
工作流程
- 鄰居發現、擴散、剪枝
選舉規則
- 到組播源的
優先級高
者 - 到組播源的
度量值較小
的 - 本地
接口地址較大
者
構建SPT
- 擴散過程
- rpf檢查
- 剪枝過程
狀態刷新
- 周期性得刷新剪枝狀態
機制
-
graft
:新的成員加入主播后快速得到組播報文 -
assert
:避免重復組播報文-
競選規則
-
單播路由協議
優先級小
的 -
組播路由協議
開銷小
的 -
接受者MA網絡接口
ip地址大
的 -
競選結果
-
assert winner
:獲勝的一方,負責后續對該網段報文的轉發 -
assert loser
:落敗的一方,不會對該網段傳輸組播報文,PIM路由器也會將其從(S,G)表項下游接口列表中刪除。 -
Assert競選結束后,該網段上只存在一個下游接口,只傳輸一份組播報文。
-
所有Assert Loser可以周期性地恢復組播報文轉發,從而引發周期性的Assert機制。
-
配置
命令 | 備注 |
---|---|
multicast routing-enable | |
pim dm | 開啟pim協議 |
dis pim routing-table | 查看路由表 |
dis pim neighbor | 查看鄰居關系 |
局限性
- PIM-DM適用於組播成員分布較為密集的園區網絡。
- PIM-DM的局限性:
- 在組播成員分布較為稀疏的網絡中,組播流量的周期性擴散會給網絡帶來較大負擔。
pim-sm
基本概述
-
使用“拉(Pull)模式”轉發組播報文。
-
PIM-SM的關鍵任務:
- 建立RPT(Rendezvous Point Tree,匯聚點樹也稱共享樹)。
- 建立SPT(Shortest Path Tree,最短路徑樹)。
-
適用於組播成員分布較為稀疏的網絡環境。
匯聚點RP(rendezvous point)
- 充當RPT樹的根節點。
- 共享樹中的所有組播流量都經過RP轉發給接收者。
- 所有PIM路由器都要知道RP的位置。
- RP的作用:
- RP是PIM-SM域中的核心路由器,擔當RPT樹根節點。
- 共享樹里所有組播流量都要經過RP轉發給接收者。
- RPT的建立過程:
-
主機加入某個組播組時,發送IGMP成員通告。
-
最后一跳路由器向RP發送(*,G)Join消息。
-
(,G)Join消息到達RP的過程中,沿途各路由器都會生成相應的(*,G)組播轉發條目。
-
DR
-
運行PIM-SM的網絡,都會進行DR(Designated Router)的選舉。其中有兩種DR分別稱為接收者側DR和組播源側DR。
- 組播接收者側DR:與組播組成員相連的DR,負責向RP發送(*,G)的Join加入消息。
- 組播源側DR:與組播源相連的DR,負責向RP發送單播的Register消息。
-
PIM-SM中DR的選舉原則與PIM-DM相同。
STP建立
- 組播源向組播組發送第一個組播報文。
- 源端DR將該組播報文封裝成Register報文並以單播方式發送給相應的RP。
- RP收到注冊消息后,一方面從Register消息中提取出組播報文,並將該組播報文沿RPT分支轉發給接收者。
- 另一方面,RP向源端DR發送(S,G)Join消息,沿途路由器上都會生成相應(S,G)表項。從而建立了一顆由組播源至RP的SPT樹。
- SPT樹建立后,組播源發出的組播報文沿該SPT轉發至RP。
RP沿SPT收到該組播報文后,向源端DR單播發送Register-stop消息。
(*,G)與(S,G)條目關系
switchover機制
- 用戶端DR周期性檢測組播報文的轉發速率,一旦發現從RP發往組播組G的報文速率超過閾值,則觸發SPT切換:
- 用戶端DR逐跳向源端DR發送(S,G)Join報文並創建(S,G)表項,建立源端DR到用戶端DR的SPT。
- SPT建立后,用戶端DR會沿着RPT逐跳向RP發送剪枝報文,收到剪枝報文的路由器將(*,G)復制成相應的(S,G),並將相應的下游接口置為剪枝狀態。剪枝結束后,RP不再沿RPT轉發組播報文到組成員端。
- 如果SPT不經過RP,RP會繼續向源端DR逐跳發送剪枝報文,刪除(S,G)表項中相應的下游接口。剪枝結束后,源端DR不再沿“源端DR-RP”的SPT轉發組播報文到RP。
(*,G)與(S,G)條目關系
配置
multicast routing-enable
int xxx
pim sm //開啟pim sm 模式(接口下)
----
pim
static-rp xxxx //靜態配置地址
--驗證--
dis pim routing-table
dis pim neighbor
本文均屬原創,如有錯誤或不詳,敬請指出!
本文作者:肉肉
版權聲明:博客所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協議。轉載請注明出處!