Segment Routing On Demand for L2VPN/VPWS

On-Demand Next Hop (ODN) for Layer 2 Virtual Private Network (L2VPN) creates a segment routing (SR) traffic-engineering (TE) auto-tunnel and uses the auto-tunnel for pseudowire dataplane.

Feature Information for Segment Routing On Demand Next Hop for L2VPN/VPWS

The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.

Use the Cisco Feature Navigator to find information about platform support and Cisco software image support. To access the Cisco Feature Navigator, go to www.cisco.com/go/cfn. An account on Cisco.com is not required.
Table 1. Feature Information for Segment Routing On Demand Next Hop for L2VPN/VPWS

Feature Name

Releases

Feature Information

Segment Routing On Demand Next Hop for L2VPN/VPWS

Cisco IOS XEAmsterdam 17.3.2

ODN for L2VPN is to create a SR TE auto-tunnel and use the auto-tunnel for pseudo-wire data-plane. The peer IP address is the destination of tunnel and TE LSP attribute determines the path of the tunnel.

The following commands were added or modified:

sh mpls l2 vc , sh mpls l2 vc detail , sh l2vpn atom preferred-path , sh l2vpn atom vc , sh mpl traffic-eng tun tun 2000 , sh mpls ldp discovery , sh mpl ldp nei , sh int pseudowire 4243 , sh xconnect all .

Restrictions for Segment Routing On Demand Next Hop for L2VPN/VPWS

  • Layer-2 VPN/VPWS (Virtual Private Wire Service) On Demand Next Hop (ODN) is not supported with peudowire (PW) class.

  • The segment routing on demand for L2VPN or VPWS is not supported for BGP signaled/ADVPWS or Virtual Private LAN Service (VPLS).

  • Only Segment-Routing TE tunnels are supported and created for L2VPN using attribute-set.

  • L2VPN preferred path bandwidth related configuration does not take effect when TE attribute-set is configured.

  • Only L2-VPN ODN VPWS with LDP signaling is supported.

Information About Segment Routing On Demand Next Hop for L2VPN/VPWS

On Demand Next Hop (ODN) for L2VPN creates an SR TE auto-tunnel and uses the auto-tunnel for pseudowire dataplane. The peer IP address is the destination of tunnel and TE LSP attribute determines path of the tunnel. Sometimes a pseudowire connection may need to span multiple interior gateway protocol (IGP) areas while LDP is used as signaling protocol. The pseudowire endpoint provider edge's (PE) loopback addresses are not distributed across IGP area boundaries. In this case, one PE may not have a default route (or an exact match route) in its RIB to reach the peer PE of the pseudowire connection. Thus the pseudowire connection can not be signaled by LDP. A new option autoroute destination is introduced under LSP attribute to address this problem. When a LSP attribute is configured using the autoroute destination command, auto-tunnel uses the LSP attribute to automatically create a static route for the tunnel destination with the auto-tunnel interface as the next hop. This static route enables LDP to establish a LDP a session and exchange label mapping messages between two pseudowire endpoints.


Note


Use the autoroute destination command only to configure LSP attribute used by LDP signaled L2VPN. It is not needed for BGP signaled Layer-3 VPN ODN.


AToM Manager

Any Transport over MPLS (AToM) manager maintains a database of auto-tunnels on a pair of attribute set and peer ip addresses, the AToM manager can add or delete an SR TE auto-tunnel for a pseudowire interface (VC).

Any VC that is configured with the same attribute-set or peer uses the same auto-tunnel. An auto-tunnel can be removed from the database using TE service if an attribute set or peer pair is no longer used by any pseudowire interfaces.

Inter-Area L2VPN ODN

When LDP is used as a signaling protocol and pesudowire connection is spanned across multiple Interior Gateway Protocols (IGPs), the pseudowire endpoint PE's loopback addresses are not distributed across IGP area boundaries. In this case, one PE may not have a default route (or an exact match route) in its RIB to reach the peer PE of the pseudowire connection. Thus the pseudowire connection can not be signaled by LDP.

How to Configure Segment Routing On Demand Next Hop for L2VPN/VPWS

You can use either pesudowire interface command or template method to configure L2VPN/VPWS.

Configuring Segment Routing On Demand Next Hop for L2VPN/VPWS Using Pesudowire Interface Commands

  1. Run the following command on headend node (R1):

    
    R1#
    !
    mpls traffic-eng auto-tunnel p2p tunnel-num min 2000 max 2002
    !
    interface GigabitEthernet0/3/1
     no ip address
     negotiation auto
     service instance 300 ethernet
      encapsulation dot1q 300  
    !
    interface pseudowire4243
     encapsulation mpls
     neighbor 10.6.6.6 300
     preferred-path segment-routing traffic-eng attribute-set L2VPNODN
    !
    l2vpn xconnect context foobar
     member GigabitEthernet0/3/1 service-instance 300 
     member pseudowire4243
    !
    mpls traffic-eng lsp attributes L2VPNODN
     priority 7 7
     path-selection metric te 
    !
    end
    
  2. Run the following command at tail end (R2):

    
    R2#
    !
    mpls traffic-eng auto-tunnel p2p tunnel-num min 2000 max 2002
    
    interface pseudowire4243
     encapsulation mpls
     neighbor 10.1.1.1 300
     preferred-path segment-routing traffic-eng attribute-set L2VPNODN
    !
    interface GigabitEthernet0/2/2
     no ip address
     negotiation auto
     service instance 300 ethernet
      encapsulation dot1q 300  
    !
    l2vpn xconnect context foobar
     member GigabitEthernet0/3/1 service-instance 300 
     member pseudowire4243
    !
    mpls traffic-eng lsp attributes L2VPNODN
     priority 7 7
     path-selection metric te
    !
    end
    

Configuring Segment Routing On Demand Next Hop for L2VPN/VPWS Using Template Commands

  1. Run the following command at headend node (R1):

    
    R1#
    template type pseudowire test
     encapsulation mpls
     preferred-path segment-routing traffic-eng attribute-set L2VPNODN
    !
    interface GigabitEthernet0/3/1
     no ip address
     negotiation auto
     service instance 400 ethernet
      encapsulation dot1q 400
    !
    l2vpn xconnect context foobar2
     member 10.6.6.6 400 template test
     member GigabitEthernet0/3/1 service-instance 400
    
  2. Run the following command at tail end (R2):

    
    R2#
    !
    template type pseudowire test
     encapsulation mpls
     preferred-path segment-routing traffic-eng attribute-set L2VPNODN
    !
    interface GigabitEthernet0/2/2
     no ip address
     negotiation auto
     service instance 400 ethernet
      encapsulation dot1q 400
    !
    l2vpn xconnect context foobar2
     member 10.1.1.1 400 template test
     member GigabitEthernet0/2/2 service-instance 400
    !
    end
    
    

Configuring Segment Routing On Demand Next Hop for L2VPN/VPWS With Prepend Option

To control the path of LSP it is possible to enable prepend option. The prepend option is only supported with intra-area and supports labeled paths only. To enable prepend option use the following CLI:


R1(config-lsp-attr)#path-selection segment-routing prepend 
R1(config-lsp-attr-sr-prepend)#?
Segment-routing label prepend commands:
  exit   Exist from segment-routing prepend config mode
  index  Specify the next entry index to add, edit or delete
  list   List all prepend entries
  no     Delete a specific entry index
R1(config-lsp-attr-sr-prepend)#index ?
  <1-10>  Entry index number
  last-hop    Indicates the end of label list
  next-label  Specify the next MPLS label in the path


Note


If last-hop option indicates tail end node. If this option is only used no control on LSP path can be done.


Configuring Preferred Path for Segment Routing On Demand Next Hop for L2VPN/VPWS

To bring down virtual circuit (VC) in case of LSP failure, which could be either because of path fail or removing a command, disable the fallback mode.


preferred-path segment-routing traffic-eng attribute-set L2VPNODN
disable-fallback  disable fall back to alternative route

Configuring Autoroute Destination for Segment Routing On Demand Next Hop for L2VPN/VPWS

For inter-area destination, IP address may not be installed at headend. You need to have destination IP address installed to enable a targeted LDP session for L2-VPN VPWS. To enable a targeted LDP session for L2VPN VPWS, configure the auto-route destination under the attribute set:


Device#
mpls traffic-eng lsp attributes L2VPNODN
 priority 7 7
 path-selection metric te
 pce
 autoroute destination
!
end

The destination address gets installed via L2-VPN ODN LSP as a static route.

Run the following commands to verify autoroute destination configuration:


Device#sh ip route 10.6.6.6
Routing entry for 10.6.6.6/32
  Known via "static", distance 1, metric 0 (connected)
  Routing Descriptor Blocks:
  * directly connected, via Tunnel2000------------------------ L2-VPN ODN LSP
      Route metric is 0, traffic share count is 1

Device#sh mpls for 10.6.6.6
Local      Outgoing             Prefix          Bytes Label      Outgoing   Next Hop    
Label      Label               or Tunnel Id     Switched          interface              
25           [T]  Pop Label    10.6.6.6/32      0                   Tu2000     point2point

Verifying Segment Routing On Demand Next Hop for L2VPN/VPWS

  1. sh mpls l2 vc

    
    Device#sh mpls l2 vc				
    Local intf     Local circuit              Dest address    VC ID      Status
    -------------  -------------------------- --------------- ---------- ----------
    Gi0/3/1        Eth VLAN 300               10.6.6.6        300        UP  
    
  2. sh mpls l2 vc detail

    
    Device# sh mpls l2 vc detail
    Local interface: Gi0/3/1 up, line protocol up, Eth VLAN 300 up
      Interworking type is Ethernet
      Destination address: 10.6.6.6, VC ID: 300, VC status: up
        Output interface: Tu2000, imposed label stack {23 17 20}---- 20 is the VC label assigned by R6
        Preferred path: Tunnel2000,  active
        Default path: ready
        Next hop: point2point
      Create time: 00:15:48, last status change time: 00:15:38
        Last label FSM state change time: 00:15:38
      Signaling protocol: LDP, peer 10.6.6.6:0 up
        Targeted Hello: 10.1.1.1(LDP Id) -> 10.6.6.6, LDP is UP
        Graceful restart: not configured and not enabled
        Non stop routing: not configured and not enabled
        Status TLV support (local/remote)   : enabled/supported
          LDP route watch                   : enabled
          Label/status state machine        : established, LruRru
          Last local dataplane   status rcvd: No fault
          Last BFD dataplane     status rcvd: Not sent
          Last BFD peer monitor  status rcvd: No fault
          Last local AC  circuit status rcvd: No fault
          Last local AC  circuit status sent: No fault
          Last local PW i/f circ status rcvd: No fault
          Last local LDP TLV     status sent: No fault
          Last remote LDP TLV    status rcvd: No fault
          Last remote LDP ADJ    status rcvd: No fault
        MPLS VC labels: local 2032, remote 20 
        Group ID: local 20, remote 25
        MTU: local 1500, remote 1500
        Remote interface description: 
      Sequencing: receive disabled, send disabled
      Control Word: On (configured: autosense)
      SSO Descriptor: 10.6.6.6/300, local label: 2032
      Dataplane:
        SSM segment/switch IDs: 10198/6097 (used), PWID: 1001
      VC statistics:
        transit packet totals: receive 0, send 0
        transit byte totals:   receive 0, send 0
        transit packet drops:  receive 0, seq error 0, send 0
    
    
  3. sh l2vpn atom preferred-path

    
    Device#  sh l2vpn atom preferred-path 
    Tunnel interface    Bandwidth Tot/Avail/Resv         Peer ID         VC ID
    -------------------       --------------------------------          ---------------     ----------
    Tunnel2000                                                             10.6.6.6        300       
    !
    end
    
  4. sh l2vpn atom vc

    
    Device# sh l2vpn atom vc
    Interface Peer ID         VC ID      Type   Name                     Status
    --------- ---------------      ----------     ------ ------------------------ ----------
    pw4243    10.6.6.6        300        p2p    foobar                        UP  
    !
    end
    
  5. sh mpl traffic-eng tun tun 2000

    
    Device# sh mpl traffic-eng tun tun 2000
    Name: R1_t2000                 (Tunnel2000) Destination: 10.6.6.6 Ifhandle: 0x7EE (auto-tunnel for atom)
      Status:
        Admin: up         Oper: up     Path: valid       Signalling: connected
        path option 1, (SEGMENT-ROUTING) (PCE) type dynamic (Basis for Setup, path weight 30)
      Config Parameters:
        Bandwidth: 0        kbps (Global)  Priority: 7  7   Affinity: 0x0/0xFFFF
        Metric Type: TE (interface)
        Path Selection:
         Protection: any (default)
        Path-selection Tiebreaker:
          Global: not set   Tunnel Specific: not set   Effective: min-fill (default)
        Hop Limit: disabled
        Cost Limit: disabled
        Path-invalidation timeout: 10000 msec (default), Action: Tear
        AutoRoute: disabled LockDown: disabled Loadshare: 0 [0] bw-based
        auto-bw: disabled
        Attribute-set: L2VPNODN
        Fault-OAM: disabled, Wrap-Protection: disabled, Wrap-Capable: No
      Active Path Option Parameters:
        State: dynamic path option 1 is active
        BandwidthOverride: disabled  LockDown: disabled  Verbatim: disabled
    PCEP Info:
        Delegation state: Working: yes   Protect: no
        Delegation peer: 10.8.8.8
        Working Path Info:
          Request status: processed
          Created via PCRep message from PCE server: 10.8.8.8
          PCE metric: 30, type: TE
        Reported paths:
          Tunnel Name: Tunnel2000_w
           LSPs:
            LSP[0]:
             source 10.1.1.1, destination 10.6.6.6, tunnel ID 2000, LSP ID 4
             State: Admin up, Operation active
             Binding SID: 20
             Setup type: SR
             Bandwidth: requested 0, used 0
             LSP object:
               PLSP-ID 0x807D0, flags: D:0 S:0 R:0 A:1 O:2
             Metric type: TE, Accumulated Metric 30
             ERO:
               SID[0]: Adj, Label 19, NAI: local 10.104.1.1 remote 10.104.1.2
               SID[1]: Adj, Label 23, NAI: local 10.104.12.2 remote 10.104.12.1
               SID[2]: Adj, Label 17, NAI: local 10.106.13.1 remote 10.106.13.2
           PLSP Event History (most recent first):
             Tue Jun 20 10:04:48.514: PCRpt create LSP-ID:4, SRP-ID:0, PST:1, METRIC_TYPE:2, REQ_BW:0, USED_BW:0
             Tue Jun 20 10:04:48.511: PCRep RP-ID:9
             Tue Jun 20 10:04:48.505: PCReq RP-ID:9, LSP-ID:4, REQ_BW:0
      History:
        Tunnel:
          Time since created: 18 minutes, 26 seconds
          Time since path change: 17 minutes, 9 seconds
          Number of LSP IDs (Tun_Instances) used: 4
        Current LSP: [ID: 4]
          Uptime: 17 minutes, 9 seconds
      Tun_Instance: 4
      Segment-Routing Path Info (isis  level-2)
        Segment0[Link]: 10.104.1.1 - 10.104.1.2, Label:  19-------- will not be shown in sh mpls l2 vc output
        Segment1[Link]: 10.104.12.2 - 10.104.12.1, Label: 23
        Segment2[Link]: 10.106.13.1 - 10.106.13.2, Label: 17
    !
    end
    
    
  6. sh mpls ldp discovery

    
    Device# sh mpls ldp discovery
    Local LDP Identifier:
        10.1.1.1:0
        Discovery Sources:
        Targeted Hellos:
            10.1.1.1 -> 10.6.6.6 (ldp): active/passive, xmit/recv
                LDP Id: 10.6.6.6:0
    
  7. sh mpl ldp nei

    
    Device# sh mpl ldp nei
    Peer LDP Ident: 10.6.6.6:0; Local LDP Ident 10.1.1.1:0
            TCP connection: 10.6.6.6.38574 - 10.1.1.1.646
            State: Oper; Msgs sent/rcvd: 43/42; Downstream
            Up time: 00:19:33
            LDP discovery sources:
              Targeted Hello 10.1.1.1 -> 10.6.6.6, active, passive
            Addresses bound to peer LDP Ident:
              10.106.2.2      10.106.13.2     10.6.6.6      
    !
    
  8. sh int pseudowire 4243

    
    Device# sh int pseudowire 4243
    pseudowire4243 is up
        MTU 1500 bytes, BW not configured
        Encapsulation mpls
        Peer IP 10.6.6.6, VC ID 300
        RX    0 packets 0 bytes 0 drops
        TX    0 packets 0 bytes 0 drops
    !
    
  9. sh xconnect all

    
    Device# sh xconnect all
    Legend:    XC ST=Xconnect State  S1=Segment1 State  S2=Segment2 State
      UP=Up       DN=Down            AD=Admin Down      IA=Inactive
      SB=Standby  HS=Hot Standby     RV=Recovering      NH=No Hardware
    
    XC ST  Segment 1                                    S1 Segment 2                         S2
    ------+---------------------------------+--+---------------------------------+--
    UP pri   ac Gi0/3/1:300(Eth VLAN)        UP mpls 10.6.6.6:300                 UP