Inter-Area MPLS RSVP-TE interop with IOS and Junos

A big advantage of using a single IGP area is the ability to use RSVP-TE. RSVP-TE uses type 10 OSPF LSAs which have an area-wide scope. This would mean that in order to have an end-to-end RSVP-TE singnalled LSP you would need all your routers in the same area.

This is not 100% true.

I’m a firm believer in a single area in an ISP network. However there may come a time when you simple have to have an LSP span multiple areas. I’ll show how this is easily done on Junos and IOS.

RFC 4105 has all the technical details about requirements for this.

Let’s configure the following:

JR1 and JR2 are Junos routers of course.

Config

Cisco P routers

Noting too complicated here. All you need to do is ensure that MPLS traffic-eng is enabled globally and on the transit interfaces. You also need to ensure the correct areas are enabled for TE in OSPF. This is R2’s relevant config:

mpls traffic-eng tunnels
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
 ip ospf 1 area 0
!
interface FastEthernet0/0
 ip address 10.0.23.2 255.255.255.0
 ip ospf 1 area 0
 mpls traffic-eng tunnels
!
interface FastEthernet1/0
 ip address 10.0.12.2 255.255.255.0
 ip ospf 1 area 12
 mpls traffic-eng tunnels
!
router ospf 1
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng area 0
 mpls traffic-eng area 12

Juniper P routers

With Junos you need to enable MPLS processing on the transit interfaces, as well as enable RSVP, OSPF, and MPLS on the transit interfaces under the protocols stanza. This is JR1:

[email protected]> show configuration interfaces ge-0/0/1.504
vlan-id 504;
family inet {
    address 10.0.16.1/24;
}
family mpls;

[email protected]> show configuration interfaces ge-0/0/1.503
vlan-id 503;
family inet {
    address 10.0.21.1/24;
}
family mpls;

[email protected]> show configuration protocols
rsvp {
    interface ge-0/0/1.503;
    interface ge-0/0/1.504;
}
mpls {
    expand-loose-hop;
    interface ge-0/0/1.503;
    interface ge-0/0/1.504;
}
ospf {
    traffic-engineering;
    area 0.0.0.124 {
        interface ge-0/0/1.503;
        interface ge-0/0/1.504;
        interface lo0.11;
    }
}

For inter-AS TE to work on Junos, you must configure expand-loose-hop under the MPLS stanza on your P routers.

Cisco PE routers

With Inter-AS TE, you need to ensure that your loose-hops point to devices that has information in the next area. This means ABRs. I’ll set up an explicit path that gets to R2, then R4, then off to JR2. That path will then be referred to in the LSP set up:

ip explicit-path name TO-JR2 enable
 next-address loose 2.2.2.2
 next-address loose 4.4.4.4
 next-address loose 200.200.200.200
!
interface Tunnel200
 ip unnumbered Loopback0
 tunnel mode mpls traffic-eng
 tunnel destination 200.200.200.200
 tunnel mpls traffic-eng autoroute destination
 tunnel mpls traffic-eng path-option 5 explicit name TO-JR2

tunnel mpls traffic-eng autoroute destination adds a static route to 200.200.200.200 via the tunnel once it’s up

Juniper PE routers

Junos is almost the same. One difference being that you have to state to the OS that this LSP will traverse multiple areas:

[email protected]> show configuration protocols mpls
label-switched-path TO-R1 {
    from 200.200.200.200;
    to 1.1.1.1;
    inter-domain;
    primary TO-R1;
}
path TO-R1 {
    4.4.4.4 loose;
    2.2.2.2 loose;
    1.1.1.1 loose;
}
interface ge-0/0/1.503;

Note the inter-domain config under the LSP config

Verification

Let’s check the LSP from R1 to JR2:

R1#sh mpls traffic-eng tunnels tunnel 200

Name: R1_t200                             (Tunnel200) Destination: 200.200.200.200
  Status:
    Admin: up         Oper: up     Path: valid       Signalling: connected
    path option 5, type explicit TO-JR2 (Basis for Setup, path weight 1)

  Config Parameters:
    Bandwidth: 0        kbps (Global)  Priority: 7  7   Affinity: 0x0/0xFFFF
    Metric Type: TE (default)
    AutoRoute announce: enabled  LockDown: disabled Loadshare: 0        bw-based
    auto-bw: disabled
  Active Path Option Parameters:
    State: explicit path option 5 is active
    BandwidthOverride: disabled  LockDown: disabled  Verbatim: disabled


  InLabel  :  -
  OutLabel : FastEthernet0/0, 16
  Next Hop : 10.0.12.2
  RSVP Signalling Info:
       Src 1.1.1.1, Dst 200.200.200.200, Tun_Id 200, Tun_Instance 7
    RSVP Path Info:
      My Address: 10.0.12.1
      Explicit Route: 10.0.12.2 2.2.2.2 4.4.4.4* 200.200.200.200*
      Record   Route:
      Tspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
    RSVP Resv Info:
      Record   Route:  10.0.23.2 10.0.34.3 10.0.16.6 10.0.16.1
                       10.0.21.2
      Fspec: ave rate=0 kbits, burst=1000 bytes, peak rate=0 kbits
  Shortest Unconstrained Path Info:
    Path Weight: UNKNOWN
    Explicit Route:  UNKNOWN
  History:
    Tunnel:
      Time since created: 12 minutes, 57 seconds
      Time since path change: 12 minutes, 12 seconds
      Number of LSP IDs (Tun_Instances) used: 7
    Current LSP: [ID: 7]
      Uptime: 12 minutes, 12 seconds

All looks good. Let’s run a traceroute to JR2:

R1#traceroute 200.200.200.200

Type escape sequence to abort.
Tracing the route to 200.200.200.200

  1 10.0.12.2 [MPLS: Label 16 Exp 0] 52 msec 8 msec 16 msec
  2 10.0.23.3 [MPLS: Label 16 Exp 0] 20 msec 8 msec 16 msec
  3 10.0.34.4 [MPLS: Label 16 Exp 0] 12 msec 8 msec 12 msec
  4 10.0.16.1 [MPLS: Label 299920 Exp 0] 12 msec 12 msec 24 msec
  5 200.200.200.200 16 msec 24 msec 44 msec

Looks good from there. Let’s check JR2:

[email protected]> show mpls lsp ingress detail
Ingress LSP: 1 sessions

1.1.1.1
  From: 200.200.200.200, State: Up, ActiveRoute: 0, LSPname: TO-R1
  ActivePath: TO-R1 (primary)
  PathDomain: Inter-domain
  LSPtype: Static Configured
  LoadBalance: Random
  Encoding type: Packet, Switching type: Packet, GPID: IPv4
 *Primary   TO-R1            State: Up
    Priorities: 7 0
    SmartOptimizeTimer: 180
    Computed ERO (S [L] denotes strict [loose] hops): (CSPF metric: 2)
 10.0.21.1 S 10.0.16.6 S 2.2.2.2 L 1.1.1.1 L
    Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W 8=Node 10=SoftPreempt 20=Node-ID):
          10.0.21.1 10.0.34.4 10.0.23.3 10.0.12.2 10.0.12.1
Total 1 displayed, Up 1, Down 0

In Junos, Labelled end point are only used for BGP hops by default, so a traceroute won’t show it going through as labelled traffic. However a show route does show that 1.1.1.1 comes up as an RSVP route which will be used for BGP next-hops:

[email protected]> show route 1.1.1.1

inet.0: 22 destinations, 22 routes (22 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1.1.1.1/32         *[OSPF/10] 00:17:23, metric 6
                    > to 10.0.21.1 via ge-0/0/1.503

inet.3: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1.1.1.1/32         *[RSVP/7/1] 00:17:02, metric 6
                    > to 10.0.21.1 via ge-0/0/1.503, label-switched-path TO-R1

Notes

This also works with IS-IS. Instead of loose hopping to ABR routers, you simply loose hop to your L1/L2 boundary router.

© 2009-2020 Darren O'Connor All Rights Reserved -- Copyright notice by Blog Copyright