This is a follow up netlab article about EXOS ESRP simple setup configuration. The prerequisite is the EXOS ESRP simple setup. In this blog entry 2 new OSPF are added to the network topology, RS1 and RS2, OSPF configuration is added to all routers in the network topology. RS5 is only a switch, nothing is added there. OSPF configuration is added to verify how this vendor described ESRP design is behaving having fully working network topology. This is the simplest EXOS ESRP setup scenario taken from of the Extreme Networks official documentation.

Once again I want to mention this is a blind configuration, I have no experience at all with ESRP, just being curious to see this networking example and learn about EXOS ESRP configuration and operation and how quickly it converges using this example.

network topology

OSPF configuration is added to all topology routers, on top of already running and configured ESRP article from previous blog entry.

sysName ospf router-id
RS1 1.1.1.1
RS2 2.2.2.2
RS3 5.5.5.5
RS4 5.5.5.5

Network topology showing relevant IP and OSPF settings:

     1.1.1.1                                     2.2.2.2
    +-------+                                   +-------+
    |       | 12                             12 |       |
    |  RS1  |-----------------------------------|  RS2  |
    |       |                                   |       |
    +-------+                                   +-------+
     10 |                                           | 10
        |                  (OSPF)                   |
        |                                           |
        |                                           |
     5.5.5.5                                     5.5.5.5
    +-------+                                   +-------+
    |       | 3                               3 |       |
    |  RS3  +-----------------------------------+  RS4  |
    |       |                                   |       |
    +---+---+                                   +---+---+
     1  |                                           | 1
        |                 ESRP VR1                  |
        |                 10.1.2.3                  |
        |                                           |
        |                 +-------+                 |
        |                 |       |                 |
        +-----------------+  RS5  +-----------------+
                          |       |
                          +-+---+-+
                            |   |
              +-------------+   +-------------+
              | eth0                     eth0 |
          +---+---+                       +---+---+
          |       |                       |       |
          | node1 |                       | node2 |
          |       |                       |       |
          +-------+                       +-------+

Added port numbers to the network topology above to have a overview how routers are connected in case someone wants to test it by yourself.

EXOS version

EXOS version used in this netlab:

RS1.1 # show session images

Card Partition Installation Date Version Name Branch ------------------------------------------------------------------------------ Switch primary Thu Jan 16 13:06:22 UTC 2025 32.7.2.19 rescue.xos 32.7.2.19 Switch secondary Thu Jan 16 13:06:22 UTC 2025 32.7.2.19 rescue.xos 32.7.2.19

Configuration

Configuration of loopback interfaces on EXOS was not familiar, adding a loopback interface to EXOS is done in following way:

  • create vlan named lo0
  • configure IP addressing
  • enable loopback mode on interface

For RS1/RS2 the full configuration is exaplained below. RS3 and RS3 has added OSPF only to establish OSPF neighours. RS3 and RS4 have no loopback interfaces since it does not anything useful having loopback addresses on RS3 and RS4, it would only clutter the example.

RS1

Configuration steps for setting up RS1 router:

  • Remove ports 10 and 12 from the Default VLAN
  • Create vlan vlan12 with a 802.1Q tag of 12
  • Create vlan vlan13 with a 802.1Q tag of 13
  • Configure VLAN 12 with an IP address
  • Configure VLAN 13 with an IP address
  • Add port 12 to VLAN 12 untagged
  • Add port 10 to VLAN 13 untagged
  • Enable ipforwarding for VLAN vlan10 and vlan13
  • create int lo0 vlan, without VLAN tag
  • Enable ipforwarding for VLAN lo0
  • configure OSPF

Configure commands:

#
# RS1
#
configure snmp sysName RS1
#
configure vlan default delete port 10,12
create vlan vlan12 tag 12
create vlan vlan13 tag 13
configure vlan vlan12 ipaddress 10.0.0.0/31
configure vlan vlan13 ipaddress 10.0.0.2/31
configure vlan vlan12 add port 12 untagged
configure vlan vlan13 add port 10 untagged
enable ipforwarding vlan vlan12
enable ipforwarding vlan vlan13
#
create vlan lo0
configure vlan lo0 ipaddress 1.1.1.1/32
enable ipforwarding vlan lo0
enable loopback-mode vlan lo0
#
configure ospf routerid 1.1.1.1
configure ospf add vlan vlan12 area 0.0.0.0 link-type point-to-point
configure ospf add vlan vlan13 area 0.0.0.0 link-type point-to-point
configure ospf add vlan lo0 area 0.0.0.0 passive
enable ospf
#
save
y

RS2

Same configuration commands, as for RS1 only wit

#
# RS2
#
configure snmp sysname RS2
#
configure vlan default delete port 10,12
create vlan vlan12 tag 12
create vlan vlan24 tag 24
configure vlan vlan12 ipaddress 10.0.0.1/31
configure vlan vlan24 ipaddress 10.0.0.4/31
configure vlan vlan12 add port 12 untagged
configure vlan vlan24 add port 10 untagged
enable ipforwarding vlan vlan12
enable ipforwarding vlan vlan24
#
create vlan lo0
configure vlan lo0 ipaddress 2.2.2.2/32
enable ipforwarding vlan lo0
enable loopback-mode vlan lo0
#
configure ospf routerid 2.2.2.2
configure ospf add vlan vlan12 area 0.0.0.0 link-type point-to-point
configure ospf add vlan vlan24 area 0.0.0.0 link-type point-to-point
configure ospf add vlan lo0 area 0.0.0.0 passive
enable ospf
#
save
y

RS3

Adding OSPF configuration to ESRP router R3. R3 and R4 have identical OSPF router-id set here 5.5.5.5. No loopback interface is added here.

Adding OSPF configuration to ESRP router R3:

  • Remove ports 10 from the Default VLAN
  • Create VLAN TAG 13
  • Configure VLAN 13 IP addressing
  • Add port 10 to vlan13 untagged
  • Enable ipforwarding on vlan13

Configuration commands:

#
# RS3
#
configure vlan default delete port 10
create vlan vlan13 tag 13
configure vlan vlan13 ipaddress 10.0.0.3/31
configure vlan vlan13 add port 10 untagged
enable ipforwarding vlan vlan13
#
disable ospf
configure ospf routerid 5.5.5.5
configure ospf add vlan vlan13 area 0.0.0.0 link-type point-to-point
enable ospf
#
save
y

RS4

Configuration commands for R4:

#
# RS4
#
configure vlan default delete port 10
create vlan vlan24 tag 24
configure vlan vlan24 ipaddress 10.0.0.5/31
configure vlan vlan24 add port 10 untagged
enable ipforwarding vlan vlan24
#
disable ospf
configure ospf routerid 5.5.5.5
configure ospf add vlan vlan24 area 0.0.0.0 link-type point-to-point
enable ospf
#
save
y

node1

Using 2 linux nodes in this example for testing, following IP addressing is used:

Configuration commands

ip addr add 10.1.2.11/24 dev eth0
ip route add default via 10.1.2.3

node2

Configuration commands:

ip addr add 10.1.2.12/24 dev eth0
ip route add default via 10.1.2.3

Full router configurations

The R100 - 10.255.255.100 - (FRRouting) is connected to port1 on router RS2, using SVI/vlan named vlan255:

Verify OSPF

When the configuration is finished, and the routing protocol converged, inspect the OSPF state using following commands:

show ospf neighbor

Show the ip routing table:

show iproute

Verify routing table output of RS1 and RS2 and check the times shown how long IP prefixes are available in the routing table. Verify the times of the advertised prefix 10.1.2.0/24:

The 10.255.255.100 is a directly connected OSPF FRR appliance, this FRR router will be used further for the routing table inspection and the events that it receives. FRR is not depicted in the network topology above, it is directly connected to RS2, and it has only a monitoring function.

RS1

OSPF neighbours:

RS1.4 # show ospf neighbor 
Neighbor ID     Pri State              Up/Dead Time             Address         Interface
          BFD Session State 
==========================================================================================
2.2.2.2           1 FULL      /DROTHER 00:01:17:12/00:00:00:02  10.0.0.1        vlan12    
          None              

5.5.5.5           1 FULL      /DROTHER 00:01:20:56/00:00:00:06  10.0.0.3        vlan13    
          None              

Total number of neighbors: 2 (All neighbors in Full state)

The routing table of router RS1

RS1.8 # show iproute 
Ori  Destination        Gateway         Mtr  Flags         VLAN       Duration
#d   1.1.1.1/32         1.1.1.1         1    U------um--f- lo0        0d:1h:27m:55s
#oa  2.2.2.2/32         10.0.0.1        15   UG-D---um--f- vlan12     0d:1h:18m:16s
#d   10.0.0.0/31        10.0.0.0        1    U------um--f- vlan12     0d:1h:28m:18s
#d   10.0.0.2/31        10.0.0.2        1    U------um--f- vlan13     0d:1h:28m:14s
#oa  10.0.0.4/31        10.0.0.1        10   UG-D---um--f- vlan12     0d:1h:18m:16s
#oa  10.0.0.6/31        10.0.0.1        10   UG-D---um--f- vlan12     0d:1h:18m:16s
#oa  10.1.2.0/24        10.0.0.3        10   UG-D---um--f- vlan13     0d:0h:0m:3s
#oa  10.255.255.100/32  10.0.0.1        10   UG-D---um--f- vlan12     0d:1h:18m:4s

RS2

OSPF neighbor state, check the 10.255.255.100 is connected to SVI named vlan255.

RS2.2 # show ospf neighbor 
Neighbor ID     Pri State              Up/Dead Time             Address         Interface
          BFD Session State 
==========================================================================================
1.1.1.1           1 FULL      /DROTHER 00:01:20:05/00:00:00:02  10.0.0.0        vlan12    
          None              

5.5.5.5           1 FULL      /DROTHER 00:01:20:05/00:00:00:05  10.0.0.5        vlan24    
          None              

10.255.255.100    1 FULL      /DROTHER 00:01:19:58/00:00:00:08  10.0.0.7        vlan255   
          None              

Total number of neighbors: 3 (All neighbors in Full state)

IP routing table of RS2:

RS2.3 # show iproute 
Ori  Destination        Gateway         Mtr  Flags         VLAN       Duration
#oa  1.1.1.1/32         10.0.0.0        15   UG-D---um--f- vlan12     0d:1h:20m:21s
#d   2.2.2.2/32         2.2.2.2         1    U------um--f- lo0        0d:1h:28m:23s
#d   10.0.0.0/31        10.0.0.1        1    U------um--f- vlan12     0d:1h:28m:29s
#oa  10.0.0.2/31        10.0.0.0        10   UG-D---um--f- vlan12     0d:1h:20m:21s
#d   10.0.0.4/31        10.0.0.4        1    U------um--f- vlan24     0d:1h:28m:29s
#d   10.0.0.6/31        10.0.0.6        1    U------um--f- vlan255    0d:1h:20m:40s
#oa  10.1.2.0/24        10.0.0.0        15   UG-D---um--f- vlan12     0d:0h:0m:4s
#oa  10.255.255.100/32  10.0.0.7        5    UG-D---um--f- vlan255    0d:1h:20m:5s

RS3

OSPF neighbour output, this router has only 1 OSPF neighbour, R1:

RS3.4 # show ospf neighbor 
Neighbor ID     Pri State              Up/Dead Time             Address         Interface
          BFD Session State 
==========================================================================================
1.1.1.1           1 FULL      /DROTHER 00:01:27:34/00:00:00:07  10.0.0.2        vlan13    
          None              

Total number of neighbors: 1 (All neighbors in Full state)

The routing table of RS3, verify that hash # attached to the prefix 10.1.2.0/24

RS3.5 # show iproute 
Ori  Destination        Gateway         Mtr  Flags         VLAN       Duration
#oa  1.1.1.1/32         10.0.0.2        15   UG-D---um--f- vlan13     0d:1h:24m:43s
#oa  2.2.2.2/32         10.0.0.2        20   UG-D---um--f- vlan13     0d:1h:20m:58s
#oa  10.0.0.0/31        10.0.0.2        10   UG-D---um--f- vlan13     0d:1h:24m:43s
#d   10.0.0.2/31        10.0.0.3        1    U------um--f- vlan13     0d:1h:27m:41s
#oa  10.0.0.4/31        10.0.0.2        15   UG-D---um--f- vlan13     0d:1h:20m:58s
#oa  10.0.0.6/31        10.0.0.2        15   UG-D---um--f- vlan13     0d:1h:20m:58s
#d   10.1.2.0/24        10.1.2.3        1    U------um--f- sales      0d:1h:27m:41s
#oa  10.255.255.100/32  10.0.0.2        15   UG-D---um--f- vlan13     0d:1h:20m:45s

The hash # indicates this is currently the ESRP ACTIVE router.

(#) Preferred unicast and multicast route.

RS4

OSPF neighbour output, this router has also only 1 OSPF neighbour, R2:

RS4.1 # show ospf neighbor 
Neighbor ID     Pri State              Up/Dead Time             Address         Interface
          BFD Session State 
==========================================================================================
2.2.2.2           1 FULL      /DROTHER 00:03:09:23/00:00:00:02  10.0.0.4        vlan24    
          None           

Total number of neighbors: 1 (All neighbors in Full state)

Notice that here the # is lacking in the output:

RS4.2 # show iproute 
Ori  Destination        Gateway         Mtr  Flags         VLAN       Duration
#oa  1.1.1.1/32         10.0.0.4        20   UG-D---um--f- vlan24     0d:3h:9m:27s
#oa  2.2.2.2/32         10.0.0.4        15   UG-D---um--f- vlan24     0d:3h:9m:27s
#oa  10.0.0.0/31        10.0.0.4        10   UG-D---um--f- vlan24     0d:3h:9m:27s
#oa  10.0.0.2/31        10.0.0.4        15   UG-D---um--f- vlan24     0d:3h:9m:27s
#d   10.0.0.4/31        10.0.0.5        1    U------um--f- vlan24     0d:3h:9m:41s
#oa  10.0.0.6/31        10.0.0.4        10   UG-D---um--f- vlan24     0d:3h:9m:27s
 d   10.1.2.0/24        10.1.2.3        1    -------um---- sales      0d:3h:9m:41s
#oa  10.255.255.100/32  10.0.0.4        10   UG-D---um--f- vlan24     0d:3h:9m:27s

RS4 is here the ESRP Slave router, it is lacking the # attached to the highly available prefix. RS4 is the ESRP PASSIVE router.

Result

Testing when all routers are working on a converged network. Nothing is being shut down or powered off. Just all components running all the time, stable state. Here the results from the linux nodes pinging the RS1 and RS2 routers.

node1

This is the reachability for one of the backbone routers 1.1.1.1 while ESRP is converged and stable:

user % ping 1.1.1.1 -c 100

... --- 1.1.1.1 ping statistics --- 100 packets transmitted, 61 received, 39% packet loss, time 100151ms rtt min/avg/max/mdev = 0.656/2.541/3.913/1.113 ms

Big packet loss. 39% packets lost out of 100 sent

node2

This is the reachabilty of one of the backbone routers 2.2.2.2:

user % ping 2.2.2.2 -c 100

... --- 2.2.2.2 ping statistics --- 100 packets transmitted, 19 received, 81% packet loss, time 101074ms rtt min/avg/max/mdev = 1.059/1.886/3.911/0.972 ms

Big packet loss, targets are not reachable most of the time on a stable network.

RS1

Command output on RS1, showing the same, the IP prefix is oscillating, flapping:

RS1.2 # show iproute 10.1.2.0/24 | grep number.of.routes
Total number of routes = 0
RS1.2 # show iproute 10.1.2.0/24 | grep number.of.routes
Total number of routes = 1
RS1.2 # show iproute 10.1.2.0/24 | grep number.of.routes
Total number of routes = 0
RS1.2 # show iproute 10.1.2.0/24 | grep number.of.routes
Total number of routes = 1

In the command output below you can observe how long the prefix is available in the routing table, not longer than 5 seconds, then it disappears again:

RS1.14 # show iproute | grep "#oa  10.1.2.0/24"
RS1.14 # show iproute | grep "#oa  10.1.2.0/24"
#oa  10.1.2.0/24        10.0.0.3        10   UG-D---um--f- vlan13     0d:0h:0m:0s
RS1.14 # show iproute | grep "#oa  10.1.2.0/24"
#oa  10.1.2.0/24        10.0.0.3        10   UG-D---um--f- vlan13     0d:0h:0m:3s
R1.14 # show iproute | grep "#oa  10.1.2.0/24"

It is available ~5 seconds, then removed from the routing table.

RS2

The prefix is frequently added and removed from the routing tables, it is flapping all of the time. Output from RS2 showing exactly the same:

RS2.4 # show iproute 10.1.2.0/24 | grep number.of.routes
Total number of routes = 0
RS2.5 # show iproute 10.1.2.0/24 | grep number.of.routes
Total number of routes = 1
RS2.5 # show iproute 10.1.2.0/24 | grep number.of.routes
Total number of routes = 0
RS2.5 # show iproute 10.1.2.0/24 | grep number.of.routes
Total number of routes = 1

FRR events

I have added a third FRR appliance and configured as one of OSPF backbone routers. This is the OSPF router having the router-id 10.255.255.100.

The Using the ip monitor linux CLI command verify the events to the 10.1.2.0/24 IP prefix:

user % ip monitor

Deleted 10.1.2.0/24 nhid 12 via 10.0.0.6 dev eth0 proto ospf metric 20 10.1.2.0/24 nhid 12 via 10.0.0.6 dev eth0 proto ospf metric 20 Deleted 10.1.2.0/24 nhid 12 via 10.0.0.6 dev eth0 proto ospf metric 20 10.1.2.0/24 nhid 12 via 10.0.0.6 dev eth0 proto ospf metric 20 Deleted 10.1.2.0/24 nhid 12 via 10.0.0.6 dev eth0 proto ospf metric 20 10.1.2.0/24 nhid 12 via 10.0.0.6 dev eth0 proto ospf metric 20 Deleted 10.1.2.0/24 nhid 12 via 10.0.0.6 dev eth0 proto ospf metric 20

ICMP test from RS1

Now sending ICMP packets to a node in the 10.1.2.0/24 network from router RS1

RS1.1 # ping 10.1.2.11

Ping(ICMP) 10.1.2.11: 4 packets, 8 data bytes, interval 1 second(s). 16 bytes from 10.1.2.11: icmp_seq=0 ttl=63 time=3.938 ms Packet transmit error; Destination unreachable Packet transmit error; Destination unreachable Packet transmit error; Destination unreachable --- 10.1.2.11 ping statistics --- 1 packets transmitted, 1 packets received, 0% loss round-trip min/avg/max = 3/3/3 ms

Output stats do not display packet loss, the target is not reachable, the router reports Packet trasmit error. While sending 5 packets only 1 packet successfully transmitted and only 1 received. Other ICMP packets have not reached the IP target dues to transmit error.

Summary

The IP prefix 10.1.2.0/24 is oscillating in the backbone every ~5 seconds when adding OSPF on top of the example network topology. And that only to using identical OSPF routerid on both ESRP routers. RS3 and RS4. The OSPF backbone area should to be stable all of the time. Not to mention that is only the IP view, layer 3. I did not look deep enough what is happening with Spanning Tree in this example, most probably nothing, but this add another level of complexity to the example. It gets even more ridiculous when adding more prefixes on both ESRP routers.

The ESRP topology above will need some correcting steps and I know I have NOT have missed one single step in this configuration. The official documentation does not mention anything about the OSPF state when ESRP is active, when you have to configure the same OSPF routerid 5.5.5.5, and why it is a important step in this network topology. The reasons are unknown to me.

I have notified the EXOS support on their documentation website but as a not a paying customer chances are none they actually reply. Setting OSPF router-id to identical value generates a lot of link advertise events when and makes it failing. Especially when many links are connected this way, you sure do not want to operate this in your production network.

In a follow up blog entry I will try to make this ESPR design work by correcting few settings, adding a new protocol and removing links. I am not sure how it is gonna work out, but it is worth a try out.

See also

References