You are on page 1of 20

組播(Multicast)

IPV4:單播 組播 廣播

IPV6:單播  組播 任播

1)單播:一對一,隨著接收用戶的增多,增加伺服器和鏈路頻寬的壓力。

單播的優點:保證流量只發送給有需要的接收者

2)廣播:一對 ALL,如果主機不需要廣播流量,也會收到,故安全性低

廣播的優點:同樣的流量,只需要發送一次,對鏈路的佔用小

3)組播的特點: 一對多,把單播和廣播的優點結合起來形成組播。

組播的優點:保證流量只發送給有需要的接收者,同樣的流量,只需要發送一

次,對鏈路的佔用小

組播的缺陷:組播是基於 UDP 的!!!【不可靠】

組播分發樹

1) 源樹:SPT【最短路徑樹 SPT】

優點:組播源到接收者的路徑是最優的

組播路由器保存每個組播源的表項,組播源越多,表項就越多。

對設備資源占用也就越多,影響轉發效率。

100 個組播源,100 個(S,G)條目-----缺點,表項過多

2) 共用樹:RPT
特點:採用一個公共節點作為根,轉發組播流量

缺點:不能保證組播源到接收者的路徑是最優的

組播路由條目使用(*,G)表示

*代表是任意 source,G 代表 Group

100 個組播源,只有 1 個(*,G)組播表項

RPF 檢測【反向路徑轉發】

概念:要求收到組播數據的入接口必須是該路由器到達組播源的出接口。路由

器收到組播數據包,先進行 RPF 檢測,檢測成功,根據組播路由表來轉發,檢

測失敗,丟棄。

入口:是組播路由表來決定,組播路由協議,決定組播路由表。

出口:RPF 檢測的時候,路由器到達組播源的出接口是由 IPv4 單播路由表決

定。

組播路由協議--組播路由表—組播流量發送接口

動態路由協議—單播路由表—到達組播源接口

源  組播組  接收者

1)讓組播路由式通訊協定之間運行的協議  IGMP

2)組播路由器和組播路由器之間運行的協議 PIM
IGMP【internet 組管理協議】

1)V1:query 和 report 報文,組播路由器每隔 60s 週期性發送查詢報文,主

機回應。

缺點:沒有離開機制,主機是默不作聲離開,只要等到 180s,組播路由器才

收斂完成。

2)V2:query 和 report 報文,組播路由器每隔 60s 週期性發送查詢報文,主

機回應。

優化了離開機制,當主機離開某個組播組,主動向組播路由器發送 leave

group 報文,表示要離開這個組。

組播路由器會發送特定組的查詢報文,詢問是否還存在關於改組的其他的接收

者,加速收斂。

注:

V1 下一次 60s,才發現有接收者
V2 馬上發送特定組查詢,2 次間隔 time=1sec

查詢器:

在乙太網中,如果存在多個組播路由器,會選舉其中一台組播路由器作為查詢

器。

查詢器選舉原則:

IGMP V1,選舉 PIM 協議的 DR 路由器作為查詢器

IGMP V2 V3,選擇組播路由器 IP 位址小的

組播路由式通訊協定:

作用:在組播路由器之間運行組播路由式通訊協定,生成組播路由條目,當組

播路由器收到組播資料包時,根據組播路由表來轉發組播流量。
組播路由角色:

最後一跳組播路由器:連接著接收者

第一跳組播路由器:連接著組播源

PIM 轉發路由器:當組播源到接收者,中間有多個下一跳時,利用 assert 機

制來選舉 PIM 轉發器。

1、 選擇到達組播源路有資訊中,AD 值小的

2、 選舉 Metric 小的

3、 選擇 IP 位址大的

PIM 協議:協議無關組播

組播路由器為了知道哪些設備需要接收組播流量。PIM 無需收發組播路由更新,

所以與其它組播協議相比, PIM 開銷降低了許多。 PIM 的設計出發點是在

Internet 範圍內同時支持 SPT 和共用樹,並使兩者之間靈活轉換,因而集中

了它們的優點提高了組播效率。

PIM 定義了兩種模式:

密集模式(Dense-Mode)和稀疏模式(Sparse-Mode)

1. PIM-DM

1) 利用 PIM hello 建立 PIM 鄰居關係 30sec 105sec

2) 當組播路由器收到組播數據報文時

先 RPF 檢測,檢測成功,生成(S,G)條目

Flood: 300sec/次

3) Prune
1)PIM-DM:泛洪—修剪 SPT

先有組播資料流程,再有組播分發樹

泛洪:當組播路由器收到組播資料包時,先進行 RPF 檢測,添加(S,G)表項,

從除接收介面之外的其他所有介面(有 PIM 鄰居的介面)進行轉發。

修剪:當組播路由器不存在接收者時,發送 join/prune 報文,將 prune 置為 1

當組播路由器存在接收者時,發送 join/prune 報文,將 join 置為 0

每個 3 分鐘泛洪 修剪一次。

注:在 PIM-DM,產生(S,G)和(*,G)

(S,G)表項: 根據這個表項來轉發數據

(*,G)表項: 因為數據庫必須先生成父結構,沒有用於轉發組播流量

優點:配置簡單,實現機制簡單

缺點:泛洪修剪過程不夠高效

複雜的 ASSert 機制

控制和資料平面混合

導致網路內部的所有路由器上都有(S,G)

可能會導致非確定性的拓撲行為

不支援共用樹

配置 PIM-DM

配置 IGP 協議,保證全網組播路由器都能夠有組播源路由,

目的是為了保證 RPF 檢測能夠成功

配置步驟:
1) 組播路由器啟用組播功能:ip multicast-routing

2) 在相應的介面啟用 PIM-DM 協定:ip pim dense-mode

連接 PIM 路由器的介面(PIM Neighbor)

第一跳路由器連接組播源的介面

最後一跳路由器連接接收者的介面

3)配置接收主機加入某個組播組:ip igmp join-group 239.1.1.1

驗證命令:

R1#show ip pim interface 查看路由器哪些介面啟用 PIM 協定

R1# show ip pim neighbor 查看 PIM 的鄰居

R1#show ip mroute 查看組播路由表

R1#show ip rpf 15.1.1.5 查看 RPF interface

PIM-SM【考試重點】

先有組播樹,再有組播流量

先建立 RPT,當有組播資料時,建立 SPT 樹。

後續資料,先沿著 SPT 樹發送,再沿著 RPT 樹發送

1. 選舉 RP

2. 先生成共享樹:

1) 接收者發送 IGMP report 報文給最後一跳路由器。

2) 最後一跳路由器收到報文,會對 RP 做 RPF 檢測,檢測成功,生成( *,

G)表項,朝著 RP 的方向,向上游路由器發送 join/prune 報文。

3) 生成了共享樹
注意:為了保證組播路由器能夠對 RP 檢測成功,首先要保證組播路由器有 RP

的路由。

RPT 生成的(*,G)表項,用於轉發組播資料

3. 再生成源樹:

1)組播源發送組播資料報文,第一跳路由器收到後,進行 RPF 檢測,生成

(S,G)表項,因為此時,第一跳路由器並沒有建立任何的組播分發樹,以單

播的形式發送給 RP。

2)RP 收到這個單播報文,拆開看到裡面的組播數據包。

3) RP 再查看共享樹中是否有關於這個組播組的共享樹,有就代表有接收者,

則將這個數據包沿著共享樹發送出去。

4) RP 會朝著組播源的方向,發送 join 報文,生成(S,G)表項

5) 後續的組播數據包,沿著源樹發送給 RP,RP 沿著共享樹發送給接 收者。

如果不存在接收者,發送 join/prune(=1)消息給第一跳路由器,產生(S,G)

表項

發送註冊停止的報文。目的是為了讓第一跳組播路由器轉發後續的組播資料包,

以組播的形式發送,不需要以單播的形式發送。

RPT 的切換

當最後一跳路由器,發現到達組播源有更優路徑時,從 RPT 樹切換到 SPT 樹。

注:禁止共用樹向源樹切換命令

ip pim spt-threshold infinity


C-RP

C-RP announce 到映射代理,發送目的地址是 224.0.1.39

映射代理發送 RP 的結果給 All 組播路由器 by 224.0.1.40

RP 的選如果一台設備同時使用靜態和動態的方式選舉 RP,優先順序的關係如

下:

Auto-rp >BSR >靜態 RP

PIM-SM 配置

1. 配置 IGP 協議,保證全網組播路由器都能夠有組播源路由,

目的是為了保證 RPF 檢測能夠成功

2. PIM-SM 配置:

1) 組播路由器啟用組播功能:ip multicast-routing

2) 在相應的介面啟用 PIM 協定:ip pim sparse-mode

連接 PIM 路由器的介面

第一跳路由器連接組播源的介面

最後一跳路由器連接接收者的介面

3. 配置 RP:ip pim rp-address 3.3.3.3【所有的組播路由器都需要配置

RP】

4. 配置接收主機加入某個組播組:ip igmp join-group 239.1.1.1


驗證命令:

R1#show ip pim interface 查看路由器哪些介面啟用 PIM 協定

R1# show ip pim neighbor 查看 PIM 的鄰居

R1#show ip mroute 查看組播路由表


Demo IGMP

(R3)(R2)(R1)# ip multicast-routing

# ip pim sparse-

R3 # int f0/0

# ip igmp join-group 239.1.1.1

# host host

R1 # sh ip igmp interface
Current IGMP router version is 2

IGMP querying router is 192.168.1.1 (this system)
R1# show ip igmp groups
Group Address Interface Uptime Expires Last Reporter
239.1.1.1 fa0/0 00:01:13 … 192.168.1.3
224.0.1.40 fa0/0 01:01:31 … 192.168.1.2

R1# int f0/0 # ip igmp version 1


R1# show ip pim neighbor
Neighbor Interface Uptime/Expires Ver DRPrio Mode
10.10.10.1 fa0/0 02:19:41/00:01:38 v2 1 / DR S
R1# show ip igmp interface fa0/0

Multicast designated router(DR) is 192.168.1.2
IGMP querying router is 192.168.1.2(this system)

Demo PIM-DM
1. 配置 IGP

(R6)~R1#router eigr 100 # net 0.0.0.0 #no auto

R1#show ip eigr nei //All eigrp neighbor up

R4#show ip route //learn all routes (100.1.1.0/24

12.1.1.0/24

46.1.1.0/24

13.1.1.0/24

15.1.1.0/24)

2. 啟用 mutlticast & pim

(R6~)R1#ip multicast-routing

(R6~)R1#ip pim dense-

R4# show ip pim interface

Address Interface Ver/Mode NbrCount QueryIntvl DR Prior DR

100.1.1.4 fa0/1 V2/D 2 30 1 100.1.1.4


46.1.1.4 fa0/0 V2/D 0 30 1 46.1.1.4

R4# int fa0/1 # ip pim dr-priority 10

R4# show ip pim neighbor


Neighbor Interface Uptime/Expires Ver DR Prio/Mode
100.1.1.2 fa0/1 00:01:59/00:01:14 v2 1/S
100.1.1.3 fa0/1 00:01:59/00:01:13 v2 1/S

3. Host 加入 multicast group

Recevice# int fa0/0 # ip igmp join-group 239.1.1.1

Source# ping 239.1.1.1

R1# show ip rpf 15.1.1.5

RPF information for ? (15.1.1.5)


RPF neighbor: ? (15.1.1.5)- directly connected


RPF type: unicast (connected)

R1# show ip mroute


(15.1.1.5, 239.1.1.1), 00:00:23/00:02:51, flags: T
Incoming interface: fa1/0, RPF nbr 0.0.0.0
Outgoing interface list:
Fa0/0, Prune/Dense, 00:00:27/00:00:00
Fa0/1, Forward/Dense, 00:00:27/00:00:00

R3# show ip mroute


(15.1.1.5, 239.1.1.1), 00:00:23/00:02:51, flags: T
Incoming interface: fa1/0, RPF nbr 13.1.1.1
Outgoing interface list:
Fa0/0, Forward/Dense, 00:00:12/00:00:00 A

Demo Assert 角色修改


# ip multicast-routing

# int fa0/0 # ip igmp join-group 239.1.1.1

驗證命令

# show ip igmp interface fa0/0

# show ip igmp groups

看 AD(同 eigrp)=>metric=>IP 大 wins!!

1) R3(R2)#show ip route eigrp

D 15.1.1.0[90/30720] via 13.1.1.1 fa0/1

via 12.1.1.1 fa0/0

2) R3# int fa0/1 # delay 10000 # clear ip eigr nei

3) R3# show ip route eigrp

D 15.1.1.0[90/33280] via 100.1.1.2 fa0/0

4) R1# show ip mroute


(15.1.1.5, 239.1.1.1), 00:00:36/00:02:32, flags: T
Incoming interface: fa1/0, RPF nbr 0.0.0.0
Outgoing interface list:
Fa0/0, Forward/Dense, 00:00:41/00:00:00
Fa0/1, Prune/Dense, 00:00:35/00:02:23, A
Demo PIM-SM

2.配置 IGP

(R6)~R1#router eigr 100 # net 0.0.0.0 #no auto

R1#show ip eigr nei //All eigrp neighbor up

R4#show ip route //learn all routes (100.1.1.0/24

12.1.1.0/24

46.1.1.0/24

13.1.1.0/24

15.1.1.0/24)
2. 啟用 PIM-SM

(R6~)R1#ip multicast-routing

(R6~)R1#ip pim sparse-mode

2. 靜態指定 RP

R3#int lo0 # ip add 3.3.3.3 255.255.255.255

(R4~)R1#ip pim rp-address 3.3.3.3

3. 加入組播組

R6#int fa0/0 # ip igmp join-group 232.1.1.1

R4#show ip igmp groups

Group Address Interface Uptime Expires Last Reporter

232.1.1.1 fa0/0 00:10:54 00:01:10 46.1.1.6

224.0.1.40 fa0/1 01:36:27 00:02:45 100.1.1.4

R4#show ip rpf 3.3.3.3

RPF information for ? (3.3.3.3)

RPF interface: fa0/1

RPF neighbor: ? (100.1.1.3)

生成組播表項(*,G)

R4# show ip mroute


(*, 232.1.1.1), 00:00:36/00:02:32, RP 3.3.3.3, flags: SJC
Incoming interface: fa0/1, RPF nbr 100.1.1.3
Outgoing interface list:
Fa0/0, Forward/Sparse, 00:00:41/00:00:00

R3# show ip mroute


(*, 232.1.1.1), 00:00:36/00:02:32, RP 3.3.3.3, flags: S
Incoming interface:Null, RPF nbr 0.0.0.0
Outgoing interface list:
Fa0/0, Forward/Sparse, 00:00:41/00:00:00

 發送組播數據包

R5# ping 232.1.1.1 [2 次]

Reply to request from 46.1.1.6, 1344ms

 向 source 作 RPF Check

R1#show ip rpf 15.1.1.5

R3# show ip mroute


(*, 232.1.1.1), 00:00:36/00:02:32, RP 3.3.3.3, flags: S
Incoming interface:Null, RPF nbr 0.0.0.0
Outgoing interface list:

(15.1.1.5, 232.1.1.1), 00:00:36/00:02:32, flags: S
Incoming interface: fa0/1, RPF nbr 13.1.1.1
Outgoing interface list:
Fa0/0, Forward/Sparse, 00:00:02/00:03:20
(*, 224.1.1.40)

R1# show ip mroute


(*, 232.1.1.1), 00:00:36/00:02:32, RP 3.3.3.3, flags: SPF
Incoming interface:fa0/1, RPF nbr 13.1.1.3
Outgoing interface list: fa0/1, Forward/Sparse, 00:00:28/00:03:01

(15.1.1.5, 232.1.1.1), 00:00:36/00:02:32, flags: FT
Incoming interface: fa1/0, RPF nbr 0.0.0.0 Registering
Outgoing interface list: fa0/1
Fa0/0, Forward/Sparse, 00:00:02/00:03:20

 Demo PIM-SM SPT 切換: RP 從 R3=>R2

R3#int f0/1 #delay 10000


R3#clear ip eigr neighbors

R4#show ip route

D 15.1.1.0[90/33280] via 100.1.1.3…fa0/1

[90/33280] via 100.1.1.2…fa0/1

 [修改 Delay 後]

 R4#show ip route eigrp

 D 15.1.1.0[90/33280] via 100.1.1.2…fa0/1

R5# ping 232.1.1.1 repeat 100

R1# show ip mroute



(15.1.1.5, 232.1.1.1), 00:00:36/00:02:32, flags: FT
Incoming interface: fa1/0, RPF nbr 0.0.0.0
Outgoing interface list:
Fa0/0, Forward/Sparse, 00:00:02/00:03:20

 還原 SPT 自動切換,關閉 PIM-SM 自動 SPT 功能

R3#int f0/1 #no delay

R3#clear ip eigr neighbors

R4#ip pim spt-threshold infinity

 Delay 再改一次,clear ip eigr neighbor

R1# show ip mroute


(15.1.1.5, 232.1.1.1), 00:00:36/00:02:32, flags: FT
Incoming interface: fa1/0, RPF nbr 0.0.0.0
Outgoing interface list:
Fa0/1, Forward/Sparse, 00:00:02/00:02:20

You might also like