mVPN Profile 0

mVPN profile 0 is called “Draft Rosen,” in reference to the author of the RFC draft located here: https://datatracker.ietf.org/doc/html/draft-rosen-vpn-mcast-15

In Draft Rosen, PEs peer with CEs in the C-PIM, and the provider core runs P-PIM. The following is a diagram of the PIM adjacencies:

In Draft Rosen, GRE is used to tunnel traffic between PEs over the P-PIM network. Each PE specifies the group address for the default MDT (multicast distribution tree) under the customer VRF. This group address must be the same for each VRF on all PEs. Every customer VRF has a single group address for the associated default MDT. This is a PIM-SSM group, in which each PE is a source. In the above diagram, there will be three PIM-SSM entries in the P-PIM network, one for each PE. (PE1, 232.1.1.1), (PE2, 232.1.1.1), and (PE3, 232.1.1.1). Each PE joins the trees of all other PEs.

The PEs need a way to discover which remote PEs are participating in this MDT. The routers run bgp address-family ipv4 mdt for auto-discovery. Each PE advertises a route in this AFI that includes its loopback and the MDT group. This allows the PEs to learn about each other. If a PE has a VRF with a matching default MDT group, it sends a PIM Join for the PIM-SSM (S, G) pair of every other remote PE within the P-PIM.

Once the default MDT is formed in the P-PIM, each PE router uses a multicast GRE tunnel to establish PIM adjacencies with all other PE in the C-PIM. The GRE tunnel has a destination of the MDT group address (232.1.1.1). This means that a packet forwarded out the GRE tunnel is received by every other remote PE participating in the C-PIM.

You can think of the P-PIM as being the underlay, and the C-PIM as an overlay. The PEs achieve a full mesh of C-PIM adjacencies between each other using the GRE tunnels.

The tunneling technology here is GRE, not MPLS. So there are no MPLS labels on these packets. GRE is used to tunnel C-PIM traffic from one PE to another. The P routers forward based on the P-PIM multicast routing table (the underlay).

This will make more sense once you see it in the lab.

Lab

We will use the following topology. The provider core runs ISIS and LDP.

Startup Configs:

Ensure you have a fully functional L3VPN. C1 should be able to ping C3.

Enable PIM in the customer network.

Each customer site is currently an isolated PIM network. CE2 and CE3 have not learned the RP yet.

Enable C-PIM on PE1, PE2, and PE3. This allows the PE to form a PIM neighborship with the CE. Notice that you must enable multicast routing for the VRF.

All PEs have a PIM neighborship with their local CE:

So far which routers are aware of the RP in the C-PIM?

The answer is only CE1 (which is itself the RP) and PE1. We still have three separate C-PIM islands.

Enable P-PIM (PIM inside the provider core). We will use PIM-SSM, so no RP is needed. P-PIM will be used as our underlay.

  • IOS-XE requires you to specify the default pim ssm range in order for PIM-SSM to function. IOS-XR uses the default range by default.

Configure the bgp ipv4 mdt address family on all PEs and P1 (RR). This allows PEs that run the same VRF and default MDT group to discover each other.

Configure the default MDT group as 232.1.1.1 on all PE routers under the VRF.

  • On IOS-XE the BGP peering address is used as the mdt source by default. On IOS-XR you must specify the source interface.

Each PE now advertises an ipv4 mdt route which includes its loopback address, RD for the VRF, and MDT group address:

The PEs automatically bring up a GRE tunnel interface. The PEs also source a PIM Join for every SSM (PE, MDT-group) pair learned via MP-BGP. On P1, examine the PIM topology. (In IOS-XR the pim topology is roughly similar to examining the ip mroute table on IOS-XE).

Even though IGMPv2 is being used by default, the PEs send (S, G) SSM Joins. IGMPv3 is not necessary since we technically have no hosts in the P-PIM. The IGMP SSM Report is generated via the loopback on the PEs. Each PE will then generate the PIM Joins for each (S, G) pair. The P routers never see an IGMP report.

The PEs now have a full mesh of adjacencies in the C-PIM:

Examine the tun1 interface. This interface was automatically created when specifying the default MDT group under the VRF.

In this pcap you can see that C-PIM Hellos sourced from each PE are received by all other PEs.

  • The outer header has a source of PE2 and destination of the default MDT group, 232.1.1.1

  • The inner header is a normal PIM Hello, destined for all PIM routers (224.0.0.13)

  • Notice the PIM Bootstrap messages are now being tunneled as well

CE2 and CE3 should now learn the RP via BSR. PE2 and PE3 flood this via their C-PIM adjacencies with the CE routers.

Multicast traffic should now be working. On C1 join a group, and ping that group from C2.

Traffic is now working! Do you notice any problems with this setup?

Take a pcap at the P2-PE3 link. What do you think we’ll see? C3 is neither a receiver nor a source for this multicast tree right now. Will PE3 receive traffic?

PE3 sees this traffic. Why is that?

It’s because PE2 tunnels this traffic using the default MDT group, which PE3 is a receiver for. Therefore PE3 must receive this traffic. When using the default MDT group, traffic is flooded to all PEs in that VRF.

There is an optimization for mVPN profile 0 to prevent this unnecessary flooding, which is to use a data MDT group. If traffic passes a certain bandwidth threshold, it can switchover to a different multicast group, and PE3 can choose not to join it as a result of having no (S, G) state for the customer traffic in the C-PIM table.

Data MDTs

Data MDTs allow PEs to switchover to a group other than the default MDT in the P-PIM underlay. A PE advertises the C-PIM (S, G) and the new P-PIM group that traffic will switchover to. If another PE has listeners for this C-PIM (S, G), the PE will send a (S, G) P-PIM Join for the new SSM group in the underlay. If not, the PE does not join the SSM group. This prevents the unneccessary flooding of the customer traffic that we saw above.

Configure a range of data MDT groups each router will use under the VRF. Since this is PIM-SSM, we can reuse a range of groups on every PE. We’ll use 232.100.100.0/24. This allows for 256 unique groups. We also need to specify the bandwidth threshold, which defines when the PE will switch from the default MDT to a data MDT.

We’ll start a stream of traffic again on C2 and take pcaps in two places: at PE1 and at PE3.

Once traffic exceeds 1kbps, CE2 sends a Data-MDT Join, which is basically an advertisement that says “If you want traffic for (10.1.2.10, 239.1.2.3), then I’m moving to (2.2.2.2, 232.100.100.0).”

  • The data contains the C-PIM (S, G) and the new P-PIM Data MDT group (232.100.100.0). Wireshark doesn’t automatically decode it.

PE1 then sends a P-PIM Join for (2.2.2.2, 232.100.100.0) because PE1 has state for (10.1.2.10, 239.1.2.3) with an outgoing interface towards CE1.

CE2 waits a few seconds and then switches over to 232.100.100.0

  • The traffic is encapsulated in GRE just as before. The difference is that it is now using the data MDT group instead of the default MDT group in the underlay.

PE3 also saw the Data-MDT Join (because it is sent on the default MDT group), but PE3 has no state for the C-PIM (S, G) so it does not join the data MDT group. After a few seconds, it stops seeing the ICMP customer traffic.

Using the below command, you can see the data MDT group that was advertised by a router:

Conclusion

The following technologies define mVPN Profile 0:

  • A working L3 VPN (prerequisite)

  • PE routers run C-PIM with the CE

  • All PE and P routers run P-PIM (underlay)

  • PE routers configure a default MDT under the VRF

  • PE routers run bgp ipv4 mdt to learn about other PEs for this default MDT

  • PE routers automatically generate a GRE interface

  • PE routers automatically send PIM Joins for all SSM groups they learn via MP-BGP

  • PE routers then form a full mesh of C-PIM adjacencies (overlay) using the GRE tunnel interfaces

  • Optionally, PE routers define a data MDT to reduce unnecessary flooding of customer traffic

What defines mVPN profile 0 is the way GRE is used to tunnel traffic between PEs, ontop of a PIM network running as an underlay in the provider network.

Next we will explore profile 1, in which MPLS is used to tunnel traffic, instead of GRE.

Last updated