This knowledge base has moved to the documentation site. Please visit the knowledge base here for the most up to date content. This site is no longer maintained.

Routing Preferences

Follow

Route selection on Cumulus Linux is the same or similar as many other network OS vendors and distributions of linux.

Route Selection

In case of overlapping or equal cost routes, the three following rules are followed within Cumulus Linux to decide which route gets installed:

  1. Prefix-Length: The longest prefix match is always the most preferred regardless of what routing protocol it is learned from. This is also referred to as the most specific route or route specificity.
  2. Metric: The lower metric or cost is preferred within only the same routing protocol. That is, even if a route in OSPF with a better metric appears eBGP will always beat it unless OSPF gets a more specific route (see rule 1).
  3. Administrative distance: Where a lower distance is preferred (only valid between different routing protocols).

See Wikipedia for more information.

Routing Protocol Administrative Distance
Kernel Route 0
Directly Attached Network 0
Static Route 1
External BGP 20
OSPF  110
Internal BGP 200

Frequently Asked Questions

What if I try to add two kernel routes with the same prefix-length?

It won't let it be added and gives back the following error:

root@sw:~# ip route add 0.0.0.0/0 via 20.13.1.3
RTNETLINK answers: File exists
root@sw:~#

What admin distance is DHCP given?

A DHCP on Cumulus Linux is considered a kernel route and installed with an admin distance of 0.

How do I see where a route will go? (i.e. show ip route on Cumulus Linux)

Run the Linux command ip route get x.x.x.x to figure out where a route will go based on your route table.

cumulus@switch:~$ ip route get 3.3.3.3
3.3.3.3 via 192.168.100.1 dev eth0  src 192.168.100.14
    cache
cumulus@switch:~$

What if I want to utilize a DHCP default route for management and a default route with BGP or my IGP?

Utilize namespaces by following this KB article.

cumulus@switch:mgmt:~:$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         10.0.1.1        0.0.0.0         UG        0 0          0 eth0
10.0.1.0        *               255.255.255.0   U         0 0          0 eth0
cumulus@switch:mgmt:~:$ sudo default-ns-set
cumulus@switch:default:~:$
cumulus@switch:default:~:$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

default         5.5.5.6         0.0.0.0         UG        0 0          0 swp1
5.5.5.0         *               255.255.255.0   U         0 0          0 swp1
cumulus@switch:default:~:$
cumulus@switch:default:~:$ ip route show
default via 5.5.5.6 dev swp1  proto zebra  metric 20
5.5.5.0/24 dev swp1  proto kernel  scope link  src 5.5.5.5
cumulus@switch:default:~:$

As you can see above the management namespace (eth0) is getting a default via DHCP and the default namespace (front panel ports) is getting a default of 5.5.5.6 which is via BGP in this particular case.

I don't want my static route to have an admin distance of 0, its messing the configuration desired.

Utilize a floating static route in Quagga by following this KB article.

See Also

Comments

This support portal has moved

Cumulus Networks is now part of the NVIDIA Networking Business Unit! The NVIDIA Cumulus Global Support Services (GSS) team has merged its operations with the NVIDIA Mellanox support services team.

You can access NVIDIA Cumulus support content from the Mellanox support portal.

You open and update new cases on the Mellanox support portal. Any previous cases that have been closed have been migrated to the Mellanox support portal.

Cases that are still open on the Cumulus portal will continue to be managed on the Cumulus portal. Once these cases close, they will be moved to the Mellanox support portal.

Powered by Zendesk