Thursday, November 17, 2016

CCIE SPv4 - MPLS - MPLS Timers

Software versions:
IOS XE Version 15.5
IOS XR Version 5.3.0


In this post we will take our existing MPLS rollout from the previous post, I went ahead and enabled MPLS on every router in the AS. We will focus on the different timers that MPLS uses for operations. It goes without saying this will be on both IOS and XR, but for clarity, it will. 


MPLS uses hello and hold down timers like the IGPs do, by default it's 5 seconds for hellos and 15 seconds for hold down by default. There is also a proposed local/peer timer 15/15 this can be manipulated as well. 


The topology we will use:

We will continue to look at R1 and XR1, for now anyways. First lets look at the default values and manipulate them from there.

R1
R1#sh mpls ldp discovery detail
 Local LDP Identifier:
    192.168.1.1:0
    Discovery Sources:
    Interfaces:
        GigabitEthernet1.111 (ldp): xmit/recv
            Enabled: Interface config, IGP config;
            Hello interval: 5000 ms; Transport IP addr: 192.168.1.1
            LDP Id: 192.168.1.11:0
              Src IP addr: 10.1.11.11; Transport IP addr: 192.168.1.11
              Hold time: 15 sec; Proposed local/peer: 15/15 sec
              Reachable via 192.168.1.11/32
              Password: not required, none, in use
            Clients: IPv4, mLDP

XR1
RP/0/0/CPU0:XR1#sh mpls ldp discovery detail
Thu Nov 17 23:46:32.793 UTC

Local LDP Identifier: 192.168.1.11:0
Discovery Sources:
  Interfaces:
    GigabitEthernet0/0/0/0.111 (0x800) : xmit/recv
      VRF: 'default' (0x60000000)
      Source address: 10.1.11.11; Transport address: 192.168.1.11
      Hello interval: 5 sec (due in 2.9 sec)
      Quick-start: Enabled
      LDP Id: 192.168.1.1:0
          Source address: 10.1.11.1; Transport address: 192.168.1.1
          Hold time: 15 sec (local:15 sec, peer:15 sec)
                     (expiring in 14.2 sec)


As you can see in bold highlight that the hello is actually in milliseconds at 5000ms and the hold time is listed in seconds at 15. Proposed local/peer is 15/15.
IOS XR gives you the output of how much time is left, closer to what IGP advertises like OSPFv2. 

Let's go ahead on both IOS and XR, reduce the hello and hold time by 3 seconds each and see the output.

IOS
mpls ldp discovery hello interval 3
mpls ldp discovery hello holdtime 12

XR
mpls ldp
 discovery
  hello holdtime 12
  hello interval 3

The verification for the change:
R1#show mpls ldp discovery detail
 Local LDP Identifier:
    192.168.1.1:0
    Discovery Sources:
    Interfaces:
        GigabitEthernet1.111 (ldp): xmit/recv
            Enabled: Interface config, IGP config;
            Hello interval: 3000 ms; Transport IP addr: 192.168.1.1
            LDP Id: 192.168.1.11:0
              Src IP addr: 10.1.11.11; Transport IP addr: 192.168.1.11
              Hold time: 12 sec; Proposed local/peer: 12/12 sec
              Reachable via 192.168.1.11/32
              Password: not required, none, in use
            Clients: IPv4, mLDP

RP/0/0/CPU0:XR1#sh mpls ldp discovery detail
Thu Nov 17 23:50:15.598 UTC

Local LDP Identifier: 192.168.1.11:0
Discovery Sources:
  Interfaces:
    GigabitEthernet0/0/0/0.111 (0x800) : xmit/recv
      VRF: 'default' (0x60000000)
      Source address: 10.1.11.11; Transport address: 192.168.1.11
      Hello interval: 3 sec (due in 1.4 sec)
      Quick-start: Enabled
      LDP Id: 192.168.1.1:0
          Source address: 10.1.11.1; Transport address: 192.168.1.1
          Hold time: 12 sec (local:12 sec, peer:12 sec)
                     (expiring in 11.2 sec)

Now let's go back and remove the modification to XR1.
XR
RP/0/0/CPU0:XR1#sh mpls ldp discovery detail
Thu Nov 17 23:51:48.131 UTC

Local LDP Identifier: 192.168.1.11:0
Discovery Sources:
  Interfaces:
    GigabitEthernet0/0/0/0.111 (0x800) : xmit/recv
      VRF: 'default' (0x60000000)
      Source address: 10.1.11.11; Transport address: 192.168.1.11
      Hello interval: 4 sec (due in 2.6 sec)
      Quick-start: Enabled
      LDP Id: 192.168.1.1:0
          Source address: 10.1.11.1; Transport address: 192.168.1.1
          Hold time: 12 sec (local:15 sec, peer:12 sec)
                     (expiring in 11 sec)

What ends up happening here is that the routers will always agree on the discovery hold time, XR1s hello interval changed automatically, but we didn't make that change. The LDP discovery hello interval must be at least 3 times as often as the hold time. XR1 had to reduce its hold time to 12 to accommodate this. The original 5 second hello was too slow.

There is also a globally configured holdtime. This is set to 60 seconds as a keepalive timer and 180 second holdtime. 

R1
R1#show mpls ldp neighbor 192.168.1.11 detail | in time
        Up time: 1d00h; UID: 20; Peer Id 0
            holdtime: 12000 ms, hello interval: 3000 ms
        Peer holdtime: 180000 ms; KA interval: 60000 ms; Peer state: estab

On XR1, we'll configure this to be faster, 120 second peer hold time. 
mpls ldp
 session holdtime 120

Problem with this configuration is the session is already established and needs to be flapped to use the new values

RP/0/0/CPU0:XR1#show mpls ldp neighbor 192.168.1.1 detail | in time
Fri Nov 18 00:04:51.878 UTC
  Session Holdtime: 120 sec
  Up time: 00:00:11
  Peer holdtime: 180 sec; KA interval: 40 sec; Peer state: Estab

Notice that only the session holdtime and KA interval timers changed. 
Also notice that R1s timers change.
R1#show mpls ldp neighbor 192.168.1.11 detail | in time
        Up time: 00:04:17; UID: 26; Peer Id 3
            holdtime: 12000 ms, hello interval: 3000 ms
        Peer holdtime: 120000 ms; KA interval: 40000 ms; Peer state: estab


There is one more timer that we can take a look at. The backoff timer, think of this as a way for MPLS to prevent another LSR from constantly being signaled to peer. You may have an LSR that has an older version of code that or other configured values that won't be compatible with the local LSR. This prevents a constant peering session from being initiated. By default these values are 15 and 120, the initial backoff timer is 15 seconds, the initial failure and the longest timer is 120 seconds.

IOS
R1(config)#mpls ldp backoff 5 60

XR
mpls ldp
 session backoff 5 60


R1#show mpls ldp backoff all
LDP initial/maximum backoff: 5/60 sec

RP/0/0/CPU0:XR1#show mpls ldp backoff

  Backoff Time:
    Initial:5 sec, Maximum:60 sec

  Backoff Table:
    No Entry


Thanks for stopping by!
Rob Riker, CCIE #50693



No comments:

Post a Comment