Cisco 基本PIM配置
别忘了底层需要单播支撑哦。
1.静态RP
在PIM-SM模式中使用静态RP配置是组播域搭建的最简单方式。定义静态RP域内需要你手动在RP路由器和每台下游路由器上手动配置。
静态RP配合MSDP实现RP冗余的Anycast-RP在小规模网络中是个不错的选择。
1.1IOS配置静态RP
1.启用IP组播
ip multicast-routing
2.启用三层接口、环回口的PIM配置
interface Loopback0
ip address 2.2.2.2 255.255.255.255
ip pim sparse-mode
!
interface Ethernet0/0
ip address 24.1.1.2 255.255.255.0
ip pim sparse-mode
!
interface Ethernet0/1
ip address 12.1.1.2 255.255.255.0
ip pim sparse-mode
3.确保被指定的静态RP能访问,启用IGP使期可达。
router ospf 1
router-id 1.1.1.1
network 0.0.0.0 255.255.255.255 area 0
4.指定静态RP
ip pim rp-address 1.1.1.1
5.检查RP角色,可以看到有Static的字样
R1#show ip pim rp mapping
PIM Group-to-RP Mappings
Group(s): 224.0.0.0/4, Static
RP: 1.1.1.1 (?)
1.2IOS-XR配置静态RP
1.启动组播路由和打通底层IGP路由,这里用R1作为例子
hostname R1
interface Loopback0
ipv4 address 1.1.1.1 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address 13.1.1.1 255.255.255.0
!
interface GigabitEthernet0/0/0/1
ipv4 address 12.1.1.1 255.255.255.0
router ospf 1
router-id 1.1.1.1
address-family ipv4
area 0
network point-to-point
interface Loopback0
!
interface GigabitEthernet0/0/0/0
!
interface GigabitEthernet0/0/0/1
!
!
!
multicast-routing
address-family ipv4
interface Loopback0
enable
!
interface GigabitEthernet0/0/0/0
enable
!
interface GigabitEthernet0/0/0/1
enable
2.启用PIM
router pim
address-family ipv4
interface Loopback0
!
interface GigabitEthernet0/0/0/0
enable
!
interface GigabitEthernet0/0/0/1
enable
3.添加静态RP配置
RP/0/0/CPU0:R1(config)#router pim
RP/0/0/CPU0:R1(config-pim)#address-family ipv4
RP/0/0/CPU0:R1(config-pim-default-ipv4)#rp-address 1.1.1.1 ?
WORD Access list of groups that should map to given RP
bidir Specify keyword bidir to configure a bidir RP
override Static RP config overrides auto-rp and BSR
<cr>
RP/0/0/CPU0:R1(config-pim-default-ipv4)#rp-address 1.1.1.1
2.动态RP
2.1.Auto-RP(Cisco 私有)
避免使用静态RP路由角色的单点故障,推荐使用动态RP,动态RP除了能避免单点故障,还可以指定不同的组播组来实现负载均衡。 Auto-RP定义两个角色,但一台路由器可以既是MA也是CRP:
- 班主任(MA mapping agent),可以有多个MA,角色作用是决定哪台设备的接口做RP,在指定的时候默认是全部组播组的MA,可以选择为特定组播组的MA,拥有多个MA角色的时候会进行PK选举,在使用discover组播报文(224.0.1.40)告知其他设备竞选RP角色的结果。
- 班长(CRP candidate),可以定义多个CRP,它和MA都是属于定义接口级别。使用announce组播报文(224.0.1.39)告知MA想要成为RP,存在多个CRP竞争的时候会挑选IP大的。
配置: 全局下使用ip pim send-rp-discover 接口(MA mapping agent) 全局下使用ip pim send-rp-announce 接口(CRP candidate)
2.1.2.IOS配置Auto-RP
0.使用IGP打通路由
router ospf 1
router-id [loopback-port-IP]
network 0.0.0.0 255.255.255.255 area 0
1.R1和R2配置Auto-RP
ip pim autorp listener
ip pim send-rp-announce Loopback0 scope 255 group-list 1 interval 15
ip pim send-rp-discovery Loopback0 scope 255 interval 15
access-list 1 permit 239.0.0.0 0.255.255.255
2.R3和R4的配置,由于区别不大,只附上R4的。
R4
ip multicast-routing
ip cef
!
interface Loopback0
ip address 4.4.4.4 255.255.255.255
ip pim sparse-mode
!
interface Ethernet0/0
ip address 24.1.1.4 255.255.255.0
ip pim sparse-mode
duplex auto
!
router ospf 1
router-id 4.4.4.4
network 0.0.0.0 255.255.255.255 area 0
!
ip pim autorp listener
3.检查RP状态。
R1#show ip pim rp mapping
PIM Group-to-RP Mappings
This system is an RP (Auto-RP)
This system is an RP-mapping agent (Loopback0)
Group(s) 239.0.0.0/8
RP 2.2.2.2 (?), v2v1
Info source: 2.2.2.2 (?), elected via Auto-RP
Uptime: 00:12:08, expires: 00:00:36
RP 1.1.1.1 (?), v2v1
Info source: 1.1.1.1 (?), via Auto-RP
Uptime: 00:13:06, expires: 00:00:38
2.1.3.IOS-XR配置Auto-RP
1.打通IGP和开启组播转发功能,这里用R1作为例子。
hostname R1
interface Loopback0
ipv4 address 1.1.1.1 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address 13.1.1.1 255.255.255.0
!
interface GigabitEthernet0/0/0/1
ipv4 address 12.1.1.1 255.255.255.0
router ospf 1
router-id 1.1.1.1
address-family ipv4
area 0
network point-to-point
interface Loopback0
!
interface GigabitEthernet0/0/0/0
!
interface GigabitEthernet0/0/0/1
!
!
!
multicast-routing
address-family ipv4
interface Loopback0
enable
!
interface GigabitEthernet0/0/0/0
enable
!
interface GigabitEthernet0/0/0/1
enable
2.PIM和Auto-RP配置,R1和R2作为RP,配置一样。
router pim
address-family ipv4
auto-rp mapping-agent Loopback0 scope 255 interval 60
auto-rp candidate-rp Loopback0 scope 255 group-list 224-4 interval 60
interface Loopback0
!
interface GigabitEthernet0/0/0/0
enable
!
interface GigabitEthernet0/0/0/1
enable
3.从其他设备上检查RP状态
R3
RP/0/0/CPU0:R3#show pim rp mapping
Tue Jul 7 15:22:53.505 UTC
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
RP 2.2.2.2 (?), v2
Info source: 1.1.1.1 (?), elected via autorp
Uptime: 00:00:13, expires: 00:02:52
Group(s) 224.0.0.0/4
RP 1.1.1.1 (?), v2
Info source: 1.1.1.1 (?), elected via autorp
Uptime: 00:00:11, expires: 00:02:48
RP/0/0/CPU0:R3#
R4
RP/0/0/CPU0:R4#show ip pim rp map
Tue Jul 7 15:24:34.968 UTC
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
RP 2.2.2.2 (?), v2
Info source: 1.1.1.1 (?), elected via autorp
Uptime: 00:01:54, expires: 00:02:11
Group(s) 224.0.0.0/4
RP 1.1.1.1 (?), v2
Info source: 1.1.1.1 (?), elected via autorp
Uptime: 00:01:51, expires: 00:01:08
RP/0/0/CPU0:R4#
2.1.4.NX-OS配置Auto-RP
【先欠着】
2.2.BSR(Bootstrap router)
BSR的机制上和AUTO-RP大致相同,不同的是班主任(CBSR)收集参选RP角色选举的人(RPC),选后告知所有其他路由器,由路由器自行判断谁来当RP角色,因为判断RP角色的机制是一致的,所以不会出现RP角色不一致的结果。
配置定义CBSR角色后的路由器会监听域内(180s)是否有BSR角色的存在,没有BSR后,180s后自己成为BSR并组播通告(60s/1次,224.0.1.13)。存在则对比CBSR优先级(越大越好)、接口IP(越大越好),得出的成为BSR。
直连路由收到后会进行BSR-RPF校验,根据载荷中的BRF地址查单播路由表,看看前往BSR地址的单播地址的出接口是否和接受SBR报文的接口一样,是则认可为BSR路由并将BSR组播报文传播给其他邻居,其他邻居收到后一样进行BSR-RPF校验来防止发生环路和确定BSR角色。
确定了BSR角色后,想要成为RPC角色会以单播的方式发报文给BSR路由器(60s/一次),BSR收到后整理入下一次的BSR通告中,其他路由器进行BSR-RPF校验的时候再自行从中选举出真正的RR角色。
选举原则:最长匹配、优先级(小的胜)、BSR散列函数与IP计算出的哈希值、IP地址(大的胜)。
配置: 全局下使用 ip pim bsr-candidate 接口(CBSR) 全局下使用 ip pim rp-candidate 接口(RPC)
2.2.2.IOS配置BSR
0.使用IGP打通路由
router ospf 1
router-id [loopback-port-IP]
network 0.0.0.0 255.255.255.255 area 0
1.R1和R2配置BSR
ip pim bsr-candidate Loopback0
ip pim rp-candidate Loopback0 interval 10 priority 10
2.R3和R4的下游只需路由可达,没其他额外配置,只附上R4的。
R4
ip multicast-routing
ip cef
!
interface Loopback0
ip address 4.4.4.4 255.255.255.255
ip pim sparse-mode
!
interface Ethernet0/0
ip address 24.1.1.4 255.255.255.0
ip pim sparse-mode
duplex auto
!
router ospf 1
router-id 4.4.4.4
network 0.0.0.0 255.255.255.255 area 0
!
ip pim autorp listener
3.检查RP状态。
R3#show ip pim rp mapping
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
RP 2.2.2.2 (?), v2
Info source: 2.2.2.2 (?), via bootstrap, priority 5, holdtime 150
Uptime: 00:00:32, expires: 00:01:54
RP 1.1.1.1 (?), v2
Info source: 2.2.2.2 (?), via bootstrap, priority 10, holdtime 150
Uptime: 00:01:14, expires: 00:02:21
2.2.3.IOS-XR配置BSR
和Auto-RP的区别在PIM几乎为0,这里只贴实现配置。
router pim
address-family ipv4
interface Loopback0
!
interface GigabitEthernet0/0/0/0
enable
!
interface GigabitEthernet0/0/0/1
enable
!
bsr candidate-bsr 1.1.1.1 hash-mask-len 30 priority 10
bsr candidate-rp 1.1.1.1 priority 10 interval 60
!
验证配置
RP/0/0/CPU0:R4#show ip pim rp map
Tue Jul 7 15:31:52.418 UTC
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
RP 2.2.2.2 (?), v2
Info source: 24.1.1.2 (?), elected via bsr, priority 5, holdtime 150
Uptime: 00:00:30, expires: 00:02:25
Group(s) 224.0.0.0/4
RP 1.1.1.1 (?), v2
Info source: 24.1.1.2 (?), elected via bsr, priority 10, holdtime 150
Uptime: 00:00:04, expires: 00:02:25
2.2.4.NX-OS配置BSR
【先欠着】
2.3 Anycast-RP
MSDP是用于跨AS来传递组播源的协议,由于两个不同的AS内,各自的RP不知道对方的域内有组播接收需求,只要让双方的RP能够知道其域内有关于对方的组播报文的接收需求即可。
它和BGP一样,MSPD需要预先配置好对等邻居,MSDP 也是用TCP 来安全的建立邻居,使用TCP 639端口来实现传输。
在RP启用MSDP后,假如域内信源发送注册报文给第一跳路由器并告知RP路由器,RP路由器会收集组播组信源的信息整理成MSDP的SA(source active)报文并发送邻居AS域内的RP,当邻居域内的RP得知其域内有我方域的组播接收需求根据信源地址(s,g)join报文 一跳一跳传播到我方域内的第一跳路由器,第一跳路由器再根据源树计算出路径将组播报文发送接收者。
MSDP实现Anycat-RP双主状态是常见的应用场景,IOS\IOS-XR\NX-OS三个平台都支持。
PIM Anycast-RP是另外一个实现方法,只有NX-OS支持在IPv4环境下使用PIM Anycast-RP,而在IPv6的环境下则三个平台都支持,NX-OS能够完全支持PIM Anycast-RP和MSDP Anycast-RP。
2.3.1 IOS配置Anycast-RP
0.使用IGP打通路由和Anycast接口(lo1)
router ospf 1
router-id [loopback-port-IP]
network 0.0.0.0 255.255.255.255 area 0
inter loopback 1
ip address 100.100.100.100 255.255.255.0
ip pim sparse-mode
(R1/R2都需要配置相同的looback 1口)
1.配置BSR/Auto-RP/静态RP,这里选BSR
ip pim bsr-candidate Loopback0
ip pim rp-candidate Loopback1 interval 10
2.R3和R4的下游只需路由可达,没其他额外配置,只附上R4的。
R4
ip multicast-routing
ip cef
!
interface Loopback0
ip address 4.4.4.4 255.255.255.255
ip pim sparse-mode
!
interface Ethernet0/0
ip address 24.1.1.4 255.255.255.0
ip pim sparse-mode
duplex auto
!
router ospf 1
router-id 4.4.4.4
network 0.0.0.0 255.255.255.255 area 0
!
ip pim autorp listener
3.配置Anycast-RP
R1
ip msdp peer 2.2.2.2 connect-source Loopback0
ip msdp cache-sa-state
ip msdp originator-id Loopback0
R2
ip msdp peer 1.1.1.1 connect-source Loopback0
ip msdp cache-sa-state
ip msdp originator-id Loopback0
3.检查RP状态
R3#show ip pim rp map
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
RP 100.100.100.100 (?), v2
Info source: 2.2.2.2 (?), via bootstrap, priority 0, holdtime 150
Uptime: 00:02:31, expires: 00:01:25
当主RPDown后,会自动切换到R1,但是RP地址不变
R3#show ip pim rp map
PIM Group-to-RP Mappings
Group(s) 224.0.0.0/4
RP 100.100.100.100 (?), v2
Info source: 1.1.1.1 (?), via bootstrap, priority 0, holdtime 150
Uptime: 00:03:36, expires: 00:00:20
2.3.2 IOS-XR配置Anycast-RP
1.创建Anycast-RP地址(前提是域内IGP打通),并宣告入PIM
R1/R2:
interface Loopback1
ipv4 address 100.100.100.100 255.255.255.255
router ospf 1
address-family ipv4
area 0
network point-to-point
interface Loopback0
!
interface Loopback1
!
interface GigabitEthernet0/0/0/0
!
interface GigabitEthernet0/0/0/1
!
!
!
multicast-routing
address-family ipv4
interface Loopback0
enable
!
interface Loopback1
enable
!
interface GigabitEthernet0/0/0/0
enable
!
interface GigabitEthernet0/0/0/1
enable
!
!
!
router pim
address-family ipv4
interface Loopback0
!
interface Loopback1
enable
!
interface GigabitEthernet0/0/0/0
enable
!
interface GigabitEthernet0/0/0/1
enable
2.建立MSDP邻居
R1:
router msdp
connect-source Loopback0
peer 2.2.2.2
R2:
router msdp
connect-source Loopback0
peer 1.1.1.1
3.下游设备指定静态RP地址
RP/0/0/CPU0:R4(config)#router pim
RP/0/0/CPU0:R4(config-pim)#address-family ipv4
RP/0/0/CPU0:R4(config-pim-default-ipv4)#rp-address 1.1.1.1 ?
WORD Access list of groups that should map to given RP
bidir Specify keyword bidir to configure a bidir RP
override Static RP config overrides auto-rp and BSR
<cr>
RP/0/0/CPU0:R4(config-pim-default-ipv4)#rp-address 1.1.1.1
2.3.3 NX-OS配置Anyscat-RP(PIM)
【先欠着】
2.4 Phantom RP
Phantom RP的概念是存在BiDir PIM 环境下使用。由于BiDir中的RP并不负责任何控制层面的负载和RP信息。一个好的BiDir RP设计不需要提供物理RP,而是使用Phantom RP。顾名思义就是使用一个虚拟IP作为RP通告出去,但这个地址本身并不存在任何一台设备上。
【先欠着】
3.PIM SSM
由RFC 3569中定义PIM-SSM,它是PIM-SM的变种,PIM-SSM的网络中可以有一个源和多个组播应用,接收者必须用IGMPv3注册。不需要使用RP,因为接受方可以指定发送源
SSM的特点是网络用户能够预先知道组播源的具体位置。因此用户在加入组播组时,可以明确指定(S,G)来接受指定源。 组成员端DR了解到用户主机的需求后,直接向源端DR发送Join报文。Join报文逐跳向上传输,在源与组成员之间建立SPT。 例如两个组播源,每一个源称为一个通道(channel): A(S,G)=(1.1.1.1,232.1.1.1) B(S,G)=(1.1.1.2,232.1.1.1) 就算两个源组播地址都是相同,接收方依然可以访问指定的channel,因为SSM是根据channel来区分组播流。在SSM模型中,PIM-SM的关键机制包括邻居发现、DR竞选、构建SPT。
建议使用IANA预留的232.0.0.0/8来作为SSM组播组,PIM-SSM利用单播防环机制来确保组播网络中没有环路。
配置:
接口启用 ip igmp version 3
全局启用 ip igmp version 3
全局启用 ip pim ssm default
3.1 IOS配置PIM-SSM
0.打通接口和IGP路由,交换机空配置。
router ospf 1
router-id [loopback-port-IP]
network 0.0.0.0 255.255.255.255 area 0
inter loopback 0
ip address 1.1.1.1
ip pim sparse-mode
1.启动PIM/IGMP version 3
ip multicast-routing
ip pim ssm default
ip igmp version 3
interface Ethernet0/0
ip address 192.168.1.1 255.255.255.0
ip pim sparse-mode
ip igmp version 3
2.指定加入组播和指定组播源
R1:
interface Ethernet0/0
ip igmp join-group 232.1.1.1 source 2.2.2.2
R3:
interface Ethernet0/0
ip igmp join-group 232.1.1.1 source 2.2.2.2
3.检查状态和测试
测试从R2发组播包,结果看到R1\R3都接收了。
R2#ping 232.1.1.1 sou 2.2.2.2
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 232.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2
Reply to request 0 from 192.168.1.1, 1 ms
Reply to request 0 from 192.168.1.3, 1 ms
查看R2组播路由表,没有任何(*,g)表象,唯一有的224.0.1.40是用与PIM Auto-rp discover报文用的地址。并且PIM-SSM的特定是不需要RP角色,通过show ip pim rp mapping 可以发现是没有RP的。
R2#show ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group,
G - Received BGP C-Mroute, g - Sent BGP C-Mroute,
N - Received BGP Shared-Tree Prune, n - BGP C-Mroute suppressed,
Q - Received BGP S-A Route, q - Sent BGP S-A Route,
V - RD & Vector, v - Vector, p - PIM Joins on route,
x - VxLAN group
Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 224.0.1.40), 00:18:30/00:02:31, RP 0.0.0.0, flags: DCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Loopback0, Forward/Sparse, 00:18:28/00:02:31
R2#show ip pim rp map
PIM Group-to-RP Mappings
R2#
尝试使用R3发出组播流量,结果无回应,因为R1指定的源必须是2.2.2.2
R3>en
R3#ping 232.1.1.1 sou lo 0
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 232.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 3.3.3.3
.
R3#
3.2 IOS-XR配置PIM-SSM
1.接口加入IGMP,默认是version3,
router igmp
interface GigabitEthernet0/0/0/0
!
version 3
2.指定接受源
router igmp
interface GigabitEthernet0/0/0/0
join-group 232.1.1.1 2.2.2.2
!
version 3
3.测试,需要指定源是2.2.2.2才肯能成功。
RP/0/0/CPU0:R2#ping 232.1.1.1 sou 2.2.2.2
Tue Jul 7 16:11:02.092 UTC
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 232.1.1.1, timeout is 2 seconds:
Reply to request 0 from 12.1.1.1, 1 ms
Reply to request 0 from 12.1.1.3, 1 ms
RP/0/0/CPU0:R2#ping 232.1.1.1 sou 100.100.100.100
Tue Jul 7 16:13:45.671 UTC
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 232.1.1.1, timeout is 2 seconds:
.
RP/0/0/CPU0:R2#
3.3 NX-OS配置PIM-SSM
【先欠着】