In previous issues, we got acquainted with the concepts of Default MDT, types of root trees and analyzed two options for implementing mVPN based on mGRE and mLDP:
Today, the BGP MDT address family (which has already been discussed) is obsolete. It was replaced by a new one - SAFI = multicast VPN (mVPN). What's new with this address family? What use cases can there be? Let's try to figure it out.
Interested - welcome under cat.
The authors of the idea proposed to split the BGP update message into two parts:
- Directly mvpn NLRI. The following information is transmitted internally:
- Route type (value from 1 to 7). Each route has its own function.
- PMSI Tunnel Attribute (PTA). Responsible for passing information about the type of the rooted tree.
BGP mVPN route types
Route type | Name | Purpose |
1 | Intra-AS I-PMSI AD | declaring PE as an mVPN member for a specific VPN. This is BGP Auto-Discovery. |
2 | Inter-AS I-PMSI AD | declaring ASBR as a mVPN member for a specific VPN. Used to build Inter-AS mVPN. |
3 | S-PMSI AD | declaring PE as an Ingress router for a specific C- (S, G) group Switching to Data MDT (more on this later) |
4 | Leaf AD | Inter-AS PMSI A-D S-PMSI A-D Leaf Information (LI) |
5 | Source Active A-D | Source Active |
6 | Shared Tree Join | PIM (*, G) Join ( Prune) |
7 | Source Tree Join | PIM (S, G) Join ( Prune) |
PTA
:
0 —
1 — RSVP-TE P2MP LSP
2 — mLDP P2MP LSP
3 — PIM-SSM
4 — PIM-SM
5 — BIDIR-PIM
6 — Ingress Replication
7 — mLDP MP2MP LSP
community
, BGP VRF, .
VRF Route Import ( vpnv4/vpnv6 )
: ( vpnv4 Route-Target)
Route Target Constraint (RTC)
: RTC, Route-Reflector ( ) «» vpnv4/vpnv6 . «» , VRF, .
. RTC RFC4684
Source-AS Extended Community ( vpnv4/vpnv6 )
: AS Inter-AS mVPN
PE Distinguisher Label
: PPMP Partitioned MDT ( ).
SAFI mVPN BGP , SAFI , :
- Auto-Discovery
- PIM BGP
, , -.
PIM, BGP. GRE. «Profile 3».
, :
:
- :
- OSPF
- P-PIM SSM
access-list 99 permit 239.1.1.0 0.0.0.255 ip pim ssm range 99
- VRF:
- C-PIM
- VRF
ip vrf C-ONE rd 1.1.1.1:1 route-target export 65001:1 route-target import 65001:1
, vrf C-ONE C-PIM SSM.
access-list 99 permit 230.1.1.0 0.0.0.255
ip pim ssm range 99 |
access-list 98 permit 230.1.1.0 0.0.0.255
ip pim vrf C-ONE ssm range 98 |
:
ip vrf C-ONE
mdt auto-discovery pim
mdt default 239.1.1.1
PMSTI:
*Nov 24 20:44:40.941: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel2, changed state to up
*Nov 24 20:44:42.872: %PIM-5-DRCHG: VRF C-ONE: DR change from neighbor 0.0.0.0 to 1.1.1.1 on interface Tunnel2
PE1#show int tu2
Tunnel2 is up, line protocol is up
Interface is unnumbered. Using address of Loopback0 (1.1.1.1)
Tunnel source 1.1.1.1 (Loopback0)
Tunnel protocol/transport multi-GRE/IP
PIM (.. ):
*Nov 24 20:44:42.872: %PIM-5-DRCHG: VRF C-ONE: DR change from neighbor 0.0.0.0 to 1.1.1.1 on interface Tunnel2
ipv4 mvpn:
router bgp 65001
!
address-family ipv4 mvpn
neighbor MPLS_PE send-community extended
neighbor MPLS_PE route-reflector-client
neighbor 1.1.1.1 activate
neighbor 2.2.2.2 activate
neighbor 3.3.3.3 activate
neighbor 4.4.4.4 activate
exit-address-family
C-VRF:
PE1#show ip pim vrf C-ONE neighbor
172.1.11.11 GigabitEthernet2.111 2w3d/00:01:19 v2 1 / DR S P G
172.1.15.15 GigabitEthernet2.115 2w3d/00:01:35 v2 1 / DR S P G
4.4.4.4 Tunnel2 00:00:17/00:01:27 v2 1 / DR S P G
3.3.3.3 Tunnel2 00:00:17/00:01:27 v2 1 / S P G
2.2.2.2 Tunnel2 00:00:47/00:01:27 v2 1 / S P G
(S, G) :
PE1#show ip mroute 239.1.1.1
(1.1.1.1, 239.1.1.1), 00:00:45/00:02:44, flags: sT
Incoming interface: Loopback0, RPF nbr 0.0.0.0
Outgoing interface list:
GigabitEthernet2.15, Forward/Sparse, 00:00:45/00:02:44
(4.4.4.4, 239.1.1.1), 00:00:49/00:02:10, flags: sTIZ
Incoming interface: GigabitEthernet2.15, RPF nbr 10.1.5.5
Outgoing interface list:
MVRF C-ONE, Forward/Sparse, 00:00:49/00:02:10
(3.3.3.3, 239.1.1.1), 00:00:53/00:02:06, flags: sTIZ
Incoming interface: GigabitEthernet2.15, RPF nbr 10.1.5.5
Outgoing interface list:
MVRF C-ONE, Forward/Sparse, 00:00:53/00:02:06
(2.2.2.2, 239.1.1.1), 00:01:19/00:01:40, flags: sTIZ
Incoming interface: GigabitEthernet2.15, RPF nbr 10.1.5.5
Outgoing interface list:
MVRF C-ONE, Forward/Sparse, 00:01:19/00:01:40
«» ? BGP :
PE1#show bgp ipv4 mvpn all
BGP table version is 258, local router ID is 1.1.1.1
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,
t secondary path,
Origin codes: i — IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1.1.1.1:1 (default for vrf C-ONE)
*> [1][1.1.1.1:1][1.1.1.1]/12
0.0.0.0 32768 ?
*>i [1][1.1.1.1:1][2.2.2.2]/12
2.2.2.2 0 100 0 ?
*>i [1][1.1.1.1:1][3.3.3.3]/12
3.3.3.3 0 100 0 ?
*>i [1][1.1.1.1:1][4.4.4.4]/12
4.4.4.4 0 100 0 ?
Route Distinguisher: 2.2.2.2:1
*>i [1][2.2.2.2:1][2.2.2.2]/12
2.2.2.2 0 100 0 ?
Route Distinguisher: 3.3.3.3:1
Network Next Hop Metric LocPrf Weight Path
*>i [1][3.3.3.3:1][3.3.3.3]/12
3.3.3.3 0 100 0 ?
Route Distinguisher: 4.4.4.4:1
*>i [1][4.4.4.4:1][4.4.4.4]/12
4.4.4.4 0 100 0 ?
, BGP IPv4 mvpn ,
PE1#show bgp ipv4 mvpn all route-type 1 4.4.4.4
BGP routing table entry for [1][1.1.1.1:1][4.4.4.4]/12, version 262
Paths: (1 available, best #1, table MVPNv4-BGP-Table, not advertised to EBGP peer)
Not advertised to any peer
Refresh Epoch 1
Local, imported path from [1][4.4.4.4:1][4.4.4.4]/12 (global)
4.4.4.4 (metric 3) from 8.8.8.8 (8.8.8.8)
Origin incomplete, metric 0, localpref 100, valid, internal, best
Community: no-export
Extended Community: RT:65001:1
Originator: 4.4.4.4, Cluster list: 8.8.8.8
PMSI Attribute: Flags: 0x0, Tunnel type: 3, length 8, label: exp-null, tunnel parameters: 0404 0404 EF01 0101
rx pathid: 0, tx pathid: 0x0
BGP routing table entry for [1][4.4.4.4:1][4.4.4.4]/12, version 265
Paths: (1 available, best #1, table MVPNv4-BGP-Table, not advertised to EBGP peer)
Not advertised to any peer
Refresh Epoch 1
Local
4.4.4.4 (metric 3) from 8.8.8.8 (8.8.8.8)
Origin incomplete, metric 0, localpref 100, valid, internal, best
Community: no-export
Extended Community: RT:65001:1
Originator: 4.4.4.4, Cluster list: 8.8.8.8
PMSI Attribute: Flags: 0x0, Tunnel type: 3, length 8, label: exp-null, tunnel parameters: 0404 0404 EF01 0101
rx pathid: 0, tx pathid: 0x0
PTA:
- Tunnel type: 3 , vrf SSM PIM
- tunnel parameters (EF01 0101 = 239.1.1.1)
:
CE4(config-if)#ip igmp join-group 230.1.1.1 source 11.11.11.11
:
PE4#show ip mroute vrf C-ONE
(11.11.11.11, 230.1.1.1), 00:00:11/00:03:18, flags: sT
Incoming interface: Tunnel0, RPF nbr 1.1.1.1
Outgoing interface list:
GigabitEthernet2.414, Forward/Sparse, 00:00:11/00:03:18
RPF nbr 1.1.1.1 — PE4 ? . BGP next-hop = 11.11.11.11
PE4#show ip route vrf C-ONE 11.11.11.11
Routing Table: C-ONE
Routing entry for 11.11.11.11/32
Known via "bgp 65001", distance 200, metric 0
Tag 65011, type internal
Last update from 1.1.1.1 01:02:10 ago
Routing Descriptor Blocks:
* 1.1.1.1 (default), from 8.8.8.8, 01:02:10 ago
Route metric is 0, traffic share count is 1
AS Hops 1
Route tag 65011
MPLS label: 10018
MPLS Flags: MPLS Required
, 4 PIM Join Default MDT:
PIM Join , 1 (.. Join RPF )
PE1#show ip mroute vrf C-ONE | b \(
(11.11.11.11, 230.1.1.1), 00:01:16/00:03:11, flags: sT
Incoming interface: GigabitEthernet2.111, RPF nbr 172.1.11.11
Outgoing interface list:
Tunnel2, Forward/Sparse, 00:01:16/00:03:11
PE2#show ip mroute vrf C-ONE | b \(
PE2#
:
CE1#ping
Target IP address: 230.1.1.1
Repeat count [1]: 5
Extended commands [n]: y
Interface [All]: GigabitEthernet2.111
Source address or interface: 11.11.11.11
Sending 5, 100-byte ICMP Echos to 230.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 11.11.11.11
Reply to request 0 from 14.14.14.14, 7 ms
Reply to request 1 from 14.14.14.14, 7 ms
Reply to request 2 from 14.14.14.14, 8 ms
Reply to request 3 from 14.14.14.14, 8 ms
Reply to request 4 from 14.14.14.14, 7 ms
, . , , Profile0. .. Default MDT .
, (vlan id = 37 R3 R7):
PIM SSM C-VRF. -, PIM ASM?
CE4(config-if)#interface Lo0
CE4(config-if)#ip igmp version 2
CE4(config-if)#no ip igmp join-group 230.1.1.1 source 11.11.11.11
CE4(config-if)#ip igmp join-group 231.1.1.1
!
CE15(config)#no ip pim bsr-candidate Loopback0 0
CE15(config)#no ip pim rp-candidate Loopback0
!
CE15(config)#access-list 1 permit 231.1.1.0 0.0.0.255
CE15(config)#ip pim bsr-candidate Lo0
CE15(config)#ip pim rp-candidate Lo0 group-list 1
PIM encap:
PE1#
*Nov 24 21:39:32.938: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel1, changed state to up
C-VRF RP BSR :
CE1#show ip pim bsr-router
PIMv2 Bootstrap information
BSR address: 15.15.15.15 (?)
Uptime: 00:01:54, BSR Priority: 0, Hash mask length: 0
Expires: 00:01:16
As long as there is no active traffic source, only (*, G) routes will be observed inside the C-VRF according to the usual logic of PIM ASM operation:
PE4#show ip mroute vrf C-ONE
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 231.1.1.2), 00:00:46/00:02:43, RP 15.15.15.15, flags: S
Incoming interface: Tunnel0, RPF nbr 1.1.1.1
Outgoing interface list:
GigabitEthernet2.414, Forward/Sparse, 00:00:46/00:02:43
At the same time, no additional mvpn prefixes appear inside the BGP domain:
PE4#show bgp ipv4 mvpn all
Route Distinguisher: 1.1.1.1:1
*>i [1][1.1.1.1:1][1.1.1.1]/12
1.1.1.1 0 100 0 ?
Route Distinguisher: 2.2.2.2:1
*>i [1][2.2.2.2:1][2.2.2.2]/12
2.2.2.2 0 100 0 ?
Route Distinguisher: 3.3.3.3:1
*>i [1][3.3.3.3:1][3.3.3.3]/12
3.3.3.3 0 100 0 ?
Route Distinguisher: 4.4.4.4:1 (default for vrf C-ONE)
*>i [1][4.4.4.4:1][1.1.1.1]/12
1.1.1.1 0 100 0 ?
*>i [1][4.4.4.4:1][2.2.2.2]/12
Network Next Hop Metric LocPrf Weight Path
2.2.2.2 0 100 0 ?
*>i [1][4.4.4.4:1][3.3.3.3]/12
3.3.3.3 0 100 0 ?
*> [1][4.4.4.4:1][4.4.4.4]/12
"Why?" - you ask? Because the PIM protocol is used to signal the C-VRF multicast traffic.
We will talk about the possible replacement of signaling with BGP next time.