前文我們了解了組播路由協議PIM以及PIM-DM密集模式相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/16084310.html;今天我們來聊一聊PIM的另外一種模式SM稀疏模式相關話題;
PIM-SM概述
PIM-SM(PIM Sparse Mode,協議無關組播-稀疏模式)是組播PIM的另外一種模式稀疏模式,該模式和密集模式相反,使用“拉(pull)”的方式來傳輸數據;適用於范圍較廣的大中型網絡中,組成員分布相對分散的環境中;
PIM-SM工作流程
1、鄰居發現和DR選舉
提示:PIM-SM鄰居發現過程和PIM-DM相同,都是通過發送hello包相互建立起鄰居;不同的是DM只會在靠近用戶側路由器選一個DR來充當IGMPv1的查詢器,v2v3版本不依賴PIM來選舉查詢器;簡單講就是DM里只會在靠近用戶側側的路由器上選舉一個DR,其作用就僅僅是充當IGMPv1的查詢器;而SM模式里DR不但要在靠近接收者側的路由器上選舉DR,在靠近組播源的路由器上也會選擇DR,其作用就是作為共享網段中唯一轉發組播數據的轉發者;
DR選舉規則
1、先比較優先級,優先級高者成為DR;
2、如果優先級一樣,則比較ip地址,ip地址大者成為DR;
提示:接收者側的DR主要負責向RP發送加入報文,組播源側的DR主要負責向RP發送組成報文;RP就是共享點從源到RP一路建立源樹,RP到接收者一路建立共享樹;
提示:連接接收者的路由器向組播組對應的RP發送加入報文,該報文被逐跳送達RP,所經過的路徑就形成了RPT的分支;組播源如果要想組播組發送組播數據,首先由於組播源側DR負責向RP進行注冊,把注冊報文通過單播的方式發送給RP,該報文到達RP后觸發構建SPT。之后組播源把組播數據沿着SPT發向RP,但組播數據達到RP后,被復制並沿着RPT發送給接收者;
2、用戶加入過程
提示:SM和DM不一樣有擴散-剪支-嫁接的過程;SM默認會認為整個網段里沒有用戶存在,所以它不會一上來就擴散;而是通過接收者DR向RP發起加入消息,該消息沿着每一台路由器都創建(*,G)表項,形成以RP為根的RPT;也就是說SM模式中只有出現接收者,才會構建組播路由,才會向對應網段轉發組播數據;如果有用戶離開,則也是用戶側發送剪支消息;加入-剪支是隨用戶側的變化而變化;
提示:不管是靠近用戶側還是組播源側的路由器,都是在共享網段中選舉DR,不同共享網段的用戶是不同的DR;
3、組播源注冊過程
提示:首先是由DR通過組播報文中封裝單播注冊消息發送給RP,RP收到組播源的注冊消息后,會發送加入消息,從而組播源到RP的路由器建立起SPT;隨后在由RP向用戶側DR轉發組播數據(通過RPT),最終組播數據送達至用戶;
注冊停止過程
提示:當RP發送加入消息后,對應SPT形成后,RP會向組播源側DR發送注冊停止消息,意思就是告訴組播源你的注冊我這邊已經收到了,你那邊不用一直發送注冊消息;你可以停了,類似一個確認消息吧;
通過上述過程,我們不難看出從源到RP,然后再從RP到用戶側,這樣一條轉發路徑不一定是最優的,並且如果有多個組播源,此時RP的流量是非常高的,負載也比較重;所以為了避免次優路徑和RP的負載,就有了下面的RPT向SPT切換到過程;、
4、RPT向SPT切換過程
提示:這個切換我們可以手動配置是否要切換,這個根據個人的環境來配置,默認情況下華為的模擬器是當接收者收到第一個組播報文后,接受者側DR發送加入消息,當組播源側DR收到用戶側DR發送的加入消息后,會隨加入消息的路徑建立起源樹,從而實現RPT向SPT的切換;
提示:由用戶側DR或上游路由器向RP發送Prune消息,RP向組播源DR發送Prune消息進行多余路徑剪支;
提示:通過Prune剪支消息去把對應的源樹剪掉,從而完成源樹切換,最終形成源到接收者之間新的源樹;
通過上述RPT向SPT的切換,我們可以看到PIM-SM能夠以比PIM-DM根經濟的方式建立SPT(其原因是SM不用全網擴散,全網擴散會消耗沿路路由器的內存資源、網絡帶寬等);
PIM-SM中的“Assert”斷言機制和PIM-DM中的斷言機制一樣,沒有區別;