MSDP(TCP:639)
Multicast Source Discovery Protocol多點傳播源發現協定(僅用于IPv4 PIM-SM(不含SSM))
MSDP作用:讓不同多點傳播域的RP,知道多點傳播源位置
- 因為多點傳播基于IGP協定,同一個多點傳播域的PIM路由器,全部需要知道RP的位置。在跨AS場景下,需要MSDP
- MSDP不傳輸多點傳播資料
它僅在RP之間使用SA封包單點傳播傳遞(S,G)表項,使其他域組成員知道S位置,建構SPT樹。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiNx8FesU2cfdGLwczX0xiRGZkRGZ0Xy9GbvNGLyMzXlpXazxSPNVEV2lGc1oUdvVzXpplNBJUaUVkTxE1X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3IzM0ADN0MTM1IDOwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 精确地講,這裡的AS應指的是不同多點傳播域(擁有不同RP)
如圖,
- Source活躍後,頭一跳路由器向AS1中RP(R2)注冊。
- R2作為起源RP,使用MSDP協定向其他MSDP對等體(通常是RP)通告SA封包。
- AS2中,R4不是RP(但R4是MSDP中繼),轉發SA封包到接收者AS的RP(R5、R6)中。
- R5、R6下存在接收者,根據收到的SA封包,知道了(S,G)資訊,朝着Source方向建構SPT(RPF方向,單點傳播方向)
- 實際上R6是RP,建立了到S的最短路徑樹,但不一定是接收者DR(R7)的最短路徑樹,是以R7知道了S的位置後,再建構SPT樹
MSDP對等體建立過程
SA(Source-Active)封包
- SA消息通告給不同多點傳播域的RP,讓各RP知道多點傳播源IP
SA封包封裝【IP【TCP 639【TLV】】】
SA消息内容: Source IP 多點傳播源IP
Group 組位址
Source RP IP 多點傳播源所在多點傳播域的RP
SA封包的RPF檢查
如圖,源RP發送SA消息給自己MSDP對等體,R4收到2份SA消息。
為了防止SA消息成環,MSDP裝置收到SA消息時,需要RPF檢查。
以R4為例,
R4收到SA後,确定到源RP的最佳下一跳RP=R2(稱為RPF對等體),選擇RPF接口
不是RPF接口傳來的SA丢棄(R3的SA)
RPF接口是由 單點傳播路由(BGP、IGP)、MBGP、靜态多點傳播路由 共同決定的
Mesh Group
将所有RP建立全互聯的IBGP鄰居關系,并成為一個Mesh Group
- Mesh Group組成員SA消息僅傳一跳
- Mesh Group組成員發來的SA不進行RPF檢查,直接接收
同AS MSDP配置
相同AS,不同多點傳播域
1. IGP(實際中,跨域多點傳播RP之間單點傳播路由可達就行)
2. PIM-SM
[all R] multicast routing-enable
[all R-G] pim sm //多點傳播流量經過的接口開啟PIM-SM,環回口可不開
[R1、R2] pim
static-rp 1.1.1.1
[R3、R4] pim
static-rp 4.4.4.4
[R4-G] igmp enable
3. MSDP
[R1] msdp
peer 4.4.4.4 connect-interface LoopBack0
[R4] msdp
peer 1.1.1.1 connect-interface LoopBack0
[RP] display msdp sa-cache //檢視SA消息
跨AS MSDP配置
- AS 100、AS 200内部IGP
- R2-R3建立EBGP鄰居關系
- 全網PIM-SM協定(靜/動RP)
- MSDP(R1、R4互指)
需要考慮的問題:
1. 如果采用動态RP的方式。C-BSR封包逐跳、多點傳播,會跨AS發送。使得RP資訊跨AS傳遞并共同選舉,不妥。
[R2-G0/0/1]
[R3-G0/0/0] pim bsr-boundary //設定BSR邊界,不傳Bootstrap封包
2. R4-R1需要路由互通(建構SPT樹、MSDP傳SA)
在R2、R3上釋出各RP位址的BGP路由,并将BGP引入IGP
3. RP4最終需要朝着源S,建立SPT(需要源的路由)
R2的BGP引入192.168.1.0/24
MSDP實作任播(Anycast)RP
任播RP,多個RP在同AS内使用相同IP
- IGP
- PIM-SM(IGMP)
實作任播RP需要:
1. R1、R4配置相同的IP位址作為C-RP位址,并通告進IGP。各路由器會自動選擇“近”的
2. 部屬C-BSR盡量在其他裝置(或其他IP接口,增加可靠性)。BSR通過Bootstrap封包逐跳、多點傳播告訴了全網,RP=14.1.1.1
此時,AS内部相當于分成了2個多點傳播域(左邊4台、右邊3台)
出現一個問題,當多點傳播源S活躍時,源DR2需要向RP注冊(R2向最近的RP1注冊)
這就R2、R1上存在(S,G)表項。而R3、R4上無(S,G)表項。PC4收不到多點傳播流量
是以還需要在R1-R4上啟用MSDP,讓R1通過SA消息告訴R4多點傳播源的IP
3. R1-R4使用别的IP接口,建立MSDP鄰居(Loopback1:1.1.1.1-4.4.4.4)
[R1、R4] msdp
peer 4.4.4.4 connect-interface LoopBack1
這裡還存在一個問題:
MSDP發送的RA消息中,攜帶着源DR的IP(兩邊都是14.1.1.1沖突)。
還需要指令 [R1、R4] msdp
originating-rp LoopBack1
最終,R1、R4都有(S,G)表項。任播RP實作。