目录

前言
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 指令分别设定好 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