Many core engineers are familiar with MPLS technology. As you know, we were using LDP or RSVP protocols with MPLS in order to distribute labels. Routers forward traffic according to their labels on packets. LDP has simple configuration but RSVP more complex. Also, RSVP is chosen to use traffic-engineering and fast-reroute. Segment routing is new technology addition to RSVP.
Nowadays, there is new technology, which is Segment Routing. In segment routing, labels are called Segments. Those segments provide instructions such that push,continue,next.(like in mpls; push,pop,swap). In segment routing, there is no need to use LDP or RSVP.
Underlay protocols (IGP) use extension for segments distribution. We will use IS-IS protocol for underlay.
Segment Identifier (SID)
There are two type segments identifier:Prefix SID and Adjacency SID. We will interest here Node Segment ID which is special form of Prefix SID. Node SID is loopback of router as prefix. Prefix SID is global unique and Adjacency is local unique.
Underlay
We will use IS-IS protocol to advertise loopback of each nodes. Also, there will be IBGP between PE-1 and PE-2 router to provide L3VPN. We will only enable MPLS without LDP and RSVP.
Technical Explanation
Our aim is to communicate CUSTOMER CPEs under L3VPN via Segment Routing MPLS.
We will enable MPLS in PE-1,PE-2,P1,P2 router by command “mpls ip” in global.
We will enable segment-routing under IS-IS. Also, we will enable index number under loopback0 to configure NODE SID. This index will generate segment which is 90000+INDEX. This is global unique number for that router and each mpls interface will use it for forwarding. In LDP, there are different labels, so Segment-Routing helps to reduce labels usage.
Loopback of each router will ve advertised via IS-IS. We will configure IBGP between PE-1 and PE-2 to carry L3VPN. Loopback reachability of PE-1 and PE2 will be provided by IS-IS.But subnets of PE router are not know by P routers since there is no BGP on them. So LABELs are needed. P routers will decide forwarding according to labels on packets bu segment routing.
Sample Config
PE-1 ROUTER:
mpls ip
interface Loopback0
>>>>>>>>>>>>>>>>>>CREATING NODE SEGMENT ID
ip address 1.1.1.1/32
node-segment ipv4 index 1
isis enable 1
>>>>>>>>>>>>>>>>>>>>>>THIS IS FOR L3VPN
router bgp 65001
no bgp default ipv4-unicast
neighbor 3.3.3.3 remote-as 65001
neighbor 3.3.3.3 update-source Loopback0
neighbor 3.3.3.3 send-community
!
address-family ipv4
neighbor 3.3.3.3 activate
!
address-family vpn-ipv4
neighbor 3.3.3.3 activate
neighbor 3.3.3.3 encapsulation mpls next-hop-self source-interface Loopback0
!
vrf CUSTOMER
rd 1.1.1.1:1
route-target import vpn-ipv4 3.3.3.3:1
route-target export vpn-ipv4 1.1.1.1:1
redistribute connected
!
>>>>>>>>>>>ENABLE SEGMENT ROUTE FOR IPV4 IN IS-IS
router isis 1
net 49.0001.0001.0001.0001.0001.00
is-type level-2
!
address-family ipv4 unicast
segment-routing mpls
router-id 1.1.1.1
no shutdown
P ROUTER:
mpls ip
interface Loopback0
>>>>>>>>>>>>>>>>>>CREATING NODE SEGMENT ID
ip address 2.2.2.2/32
node-segment ipv4 index 2
isis enable 1
router isis 1
net 49.0001.0002.0002.0002.0002.00
is-type level-2
!
address-family ipv4 unicast
!
segment-routing mpls
router-id 2.2.2.2
no shutdown
OUTPUT OF ROUTE TABLES
PE-1#show ip route 3.3.3.3
>>>>>>>>> REACHABILITY LOOPBACK OF PE2
I L2 3.3.3.3/32 [115/30] via 10.90.90.1, Ethernet2
via 10.80.80.1, Ethernet4
PE-1#show ip route 192.168.101.0/24
>>>>>>>>> THIS IS NON-VRF ROUTE TOWARDS TO PE-2
VRF: default
>>>>>NOTE THAT LABEL IS SAME
B I 192.168.101.0/24 [200/0] via 3.3.3.3/32, IS-IS SR tunnel index 2
via 10.80.80.1, Ethernet4, label 900003
via 10.90.90.1, Ethernet2, label 900003
PE-1#show ip route vrf CUSTOMER
>>>>>>>>> THIS IS L3VPN VRF ROUTE TOWARDS TO PE-2
VRF: CUSTOMER
>>>NOTE THAT LABEL IS SAME
C 10.100.100.0/24 is directly connected, Ethernet3
B I 10.101.101.0/24 [200/0] via 3.3.3.3/32, IS-IS SR tunnel index 2, label 116384
via 10.80.80.1, Ethernet4, label 900003
via 10.90.90.1, Ethernet2, label 900003