目錄

前言
Multicast Boundary
  Static RP
  BSR
  Auto-RP
MSDP
Multicast over GRE Tunnel

前言

Multicast Source Discovery Protocol (MSDP) 可以把多個 Multicast Domain 連接起來,讓 host 可以接收到位於其他 Domain 的 Source 所發出的 Multicast Traffic。不過,在學習 MSDP 先要搞清楚怎樣設定 Multicast Boundary。本篇文章涉及 Protocol Independent Multicast (PIM) 的設定方法,如讀者想重溫 PIM 的資料可到本網站的 PIM 教學查看。

Multicast Boundary

設定 Multicast Boundary 的目的在於把 Multicast 分成不同的 Domain,每個 Domain 擁有自己的 RP,因此,在沒有設定 MSDP 的情況下,不同的 Multicast Domain 是互不相干的。由於設定 RP 的方法有三種,包括:Static RP、Bootstrap Router (BSR) Protocol 及 Auto-RP,不同方法在設定 Multicast Boundary 會有所不同,以下會逐一說明。

我們會用以下網絡進行 Multicast Boundary 的實驗:

msdp

各 Router 初始設定如下:

hostname R1
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip pim sparse-mode
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
 ip pim sparse-mode
!
interface Ethernet0/1
 ip address 192.168.13.1 255.255.255.0
 ip pim sparse-mode
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
hostname R2
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
 ip pim sparse-mode
!
interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
 ip pim sparse-mode
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
hostname R3
!
interface Loopback0
 ip address 3.3.3.3 255.255.255.255
 ip pim sparse-mode
!
interface Ethernet0/0
 ip address 192.168.34.3 255.255.255.0
 ip pim sparse-mode
!
interface Ethernet0/1
 ip address 192.168.13.3 255.255.255.0
 ip pim sparse-mode
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0
hostname R4
!
interface Loopback0
 ip address 4.4.4.4 255.255.255.255
 ip pim sparse-mode
!
interface Ethernet0/0
 ip address 192.168.34.4 255.255.255.0
 ip pim sparse-mode
!
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0

Static RP

首先我們嘗試用 Static RP 的方法把 R2 設定成 Domain 1 的 RP,把 R4 設定成 Domain 2 的 RP。辦法十分簡單,只要用 ip pim rp-address <ip> 指令分別設定好 RP 便可。

R1(config)#ip pim rp-address 2.2.2.2
R2(config)#ip pim rp-address 2.2.2.2
R3(config)#ip pim rp-address 4.4.4.4
R4(config)#ip pim rp-address 4.4.4.4

由於兩個 Domain 各自有自己的 RP,基本上兩個 Domain 是互不相干,彼此的 Multicast Traffic 不能互通。R1 的 e0/1 就會成為 Domain 1 的 Multicast Boundary,而 R3 的 e0/1 就成為 Domain 2 的 Boundary。測試一下,把 R2 和 R4 的 Loopback Interface 都 Join 239.1.1.1。

R2(config)#interface loopback 0
R2(config-if)#ip igmp join-group 239.1.1.1
R4(config)#interface loopback 0
R4(config-if)#ip igmp join-group 239.1.1.1

在 R3 ping 239.1.1.1 只有 R4 回應,當然了,因為在沒有 MSDP 的情況,Multicast Traffic 不能進入另一個 Domain。

R3#ping 239.1.1.1 repeat 5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.34.4, 44 ms
Reply to request 1 from 192.168.34.4, 68 ms
Reply to request 2 from 192.168.34.4, 60 ms
Reply to request 3 from 192.168.34.4, 52 ms
Reply to request 4 from 192.168.34.4, 64 ms

BSR

現在試試為 Auto-RP 設定 Multicast Boundary。方法亦不複雜,只要使用一個 ip pim bsr-border 便可以。做這個測試前,首先要把 BSR 設定好 (記得先把 Static RP 的設定刪掉) :

R2(config)#ip pim bsr-candidate loopback 0
R2(config)#ip pim rp-candidate loopback 0
R4(config)#ip pim bsr-candidate loopback 0
R4(config)#ip pim rp-candidate loopback 0

先來測試一下,把 R2 和 R4 的 Loopback Interface 都 Join 239.1.1.1。

R2(config)#interface loopback 0
R2(config-if)#ip igmp join-group 239.1.1.1
R4(config)#interface loopback 0
R4(config-if)#ip igmp join-group 239.1.1.1

然後在 R3 PIng 239.1.1.1,看見 R2 和 R4 都有回覆,不得了!Domain 2 的 Multicast Traffic 漏到 Domain 1。

R3#ping 239.1.1.1 repeat 5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.34.4, 40 ms
Reply to request 0 from 192.168.12.2, 88 ms
Reply to request 1 from 192.168.34.4, 56 ms
Reply to request 1 from 192.168.12.2, 76 ms
Reply to request 2 from 192.168.12.2, 72 ms
Reply to request 2 from 192.168.34.4, 56 ms
Reply to request 3 from 192.168.34.4, 48 ms
Reply to request 3 from 192.168.12.2, 72 ms
Reply to request 4 from 192.168.34.4, 32 ms
Reply to request 4 from 192.168.12.2, 72 ms

所以,要在 R1 和 R3 的 eth0/0 使用 ip pim bsr-border 指令。

R1(config)#interface ethernet 0/1
R1(config-if)#ip pim bsr-border
R3(config)#interface ethernet 0/1
R3(config-if)#ip pim bsr-border

先在各 Router 執行 clear ip mroute *,然後再測試一下,現在只有 Domain 2 的 R4 回應了。

R3#ping 239.1.1.1 repeat 5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.34.4, 64 ms
Reply to request 1 from 192.168.34.4, 64 ms
Reply to request 2 from 192.168.34.4, 56 ms
Reply to request 3 from 192.168.34.4, 52 ms
Reply to request 4 from 192.168.34.4, 72 ms

Auto-RP

現在試試為 Auto-RP 設定 Multicast Boundary。由於 Auto-RP 是用 224.0.1.39 和 224.0.1.40 來傳送 RP 資訊,因此只要在 R1 和 R3 的 eth0/1 把這兩個 Multicast Block 掉便可阻止 RP 資訊「洩漏」到其他 Domain。要做這個測試,首先要把 Auto-RP 設定好 (同樣記得先把 BSR 的設定刪掉) :

R1(config)#int range ethernet 0/0 - 1
R1(config-if-range)#ip pim sparse-dense-mode
R2(config)#int ethernet 0/0
R2(config-if-range)#ip pim sparse-dense-mode
R2(config-if-range)#int l0
R2(config-if)#ip pim sparse-dense-mode
R2(config-if)#exit
R2(config)#ip pim bsr-candidate l0 scope 255
R2(config)#ip pim rp-candidate l0 scope 255
R3(config)#int range ethernet 0/0 - 1
R3(config-if-range)#ip pim sparse-dense-mode
R4(config)#int ethernet 0/0
R4(config-if-range)#ip pim sparse-dense-mode
R4(config-if-range)#int l0
R4(config-if)#ip pim sparse-dense-mode
R4(config-if)#exit
R4(config)#ip pim bsr-candidate l0 scope 255
R4(config)#ip pim rp-candidate l0 scope 255

測試一下,把 R2 和 R4 的 Loopback Interface 都 Join 239.1.1.1。

R2(config)#interface loopback 0
R2(config-if)#ip igmp join-group 239.1.1.1
R4(config)#interface loopback 0
R4(config-if)#ip igmp join-group 239.1.1.1

然後在 R3 PIng 239.1.1.1,看見 R2 和 R4 都有回覆,原因當然是 Domain 2 的 Multicast Traffic 漏到 Domain 1 了。

R3#ping 239.1.1.1 repeat 5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.34.4, 40 ms
Reply to request 0 from 192.168.12.2, 88 ms
Reply to request 1 from 192.168.34.4, 56 ms
Reply to request 1 from 192.168.12.2, 76 ms
Reply to request 2 from 192.168.12.2, 72 ms
Reply to request 2 from 192.168.34.4, 56 ms
Reply to request 3 from 192.168.34.4, 48 ms
Reply to request 3 from 192.168.12.2, 72 ms
Reply to request 4 from 192.168.34.4, 32 ms
Reply to request 4 from 192.168.12.2, 72 ms

所以,要在 R1 和 R3 的 eth0/0 把 239.0.1.39 和 239.0.1.40 Block 掉,指令如下。

R1(config)#access-list 1 deny 224.0.1.39
R1(config)#access-list 1 deny 224.0.1.40
R1(config)#access-list 1 permit any
R1(config)#int eth 0/1
R1(config-if)#ip multicast boundary 1
R3(config)#access-list 1 deny 224.0.1.39
R3(config)#access-list 1 deny 224.0.1.40
R3(config)#access-list 1 permit any
R3(config)#int eth 0/1
R3(config-if)#ip multicast boundary 1

Clear ip mroute * 後再測試,OK 了。

R3#ping 239.1.1.1 repeat 5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.34.4, 64 ms
Reply to request 1 from 192.168.34.4, 64 ms
Reply to request 2 from 192.168.34.4, 56 ms
Reply to request 3 from 192.168.34.4, 52 ms
Reply to request 4 from 192.168.34.4, 72 ms

MSDP

明白了怎樣把 Multicast 「切割」成不同的 Domain 後,現在我們嘗試用 MSDP 把不同 Domain 的 RP 連接起來,讓 host 能夠收到來自其他 Domain 的 Multicast Traffic。無論用什麼方法設定 Multicast Boundary,設定 MSDP 的方法都一樣。

msdp

設定方法如下:

R2(config)#ip msdp peer 4.4.4.4 connect-source loopback 0
R4(config)#ip msdp peer 2.2.2.2 connect-source loopback 0

測試一下,把 R2 和 R4 的 Loopback Interface 都 Join 239.1.1.1。

R2(config)#interface loopback 0
R2(config-if)#ip igmp join-group 239.1.1.1
R4(config)#interface loopback 0
R4(config-if)#ip igmp join-group 239.1.1.1

然後在 R3 PIng 239.1.1.1,看見 R2 和 R4 都有回覆,就這樣兩個 Domain 的 Multicast Traffic 互通了。

R3#ping 239.1.1.1 repeat 5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.34.4, 40 ms
Reply to request 0 from 192.168.12.2, 88 ms
Reply to request 1 from 192.168.34.4, 56 ms
Reply to request 1 from 192.168.12.2, 76 ms
Reply to request 2 from 192.168.12.2, 72 ms
Reply to request 2 from 192.168.34.4, 56 ms
Reply to request 3 from 192.168.34.4, 48 ms
Reply to request 3 from 192.168.12.2, 72 ms
Reply to request 4 from 192.168.34.4, 32 ms
Reply to request 4 from 192.168.12.2, 72 ms

Multicast over GRE Tunnel

大家必需知道,MSDP 只負責傳送 RP 的資訊,僅此而已,並不負責傳送 Multicast Traffic。傳送工作仍然由 PIM 負責,因此,如果兩個 Domain 中間連 PIM 都沒打通的話,就算有 MSDP,Multicast Traffic 就傳不到。這時候就需要建立一條 GRE Tunnel 讓 PIM 在 GRE Tunnel 裡面傳送。

首先,我們把 R1 和 R3 之間的 PIM 設定刪掉。

R1(config)#int ethernet 0/1
R1(config-if)#no ip pim sparse-mode
R3(config)#int ethernet 0/1
R3(config-if)#no ip pim sparse-mode

測試一下,把 R2 和 R4 的 Loopback Interface 都 Join 239.1.1.1。

R2(config)#interface loopback 0
R2(config-if)#ip igmp join-group 239.1.1.1
R4(config)#interface loopback 0
R4(config-if)#ip igmp join-group 239.1.1.1

然後在 R3 PIng 239.1.1.1,可以預期的是,只有 R4 回覆,因為 PIM 斷開了,Multicast 不能傳送。

R3#ping 239.1.1.1 repeat 5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.34.4, 56 ms
Reply to request 1 from 192.168.34.4, 68 ms
Reply to request 2 from 192.168.34.4, 36 ms
Reply to request 3 from 192.168.34.4, 76 ms
Reply to request 4 from 192.168.34.4, 56 ms

現在,我們在 R2 的 e0/0 與 R4 的 e0/0 建立一條 GRE Tunnel,並且在 GRE Tunnel 上開啟 PIM Sparse Mode。

msdp

R2(config)#interface tunnel 0
R2(config-if)#tunnel source ethernet 0/0
R2(config-if)#tunnel destination 192.168.34.4
R2(config-if)#ip address 192.168.24.2 255.255.255.0
R2(config-if)#ip pim sparse-mode
R4(config)#interface tunnel 0
R4(config-if)#tunnel source ethernet 0/0
R4(config-if)#tunnel destination 192.168.12.2
R4(config-if)#ip address 192.168.24.4 255.255.255.0
R4(config-if)#ip pim sparse-mode

設定好 GRE Tunnel 再在 R3 測試,Multicast 通了!

R3#ping 239.1.1.1 repeat 5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:

Reply to request 0 from 192.168.34.4, 60 ms
Reply to request 0 from 192.168.12.2, 160 ms
Reply to request 1 from 192.168.34.4, 80 ms
Reply to request 1 from 192.168.12.2, 104 ms
Reply to request 2 from 192.168.34.4, 48 ms
Reply to request 2 from 192.168.12.2, 64 ms
Reply to request 3 from 192.168.34.4, 60 ms
Reply to request 3 from 192.168.12.2, 60 ms
Reply to request 4 from 192.168.34.4, 68 ms
Reply to request 4 from 192.168.12.2, 72 ms

Coming Soon......

SA Filter