創作內容

0 GP

組播 PIM Multicast

作者:達文西│2017-10-24 00:06:10│巴幣:0│人氣:477
先討論各種報文傳播,一般控制層面的報文都是以組播型式來傳遞



單播 Unicast
以BGP只使用TCP 179 port單播,IGP使用單播非常麻煩一般少用

廣播 Broadcast
IGP可以使用廣播,但是如果使用廣播,會帶有強制性,如果有PC也周期性的收到更新報文之後即使不需要也不能直接丟棄,要一直拆包到傳輸層報頭的時候,確定端口號沒有才會丟棄。無形中浪費很多流量。

組播 Multicast
使用組的概念,例如ospf使用224.0.0.5和224.0.0.6,只有路由器啓用ospf之後才會監聽這個組播,如果沒有啓用ospf就會直接丟棄,即使PC收到這些流量也會直接丟棄

發送者只管發,不管收接者在哪或如何,而接收者只有要監聽的會去收,其他都丟棄,不用知道目的位址,當我們需要把相同的流量同時發給一組接收者時,使用組播,常用於股市交易所的資料,同時發給一群螢幕給接收同步畫面。

路由器可以基於組播轉發流量,從而跨越單一廣播域。(需運行協議)
缺點:組播基於UDP-based(數劇層面)
1:Best-effort delivery
盡力傳輸協議(UDP缺點)無可靠性

2:No congestion avoidance
沒有壅擠控制(UDP缺點)

3:Duloicates
重覆報文(組播缺點)如下圖,PC會同時收到R1和R2來自相同來源的組播流量,如果傳的只是數據流量就算了,但傳的如果是信令的控制流量,例如卷一所說的,你開一台坦克,要右轉90度C開砲,這時收到了二份控制流量,就是執行二倍效果,所以要避免這個情況。要利用修改PIM來防止多重控制流量。


4:Out-of-sequence delivery
傳遞亂序(UDP缺點)因為UDP沒有序列號,會導致亂序,不過一般會因為UDP有一個RTP封裝報頭(Read time Transport Protocol / 實時傳輸協議),這個協議會為了整個數劇流提供一個序列性。


Types of Multicast Applications 基於組播運用

One to many:一對多 常用於VOIP(語音)或VOD(多播影像)

Many to many:多對多 用於多人視訊會議,多人同時是接收者也是發送者

Many to one:監控系統,多個鏡頭同時對應一台伺服器

IP Multicast Service Model (cont.)

First-hop:第一跳(樹根)

Last-hop:終端(葉片)



分三個階段,最上面是First-hop路由器(軟体那邊的事,網路工程不關心)

之後會連結多個First-hop(由PIM協議運作)

最終到達Last-hop
(控制接收者的交互式協議和Last-hop路由器交互,讓Client想接受流量時知道去找誰,也讓發送者知道要發給哪些人,這個交互式協議就是 IGMP)


Multicast Routing

IGP Intradomain:AS內使用

DVMRP:無人使用

PIM (Protocol Independent Multicast / 協議無關組播路由選擇協議):
當我們在一個AS部署PIM,可以無視你在AS內部署什麼IGP,所以叫協議無關


MOSPF:
這個其實就是OSPF,作用於六類LSA,幫助域內傳遞組播流量,要使用MOSPF前提條件是在AS內所部署的單播路由協議的IGP必需是OSPF,由於限定條件的問題,所以少人用

CBT:無人使用

EGP interdomain:AS間使用

MBGP(BGPv4+):

MSDP(組播源發現協議):

IGMP (Inter Group Management Protocol)


IGMP v1 & v2 (Inter Group Management Protocol)
控制接收者與發送者的組播交互式協議和Last-hop路由器交互,讓Client想接受流量時知道去找誰問,也讓發送者知道要發給哪些人。
!
Ethernet IP IGMP FCS
!
IGMP上層協議號:2(ICMP是1)
!
一般作用於乙太網環境中運作,因為IGMP一般用於Last-hop到終瑞PC的連接,而這段連接PC要連到網路,需要乙太網環境。
!
IGMPv1 RFC 1112定義
!
報文:
Merbership Queries:組播組成員資格查詢,由Server發
來源:Router對下游的出接口
目的:會往 224.0.0.1 周期發報文,TTL=1,預設60s一次,往下游發流量
組播地址:Group Address 0.0.0.0(因為不知發誰)

Merbership Reports:組播組成員資格應答,由PC發
來源:PC對上游的出接口
目的:會往 224.1.1.1 和組地址一樣,告知網段內路由器有人要收組播流,告訴網段內想加入組播網段內相同成員,不要發組播報文。
一台路由器發送查詢給PC,PC不是立即響應一個查詢,而是在本地開一個「最大響應時間計時器」,是一個隨機值,範圍1~10秒,如果網段內有多台PC都要加入組播組,當他們同時收到查詢時,會各自啓用計時器,那優先到期的PC,就立刻返回Reports報文,其他PC收到之後,會立刻取消要發送的報文計時器。

組播地址:Group Address 224.1.1.1(想加入的224.1.1.1的組播組地址)
Report也可以充當對Query的Ack,也可以先主動發送Report當加入的要求報文
查詢指令:show ip igmp group

在IGMPv1 因為沒有查詢者選舉機制,所以使用PIM的DR來選查詢者(相當於ospf DR)

Ver Type Unused Checksum
Group Address
Ver Code Version = 1 ##代表IGMPv1
Type:
1 = Host Membership Query
2 = Host Membership Report
Unused 未使用
Checksum 校驗和,保證IGMP傳輸的完整性
!
Group Address (Multicast group address) 組地址
!
IGMPv1
因為沒有退組播的報文,當你不接收流量時,啥動作都不會做,但路由器不知道,所以路由器還會一直放組播流量。直到Hold Time到期。路由器再收到Report之後就會生成一個表項,並開始計時holdtime,到期表項就刪除。刪除之後就不再往該目的放組播 180s非常低效
Hold Time 時間到期 180s(3倍 Query周期)
!
流程:
當上游有組播流量到Last-hop,Last-hop 路由器會往下游發送Query,或是PC先發Report,發往224.0.0.1,60s一次的周期,每發一次查詢,只要PC依舊要收,都會在響應計時器到期後回覆Report報文(往要加入的組播地址丟ex:224.1.1.1)當PC不再接收之後,便不再響應Query報文,直到路由器holdtime到期就刪除組播表項180s。
!
是一個應用上的缺點,所以之後有v2,例如你電視轉台,如果用v1就不會有退組報文,轉台會一樣收到組播流量
!
IGMPv2 RFC 2236定義
!
PIM預設使用v2 (windows, cisco ios)

相比v1多了二個新的報文

Merbership Queries:組播組成員資格查詢,由Server發
同v1

Merbership Reports:組播組成員資格應答,由PC發
同v1

Group-specific query 指定組查詢
如果有多台最後一跳路由器,路由器之前會選舉出一個查詢者,這個查詢者會周期性的發送Query報文,負責對下游接收與發放上游接受收到的組播流。

Leave Group message 離組
來源:PC的IP地址
目的:224.0.0.2 (只有路由器會收)
組播地址:224.1.1.1
下游PC離線時使用,PC會往路由器發一個224.0.0.2帶有自己IP地址的組播,帶著離組報文,路由器收到離組報文會馬上把接口所關連的Holdtime從 180s 縮短到 2s 並且發一個指定組查詢報文。
這個指定組查詢報文會發往:目的224.1.1.1,組地址224.1.1.1
PC收到這個指定組查詢之後將不會再開啓 10s 到期的響應計時器,會改成2s,一定要在 2s 之內響應路由器,如果PC有響應,路由器的Holdtime會回復到 180s ,如果路由器 2s沒收到,表項就直接丟棄。
比起v1的固定180s,v2的2s優化好太多了。

查詢者的選舉機制:
比較最後一跳路由器連接下游網段的接口IP地址,誰的IP地址小誰就當查詢者,利用第一交份發出來的Query報文來交互選舉出查詢者,一定選出了,只有查詢者會發送Query報文,並只有查詢者會把上游的組播流往下游轉發,非查詢者則只當備份查詢者,不動作,只監控,利用IGMP查詢者計時器 (120s 2倍查詢周期) 來監控,如果計時器到期沒收到查詢報文,就再通過IP地址重選舉與取代成查詢者

IGMP查詢者計時器 (120s 2倍查詢周期)
查詢指令:show ip igmp group
!
!
=====================7===============================15===========31
Type
比V1長多了一些描述
Max. Resp. Time
不在被保留,改成最大響應時間
比v1優化更多
v1單位=1~10秒 (10個結果)
v2=0.1~10.0秒,小數化
Checksum
校驗和
Group Address 組播組地址
!
!


Multicast IP Address Structure

使用D類地址
Class D:224.0.0.0~239.255.255.255.0

28 bits
1 1 1 0 Multicast Group ID

D類地址不能分配給路由器節點

組播流量封裝的來源地址必需為單播地址,目的地組必需是組播地址

組播地址的掩碼是一種扁平化的地址,只有一種/32的

組播地址分類

Description Range
Reserved link local address
被保留的鏈路本地地址
IGP組播常用
224.0.0.1 所有PC、路由器 監聽與發送
224.0.0.2 所有路由器 監聽與發送(hsrp ver1也用)
224.0.0.5 OSPF DR 發送
224.0.0.6 OSPF DR other 要發給DR時使用
224.0.0.9 RIPv2 發送更新的組播組地址
224.0.0.10 EIGRP 發送更新的組播組地址
224.0.0.13 PIM 發送hello的地址
224.0.0.102 hsrp ver2
224.0.0.0 ~ 224.0.0.255
Globally scoped addresses
全球可聚合的組播地址
當需要把組播流量發往整個Internet
這時我們需要 申請 / 購買 一個公網組播地址
下面紅字那二段的公網地址不能使用
SSM 232 / GLOP 233
224.0.1.0 ~ 238.255.25.255
Source specific multicast (SSM)
指定源組播 PIM 的高級運用
可以通過SSM來指定組播來源轉發的控制
會過濾組播來源,PC會知道由於轉發。
使用SSM的時候,發送的目的地址只能在232網段
可以有條件的修改232範圍
!
當前的組播架構一般叫
ASM (Any Source multicast 任意源組播
ASM只關心發給誰,基本上只要收到就
發組播不過濾來源。只要流量發給正確的
組播組地址,就轉發。會導致下遊PC收到
流量後不知道是誰轉發的。
232.0.0.0 ~ 232.255.255.255
GLOP addresses
跟 IANA 買AS號就送組播地址
AS ---------> Multicast
假如買一個 12345 的AS號(範圍1-65535)
12345 > 轉16進制 = 3039 (16)
3039
(16) > 中間切一半 = 30 , 39
30 (16) >轉10進制 = 48
39 (16) >轉10進制 = 57
前面填233 = 233.48.57.0 ~ 233.48.57.255
送255個組播地址隨你用
233.0.0.0 ~ 233.255.255.255
Limited scope addresses
私有廣播地址(AS內使用)
組播私有地址,一般實驗使用,不會出Internet
239.0.0.0 ~239.255.255.255


IGMP v2 LAB



預配 R1
int fa 0/0
no sh
ip address 123.1.1.1 255.255.255.0
R2
int fa 0/0
no sh
ip address 123.1.1.2 255.255.255.0
PC3
no ip routing
int fa 0/0
no sh
ip address 123.1.1.3 255.255.255.0
!
IPv4 組路由器設置,啓用組播功能
R1
ip multicast-routing
R2
ip multicast-routing
!
開啓PIM協議功能
R1
int fa 0/0
ip pim sparse-mode
R2
int fa 0/0
ip pim sparse-mode
!
!
R1 sh ip igmp int fa 0/0 查看接口igmp

!
sh ip igmp groups

看到224.0.1.40(PIM預設加入)也就是尚未加入組播組
如果是PC,開軟件加入就可以了,路由器的話就要配指令
!
PC3(路由器模擬的PC)
int fa 0/0
ip igmp join-group 224.1.1.1
!
R1 再看一下是否有PC加入
sh ip igmp groups

看到224.1.1.1 從123.1.1.3(PC3發的)
R2在這時也會有相同表項,但由於R1的IP比較小所以R1是查詢者
!
!

離組測試 LAB(套上面IGMP LAB的設定接著做)
R2
conf t
loggin on
loggin buffered debuggin: 這指令可以把log信令緩存一份在路由器內存裡面,才不會被洗掉
debug ip igmp
R1
conf t
loggin on
loggin buffered debuggin
debug ip igmp
R3
conf t
loggin buffered 4096 debuggin
debug ip igmp
int fa 0/0
no ip igmp join-group 224.1.1.1 (把加入的組播組取消)
!
R1 R2 R3
un all (收到信息後, 關掉全部的debug功能)
!
R3 show loggin

可以看到R3在組播取消時,就把組播表項刪了,並發送離組報文 Send Leave for 224.1.1.1
!
R1 show loggin

看到從123.1.1.3收到離組報文
然後R1(查詢者)把表項時間降到2s Lower expiration timer to 2000 msec for 224.1.1.1
立即發送指令組查詢:Send v2 Query on fastEthernet0/0 for group 224.1.1.1
然後沒人回應,2s後就刪除表項
R2上應該也可以看到相同的訊息。
!
!

IGMP v3 (Inter Group Management Protocol)

0===============7=====================15===========================31
Type = 0x11 Max. Resp. code Checksum
Group address
   s QRV QQIC Number of sources (N)
Source address [1]
Source address [2]
.
.
.
Source address [N]
!
只有V3可以指令組播組信源SSM 232.0.0.0 ~ 232.255.255.255
當需要限定要加入的組播組跟組播源的時候V1和V2就無法使用,因為沒有信源報文,V3可
最後一跳路由器要運作V3,中間路由器要運作SSM才可。
!
igmp v3啓用命令,如果你在一台R開了v3,建議其他R也全開v3,R3的PC也不例外
R1
int fa 0/0
ip igmp version 3
!
在實體架構中,中間的sw的cam表學不到組播的cam表項,由於sw會直接泛洪,所以這時是廣播還組播沒有區別,但是如果你vlan 內有其他PC不想收,以預設情況,雖然其他PC收到包會直接丟棄,但是流量還是有發過去浪費資源。
!
由於ARP無法對組播IP地址動態映射,導致動態ARP無法解析,所以泛洪無法控制,可以使用靜態ARP映射的方式來映射組播IP

除了前四位是1110,其他都可以任意變動,所以有2的28次方個位可變。
!
為了完成組播IP到組播源的映射,要和IANA買OUI,MAC地址的前24位叫OUI,為實現映射至少要買16個OUI((2的28次方 - 2的24次方)= 2的4次方=16),當時一個OUI要1000美元。
!
而當時的研究生經費不足所以和別人買合半個,取得了「01-00-5e 」(前24)OUI MAC地址
第25位的值永遠為0(他分到的OUI,前24位元固定+1個0開頭的25位)
!
最後再把組播IP地址後面的23位轉換成16進制,填到Mac的後23位「7f-00-01」
多個(32)組播IP映射到同一個組播MAC(第一段的第5位~第二段的第1位)
!
要讓組播流量不亂泛洪,我們必需讓sw有對應組播的CAM表項,有二種機制可以讓sw有表項

CGMP ( Cisco Group Management Protocol ) cisco only
cisco私有標準,只能在cisco早期的交換機運行,有些思科switch只能用CGMP有些只能IGMP
4000 5000 2900系列只能CGMP
2950 2960 2970 3550 3560 3750 4500 6500 Nexus 7000 使用IGMP

IGMP snooping ( IGMP 窺探 )
業界標準,全設備可支持

目前用最多的是IGMP proxy (4500以上才支持)
!

CGMP



在cisco只要是交換機支持CGMP預設功能會是開啓,一般只會和IGMP二選一支持

CIS架構,C是交換機,S是路由器
想要啓用CGMP,必需在交換機與路由器同時使用
啓用後兩者會建立一個CGMP的鄰接關係,建立完畢後就可以利用CGMP報文來完成一些特性

組播有二種地址
USA (Unicast Source Address) 單播來源Mac
GDA (Group Destination Address) 組目的Mac

當PC想接收組播時,會發送IGMP Merbership Reports 會挾帶USA和GDA給路由器
路由器會把USA和GDA資料封裝成一個CGMP的報文,發給交換機
交換機會在他的CGMP snooping表項中添加上去,會包含PC的源地址和他所屬的組MAC地址
這個表項會把PC的MAC地址和組播組地址做一個L2的關連
再依這個關連的PC MAC地址把出接口的CAM的PC地址對應的port號與組播組地址關連。
!
之後路由器只要上游收到要往下播的組播流量,往下游時都會被路由器加上一個組播的目的
MAC地址,交換機收到了這個組播的MAC地址幀,就會直接查看CGMP snooping表項,如果有就直接往對應的接口轉發,沒有的話就泛洪。
!
缺點:
因為是照後23bit的MAC來轉發,如果後23位一樣,但是前25位不一致,switch會轉發錯誤,例如239.1.1.1 和224.1.1.1 會被switch發往同一個地方,由於缺點多而限cisco目前沒有人在使用這個機制。
!
CGMP:配置命令
!
路由器連接交換機的接口
R1
int fa0/0
ip cgmp
!
交換機全局配置模式
cgmp
!
!

IGMP Snooping



在cisco只要是交換機支持IGMP snooping 預設功能會是開啓一般只會和CGMP二選一支持

當你在switch開啓了IGMP snooping 後,switch 會開始拆L3層的封包
當PC想接收組播時,會發送IGMP Merbership Reports 往路由器發送
而switch會先收到該報文,會立即截獲這個報文,他會直接直接取得PC的源IP和目的組IP地址
switch取得直接,會直接把目的組IP地址和傳過來的port號做綁定,放到IGMP snooping表
最後再把PC的Reports報文轉發給路由器,路由器收到Report後開始下放組播流量
交換機收到組播流量直接查看IGMP表項轉發
!
優點:由於是3層式的映射,不會像CGMP一樣有映射錯誤的問題
!
缺點:
要一台L2的設備去查L3的設備,只能使用CPU去處理,使用的資源非常高。
2950 2960 2970 3550(偽L3) 拆L3都是使用CPU,轉發會狂慢無比,像是網橋很慢也是因為他查L2都是使用CPU,而用L2設備查L3也是使用CPU資源,如果你在LAB用就沒差,但是實際環境使用一定爆流量,一般只建議在真正的三層交換機使用3560以上系列,這些交換機轉發一樣使用ASICs,不需要CPU資源。
!

IGMP snooping LAB (拓樸接續IGMP v2)

sw1
sh ip igmp snooping (預設開啓)

!
考試時如果你需要關掉的話
no ip igmp snooping
!
ip igmp snooping 先開一下
!
PC3
ip igmp version 2(需要使用v2才能)
ip igmp join-group 224.1.1.1 (重新加入)
!
R1
ip igmp version 2(需要使用v2才能)
!
sw1
sh ip igmp snooping groups

!

Multicast Forwarding 組播轉發原則

在一般單播上我們使用的路由條目表項因基於可轉發而產生,也可以理解只關心報文的發送方向,而組播正好相反,組播在發送之前更關心報文從哪裡發送過來。
這是因為在如下結構

在中間的查詢者如果也正常轉發會產生重覆報文,會導致組播傳遞出現很多問題,所以更關心報文來源。目的就是為了解決重覆報文問題。
!
所以收到報文時,我們只能跟據一個接口來轉發報文,可以基於RPF校驗原則來確定。
!
RPF Checking
一台路由器收到一個組播報文,必需先進行RPF校驗,來確定哪個接口收到流量時可以轉發,而從其他接口收到的流量,在收到的瞬間將被丟棄。
RPF校驗會為一台路由器確定對於組播信源的RPF接口,當選出了RPF接口之後,只有通過這個接口的組播流量可以被接受,其他非RPF接口收到組播流量的封包將被丟棄
!

!
以此為例,如果沒有使用RPF校驗,在他在中間的二台各自備源的路由器之後的組播流,將會無止盡的互相傳送,而變成forwarding Loops。
!
RPF校驗:
1. 路由器收到一個組播組信源發送的組播流量,當路由器收到了該組播流量會提取三層報頭源IP地址,並且在其單播路由表內查找是否拥有去往信源所在網段的單播路由條目。
!
2 .如果沒有,該路由器對於該組播組信源沒有RPF接口,報文直接在接收接口被丟棄。
!
3. 如果該路由器路由表內拥有去往信源所在網段的單播路由,則查看該路由對應的出站接口和接收該報文的接口是否為同一個接口(出站看控制層面,接收看數據層面)。
!
4. 如果是,則轉發該報文,如果不是則丟棄該報文。
!
下圖可以看到對映的路由表是S1接口,所以可以到步驟2
但是組播流從S0來,步驟3的RPF校驗失敗,丟棄,應該要S1來才可
!

!
一台路由器不會只有一個RPF接口,但對一個組播組而言,只會有一個RPF接口
!
!
RPF 如果遇到負載均衡,會比較出站接口IP地址,越大越可能成為RPF接口
!

組播靜態路由



如果我們要對二台組播伺服器發往同一個組播地址,但是要使用不同的RPF接口,就需使用組播靜態路由。

組播靜態路由,可確定一台路由器確定一個組播組信源的RPF接口,
使用組播靜態路由可以改寫組播靜態接口

ip mroute x.x.x.x mask interface
x.x.x.x 用源地址(組播信源地址)
mask 如果只要精確匹配一個信源,可以寫全1也就是/32
interface 就是對於該組播信源的RPF接口

LAB

R1
ip moute 1.1.1.2 255.255.255.255 serial 0/0/0
!
sh ip mroute
sh ip mroute static

!
這邊要注意AD值是0,單播靜態AD=1,組播靜態=0
!

PIM
PIM有分二個版本V1 V2 ,當前V2使用比較多,是一個四層協議,對應的上層協議號13。使用hello封包來建鄰居,在使用組播之前一定要先確定鄰居有建成,使用組播來建鄰居,使用224.0.0.13,鄰居需要直連建立,可用P2P方式或使用MA,在建鄰居之前一定要選一個DR(指定路由器)

MA建鄰居會先比較PIM的接口的優先級,越高越好,預設為1,一樣的話再比接口IP地址,比高。只有IGMPv1會使用DR來當查詢者,IGMPv2本身會有自己的選擇機制。
PIM中的DR是可以搶佔的,實時選舉,接口概念,每個MA網段都要選出一個唯一的DR,PIM的DR接口優先級如果為0一樣可以當DR。

PIM也需要周期性的30s的hello來維持鄰居,對應的holdtime是hello的3.25倍,105秒,PIM建鄰居不傳路由,只有收到數劇層面的組播報文之後才會生成相對應的路由表。
需要在整個拓樸中的物理接口啓用

運行PIM路由器接口的工作改變
1:
對於第一跳路由器的接收組播流量接口,如果該接口沒有啓用PIM,則無論收到什麼組播報文,都會本地拆包後將報文丟棄。
2:
對於最後一跳路由器連接接收者所在網段的接口,如果該接口沒有啓用PIM則路由器不會周期性的發送IGMP  Query報文
3:
對於中間路由器彼此互連的物理接口,如果沒有啓用PIM,這些路由器不會通過任何接口轉發任何組播報文


使用PIM轉發報文時樹型結構,共有二種樹型結構
Source-rooted 源樹 也叫 STPs (shortest path trees) 最短路徑樹
Shared trees 共享樹 也叫 RPT Rendezvous point (RPT樹)

這二種樹型結構對應二種組播協議
Dense mode 密集模式  使用於STPs
當在一個域內95%的PC都使用組播組流量的時候會使用Dense mode,基於push model運作。

用於push模型,對應最短路徑樹,路由器只要運行PIM Dense mode,並在啓用PIM Dense mode的接口收到組播流量,會先做RPF校驗,會把組播流量發送給所有的PIM鄰居,鄰居再會幫你轉發組播流量,也會發送給所有接收IGMP report連接組員的接口。

push:
就是每個路由器收到泛洪流量之後就會再往其他接口泛洪下去。不管你有沒有接收者。泛洪完之後如果路由器判定下方沒有接收者,會往回發一個 Prune Messages 報文,叫上游不要再發送組播流量。類似spann的修剪功能,並停止傳發流量,並開啓一個計時器180s,當計時器到期就將Prune效果取消。

所以可以理解為他是每三分鐘做一次的泛洪和修剪的過程


Sparse mode 稀疏模式 使用於RPT


例外:Sparse Dense mode 混合模式是用最多的。

Source-rooted 源樹
Shortest-Path Tress 最短路徑樹

使用:
所有的路由器的PIM啓用Dense mode,當所以路由器都啓用Dense mode之後他們之間會建立成鄰居,建完鄰居後就收鏈完畢

注意:
單播協議和組播協議之間有本質區別,單播協議在鏈後會開始傳路由,而組播完全不傳,單播要先有表項,才能傳流量,組播是運行協議只建鄰居,有流量經過才會在本地路由表中生建成相應的路由表項

SPTs 最短路徑樹在Source 2走向,在每一個收到Source 2的Dense mode路由器都會產生Notation : (S, G)  其中 S = Source, G=Group的表項


!
!
缺點原理:
這個表項下面會包含對於這個組播組服務器的RPF接口,也就是通過哪個接口收的流量和收到這個流量之後幫你把通過哪個接口轉發出去。一個主表項差不多佔350K,而下游的轉發接口各佔150個字節,用A路由器來算150*3+350=800KB,而此時Source1要發Source2也要發,2會發多1個表項。(Source1=1.1.1.1,224.1.1.1 / Source2=2.2.2.2,224.1.1.1),這樣隨便就破1600KB,由於你每個源會對應一顆樹,那路由器收到的每個信源的組播流量,都會在組播路由表中生成對應的表項,當信源隨著數量越來越多,路由器就要使用更多的資源。
!
結論:
一個源一顆樹
源到目的地的距離最短
源越多資源吃越兇(影響太大,一般不用使SPTs)

Shared trees 共享樹
RPT Rendezvous point (RPT樹)

使用:
需要定義RP,由管理者定義,所有要轉發的組播信息的組播流量,會先轉發到RP身上,RP身上會集合所有的組播流,再由RP把這些流量下放給下游的路由器。

注意:
下游的CE不用關心來源,因為一定是RP轉發而來,一般只關心流量往哪邊發生,在一個組播域內使用共享樹,會執行的範圍只有在RP到接收者這一個網段,從RP到組播源這段還是走一般的SPT最短路徑樹

RPT 樹在RP產生Notation : (*, G)  其中 * = All Sources, G=Group的表項



缺點原理:

結論:


DM - Push - SPT  LAB



R3 是組播發送源,R2是接收者

配置如下!!!

R1
int serial 0/0/0
ip address 14.1.1.1 255.255.25.0
no sh
int loopback 0
ip add 1.1.1.1 255.255.255.0
no sh
int serial 0/1/0
ip add 15.1.1.1 255.255.255.0
no sh
int ip add 16.1.1.1 255.255.255.0
no sh
!
R2
int fa 0/0
ip add 24.1.1.2 255.255.255.0
no sh
int loopback 0
ip add 2.2.2.2 255.255.255.0
!
R3
int fa 0/1
ip add 35.1.1.3 255.255.255.0
no sh
int loopback 0
ip address 3.3.3.3 255.255.255.0
no sh
!
R4
int serial 0/0/0
ip add 14.1.1.4 255.255.255.0
no sh
int fa 0/1
ip add 24.1.1.4 255.255.255.0
no sh
int loopback 0
ip add 4.4.4.4 255.255.255.0
!
R5
int fa0/0
ip add 35.1.1.5 255.255.255.0
no sh
int loopback 0
ip add 5.5.5.5 255.255.255.0
no sh
int serial 0/0
ip address 15.1.1.5 255.255.255.0
no sh
!
sw1
int fa 0/1
no sh
no switchport
ip add 16.1.1.6 255.255.255.0
no sh
!
===============
部署組播之前要先確定單播的IGP有啓來,並且Source的R3也要進IGP
而R4不需要把對下游的24網段宣告進來,這是因為RPF校驗,

IGP運行ospf

R5
Router ospf 110
router-id 5.5.5.5
network 5.5.5.5 0.0.0.0 a0
network 35.1.1.5 0.0.0.0 a0
network 15.1.1.5 0.0.0.0 a0
!
R1
router ospf 110
router-id 1.1.1.1
network 1.1.1.1 0.0.0.0 a 0
network 15.1.1.1 0.0.0.0 a 0
network 14.1.1.1 0.0.0.0 a 0
network 16.1.1.1 0.0.0.0 a 0
!
R4
router ospf 110
router-id 4.4.4.4
network 4.4.4.4 0.0.0.0 a 0
network 14.1.1.4 0.0.0.0 a 0
!
sw1
ip routing
router ospf 110
router-id 6.6.6.6
network 6.6.6.6 0.0.0.0 a 0
int lo0
ip add 6.6.6.6 255.255.255.0
no sh
router ospf 110
network 16.1.1.6 0.0.0.0 a 0
!
========================
運行PIM協議

R5
ip multicast-routing(啓用組播)
int fa 0/0
ip pim dense-mode(開啓pim的dense-mode)
int s0
ip pim dense-mode
!
R1
ip multicast-routing
!
int fa0/0
ip pim dense-mode
int s0/0/0
ip pim dense-mode
int s0/1/0
ip pim dense-mode
!
R4
ip multicast-routing
int s0/0/0
ip pim dense-mode
int fa0/1
ip pim dense-mode
!
Sw1
ip multicast-routing distributed (如果用於交換機,需要distributed參數)
int 0/1
ip pim dense-mode
!
====================

R1 sh ip pim neighbor



Neighbor address 直連的啓用PIM的鄰居 ex:16.1.1.6
Interface 本地連接鄰居的接口 ex:fa0/0
Uptime / Expries 鄰居維持多久時間 / 多久之後超時
Ver 使用版本
Prio 鄰居接口優先級 ex: 1
DR 是因為MA網段,16網投是switch要選DR,DR是switch1,寫的是鄰居
S是代表狀態可刷新,代表IOS版本可以識別優先級,早期的IOS無法識別,會打N
!
!
把R3模擬成PC,並且發組播流量
R3
no ip routing
ping 224.1.1.1 (ping組地址,就當成發組播)
!
R3
ip default-gateway 35.1.1.5
R2
ip default-gateway 24.1.1.4
!
R2 ip igmp join-group 224.1.1.1
!
R5 sh ip mroute (先看組播表項,看到224.0.1.40 這是預設表項,不用理會所以是空的)
R4 sh ip mroute(有看到表項,因為R2已經做了加入組播組)
!
R3 ping 224.1.1.1

可以看到收到了回覆,收到了R2有回覆
!
R5 sh ip mroute

!
看到雖然我們是用Dense mode,但是打的表項的Source卻是 * 的all
!
這是因為組播通用原則,一台路由器在組播路由表中擁有Source的表項,會直接對應的生成* source的表項,這個表項不用於轉發任何報文,只告訴我們哪些出接口啓用了PIM
!
真正轉發是35.1.1.3的這份表項,並且「flags: T 」代表源樹已建好
!
clear ip mroute * (清表項)
!
組播PING,不一定會通是因為接收者不需要回包只要單純接收,所以ping會失敗
不一定是組播部署錯誤,可能是接收者只接不回。

IP PIM Sparse mode(使用靜態RP)

1.靜態RP
2.Auto-RP
3.BSR


R5
ip pim rp-address 1.1.1.1  !!!!宣告靜態RP位址(後面可以再加acl,用acl分組)
R1
ip pim rp-address 1.1.1.1  !!!!(所有的路由器要定義相同的RP)

R5
int fa0/0
ip pim sparse-mode (組播模式改sparse)

sh ip pim neighbor
!
sh ip pim rp-mapping (顯示RP位址)
!
sh ip mroute
!
ip pim spt-threshold  infinity (預定為0,切換rtp的域值,用infinity為永不切換)
!
clear ip igmp group (清igmp組)
clear ip mroute * (清表項)
!
sh ip mroute

============Auto-RP  C/S模式
會有CRP(參與選舉)與CMA(負責指定誰當候選人)

CRP與CMA可以有多加,有啓用PIM的接口都可以當這兩個人之一,但一般loopback
且必需宣告進IGP,還必需啓用任意模式的PIM(不然命令敲不進去)

加入CRP之後會周期性的發Announce報文,發往224.0.1.39
只有MA會監聽224.0.1.39,在CMA收到報文後會在這些CRP選出一個候選人
比較方式:IP地址 比大
MA指定完之後會發一個Discovery報文到224.0.1.40,給其他PIM成員,告訴他們RP是誰

如果CRP和CMA不直連,會導致RP選不出來。這樣讓其他組播路由器會因為沒辦法
註冊報文給RP,因為不知道RP是誰,那組播域就掛了。
必需要換Sparse Dense mode才會正常
或使用 ip pim auto-rp listener
會把224.0.1.39的報文會特別改用Dense的模式來擴散來解決這個如題。

一般我們會做雙向的備份
EX:R1選完成為CRP會成為R2的CMA,R2選完成為CRP,會成為R1的CMA

PS:在純Sparse無法使用Auto-RP,因為機制問題
要選RP之後才能發Announce,Discovery,但是現存RP還沒選完,報文發不了,所以不能用

使用Auto-RP原則
1. 整個網段使用Sparse-Dense-Mode
2. 依舊使用純Sparse-Mode 但是每一台路由器都啓用 ip pim auto-rp listener
使用ip pim auto-rp listener,路由器收到Announce,Discovery時,會只對這兩個報文的組播組流量使用Dense mode,比較建議1方式
(config)# ip pim auto-rp listener

配置流程:
把R5 loopback 10 口配置到IGP
R5 ip pim send-rp-annouce loopback 10 scope 5 (宣告成為CRP)
!!!scope 描述annouce報文可以發幾跳,後面可以帶group-list或acl,
可以套用acl,指定要成為哪些組播組代理,不帶就是全部
跳報錯:Must first configure PIM mode on the interface: loopback 10
這是因為loopback 10要收annouce報文就也需要宣告成pim mode
R5 int loopback 10
R5 ip pim sparse-mode
sw1 ip pim send-rp-discovery loopback 0 scope 10 (宣告成為MA)
interface loopback 0
報錯:Non IP or PIM interface ignored in accepted command.
原因:CMA要發discover報文,接口也要把相應接口宣告PIM mode
sw1 int loopback 0
sw1 ip pim sparse-mode
!
clear ip pim rp-mapping
R5 show ip pim rp mapping
!
這時發現不行,因為sparse-mode不能支持auto-rp
所以要把全部的路由器改成sparse-dense-mode
R4 ip pim sparse-dense-mode
!
clear ip pim rp-mapping
sh ip pim rp mapping
sh說明:RP (地址10.10.10.1), v2v1 !!版本1,2兼容
info source: 6.6.6.6 !!!ma地址 election : Auto-RP (選舉方式)
!!靜態RP的優先級比Auto-RP還低,如果要靜態優於auto-rp要在使用靜態rp的時候帶參數 override EX:ip pim rp-address 1.1.1.1 override
!
============BSR RFC的open source
C / S 模式  C = RPC, S = BSR
!
!當你定義BSR之後,會開啓一個等待計時器130秒(華為),各家廠牌不一樣思科忘了
!時間內會監聽網路中是否有其他BSR存在,因為BSR會60秒一周期的發一個通告。
!130秒內收不到,自已會成為BSR,有收到就PK優先級。如果優先級高就成為新BSR。
!BSR通告的其實是一個Ping報文,但是flag字段,會標示出為BSR通告和其內容
!ping到224.0.0.13(被保留的鏈路本地組播地址,PIM所使用的hello地址)
!內容包含BSR地址、優先級、計時器和最後的
RP-SET(包含想成為RP的路由器全訊息,選擇RP則由他們自己選,第一包的RE-SET是全空的,因為一開始不知道其他想成為RP的地址,只有通告後其他想當RP的路由器才會單播RP通告給BSR,之後才會知道資料)
!
!
BSR的RPF校驗規則
1:收到BSR後,看單播路由表去往BSR的路由的出接口是否是接收BSR通告的入接口
2:再看去往BSR單播路由的下一跳地址是否是接收的BSR通告的三層報頭的源IP地址
1和2都要成功才可以。BSR在frame relay特別容易出問題。

!
R1 ip pim rp-candidate loopback 10 priority 10  !!宣告成為RPC
(RP優先比小>哈希值mask比小>先比優先級再比IP地址)
!哈希值mask預設=30,在做CBSR的時候需要定議的hash mask 長度值
!
sw1 ip pim bsr-candidate loopback 0 !!宣告成為BSR
!
sh ip  pim rp mapping # 看優選誰是RP
會寫via bootstrap = BSR
show ip pim bsr-router ##查看誰是bsr
!
優先級整理:Auto-RP > BSR > static

PIM DR
在IGMPv1 中充當查詢者,在IGMPv2中無用
在PIM DM中,DR無用,在PIM SM中,DR負責發送(*, G)的Join報文和(S, G)的Register報文


指令集

show ip igmp group :查詢IGMP加組的表項
Group Address:下游PC要加入的組播組
Interface:關聯下游網段接口
Expires:表項到期時 (180s)
Last Reporter:最後通告者的IP地址

sh ip igmp int fa 0/0:查詢IGMP啓用接的細部設定,可以看到PIM的DR和其他細部資訊
如果在最下的看到Multicast groups joined by this system (number of users):的值
是224.0.1.40 或是224.0.1.39,請無視,只要你啓用PIM協議就會監聽這二組

sh ip igmp groups:查詢IGMP組播組地址

sh ip igmp snooping 看igmp snooping狀態

sh ip pim neighbor  看PIM鄰居

Router
ip multicast-routing 啓用組播功能
int fa 0/0
ip pim sparse-mode 開啓PIM協議功能
sh ip igmp int fa 0/0 查看接口igmp
sh ip igmp groups 看播組組
ip igmp version 3 啓用igmp v3
ip igmp version 2 啓用igmp v2

Switch
ip igmp snooping 啓用igmp snooping
no ip igmp snooping 停用igmp snooping
sh ip igmp snooping groups 查igmp snooping 組播組

Router模擬PC
ip igmp join-group 224.1.1.1  加入組播224.1.1.1
no ip igmp join-group 224.1.1.1 (把加入的組播組取消)

========CGMP
Router
int fa0/0
ip cgmp  啟用CGMP

switch
cgmp 啓用sw的CGMP
========
int s0/0/0
ip pim dense-mode 開啓dense-mode

loggin on:開日誌
loggin buffered debuggin:這指令可以把log信令緩存一份在路由器內存裡面,才不會被洗掉
show loggin :把緩存的log叫出來

show ip mroute 看組播路由表
show ip pim neighbor 看pin鄰居

debug ip igmp:看igmp debug

clear ip igmp group (清igmp組)
clear ip pim rp-mapping
clear ip mroute * (清表項)
!

任播

全部地址一樣走向最近的路線


MSDP

在不同的PIM-SM域之間建立MSDP時,使用TCP 639,IP地址高的初始化TCP連接
60s一次keeplive, holdtime 75s





https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipmulti_pim/configuration/xe-3s/imc-pim-xe-3s-book/imc_msdp_im_pim_sim.html



LAB MSDP配置案例2

MBGP+RPF






R1
router ospf 100
router-id 1.1.1.1
network 12.1.1.1 0.0.0.0 area 0
!
R2
router ospf 100
router-id 2.2.2.2
network 12.1.1.2 0.0.0.0 area 0
network 23.1.1.2 0.0.0.0 area 0
!
R3
router ospf 100
router-id 3.3.3.3
network 3.3.3.3 0.0.0.0 area 0
network 23.1.1.3 0.0.0.0 area 0
!
R4
router eigrp 100
network 4.4.4.4 0.0.0.0
network 45.1.1.4 0.0.0.0
no auto-summary
!
R5
router eigrp 100
network 45.1.1.5 0.0.0.0
network 56.1.1.5 0.0.0.0
no auto-summary
!
R6
router eigrp 100
network 56.1.1.6 0.0.0.0
no auto-summary
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!R3、R4配置BGP
R3
router bgp 100
no bgp defaultipv4-unicast
neighbor 34.1.1.4 remote-as 200
neighbor 43.1.1.4 remote-as 200
!
address-family ipv4
neighbor 34.1.1.4 activate ##激活鄰居
no auto-summary
no synchronization
network 3.3.3.3 mask 255.255.255.255 ##保證MSDP單播可達,能夠建立MSDP連接
network 12.1.1.0 mask 255.255.255.0 ##通過BGP將組播源路由傳遞到AS200保証R5能收
exit-address-family
!
address-family ipv4 multicast
neighbor 43.1.1.4 activate
no auto-summary
no synchronization
network 12.1.1.0 mask 255.255.255.0
##題目要求R4通過MBGP檢測,RPF檢測順序,預設MBGP由于單播路由表
exit-address-family
!
R4
router bgp 200
no bgp default ipv4-unicast
neighbor 34.1.1.3 remote-as 100
neighbor 43.1.1.3 remote-as 100
!
address-family ipv4
neighbor 34.1.1.3 activate
no auto-summary
no synchronization
network 4.4.4.4 mask 255.255.255.255 ##保證MSDP單播可達,能夠建立MSDP連接
exit-address-family
!
address-family ipv4 multicast
neighbor 43.1.1.3 activate
no auto-summary
no synchronization
exit-address-family
!
!
R4
access-list 1 permit 12.1.1.0 0.0.0.255
route-map BGPTOEIGRP permit 10
match ip address 1
router eigrp 100
redistribute bgp 200 metric 10000 100 255 1 1500 reoute-map BGPTOEIGRP
##重分發組播源網段12.1.1.0/24,為了讓R5能夠通過RPF檢測
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!組播基本配置
R2
ip multicast-routing
interface fa 0/0, fa 0/1
ip pim sparse-mode
ip pim rp-address 3.3.3.3
!
!
R3
ip multicast-routing
int fa 0/1, serial 1/2
ip pim sparse-mode
ip pim rp-address 3.3.3.3
!
R4
ip multicast-routing
int fa 0/1, serial 1/2
ip pim sparse-mode
ip pim rp-address 4.4.4.4
!
R5
ip multicast-routing
int fa 0/0, fa0/1
ip pim sparse-mode
ip pim rp-address 4.4.4.4
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!在R3,R4上配置MSDP
R3
ip msdp peer 4.4.4.4 connect-source loopback0 remote-as 200
ip msdp originator-id loopback0
!
!
R4
ip msdp peer 3.3.3.3 connect-source loopback0 remote-as 100
ip msdp originator-id loopback 0

!!!!!!!!!!!!!配置R6加入組播組
int fa 0/0
ip igmp join-group 239.1.1.1
!
============================================
show ip igmp int e0/0 ##看相關timers參數
show ip igmp group

============================================
RPF 收組播 路由優先比較 1 > 2 > 3

1.最長匹配
2.AD值:單播一樣=1,組播靜態=0,MP BGP=同一般BGP
3.如果連AD都一樣,比較路由總類:總播靜態 > MP BGP > 單播路由
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3765334
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★lizngy 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:BGP 筆記... 後一篇:光纖與usb tar 檔...

追蹤私訊切換新版閱覽

作品資料夾

zxp915415大家
各位好,小說-【不是冤家不聚頭】,已新增第二話,歡迎各位來看看喔~看更多我要大聲說昨天13:00


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】