Configuring Point to Multipoint Traffic Engineering
To carry multicast traffic in servicer provider networks, a multicast protocol like PIM needs to be deployed to set up forwarding paths in the servicer provider core. However for an MPLS backbone network, service providers can use label encapsulation instead of ip tunneling. This approach helps to reduce the control traffic overhead on the service provider core and also leverages the MPLS traffic engineering and protection features.
The label encapsulation could be either point-to-multipoint (P2MP) label switched paths (LSPs) or multipoint-to-multipoint (MP2MP) LSPs. For creating multicast LSPs, RSVP-TE protocol extensions can be used. The RSVP-TE protocol is extended to signal P2MP LSPs across the MPLS networks. P2MP-TE feature enables transporting multicast traffic through a PIM free service provider core using P2MP-TE tunnels.
In this figure, the following terminologies are used:
-
Head—A router on which a TE tunnel is configured.
-
Tail—The router on which the TE tunnel terminates.
-
Mid—A router through which the TE tunnel passes.
A Multicast VPN (mVPN) profile is configured for the global context or per VRF. Different mVPN profiles can be applied depending on where the multicast streams need to be transported.
The following mVPN profiles are supported for the P2MP-TE feature:
-
mVPN profile 8 for global context
-
mVPN profile 10 for L3VPN context
Restrictions and Usage Guidelines
The following restrictions and guidelines apply for this feature:
-
Only Source-Specific Multicast (SSM) traffic is supported.
-
For profile 8, both IPv4 and IPv6 are supported.
-
For profile 10, only IPv4 is supported.
-
Fast Reroute (FRR) for P2MP-TE tunnel is not supported.
-
BVI interface is not supported.
Configuration Example: P2MP-TE Profile 8
This example shows the P2MP-TE configuration for profile 8. You need to configure the head, mid, and tail routers in the P2MP tunnel.
The head router configuration is given as follows. This configuration includes IGP, MPLS-TE tunnel, and multicast configurations. You should also configure LDP and RSVP while configuring this feature.
RP/0/RP0/CPU0:router(config)# router ospf 1
RP/0/RP0/CPU0:router(config-router)# area 0
RP/0/RP0/CPU0:router(config-ospf-ar)# mpls traffic-eng
RP/0/RP0/CPU0:router(config-ospf-ar-mpls-te)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# interface Loopback0
RP/0/RP0/CPU0:router(config-ospf-ar-if)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# interface TenGigE0/0/0/0
RP/0/RP0/CPU0:router(config-ospf-ar-if)# cost 1
RP/0/RP0/CPU0:router(config-ospf-ar-if)# network point-to-point
RP/0/RP0/CPU0:router(config-ospf-ar-if)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# interface TenGigE0/0/0/2
RP/0/RP0/CPU0:router(config-ospf-ar-if)# cost 1
RP/0/RP0/CPU0:router(config-ospf-ar-if)# network point-to-point
RP/0/RP0/CPU0:router(config-ospf-ar-if)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# exit
RP/0/RP0/CPU0:router(config-ospf)# mpls traffic-eng router-id loopback 0
RP/0/RP0/CPU0:router(config)# interface tunnel-mte 2
RP/0/RP0/CPU0:router(config-if)# ipv4 unnumbered Loopback0
RP/0/RP0/CPU0:router(config-if)# destination 10.2.2.2
RP/0/RP0/CPU0:router(config-if-p2mp-dest)# path-option 1 dynamic
RP/0/RP0/CPU0:router(config-if-p2mp-dest)# exit
RP/0/RP0/CPU0:router(config)# multicast-routing
RP/0/RP0/CPU0:router(config-mcast)# address-family ipv4
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# interface Loopback0
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# enable
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# exit
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# interface tunnel-mte 2
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# enable
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# exit
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# mdt source Loopback0
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# interface all enable
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# accounting per-prefix
RP/0/RP0/CPU0:router(config)# router igmp
RP/0/RP0/CPU0:router(config-igmp)# interface tunnel-mte 2
RP/0/RP0/CPU0:router(config-igmp-if)# static-group 232.0.0.2 10.0.0.100
RP/0/RP0/CPU0:router(config-igmp)# interface TenGigE0/0/0/0
RP/0/RP0/CPU0:router(config-igmp-if)# version 3
RP/0/RP0/CPU0:router(config)# router pim
RP/0/RP0/CPU0:router(config-pim)# address-family ipv4
RP/0/RP0/CPU0:router(config-pim-default-ipv4)# interface tunnel-mte 2
RP/0/RP0/CPU0:router(config-pim-default-ipv4-if)# enable
RP/0/RP0/CPU0:router(config-pim-default-ipv4-if)# exit
The running configuration for the head router is given as follows.
interface Loopback0
ipv4 address 10.1.1.1 255.255.255.255
!
interface TenGigE0/0/0/0
ipv4 address 10.0.0.1 255.255.255.0
!
interface TenGigE0/0/0/2
ipv4 address 10.2.0.1 255.255.255.0
!
router ospf 1
area 0
mpls traffic-eng
!
interface Loopback0
interface TenGigE0/0/0/0
cost 1
network point-to-point
interface TenGigE0/0/0/2
cost 1
network point-to-point
!
mpls traffic-eng router-id Loopback0
!
rsvp
interface TenGigE0/0/0/2
bandwidth percentage 100
!
!
mpls traffic-eng
interface TenGigE0/0/0/2
!
mpls ldp
discovery
targeted-hello interval 10
!
router-id 10.1.1.1
address-family ipv4
discovery targeted-hello accept
!
interface TenGigE0/0/0/2
!
!
!
interface tunnel-mte2
ipv4 unnumbered Loopback0
destination 10.2.2.2
path-option 1 dynamic
!
!
!
multicast-routing
address-family ipv4
interface Loopback0
enable
!
interface tunnel-mte2
enable
!
mdt source Loopback0
interface all enable
accounting per-prefix
!
!
!
router igmp
interface tunnel-mte2
static-group 232.0.0.2 10.0.0.100
!
interface TenGigE0/0/0/0
version 3
!
!
router pim
address-family ipv4
interface tunnel-mte2
enable
!
!
!
interface Loopback0
ipv4 address 10.5.5.5 255.255.255.255
interface TenGigE0/0/0/2
ipv4 address 10.10.0.5 255.255.255.0
interface TenGigE0/0/0/3
ipv4 address 10.13.0.5 255.255.255.0
router ospf 1
area 0
mpls traffic-eng
interface Loopback0
interface TenGigE0/0/0/2
cost 1
network point-to-point
interface TenGigE0/0/0/3
cost 1
network point-to-point
mpls traffic-eng router-id Loopback0
rsvp
interface TenGigE0/0/0/2
bandwidth percentage 100
interface TenGigE0/0/0/3
bandwidth percentage 100
mpls traffic-eng
interface TenGigE0/0/0/2
interface TenGigE0/0/0/3
mpls ldp
discovery
targeted-hello interval 10
router-id 10.5.5.5
address-family ipv4
discovery targeted-hello accept
interface TenGigE0/0/0/2
interface TenGigE0/0/0/3
!
!
The tail router configuration is given as follows. This configuration includes IGP, MPLS-TE tunnel and multicast configurations. Similar to head router, you should also configure RSVP and LDP while configuring this feature.
RP/0/RP0/CPU0:router(config)# router ospf 1
RP/0/RP0/CPU0:router(config-router)# area 0
RP/0/RP0/CPU0:router(config-ospf-ar)# mpls traffic-eng
RP/0/RP0/CPU0:router(config-ospf-ar-mpls-te)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# interface Loopback0
RP/0/RP0/CPU0:router(config-ospf-ar-if)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# interface TenGigE0/0/0/3
RP/0/RP0/CPU0:router(config-ospf-ar-if)# cost 1
RP/0/RP0/CPU0:router(config-ospf-ar-if)# network point-to-point
RP/0/RP0/CPU0:router(config-ospf-ar-if)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# exit
RP/0/RP0/CPU0:router(config-ospf)# mpls traffic-eng router-id loopback 0
RP/0/RP0/CPU0:router(config)# interface tunnel-mte 2
RP/0/RP0/CPU0:router(config-if)# ipv4 unnumbered Loopback0
RP/0/RP0/CPU0:router(config-if)# destination 10.2.2.2
RP/0/RP0/CPU0:router(config-if-p2mp-dest)# path-option 1 dynamic
RP/0/RP0/CPU0:router(config-if-p2mp-dest)# exit
RP/0/RP0/CPU0:router(config)# multicast-routing
RP/0/RP0/CPU0:router(config-mcast)# address-family ipv4
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# interface Loopback0
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# enable
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# exit
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# mdt source Loopback0
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# core-tree-protocol rsvp-te
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# static-rpf 10.0.0.100 32 mpls 1.1.1.1
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# rate-per-route
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# interface all enable
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# accounting per-prefix
RP/0/RP0/CPU0:router(config)# router igmp
RP/0/RP0/CPU0:router(config-igmp# interface TenGigE0/0/0/3
RP/0/RP0/CPU0:router(config-igmp-if)# version 3
RP/0/RP0/CPU0:router(config)# router pim
RP/0/RP0/CPU0:router(config-pim)# address-family ipv4
RP/0/RP0/CPU0:router(config-pim-default-ipv4)# interface TenGigE0/0/0/3
RP/0/RP0/CPU0:router(config-pim-default-ipv4-if)# enable
RP/0/RP0/CPU0:router(config-pim-default-ipv4-if)# exit
The running configuration for the tail router is given as follows:
!
interface Loopback0
ipv4 address 10.2.2.2 255.255.255.255
!
interface TenGigE0/0/0/3
ipv4 address 10.3.0.2 255.255.255.0
!
interface TenGigE0/0/0/6
ipv4 address 10.6.0.2 255.255.255.0
!
router ospf 1
area 0
mpls traffic-eng
interface Loopback0
!
interface TenGigE0/0/0/3
cost 1
network point-to-point
!
!
mpls traffic-eng router-id Loopback0
!
rsvp
interface TenGigE0/0/0/3
bandwidth percentage 100
!
!
mpls traffic-eng
interface TenGigE0/0/0/3
!
mpls ldp
discovery
targeted-hello interval 10
!
router-id 10.2.2.2
address-family ipv4
discovery targeted-hello accept
!
interface TenGigE0/0/0/3
!
!
multicast-routing
address-family ipv4
interface Loopback0
enable
!
mdt source Loopback0
core-tree-protocol rsvp-te
static-rpf 10.0.0.100 32 mpls 10.1.1.1
rate-per-route
interface all enable
accounting per-prefix
!
!
!
router igmp
!
interface TenGigE0/0/0/6
version 3
!
!
router pim
!
address-family ipv4
interface TenGigE0/0/0/6
enable
!
!
!
Configuration Example: P2MP-TE Profile 10
This example shows the P2MP-TE configuration for profile 10. You need to configure the head, mid, and tail routers.
The head router configuration is given as follows. This configuration includes IGP, L3VPN, and multicast configurations. You should also configure MPLS-TE, LDP, and RSVP while configuring this feature.
RP/0/RP0/CPU0:router(config)# router ospf 1
RP/0/RP0/CPU0:router(config-router)# area 0
RP/0/RP0/CPU0:router(config-ospf-ar)# mpls traffic-eng
RP/0/RP0/CPU0:router(config-ospf-ar-mpls-te)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# interface Loopback0
RP/0/RP0/CPU0:router(config-ospf-ar-if)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# interface TenGigE0/0/0/2
RP/0/RP0/CPU0:router(config-ospf-ar-if)# cost 1
RP/0/RP0/CPU0:router(config-ospf-ar-if)# network point-to-point
RP/0/RP0/CPU0:router(config-ospf-ar-if)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# exit
RP/0/RP0/CPU0:router(config-ospf)# mpls traffic-eng router-id loopback 0
RP/0/RP0/CPU0:router(config-ospf)# exit
RP/0/RP0/CPU0:router(config)# vrf vpn_2
RP/0/RP0/CPU0:router(config-vrf)# address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-vrf-af)# import route-target 100:2
RP/0/RP0/CPU0:router(config-vrf-af)# export route-target 120:2
RP/0/RP0/CPU0:router(config)# interface TengigE0/0/0/0
RP/0/RP0/CPU0:router(config-if)# vrf vpn_2
RP/0/RP0/CPU0:router(config-if-vrf)# ipv4 address 10.0.0.1 255.255.255.0
RP/0/RP0/CPU0:router(config)# route-policy pass-all
RP/0/RP0/CPU0:router(config)# pass
RP/0/RP0/CPU0:router(config)#router bgp 1
RP/0/RP0/CPU0:router(config-bgp)# bgp router-id 10.1.1.1
RP/0/RP0/CPU0:router(config-bgp)# address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-bgp-af)# address-family vpnv4 unicast
RP/0/RP0/CPU0:router(config-bgp-af)# address-family ipv4 mvpn
RP/0/RP0/CPU0:router(config-bgp)# neighbor 10.2.2.2
RP/0/RP0/CPU0:router(config-bgp-nbr)# remote-as 1
RP/0/RP0/CPU0:router(config-bgp-nbr)# update-source Loopback0
RP/0/RP0/CPU0:router(config-bgp-nbr)# address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all in
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all out
RP/0/RP0/CPU0:router(config-bgp-nbr)# address-family vpnv4 unicast
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all in
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all out
RP/0/RP0/CPU0:router(config-bgp-nbr)# address-family ipv4 mvpn
RP/0/RP0/CPU0:router(config-bgp)# vrf vpn_2
RP/0/RP0/CPU0:router(config-bgp-vrf)#rd 100:2
RP/0/RP0/CPU0:router(config-bgp-vrf)#address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-bgp-vrf-af)#label mode per-prefix
RP/0/RP0/CPU0:router(config-bgp-vrf-af)#redistribute connected
RP/0/RP0/CPU0:router(config-bgp-vrf-af)#exit
RP/0/RP0/CPU0:router(config-bgp-vrf)# address-family ipv4 mvpn
RP/0/RP0/CPU0:router(config)# multicast-routing
RP/0/RP0/CPU0:router(config-mcast)# address-family ipv4
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# interface Loopback0
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# enable
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# exit
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# mdt source Loopback0
RP/0/RP0/CPU0:router(config-mcast)# vrf vpn_2
RP/0/RP0/CPU0:router(config-mcast-vpn_2)# address-family ipv4
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4)# mdt source loopback0
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4)# rate-per-route
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4)# interface all enable
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4)# bgp auto-discovery p2mp-te
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4-bgp-ad)# mdt static p2mp-te tunnel-mte2
RP/0/RP0/CPU0:router(config)# router igmp
RP/0/RP0/CPU0:router(config-igmp)# vrf vpn_2
RP/0/RP0/CPU0:router(config-igmp-vpn_2)# interface tunnel-mte2
RP/0/RP0/CPU0:router(config-igmp-vpn_2-if)# static-group 239.0.0.1 100.0.0.100
RP/0/RP0/CPU0:router(config-igmp-vpn_2-if)# exit
RP/0/RP0/CPU0:router(config-igmp-vpn_2)# interface TenGigE0/0/0/0
RP/0/RP0/CPU0:router(config-igmp-vpn_2-if)# version 3
RP/0/RP0/CPU0:router(config-igmp-vpn_2-if)# exit
RP/0/RP0/CPU0:router(config-igmp-vpn_2)#
RP/0/RP0/CPU0:router(config)# router pim
RP/0/RP0/CPU0:router(config-pim)# vrf vpn_2
RP/0/RP0/CPU0:router(config-pim-vpn_2)# address-family ipv4
RP/0/RP0/CPU0:router(config-pim-vpn_2-ipv4)# interface tunnel-mte2
RP/0/RP0/CPU0:router(config-pim-vpn_2-ipv4-if)# enable
RP/0/RP0/CPU0:router(config-pim-vpn_2-ipv4-if)# exit
RP/0/RP0/CPU0:router(config-pim-vpn_2-ipv4)# interface TenGigE0/0/0/0
RP/0/RP0/CPU0:router(config-pim-vpn_2-ipv4-if)# enable
The running configuration for the head router is given as follows.
!
interface Loopback0
ipv4 address 10.1.1.1 255.255.255.255
!
interface TenGigE0/0/0/2
ipv4 address 10.2.0.1 255.255.255.0
!
router ospf 1
area 0
mpls traffic-eng
!
interface Loopback0
!
interface TenGigE0/0/0/2
cost 1
network point-to-point
!
mpls traffic-eng router-id Loopback0
!
rsvp
interface TenGigE0/0/0/2
bandwidth percentage 100
!
!
mpls traffic-eng
interface TenGigE0/0/0/2
!
mpls ldp
discovery
targeted-hello interval 10
!
router-id 10.1.1.1
address-family ipv4
discovery targeted-hello accept
!
interface TenGigE0/0/0/2
!
!
vrf vpn_2
address-family ipv4 unicast
import route-target
100:2
export route-target
100:2
interface TenGigE0/0/0/0
vrf vpn_2
ipv4 address 10.0.0.1 255.255.255.0
route-policy pass-all
pass
end-policy
router bgp 1
bgp router-id 10.1.1.1
address-family ipv4 unicast
address-family vpnv4 unicast
address-family ipv4 mvpn
neighbor 10.2.2.2
remote-as 1
update-source Loopback0
address-family ipv4 unicast
route-policy pass-all in
route-policy pass-all out
address-family vpnv4 unicast
route-policy pass-all in
route-policy pass-all out
address-family ipv4 mvpn
vrf vpn_2
rd 100:2
address-family ipv4 unicast
label mode per-prefix
redistribute connected
address-family ipv4 mvpn
hostname head
!
multicast-routing
address-family ipv4
interface Loopback0
enable
!
mdt source Loopback0
!
vrf vpn_2
address-family ipv4
mdt source Loopback0
rate-per-route
interface all enable
bgp auto-discovery p2mp-te
!
mdt static p2mp-te tunnel-mte2
!
!
!
router igmp
vrf vpn_2
interface tunnel-mte2
static-group 239.0.0.1 100.0.0.100
!
interface TenGigE0/0/0/0
version 3
!
!
router pim
vrf vpn_2
address-family ipv4
interface tunnel-mte2
enable
!
interface TenGigE0/0/0/0
enable
!
!
!
The mid router only requires MPLS-TE, RSVP, and IGP configuration. The running configuration for the mid router is given as follows:
interface Loopback0
ipv4 address 10.5.5.5 255.255.255.255
interface TenGigE0/0/0/2
ipv4 address 10.0.0.5 255.255.255.0
interface TenGigE0/0/0/3
ipv4 address 10.3.0.5 255.255.255.0
router ospf 1
area 0
mpls traffic-eng
interface Loopback0
interface TenGigE0/0/0/2
cost 1
network point-to-point
interface TenGigE0/0/0/3
cost 1
network point-to-point
mpls traffic-eng router-id Loopback0
rsvp
interface TenGigE0/0/0/2
bandwidth percentage 100
interface TenGigE0/0/0/3
bandwidth percentage 100
mpls traffic-eng
interface TenGigE0/0/0/2
interface TenGigE0/0/0/3
mpls ldp
discovery
targeted-hello interval 10
router-id 10.5.5.5
address-family ipv4
discovery targeted-hello accept
interface TenGigE0/0/0/2
interface TenGigE0/0/0/3
!
!
The tail router configuration is given as follows. This configuration includes L3VPN, multicast, and IGP configurations. Similar to the head router, you should also configure MPLS-TE and RSVP before configuring this feature.
RP/0/RP0/CPU0:router# configure
RP/0/RP0/CPU0:router(config)# router ospf 1
RP/0/RP0/CPU0:router(config-router)# area 0
RP/0/RP0/CPU0:router(config-ospf-ar)# mpls traffic-eng
RP/0/RP0/CPU0:router(config-ospf-ar-mpls-te)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# interface Loopback0
RP/0/RP0/CPU0:router(config-ospf-ar-if)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# interface TenGigE0/0/0/3
RP/0/RP0/CPU0:router(config-ospf-ar-if)# cost 1
RP/0/RP0/CPU0:router(config-ospf-ar-if)# network point-to-point
RP/0/RP0/CPU0:router(config-ospf-ar-if)# exit
RP/0/RP0/CPU0:router(config-ospf-ar)# exit
RP/0/RP0/CPU0:router(config-ospf)# mpls traffic-eng router-id loopback 0
RP/0/RP0/CPU0:router(config-ospf)# exit
RP/0/RP0/CPU0:router(config)# vrf vpn_2
RP/0/RP0/CPU0:router(config-vrf)# address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-vrf-af)# import route-target 100:2
RP/0/RP0/CPU0:router(config-vrf-af)# export route-target 120:2
RP/0/RP0/CPU0:router(config)# interface TengigE0/0/0/6
RP/0/RP0/CPU0:router(config-if)# vrf vpn_2
RP/0/RP0/CPU0:router(config-if-vrf)# ipv4 address 10.0.0.1 255.255.255.0
RP/0/RP0/CPU0:router(config)# route-policy pass-all
RP/0/RP0/CPU0:router(config)# pass
RP/0/RP0/CPU0:router(config)# end-policy
RP/0/RP0/CPU0:router(config)# router bgp 1
RP/0/RP0/CPU0:router(config-bgp)# bgp router-id 10.2.2.2
RP/0/RP0/CPU0:router(config-bgp)# address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-bgp-af)# address-family vpnv4 unicast
RP/0/RP0/CPU0:router(config-bgp-af)# address-family ipv4 mvpn
RP/0/RP0/CPU0:router(config-bgp)# neighbor 10.1.1.1
RP/0/RP0/CPU0:router(config-bgp-nbr)# remote-as 1
RP/0/RP0/CPU0:router(config-bgp-nbr)# address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all in
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all out
RP/0/RP0/CPU0:router(config-bgp-nbr)# address-family vpnv4 unicast
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all in
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all out
RP/0/RP0/CPU0:router(config-bgp-nbr)# address-family ipv4 mvpn
RP/0/RP0/CPU0:router(config)# multicast-routing
RP/0/RP0/CPU0:router(config-mcast)# address-family ipv4
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# interface Loopback0
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# enable
RP/0/RP0/CPU0:router(config-mcast-default-ipv4-if)# exit
RP/0/RP0/CPU0:router(config-mcast-default-ipv4)# mdt source Loopback0
RP/0/RP0/CPU0:router(config-mcast)# vrf vpn_2
RP/0/RP0/CPU0:router(config-mcast-vpn_2)# address-family ipv4
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4)# mdt source loopback0
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4)# core-tree-protocol rsvp-te
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4)# rate-per-route
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4)# interface all enable
RP/0/RP0/CPU0:router(config-mcast-vpn_2-ipv4)# bgp auto-discovery p2mp-te
RP/0/RP0/CPU0:router(config)# router igmp
RP/0/RP0/CPU0:router(config-igmp)# vrf vpn_2
RP/0/RP0/CPU0:router(config-igmp-vpn_2)# interface TenGigE0/0/0/6
RP/0/RP0/CPU0:router(config-igmp-vpn_2-if)# version 3
RP/0/RP0/CPU0:router(config-igmp-vpn_2-if)# exit
RP/0/RP0/CPU0:router(config)# router pim
RP/0/RP0/CPU0:router(config-pim)# vrf vpn_2
RP/0/RP0/CPU0:router(config-pim-vpn_2)# address-family ipv4
RP/0/RP0/CPU0:router(config-pim-vpn_2-ipv4)# interface TenGigE0/0/0/6
RP/0/RP0/CPU0:router(config-pim-vpn_2-ipv4-if)# enable
RP/0/RP0/CPU0:router(config)#router bgp 1
RP/0/RP0/CPU0:router(config-bgp)# bgp router-id 192.168.1.2
RP/0/RP0/CPU0:router(config-bgp)# address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-bgp-af)# address-family vpnv4 unicast
RP/0/RP0/CPU0:router(config-bgp-af)# address-family ipv4 mvpn
RP/0/RP0/CPU0:router(config-bgp)# neighbor 192.168.1.1
RP/0/RP0/CPU0:router(config-bgp-nbr)# remote-as 2002
RP/0/RP0/CPU0:router(config-bgp-nbr)# address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all in
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all out
RP/0/RP0/CPU0:router(config-bgp-nbr)# address-family vpnv4 unicast
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all in
RP/0/RP0/CPU0:router(config-bgp-nbr-af)# route-policy pass-all out
RP/0/RP0/CPU0:router(config-bgp-nbr)# address-family ipv4 mvpn
RP/0/RP0/CPU0:router(config-bgp)# vrf vpn_2
RP/0/RP0/CPU0:router(config-bgp-vrf)#rd 100:2
RP/0/RP0/CPU0:router(config-bgp-vrf)#address-family ipv4 unicast
RP/0/RP0/CPU0:router(config-bgp-vrf-af)#label mode per-prefix
RP/0/RP0/CPU0:router(config-bgp-vrf-af)#redistribute connected
RP/0/RP0/CPU0:router(config-bgp-vrf-af)#exit
RP/0/RP0/CPU0:router(config-bgp-vrf)# address-family ipv4 mvpn
Running configuration for the tail router is given as follows:
interface Loopback0
ipv4 address 10.2.2.2 255.255.255.255
!
interface TenGigE0/0/0/3
ipv4 address 10.3.0.2 255.255.255.0
!
router ospf 1
area 0
mpls traffic-eng
interface Loopback0
!
interface TenGigE0/0/0/3
cost 1
network point-to-point
!
!
mpls traffic-eng router-id Loopback0
!
rsvp
interface TenGigE0/0/0/3
bandwidth percentage 100
!
!
mpls traffic-eng
interface TenGigE0/0/0/3
!
mpls ldp
discovery
targeted-hello interval 10
!
router-id 10.2.2.2
address-family ipv4
discovery targeted-hello accept
!
interface TenGigE0/0/0/3
!
! vrf vpn_2
address-family ipv4 unicast
import route-target
100:2
export route-target
100:2
interface TenGigE0/0/0/6
vrf vpn_2
ipv4 address 10.6.0.2 255.255.255.0
route-policy pass-all
pass
end-policy
router bgp 1
bgp router-id 10.2.2.2
address-family ipv4 unicast
address-family vpnv4 unicast
address-family ipv4 mvpn
neighbor 10.1.1.1
remote-as 1
update-source Loopback0
address-family ipv4 unicast
route-policy pass-all in
route-policy pass-all out
address-family vpnv4 unicast
route-policy pass-all in
route-policy pass-all out
address-family ipv4 mvpn
vrf vpn_2
rd 100:2
address-family ipv4 unicast
label mode per-prefix
redistribute connected
address-family ipv4 mvpn
!
multicast-routing
address-family ipv4
interface Loopback0
enable
!
mdt source Loopback0
!
vrf vpn_2
address-family ipv4
mdt source Loopback0
core-tree-protocol rsvp-te
rate-per-route
interface all enable
bgp auto-discovery p2mp-te
!
!
router igmp
vrf vpn_2
interface TenGigE0/0/0/6
version 3
!
!
router pim
vrf vpn_2
address-family ipv4
interface TenGigE0/0/0/6
enable
!
!
!
Verification: P2MP-TE
This example shows how to verify if the multicast control state is correct on the head router using the show mrib vrf vpn_2 route
command.
RP/0/RP0/CPU0:router# show mrib vrf vpn_2 route
(10.0.0.100,232.0.0.1) RPF nbr: 10.0.0.100 Flags: RPF
Up: 00:00:38
Incoming Interface List
TenGigE0/0/0/0 Flags: A, Up: 00:00:38
Outgoing Interface List
Tunnel-mte2 Flags: F NS LI LVIF, Up: 00:00:38
You can also verify the multicast control state on the tail router.
RP/0/RP0/CPU0:router# show mrib vrf vpn_2 route
(10.0.0.100,232.0.0.1) RPF nbr: 10.1.1.1 Flags: RPF
Up: 00:03:55
Outgoing Interface List
TenGigE0/0/0/6 Flags: F NS LI, Up: 00:03:55
This example shows how to check if the TE tunnel is established on the head router by using the show mpls traffic-eng tunnels p2mp command.
RP/0/RP0/CPU0:router# show mpls traffic-eng tunnels p2mp 2
Name: tunnel-mte2
Signalled-Name: head_mt2
Status:
Admin: up Oper: up (Up for 00:09:37)
Config Parameters:
Bandwidth: 0 kbps (CT0) Priority: 7 7 Affinity: 0x0/0xffff
Interface Bandwidth: 0 kbps
Metric Type: TE (global)
Fast Reroute: Not Enabled, Protection Desired: None
Record Route: Not Enabled
Reoptimization after affinity failure: Enabled
Destination summary: (1 up, 0 down, 0 disabled) Affinity: 0x0/0xffff
Auto-bw: disabled
Destination: 10.2.2.2
State: Up for 00:09:37
Path options:
path-option 1 dynamic [active]
Current LSP:
lsp-id: 10002 p2mp-id: 2 tun-id: 2 src: 10.1.1.1 extid: 10.1.1.1
LSP up for: 00:09:37 (since Fri May 25 22:32:03 UTC 2018)
Reroute Pending: No
Inuse Bandwidth: 0 kbps (CT0)
Number of S2Ls: 1 connected, 0 signaling proceeding, 0 down S2L Sub LSP: Destination 2.2.2.2 Signaling Status: connected
S2L up for: 00:09:37 (since Fri May 25 22:32:03 UTC 2018)
Sub Group ID: 1 Sub Group Originator ID: 10.1.1.1
Path option path-option 1 dynamic (path weight 2)
Path info (OSPF 1 area 0)
10.0.0.5
10.0.0.2
10.2.2.2
Reoptimized LSP (Install Timer Remaining 0 Seconds):
None
Cleaned LSP (Cleanup Timer Remaining 0 Seconds):
None
Displayed 1 (of 101) heads, 0 (of 0) midpoints, 0 (of 0) tails
Displayed 1 up, 0 down, 0 recovering, 0 recovered heads
This example shows how to verify the label assignment on the head router using the show mpls forwarding p2mp command.
RP/0/RP0/CPU0:router# show mpls forwarding p2mp
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ------------
64106 64008 P2MP TE: 2 TenGigE0/0/0/2 10.0.0.5 0