Sunday, May 3, 2020

Deploy Network Slice By Using Flex-Algo


Previous post "Network Slice - Flex-Algo" explains how segment routing with flex also can help operators to create network slice and serve different type of business requirements.

In this post, I will be covering how to create network slice in service provider network by using segment routing. By default, IGP uses metric as constraint to calculate the shortest path tree. But while using flex-algo, delay will be used as metric to calculate end to end shortest path tree. Once the flex-algo topology will be created, after that we will be using link affinity to color the links and create constraints for flex-also also.

Have to follow below steps to create network slice:
1. Configure flex-algo(K) where K=128 in every router which will partipate in network slice.
2. Configure pre-fix sid for flex-algo(K). We already have prefix-sid configured for flex-algo(0) and now we have to configure one more value for flex-algo(K) where K=128. This is different from the previous prefix-sid but will be configured under same loopback.
3. Advertise fixed delay number to make the calulcations easy. I will be using delay as 100 micro seconds.

Apply link affinity to color the links and create constraints for flex-also.
1. Color links with any name like RED.
2. Exclude RED color links in Flex-algo

We will be using the above topology for creating network slice. Basic setup and configurations can be used from the segment routing post. Configuration to create network slice:
Apply the following configuration to all routers S1, S2, L3, L4, P5, P6 and PE7
       
router isis lab
  flex-algo 128           -> Flex-Algo(128) will be created and advertised
   metric-type delay      -> Delay will be used for path calculation
   advertise-definition
  !
  interface Loopback0
   address-family ipv4 unicast
    prefix-sid index  -> This is already configured. Please check the earlier post of Segment Routing - Control and Data Plane
    prefix-sid algorithm 128 absolute 1700X -> Replace X with Router Number. E.g. S1 will be using 17001 and PE7 will be suing 17007
 !
 performance-measurement
  interface GigabitEthernet0/0/0/X -> Replace X with all the interfaces which will be advertising delay
   delay-measurement
    advertise-delay 100   
! 


This new flex-algo(128) for IS-IS uses delay as metric (instead of cost) and assigns new SIDs(1700X) for each loopback interface apart from standard SIDs. We are using Performance Measurement to advertise the link delay.

Below is the output of flex-algo 128 topology. Instead of cost, it is using delay as metric to build SPT. {L4-S1 = 100}, {L4-S2 = 100}, {L4-S1/S2-L3} = 200},{L4-S1/S2-P5 = 200}, {L4-S1/S2-P5-P6 = 300}, {L4-S1/S2-P5-P6-PE7 = 400}. Also remember the output as the traffic is load balancing between GigabitEthernet0/0/0/0 and GigabitEthernet0/0/0/1 from L4 node towards L3,P5,P6 and PE7. (Compare this output with final output showing in last)
       
RP/0/0/CPU0:L4#show isis route flex-algo 128
L2 1.1.1.1/32 [100/115]
     via 1.4.0.1, GigabitEthernet0/0/0/0, S1, SRGB Base: 16000, Weight: 0
L2 2.2.2.2/32 [100/115]
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
L2 3.3.3.3/32 [200/115]
     via 1.4.0.1, GigabitEthernet0/0/0/0, S1, SRGB Base: 16000, Weight: 0
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
L2 5.5.5.5/32 [200/115]
     via 1.4.0.1, GigabitEthernet0/0/0/0, S1, SRGB Base: 16000, Weight: 0
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
L2 6.6.6.6/32 [300/115]
     via 1.4.0.1, GigabitEthernet0/0/0/0, S1, SRGB Base: 16000, Weight: 0
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
L2 7.7.7.7/32 [400/115]
     via 1.4.0.1, GigabitEthernet0/0/0/0, S1, SRGB Base: 16000, Weight: 0
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
RP/0/0/CPU0:L4#


Below output is also showing different prefix-SID like 1007 instead of 17007,Both values 1007 and 17007 are same, as we have defined absolute value 17007 for PE7. SRGB base block starts with 16000, If we substract 17007-16000, we will get 1007. This is being shown in the below output. The same true for other values too.
       
RP/0/0/CPU0:L4#show isi route flex-algo 128 7.7.7.7/32 detail
L2 7.7.7.7/32 [400/115] Label: 16007, medium priority
     via 1.4.0.1, GigabitEthernet0/0/0/0, S1, SRGB Base: 16000, Weight: 0
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
     src PE7.00-00, 7.7.7.7, prefix-SID index 1007, R:0 N:1 P:0 E:0 V:0 L:0,  -> Read More About Flags - Segment Routing Control Plane - ISIS
         Alg:128
RP/0/0/CPU0:L4#


Below output of forwarding table will club the above two outputs. Removed the rest of output for brevity
       
RP/0/0/CPU0:L4#show mpls forwarding
Sat May  2 07:49:26.312 UTC
Local  Outgoing    Prefix             
Label  Label       or ID              
16001  16001       SR Pfx (idx 1)     
16002  Pop         SR Pfx (idx 2)     
16003  16003       SR Pfx (idx 3)     
16005  16005       SR Pfx (idx 5)     
16006  16006       SR Pfx (idx 6)     
16007  16007       SR Pfx (idx 7)     
17001  17001       SR Pfx (idx 1001)  
17002  Pop         SR Pfx (idx 1002)  
17003  17003       SR Pfx (idx 1003)  
17005  17005       SR Pfx (idx 1005)  
17006  17006       SR Pfx (idx 1006)  
17007  17007       SR Pfx (idx 1007)  


So far, we have two network slices configured for the network i.e. Default(0) and Flex-Algo(128). Let's Color the links with any name like RED and exclude RED color from the Flex-Algo(128). This means Flex-Algo(128) will not be using the links which are color as RED in topology building and makes these links out of the network slice.

Color the links of S1 (Gi0/0/0/0) and L4 (Gi0/0/0/2)
       
Node S1 Config
router isis lab
  affinity-map red bit-position 1  -> Bit-position range is from 0 to 255. Every Color defines one bit-position. Max 32 colors can be mapped in affinity-map 
  !
  interface GigabitEthernet0/0/0/0
   affinity flex-algo red             -> Coloring Gi0/0/0/0 as red and advertising in flex-algo
  !
 !  

Node L4 Config
router isis lab
  affinity-map red bit-position 1
  !
  interface GigabitEthernet0/0/0/2
   affinity flex-algo red
  !
 !  


Now we exclude the link "red" from Flex-Algo 128 in every router where Flex-Algo 128 is configured.
       
router isis lab
  affinity-map red bit-position 1
  flex-algo 128
   affinity exclude-any red    ->The same red color used in the above config. Now Gi0/0/0/0 of S1 and Gi0/0/0/2 of L4 will not participate in flex-algo(128)
  !
 !  


Check the below out of L4 which says that only Gi0/0/0/1 is used as outgoing interface. Now Gi0/0/0/0 will not participate in flex-algo(128) as we have exclude it by using the above configuration.
       
RP/0/0/CPU0:L4#show isis route flex-algo 128
IS-IS lab IPv4 Unicast routes Flex-Algo 128
L2 1.1.1.1/32 [300/115]
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
L2 2.2.2.2/32 [100/115]
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
L2 3.3.3.3/32 [200/115]
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
L2 5.5.5.5/32 [200/115]
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
L2 6.6.6.6/32 [300/115]
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
L2 7.7.7.7/32 [400/115]
     via 2.4.0.2, GigabitEthernet0/0/0/1, S2, SRGB Base: 16000, Weight: 0
RP/0/0/CPU0:L4#show isis route flex-algo 128

People who read this post also read :



No comments: