Segment Routing(SR), also known as Source Packet Routing in Networking (SPRING), is a recent network routing paradigm covered by several complementary IETF drafts. The most fundamental are draft-ietfspring-segment-routing, draft-ietf-spring-segment-routing-mpls, draft-ietf-isis-segmentrouting-extensions, and draft-ietf-ospf-segment-routing-extensions.
SPRING is proposed as an alternative to LDP and/or RSVP-TE, segment routing is an emerging technology for IP/MPLS networks that enables source routing (SR), if you enable SR on your network no state is held in the network except the ingress SR router. This allow SR to scale significantly better then RSVP-TE while providing most the same functions, SR can offer IGP-based MPLS tunnels to services such as VPRN or VPWS without the addition of any other transport signaling protocol (Different with BGP-LU).
I think the main idea of SR is the capability of Link state (IGP) can carry a label that represent a segment, when MPLS is used to instantiate SR tunels, the MPLS forwarding plane doesn’t change, the folowwing actions apply :
- The active segments is the top label
- The CONTINUE operations is implemented as an MPLS swap operator.
- the NEXT operations is implemented as an MPLS pos operation.
- The PUSH operations is implemented as an MPLS push operations.
Figure 1. SR domain
As we see figure 1, SR domain represented as segments, segments can either be local or global.
Local segments
The router that originates and advertises a local segment is the only one that assigns a label to the segments and installs that label in its LFIB.
Global segments
Typically every router in the domain assigns a (local) label to a (global) segment and install that label in its LFIB.
Segment Identifiers
In a SR domain, each segment is known as a Prefix-SID or an Adjacency-SID (Adj-SID).
A Prefix-SID is globally unique within the IGP/SR domain. The SID value is allocated from a unique pool called the SR Global Block (SRGB). In MPLS network, the SRGB is a set of labels reserved specially for SR use.
Prefix-SIDs divide into to type, Node-SID and Anycast-SID.
A Node-SID is a special type of Prefix-SID used to identify a particular router (loopback/system address) in the domain. The Node-SID is identified by an N flag set to 1 in the Prefix-SID sub-TLV that IS-IS or OSPF uses to advertise the SID.
An Adj-SID is a segment that identifies an adjacency or a set of adjacencies to another router that must be known in the IGP. The valu of an Adj-SID is local to the router that advertises it, and every SR router in the domain can potentially use the same segment (label) space. Therefore, only the advertising router can install an Adj-SID in the forwarding information base. Later on, an Adj-SID will be used to support traffic engineering.
Lab Test :
In the Lab The the following Software released were used :
- Nokia (Alcatel-Lucent) vSR 13.0.R10
- Juniper vMX 17.1R1.8
- Cisco IOSXRv demo-6.1.2
- GNS3 v1.5.4
I would use this base topology for lab test :
In this topology we run OSPF area 0 as a base routing protocol, on R4 (Juniper) i used em interface for connectivity between router, because the juniper running olive instead vMX, but interface em still support for segment routing, why i am running olive instead vMX because to save more resources :-).
Well, actually i want to use ISIS rather than OSPF because i think is more easy to facilitate understanding of exchanging label information between router because ISIS just exchagne one LSA that contain all label (SRGB, Node-SID, Adj-SID), not like OSPF that send one Opaque LSA for one Label (SRGB,Node-SID, Adj-SID, but many blogger has been discuss segment routing in ISIS, so i would try with OSPF.
in this below listed all the router ospf basic configuration.
R1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
A:R1>config>router>ospf# info ---------------------------------------------- area 0.0.0.0 interface "system" no shutdown exit interface "to-R2" interface-type point-to-point no shutdown exit interface "to-R3" interface-type point-to-point no shutdown exit exit no shutdown ---------------------------------------------- |
R2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
RP/0/0/CPU0:R2#show running-config router ospf Tue Apr 25 07:53:14.154 UTC router ospf 0 area 0 interface Loopback0 ! interface GigabitEthernet0/0/0/0 network point-to-point ! interface GigabitEthernet0/0/0/1 network point-to-point ! ! ! |
R4
1 2 3 4 5 6 7 8 9 10 11 12 |
root@R4> show configuration protocols ospf area 0.0.0.0 { interface lo0.0; interface em2.0 { interface-type p2p; } interface em4.0 { interface-type p2p; } } root@R4> |
R6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
A:R6>config>router>ospf# info ---------------------------------------------- area 0.0.0.0 interface "system" no shutdown exit interface "to-R4" interface-type point-to-point no shutdown exit interface "to-R5" interface-type point-to-point no shutdown exit exit no shutdown ---------------------------------------------- |
Segment routing require MPLS protocol to run at interface that want to enable segment routing, assumed that we have been enabling MPLS capability in all interfaces.
Segment Routing Configuration
To enable segment routing in the router, we just need add simple configuration in the ospf context.
First at the Router 1 and 6 (Nokia) we must configures global label block, referred to as Segment Routing Global Block (SRGB), which will be reserved for assigning labels to segment routing perifx SIDs originated by this router. Label block doesn’t configure by default.
1 2 3 |
A:R1# configure router mpls-labels A:R1>config>router>mpls-labels># sr-labels start 100000 end 110000 A:R1>config>router>mpls-labels># exit all |
In the router R2 and R4 ( Cisco and Juniper ) label block has been allocated by default Cisco = 16000-23999 and Juniper = 800000-804095, so we don’t need to configured, Next the main configuration of segment routing parameter within a given IGP instance :
R1
1 2 3 4 |
A:R1>config>router>ospf# advertise-router-capability area A:R1>config>router>ospf# segment-routing prefix-sid-range global A:R1>config>router>ospf# segment-routing no shutdown A:R1>config>router>ospf>area# interface "system" node-sid index 1 |
R2
1 2 3 4 |
RP/0/0/CPU0:R2(config)#router ospf 0 RP/0/0/CPU0:R2(config-ospf)# segment-routing mpls RP/0/0/CPU0:R2(config-ospf-ar)# interface Loopback 0 prefix-sid 2 RP/0/0/CPU0:R2(config-ospf-ar)# commit |
R4
1 |
root@R4# set protocols ospf source-packet-routing node-segment ipv4-index 4 |
R6
1 2 3 4 |
A:R6>config>router>ospf# advertise-router-capability area A:R6>config>router>ospf# segment-routing prefix-sid-range global A:R6>config>router>ospf# segment-routing no shutdown A:R6>config>router>ospf>area# interface "system" node-sid index 6 |
In the Nokia router we must enable option advertise-router-capability {link|area|as} in the OSPF instance. Segment routing is a new capability and needs to be advertised to all router in a given domain. IGP segment routing extensions are area-scoped, so we must configure the flooding scope to area in OSPF. In the Cisco and Juniper router, the advertise capability has been set to area by default.
Also in the Nokia router we must configure offset label value for a OSPF instance with option prefix-sid-range global, it means the OSPF instance will assume the start label value is the lowest label value in the SRGB. In the Cisco and Juniper router the start label value has been set to the lowest label value in the SRGB by default.
The configuration above trigger to the automatic creation of MP2P LSPs (any-to-R1, any-to-R2, any-to-R4 and any-to-R6) and each router will generate Local Label (Pefix SID) with combination from start-label (SRGB) + [Node SID Index].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
A:R1# show router tunnel-table =============================================================================== IPv4 Tunnel Table (Router: Base) =============================================================================== Destination Owner Encap TunnelId Pref Nexthop Metric ------------------------------------------------------------------------------- 10.10.10.2/32 ospf (0) MPLS 524294 10 114.0.1.3 101 10.10.10.4/32 ospf (0) MPLS 524293 10 114.0.1.3 101 10.10.10.6/32 ospf (0) MPLS 524292 10 114.0.1.3 102 ------------------------------------------------------------------------------- Flags: B = BGP backup route available E = inactive best-external BGP route =============================================================================== A:R1# |
Also after the configuration above, each router will exchange opaque-lsa to other router, so let’s examine each LSA :
R1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
A:R1# show router ospf opaque-database adv-router 10.10.10.1 detail =============================================================================== Rtr Base OSPFv2 Instance 0 Opaque Link State Database (type: All) (detail) =============================================================================== ------------------------------------------------------------------------------- Opaque LSA ------------------------------------------------------------------------------- Area Id : 0.0.0.0 Adv Router Id : 10.10.10.1 Link State Id : 4.0.0.0 LSA Type : Area Opaque Sequence No : 0x80000005 Checksum : 0xd88e Age : 1320 Length : 52 Options : E Advertisement : Router Info Capabilities (1) Len 4 : 0x28000000 SR algorithm (8) Len 1 : 0x0 SR label range (9) Len 12 : Range-size=10001 Sub-TLV SID/label(1) len 3 : label=100000 ------------------------------------------------------------------------------- Opaque LSA ------------------------------------------------------------------------------- Area Id : 0.0.0.0 Adv Router Id : 10.10.10.1 Link State Id : 7.0.0.2 LSA Type : Area Opaque Sequence No : 0x80000004 Checksum : 0xca6f Age : 690 Length : 44 Options : E Advertisement : Extended Prefix TLV Extended prefix (1) Len 20 : rtType=1 pfxLen=32 AF=0 pfx=10.10.10.1 Flags=Node (0x40) Sub-TLV Prefix SID (2) len 8 : Flags=noPHP (0x40) MT-ID=0 Algorithm=0 SID/Index/Label=1 ------------------------------------------------------------------------------- Opaque LSA ------------------------------------------------------------------------------- Area Id : 0.0.0.0 Adv Router Id : 10.10.10.1 Link State Id : 8.0.0.3 LSA Type : Area Opaque Sequence No : 0x80000005 Checksum : 0x20da Age : 1624 Length : 48 Options : E Advertisement : Extended Link TLV Extended link (1) Len 24 : link Type=P2P (1) Id=10.10.10.2 Data=114.0.1.2 Sub-TLV Adj-SID (2) len 7 : Flags=Value Local (0x60) MT-ID=0 Weight=0 SID/Index/Label=131070 =============================================================================== A:R1# |
R2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
RP/0/0/CPU0:R2#show ospf database opaque-area self-originate Fri Apr 28 15:45:02.451 UTC OSPF Router with ID (10.10.10.2) (Process ID 0) Type-10 Opaque Link Area Link States (Area 0) LS age: 201 Options: (No TOS-capability, DC) LS Type: Opaque Area Link Link State ID: 4.0.0.0 Opaque Type: 4 Opaque ID: 0 Advertising Router: 10.10.10.2 LS Seq Number: 80000004 Checksum: 0x470a Length: 52 Router Information TLV: Length: 4 Capabilities: Graceful Restart Helper Capable Stub Router Capable All capability bits: 0x60000000 Segment Routing Algorithm TLV: Length: 2 Algorithm: 0 Algorithm: 1 Segment Routing Range TLV: Length: 12 Range Size: 8000 SID sub-TLV: Length 3 Label: 16000 LS age: 201 Options: (No TOS-capability, DC) LS Type: Opaque Area Link Link State ID: 7.0.0.1 Opaque Type: 7 Opaque ID: 1 Advertising Router: 10.10.10.2 LS Seq Number: 80000004 Checksum: 0x6eeb Length: 44 Extended Prefix TLV: Length: 20 Route-type: 1 AF : 0 Flags : 0x40 Prefix : 10.10.10.2/32 SID sub-TLV: Length: 8 Flags : 0x0 MTID : 0 Algo : 0 SID Index : 2 LS age: 201 Options: (No TOS-capability, DC) LS Type: Opaque Area Link Link State ID: 8.0.0.4 Opaque Type: 8 Opaque ID: 4 Advertising Router: 10.10.10.2 LS Seq Number: 80000005 Checksum: 0xf894 Length: 68 Extended Link TLV: Length: 44 Link-type : 1 Link ID : 10.10.10.1 Link Data : 114.0.1.3 Adj sub-TLV: Length: 7 Flags : 0xe0 MTID : 0 Weight : 0 Label : 24002 Adj sub-TLV: Length: 7 Flags : 0x60 MTID : 0 Weight : 0 Label : 24003 Remote If Address sub-TLV: Length: 4 Neighbor Address: 114.0.1.2 LS age: 201 Options: (No TOS-capability, DC) LS Type: Opaque Area Link Link State ID: 8.0.0.5 Opaque Type: 8 Opaque ID: 5 Advertising Router: 10.10.10.2 LS Seq Number: 80000004 Checksum: 0x8299 Length: 68 Extended Link TLV: Length: 44 Link-type : 1 Link ID : 10.10.10.4 Link Data : 172.0.2.0 Adj sub-TLV: Length: 7 Flags : 0xe0 MTID : 0 Weight : 0 Label : 24000 Adj sub-TLV: Length: 7 Flags : 0x60 MTID : 0 Weight : 0 Label : 24001 Remote If Address sub-TLV: Length: 4 Neighbor Address: 172.0.2.1 RP/0/0/CPU0:R2# |
R4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
root@R4> ...ue-area advertising-router 10.10.10.4 extensive OSPF database, Area 0.0.0.0 Type ID Adv Rtr Seq Age Opt Cksum Len OpaqArea*4.0.0.0 10.10.10.4 0x8000000a 2292 0x22 0xcbf8 284 Area-opaque LSA SR-Algorithm (8), length 1: Algo (1), length 1: 0 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 800000 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 800256 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 800512 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 800768 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 801024 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 801280 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 801536 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 801792 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 802048 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 802304 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 802560 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 802816 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 803072 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 803328 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 803584 SID/Label Range (9), length 12: Range Size (1), length 3: 256 SID/Label (1), length 3: Label (1), length 3: 803840 Gen timer 00:11:47 Aging timer 00:21:47 Installed 00:38:12 ago, expires in 00:21:48, sent 00:00:02 ago Last changed 01:16:43 ago, Change count: 2, Ours, TE Link ID: 0 OpaqArea*7.0.0.1 10.10.10.4 0x80000003 338 0x22 0x96bc 44 Area-opaque LSA Extended Prefix (1), length 20: Route Type (1), length 1: 1 Prefix Length (2), length 1: 32 AF (3), length 1: 0 Flags (4), length 1: 0x40 Prefix (5), length 32: 10.10.10.4 Prefix Sid (2), length 8: Flags (1), length 1: 0x00 MT ID (2), length 1: 0 Algorithm (3), length 1: 0 SID (4), length 4: 4 Gen timer 00:44:21 Aging timer 00:54:21 Installed 00:05:38 ago, expires in 00:54:22, sent 00:00:02 ago Last changed 01:32:26 ago, Change count: 1, Ours, TE Link ID: 0 OpaqArea*8.0.0.1 10.10.10.4 0x80000002 3600 0x22 0xaa54 48 Area-opaque LSA Extended Link (1), length 24: Link Type (1), length 1: 1 Link Id (2), length 4: 10.10.10.2 Link Data (3), length 4: 172.0.2.1 Adjacency Sid (2), length 7: Flags (1), length 1: 0x60 MT ID (2), length 1: 0 Weight (3), length 1: 0 Label (4), length 3: 299776 Aging timer 00:00:09 Installed 01:05:17 ago, expires in 00:00:00, sent 00:00:02 ago Last changed 01:32:54 ago, Change count: 1, Ours, TE Link ID: 0 Purged Purge pend OpaqArea*8.0.0.2 10.10.10.4 0x80000002 2780 0x22 0x9f84 48 Area-opaque LSA Extended Link (1), length 24: Link Type (1), length 1: 1 Link Id (2), length 4: 10.10.10.6 Link Data (3), length 4: 124.0.1.3 Adjacency Sid (2), length 7: Flags (1), length 1: 0x60 MT ID (2), length 1: 0 Weight (3), length 1: 0 Label (4), length 3: 299792 Gen timer 00:03:04 Aging timer 00:13:39 Installed 00:46:20 ago, expires in 00:13:40, sent 00:00:02 ago Last changed 01:19:56 ago, Change count: 1, Ours, TE Link ID: 0 OpaqArea*8.0.0.3 10.10.10.4 0x80000002 1315 0x22 0x3aa2 48 Area-opaque LSA Extended Link (1), length 24: Link Type (1), length 1: 1 Link Id (2), length 4: 10.10.10.2 Link Data (3), length 4: 172.0.2.1 Adjacency Sid (2), length 7: Flags (1), length 1: 0x60 MT ID (2), length 1: 0 Weight (3), length 1: 0 Label (4), length 3: 299808 Gen timer 00:22:39 Aging timer 00:38:04 Installed 00:21:55 ago, expires in 00:38:05, sent 00:00:02 ago Last changed 00:21:55 ago, Change count: 2, Ours, TE Link ID: 0 root@R4> |
R6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
A:R6# show router ospf opaque-database adv-router 10.10.10.6 detail =============================================================================== Rtr Base OSPFv2 Instance 0 Opaque Link State Database (type: All) (detail) =============================================================================== ------------------------------------------------------------------------------- Opaque LSA ------------------------------------------------------------------------------- Area Id : 0.0.0.0 Adv Router Id : 10.10.10.6 Link State Id : 4.0.0.0 LSA Type : Area Opaque Sequence No : 0x80000004 Checksum : 0xbca6 Age : 995 Length : 52 Options : E Advertisement : Router Info Capabilities (1) Len 4 : 0x28000000 SR algorithm (8) Len 1 : 0x0 SR label range (9) Len 12 : Range-size=10001 Sub-TLV SID/label(1) len 3 : label=100000 ------------------------------------------------------------------------------- Opaque LSA ------------------------------------------------------------------------------- Area Id : 0.0.0.0 Adv Router Id : 10.10.10.6 Link State Id : 7.0.0.2 LSA Type : Area Opaque Sequence No : 0x80000003 Checksum : 0x77b4 Age : 1083 Length : 44 Options : E Advertisement : Extended Prefix TLV Extended prefix (1) Len 20 : rtType=1 pfxLen=32 AF=0 pfx=10.10.10.6 Flags=Node (0x40) Sub-TLV Prefix SID (2) len 8 : Flags=noPHP (0x40) MT-ID=0 Algorithm=0 SID/Index/Label=6 ------------------------------------------------------------------------------- Opaque LSA ------------------------------------------------------------------------------- Area Id : 0.0.0.0 Adv Router Id : 10.10.10.6 Link State Id : 8.0.0.3 LSA Type : Area Opaque Sequence No : 0x80000004 Checksum : 0xb634 Age : 759 Length : 48 Options : E Advertisement : Extended Link TLV Extended link (1) Len 24 : link Type=P2P (1) Id=10.10.10.4 Data=124.0.1.2 Sub-TLV Adj-SID (2) len 7 : Flags=Value Local (0x60) MT-ID=0 Weight=0 SID/Index/Label=131070 =============================================================================== A:R6# |
Every router generate more than one opaque LSA with Link state ID :
- 4.0.0.x, The LSA have advertisement type router Information that contain SRGB range
- 7.0.0.x, The LSA have advertisement type Extended Prefix that contain Node SID index,
- 8.0.0.x, The LSA have advertisement type Extended Link that contain Adj-ID, this number of LSA equal to the OSPF neighbor that enable segment routing.
You can read more in draft-ietf-ospf-segment-routing-extensions-12.
Segment Routing as a transport tunnel in L2/L3VPN.
As mentioned before that segment routing didn’t require addition of any other transport signaling protocol (LDP/RSVP), but the segment routing doesn’t have capabilty to advertise service label like T-LDP, so we need T-LDP to signal service label, i will create VPLS service between R1 and R6 (Nokia).
To enbale T-LDP in Nokia router, we just need to turn on the LDP protocol without any other configuration configure router ldp no shutdown , the targeted address will derived from sdp far-end address.
R1
1 2 3 4 5 6 7 8 9 10 11 12 |
A:R1# configure service sdp 1 mpls create A:R1>config>service>sdp# info ---------------------------------------------- far-end 10.10.10.6 sr-ospf path-mtu 1514 keep-alive shutdown exit no shutdown ---------------------------------------------- A:R1>config>service>sdp# |
R6
1 2 3 4 5 6 7 8 9 10 11 12 |
A:R6# configure service sdp 1 mpls create A:R6>config>service>sdp# info ---------------------------------------------- far-end 10.10.10.1 sr-ospf path-mtu 1514 keep-alive shutdown exit no shutdown ---------------------------------------------- A:R6>config>service>sdp# |
we see the sdp transport tunnel use sr-ospf.
I have been configuring simple VPLS service with sdp that recently created,
R1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
A:R1# configure service vpls 1 customer 1 create A:R1>config>service>vpls# info ---------------------------------------------- stp shutdown exit sap 1/1/2 create exit mesh-sdp 1:1 create no shutdown exit no shutdown ---------------------------------------------- A:R1>config>service>vpls# A:R1# show service id 1 base =============================================================================== Service Basic Information =============================================================================== Service Id : 1 Vpn Id : 0 Service Type : VPLS Name : (Not Specified) Description : (Not Specified) Customer Id : 1 Creation Origin : manual Last Status Change: 07/30/2016 07:16:13 Last Mgmt Change : 07/30/2016 01:04:44 Etree Mode : Disabled Admin State : Up Oper State : Up MTU : 1514 Def. Mesh VC Id : 1 SAP Count : 0 SDP Bind Count : 1 Snd Flush on Fail : Disabled Host Conn Verify : Disabled SHCV pol IPv4 : None Propagate MacFlush: Disabled Per Svc Hashing : Disabled Allow IP Intf Bind: Disabled Fwd-IPv4-Mcast-To*: Disabled Def. Gateway IP : None Def. Gateway MAC : None Temp Flood Time : Disabled Temp Flood : Inactive Temp Flood Chg Cnt: 0 VSD Domain : <none> SPI load-balance : Disabled TEID load-balance : Disabled ------------------------------------------------------------------------------- Service Access & Destination Points ------------------------------------------------------------------------------- Identifier Type AdmMTU OprMTU Adm Opr ------------------------------------------------------------------------------- sdp:1:1 M(10.10.10.6) Mesh 1514 1514 Up Up =============================================================================== * indicates that the corresponding row element may have been truncated. A:R1# A:R1# show service id 1 sdp =============================================================================== Services: Service Destination Points =============================================================================== SdpId Type Far End addr Adm Opr I.Lbl E.Lbl ------------------------------------------------------------------------------- 1:1 Mesh 10.10.10.6 Up Up 131070 131068 ------------------------------------------------------------------------------- Number of SDPs : 1 ------------------------------------------------------------------------------- =============================================================================== A:R1# |
R6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
A:R6# configure service vpls 1 customer 1 create A:R6>config>service>vpls# info ---------------------------------------------- stp shutdown exit sap 1/1/2 create exit mesh-sdp 1:1 create no shutdown exit no shutdown ---------------------------------------------- A:R6>config>service>vpls# A:R6>config>service>vpls# A:R6# show service id 1 base =============================================================================== Service Basic Information =============================================================================== Service Id : 1 Vpn Id : 0 Service Type : VPLS Name : (Not Specified) Description : (Not Specified) Customer Id : 1 Creation Origin : manual Last Status Change: 07/30/2016 07:35:13 Last Mgmt Change : 07/30/2016 07:35:13 Etree Mode : Disabled Admin State : Up Oper State : Up MTU : 1514 Def. Mesh VC Id : 1 SAP Count : 0 SDP Bind Count : 1 Snd Flush on Fail : Disabled Host Conn Verify : Disabled SHCV pol IPv4 : None Propagate MacFlush: Disabled Per Svc Hashing : Disabled Allow IP Intf Bind: Disabled Fwd-IPv4-Mcast-To*: Disabled Def. Gateway IP : None Def. Gateway MAC : None Temp Flood Time : Disabled Temp Flood : Inactive Temp Flood Chg Cnt: 0 VSD Domain : <none> SPI load-balance : Disabled TEID load-balance : Disabled ------------------------------------------------------------------------------- Service Access & Destination Points ------------------------------------------------------------------------------- Identifier Type AdmMTU OprMTU Adm Opr ------------------------------------------------------------------------------- sdp:1:1 M(10.10.10.1) Mesh 1514 1514 Up Up =============================================================================== * indicates that the corresponding row element may have been truncated. A:R6# show service id 1 sdp =============================================================================== Services: Service Destination Points =============================================================================== SdpId Type Far End addr Adm Opr I.Lbl E.Lbl ------------------------------------------------------------------------------- 1:1 Mesh 10.10.10.1 Up Up 131068 131070 ------------------------------------------------------------------------------- Number of SDPs : 1 ------------------------------------------------------------------------------- =============================================================================== A:R6# |
The VPLS service getting UP and the ping from CE is successful.
1 2 3 4 5 6 7 8 |
PC1> ping 192.168.1.2 84 bytes from 192.168.1.2 icmp_seq=1 ttl=64 time=16.122 ms 84 bytes from 192.168.1.2 icmp_seq=2 ttl=64 time=106.139 ms 84 bytes from 192.168.1.2 icmp_seq=3 ttl=64 time=16.186 ms 84 bytes from 192.168.1.2 icmp_seq=4 ttl=64 time=15.699 ms 84 bytes from 192.168.1.2 icmp_seq=5 ttl=64 time=16.355 ms PC1> |
Dataplane Walkthrough.
You can see, all the labels end in 6, Node Segment Identifier (Node SID) of R6. But the three label have different value in the flow : 16006, 800006 and 100006. it’s because we configured different SRGB at each router. Actually, we can configured the same SRGB for all router because SRGB locally unique, if we do this all the label will same at the flow, very interesting. This is very different from LDP or RSVP, whose labels are not deterministic and often change to a different value on a hop-by-hop basis.
Remember, that the outgoing label assigned from calculated of SRGB and Node SID of destination.
R2
1 2 3 4 5 6 7 8 9 10 11 12 13 |
RP/0/0/CPU0:R2#show mpls forwarding Wed Apr 26 16:30:45.184 UTC Local Outgoing Prefix Outgoing Next Hop Bytes Label Label or ID Interface Switched ------ ----------- ------------------ ------------ --------------- ------------ 16001 100001 SR Pfx (idx 1) Gi0/0/0/0 114.0.1.2 3032 16004 Pop SR Pfx (idx 4) Gi0/0/0/1 172.0.2.1 0 16006 800006 SR Pfx (idx 6) Gi0/0/0/1 172.0.2.1 3032 24000 Pop SR Adj (idx 0) Gi0/0/0/1 172.0.2.1 0 24001 Pop SR Adj (idx 0) Gi0/0/0/1 172.0.2.1 0 24002 Pop SR Adj (idx 0) Gi0/0/0/0 114.0.1.2 0 24003 Pop SR Adj (idx 0) Gi0/0/0/0 114.0.1.2 0 RP/0/0/CPU0:R2# |
R4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
root@R4> show route forwarding-table --output omitted-- Routing table: default.mpls MPLS: Destination Type RtRef Next hop Type Index NhRef Netif default perm 0 dscd 50 1 0 user 0 recv 49 4 1 user 0 recv 49 4 2 user 0 recv 49 4 13 user 0 recv 49 4 299792 user 0 124.0.1.2 Pop 554 2 em4.0 299792(S=0) user 0 124.0.1.2 Pop 555 2 em4.0 299856 user 0 172.0.2.0 Pop 560 3 em2.0 299856(S=0) user 0 172.0.2.0 Pop 562 3 em2.0 800001 user 0 172.0.2.0 Swap 16001 561 2 em2.0 800002 user 0 172.0.2.0 Pop 560 3 em2.0 800002(S=0) user 0 172.0.2.0 Pop 562 3 em2.0 800006 user 0 124.0.1.2 Swap 100006 553 2 em4.0 --output omitted-- root@R4> |
If you want to know more detail about the exchange label, you can examine PCAP file between all router, R1-R2, R2-R4, R4-R6.
Conclusion
Segment Routing is emerging as a new tunneling protocol beside LDP and RSVP. But unlike LDP and RSVP that need MPLS control plane, SR no requires MPLS control plane process and imposes no changes to the MPLS data plane. Segment routing also enabling source routing without requiring any midpoint or tail-end state. The only state required is held at the ingress PE, whisch makes segment routing more scalable than RSVP-TE.
Network Telco Engineer – SDN/NFV Enthusiast
Komentar