Monday, December 10, 2018

CCIE SPv4 MPLS Multicast VPN - Profile 0 - Default MDT GRE PIM C-Mcast Signaling

For the first of many posts on multicast VPN we'll begin the first three with GRE encapsulated mVPN. MPLS L3VPN must be already operational in the SP network and connecting the CE sites together. The Unicast traffic sent and received between CE sites is forwarded via MPLS in the SP backbone, multicast traffic sent and received between CE sites is forwarded via GRE in the SP backbone. If you look at the list of profiles for IOS and XR, you'll see profiles 0-26, which is made up of GRE, mLDP, RSVP-TE and IR based mVPNs. We'll focus the first three on GRE. There are several flavors of SP multicast we can test, BSR, Auto RP, Bidirectional and SSM. We'll see in our future posts how SSM and Bidirectional work in the SP backbone, using Auto RP is the same as BSR in my opinion so there isn't a need to test it.

Profile 0 Default MDT - GRE - PIM C-mcast Signaling
Profile 3 Default MDT - GRE - BGP-AD - PIM C-mcast Signaling
Profile 11 Default MDT - GRE - BGP-AD - BGP C-mcast Signaling

All three use GRE to forward between PE devices in the SP backbone. Rather than tackling them in numerical order, I wanted to better understand how they were different in the hopes of using that understanding to help in the CCIE lab when they describe which profile to implement. There are 27 after all. The Rosen Model is the first we'll look at. No BGP will be used for Any Source Multicast, just BSR in the SP core and BSR on R15 for the RPs.


We'll be focusing on the left side of the diagram for now. R15 will be the RP for the CE sites, R16 will be the sender and R17 and R18 will be the receivers.

Setting up the SP backbone
We'll start off by configuring R1-R7 and XR1-XR2 to enable multicast and PIM.
R5 will be the RP of the SP backbone.
The PE routers will form direct, or full mesh multicast tunnel connections with each other.
The entire SP core will build inter SP router PIM tunnels with each others to allow the forwarding of multicast traffic through the backbone network.

R1
vrf definition MVPN
 rd 100:100
 route-target both 100:100
 !
 address-family ipv4
  mdt default 239.1.1.1
 exit-address-family
!
ip multicast-routing distributed
!
ip multicast-routing vrf MVPN distributed
!
interface Loopback0
 ip pim sparse-mode
!
interface GigabitEthernet1.201
 vrf forwarding MVPN
 ip pim sparse-mode
!
interface GigabitEthernet1.12
 ip pim sparse-mode
 !
interface GigabitEthernet1.14
 ip pim sparse-mode
!
router bgp 1.50693
 address-family ipv4 vrf MVPN
  neighbor 100.64.201.15 remote-as 65015
  neighbor 100.64.201.15 activate

R2
ip multicast-routing distributed
!
interface GigabitEthernet1.12
 ip pim sparse-mode
!
interface GigabitEthernet1.23
 ip pim sparse-mode
 !
interface GigabitEthernet1.25
 ip pim sparse-mode

R3
vrf definition MVPN
 rd 100:100
  route-target both 100:100
 !
 address-family ipv4
  mdt default 239.1.1.1
 exit-address-family
 !
ip multicast-routing distributed
ip multicast-routing vrf MVPN distributed
!
interface Loopback0
  ip pim sparse-mode
 !
interface GigabitEthernet1.23
 ip pim sparse-mode
!
interface GigabitEthernet1.36
 ip pim sparse-mode
 !
interface GigabitEthernet1.211
  vrf forwarding MVPN
  ip pim sparse-mode
!
router bgp 1.50693
 address-family ipv4 vrf MVPN
  neighbor 100.64.211.17 remote-as 65017
  neighbor 100.64.211.17 activate

R4
ip multicast-routing distributed
!
interface Loopback0
  ip pim sparse-mode

interface GigabitEthernet1.14
 ip pim sparse-mode
!
interface GigabitEthernet1.45
 !ip pim sparse-mode
!
interface GigabitEthernet1.114
 ip pim sparse-mode

R5
ip multicast-routing distributed
!
interface Loopback0
 ip pim sparse-mode
!
interface GigabitEthernet1.25
 ip pim sparse-mode
!
interface GigabitEthernet1.45
 ip pim sparse-mode
!
interface GigabitEthernet1.56
 ip pim sparse-mode
!
interface GigabitEthernet1.125
 ip pim sparse-mode
!
ip pim bsr-candidate Loopback0 0
ip pim rp-candidate Loopback0

R6
ip multicast-routing distributed
!
interface GigabitEthernet1.36
 ip pim sparse-mode
!
interface GigabitEthernet1.56
 ip pim sparse-mode
!
interface GigabitEthernet1.67
 ip pim sparse-mode

R7
ip multicast-routing distributed
ip multicast-routing vrf MVPN distributed
!
interface Loopback0
  ip pim sparse-mode
!
interface GigabitEthernet1.67
 ip pim sparse-mode
!
interface GigabitEthernet1.127
 ip pim sparse-mode
!
interface GigabitEthernet1.214
 encapsulation dot1Q 214
 vrf forwarding MVPN
 ip address 100.64.214.7 255.255.255.0
 ip pim sparse-mode
!
router bgp 1.50693
 address-family ipv4 vrf MVPN
  neighbor 100.64.214.18 remote-as 65018
  neighbor 100.64.214.18 activate

XR1
multicast-routing
 address-family ipv4
  mdt source Loopback0
  interface all enable
 !
 vrf CORE
  address-family ipv4
   mdt source Loopback0
   interface all enable
   mdt default ipv4 239.1.1.1
  !
 !
!
router pim
 address-family ipv4
  interface Loopback0
  !
  interface GigabitEthernet0/0/0/0.112
  !
  interface GigabitEthernet0/0/0/0.114
  !
 !
 vrf CORE
  address-family ipv4
   interface GigabitEthernet0/0/0/0.204
   !
  !
 !
!
router bgp 1.50693
 address-family vpnv4 unicast
!
 vrf CORE
  rd 1:1
  address-family ipv4 unicast
  !
  neighbor 100.64.204.16
   remote-as 65016
   address-family ipv4 unicast
    route-policy RPL_EBGP_PEERINGS in
    route-policy RPL_EBGP_PEERINGS out
    as-override

XR2
multicast-routing
 address-family ipv4
  mdt source Loopback0
  interface all enable
 !
!
router pim
 address-family ipv4
  interface Loopback0
  !
  interface GigabitEthernet0/0/0/0.112
  !
  interface GigabitEthernet0/0/0/0.125
  !
  interface GigabitEthernet0/0/0/0.127
  !
 !
!
router bgp 1.50693
 address-family vpnv4 unicast
 !
 address-family vpnv6 unicast
 !
 neighbor 192.0.2.1
  remote-as 1.50693
  update-source Loopback0
  address-family vpnv4 unicast
   route-reflector-client
  !
 !
 neighbor 192.0.2.3
  remote-as 1.50693
  update-source Loopback0
  address-family vpnv4 unicast
   route-reflector-client
  !
 !
 neighbor 192.0.2.6
  remote-as 1.50693
  update-source Loopback0
  address-family vpnv4 unicast
   route-reflector-client
  !
 !
 neighbor 192.0.2.7
  remote-as 1.50693
  update-source Loopback0
  address-family vpnv4 unicast
   route-reflector-client
  !
 !
 neighbor 192.0.2.21
  remote-as 1.50693
  update-source Loopback0
  address-family vpnv4 unicast
   route-reflector-client


R15
ip multicast-routing distributed
!
interface Loopback0
 ip pim sparse-mode
!
interface GigabitEthernet1.201
 encapsulation dot1Q 201
 ip address 100.64.201.15 255.255.255.0
 ip pim sparse-mode
!
ip pim bsr-candidate Loopback0 0
ip pim rp-candidate Loopback0
!
router bgp 65015
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 neighbor 100.64.201.1 remote-as 116229
 !
 address-family ipv4
  network 192.0.2.15 mask 255.255.255.255
  neighbor 100.64.201.1 activate
 exit-address-family

R16
ip multicast-routing distributed
!
interface Loopback0
 ip pim sparse-mode
!
interface GigabitEthernet1.204
 ip pim sparse-mode
!
router bgp 65016
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 neighbor 100.64.204.11 remote-as 116229
 !
 address-family ipv4
  network 192.0.2.16 mask 255.255.255.255
  neighbor 100.64.204.11 activate
 exit-address-family

R17
ip multicast-routing distributed
!
interface Loopback0
  ip pim sparse-mode
 ip igmp join-group 224.1.1.2
!
interface GigabitEthernet1.211
 ip pim sparse-mode
!
router bgp 65017
 bgp asnotation dot
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 neighbor 100.64.211.3 remote-as 1.50693
 !
 address-family ipv4
  network 192.0.2.17 mask 255.255.255.255
  neighbor 100.64.211.3 activate
 exit-address-family

R18
ip multicast-routing distributed
!
interface Loopback0
 ip pim sparse-mode
 ip igmp join-group 224.1.1.1
!
interface GigabitEthernet1.214
 ip pim sparse-mode
!
router bgp 65018
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 neighbor 100.64.214.7 remote-as 116229
 !
 address-family ipv4
  network 192.0.2.18 mask 255.255.255.255
  neighbor 100.64.214.7 activate
 exit-address-family

With the configuration complete, we'll check the CE RP, R15 to make sure that the routes from the other CE sites are showing up.

R15#sh ip bgp
BGP table version is 32, local router ID is 192.0.2.15
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  192.0.2.15/32    0.0.0.0                  0         32768 i
 *>  192.0.2.16/32    100.64.201.1                           0 116229 65016 i
 *>  192.0.2.17/32    100.64.201.1                           0 116229 65017 i
 *>  192.0.2.18/32    100.64.201.1                           0 116229 65018 i

Routes are showing up as expected.

R1#sh ip pim interface 

Address          Interface                Ver/   Nbr    Query  DR         DR
                                          Mode   Count  Intvl  Prior
100.64.12.1      GigabitEthernet1.12      v2/S   1      30     1          100.64.12.2
100.64.14.1      GigabitEthernet1.14      v2/S   1      30     1          100.64.14.4
192.0.2.1        Loopback0                v2/S   0      30     1          192.0.2.1


R1#sh ip pim neighbor 
PIM Neighbor Table
Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,
      P - Proxy Capable, S - State Refresh Capable, G - GenID Capable,
      L - DR Load-balancing Capable
Neighbor          Interface                Uptime/Expires    Ver   DR
Address                                                            Prio/Mode
100.64.12.2       GigabitEthernet1.12      19:12:48/00:01:44 v2    1 / DR S P G
100.64.14.4       GigabitEthernet1.14      19:11:54/00:01:38 v2    1 / DR S P G

We need to verify the SP core that PIM is enabled on the appropriate interfaces and neighbors formed. We see that PIM is enabled on the correct interfaces and neighbors have formed.

RP/0/0/CPU0:XR1#sh pim interface 
Mon Dec 10 08:48:24.501 UTC

PIM interfaces in VRF default
Address               Interface                     PIM  Nbr   Hello  DR    DR
                                                         Count Intvl  Prior

192.0.2.21            Loopback0                     on   1     30     1     this system
100.64.12.11          GigabitEthernet0/0/0/0.12     off  0     30     1     not elected
100.64.14.11          GigabitEthernet0/0/0/0.14     off  0     30     1     not elected
100.64.71.11          GigabitEthernet0/0/0/0.71     off  0     30     1     not elected
100.64.111.11         GigabitEthernet0/0/0/0.111    off  0     30     1     not elected
100.64.112.11         GigabitEthernet0/0/0/0.112    on   2     30     1     100.64.112.120
100.64.114.111        GigabitEthernet0/0/0/0.114    on   2     30     1     this system
100.64.115.11         GigabitEthernet0/0/0/0.115    off  0     30     1     not elected
100.64.116.11         GigabitEthernet0/0/0/0.116    off  0     30     1     not elected
100.64.118.11         GigabitEthernet0/0/0/0.118    off  0     30     1     not elected
100.64.141.11         GigabitEthernet0/0/0/0.141    off  0     30     1     not elected
100.64.151.110        GigabitEthernet0/0/0/0.151    off  0     30     1     not elected


RP/0/0/CPU0:XR1#sh pim neighbor 
Mon Dec 10 08:48:35.980 UTC

PIM neighbors in VRF default
Flag: B - Bidir capable, P - Proxy capable, DR - Designated Router,
      E - ECMP Redirect capable
      * indicates the neighbor created for this router

Neighbor Address             Interface              Uptime    Expires  DR pri   Flags

100.64.112.11*               GigabitEthernet0/0/0/0.112 17:32:13  00:01:37 1      B
100.64.112.120               GigabitEthernet0/0/0/0.112 17:32:09  00:01:41 1 (DR) B
100.64.114.4                 GigabitEthernet0/0/0/0.114 17:32:11  00:01:15 1      P
100.64.114.111*              GigabitEthernet0/0/0/0.114 17:32:13  00:01:31 1 (DR) B E
192.0.2.21*                  Loopback0              17:32:14  00:01:16 1 (DR) B E

The same applies to XR, we have PIM enabled on the interfaces and neighbors have formed.

R1#sh 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

(*, 239.1.1.1), 18:32:24/stopped, RP 192.0.2.5, flags: SJCFZ
  Incoming interface: GigabitEthernet1.14, RPF nbr 100.64.14.4
  Outgoing interface list:
    MVRF MVPN, Forward/Sparse, 18:32:22/stopped

(192.0.2.21, 239.1.1.1), 17:09:44/00:02:26, flags: JTZ
  Incoming interface: GigabitEthernet1.14, RPF nbr 100.64.14.4
  Outgoing interface list:
    MVRF MVPN, Forward/Sparse, 17:09:44/00:02:15

(192.0.2.7, 239.1.1.1), 17:45:50/00:01:05, flags: JTZ
  Incoming interface: GigabitEthernet1.14, RPF nbr 100.64.14.4
  Outgoing interface list:
    MVRF MVPN, Forward/Sparse, 17:45:50/00:02:09

(192.0.2.3, 239.1.1.1), 18:19:32/00:02:43, flags: JTZ
  Incoming interface: GigabitEthernet1.12, RPF nbr 100.64.12.2
  Outgoing interface list:
    MVRF MVPN, Forward/Sparse, 18:19:32/00:01:27

(192.0.2.1, 239.1.1.1), 18:29:24/00:02:36, flags: FT
  Incoming interface: Loopback0, RPF nbr 0.0.0.0
  Outgoing interface list:
    GigabitEthernet1.14, Forward/Sparse, 17:45:50/00:02:47
    GigabitEthernet1.12, Forward/Sparse, 18:19:24/00:02:32

Now on the PEs, we verify the mroute table to verify we have formed multicast tunnels to the remote PE routers to forward the multicast traffic over the SP backbone. No BGP is used in this variant, since it is just ASM.

R1#sh ip mroute vrf MVPN
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.1.1.2), 17:02:38/00:02:34, RP 192.0.2.15, flags: S
  Incoming interface: GigabitEthernet1.201, RPF nbr 100.64.201.15
  Outgoing interface list:
    Tunnel0, Forward/Sparse, 16:49:49/00:02:34

(*, 224.0.1.40), 18:33:13/00:02:53, RP 0.0.0.0, flags: DPL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null

We verify the VRF mroute table as well, we just see the (*, G) entry for the receivers that have signaled interest in traffic to the 224.1.1.2 group.

RP/0/0/CPU0:XR1#sh mrib route
Mon Dec 10 08:37:08.537 UTC

IP Multicast Routing Information Base
Entry flags: L - Domain-Local Source, E - External Source to the Domain,
    C - Directly-Connected Check, S - Signal, IA - Inherit Accept,
    IF - Inherit From, D - Drop, ME - MDT Encap, EID - Encap ID,
    MD - MDT Decap, MT - MDT Threshold Crossed, MH - MDT interface handle
    CD - Conditional Decap, MPLS - MPLS Decap, EX - Extranet
    MoFE - MoFRR Enabled, MoFS - MoFRR State, MoFP - MoFRR Primary
    MoFB - MoFRR Backup, RPFID - RPF ID Set, X - VXLAN
Interface flags: F - Forward, A - Accept, IC - Internal Copy,
    NS - Negate Signal, DP - Don't Preserve, SP - Signal Present,
    II - Internal Interest, ID - Internal Disinterest, LI - Local Interest,
    LD - Local Disinterest, DI - Decapsulation Interface
    EI - Encapsulation Interface, MI - MDT Interface, LVIF - MPLS Encap,
    EX - Extranet, A2 - Secondary Accept, MT - MDT Threshold Crossed,
    MA - Data MDT Assigned, LMI - mLDP MDT Interface, TMI - P2MP-TE MDT Interface
    IRMI - IR MDT Interface

(*,224.0.0.0/4) RPF nbr: 100.64.114.4 Flags: C RPF P
  Up: 17:20:19

(*,224.0.0.0/24) Flags: D P
  Up: 17:20:56

(*,224.0.1.39) Flags: S P
  Up: 17:20:56

(*,224.0.1.40) Flags: S P
  Up: 17:20:56
  Outgoing Interface List
    Loopback0 Flags: II LI, Up: 17:20:47

(*,232.0.0.0/8) Flags: D P
  Up: 17:20:56

(*,239.1.1.1) RPF nbr: 100.64.114.4 Flags: C RPF MD MH CD
  MVPN TID: 0xe0000011
  MVPN Remote TID: 0x0
  MVPN Payload: IPv4
  MDT IFH: 0x880
  Up: 17:10:13
  Incoming Interface List
    GigabitEthernet0/0/0/0.114 Flags: A NS, Up: 17:10:13
  Outgoing Interface List
    Loopback0 Flags: F NS, Up: 17:10:13

(192.0.2.1,239.1.1.1) RPF nbr: 100.64.114.4 Flags: RPF MD MH CD
  MVPN TID: 0xe0000011
  MVPN Remote TID: 0x0
  MVPN Payload: IPv4
  MDT IFH: 0x880
  Up: 17:10:05
  Incoming Interface List
    GigabitEthernet0/0/0/0.114 Flags: A, Up: 17:10:05
  Outgoing Interface List
    Loopback0 Flags: F NS, Up: 17:10:05

(192.0.2.3,239.1.1.1) RPF nbr: 100.64.114.4 Flags: RPF MD MH CD
  MVPN TID: 0xe0000011
  MVPN Remote TID: 0x0
  MVPN Payload: IPv4
  MDT IFH: 0x880
  Up: 17:10:05
  Incoming Interface List
    GigabitEthernet0/0/0/0.114 Flags: A, Up: 17:10:05
  Outgoing Interface List
    Loopback0 Flags: F NS, Up: 17:10:05

(192.0.2.7,239.1.1.1) RPF nbr: 100.64.112.120 Flags: RPF MD MH
  MVPN TID: 0xe0000011
  MVPN Remote TID: 0x0
  MVPN Payload: IPv4
  MDT IFH: 0x880
  Up: 17:20:41
  Incoming Interface List
    GigabitEthernet0/0/0/0.112 Flags: A, Up: 17:20:41
  Outgoing Interface List
    Loopback0 Flags: F NS, Up: 17:10:13
    GigabitEthernet0/0/0/0.114 Flags: F NS, Up: 17:20:41

(192.0.2.21,239.1.1.1) RPF nbr: 192.0.2.21 Flags: RPF ME MH
  MVPN TID: 0xe0000011
  MVPN Remote TID: 0x0
  MVPN Payload: IPv4
  MDT IFH: 0x880
  Up: 17:10:13
  Incoming Interface List
    Loopback0 Flags: F A, Up: 17:10:13
  Outgoing Interface List
    Loopback0 Flags: F A, Up: 17:10:13
    GigabitEthernet0/0/0/0.112 Flags: F NS, Up: 17:10:13
    GigabitEthernet0/0/0/0.114 Flags: F NS, Up: 17:10:05

We verify the mrib route table on XR and see the same full mesh of GRE tunnels between the PE routers.

RP/0/0/CPU0:XR1#sh mrib vrf CORE route
Mon Dec 10 08:38:13.423 UTC

IP Multicast Routing Information Base
Entry flags: L - Domain-Local Source, E - External Source to the Domain,
    C - Directly-Connected Check, S - Signal, IA - Inherit Accept,
    IF - Inherit From, D - Drop, ME - MDT Encap, EID - Encap ID,
    MD - MDT Decap, MT - MDT Threshold Crossed, MH - MDT interface handle
    CD - Conditional Decap, MPLS - MPLS Decap, EX - Extranet
    MoFE - MoFRR Enabled, MoFS - MoFRR State, MoFP - MoFRR Primary
    MoFB - MoFRR Backup, RPFID - RPF ID Set, X - VXLAN
Interface flags: F - Forward, A - Accept, IC - Internal Copy,
    NS - Negate Signal, DP - Don't Preserve, SP - Signal Present,
    II - Internal Interest, ID - Internal Disinterest, LI - Local Interest,
    LD - Local Disinterest, DI - Decapsulation Interface
    EI - Encapsulation Interface, MI - MDT Interface, LVIF - MPLS Encap,
    EX - Extranet, A2 - Secondary Accept, MT - MDT Threshold Crossed,
    MA - Data MDT Assigned, LMI - mLDP MDT Interface, TMI - P2MP-TE MDT Interface
    IRMI - IR MDT Interface

(*,224.0.0.0/4) RPF nbr: 192.0.2.1 Flags: C RPF P
  Up: 17:10:52

(*,224.0.0.0/24) Flags: D P
  Up: 17:22:01

(*,224.0.1.39) Flags: S P
  Up: 17:22:01

(*,224.0.1.40) Flags: S P
  Up: 17:22:01
  Outgoing Interface List
    GigabitEthernet0/0/0/0.204 Flags: II LI, Up: 17:21:51

(*,232.0.0.0/8) Flags: D P
  Up: 17:22:01

Right now, we see the default table entries.

R16# ping 224.1.1.2 repeat 2
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 224.1.1.2, timeout is 2 seconds:
.
Reply to request 1 from 100.64.211.17, 12 ms
Reply to request 1 from 192.0.2.17, 12 ms

R16 sends traffic towards the receiver, R17. We get ping replies back from R17 proving the control plane and data plane are setup correctly.

RP/0/0/CPU0:XR1#sh mrib vrf CORE route
Mon Dec 10 08:38:54.580 UTC

IP Multicast Routing Information Base
Entry flags: L - Domain-Local Source, E - External Source to the Domain,
    C - Directly-Connected Check, S - Signal, IA - Inherit Accept,
    IF - Inherit From, D - Drop, ME - MDT Encap, EID - Encap ID,
    MD - MDT Decap, MT - MDT Threshold Crossed, MH - MDT interface handle
    CD - Conditional Decap, MPLS - MPLS Decap, EX - Extranet
    MoFE - MoFRR Enabled, MoFS - MoFRR State, MoFP - MoFRR Primary
    MoFB - MoFRR Backup, RPFID - RPF ID Set, X - VXLAN
Interface flags: F - Forward, A - Accept, IC - Internal Copy,
    NS - Negate Signal, DP - Don't Preserve, SP - Signal Present,
    II - Internal Interest, ID - Internal Disinterest, LI - Local Interest,
    LD - Local Disinterest, DI - Decapsulation Interface
    EI - Encapsulation Interface, MI - MDT Interface, LVIF - MPLS Encap,
    EX - Extranet, A2 - Secondary Accept, MT - MDT Threshold Crossed,
    MA - Data MDT Assigned, LMI - mLDP MDT Interface, TMI - P2MP-TE MDT Interface
    IRMI - IR MDT Interface

(*,224.0.0.0/4) RPF nbr: 192.0.2.1 Flags: C RPF P
  Up: 17:11:34

(*,224.0.0.0/24) Flags: D P
  Up: 17:22:42

(*,224.0.1.39) Flags: S P
  Up: 17:22:42

(*,224.0.1.40) Flags: S P
  Up: 17:22:42
  Outgoing Interface List
    GigabitEthernet0/0/0/0.204 Flags: II LI, Up: 17:22:32

(100.64.204.16,224.1.1.2) RPF nbr: 100.64.204.16 Flags: RPF
  Up: 00:00:06
  Incoming Interface List
    mdtCORE Flags: A MI, Up: 00:00:06

(192.0.2.16,224.1.1.2) RPF nbr: 100.64.204.16 Flags: RPF
  Up: 00:00:04
  Incoming Interface List
    GigabitEthernet0/0/0/0.204 Flags: A, Up: 00:00:04
  Outgoing Interface List
    mdtCORE Flags: F NS MI, Up: 00:00:04

(*,232.0.0.0/8) Flags: D P
  Up: 17:22:42

We see the VRF MRIB route table has now been populated with the (S, G) entries for the source.

R1#sh ip mroute vrf MVPN
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.1.1.1), 17:11:18/00:03:09, RP 192.0.2.15, flags: S
  Incoming interface: GigabitEthernet1.201, RPF nbr 100.64.201.15
  Outgoing interface list:
    Tunnel0, Forward/Sparse, 17:11:18/00:03:09

(*, 224.1.1.2), 17:04:41/00:03:28, RP 192.0.2.15, flags: S
  Incoming interface: GigabitEthernet1.201, RPF nbr 100.64.201.15
  Outgoing interface list:
    Tunnel0, Forward/Sparse, 16:51:51/00:03:28

(192.0.2.16, 224.1.1.2), 00:00:50/00:02:09, flags: 
  Incoming interface: Tunnel0, RPF nbr 192.0.2.21
  Outgoing interface list:
    GigabitEthernet1.201, Forward/Sparse, 00:00:50/00:02:39

(*, 224.0.1.40), 18:35:16/00:02:45, RP 0.0.0.0, flags: DPL
  Incoming interface: Null, RPF nbr 0.0.0.0
  Outgoing interface list: Null

R1 shows the same thing in the VRF mroute table. We see the (S, G) entry and that the RPF neighbor is via tunnel 0 source by XR1s loopback IP adress.

R15 - RP of the CE network - debug ip pim
PIM(0): Received v2 Register on GigabitEthernet1.201 from 100.64.204.16
     for 100.64.204.16, group 224.1.1.2
PIM(0): Check RP 192.0.2.15 into the (*, 224.1.1.2) entry
PIM(0): Adding register decap tunnel (Tunnel1) as accepting interface of (*, 224.1.1.2).
PIM(0): Adding register decap tunnel (Tunnel1) as accepting interface of (100.64.204.16, 224.1.1.2).
PIM(0): Send v2 Register-Stop to 100.64.204.16 for 100.64.204.16, group 224.1.1.2

We debug R15 to see what it sees. When R16 sent pings to 224.1.1.2, there weren't receivers requesting feeds yet, so R15 simply sees the register message from R16 and the associate register stop sent back to the sender. This builds the (S, G) entry on the RP.

R3 - PE
PIM(1): Received v2 Join/Prune on GigabitEthernet1.211 from 100.64.211.17, to us
PIM(1): Join-list: (*, 224.1.1.2), RPT-bit set, WC-bit set, S-bit set
PIM(1): Check RP 192.0.2.15 into the (*, 224.1.1.2) entry
PIM(1): Building Triggered (*,G) Join / (S,G,RP-bit) Prune message for 224.1.1.2
PIM(1): Add GigabitEthernet1.211/100.64.211.17 to (*, 224.1.1.2), Forward state, by PIM *G Join
PIM(1): Building Triggered (*,G) Join / (S,G,RP-bit) Prune message for 224.1.1.2
PIM(1): Upstream mode for (*, 224.1.1.2) changed from 0 to 1
PIM(1): Insert (*,224.1.1.2) join in nbr 192.0.2.1's queue
PIM(1): Building Join/Prune packet for nbr 192.0.2.1
PIM(1):  Adding v2 (192.0.2.15/32, 224.1.1.2), WC-bit, RPT-bit, S-bit Join
PIM(1): Send v2 join/prune to 192.0.2.1 (Tunnel1)

R17 now joins the 224.1.1.2 group sending a PIM join to R3 who enabled PIM debugs and the PIM join is sent to R15, 192.0.2.15 to add an (*, G) join. NOw R15 has a (S, G) and (*, G) entry and can now join the source based tree, (S, G), to the shared tree, (*, G) and multicast traffic begin flowing. We can tell this is still the shared tree since the (S, G) is (192.0.2.15/32, 224.1.1.2).

PIM(0): Received v2 Register on GigabitEthernet1.201 from 100.64.204.16
     for 100.64.204.16, group 224.1.1.2
PIM(0): Adding register decap tunnel (Tunnel1) as accepting interface of (100.64.204.16, 224.1.1.2).
PIM(0): Received v2 Register on GigabitEthernet1.201 from 100.64.204.16
     for 100.64.204.16, group 224.1.1.2
PIM(0): Received v2 Register on GigabitEthernet1.201 from 100.64.204.16
     for 192.0.2.16, group 224.1.1.2
PIM(0): Adding register decap tunnel (Tunnel1) as accepting interface of (192.0.2.16, 224.1.1.2).
PIM(0): Insert (192.0.2.16,224.1.1.2) join in nbr 100.64.201.1's queue
PIM(0): Building Join/Prune packet for nbr 100.64.201.1
PIM(0):  Adding v2 (192.0.2.16/32, 224.1.1.2), S-bit Join
PIM(0): Send v2 join/prune to 100.64.201.1 (GigabitEthernet1.201)

We see the S-bit set, which is the switchover from the shared tree to the source based tree. This shows us that the traffic from the source will flow directly to the receiver. We can tell the SPT is now built as the entry (192.0.2.15/32, 224.1.1.2) is now (192.0.2.16/32, 224.1.1.2).

Thanks for stopping by!
Rob Riker, CCIE #50693

No comments:

Post a Comment