Building network automation solutions

9 module online course

Start now!

BGP-Free MPLS Core with Segment Routing

After I created the Segment Routing lab to test the relationship between Node Segment ID (SID) and MPLS labels (and added support for IS-IS, SR-MPLS, and BGP to netsim-tools), I was just a minor step away from testing BGP-free core with SR-MPLS.

I added two nodes to my lab setup, this time using IOSv as those nodes need nothing more than EBGP support (and IOSv is tiny compared to IOS XE on CSR):

Extending SR/MPLS lab with BGP

Extending SR/MPLS lab with BGP

All four routers in AS 65000 run IS-IS with Segment Routing, but only E1 and E2 run BGP (with a direct IBGP session between them). The $1M question: can we ping between X1 and X2?

TL&DR: Yes

Let’s inspect the BGP table on E1:

e1#sh ip bgp
BGP table version is 7, local router ID is
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
 *>                  0         32768 i
 r>i                      100      0 i
 *>                0             0 65001 i
 *>i                 0    100      0 65002 i
 *>                0             0 65001 i
 *>i                 0    100      0 65002 i

Next hop for X2 ( is E2 ( Do we have an MPLS path to get there?

e1#show mpls forwarding-table
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
Label      Label      or Tunnel Id     Switched      interface
16004      16004      0             Gi2
           900004      0             Gi3

We do. Are these labels used for We won’t see them in the IP routing table (RIB), we have to look into IP forwarding table (FIB)1

e1#show ip cef detail, epoch 2, flags [rib only nolabel, rib defined all labels]
  recursive via
    nexthop GigabitEthernet2 label 16004-(local:16004)
    nexthop GigabitEthernet3 label 900004-(local:16004)

QED - our BGP-free core is using SR-MPLS labels for BGP next hops to get the traffic across AS 65000.

Obviously I could just run a ping…

x1#ping source GigabitEthernet 0/2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to, timeout is 2 seconds:
Packet sent with a source address of
Success rate is 100 percent (5/5), round-trip min/avg/max = 7/7/8 ms

… but that wouldn’t have been nearly as much fun.

Want to Reproduce It?

Want to Know More?

You might find these webinars useful:

  1. See also: RIBs and FIBs and Management, Control, and Data Planes in Network Devices and Systems ↩︎

Add comment