Cisco 基本PIM配置

简单又齐全,快捷又方便

Posted by i9u on July 7, 2020

Cisco 基本PIM配置

别忘了底层需要单播支撑哦。

1.静态RP

在PIM-SM模式中使用静态RP配置是组播域搭建的最简单方式。定义静态RP域内需要你手动在RP路由器和每台下游路由器上手动配置。

静态RP配合MSDP实现RP冗余的Anycast-RP在小规模网络中是个不错的选择。

1.1IOS配置静态RP

image-20200706161229009

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:

  1. 班主任(MA mapping agent),可以有多个MA,角色作用是决定哪台设备的接口做RP,在指定的时候默认是全部组播组的MA,可以选择为特定组播组的MA,拥有多个MA角色的时候会进行PK选举,在使用discover组播报文(224.0.1.40)告知其他设备竞选RP角色的结果。
  2. 班长(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)

image-20200706161229009

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)

image-20200706161229009

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。

image-20200706161229009

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

image-20200707160508717

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

【先欠着】