MPLS Fun in the Lab: Building the MPLS Cloud – Part 1

MPLS Fun in the Lab: Building the MPLS Cloud – Part 1

As I mentioned in the previous blog (MPLS Fun in the Lab: Building a MPLS L3VPN Unicast and Mcast Cloud – Overview) what we are going to do first and foremost is create the MPLS core.

Time to build the MPLS cloud in the middle!

the_cloud_mpls1

Want some snippets of the configs?

Configs for Brie (RR), Cheddar (PE1), Feta (PE3) and Rogue (P).  Brie, Cheddar and Feta are all ASR1Ks running IOS XE (3.16.3).  Rogue is a ASR9001 running IOS XR (5.3.3)

MPLS Part 1.zip

Part 1: Create the MPLS Cloud

Create the MPLS cloud and prep it for MPLS L3VPN Unicast for One L3VPN Customer

  1. OSPF area 0
  2. MPLS LDP neighbors between the PEs and the P
  3. BGP VPNv4 peers from all PEs to the VPNv4 Route Reflector

Plus… Have fun throughout looking at show commands and sniffer traces.  🙂

the_cloud_mpls3

1) OSPF area 0

I want –

  • all 4 routers in OSPF area 0
  • network type point-to-point for physical links between the routers
  • advertise Loopback0
  • passive interface Loopback 0
  • OSPF router-id locked in and configured to be loopback0 for each device

For IOS XE this looks like

ospf_cheddar

For IOS XR this looks like

ospf_rogue

Lets go to Rogue since it is in the middle and will give us a one stop place to see if it sees all 5 routers as OSPF neighbors and has their corresponding loopback address in its RIB.

ospf_neighbor_routes_rogue

Yup!  Looks good.  Okay… so OSPF?  Check!

2) MPLS LDP neighbors between the PEs and the P

There is something VERY important about MPLS LDP neighbors I want you to understand.  Because of this we are going to break this part down into 3 subsections.

  • show configs for MPLS LDP
  • Disable Cheddar and Rogue from advertising their loopback0s with each other – see that MPLS LDP neighbor doesn’t come up.
  • Enable Cheddar and Rogue to advertise their loopback0s with each other – see that the MPLS LDP neighbor comes up.

MPLS Configs

For IOS XE this looks like

cheddar_ldp

For IOS XR this looks like

rogue_ldp

Don’t Advertise Loopback0s – MPLS LDP Neighbors Do NOT Come Up

  1. Shut down the interface on Cheddar towards Rogue
  2. reconfigure both Cheddar and Rogue to NOT advertise their loopback 0s to each other via OSPF
  3. Setup a sniffer capture on the wire between Cheddar and Rogue
  4. No shut the interface on Cheddar towards Rogue.
  5. Show how the MPLS LDP neighbor is NOT coming up
  6. Look at my favorite command which shows why (show mpls ldp discovery)
  7. Look at the sniffer trace

Okay… so… I’m lazy.  🙂    Steps 1 thru 4 have been done.  🙂  You will just have to trust me on this. So let’s just hop to step 5 – Show how the MPLS LDP neighbor is NOT coming up.

Since many of you are probably more familiar with IOS and IOS XE than IOS XR…. let’s just use Cheese (IOS XE) to look at some commands and see what is going on.

cheddar_ldp_tsging

  1. show mpls ldp neighbor – returns the cheddar prompt.  We have no neighbors.
  2. show mpls interface – shows us that interface Ten0/1/0 is configured for ldp and is operational
  3. show mpls ldp discovery –  shows that Cheddars local LDP identifier (it’s MPLS LDP router-id) is its loopback0 (14.100.100.101). It also shows that on Ten0/1/0 we have sent (xmit) AND received (recv) LDP hellos messages.  AND it shows that we have learned about a device out there with an LDP identifier of 14.100.100.150..  But then we see something that doesn’t really look good “no route”

You might look at this and be confused.  That’s just cause what you don’t know is that the MPLS LDP neighbor is formed TCP between the LDP Identifiers.  Which we made the loopbacks. And which… as I mentioned… I removed from being advertised in OSPF between Cheddar and Rogue.

Sniffer Trace: no_mpls_ldp_neighbor.pcap

hello

Advertise Loopback0s – MPLS LDP Neighbors Come Up

  1. Shut down the interface on Cheddar towards Rogue
  2. reconfigure both Cheddar and Rogue to advertise their loopback 0s to each other via OSPF
  3. Setup a sniffer capture on the wire between Cheddar and Rogue
  4. No shut the interface on Cheddar towards Rogue.
  5. Show how the MPLS LDP neighbor is coming up
  6. Look at my favorite command which shows why
  7. Look at the sniffer trace

Steps 1 thru 4 have been done.  So let’s just hop to step 5 – Show how the MPLS LDP neighbor is  coming up.

cheddar_ldp_working

  1. show mpls ldp neighbor – Woot! Neighbor between Cheddar and Rogue! See that “TCP Connection” line in there also?  Port 646.
  2. show mpls ldp discovery –  Looks good!
  3. show tcp brief – See that port 646?  🙂  LDP, baby!

Here is the sniffer trace of that coming up for you to download and look at.

Sniffer Trace: mpls_ldp_neighbor.pcap

neighbor

🙂  I do so love me a good sniffer trace!  I really learn so much from them.

3) BGP VPNv4 peers from all PEs to the VPNv4 Route Reflector

Only the PE devices will need BGP vpnv4 peers.  With the concept of “build today with tomorrow in mind” even though we will ultimately only have 4 routers…. we will go ahead and use a BGP VPNv4 route reflector.

So let’s check out the BGP configs for Cheddar (PE1) and Brie (our VPNv4 RR)

First — let’s look at Cheddar.  So it kinda looks like what we might think of as “normal looking ” IPv4 BGP.  I mean… there is a neighbor and a peer-group definition.  Remote-AS is in their… update source loopback0.  And then applying the peer-group to a neighbor.  I mean… except for the face that we have everything else listed under the vpnv4 address-family.  Looks very similar to IPv4 BGP.   Hmmmm…. except for that “send-community both” thing.

cheddar_bgp

Okay… so let’s look at Brie, the vpnv4 RR.   Okay… again… “okay readable” for someone who is already family with IPv4 BGP.  Just address-family vpnv4 again and that “send community both” again.

brie_bgp

What does that “send-community both” mean?  🙂   Next blog.

For now we can see in Brie, the BGP VPNv4 RR, that it has a vpnv4 neighbor relationship with all 4 of the PEs.  Ooooooooo… and look!  🙂   PE1 and PE3 are already advertising stuff.  🙂

bgpvpn

🙂

Next?  Connecting the CEs and following the labels.  🙂