組播multicast:在一個或跨越多個廣播域,實現(xiàn)點對多點的通信需求,不存在強制性;比單播技術更加靈活、比廣播技術更加高效;廣泛應用在網(wǎng)絡電視、在線直播、遠程教育、視頻會議等對帶寬和數(shù)據(jù)交互實時性較高的信息服務。
單播unnicast:在一個或跨越多個廣播域,實現(xiàn)點對點的通信需求。
廣播broadcast:在同一個廣播域內,實現(xiàn)點對多點的通信需求,存在強制性。
1、 高效性:克服了廣播發(fā)送數(shù)據(jù)的缺點,實現(xiàn)了點到多點之間高效的數(shù)據(jù)傳輸。
2、 節(jié)省資源:更好的帶寬利用,只針對組播組成員發(fā)送且不存在強制性,可以節(jié)省了信源主機和非組播組成員不必要的CPU和內存消耗。
3、 時效性:發(fā)送源只需要發(fā)送一份數(shù)據(jù),而目的地就可以同時接收到該數(shù)據(jù)。
4、 發(fā)送源主機和中間路由器都不必知道接收者的存在就可以直接發(fā)送。
5、 組播可以實現(xiàn)多對一、一對多、多對多的應用。
注:組播只能基于UDP封裝且不能提供可靠傳輸機制;沒有序列號,報文發(fā)送容易亂序,一般需要通過添加實時傳輸協(xié)議RTP來保證數(shù)據(jù)傳輸?shù)男蛄行裕?strong>組播在發(fā)送時可能會產(chǎn)生環(huán)路和重復包。
組播源:信息的發(fā)送者稱為'組播源'或'信源'。
組播路由器:提供組播功能的路由器稱為'組播路由器';組播路由器不僅提供組播路由功能,也提供組成員管理功能;同時也可以是一個或多個組播組的接收成員;同一組播組的成員可以廣泛分布在網(wǎng)絡中的任何地方,即'組播組'關系沒有地域限制;
組播組成員:相同信息的接收者構成一個組播組,每個接收者都是'組播組成員'。
組播設計架構:
L3組播:信源/組播應用程序--研發(fā)工程師
L2組播:組播路由器/組播動態(tài)路由選擇協(xié)議--網(wǎng)絡工程師
-IGP:PIM(協(xié)議無關組播)、DVMRP、MOSPF、CBT
注:PIM對IGP無要求,路由可達即可;而MOSPF基于單播OSPF基礎上運行的。
-EGP:MSDP(組播源發(fā)現(xiàn)協(xié)議)、MP-BGP(BGP v4+)
注:MSDP可以實現(xiàn)跨越不同的AS發(fā)送和接收組播報文,結合MPBG一起使用;
L1組播:組播組成員/因特網(wǎng)組管理協(xié)議IGMP--網(wǎng)絡工程師
注:通過交互IGMP報文,讓最后一跳路由器知道自己身后是否存在組播組成員;不存在就不發(fā)送;存在就延伸樹形結構并將組播發(fā)送給組播組成員。
組播報文封裝:針對不同的應用進行不同的封裝
組播地址:標識一組接收者,不能分配給某個網(wǎng)卡使用,沒有網(wǎng)絡位和主機位的說法,也沒有網(wǎng)絡地址和廣播地址(扁平化地址/32);標準組織IANA將D類地址空間分配給IPv4組播使用,范圍224.0.0.0 -- 239.255.255.255;
IPv4組播MAC地址:前24位地址位為01005E,第25位恒為0;后23位地址位是IP地址的后23位地址(32:1);
IPv6組播MAC地址:將組播地址的后32提取出來,然后在前邊添加3333
因特網(wǎng)組管理協(xié)議IGMP:運行在最后一跳組播路由器和主機之間,用于建立、維護組播組成員關系;通過IGMP在路由器中記錄的信息判斷某個組播組是否在本地有組播組成員,能夠實現(xiàn)兩個功能:
1、主機通過發(fā)送IGMP報文通知路由器希望接收某個特定組播組的信息;
2、路由器通過IGMP報文周期性地查詢局域網(wǎng)內的組播組成員是否處于活動狀態(tài),實現(xiàn)所連網(wǎng)段組播組成員關系的收集與維護。
IGMP報文封裝:Ethernet2|IPv4|IGMP|FCS IP協(xié)議號為2
1、IGMPv1(RFC 1112)中定義了基本的組成員查詢和報告過程;支持ASM模型
版本:IGMP版本為1
類型:成員關系查詢報文Query(0x11)和成員關系通告報文Report(0x12)
校驗和:防止報文被篡改、沖突。
組地址:當用于成員關系通告時,組地址字段包含該組組播地址。
當用于成員關系查詢時,本字段為0,并被主機忽略。
查詢報文Query:由最后一跳路由器60s/次周期發(fā)送,目的地址為224.0.0.1,TTL值為1;路由器給主機發(fā)送Query報文會形成一個IGMP查詢表,老化時間為180s,超過180s沒有收到通告報文就會刪除對應的IGMP表項。
通告報文Report:由PC主機發(fā)送,分為主動通告和針對查詢報文的通告。
IGMP離組:PC會靜悄悄的離組,不會通知路由器,最后一跳路由器在3個hello周期內沒有收到Report報文會將該主機從IGMP查詢列表中刪除。
IGMP report supress優(yōu)化機制:一臺PC收到了路由器發(fā)送的Query報文,不能立馬去做Report確認,PC開啟一個隨機計時器,范圍為1-10s,取值為整數(shù),在計時器過期后,其中的一臺PC會發(fā)送目的地址為該組組播地址的Report報文,最后一跳路由器和組內其他成員收到這個Report報文后就會抑制報告發(fā)送。
當一個域內有多臺最后一跳路由器時,需要選舉出一臺路由器作為IGMP查詢者在IGMPv1中就需要由組播動態(tài)路由選擇協(xié)議(如PIM)選舉出唯一的指定路由器DR作為IGMP查詢者。
2、 IGMPv2(RFC 2236)在IGMPv1的基礎上添加了指定組查詢、組成員快速離開的機制和最大響應時間等機制;只支持ASM模型
類型:
1)成員關系查詢(0x11)
-常規(guī)查詢:用于確定組播組有哪些成員,常規(guī)查詢地址由全零表示;
-指定組查詢:用于查詢特定的組播組是否還有組成員。
2)版本2成員關系通告報文(0x16)
3)版本1成員關系通告報文(0x12)
4)離組報文Leave Group message(0x17)
最大響應時間:最大響應時間為10s,響應時間間隔為0.1s
校驗和:防止報文被篡改、沖突。
組地址:在查詢消息中,發(fā)送一個常規(guī)查詢報文時組地址域設為0;發(fā)送一個特定組查詢報文時,則用該組的組播組地址;發(fā)送成員報告或離開組的報文時,組地址保留了要報告或要離開的組播組地址。
查詢者選舉:當有多個最后一跳路由器時,路由器會互相發(fā)送Query報文進行查詢者選舉(224.0.0.1),比較路由器的接口地址,地址小的路由器會被選舉為查詢者,查詢者周期性60s/次發(fā)送Query報文,鄰居路由器超過120s沒有收到Query報文,接口地址第二小的路由器成為查詢者(和PIM選舉的DR無關)
離組過程:主機在關閉組播應用的時候會通過224.0.0.2給路由器發(fā)送離組報文Leave Group message,路由器收到離組報文后會立即發(fā)送Group-specific query(目的地址為離組報文發(fā)送的組播組地址)并將最大響應時間修改為2s(思科只發(fā)送一次),路由器在2s內收到主機的Report報文,會保留組播查詢表項。
路由器在2S內沒有收到Report報文就會立即刪除對應的IGMP表項。
Router#show ip igmp group(查看igmp表項)
Router#show ip igmp int e0/0查詢路由器接口igmp配置
3、IGMPv3(RFC 3376)中增加的主要功能是成員可以指定接收或拒絕來自某些組播源的報文,實現(xiàn)了對SSM模型的支持。
1、保留(Resv):發(fā)送的時候以0填充,接收的時候不做處理,被忽略。
2、標志位S(禁止路由器處理):當被設置成1時,表示任何接收路由器禁止更新它們在收到查詢時要更新的那些定時器。但它不禁止查詢者選舉或者普通的在路由器上執(zhí)行的(當路由器作為一個組成員的時候)主機端的查詢處理。
3、查詢者的健壯變量(QRV):如果不為0,QRV中包含中一個被查詢者使用的[健壯變量]的值,如果查詢者的健壯變量的值超過7,即QRV字段的最大值,那么QRV被設成0。路由器取最近收到的查詢中的QRV值作為它們自己的健壯性變量的值,除非最近收到的QRV是0,在這種情況下,接收者使用缺省的健壯性變量值,或者是一個靜態(tài)配置的值。
4、查詢者的查詢間隔代碼(QQIC):指定查詢者使用的查詢間隔。
5、源數(shù)量Number_of_Source:表明該查詢中存在多少個源地址,在普通查詢或指定組查詢中這個值是0,在指定多個源的查詢中,這個值為非0值。
6、源地址Sourceaddress:n個IP單播地址的數(shù)組,n就是源數(shù)量字段的值。
在IGMPV3中它有了以下的改進功能:
1、增加了組播組成員的控制能力;IGMP V3不僅可以指定要加入哪個組播組,還能明確要求從哪個指定組播源接受信息,這也是指定源組播功能。
2、響應消息包含多組記錄:IGMP V3響應消息包含的組地址為224.0.0.22,可以攜帶1個或多個組記錄,可以包含組播組地址、數(shù)目不等的源地址信息。
3、取消了Report的抑制機制、增加了指定源組查詢報文;取消了離組報文,需要結合第三方協(xié)議配合離組。
互聯(lián)網(wǎng)組管理協(xié)議嗅探IGMP Snooping:運行在二層設備上的組播約束機制,用于管理和控制組播組成員;運行IGMP Snooping的二層設備就有能力識別所有的IGMP報文,通過對收到的IGMP報文進行分析,為端口和組播IP地址建立起映射關系表項,并根據(jù)這樣的映射關系精確轉發(fā)組播數(shù)據(jù)到達指定組播組成員;
注:思科交換機默認開啟IGMP Snooping。
版本:CGMP(初始版本)、IGMP Snooping、IGMP Snooping Proxy(代理)
1)路由器端口(Router Port):交換機上朝向三層組播設備(DR或IGMP查詢者)一側的端口,如Switch A和Switch B各自的Ethernet1/1端口;交換機將本設備上的所有路由器都記錄在路由器端口列表中。
2)成員端口(Member Port):又稱組播組成員端口,交換機上朝向組播組成員一側的端口,如Switch A的Ethernet1/2和Ethernet1/3端口和Switch B的Ethernet1/2端口;交換機將所有成員端口都記錄在IGMP Snooping轉發(fā)表中。
IGMP Snooping工作機制:
1、 普遍組查詢
IGMP查詢者定期向本地網(wǎng)段內的所有主機與路由器(224.0.0.1)發(fā)送IGMP普遍組查詢報文,以查詢該網(wǎng)段有哪些組播組的成員;
2. 報告成員關系
如果主機要加入某個組播組,它會主動向IGMP查詢者發(fā)送IGMP成員關系通告報文以聲明加入該組播組或Report回復查詢報文;在收到IGMP成員關系通告報文時,交換機將其通過VLAN內的所有路由器端口轉發(fā)出去,從該報文中解析出主機要加入的組播組IP地址,并對該報文的接收端口做如下處理:
1)如果不存在該組播組所對應的轉發(fā)表項,則創(chuàng)建轉發(fā)表項,將該端口作為動態(tài)成員端口添加到出端口列表中,并啟動其老化定時器;
2)如果已存在該組播組所對應的轉發(fā)表項,但其出端口列表中不包含該端口,則將該端口作為動態(tài)成員端口添加到出端口列表中,并啟動其老化定時器;
3)如果已存在該組播組所對應的轉發(fā)表項,且其出端口列表中已包含該動態(tài)成員端口,則重置其老化定時器。
交換機不會將IGMP成員關系報告報文通過非路由器端口轉發(fā)出去,因為根據(jù)主機上的IGMP成員關系報告抑制機制,如果非路由器端口下還有該組播組的成員主機,則這些主機在收到該報告報文后便抑制了自身的報告,從而使交換機無法獲知這些端口下還有該組播組的成員主機。
3. 離開組播組
運行IGMPv1的主機離開組播組時,當其對應的動態(tài)成員端口的老化定時器超時后,交換機就會將該端口對應的轉發(fā)表項從轉發(fā)表中刪除。
運行IGMPv2或IGMPv3的主機離開組播組時,會通過發(fā)送IGMP離開組報文,以通知組播路由器自己離開了某個組播組;當交換機從某動態(tài)成員端口收到IGMP離組報文時,首先判斷要離開的組播組所對應的轉發(fā)表項是否存在以及該組播組所對應轉發(fā)表項的出端口列表中是否包含該接收端口:
-如果不存在該組播組對應的轉發(fā)表項或該組播組對應轉發(fā)表項的出端口列表中不包含該端口,交換機不會向任何端口轉發(fā)該報文,而將其直接丟棄;
-如果存在該組播組對應的轉發(fā)表項且該組播組對應轉發(fā)表項的出端口列表中包含該端口,交換機會將該報文通過VLAN內的所有路由器端口轉發(fā)出去。同時由于不知道該接收端口下是否還有該組播組的其它成員,所以交換機不會立刻把該端口從該組播組所對應轉發(fā)表項的出端口列表中刪除,而是重置其老化定時器。
當IGMP查詢者收到IGMP離開組報文后,從中解析出主機要離開的組播組的地址,并通過接收端口向該組播組發(fā)送IGMP特定組查詢報文。交換機在收到IGMP特定組查詢報文后,將其通過VLAN內的所有路由器端口和該組播組的所有成員端口轉發(fā)出去。對于IGMP離開組報文的接收端口(假定為動態(tài)成員端口),交換機在其老化時間內如果從該端口收到了主機響應該特定組查詢的IGMP成員關系報告報文,則表示該端口下還有該組播組的成員,于是重置其老化定時器;如果沒有從該端口收到主機響應特定組查詢的IGMP成員關系報告報文,則表示該端口下已沒有該組播組的成員,則在其老化時間超時后,將其從該組播組所對應轉發(fā)表項的出端口列表中刪除。
組播動態(tài)路由選擇協(xié)議:讓路由器擁有轉發(fā)組播流量的功能;運行在三層組播設備之間,用于建立和維護組播'路由'并正確、高效地轉發(fā)組播數(shù)據(jù)包;組播'路由'建立了從一個信源到多個接收者之間的無環(huán)數(shù)據(jù)傳輸路徑,即組播分發(fā)樹。
組播'路由'只有在數(shù)據(jù)流量出現(xiàn)的時候才會存在,在組播流量出現(xiàn)后的180s就會消失;組播'路由'為路由器記錄的樹形結構信息,包含信源的IP地址、組播流量的組播組地址、流量的入接口(incoming-interface)、流量的出接口信息列表(outgoing-interface-list)。
-IGP:PIM(協(xié)議無關組播)、DVMRP、MOSPF、CBT
-EGP:MSDP(組播源發(fā)現(xiàn)協(xié)議)、MPBGP(BGP v4+)
協(xié)議無關組播PIM:與單播路由協(xié)議無關,但事實上還是依靠單播路由來建立組播PIM鄰居;當組播報文到達本地設備時,首先對其進行RPF校驗;若RPF校驗通過,則創(chuàng)建相應的組播'路由'表項,從而進行組播報文的轉發(fā);若RPF檢查失敗,則丟棄該報文。
反向路徑轉發(fā)RPF(Reverse Path Forwarding):組播路由協(xié)議依賴于已有的單播路由信息來創(chuàng)建組播'路由'表項,在創(chuàng)建組播'路由'表項時,使用RPF校驗機制,以確保組播數(shù)據(jù)能夠沿著正確的路徑傳輸,避免環(huán)路和重復包;路由器收到組播流量,先判斷路由器去往信源的單播路由對應的出接口是否是接收組播流量的入接口,如果是,則轉發(fā)組播流量;如果不是,則丟棄;路由器對于一個信源,RPF接口有且只有一個;如果路由器去往信源有多條鏈路,怎么進行RPF接口選擇?
1. 如果出接口不一樣,則PK出接口地址,接口地址大的選舉為RPF接口;
2. 如果出接口一樣,下一跳地址不一樣,則比較下一跳IP地址大小,下一跳地址大的選舉為RPF接口。
3.寫組播靜態(tài)轉發(fā)信息:ip mroute+信源ip地址/掩碼+RPF接口+去往信源的上一跳地址(根據(jù)網(wǎng)絡類型選擇是否需要+去往信源的上一跳地址)。
4.啟用MP-BGP路由協(xié)議,IPv4 multicast中運行MP-BGP的接口成為RPF接口
如果在路由器上同時運行以上三種方法,在進行組播路徑選擇的時候首先遵循最長匹配原則,其次比較管理距離(組播靜態(tài)優(yōu)于MP-BGP優(yōu)于單播路由)。
報文封裝:Ethernet2|IPv4|PIM|FCS IP協(xié)議號103
版本:當前使用版本2
類型:Hello/0 加入/剪枝/3 Assert/5
嫁接/6 嫁接回應/7 狀態(tài)刷新/9
Hello發(fā)送時間為30s,hold 時間為3.5倍hello時間;Hello發(fā)送使用的組播組地址224.0.0.13;路由器之間首先通過發(fā)送hello建立PIM鄰居;
在MA網(wǎng)絡中,需要進行DR選舉:先比較接口優(yōu)先級,取值范圍為0-42億,0表示優(yōu)先級最低,默認值為1;優(yōu)先級高的選舉為DR;如果優(yōu)先級一樣比較接口地址,大的選舉為DR;DR支持搶占,沒有BDR;DR在Sparse模式下非常重要。
根據(jù)實現(xiàn)機制的不同,PIM分為以下兩種模式:
1、PIM-DM(Dense Mode密集模式)/推模型,簡稱最短路徑樹SPT,也稱源樹;
由于對路由器消耗大,一般適用于規(guī)模較小、組成員密集的局域網(wǎng)內。
1)假設所有主機都需要接收組播報文,將組播數(shù)據(jù)泛洪到網(wǎng)絡的所有節(jié)點。
2)對沒有組播數(shù)據(jù)轉發(fā)的分支進行修剪,只保留有接收者的分支。
3)周期性重復'擴散-修剪'。
4)當被修剪的分支上出現(xiàn)組播組成員時,為了減少該節(jié)點恢復成轉發(fā)狀態(tài)的時間,適用'嫁接'機制恢復對組播數(shù)據(jù)的轉發(fā)。
?第一跳路由器收到組播流量,首先校驗RPF接口,只要RPF接口沒有問題,就會把組播流量轉發(fā)給所有PIM鄰居以及所有接收IGMP Report的組播組成員;所有路由器都會形成一個(S,G)組播組表項和一個(*,G)組播組表項。
(S, G)表示'組播源組',通常表示最短路徑樹或有信源S發(fā)往組播組G的組播報文,其中S(source)為信源IP地址,G(group)為組播組地址。
(*, G)表示由任意組播源發(fā)往組播組G的組播報文,'*'表示任意組播源,G(group)表示特定組播組地址。
?組播流量泛洪后3分鐘后才會開始修剪,對于沒有連接組播組成員或沒有下游其他鄰居的路由器,會給上游鄰居回向發(fā)送Prune修剪報文,路由器收到Prune報文不會立即停止發(fā)送組播,只有在路由器連接所有鄰居的接口都收到Prune報文才會停止發(fā)送組播流量;但是不會刪除對應的(S,G)組播組表項;每隔3分鐘還有再泛洪一次保證新的接入者能夠加入。
?嫁接(Graft)報文為使新加入的組播組成員不需要等待3min就可以正常接收到組播流量;當處在修剪狀態(tài)的路由器下連接的設備突然出現(xiàn)組播組員,默認3分鐘后才會收到組播流量;為加快網(wǎng)絡收斂速度,如果路由器有組播接收者想要的對應的組播表項(S,G),該路由器會向上游路由器發(fā)送Graft報文,上游路由器收到Graft報文會立即將修剪狀態(tài)超時并向上游鄰居發(fā)送Graft報文,組播組流量就可以立馬潑了下來。
?通過斷言機制Assert防止重復報文,做負載均衡的路由器通過既能發(fā)送又能接收組播流量的接口發(fā)送斷言報文(斷言報文包含:去往信源路由的管理距離、去往信源單播路由的度量值和接口IP地址),通過比較斷言報文中的參數(shù)('管理距離>度量值>IP地址,管理距離/度量值是越小越好,IP地址是越大越好)選舉出Winner,由Assert winner發(fā)送組播流量,其他接口不允許轉發(fā)組播流量。
2、PIM-SM(Sparse Mode稀疏模式)/拉模型;對應兩棵樹,從信源和RP之間的叫SPT,從RP到接收者之間的叫RPT共享樹;比較節(jié)省路由器的硬件資源,適用于范圍廣、組播成員分散的大型網(wǎng)絡中;
1)假設所有主機都不需要接收組播報文,先確定下游是否存在接收者。
2)設定匯集點RP(Rendezvous Point)路由器,所有組播數(shù)據(jù)通過RP轉發(fā)。
3)最后一跳路由器向RP發(fā)送Join報文,該報文逐條發(fā)送到RP,所經(jīng)過的路徑就是組播轉發(fā)路徑。
4)信源向RP注冊,發(fā)送組播數(shù)據(jù),RP沿著組播轉發(fā)路徑(RPT)轉發(fā)數(shù)據(jù)。
?首先需要指定一個RP;RP為啟用PIM路由器上的一個接口,RP到路由器必須可達,可以指定多個RP但同時工作的只有一個RP。RP接口可以是物理接口,也可以是邏輯接口,建議使用邏輯接口以保持穩(wěn)定性。
?最后一跳路由器收到來自組播成員的Report報文,會查看去往RP單播路由的下一跳地址,根據(jù)下一跳地址向上一跳鄰居路由器發(fā)送單播Join報文,鄰居路由器會形成(*,G)表項并向RP方向發(fā)送Join報文,直到RP收到Join報文。
(*, G):表示共享樹(多個源共享一棵樹)或由任意組播源發(fā)往組播組G的組播報文,'*'表示任意組播源,G表示特定組播組IP地址。
?第一跳路由器將收到的第一個組播幀封裝成單播的PIM報文發(fā)送給RP,這個報文稱為Register(注冊報文);RP會查看是否有共享樹存在,如果有,會將Register報文解封裝發(fā)送給最后一跳路由器的組播組成員并根據(jù)單播路由向信源發(fā)送Join報文,沿途的路由器都會形成(S,G)表項,通過兩棵樹的拼接形成從信源到組播組成員的完整鏈路;與此同時RP會給第一跳路由器發(fā)送Register-stop報文,第一跳路由器開始發(fā)送流量,當流量到達最后一跳路由器,最后一跳路由器有一個閾值(思科默認為0kbps),超過后自動切換成源樹(share tree),最后一條路由器向信源發(fā)送Join報文;如果中間路由器到信源有更優(yōu)的路徑,中間路由器發(fā)送 RP-bit prune報文給RP阻塞中間路由器到RP的路徑(永久阻塞),中間路由器根據(jù)IGP路由選擇到達信源的最優(yōu)路徑發(fā)送組播流量。
在Spare-mode下,如果有多臺第一跳路由去往RP,在收到信源發(fā)送的組播流量時,只有DR路由器才能給RP發(fā)送Register報文;如果有多臺最后一跳路由器,只有選舉為DR的那個最后一條路由器才能給RP發(fā)送Join報文。
在RPT共享樹中,路由器不是基于三層報頭的源IP地址的RPF校驗,而是基于RP的接口地址進行RPF校驗;
靜態(tài)RP:沒有冗余,可能會出現(xiàn)單點故障,不常用;手工配置RP地址 ip pim rp-address+環(huán)回口地址,需要在所有PIM的路由器上配置;默認RP選舉動態(tài)優(yōu)先級高于靜態(tài);后面接override參數(shù)才能讓靜態(tài)RP生效。
Auto-RP:思科私有的選舉RP的方式,可以實現(xiàn)RP的自動選舉、實現(xiàn)冗余備份;可以在中大型網(wǎng)絡中使用;Auto-RP定義了兩個角色和報文:
?CRP(RP候選者):想成為RP的路由器,每臺路由器都能做。
?CMA(候選者中繼代理):用來判斷誰是RP并通告RP消息的路由器。
注:成為CRP或CMA的條件,必須宣告進IGP且接口必須啟用任意模式的PIM
?宣告報文Announce:接口啟用CRP的路由器會自動發(fā)送Announce報文(源地址:想成為RP接口地址,目的地址:224.0.1.39)給所有鄰居,普通路由器不會監(jiān)聽224.0.1.39報文,只有CMA會監(jiān)聽224.0.1.39;如果有多臺路由器參選RP,會比較接口地址,接口地址大的路由器會被選舉為RP。
?發(fā)現(xiàn)報文Discover:選舉出RP后,CMA會給鄰居路由器發(fā)送Discover報文(源地址:CMA接口地址,目的地址:224.0.1.40),然后鄰居路由器會泛洪擴散給域內所有路由器。
?在Spare模式下,在CRP/CMA是同一臺路由器和CRP和CMA直連的情況下,域內選舉RP可以成功;對于CRP和CMA不直連的情況,CRP發(fā)送Announce報文給鄰居時,因為鄰居此時不知道RP是誰,會將Announce報文丟棄,RP選舉失敗。
1、如果想要選舉成功,需要將接口模式修改為稀疏密集模式Spare-Dense-mode,接口在Spare模式下無法轉發(fā)Announce報文,會切換到Dense模式將Announce報文發(fā)送給鄰居,最終發(fā)送給CMA,CMA會將RP信息通過Discover報文發(fā)送給域內所有路由器,RP選舉成功后正常組播流量會以Spare模式發(fā)送。
2.全局配置模式下敲ip pim auto-rp listener (224.0.1.39)敲完這條命令,路由器在收到224.0.1.39的報文會以Dense模式發(fā)送,對于其他報文以Spare模式發(fā)送。
將接口設置為CRP命令:ip pim send-rp-announce loopback 0 scope 255
將接口設置為CMA命令:ip pim send-rp-discover loopback 0 scope 255
BSR:共有標準的選舉RP的方式,可以實現(xiàn)RP的自動選舉且切換速度快,支持冗余備份和負載均衡;BSR也定義了兩個角色:
?RP-Candidate:相當于RP候選者
?C-BSR:相當于候選者中繼代理
?在BSR環(huán)境中,由于候選RP單播發(fā)送RP通告給BSR;所以是先選舉BSR;BSR初始通告延遲為130s,在初始延遲時間內,BSR不會發(fā)送任何報文,而是監(jiān)聽有沒有其他的BSR存在,其他BSR周期性(60s)發(fā)送BSR通告,想成為BSR的路由器通過PK選舉出C-BSR(先PK優(yōu)先級,以小為優(yōu);優(yōu)先級一樣PK接口地址,以大為優(yōu)),C-BSR周期性60S/次(2.5倍hold時間)發(fā)送BSR通告,通告目的地址為224.0.0.13(PIM的hello地址),內容包含BSR接口地址、BSR優(yōu)先級、BSR計時器和RP-SET(所有候選RP的信息,初始為空)。
?收到BSR通告的路由器會先進行RPF校驗:
1.查看單播路由表去往BSR路由的出接口是否是接收BSR通告的入接口。
2.查看去往BSR單播路由的下一跳地址和接收BSR通告三層報頭源IP地址是否一致,如果校驗成功,則接收BSR報文并通過其他接口產(chǎn)生對應的BSR通告并發(fā)出;如果不一致,則丟棄。
?RP的選舉:收到BSR通告的路由器會根據(jù)最長匹配原則、比較優(yōu)先級,以小為優(yōu)、比較RP接口地址,以大為優(yōu);Auto-RP由CMA確定RP,BSR是由各自選舉出適合自己的RP,以實現(xiàn)RP的負載均衡。
(Route-config)# ip pim rp-candiate loopback 0 priority
(Route-config)# ip pim bsr-candiate loopback 0 priority
(route)# Show ip pim bsr-router