組播——PIM Sparse Mode PIM稀疏模式


驗證理論:

PIM協議報文直接采用IP封裝,目的地址224.0.0.13,IP協議號103

PIM上下游接口:

  入接口:必須為RPF校驗通過接口,連接RPF鄰居。

    (S,G)參考組播源確定

    (*,G)參考RP確定

  下游接口生成方式:接收到(*,G)加組報告;接收(S,G)加組報告;接收IGMP加組報告

  下游接口移除方式:接收到PIM Prune信息;接收到IGMP Leave信息;接收SPT切換產生的(S,G)修剪

 

 

 

 

PIM-SM數據包類型:

 

PIM-SM工作機制:

1.將組成員的位置事先告知某台組播路由器(Rendezvous Point,RP),形成RPT(RPT是一顆以RP為根,以存在組成員關系的PIM路由器為葉子的組播分發樹。當網絡中出現組成員(形成IGMP表項)時,組成員端DR向RP發送Join報文,在通向RP的路徑上逐跳創建(*,G)表項,生成一顆以RP為根的RPT).

2.組播源在發送組播數據時,組播網絡將組播數據發送至RP(組播源到RP,維護(S,G)表項,即源樹),然后由RP再將組播數據轉發給組成員。

3.對於部分次優的組播轉發路徑,PIM(ASM)能自動優化為最優路徑(SRT,以組播源為根,組播組成員為葉子的組播分發樹)

 

 

 

 

 

 

 

匯聚點RP(Rendezvous Point)為網絡中一台重要的PIM路由器,用於處理源端DR注冊信息及組成員加入請求,網絡中的所有PIM路由器都必須知道RP的地址,類似於一個供求信息的匯聚中心

目前可以通過以下方式配置RP:

靜態RP:在網絡中的所有PIM路由器上配置相同的RP地址,靜態指定RP的位置

動態RP:通過選舉機制在多個C-RP(Candidate-RP,候選RP)之間選舉出RP

 

 

 

實驗拓撲

 

 

 

初始配置

全網ISIS墊底打通,所有路由器開啟組播路由功能,互聯接口設置為pim sm 

所有路由器包括AR3都靜態指定AR3為RP,在AR3的環回口上使能PIM SM 來處理組播流量,AR5上連接PC2的接口使能IGMPv2

[AR1-pim]static-rp  150.1.3.3

[AR2-pim]static-rp 150.1.3.3

[AR3-LoopBack0]pim sm

[AR3-pim]static-rp 150.1.3.3

[AR4-pim]static-rp 150.1.3.3

[AR5-pim]static-rp 150.1.3.3

[AR5-GigabitEthernet0/0/0]igmp en 

 配置注意事項:

1.RP配置所有路由器需要一致

2.RP必須路由可達

3.RP接口必須使能PIM-SM

 

 

 

實驗步驟

1.場景1:接受者先上線,組播源后上線

第一步:RPT構建過程

PC1加組,並抓包,可以看到AR5作為最后一跳路由器通過IGMP得到了(*,G)表項,朝着RP根據RPF計算的出接口發送Join信息給到了AR4,此時AR5上(*,G)表項下游接口就是連接終端的接口,上游接口就是去往RP的RPF接口

 

 

AR4學習到了(*,G)表項之后也朝着RP根據RPF計算的出接口發送Join信息給到了AR3,此時AR4上(*,G)表項下游接口就是連接AR5的接口,上游接口就是去往RP的RPF接口

 

 

AR3收到Join信息之后學習到了(*,G)表項,其中下游接口就是連接AR4的接口,上游接口為空。Join信息到達RP后結束,不會再繼續向源的方向轉發

 

 

 

 

 

第二步:源到RP建立SPT

1.注冊

首先組播源發送組播流量給到了AR1(不響應AR1的hello包,直接發送udp流量)

在此之前AR1,2上都沒有組播路由表,AR3也沒有上游接口。組播流量到達AR1之后不能像DM一樣泛洪,又沒有組播路由表,所以AR1將組播包封裝成單播包從AR1發到AR3(底層ISIS是全通的),其中單播源地址是AR1連接組播源的接口IP地址10.1.1.2,目的地址是指定的RP的地址150.1.3.3

此時收到單播包的AR3解封裝之后可以得到S,加上之前通過RPT得到的G和下游接口,此時AR3只缺上游接口。但是因為AR3知道組播源了,且組播源是可達的,於是AR3朝着組播源根據RPF計算出來的出接口(根據RPF可以計算出上游接口)發送(S,G)的Join信息給AR2

 

 

同時AR3解封裝時得到了G,作為RP再依據之前的(*,G)表項將組播數據轉發給組成員,這樣通過組播數據,RPT上的路由器也可以獲得(S,G)表項(注意:1.單播包沒有走過RPT,2.RP收到第一個單播包之后解封裝就直接傳遞給了RPT)

 

 AR2收到Join信息之后即可獲得下游接口,(S,G)信息,於是也朝着組播源根據RPF計算出來的出接口發送(S,G)的Join信息給到AR1

AR1收到(S,G),此時從第一跳路由器到最后一跳路由器,所有的路由器都有了(S,G)表項此時沒有必要再封裝在單播報文中轉發組播數據,於是再發送的除了最開始用於注冊的組播報文(不一定是1個,有的時候是多個)之外的其他報文都仍然以組播的形式發送。RP收到基於(S,G)條目轉發的組播報文之后RP響應發送注冊停止信息,用於停止第一跳單播傳輸組播。第一跳路由器接收到注冊停止后,即停止以單播方式發送組播到RP(但是接收者先加入的情況下,抓不到停止包。將接收者離組之后重新播放,雖然看不到用戶UDP組播報文了,但是可以看到RP單播回復AR1的注冊停止報文)

 

 

 

 

注意:1.RP上的S,G表項沒有下游接口,是通過查(S,G)和(*,G)表項進行轉發的

   2.AR2上的下游接口0/0/2不是連接RP的接口,是因為被SM可以自動優化最優路徑,這個后面再說明

 

 

 

 

 

 

 

 

 

 

 

 

2.場景2:組播源先上線,接受者后上線

 第一步:組播源到RP的SPT建立

組播源發送組播流量,第一跳封裝組播為單播轉發到RP(注冊到RP),RP丟棄組播流量,發送注冊停止信息到第一跳路由器(RP會保留(S,G)條目老化時間3min).因為根本就沒有接收者

第一跳路由器接收到注冊停止信息后停止發送組播注冊(僅維持1Min,1min超時,第一跳路由重新發送注冊到RP,以維持(S,G)條目)

  如果業務流不斷,因為register/register stop每隔1分鍾刷新一次,RP保持(S,G)表項要3分鍾才刷新,所以(S,G)表項就一直都在

 

 若后續新加入接收者(3min內),RP基於(S,G)條目通告PIM join信息到第一跳路由器,因為(RP的(S,G)表項沒有老化,又有了下游接口直接沿途發送join即可),在此過程中源到RP的SPT建立,RPT建立過程同接收者先上線

 

 

 

 

 

3.PIM DR

 

源端網絡或者成員端網絡中,有可能有多台組播路由器轉發組播流量,從而造成重復組播報文的問題。

PIM DR(Designated Router)是源端網絡或者成員端網絡的唯一組播轉發者,由於不存在別的組播轉發路由器就避免了重復組播報文的問題。

 

PIM-SM中各路由器通過比較Hello消息上攜帶的優先級和IP地址,為多路訪問網絡選舉指定路由器DR:

接口DR優先級越高越優先,默認為1

接口DR優先級相同,接口IP地址越大越優先

當DR出現故障后,鄰居路由器之間會重新選舉DR

 [AR5-GigabitEthernet0/0/0]pim hello-option dr-priority 7

[AR5]dis pim int g 0/0/0 verbose
VPN-Instance: public net
Interface: GigabitEthernet0/0/0, 10.1.5.2
PIM version: 2
PIM mode: Sparse
PIM state: up
PIM DR: 10.1.5.2 (local)
PIM DR Priority (configured): 7

 

 

 

4.RPT次優路徑問題

在PIM-SM網絡中,一個組播組只對應一個RP。

源到RP的SPT是否可能存在次優問題?

不可能,因為有組播源地址了,注冊是依據單播路由進行轉發的,單播路由一定是最優路徑

成員到RP的RPT為什么會有次優路徑問題?

因為RPT路徑上的路由器注冊時僅有(*,G)表項,建立RPT時是朝着RP去建立的,如果RP不在組播成員到組播源的最優路徑上,RPT就會出現次優路徑

 

解決方法:

默認情況下成員端DR只要能夠了解到組播源不管流量大小直接發送(S,G)的join,也可以手動設置流量達到多少才發送或者不發送

[AR5-pim]spt-switch-threshold ?
INTEGER<1-4194304> Value of data speed in kbps
infinity Never switch

先看一下不切的場景:

在成員端DR-AR5上配置有了(S,G)表項后不切換最優路徑

[AR5-pim]spt-switch-threshold  infinity

此時AR4的上游接口仍然是連接AR3的0/0/0,也就是說當前是次優路徑

 

此時在AR5上抓包,只能抓到AR5周期向AR4發送向RP150.1.3.3的(*,G)的Join信息

 

 

然后再看一下切的場景

刪除掉AR5上的配置

[AR5-pim]undo spt-switch-threshold infinity

組播源向RP發送register的單播包被RP收到之后,RP會解封裝數據包,按照組播路由表的(*,G)表項發給接收者,此時業務流從RP到了終端,中間所有的路由器上都有了(S,G)的表項

 

於是成員端DR(AR5)主動反向朝着S的方向發送(S,G)的join(當然之前(*,G)的join也還是會周期的發送)

 

 

 

 上游AR4收到之后仍然朝着S的方向從RPF計算的出接口0/0/2發送(S,G)的join(只有(S,G)的join),AR2收到之后增加一個下游接口

 

 

 

 至此,AR3到AR4之間的RPT是不需要的。AR4會主動向RP也就是AR3發送(S,G)的修剪(原有的(*,G)的join也還是會周期發送),AR3收到之后會刪除0/0/0的下游接口,AR4本身上游接口為0/0/0的(S,G)表項也會被刪除。

 

 

 

 因為AR3會每隔1Min收到AR1的注冊信息,而自身的(S,G)表項要3min才能刪除,所以AR3上的(S,G)表項會一直存在。但是因為AR3已經沒有了下游接口,所以向AR2發送(S.G)的修剪信息,AR2收到之后會把下游接口0/0/1的(S,G)減除

下圖中第一個join(包號289)是用於建立SPT的

 

 

思考:路徑優化完成之后實際轉發沒有到達RP,那是否是說明網絡中可以沒有RP呢?

回答:如果組播流24h不間斷是可以的,但是如果組播流量間斷了,要重新建立組播路由表,還是需要RP

 

 

 

 

5.維護組播路由分發樹

當組播分發樹(SPT或RPT)穩定后,成員端會周期性發送Join/Prune報文,用於維護組播分發樹

  成員端周期(60S)朝着S發送join,收到的路由器也再朝着S發送(S,G)的join,直到抵達第一跳路由器,一次join結束

                  如果RP不再最優路徑上,連接RP的路由器還會周期(60s)向RP發送Prune消息抑制接口轉發

加入:

AR5->AR4

 

AR2->AR1

 

 AR1連接組播源的接口:

 

 剪枝:

AR4->RP(AR3)

 如果組播在一段時間后(默認210s)沒有流量則SPT樹會消失,成員端DR恢復到RP的RPT樹

 

 

 

6.總結組播修剪觸發條件

  • 所有組成員離組
  • 所有出接口均為NULL
  • 共享樹到源樹切換(RPT自動優化次優路徑時AR4上從RPT切換到SPT,主動向RP發送修剪消息)

 

 

 

7.SSM

SSM模型針對特定源和組的綁定數據流提供服務,接收者主機在加入組播組時,可以指定只接收哪些源的數據或者指定拒絕接收來自哪些源的數據。加入組播組以后,主機只會收到指定源發送到該組的數據

SSM模型對組地址不再要求全網唯一,只需要每個組播源保持唯一。這里的“唯一”指的是同一個源上不同的組播應用必須使用不同的SSM地址來區分。不同的源之間可以使用相同的組地址,因為SSM模型中針對每一個(源,組)信息都會生成表項。這樣一方面節省了組播組地址,另一方面也不會造成網絡擁塞

為指定組播源,一般SSM都是配合可以指定源的IGMPV3使用,最后一跳路由器從接收者哪里可以獲取到(S,G)表項和下游接口,通過RPF校驗獲取上游接口,直接朝着源發送(S,G)的join建立源樹

PIM-SM(SSM)無需維護RP,無需構建RPT,無需注冊組播源,可以直接在組播源與組成員之間建立SPT,可以消除網絡中的所有的(*,G)表項,減少路由器負擔

配置:

首先刪除前面的RP配置,以及AR3的環回口上的PIM使能

然后在最后一跳路由器上配置IGMPv3,

[AR5-GigabitEthernet0/0/0]igmp  version  3 

注意:指定源組播的組播組地址范圍是232.0.0.0-232.255.255.255

 

 此時通過抓包,可以發現沒有了SM里面復雜的注冊過程,直接AR5周期性(60s)向AR4向AR2向AR1沿途發送了(S,G)的join報文,組播路由表建立。因為AR3不在任何一個路由器的RPF接口上,所以AR3的pim路由表為空,此時網絡中也沒有(*,G)表項

 

 

 

 

 

 

 

 

 

 

如果接收者不支持IGMPV3,也可以在最后一跳路由器上通過手動配置組播源地址和組播組地址實現SSM

 

在AR5上配置:

acl number 2000 

rule 5 permit source 232.1.1.1 0

interface GigabitEthernet0/0/0
ip address 10.1.5.2 255.255.255.0
isis enable 1
pim sm
igmp enable
igmp version 3                                         //成員IGMPv2,最后一跳路由器仍然IGMPv3即可(v3兼容v2)
igmp ssm-mapping enable

#
igmp
ssm-mapping 232.1.1.1 255.255.255.255 10.1.1.1
#
pim
ssm-policy 2000

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM