Cumulus Linux 42
Cumulus Linux 42
2 User Guide
NVIDIA® Cumulus Linux is the first full-featured Linux operating system for
the networking industry. The Debian Buster-based, networking-focused
you started.
Cumulus Linux 4.2 includes the NetQ agent and CLI, which is installed by
default on the Cumulus Linux switch. Use NetQ to monitor and manage
your data center network infrastructure and operational health. Refer to the
NetQ documentation for details.
For a list of the new features in this release, see What's New. For bug fixes
and known issues present in this release, refer to the Cumulus Linux 4.2
Release Notes.
forked various software projects, like CFEngine Netdev and some Puppet
Labs packages. Some of the forked code resides in the Cumulus Networks
GitHub repository and some is available as part of the Cumulus Linux
2 https://docs.cumulusnetworks.com
Cumulus Linux v4.2 User Documentation
You can find the most up-to-date hardware compatibility list (HCL) here.
Use the HCL to confirm that your switch model is supported by Cumulus
Linux. The HCL is updated regularly, listing products by port configuration,
Stay up to Date
You can download a PDF version of the complete Cumulus Linux 4.2 user
guide here.
https://docs.cumulusnetworks.com 3
Cumulus Linux v4.2 User Documentation What's New
What's New
This document supports the Cumulus Linux 4.2 release, and lists new
platforms and features.
• For a list of all the platforms supported in Cumulus Linux 4.2, see the
Cumulus Linux 4.2.1 supports a new platform, provides bug fixes, and
New Platforms
Enhancements
• The Mellanox SN3700 Spectrum-2 switch now supports 200G (100G was
supported previously)
• EVPN multihoming is now generally available on Mellanox switches
• Inter-VRF route leaking is now ASIC accelerated by default
4 https://docs.cumulusnetworks.com
What's New Cumulus Linux v4.2 User Documentation
Cumulus Linux 4.2.0 supports new platforms, provides bug fixes, and
contains several new features and improvements.
New Platforms
• New ONIE command line options to set the cumulus user default
password, add a license, and provide initial network configuration
• Ability to edit the Cumulus Linux image file
restart
• DSCP-based packet matching in PBR rules
• Link pause and priority flow control are now supported on the Edgecore
Minipack-AS8000
https://docs.cumulusnetworks.com 5
Cumulus Linux v4.2 User Documentation What's New
Unsupported Platforms
These platforms are not supported in Cumulus Linux 4.2. They are
supported in Cumulus Linux 3.7, until that release reaches its end of life.
6 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
Prerequisites
You must have access to a Linux or UNIX shell. If you are running Windows,
use a Linux environment like Cygwin as your command line tool for
If you are a networking engineer but are unfamiliar with Linux concepts,
refer to this reference guide to compare the Cumulus Linux CLI and
https://docs.cumulusnetworks.com 7
Cumulus Linux v4.2 User Documentation Quick Start Guide
2. Download the Cumulus Linux installation file to the root directory of the
web server. Rename this file onie-installer.
4. Power on the switch. The switch downloads the ONIE image installer and
boots. You can watch the progress of the install in your terminal. After
the installation completes, the Cumulus Linux login prompt appears in
NOTE
do not need a console cable. A fresh install with ONIE using a local
web server typically completes in less than ten minutes.
You have more options for installing Cumulus Linux with ONIE.
8 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
Get Started
When starting Cumulus Linux for the first time, the management port
makes a DHCPv4 request. To determine the IP address of the switch, you
can cross reference the MAC address of the switch with your DHCP server.
The MAC address is typically located on the side of the switch or on the
box in which the unit ships.
Login Credentials
The default installation includes the system account (root), with full system
https://docs.cumulusnetworks.com 9
Cumulus Linux v4.2 User Documentation Quick Start Guide
privileges and the user account (cumulus), with sudo privileges. The root
cumulus
When you log into Cumulus Linux for the first time with the cumulus
account, you are prompted to change the default password. After you
provide a new password, the SSH session disconnects and you have to
reconnect with the new password.
NOTE
In this quick start guide, you use the cumulus account to configure Cumulus
Linux.
All accounts except root are permitted remote SSH login; you can use sudo
10 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
For more information about sudo, read Using sudo to Delegate Privileges.
Typically, switches ship from the manufacturer with a mating DB9 serial
cable. Switches with ONIE are always set to a 115200 baud rate.
https://docs.cumulusnetworks.com 11
Cumulus Linux v4.2 User Documentation Quick Start Guide
•
NCLU Commands Linux Commands
Set the static IP address with the interface address and interface
192.0.2.42/24
192.0.2.1
Configure the hostname and timezone for your switch. The hostname
identifies the switch; make sure you configure the hostname to be unique
and descriptive.
NOTE
12 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
Run the net add hostname command, which modifies both the /etc/
NOTE
https://docs.cumulusnetworks.com 13
Cumulus Linux v4.2 User Documentation Quick Start Guide
a new shell.
• When you use the NCLU command to set the hostname,
DHCP doe
oess not override the hostname when you reboot the
switch. However, if you disable the hostname setting with
NCLU, DHCP doe
oess override the hostname the next time you
2. Follow the on screen menu options to select the geographic area and
region.
14 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
NOTE
Programs that are already running (including log files) and users
currently logged in, do not see timezone changes made with
interactive mode. To set the timezone for all services and daemons,
reboot the switch.
Before you install the license, verify that the date and time on the switch
are correct, and correct the date and time if necessary. If the date and time
https://docs.cumulusnetworks.com 15
Cumulus Linux v4.2 User Documentation Quick Start Guide
user@company.com|thequickbrownfoxjumpsoverthelazydog312
There are three ways to install the license onto the switch:
• Copy the license from a local server. Create a text file with the license
and copy it to a server accessible from the switch. On the switch, use the
following command to transfer the file directly on the switch, then install
the license file:
my_license_file.txt .
• Copy the file to an HTTP server (not HTTPS), then reference the URL
• Copy and paste the license key into the cl-license command:
16 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
^+d
cumulus@switch:~$ cl-license
user@example.com|$ampleL1cen$et3xt
NOTE
panel ports become active and show up as swp1, swp2, and so on.
switchd.service
https://docs.cumulusnetworks.com 17
Cumulus Linux v4.2 User Documentation Quick Start Guide
WARNING
service does not start. After you install the license, start switchd as
described above.
If you are using 4x10G DAC or AOC cables, or want to break out 100G or
40G switch ports, configure the breakout ports. For more details, see
Switch Port Attributes.
By default, all data plane ports (every Ethernet port except the
management interface, eth0) are disabled.
18 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
To view link status, use the net show interface all command. The
following examples show the output of ports in admin down, down, and
up modes:
LLDP Summary
---------------------- -------------------------
UP lo N/A 65536
Loopback https://docs.cumulusnetworks.com
IP: 127.0.0.1/8 19
Cumulus Linux v4.2 User Documentation Quick Start Guide
Cumulus Linux does not put all ports into a bridge by default. To create a
bridge and configure one or more front panel ports as members of the
bridge, use the following examples as a guide.
20 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
You can add a range of ports in one command. For example, to add
swp1 through swp10, swp12, and swp14 through swp20 to bridge:
swp1-10,12,14-20
https://docs.cumulusnetworks.com 21
Cumulus Linux v4.2 User Documentation Quick Start Guide
interfaces
You can also configure a front panel port or bridge interface as a layer 3
port.
22 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
10.1.1.1/30
To view the changes in the kernel, use the ip addr show command:
https://docs.cumulusnetworks.com 23
Cumulus Linux v4.2 User Documentation Quick Start Guide
...
...
...
interfaces file. When the switch boots up, it has a loopback interface,
TIP
24 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 25
Cumulus Linux v4.2 User Documentation Quick Start Guide
•
NCLU Commands Linux Commands
Alias
-----
loopback interface
IP Details
------------------------- --------------------
IP Neighbor(ARP) Entries: 0
interface:
26 https://docs.cumulusnetworks.com
Quick Start Guide Cumulus Linux v4.2 User Documentation
Multiple Loopbacks
After you complete the configuration in this section, reboot the switch:
https://docs.cumulusnetworks.com 27
Cumulus Linux v4.2 User Documentation Installation Management
Installation Management
This section describes how to manage, install, and upgrade Cumulus Linux
on your switch.
28 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
command.
cumulus@switch:~$ uname -m
x86_64
cumulus@switch:~$ uname -m
armv7l
https://docs.cumulusnetworks.com 29
Cumulus Linux v4.2 User Documentation Installation Management
You can also visit the HCL (hardware compatibility list) to look at your
hardware and determine the processor type.
Reprovisioning the system deletes all system data from the switch.
WARNING:
WARNING:
30 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
do not specify the -a option, a reboot is required for the reinstall to begin.
image-installer
script
You can also specify these options together in the same command. For
example:
image-installer -z http://203.0.113.10/ztp-script -a
https://docs.cumulusnetworks.com 31
Cumulus Linux v4.2 User Documentation Installation Management
To remove all installed images and configurations, and return the switch to
its factory defaults, run the onie-select -k command.
WARNING
overwrites the entire NOS section of the flash. Only use this
command if you want to erase all NOS data and take the switch
out of service.
WARNING:
WARNING:
32 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
TIP
command:
If your system becomes unresponsive is some way, you can correct certain
issues by booting into ONIE rescue mode. In rescue mode, the file systems
are unmounted and you can use various Cumulus Linux utilities to try and
resolve a problem.
To reboot the system into ONIE rescue mode, run the onie-select -r
command:
https://docs.cumulusnetworks.com 33
Cumulus Linux v4.2 User Documentation Installation Management
WARNING:
WARNING:
NOTE
TIP
command:
34 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
The Cumulus Linux image file is executable. From a running switch, you can
display, extract, and verify the contents of the image file.
To display the contents of the Cumulus Linux image file, pass the info
option to the image file. For example, to display the contents of an image
file called onie-installer located in the /var/lib/cumulus/installer
directory:
installer info
=====================
Release: 4.1.0
Architecture: amd64
Switch-Architecture: bcm-amd64
Build-Id: dirtyz224615f
Build-Date: 2019-05-17T16:34:22+00:00
Build-User: clbuilder
Homepage: http://www.cumulusnetworks.com/
Min-Disk-Size: 1073741824
https://docs.cumulusnetworks.com 35
Cumulus Linux v4.2 User Documentation Installation Management
Min-Ram-Size: 536870912
mkimage-version: 0.11.111_gbcf0
To extract the contents of the image file, use with the extract <path>
total 181860
To verify the contents of the image file, use with the verify option. For
36 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
installer verify
Related Information
https://docs.cumulusnetworks.com 37
Cumulus Linux v4.2 User Documentation Installation Management
WARNING
In Cumulus Linux 4.2.0, the default password for the cumulus user
account has changed to cumulus. The first time you log into
You can install a new Cumulus Linux image using ONIE, an open source
Before you install Cumulus Linux, the switch can be in two different states:
The sections below describe some of the different ways you can install the
38 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
Cumulus Linux image, such as using a DHCP/web server, FTP, a local file, or
a USB drive. Steps are provided for both installing directly from ONIE (if no
image is installed on the switch) and from Cumulus Linux (if the image is
You can download a Cumulus Linux image from the Cumulus Linux
Downloads page.
WARNING
files on the switch are not saved; copy them to a different server
before installing.
• You can name your Cumulus Linux image using any of the ONIE naming
schemes mentioned here.
• In the example commands, [PLATFORM] can be any supported Cumulus
options.
• After you install the Cumulus Linux image, you need to install the license
https://docs.cumulusnetworks.com 39
Cumulus Linux v4.2 User Documentation Installation Management
To install Cumulus Linux using a DHCP/web server with DHCP options, set
up a DHCP/web server on your laptop and connect the eth0 management
port of the switch to your laptop. After you connect the cable, the
installation proceeds as follows:
2. The DHCP server acknowledges and responds with DHCP option 114 and
the location of the installation image.
NOTE
The most common method is to send DHCP option 114 with the
entire URL to the web server (this can be the same system).
40 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
However, there are many other ways to use DHCP even if you do
not have full control over DHCP. See the ONIE user guide for help
with partial installer URLs and advanced DHCP options; both
articles list more supported DHCP options.
[PLATFORM]";
dhcp-host=sw4,192.168.100.14,6c:64:1a:00:03:ba,set:sw4
dhcp-option=tag:sw4,114,"http://roz.rtplab.test/onie-installer-
[PLATFORM]"
If you do not have a web server, you can use this free Apache example.
https://docs.cumulusnetworks.com 41
Cumulus Linux v4.2 User Documentation Installation Management
Follow the steps below if you can log into the switch on a serial console
(ONIE), or log in on the console or with ssh (Install from Cumulus Linux).
•
Install from ONIE Install from Cumulus Linux
cumulus-install-[PLATFORM].bin
Follow the steps below if you can log into the switch on a serial console
(ONIE), or log in on the console or with ssh (Install from Cumulus Linux) but
42 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
NOTE
https://docs.cumulusnetworks.com 43
Cumulus Linux v4.2 User Documentation Installation Management
•
Install from ONIE Install from Cumulus Linux
onie# onie-discovery-stop
supported, run:
cumulus-install-[PLATFORM].bin
44 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
Follow the steps below if your laptop is on the same network as the switch
eth0 interface but no DHCP server is available.
NOTE
Installing the Cumulus Linux image using FTP from ONIE is not
supported on the Dell N3048EP-ON switch. Use one of the other
https://docs.cumulusnetworks.com 45
Cumulus Linux v4.2 User Documentation Installation Management
•
Install from ONIE Install from Cumulus Linux
onie# onie-discovery-stop
supported, run:
4. If you are not using DHCP options, run one of the following
commands (tftp for TFTP or ftp for FTP):
install-[PLATFORM].bin
46 https://docs.cumulusnetworks.com
install-[PLATFORM].bin
Installation Management Cumulus Linux v4.2 User Documentation
Follow the steps below to install the Cumulus Linux image referencing a
local file.
NOTE
https://docs.cumulusnetworks.com 47
Cumulus Linux v4.2 User Documentation Installation Management
•
Install from ONIE Install from Cumulus Linux
onie# onie-discovery-stop
supported, run:
install-[PLATFORM].bin
48 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
Follow the steps below to install the Cumulus Linux image using a USB
drive. Instructions are provided for x86 and ARM platforms.
TIP
switch here and there but is not scalable. DHCP can scale to
3. Copy the Cumulus Linux image to the USB drive, then rename the image
file to:
https://docs.cumulusnetworks.com 49
Cumulus Linux v4.2 User Documentation Installation Management
You can also use any of the ONIE naming schemes mentioned here.
4. Insert the USB drive into the switch, then continue with the appropriate
instructions below for your x86 or ARM platform.
50 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
•
x86 Platforms ARM Platforms
switch.
• If the switch is already online in ONIE, use the reboot command.
SSH sessions to the switch get dropped after this step. To complete
the remaining instructions, connect to the console of the switch.
2. Monitor the console and select the ONIE option from the first GRUB
screen shown below.
https://docs.cumulusnetworks.com 51
Cumulus Linux v4.2 User Documentation Installation Management
You can run several installer command line options from ONIE to perform
basic switch configuration automatically after installation completes and
Cumulus Linux boots for the first time. These options enable you to:
NOTE
command line parameters. You must access the switch from the
console and transfer a disk image to the switch. You must then
make the disk image executable and install the image directly from
the ONIE command line with the options you want to use.
linux-4.2.0-bcm-amd64.bin
52 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
'MyP4$$word'
You can run more than one option in the same command.
The default cumulus user account password is cumulus. When you log into
Cumulus Linux for the first time, you must provide a new password for the
cumulus account, then log back into the system. This password change is
req
equuired in Cumulus Linux 4.2 and later.
To automate this process, you can specify a new password from the
command line of the installer with the --password '<clear text-password>'
MyP4$$word:
'MyP4$$word'
https://docs.cumulusnetworks.com 53
Cumulus Linux v4.2 User Documentation Installation Management
password MyP4$$word.
print(crypt.crypt('MyP4$$word',salt=crypt.mksalt()))"
$6$hs7OPmnrfvLNKfoZ$iB3hy5N6Vv6koqDmxixpTO6lej6VaoKGvs5E8p5zNo4tPec0KKqyQnrFMII3
2. Specify the new password from the command line of the installer with
the --hashed-password '<hash>' command:
password
'$6$hs7OPmnrfvLNKfoZ$iB3hy5N6Vv6koqDmxixpTO6lej6VaoKGvs5E8p5zNo4tPec0KKqyQnrFMII
NOTE
54 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
To apply a license and start the switchd service automatically after Cumulus
Linux boots for the first time after installation, use the --license <license-
'customer@datacenter.com|4C3YMCACDiK0D/
EnrxlXpj71FBBNAg4Yrq+brza4ZtJFCInvalid'
command:
https://docs.cumulusnetworks.com 55
Cumulus Linux v4.2 User Documentation Installation Management
network.intf
To run a ZTP script that contains commands to execute after Cumulus Linux
boots for the first time after installation, use the --ztp <filename> option.
conf.ztp
The ZTP script must contain the CUMULUS-AUTOPROVISIONING string near the
beginning of the file and must reside on the ONIE filesystem. Refer to Zero
Touch Provisioning - ZTP.
If you use the --ztp option together with any of the other command line
options, the ZTP script takes precedence and the other command line
options are ignored.
The Cumulus Linux disk image file contains a BASH script that includes a
set of variables. You can set these variables to be able to install a fully-
configured system with a single image file.
56 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
Related Information
https://docs.cumulusnetworks.com 57
Cumulus Linux v4.2 User Documentation Installation Management
WARNING
In Cumulus Linux 4.2.0, the default password for the cumulus user
account has changed to cumulus. The first time you log into
58 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
TIP
Linux. The following list is a likely set of files that you need to back up and
migrate to a new release. Make sure you examine any file that has been
changed. Consider making the following files and directories part of a
backup strategy.
https://docs.cumulusnetworks.com 59
Cumulus Linux v4.2 User Documentation Installation Management
•
Network Configuration Files Commonly-Used Files
NOTE
You can check which files have changed since the last Cumulus
changed files.
• Run the egrep -v '^$|^#|=""$' /etc/default/isc-dhcp-*
• Upgrade only the changed packages using the sudo -E apt-get update
https://docs.cumulusnetworks.com 61
Cumulus Linux v4.2 User Documentation Installation Management
NOTE
Installing a C
Cuumulus Lin
Linuux image is recommended if you are performing a
62 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
Pack
ackage
age upg
pgrrade is recommended if you are upgrading from Cumulus
Linux 4.0, or if you use third-party applications (package upgrade does not
• You cannot upgrade the switch to a new release train. For example, you
cannot upgrade the switch from 3.7.x to 4.1.0.
https://docs.cumulusnetworks.com 63
Cumulus Linux v4.2 User Documentation Installation Management
NOTE
location> command, which boots the switch into ONIE. The following
example command installs the image from a web server, then reboots the
switch. There are additional ways to install the Cumulus Linux image,
such as using FTP, a local file, or a USB drive. For more information, see
64 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
5. Verify correct operation with the old configurations on the new release.
Package Upgrade
workflow, where you use an installer to install a base image, then perform
any upgrades within that release train with sudo -E apt-get update and
changed since the base install get upgraded in place from the repository.
When you use package upgrade to upgrade your switch, configuration data
stays in place while the packages are upgraded. If the new release updates
a configuration file that you changed previously, you are prompted for the
version you want to use or if you want to evaluate the differences.
https://docs.cumulusnetworks.com 65
Cumulus Linux v4.2 User Documentation Installation Management
file similar to the ones shown below. In the examples below, only the frr
package is upgraded.
66 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 67
Cumulus Linux v4.2 User Documentation Installation Management
dist`
complete and
installed file.
installed version is
When the upgrade is complete, you can search for the files
with the
If you see errors for expired GPG keys that prevent you from upgrading
packages, follow the steps in Upgrading Expired GPG Keys.
5. Reboot the switch if the upgrade messages indicate that a system restart
is required.
68 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
unpredictable behavior
6. Verify correct operation with the old configurations on the new version.
Upgrade Notes
that switch, the packages are upgraded to the latest releases contained in
currently installed Cumulus Linux release when you upgrade the switch
using either package upgrade or Cumulus Linux image install. For
example, if you run sudo -E apt-get upgrade and the latest Cumulus
Linux release on the repository is 4.1.0, these two files display the release
https://docs.cumulusnetworks.com 69
Cumulus Linux v4.2 User Documentation Installation Management
Linux image install. Therefore, if you run a Cumulus Linux image install of
Cumulus Linux 4.0.0, followed by a package upgrade to 4.1.0 using sudo
If you are using MLAG to dual connect two switches in your environment,
follow the steps below to upgrade the switches.
You must upgrade both switches in the MLAG pair to the same release of
Cumulus Linux.
WARNING
70 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
IMPORTANT
across different major releases. The port key received from the
LACP partner must remain consistent between all bond members
in order for all bonds to be synchronized. When each MLAG switch
sends LACPDUs with different port keys, only links to one MLAG
switch are in sync.
https://docs.cumulusnetworks.com 71
Cumulus Linux v4.2 User Documentation Installation Management
switch into ONIE. The following example command installs the image
from a web server. There are additional ways to install the Cumulus Linux
image, such as using FTP, a local file, or a USB drive. For more
downloads/cumulus-linux-4.1.0-mlx-amd64.bin
72 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
12. Remove the priority 2048 and restore the priority back to 32768 on the
current primary switch:
https://docs.cumulusnetworks.com 73
Cumulus Linux v4.2 User Documentation Installation Management
Even the most well planned and tested upgrades can result in unforeseen
problems; sometimes the best solution is to roll back to the previous state.
There are three main strategies; all require detailed planning and execution:
Restore.
providing detailed steps for each scenario is outside the scope of this
document.
Third party packages in the Linux host world often use the same package
system as the distribution into which it is to be installed (for example,
Debian uses apt-get). Or, the package might be compiled and installed by
74 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
After you upgrade using a full Cumulus Linux image install, you need to
reinstall any third party packages or any Cumulus Linux add-on packages.
Related Information
• Automation Solutions
• ONIE Design Specification
• Multi-Chassis Link Aggregation - MLAG
• Zero Touch Provisioning - ZTP
https://docs.cumulusnetworks.com 75
Cumulus Linux v4.2 User Documentation Installation Management
If your network is configured for LNV, you need to migrate your network
configuration to a BGP EVPN configuration that is functionally equivalent
bef
befoore you upgrade to Cumulus Linux 4.0 or later.
Migration Considerations
You cannot run LNV and EVPN at the same time for the following reasons:
possibility when both are enabled at the same time. Because the kernel
bridging table is the basis for programming the forwarding ASICs, this
76 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
inside the fabric for spine and leaf Clos networks. Because FRRouting
does not currently support BGP dynamic capability negotiation, enabling
the EVPN address family requires all of the neighbors to restart for the
changes to take effect. This results in a brief disruption to traffic
forwarding.
Upgrade to EVPN
following reasons:
The upgrade steps described here are based on the following example
topology (based on the Cumulus Linux Reference Topology):
https://docs.cumulusnetworks.com 77
Cumulus Linux v4.2 User Documentation Installation Management
This topology:
• Vlan13 and Vlan24 are extended between the two racks (leaf01 and
leaf02) and (leaf03 and leaf04)
• VXLAN routing uses centralized routing at the exit nodes
1. Run the following NCLU commands on each type of device shown (leaf,
exit, spine):
Leaf no
nodde NCL
CLU
Uccomman
ommands
ds
78 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
# BGP changes
activate
Exit no
nodde NCL
CLU
Uccomman
ommands
ds
# BGP changes
activate
https://docs.cumulusnetworks.com 79
Cumulus Linux v4.2 User Documentation Installation Management
Spine no
nodde NCL
CLU
Uccomman
ommands
ds
# BGP changes
activate
10.0.0.200
10.0.0.22
loopback-ip]
80 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
32
2. Manually disable and stop the LNV daemons. NCLU can remove the LNV
configuration from the configuration files, but you must manually stop
and disable these daemons before you commit the NCLU changes. After
you commit the NCLU changes, NCLU restarts the BGP daemon, which
NOTE
3. To disable and stop the LNV registration daemon, run the following
commands on the leaf and exit nodes:
4. To disable and stop the LNV service node daemon, run the following
commands on the spine nodes:
https://docs.cumulusnetworks.com 81
Cumulus Linux v4.2 User Documentation Installation Management
5. To commit and apply the pending NCLU changes, run the following
command on all the nodes:
To check that LNV is disabled, run the net show lnv command on any node.
NOTE
command has been removed in Cumulus Linux 4.0 and does not
work after you upgrade.
82 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
To ensure that EVPN BGP neighbors are up, run the net show bgp l2vpn
summary command:
00:14:28 48
00:14:27 48
To examine the EVPN routes, run the net show bgp l2vpn evpn route
type-2 EVPN route until it sends a frame that ingresses the EVPN-enabled
local switch.
https://docs.cumulusnetworks.com 83
Cumulus Linux v4.2 User Documentation Installation Management
best, i - internal
[2]:[ESI]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
Path
*> [2]:[0]:[0]:[48]:[00:03:00:11:11:01]
10.0.0.100 32768 i
*> [2]:[0]:[0]:[48]:[02:03:00:11:11:01]
10.0.0.100 32768 i
*> [2]:[0]:[0]:[48]:[02:03:00:11:11:02]
10.0.0.100 32768 i
*> [3]:[0]:[32]:[10.0.0.100]
10.0.0.100 32768 i
*> [2]:[0]:[0]:[48]:[00:03:00:22:22:02]
10.0.0.100 32768 i
*> [2]:[0]:[0]:[48]:[02:03:00:22:22:01]
84 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
10.0.0.100 32768 i
*> [2]:[0]:[0]:[48]:[02:03:00:22:22:02]
10.0.0.100 32768 i
*> [3]:[0]:[32]:[10.0.0.100]
10.0.0.100 32768 i
* [2]:[0]:[0]:[48]:[00:03:00:33:33:01]
10.0.0.101 0
65020 65013 i
*> [2]:[0]:[0]:[48]:[00:03:00:33:33:01]
10.0.0.101 0
65020 65013 i
* [2]:[0]:[0]:[48]:[02:03:00:33:33:01]
10.0.0.101 0
65020 65013 i
*> [2]:[0]:[0]:[48]:[02:03:00:33:33:01]
10.0.0.101 0
65020 65013 i
* [2]:[0]:[0]:[48]:[02:03:00:33:33:02]
10.0.0.101 0
65020 65013 i
*> [2]:[0]:[0]:[48]:[02:03:00:33:33:02]
10.0.0.101 0
65020 65013 i
https://docs.cumulusnetworks.com 85
Cumulus Linux v4.2 User Documentation Installation Management
* [3]:[0]:[32]:[10.0.0.101]
10.0.0.101 0
65020 65013 i
*> [3]:[0]:[32]:[10.0.0.101]
10.0.0.101 0
65020 65013 i
...
TIP
You can filter the EVPN route output by route type. The multicast
route type corresponds to type-3. The prefix route type is type-5
(but is not used here).
multicast : Multicast
86 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
...
* [2]:[0]:[0]:[48]:[00:03:00:33:33:01]
10.0.0.101 0
65020 65013 i
...
To ensure the type-2 route is installed in the bridge table, run the net show
13 bridge vni-13
https://docs.cumulusnetworks.com 87
Cumulus Linux v4.2 User Documentation Installation Management
directory that are not installed by a Debian package but are modified when
you install a new image or enable/disable certain services (such as the
Cumulus license file).
and restores a previous configuration when you run the net rollback
command.
To back up the current configuration files on the switch, run the config-
backup command:
88 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
If you run this command without any options, Cumulus Linux creates a
backup of the current configuration and stores the backup file in the /var/
time you run the backup, and the switch name; for example,
config_backup-2019-04-23-21.30.47_leaf01. You can restore the backup
The switch can store up to 30 non-permanent backup files (or can allocate
files (see the -p option below). When this limit is reached, Cumulus Linux
keeps the oldest and the newest backup files, then starts removing the
second oldest file up to the second newest file.
NOTE
Cumulus Linux recommends you copy the backup file off the
switch after backup is complete.
Option De
Desscription
https://docs.cumulusnetworks.com 89
Cumulus Linux v4.2 User Documentation Installation Management
Option De
Desscription
90 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
Option De
Desscription
-X .*~$ option.
and provides the description myconfig, which shows in the backup archive
list.
The following command example creates a backup file in quiet mode and
excludes files that end in a tilde (~).
https://docs.cumulusnetworks.com 91
Cumulus Linux v4.2 User Documentation Installation Management
You can restore a backup to the same switch or to a different switch. When
restoring to a different switch, the switch must be of the same type an
andd
relea
eleasse. For example, you can restore a backup from a Broadcom Trident3
filename (-b <filename>), file number (-n <number>), or the -N option, which
You can run the config-restore -l command to list the archived backup
config_backup-2019-04-23-21.30.47_leaf01
After the backup file is restored successfully, you are prompted to restart
Cumulus Linux reports any issues encountered during restore and prompts
92 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
NOTE
Option De
Desscription
https://docs.cumulusnetworks.com 93
Cumulus Linux v4.2 User Documentation Installation Management
Option De
Desscription
(shown by -l).
94 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
Option De
Desscription
The following command example lists the backup files available on the
switch. The list includes the file number (#), type, description, and filename.
config_backup-2019-04-23-00.42.11_cumulus-perm
config_backup-2019-04-23-00.47.43_cumulus-perm
config_backup-2019-04-23-18.12.26_cumulus-perm
config_backup-2019-04-23-19.55.13_leaf01
https://docs.cumulusnetworks.com 95
Cumulus Linux v4.2 User Documentation Installation Management
config_backup-2019-04-23-19.55.26_leaf01
6 config_backup-2019-04-23-21.20.41_leaf01
7 config_backup-2019-04-23-21.30.47_leaf01-perm
...
config_backup-2019-04-23-21.30.47_leaf01
The following command example runs test mode to restore the most recent
backup file (no configuration is actually restored).
The following command example lists the files in the most recent backup
file.
96 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 97
Cumulus Linux v4.2 User Documentation Installation Management
applications (in the form of packages) and to install the latest updates.
WARNING
If services are stopped, you might need to reboot the switch for
those services to restart.
98 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
packages. You must populate the cache initially, then periodically update it
with sudo -E apt-get update:
InRelease [7,624 B]
https://docs.cumulusnetworks.com 99
Cumulus Linux v4.2 User Documentation Installation Management
cumulus Translation-en_US
cumulus Translation-en
upstream Translation-en_US
upstream Translation-en
updates-latest/cumulus Translation-en_US
100 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
updates-latest/cumulus Translation-en
updates-latest/upstream Translation-en_US
updates-latest/upstream Translation-en
latest/cumulus Translation-en_US
latest/cumulus Translation-en
latest/upstream Translation-en_US
latest/upstream Translation-en
TIP
Use the -E option with sudo whenever you run any apt-get
https://docs.cumulusnetworks.com 101
Cumulus Linux v4.2 User Documentation Installation Management
After the cache is populated, use the apt-cache command to search the
cache and find the packages in which you are interested or to get
(core system)
libraries
(InfiniBand/iWARP)
102 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
development files
development files
to remote machines
https://docs.cumulusnetworks.com 103
Cumulus Linux v4.2 User Documentation Installation Management
Package: tcpdump
Version: 4.9.3-1~deb10u1
Installed-Size: 1109
Architecture: amd64
1.1.0)
Size: 400060
SHA256:
3a63be16f96004bdf8848056f2621fbd863fadc0baf44bdcbc5d75dd98331fd3
SHA1: 2ab9f0d2673f49da466f5164ecec8836350aed42
MD5sum: 603baaf914de63f62a9f8055709257f3
tcpdump
AFS
BGP, RIP, PIM, DVMRP, IGMP, SMB, OSPF, NFS and many other
packet
types.
104 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
can
Description-md5: f01841bfda357d116d7ff7b7a47e8782
Homepage: http://www.tcpdump.org/
Multi-Arch: foreign
Section: net
Priority: optional
Filename: pool/upstream/t/tcpdump/
tcpdump_4.9.3-1~deb10u1_amd64.deb
NOTE
The search commands look for the search terms not only in the
the repository. To see which packages are actually installed on your system
https://docs.cumulusnetworks.com 105
Cumulus Linux v4.2 User Documentation Installation Management
•
NCLU Commands Linux Commands
---------------------------------
-----------------------------------------------------------------------
acpi 1.7-1.1
acpi-support-base 0.142-8
acpid 1:2.0.31-1
adduser 3.118
apt 1.8.2
arping 2.19-6
arptables 0.0.4+snapshot20181021-4
atftp 0.7.git20120829-3.1
atftpd 0.7.git20120829-3.1
...
NOTE
106 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
Run the net show package version <package> command. For example,
1.0-cl4u2
Upgrade Packages
To upgrade all the packages installed on the system to their latest versions,
run the following commands:
https://docs.cumulusnetworks.com 107
Cumulus Linux v4.2 User Documentation Installation Management
A list of packages that will be upgraded is displayed and you are prompted
to continue.
The above commands upgrade all installed versions with their latest
versions but do not install any new packages.
To add a new package, first ensure the package is not already installed on
the system:
• If the package is installed already, you can update the package from the
Cumulus Linux repository as part of the package upgrade process, which
upgrades all packages on the system. See Upgrade Packages above.
• If the package is not already installed, add it by running sudo -E apt-get
install <name of package>. This retrieves the package from the Cumulus
Linux repository and installs it on your system together with any other
packages on which this package might depend. The following example
108 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
tcpreplay
used
...
TIP
https://docs.cumulusnetworks.com 109
Cumulus Linux v4.2 User Documentation Installation Management
dry-run command.
more information.
TIP
110 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
If you want to install packages that are not in the Cumulus Linux repository,
the procedure is the same as above, but with one additional step.
NOTE
Packages that are not part of the Cumulus Linux Repository are
not typically tested and might not be supported by Cumulus Linux
Technical Support.
1. Run the dpkg command to ensure that the package is not already
https://docs.cumulusnetworks.com 111
Cumulus Linux v4.2 User Documentation Installation Management
3. If the package is not on the system, the package source location is most
likely not in the /etc/apt/sources.list file. If the source for the new
the file. For example, add the following if you want a package from the
4. Run sudo -E apt-get update, then install the package and upgrade:
112 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
following packages:
• audisp-tacplus
• ifplugd
• libdaemon0
• libnss-ldapd
• libnss-mapuser
• libnss-tacplus
• libpam-ldapd
• libpam-radius-auth
• libpam-tacplus
• libtac2
• libtacplus-map1
• nslcd
https://docs.cumulusnetworks.com 113
Cumulus Linux v4.2 User Documentation Installation Management
You add these packages normally with apt-get update && apt-get install,
as described above.
Related Information
Considerations
114 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
While developing and testing the provisioning logic, you can use the ztp
ZTP in Cumulus Linux can occur automatically in one of the following ways,
in this order:
https://docs.cumulusnetworks.com 115
Cumulus Linux v4.2 User Documentation Installation Management
ZTP only looks once for a ZTP script on the local file system when the
switch boots. ZTP searches for an install script that matches an ONIE-style
waterfall in /var/lib/cumulus/ztp, looking for the most specific name first,
revision
• 'cumulus-ztp-' + architecture
• 'cumulus-ztp'
For example:
cumulus-ztp-amd64-cel_pebble-rUNKNOWN
cumulus-ztp-amd64-cel_pebble
cumulus-ztp-cel_pebble
cumulus-ztp-amd64
cumulus-ztp
You can also trigger the ZTP process manually by running the ztp --run
<URL> command, where the URL is the path to the ZTP script.
116 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
NOTE
This feature has been tested only with thumb drives, not an actual
external large USB hard drive.
If the ztp process does not discover a local script, it tries once to locate an
inserted but unmounted USB drive. If it discovers one, it begins the ZTP
process.
drive as an installation source for ZTP scripts. You must plug in the USB
drive bef
befoore you power up the switch.
1. Copy the Cumulus Linux license and installation image to the USB drive.
2. The ztp process searches the root filesystem of the newly mounted drive
https://docs.cumulusnetworks.com 117
Cumulus Linux v4.2 User Documentation Installation Management
3. The contents of the script are parsed to ensure it contains the CUMULUS-
NOTE
root partition.
If the ztp process does not discover a local/ONIE script or applicable USB
drive, it checks DHCP every ten seconds for up to five minutes for the
presence of a ZTP URL specified in /var/run/ztp.dhcp. The URL can be any
For ZTP using DHCP, provisioning initially takes place over the management
network and is initiated through a DHCP hook. A DHCP option is used to
specify a configuration script. This script is then requested from the Web
server and executed locally on the switch.
118 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
1. The first time you boot Cumulus Linux, eth0 is configured for DHCP and
makes a DHCP request.
2. The DHCP server offers a lease to the switch.
root privileges.
7. The return code of the script is examined. If it is 0, the provisioning state
You can also run the ztp --run <URL> command, where the URL is the path
During the DHCP process over eth0, Cumulus Linux requests DHCP option
https://docs.cumulusnetworks.com 119
Cumulus Linux v4.2 User Documentation Installation Management
For example, the /etc/dhcp/dhcpd.conf file for an ISC DHCP server looks
like:
Additionally, you can specify the hostname of the switch with the host-name
option:
120 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
NOTE
The following HTTP headers are sent in the request to the webserver to
retrieve the provisioning script:
User-Agent
CumulusLinux-AutoProvision/0.4
CUMULUS-BUILD 4.1.0
CUMULUS-LICENSE-INSTALLED Either 0 or 1 1
CUMULUS-MANUFACTURER odm
CUMULUS-PRODUCTNAME switch_model
CUMULUS-SERIAL XYZ123004
CUMULUS-BASE-MAC
44:38:39:FF:40:94
CUMULUS-MGMT-MAC
https://docs.cumulusnetworks.com 121
Cumulus Linux v4.2 User Documentation Installation Management
44:38:39:FF:00:00
CUMULUS-VERSION 4.1.0
CUMULUS-PROV-COUNT 0
CUMULUS-PROV-MAX 32
NOTE
# CUMULUS-AUTOPROVISIONING
occur.
The script must contain the CUMULUS-AUTOPROVISIONING flag. You can include
this flag in a comment or remark; the flag does not need to be echoed or
written to stdout.
You can write the script in any language currently supported by Cumulus
122 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
• Perl
• Python
• Ruby
• Shell
The script must return an exit code of 0 upon success, as this triggers the
autoprovisioning process to be marked as complete in the autoprovisioning
configuration file.
The following script installs Cumulus Linux and its license from a USB drive
#!/bin/bash
function error() {
exit 1
https://docs.cumulusnetworks.com 123
Cumulus Linux v4.2 User Documentation Installation Management
apt/sources.list
/etc/apt/sources.list
apt-get update -y
cp ${ZTP_USB_MOUNTPOINT}/interfaces /etc/network/interfaces
cp ${ZTP_USB_MOUNTPOINT}/ports.conf /etc/cumulus/ports.conf
/usr/cumulus/bin/cl-license -i
switchd.service
ifreload -a
124 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
# CUMULUS-AUTOPROVISIONING
exit 0
Several ZTP example scripts are available in the Cumulus GitHub repository.
Best Practices
ZTP scripts come in different forms and frequently perform many of the
same tasks. As BASH is the most common language used for ZTP scripts,
The default cumulus user account password is cumulus. When you log into
Cumulus Linux for the first time, you must provide a new password for the
cumulus account, then log back into the system. This password change at
first login is req
equuired in Cumulus Linux 4.2 and later.
Add the following function to your ZTP script to change the default
cumulus user account password to a clear-text password. The example
changes the password cumulus to MyP4$$word.
https://docs.cumulusnetworks.com 125
Cumulus Linux v4.2 User Documentation Installation Management
function set_password(){
set_password
print(crypt.crypt('MyP4$$word',salt=crypt.mksalt()))"
$6$hs7OPmnrfvLNKfoZ$iB3hy5N6Vv6koqDmxixpTO6lej6VaoKGvs5E8p5zNo4tPec0KKqyQnrFMII3
• Then, add the following function to the ZTP script to change the default
126 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
function set_password(){
usermod -p
'$6$hs7OPmnrfvLNKfoZ$iB3hy5N6Vv6koqDmxixpTO6lej6VaoKGvs5E8p5zNo4tPec0KKqyQnrFMII
cumulus
set_password
Install a License
Use the following function to include error checking for license file
installation.
function install_license(){
# Install license
echo $1 | /usr/cumulus/bin/cl-license -i
return_code=$?
else
https://docs.cumulusnetworks.com 127
Cumulus Linux v4.2 User Documentation Installation Management
/usr/cumulus/bin/cl-license
exit 1
fi
function tests that each DNS name resolves into a reachable IP address.
Call this function with each DNS target used in your script before you use
the DNS name elsewhere in your script.
function ping_until_reachable(){
last_code=1
max_tries=30
tries=0
"$max_tries" ]; do
128 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
tries=$((tries+1))
last_code=$?
sleep 1
done
]; then
exit 1
fi
Linux release is running currently and upgrades the node if the release is
not the target release. If the release is the target release, normal ZTP tasks
execute. This script calls the ping_until_reachable script (described above)
to make sure the server holding the image server and the ZTP script is
reachable.
https://docs.cumulusnetworks.com 129
Cumulus Linux v4.2 User Documentation Installation Management
function init_ztp(){
CUMULUS_TARGET_RELEASE=3.5.3
IMAGE_SERVER_HOSTNAME=webserver.example.com
if [ "$CUMULUS_TARGET_RELEASE" != "$CUMULUS_CURRENT_RELEASE" ];
then
ping_until_reachable $IMAGE_SERVER_HOSTNAME
else
fi
exit 0
If you apply a management VRF in your script, either apply it last or reboot
130 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
instead. If you do not apply a management VRF last, you need to prepend
any commands that require eth0 to communicate out with /usr/bin/ip vrf
exec mgmt; for example, /usr/bin/ip vrf exec mgmt apt-get update -y.
provisioning callback:
http://ansible.example.com/api/v2/job_templates/1111/callback/
Make sure to disable the DHCP hostname override setting in your script
function set_hostname(){
dhclient-exit-hooks.d/dhcp-sethostname
hostnamectl set-hostname $1
https://docs.cumulusnetworks.com 131
Cumulus Linux v4.2 User Documentation Installation Management
NOTE
Not all aspects of NCLU are supported when running during ZTP.
When you use NCLU in ZTP scripts, add the following loop to make sure
last_code=1
last_code=$?
done
132 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
net commit
There are a few commands you can use to test and debug your ZTP scripts.
You can use verbose mode to debug your script and see where your script
demo.sh
22:44:17 2016):
http://192.0.2.1/demo.sh
https://docs.cumulusnetworks.com 133
Cumulus Linux v4.2 User Documentation Installation Management
To see if ZTP is enabled and to see results of the most recent execution,
you can run the ztp -s command.
cumulus@switch:~$ ztp -s
ZTP INFO:
State enabled
Version 1.0
URL http://192.0.2.1/demo.sh
If ZTP runs when the switch boots and not manually, you can run the
systemctl -l status ztp.service then journalctl -l -u ztp.service to
134 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
Docs: man:ztp(8)
status=1/FAILURE)
not found
Executing http://192.0.2.1/demo.sh
returned failure
https://docs.cumulusnetworks.com 135
Cumulus Linux v4.2 User Documentation Installation Management
cumulus@switch:~$
x86_64-dell_s6010_s1220-rUNKNOWN
x86_64-dell_s6010_s1220
136 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
x86_64-dell
partitions
not found
Executing http://192.0.2.1/demo.sh
https://docs.cumulusnetworks.com 137
Cumulus Linux v4.2 User Documentation Installation Management
returned failure
Instead of running journalctl, you can see the log history by running:
it...
x86_64-dell_s6010_s1220-rUNKNOWN
138 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
x86_64-dell_s6010_s1220
x86_64-dell
Parsing partitions
DHCP Request
https://docs.cumulusnetworks.com 139
Cumulus Linux v4.2 User Documentation Installation Management
Executing http://192.0.2.1/demo.sh
returned failure
If you see that the issue is a script failure, you can modify the script and
then run ZTP manually using ztp -v -r <URL/path to that script>, as
above.
demo.sh
22:44:17 2019):
140 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
http://192.0.2.1/demo.sh
State enabled
Version 1.0
URL http://192.0.2.1/demo.sh
Use the following command to check syslog for information about ZTP:
https://docs.cumulusnetworks.com 141
Cumulus Linux v4.2 User Documentation Installation Management
ztp_oob_windows.sh
downloaded payload.
Manual: Retrying
142 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
downloaded payload.
Manual: Retrying
downloaded payload.
Manual: Retrying
returned failure
failed. Exiting...
Errors in syslog for ZTP like those shown above often occur if the script is
https://docs.cumulusnetworks.com 143
Cumulus Linux v4.2 User Documentation Installation Management
Use the cat -v ztp.sh command to view the contents of the script and
#!/bin/bash^M
^M
###################^M
# ZTP Script^M
###################^M
^M
/usr/cumulus/bin/cl-license -i http://192.168.0.254/
license.txt^M
^M
ZTP"' &^M
^M
exit 0^M
^M
#CUMULUS-AUTOPROVISIONING^M
root@oob-mgmt-server:/var/www/html#
144 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
The ^M characters in the output of your ZTP script, as shown above, indicate
Use the translate (tr) command on any Linux system to remove the '\r'
#!/bin/bash
###################
# ZTP Script
###################
/usr/cumulus/bin/cl-license -i http://192.168.0.254/license.txt
ZTP"' &
exit 0
#CUMULUS-AUTOPROVISIONING
root@oob-mgmt-server:/var/www/html#
https://docs.cumulusnetworks.com 145
Cumulus Linux v4.2 User Documentation Installation Management
NOTE
Enabling ZTP means that ZTP tries to run the next time the switch
boots. However, if ZTP already ran on a previous boot up or if a
manual configuration has been found, ZTP will just exit without
trying to look for any script.
• Password changes
• Users and groups changes
• Packages changes
• Interfaces changes
When the switch is booted for the very first time, ZTP records the
state of important files that are most likely going to be modified
after a reset.
146 https://docs.cumulusnetworks.com
Installation Management Cumulus Linux v4.2 User Documentation
To reset ZTP to its original state, use the -R option. This removes the ztp
directory and ZTP runs the next time the switch reboots.
ZTP INFO:
State disabled
Version 1.0
Result success
https://docs.cumulusnetworks.com 147
Cumulus Linux v4.2 User Documentation Installation Management
URL None
You can run the NCLU net show system ztp script or net show system ztp
Considerations
• You can use the Cumulus Linux onie-select -i command to cause the
148 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
System Configuration
This section describes how to configure your Cumulus Linux switch. You
can set the date and time, configure authentication, authorization, and
accounting and configure access control lists (ACLs), which control the
This section also describes the services and daemons that Cumulus Linux
uses, and describes how to configure switchd, the daemon at the heart of
Cumulus Linux.
https://docs.cumulusnetworks.com 149
Cumulus Linux v4.2 User Documentation System Configuration
NCLU resides in the Linux user space and provides consistent access to
networking commands directly through bash, making configuration and
troubleshooting simple and easy; no need to edit files or enter modes and
sub-modes. NCLU provides these benefits:
150 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
The NCLU wrapper utility called net is capable of configuring layer 2 and
troubleshooting functionality for these features. You can configure both the
/etc/network/interfaces and /etc/frr/frr.conf files with net, in addition
NCLU Basics
Use the following workflow to stage and commit changes to Cumulus Linux
with NCLU:
https://docs.cumulusnetworks.com 151
Cumulus Linux v4.2 User Documentation System Configuration
1. Use the net add and net del commands to stage and remove
configuration changes.
2. Use the net pending command to review staged changes.
3. Use net commit and net abort to commit and delete staged changes.
NOTE
commit.
When you have a running configuration, you can review and update the
configuration with the following commands:
history of commits using NCLU, and net show bgp to view BGP status.
• net clear provides a way to clear net show counters, BGP and OSPF
152 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
configuration.
• net commit confirm requires you to press Enter to commit changes using
NCLU. If you run net commit confirm but do not press Enter within 10
• net commit permanent retains the backup file taken when committing the
change. Otherwise, the backup files created from NCLU commands are
cleaned up periodically.
NOTE
The net del all command does not remove management VRF
https://docs.cumulusnetworks.com 153
Cumulus Linux v4.2 User Documentation System Configuration
prefixlen
<552-9216> :
NCLU has a comprehensive built in help system. In addition to the net man
page, you can use ?and help to display available commands:
Usage:
154 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Linux switches.
using net.
net abort
[description <wildcard>]
https://docs.cumulusnetworks.com 155
Cumulus Linux v4.2 User Documentation System Configuration
[commands|files|acl|bgp|multicast|ospf|ospf6]
Options:
# Help commands
# Configuration commands
# Status commands
156 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
set|no-as-set]
addpath-tx-bestpath-per-AS
tx-bestpath-per-AS
addpath-tx-bestpath-per-AS
tx-bestpath-per-AS
per-AS
relax [as-set|no-as-set]
<bgppeer> addpath-tx-bestpath-per-AS
https://docs.cumulusnetworks.com 157
Cumulus Linux v4.2 User Documentation System Configuration
<bgppeer> addpath-tx-bestpath-per-AS
<bgppeer> addpath-tx-bestpath-per-AS
<bgppeer> addpath-tx-bestpath-per-AS
bestpath-per-AS
NOTE
158 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
To search for specific NCLU commands so that you can identify the correct
syntax to use, run the net help verbose | <term> command. For example,
clag-id <0-65535>
route|our-multicast-router-ports|peer-macs|peer-multicast-
entries|peer-multicast-route|peer-multicast-router-
https://docs.cumulusnetworks.com 159
Cumulus Linux v4.2 User Documentation System Configuration
vrf <text>)
(<ipv4>|<ipv6>|linklocal)
...
While tab completion is enabled by default, you can also configure NCLU to
use the ? (question mark character) to look at available commands. To
enable this feature for the cumulus user, open the following file:
160 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Uncomment the very last line in the .inputrc file so that the file changes
from this:
# ?: complete
to this:
?: complete
Save the file and reconnect to the switch. The ? (question mark) abilitywill
cumulus@switch:~$ net
https://docs.cumulusnetworks.com 161
Cumulus Linux v4.2 User Documentation System Configuration
NOTE
Built-In Examples
acl : access-list
162 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
802.1X EAPOL
Scenario
========
following
https://docs.cumulusnetworks.com 163
Cumulus Linux v4.2 User Documentation System Configuration
swp3
/\
swp1 / \ swp2
/ \
/ \
host-11 host-12
====================
164 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Verification
============
You can configure user accounts in Cumulus Linux with read-only or edit
permissions for NCLU:
net show commands, such as net show interface or net show config,
and certain general Linux commands, such as ls, cd or man, but cannot
• You create user accounts with edit permissions for NCLU by adding them
to the netedit group. A user in the netedit group can run NCLU
configuration commands, such net add, net del or net commit in addition
https://docs.cumulusnetworks.com 165
Cumulus Linux v4.2 User Documentation System Configuration
...
Done
...
166 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Done
NOTE
You can use the adduser command for local user accounts only. You
can use the addgroup command for both local and remote user
accounts. For a remote user account, you must use the mapping
username, such as tacacs3 or radius_user, not the TACACS or
If the user tries to run commands that are not allowed, the following error
displays:
networking changes.
https://docs.cumulusnetworks.com 167
Cumulus Linux v4.2 User Documentation System Configuration
Instead of using the NCLU commands described above, you can manually
configure users and groups to be able to run NCLU commands.
For example, if you want the user netoperator to be able to run both edit
and show commands, add the user to the users_with_edit and
groups_with_edit = netedit
To configure a new user group to use NCLU, add that group to the
groups_with_edit and groups_with_show lines in the file.
168 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
WARNING
Whenever you modify netd.conf or when NSS services change, you must
You can easily back up your NCLU configuration to a file by outputting the
contents of the file using the source command. You can then view the
configuration at any time or copy it to other switches and use the source
For example, to copy the configuration of a leaf switch called leaf01, run the
following command:
https://docs.cumulusnetworks.com 169
Cumulus Linux v4.2 User Documentation System Configuration
With the commands all stored in a single file, you can now copy this file to
another ToR switch in your network called leaf01 and apply the
configuration by running:
Advanced Configuration
configure this file to allow different permission levels for users to edit
configurations and run show commands. The file also contains a blacklist
that hides less frequently used terms from the tabbed autocomplete.
After you edit the netd.conf file, restart the netd service for the changes to
take effect.
170 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Config
onfigur
ura
ation
Def
Defa
ault Setting De
Desscription
Variable
https://docs.cumulusnetworks.com 171
Cumulus Linux v4.2 User Documentation System Configuration
Config
onfigur
ura
ation
Def
Defa
ault Setting De
Desscription
Variable
172 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Config
onfigur
ura
ation
Def
Defa
ault Setting De
Desscription
Variable
bridge-waitport,
broadcast, link-type,
mstpctl-ageing,
mstpctl-fdelay,
mstpctl-forcevers,
mstpctl-hello,
mstpctl-maxage,
mstpctl-maxhops,
mstpctl-portp2p,
mstpctl-
portpathcost,
mstpctl-
portrestrtcn,
mstpctl-
treeportcost,
mstpctl-
treeportprio,
mstpctl-
txholdcount,
netmask, preferred-
lifetime, scope,
vxlan-ageing, vxlan-
learning, vxlan-port,
up, down, bridge-
gcint, bridge-
mcqifaddr, bridge-
mcqv4src
https://docs.cumulusnetworks.com 173
Cumulus Linux v4.2 User Documentation System Configuration
IMPORTANT
Considerations
174 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
You can use one of two methods to set the time zone on the switch:
US/Eastern
Edit the file to add your desired time zone. A list of valid time zones can be
found here.
Use the following command to apply the new time zone immediately.
noninteractive tzdata
https://docs.cumulusnetworks.com 175
Cumulus Linux v4.2 User Documentation System Configuration
To set the time zone using the guided wizard, run dpkg-reconfigure tzdata
as root:
176 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
The switch contains a battery backed hardware clock that maintains the
time while the switch is powered off and in between reboots. When the
switch is running, the Cumulus Linux operating system maintains its own
software clock.
During boot up, the time from the hardware clock is copied into the
operating system’s software clock. The software clock is then used for all
You can set the date and time on the software clock using the date
NOTE
Then, to set the system clock according to the time zone configured:
https://docs.cumulusnetworks.com 177
Cumulus Linux v4.2 User Documentation System Configuration
You can write the current value of the system (software) clock to the
hardware clock using the hwclock command:
Use NTP
The ntpd daemon running on the switch implements the NTP protocol. It
synchronizes the system time with time servers listed in the /etc/ntp.conf
file. The ntpd daemon is started at boot by default. See man ntpd(8) for
details.
NOTE
178 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
The default NTP configuration comprises the following servers, which are
https://docs.cumulusnetworks.com 179
Cumulus Linux v4.2 User Documentation System Configuration
•
NCLU Commands Linux Commands
4.cumulusnetworks.pool.ntp.org iburst
These commands add the NTP server to the list of servers in the /etc/
ntp.conf file:
# pool: <http://www.pool.ntp.org/join.html>
180 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
NOTE
To set the initial date and time with NTP before starting the ntpd
Be aware that ntpd -q can hang if the time servers are not
reachable.
-p /var/run/ntpd.pid -g -u 101:102
https://docs.cumulusnetworks.com 181
Cumulus Linux v4.2 User Documentation System Configuration
•
NCLU Commands Linux Commands
==============================================================================
182 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
Run the net del time ntp <server> command. The following example
0.cumulusnetworks.pool.ntp.org
1.cumulusnetworks.pool.ntp.org
2.cumulusnetworks.pool.ntp.org
3.cumulusnetworks.pool.ntp.org
By default, the source interface that NTP uses is eth0. To change the source
interface:
https://docs.cumulusnetworks.com 183
Cumulus Linux v4.2 User Documentation System Configuration
•
NCLU Commands Linux Commands
Run the net add time ntp source <interface> command. The
...
# Specify interfaces
...
You can use DHCP to specify your NTP servers. Ensure that the DHCP-
generated configuration file named /run/ntp.conf.dhcp exists. This file is
184 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
copy of the default /etc/ntp.conf with a modified server list from the
DHCP server. If this file does not exist and you plan on using DHCP in the
future, you can copy your current /etc/ntp.conf file to the location of the
DHCP file.
To use DHCP to specify your NTP servers, run the sudo -E systemctl edit
[Service]
ExecStart=
NOTE
https://docs.cumulusnetworks.com 185
Cumulus Linux v4.2 User Documentation System Configuration
If the state is not Active, or the alternate configuration file does not appear
in the ntp command line, it is likely that a mistake was made. In this case,
correct the mistake and rerun the three commands above to verify.
NOTE
When you use the above procedure to specify your NTP servers,
the NCLU commands for changing NTP settings do not take effect.
For added security, you can configure NTP to use authorization keys.
#65535 M akey
#1 M pass
186 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
1 M CumulusLinux!
keys /etc/ntp/ntp.keys
trustedkey 1
controlkey 1
requestkey 1
1. Create the same .keys file you created on the NTP server (/etc/
https://docs.cumulusnetworks.com 187
Cumulus Linux v4.2 User Documentation System Configuration
#65535 M akey
#1 M pass
1 M CumulusLinux!
2. Edit the /etc/ntp.conf file to specify the server you want to use, the key
For example:
...
#pool ntp.your-provider.example
# OR
#server ntp.your-provider.example
# pool: <http://www.pool.ntp.org/join.html>
188 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
#keys
keys /etc/ntp.keys
trustedkey 1
controlkey 1
requestkey 1
...
4. Wait a few minutes, then run the ntpq -c as command to verify the
configuration:
cumulus@switch:~$ ntpq -c as
https://docs.cumulusnetworks.com 189
Cumulus Linux v4.2 User Documentation System Configuration
===========================================================
cumulus@switch:~$ ntpq -c as
===========================================================
190 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
degree of accuracy.
A boundary clock has multiple ports; one or more master ports and one or
more slave ports. The master ports provide time (the time can originate
from other masters further up the hierarchy) and the slave ports receive
time. The boundary clock absorbs sync messages in the slave port, uses
that port to set its clock, then generates new sync messages from this clock
out of all of its master ports.
Cumulus Linux includes the linuxptp package for PTP, which uses the
phc2sys daemon to synchronize the PTP clock with the system clock.
NOTE
https://docs.cumulusnetworks.com 191
Cumulus Linux v4.2 User Documentation System Configuration
In the following example, boundary clock 2 receives time from Master 1 (the
grandmaster) on a PTP slave port, sets its clock and passes the time down
from the PTP master port to boundary clock 1. Boundary clock 1 receives
the time on a PTP slave port, sets its clock and passes the time down the
hierarchy through the PTP master ports to the hosts that receive the time.
192 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
following line:
ptp.timestamping = TRUE
2. Restart switchd:
WARNING
https://docs.cumulusnetworks.com 193
Cumulus Linux v4.2 User Documentation System Configuration
1. Configure the interfaces on the switch that you want to use for PTP. Each
interface must be configured as a layer 3 routed interface with an IP
address.
NOTE
10.0.0.9/32
10.0.0.10/32
boundary clock.
• Set the priority, which selects the best master clock. You can set
priority 1 or 2. For each priority, you can use a number between 0 and
255. The default priority is 255. For the boundary clock, use a number
above 128. The lower priority is applied first.
194 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
• Add the PTP master and slave interfaces. You do not specify which is a
master interface and which is a slave interface; this is determined by
the PTP packet received. The following commands provide an example
configuration:
https://docs.cumulusnetworks.com 195
Cumulus Linux v4.2 User Documentation System Configuration
phc2sys.service
phc2sys.service
Example Configuration
In the following example, the boundary clock on the switch receives time
from Master 1 (the grandmaster) on PTP slave port swp3s0, sets its clock
and passes the time down through PTP master ports swp3s1, swp3s2, and
swp3s3 to the hosts that receive the time.
196 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
The configuration for the above example is shown below. The example
assumes that you have already configured the layer 3 routed interfaces
(swp3s0, swp3s1, swp3s2, and swp3s3) you want to use for PTP.
https://docs.cumulusnetworks.com 197
Cumulus Linux v4.2 User Documentation System Configuration
To view a summary of the PTP configuration on the switch, run the net show
ptp
global
slaveOnly
priority1
255
priority2
255
domainNumber
198 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
logging_level
path_trace_enabled
use_syslog
verbose
summary_interval
time_stamping
hardware
gmCapable
swp15s0
swp15s1
https://docs.cumulusnetworks.com 199
Cumulus Linux v4.2 User Documentation System Configuration
...
To view PTP status information, run the net show ptp parent_data_set
command:
parent_data_set
===============
parentPortIdentity 000200.fffe.000001-1
parentStats 0
observedParentOffsetScaledLogVariance 0xffff
observedParentClockPhaseChangeRate 0x7fffffff
grandmasterPriority1 127
gm.ClockClass 248
gm.ClockAccuracy 0xfe
gm.OffsetScaledLogVariance 0xffff
grandmasterPriority2 127
grandmasterIdentity 000200.fffe.000001
nanoseconds from the master clock, run the sudo pmc -u -b 0 'GET
200 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
TIME_STATUS_NP' command:
TIME_STATUS_NP
master_offset 12610
ingress_time 1525717806521177336
cumulativeScaledRateOffset +0.000000000
scaledLastGmPhaseChange 0
gmTimeBaseIndicator 0
lastGmPhaseChange 0x0000'0000000000000000.0000
gmPresent true
gmIdentity 000200.fffe.000005
TIME_STATUS_NP
master_offset 0
ingress_time 0
cumulativeScaledRateOffset +0.000000000
scaledLastGmPhaseChange 0
gmTimeBaseIndicator 0
lastGmPhaseChange 0x0000'0000000000000000.0000
gmPresent false
gmIdentity 000200.fffe.000005
https://docs.cumulusnetworks.com 201
Cumulus Linux v4.2 User Documentation System Configuration
TIME_STATUS_NP
master_offset 5544033534
ingress_time 1525717812106811842
cumulativeScaledRateOffset +0.000000000
scaledLastGmPhaseChange 0
gmTimeBaseIndicator 0
lastGmPhaseChange 0x0000'0000000000000000.0000
gmPresent true
gmIdentity 000200.fffe.000005
To delete PTP configuration, delete the PTP master and slave interfaces.
The following example commands delete the PTP interfaces swp3s0, swp3s1,
and swp3s2.
202 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Related Information
https://docs.cumulusnetworks.com 203
Cumulus Linux v4.2 User Documentation System Configuration
Authentication, Authorization
and Accounting
This section describes how to set up user accounts, ssh for remote access,
LDAP authentication, TACACS+, and RADIUS AAA.
204 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
1. To generate the SSH key pair, run the ssh-keygen command and follow
the prompts:
IMPORTANT
cumulus@leaf01:~$ ssh-keygen
id_rsa):
https://docs.cumulusnetworks.com 205
Cumulus Linux v4.2 User Documentation System Configuration
id_rsa.
id_rsa.pub.
5a:b4:16:a0:f9:14:6b:51:f6:f6:c0:76:1a:35:2b:bb cumulus@leaf04
+---[RSA 2048]----+
| +.o o |
| o * o . o |
| o + o O o |
| + . = O |
| . S o . |
| + . |
| . E |
| |
| |
+-----------------+
2. To copy the generated public key to the desired location, run the ssh-
206 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
id_rsa.pub cumulus@leaf02
established.
b1:ce:b7:6a:20:f4:06:3a:09:3c:d9:42:de:99:66:6e.
cumulus@leaf01's password:
different from the username on the local switch. To work around this
issue, use the scp command instead:
authorized_keys
id_rsa.pub
https://docs.cumulusnetworks.com 207
Cumulus Linux v4.2 User Documentation System Configuration
3. Connect to the remote switch to confirm that the authentication keys are
in place:
designed for
site at:
http://community.cumulusnetworks.com
on a world-wide basis.
Related Information
208 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
User Accounts
By default, Cumulus Linux has two user accounts: cumulus and root.
• Uses the default password cumulus. You are required to change the
default password when you log into Cumulus Linux for the first time.
• Is a user account in the sudo group with sudo privileges.
• Can log in to the system through all the usual channels, such as console
and SSH.
• Along with the cumulus group, has both show and edit rights for NCLU.
• Has the standard Linux root user access to everything on the switch
• Disabled password prohibits login to the switch by SSH, telnet, FTP, and
so on
You can add additional user accounts as needed. Like the cumulus account,
these accounts must use sudo to execute privileged commands; be sure to
To access the switch without a password, you need to boot into a single
https://docs.cumulusnetworks.com 209
Cumulus Linux v4.2 User Documentation System Configuration
shell/user mode.
You can add and configure user accounts in Cumulus Linux with read-only
or edit permissions for NCLU. For more information, see Configure User
Accounts.
The root user does not have a password and cannot log into a switch using
SSH. This default account behavior is consistent with Debian. To connect to
a switch using the root account, you can do one of the following:
1. In a terminal on your host system (not the switch), check to see if a key
already exists:
2. If a key does not exist, generate a new one by first creating the RSA key
pair:
210 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
3. You are prompted to enter a file in which to save the key (/root/.ssh/
id_rsa). Press Enter to use the home directory of the root user or provide
a different destination.
6. Copy the public key to the switch. SSH to the switch as the cumulus user,
then run:
/root/.ssh/authorized_keys
https://docs.cumulusnetworks.com 211
Cumulus Linux v4.2 User Documentation System Configuration
...
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
...
212 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
You can add more user accounts as needed. Like the cumulus account,
these accounts must use sudo to execute privileged commands.
sudo Basics
sudoers. Use /etc/sudoers.d/ to add to the default sudoers policy. See man
WARNING
Use visudo only to edit the sudoers file; do not use another editor
https://docs.cumulusnetworks.com 213
Cumulus Linux v4.2 User Documentation System Configuration
Errors in the sudoers file can result in losing the ability to elevate
privileges to root. You can fix this issue only by power cycling the
switch and booting into single user mode. Before modifying
sudoers, enable the root user by setting a password for the root
user.
By default, users in the sudo group can use sudo to execute privileged
usermod(8) command. To see which users belong to the sudo group, see
You can run any command as sudo, including su. A password is required.
214 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Password:
sudoers Examples
The following examples show how you grant as few privileges as necessary
to a user or group of users to allow them to perform the required task. For
each example, the system group noc is used; groups are prefixed with an %.
https://docs.cumulusnetworks.com 215
Cumulus Linux v4.2 User Documentation System Configuration
Example
Ca
Cattego
egorry Privilege sud
sudoe
oers
rs Ent
ntrry
Comman
ommandd
216 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Example
Ca
Cattego
egorry Privilege sud
sudoe
oers
rs Ent
ntrry
Comman
ommandd
update
https://docs.cumulusnetworks.com 217
Cumulus Linux v4.2 User Documentation System Configuration
Example
Ca
Cattego
egorry Privilege sud
sudoe
oers
rs Ent
ntrry
Comman
ommandd
show
neighbors*
218 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Example
Ca
Cattego
egorry Privilege sud
sudoe
oers
rs Ent
ntrry
Comman
ommandd
https://docs.cumulusnetworks.com 219
Cumulus Linux v4.2 User Documentation System Configuration
Example
Ca
Cattego
egorry Privilege sud
sudoe
oers
rs Ent
ntrry
Comman
ommandd
Related Information
220 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
• NSS specifies the order of the information sources that are used to
resolve names for each service. Using NSS with authentication and
authorization provides the order and location for user lookup and group
mapping on the system.
• PAM handles the interaction between the user and the system, providing
NOTE
this library worked best with Cumulus Linux and is the easiest to
configure, automate, and troubleshoot.
https://docs.cumulusnetworks.com 221
Cumulus Linux v4.2 User Documentation System Configuration
Install libnss-ldapd
installed on the Cumulus Linux image; however you need to install these
additional packages to use LDAP authentication:
• libnss-ldapd
• libpam-ldapd
• ldap-utils
You can also install these packages even if the switch is not connected to
Follow the interactive prompts to specify the LDAP URI, search base
distinguished name (DN), and services that must have LDAP lookups
enabled. You need to select at least the passwd, group, and shadow services
(press space to select a service). When done, click OK. This creates a very
basic LDAP configuration using anonymous bind and initiates user search
under the base DN specified.
222 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
After the dialog closes, the install process prints information similar to the
following:
After the installation is complete, the name service caching daemon (nslcd)
runs. This service handles all the LDAP protocol interactions and caches
information returned from the LDAP server. ldap is appended in the /etc/
group, and shadow. The local files (/etc/passwd, /etc/groups and /etc/
WARNING
Keep compat as the first source in NSS for passwd, group, and
https://docs.cumulusnetworks.com 223
Cumulus Linux v4.2 User Documentation System Configuration
shadow. This prevents you from getting locked out of the system.
• Edit the /etc/nslcd.conf file to update the LDAP URI and search base
This section documents some of the more important options that relate to
224 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
security and how queries are handled. For details on all the available
configuration options, read the nslcd.conf man page.
NOTE
the /etc/nsswitch.conf file, you must restart netd with the sudo
Connection
The LDAP client starts a session by connecting to the LDAP server on TCP
and UDP port 389 or on port 636 for LDAPS. Depending on the
configuration, this connection might be unauthenticated (anonymous bind);
otherwise, the client must provide a bind user and password. The variables
used to define the connection to the LDAP server are the URI and bind
credentials.
The URI is mandatory and specifies the LDAP server location using the
FQDN or IP address. The URI also designates whether to use ldap:// for
clear text transport, or ldaps:// for SSL/TLS encrypted transport. You can
https://docs.cumulusnetworks.com 225
Cumulus Linux v4.2 User Documentation System Configuration
uri ldaps://ldap.example.com
binddn cn=CLswitch,ou=infra,dc=example,dc=com
bindpw CuMuLuS
Search Function
226 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
base dc=example,dc=com
Search Filters
Attribute Mapping
The map configuration allows you to override the attributes pushed from
LDAP. To override an attribute for a given map, specify the attribute name
and the new value. This is useful to ensure that the shell is bash and the
home directory is /home/cumulus:
https://docs.cumulusnetworks.com 227
Cumulus Linux v4.2 User Documentation System Configuration
NOTE
If you want to use unique home directories, run the sudo pam-auth-update
configuration dialog (press the space bar to select the option). Select OK,
then press Enter to save the update and close the dialog.
228 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
The home directory for any user that logs in (using LDAP or not) is created
and populated with the standard dotfiles from /etc/skel if it does not
already exist.
NOTE
When nslcd starts, you might see an error message similar to the
You can safely ignore this message. The libdb package and
resulting log messages from nslcd do not cause any issues when
https://docs.cumulusnetworks.com 229
Cumulus Linux v4.2 User Documentation System Configuration
Example Configuration
# /etc/nslcd.conf
# for details.
uid nslcd
gid nslcd
uri ldaps://myadserver.rtp.example.test
base ou=support,dc=rtp,dc=example,dc=test
#ldap_version 3
230 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
bindpw 1Q2w3e4r!
#rootpwmoddn cn=admin,dc=example,dc=com
# SSL options
#tls_reqcert demand(default)
tls_cacertfile /etc/ssl/certs/rtp-example-ca.crt
#scope sub
nss_nested_groups yes
https://docs.cumulusnetworks.com 231
Cumulus Linux v4.2 User Documentation System Configuration
pagesize 1000
referrals off
idle_timelimit 1000
# nss_min_uid 1000
# This filter says to get all users who are part of the
# Ref: http://msdn.microsoft.com/en-us/library/
aa746475%28VS.85%29.aspx (LDAP_MATCHING_RULE_IN_CHAIN)
filter passwd
(&(Objectclass=user)(!(objectClass=computer))(memberOf:1.2.840.113556.1.4.1941:=cn
objectSid:S-1-5-21-1391733952-3059161487-1245441232
objectSid:S-1-5-21-1391733952-3059161487-1245441232
232 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
# Filter for any AD group or user in the baseDN. the reason for
# user to make sure group listing for user files don't say
filter group
(&(|(objectClass=group)(Objectclass=user))(!(objectClass=computer)))
objectSid:S-1-5-21-1391733952-3059161487-1245441232
the rules are based on groups, but can also be defined for specific users.
You can add sudo rules using the group names from LDAP. For example, if a
group of users are associated with the group netadmin, you can add a rule
to give those users sudo privileges. Refer to the sudoers manual (man
https://docs.cumulusnetworks.com 233
Cumulus Linux v4.2 User Documentation System Configuration
version works a little differently with Linux-based LDAP clients. Some more
advanced configuration examples, from testing LDAP clients on Cumulus
Linux with Active Directory (AD/LDAP), are available in our knowledge
base.
This helps to create the best filters and verify the information sent back
from the LDAP server.
234 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
information sources in NSS for the passwd service. This simply returns the
user ID, group ID and the group list retrieved from the information source.
In the following example, the user cumulus is locally defined in /etc/passwd,
and myuser is on LDAP. The NSS configuration has the passwd map
cumulus@switch:~$ id cumulus
uid=1000(cumulus) gid=1000(cumulus)
groups=1000(cumulus),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(
cumulus@switch:~$ id myuser
uid=1230(myuser) gid=3000(Development)
groups=3000(Development),500(Employees),27(sudo)
getent
The getent command retrieves all records found with NSS for a given map.
It can also retrieve a specific entry under that map. You can perform tests
with the passwd, group, shadow, or any other map configured in the /etc/
to the map requested. For the passwd service, the structure of the output is
the same as the entries in /etc/passwd. The group map outputs the same
structure as /etc/group.
https://docs.cumulusnetworks.com 235
Cumulus Linux v4.2 User Documentation System Configuration
In this example, looking up a specific user in the passwd map, the user
cumulus:x:1000:1000::/home/cumulus:/bin/bash
In the next example, looking up a specific group in the group service, the
cumulus:x:1000:
netadmin:*:502:larry,moe,curly,shemp
request returns all local and LDAP entries for the passwd and group maps.
LDAP search
server. This does not interact with NSS. This command helps display what
the LDAP daemon process is receiving back from the server. The command
has many options. The simplest option uses anonymous bind to the host
236 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
dc=example,dc=com -x uid=myuser
NCLU
To use NCLU, a user must be in either the netshow or netedit NCLU group in
netedit groups.
In the following example, a user that is not in the netshow or netedit NCLU
group in the LDAP database runs the NCLU net show version command,
To add user to the netshow or netedit NCLU group in the LDAP database,
https://docs.cumulusnetworks.com 237
Cumulus Linux v4.2 User Documentation System Configuration
either edit the /etc/group file manually or use the sudo adduser USERNAME
netshow command, then restart netd. For example, to add the user bill to the
netshow group:
Done.
Now, the user can run the NCLU net show commands successfully:
NCLU_VERSION=1.0-cl4u5
DISTRIB_ID="Cumulus Linux"
DISTRIB_RELEASE=4.1.0
LDAP Browsers
There are several GUI LDAP clients available that help you work with LDAP
servers. These are free tools that show the structure of the LDAP database
graphically.
238 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Troubleshooting
When setting up LDAP authentication for the first time, turn off the nslcd
management VRF) and run it in debug mode. Debug mode works whether
you are using LDAP over SSL (port 636) or an unencrypted LDAP
connection (port 389).
After you enable debug mode, run the following command to test LDAP
queries:
https://docs.cumulusnetworks.com 239
Cumulus Linux v4.2 User Documentation System Configuration
unavailable
myldap_search(base="dc=example,dc=com",
filter="(objectClass=posixAccount)")
uid=myuser,ou=people,dc=example,dc=com
more results
structure is queried.
You can replace myuser with any username on the switch. The following
240 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
unavailable
myldap_search(base="dc=cumulusnetworks,dc=com",
filter="(&(objectClass=posixAccount)(uid=myuser))")
ldap_initialize(ldap://<ip_address>)
ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
ldap_set_option(LDAP_OPT_DEREF,0)
ldap_set_option(LDAP_OPT_TIMELIMIT,0)
https://docs.cumulusnetworks.com 241
Cumulus Linux v4.2 User Documentation System Configuration
ldap_set_option(LDAP_OPT_TIMEOUT,0)
ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
ldap_simple_bind_s(NULL,NULL) (uri="ldap://<ip_address>")
results (0 total)
Common Problems
SSL/TLS
• The FQDN of the LDAP server URI does not match the FQDN in the CA-
signed server certificate exactly.
• nslcd cannot read the SSL certificate and reports a Permission denied
NSCD
• If the nscd cache daemon is also enabled and you make some changes to
242 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
the user from LDAP, you can clear the cache using the following
commands:
• The nscd package works with nslcd to cache name entries returned from
authentication:
NOTE
example:
https://docs.cumulusnetworks.com 243
Cumulus Linux v4.2 User Documentation System Configuration
nslcd@mgmt.service
LDAP
• The search filter returns incorrect results. Check for typos in the search
filter. Use ldapsearch to test your filter.
"(&(ObjectClass=inetOrgUser)(uid=myuser))"
• When a local username also exists in the LDAP database, the order of the
before the local user database. This is generally not recommended. For
example, the configuration below ensures that LDAP is queried before
the local database.
244 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
# /etc/nsswitch.conf
Related Information
• Debian backports
https://docs.cumulusnetworks.com 245
Cumulus Linux v4.2 User Documentation System Configuration
TACACS+
Cumulus Linux implements TACACS+ client AAA (Accounting,
Authentication, and Authorization) in a transparent way with minimal
configuration. The client implements the TACACS+ protocol as described in
Supported Features
• TACACS+ privilege 15 users can run any command with sudo using the
/etc/sudoers.d/tacplus file that is installed by the libtacplus-map1
package
• Up to seven TACACS+ servers
You can install the TACACS+ packages even if the switch is not connected
to the internet, as they are contained in the cumulus-local-apt-archive
246 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
one server and one shared secret (key). You can specify the server and
secret parameters in any order anywhere in the file. Whitespace (spaces or
tabs) are not allowed. For example, if your TACACS+ server IP address is
192.168.0.30 and your shared secret is tacacskey, add these parameters to
secret=tacacskey
server=192.168.0.30
Connections are made in the order in which they are listed in this file. In
most cases, you do not need to change any other parameters. You can add
parameters used by any of the packages to this file, which affects all the
TACACS+ client software. For example, the timeout value for NSS lookups
(see description below) is set to 5 seconds by default in the /etc/
https://docs.cumulusnetworks.com 247
Cumulus Linux v4.2 User Documentation System Configuration
seconds and is set in the /etc/tacplus_servers file. The timeout value is per
When you add or remove TACACS+ servers, you must restart auditd (with
the systemctl restart auditd command) or you must send a signal (with
You can also configure the IP address used as the source IP address when
communicating with the TACACS+ server. See TACACS Configuration
Parameters below for the full list of TACACS+ parameters.
Following is the complete list of the TACACS+ client configuration files, and
their use.
Filename De
Desscription
248 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Filename De
Desscription
tacplus_servers parameters in
the other configuration files that
are installed. Typically, this file
contains the shared secrets;
make sure that the Linux file
mode is 600.
https://docs.cumulusnetworks.com 249
Cumulus Linux v4.2 User Documentation System Configuration
Filename De
Desscription
when libpam-tacplus is
installed or removed.
250 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Filename De
Desscription
WARNING
configuration, you need to integrate these changes yourself. If you are also
using LDAP with the libpam-ldap package, you might need to edit the PAM
configuration to ensure the LDAP and TACACS ordering that you prefer.
https://docs.cumulusnetworks.com 251
Cumulus Linux v4.2 User Documentation System Configuration
The libpam-tacplus are configured to skip over rules and the values in the
user authorization exchange. The client accepts the attribute in either the
mandatory or optional forms and also accepts priv-lvl as the attribute
name. The attribute value must be a numeric string in the range 0 to 15,
NOTE
The only way to do this for non-local users — that is, users not present in
the local password file — is to send a TACACS+ authorization request as the
first communication with the TACACS+ server, prior to the authentication
252 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
the proper configuration if your TACACS+ server does not allow the initial
authorization request.
If a site wants to allow local fallback authentication for a user when none of
the TACACS servers can be reached you can add a privileged user account
as a local account on the switch.
1. Edit the /etc/nsswitch.conf file to remove the keyword tacplus from the
line starting with passwd. (You need to add the keyword back in step 3.)
functionality.
https://docs.cumulusnetworks.com 253
Cumulus Linux v4.2 User Documentation System Configuration
installed, try:
this file.
passwd: files
shadow: files
gshadow: files
...
2. To enable the local privileged user to run sudo and NCLU commands, run
NOTE
254 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
3. Edit the /etc/nsswitch.conf file to add the keyword tacplus back to the
line starting with passwd (the keyword you removed in the first step).
TACACS+ Accounting
additional plugin for auditd/audisp. The plugin maps the auid in the
package.
name and arguments are sent in the accounting record, due to the
TACACS+ field length limitation of 255 bytes.
https://docs.cumulusnetworks.com 255
Cumulus Linux v4.2 User Documentation System Configuration
NOTE
Configure the IP address and encryption key of the server in the /etc/
process to reread the configuration. The example below shows that the
management VRF is named mgmt. You can place the vrf parameter in
either the /etc/tacplus_servers file or in the /etc/audisp/audisp-
tac_plus.conf file.
vrf=mgmt
256 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
After editing the configuration file, send the HUP signal killall -HUP
NOTE
For more information, refer to the audisp.8 and auditd.8 man pages.
are created automatically. All tacacs0 through tacacs15 users are added to
the netshow group.
For any TACACS+ users to execute net add, net del, and net commit
commands and to restart services with NCLU, you need to add those users
user and, depending upon your policies, other users (tacacs1 through
tacacs14) to this variable.
To give a TACACS+ user access to the show commands, add the tacacs
group to the groups_with_show variable.
https://docs.cumulusnetworks.com 257
Cumulus Linux v4.2 User Documentation System Configuration
WARNING
is dangerous and can potentially enable any user to log into the
switch as the root user.
...
groups_with_edit = netedit
...
After you save and exit the netd.conf file, restart the netd service. Run:
258 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
make this an enforced authorization, you must change the TACACS+ login
to use a restricted shell, with a very limited executable search path.
Otherwise, the user can bypass the authorization. The tacplus-restrict
below initializes the environment for the tacacs0 user account. This is the
account used for TACACS+ users at privilege level 0.
executing
https://docs.cumulusnetworks.com 259
Cumulus Linux v4.2 User Documentation System Configuration
Option De
Desscription
260 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Option De
Desscription
For example, if you want to allow the user to be able to run the net and ip
total 12
auth
auth
Other than shell built-ins, the only two commands the privilege level 0
TACACS users can run are the ip and net commands.
If you mistakenly add potential commands with the -a option, you can
remove them. The example below shows how to remove the net command:
https://docs.cumulusnetworks.com 261
Cumulus Linux v4.2 User Documentation System Configuration
Use the man command on the switch for more information on tacplus-auth
and tacplus-restrict.
NSS Plugin
without a local account on the system using the NSS plugin that comes
with the tacplus_nss package. The plugin uses the mapped tacplus
information if the user is not found in the local password file, provides the
getpwnam() and getpwuid()entry point,s and uses the TACACS+
authentication functions.
The plugin asks the TACACS+ server if the user is known, and then for
relevant attributes to determine the privilege level of the user. When the
262 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
tacplus as the first lookup method for passwd. If the order is changed,
and the lookup searches for the name in the local password file. For
example, privilege level 15 searches for the tacacs15 user. If the user is
found, the password structure is filled in with information for the user.
If the user is not found, the privilege level is decremented and checked
again until privilege level 0 (user tacacs0) is reached. This allows use of
only the two local users tacacs0 and tacacs15, if minimal configuration is
desired.
Config
onfigur
ura
ation Option De
Desscription
https://docs.cumulusnetworks.com 263
Cumulus Linux v4.2 User Documentation System Configuration
Config
onfigur
ura
ation Option De
Desscription
264 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Config
onfigur
ura
ation Option De
Desscription
https://docs.cumulusnetworks.com 265
Cumulus Linux v4.2 User Documentation System Configuration
Config
onfigur
ura
ation Option De
Desscription
266 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Config
onfigur
ura
ation Option De
Desscription
accounts in /etc/passwd
(/home/tacacs0 … /home/
tacacs15) is used. If the home
directory does not exist, it is
created with the
mkhomedir_helper program, in
the same way as
pam_mkhomedir.
This option is not honored for
accounts with restricted shells
when per-command
authorization is enabled.
https://docs.cumulusnetworks.com 267
Cumulus Linux v4.2 User Documentation System Configuration
Config
onfigur
ura
ation Option De
Desscription
268 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Troubleshooting
correctly and if the local password is stored in the configuration files. In the
example commands below, the cumulus user represents the local user,
while cumulusTAC represents the TACACS user.
15,,,:/home/tacacs15:/bin/bash
cumulus:x:1000:1000:cumulus,,,:/home/cumulus:/bin/bash
https://docs.cumulusnetworks.com 269
Cumulus Linux v4.2 User Documentation System Configuration
15,,,:/home/tacacs15:/bin/bash
• /etc/tacplus_servers
• /etc/tacplus_nss.conf
NOTE
pam.d/common*.
The TACACS client on the switch and the TACACS server should have the
same shared secret key. If this key is incorrect, the following message is
printed to syslog:
270 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
authorization
https://docs.cumulusnetworks.com 271
Cumulus Linux v4.2 User Documentation System Configuration
executing
authorization
DISTRIB_ID="Cumulus Linux"
DISTRIB_RELEASE=4.1.0
To disable debugging:
If you have added or deleted TACACS+ servers from the configuration files,
make sure you notify the audisp plugin with this command:
272 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
If accounting records are still not being sent, add debug=1 to the /etc/
the plugin. Ask the TACACS+ user to run a command and examine the end
of /var/log/syslog for messages from the plugin. You can also check the
are being written. If they are not, restart the audit daemon with:
The following table describes the different pieces of software involved with
delivering TACACS.
Pack
ackage
age Name De
Desscription
https://docs.cumulusnetworks.com 273
Cumulus Linux v4.2 User Documentation System Configuration
Pack
ackage
age Name De
Desscription
274 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Pack
ackage
age Name De
Desscription
Considerations
on the switch: eth0, eth1, or the VRF management interface. The TACACS+
client is not supported through bonds, switch virtual interfaces (SVIs), or
switch port interfaces (swp).
If two or more TACACS+ users are logged in simultaneously with the same
privilege level, while the accounting records are maintained correctly, a
lookup on either name will match both users, while a UID lookup will only
return the user that logged in first.
This means that any processes run by either user will be attributed to both,
and all files created by either user will be attributed to the first name
matched. This is similar to adding two local users to the password file with
the same UID and GID, and is an inherent limitation of using the UID for the
base user from the password file.
https://docs.cumulusnetworks.com 275
Cumulus Linux v4.2 User Documentation System Configuration
NOTE
The current algorithm returns the first name matching the UID from
the mapping file; this can be the first or the second user that
logged in.
To work around this issue, you can use the switch audit log or the TACACS
server accounting logs to determine which processes and files are created
by each user.
The Linux auditd system does not always generate audit events for
processes when terminated with a signal (with the kill system call or
276 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
TACACS+ and other non-local users that run the deluser command with the
--remove-home option will see an error about not finding the user in /etc/
passwd:
code 1. Exiting
However, the command does remove the home directory. The user can still
log in on that account, but will not have a valid home directory. This is a
known upstream issue with the deluser command for all non-local users.
command is in use.
When you have both the TACACS+ and the RADIUS AAA client installed,
RADIUS login is not attempted. As a workaround, do not install both the
TACACS+ and the RADIUS AAA client on the same switch.
https://docs.cumulusnetworks.com 277
Cumulus Linux v4.2 User Documentation System Configuration
RADIUS AAA
Cumulus Linux works with add-on packages that enable RADIUS you to log
in to the switch in a transparent way with minimal configuration. There is no
need to create accounts or directories on the switch. Authentication is
handled with PAM and includes login, ssh, sudo and su.
You can install the RADIUS packages even if the switch is not connected to
radius-auth
After installation is complete, either reboot the switch or run the sudo
client is a newer version than the one in Debian Buster. This package
contains support for IPv6, the src_ip option described below, as well as a
278 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
number of bug fixes and minor features. The package also includes VRF
support, provides man pages describing the PAM and RADIUS
configuration, and sets the SUDO_PROMPT environment variable to the login
logged in RADIUS users to the group member list for groups that contain
the mapped_user (radius_user) if the RADIUS account is unprivileged, and
add privileged RADIUS users to the group member list for groups that
contain the mapped_priv_user (radius_priv_user) during the group lookups.
the mapuser and mapuid plugins. If you remove or purge the packages,
these files are modified to remove the configuration for these plugins.
• The radius_shell package is added, which installs the /sbin/
radius_shell and setcap cap_setuid program used as the login shell for
RADIUS accounts. The package adjusts the UID when needed, then runs
the bash shell with the same arguments. When installed, the package
changes the shell of the RADIUS accounts to /sbin//radius_shell, and
https://docs.cumulusnetworks.com 279
Cumulus Linux v4.2 User Documentation System Configuration
enables all RADUS logins to run NCLU net show commands and all
privileged RADIUS users to also run net add, net del, and net commit
TIP
Multiple server configuration lines are verified in the order listed. Other
than memory, there is no limit to the number of RADIUS servers you can
280 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
use.
The server port number or name is optional. The system looks up the
port in the /etc/services file. However, you can override the ports in the
/etc/pam_radius_auth.conf file.
2. If the server is slow or latencies are high, change the timeout setting. The
3. If you want to use a specific interface to reach the RADIUS server, specify
the src_ip option. You can specify the hostname of the interface, an IPv4,
or an IPv6 address. If you specify the src_ip option, you must also
4. Set the vrf-name field. This is typically set to mgmt if you are using a
The configuration file includes the mapped_priv_user field that sets the
account used for privileged RADIUS users and the priv-lvl field that sets
configuration:
https://docs.cumulusnetworks.com 281
Cumulus Linux v4.2 User Documentation System Configuration
mapped_priv_user radius_priv_user
192.168.0.254 secretkey
vrf-name mgmt
TIP
If this is the first time you are configuring the RADIUS client,
uncomment the debug line to help with troubleshooting. The
As an optional step, you can set PAM configuration keywords by editing the
/usr/share/pam-configs/radius file. After you edit the file, you must run the
282 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
NOTE
The privilege level for the user on the switch is determined by the
value of the VSA (Vendor Specific Attribute) shell:priv-lvl. If the
Service-Type = Administrative-User,
Cisco-AVPair = "shell:roles=network-administrator",
Cisco-AVPair += "shell:priv-lvl=15"
Because LDAP is not commonly used with switches and adding accounts
Mapping is done using two NSS (Name Service Switch) plugins, one for
account name, and one for UID lookup. These accounts are configured
automatically in /etc/nsswitch.conf during installation and are removed
https://docs.cumulusnetworks.com 283
Cumulus Linux v4.2 User Documentation System Configuration
when the package is removed. See the nss_mapuser (8) man page for the
For example, if the name being looked up is dave and the fixed account in
the configuration file is radius_user, and that entry in /etc/passwd is:
radius_user:x:1017:1002:radius user:/home/radius_user:/bin/bash
then the matching line returned by running getent passwd dave is:
The home directory /home/dave is created during the login process if it does
not already exist and is populated with the standard skeleton files by the
mkhomedir_helper command.
plugins. The file includes the mapped account name, which is radius_user
by default. You can change the mapped account name by editing the file.
284 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
A flat file mapping is done based on the session number assigned during
login, which persists across su and sudo. The mapping is removed at logout.
If a site wants to allow local fallback authentication for a user when none of
the RADIUS servers can be reached you can add a privileged user account
as a local account on the switch. The local account must have the same
unique identifier as the privileged user and the shell must be the same.
radius_shell johnadmin
2. To enable the local privileged user to run sudo and NCLU commands, run
https://docs.cumulusnetworks.com 285
Cumulus Linux v4.2 User Documentation System Configuration
3. Edit the /etc/passwd file to move the local user line before to the
radius_priv_user line:
...
johnadmin:x:1002:1001::/home/johnadmin:/sbin/radius_shell
radius_priv_user:x:1002:1001::/home/radius_priv_user:/sbin/
radius_shell
4. To set the local password for the local user, run the following command:
In this example, the ops user is not a privileged RADIUS user so they cannot
286 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
add an interface.
changes.
In this example, the admin user is a privileged RADIUS user (with privilege
+0000
16:01:16.057639999 +0000
@@ -3,10 +3,13 @@
source /etc/network/interfaces.d/*.intf
auto lo
https://docs.cumulusnetworks.com 287
Cumulus Linux v4.2 User Documentation System Configuration
auto eth0
+auto swp1
iface swp1
...
radius-auth
When you remove the packages, the plugins are removed from the /etc/
radius-auth
288 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
NOTE
/etc/group file and the home directories are not removed. They
To remove the home directories of the RADIUS users, first get the list by
running:
For all users listed, except the radius_user, run this command to remove the
home directories:
https://docs.cumulusnetworks.com 289
Cumulus Linux v4.2 User Documentation System Configuration
code 1. Exiting.
After removing all the RADIUS users, run the command to remove the fixed
Considerations
mapping file; this might be the first or second user that logged in.
• When you have both the TACACS+ and the RADIUS AAA client installed,
290 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Related Information
• TACACS+ client
https://docs.cumulusnetworks.com 291
Cumulus Linux v4.2 User Documentation System Configuration
Netfilter - ACLs
Netfilter is the packet filtering framework in Cumulus Linux as well as most
other Linux distributions. There are a number of tools available for
configuring ACLs in Cumulus Linux:
administer filtering rules for IPv4 packets, IPv6 packets, and Ethernet
frames (layer 2 using MAC addresses).
• NCLU is a Cumulus Linux-specific userspace tool used to configure
custom ACLs.
iptables, ip6tables, and ebtables to install rules into the kernel. In addition,
on their own.
In many instances, you can use NCLU to configure ACLs; however, in some
cases, you must use cl-acltool. The examples below specify when to use
which tool.
If you need help to configure ACLs, run net example acl to see a basic
configuration:
▼ Example
292 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Chains
Netfilter describes the mechanism for which packets are classified and
controlled in the Linux kernel. Cumulus Linux uses the Netfilter framework
to control the flow of traffic to, from, and across the switch. Netfilter does
not require a separate software daemon to run; it is part of the Linux kernel
userspace applications.
several points in the life of the packet through the system. These five points
are known as chains and are shown here:
https://docs.cumulusnetworks.com 293
Cumulus Linux v4.2 User Documentation System Configuration
• PR
PREEROUT
ROUTIN
ING
G touches packets before they are routed
• IN
INPUT
PUT touches packets after they are determined to be destined for the
local system but before they are received by the control plane software
• FOR
FORW
WARD touches transit traffic as it moves through the box
• OUTPUT touches packets that are sourced by the control plane software
Tables
When building rules to affect the flow of traffic, the individual chains can be
accessed by tables. Linux provides three tables by default:
• Filt
Filte
er classifies traffic or filters traffic
294 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Each table has a set of default chains that can be used to modify or inspect
packets at different points of the path through the switch. Chains contain
the individual rules to influence traffic. Each table and the default chains
they support are shown below. Tables and chains in green are supported by
Cumulus Linux, those in red are not supported (that is, they are not
hardware accelerated) at this time.
https://docs.cumulusnetworks.com 295
Cumulus Linux v4.2 User Documentation System Configuration
Rules
Rules are the items that actually classify traffic to be acted upon. Rules are
applied to chains, which are attached to tables, similar to the graphic
below.
296 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
• Table: The first argument is the table. Notice the second example does
not specify a table, that is because the filter table is implied if a table is
not specified.
• Chain: The second argument is the chain. Each table supports several
take if the packet matches the rule. If this option is omitted in a rule, then
matching the rule will have no effect on the packet’s fate, but the
counters on the rule will be incremented.
get(ss): The target can be a user-defined chain (other than the one this
• Target(
rule is in), one of the special built-in targets that decides the fate of the
All the rules from each chain are read from iptables, ip6tables, and
ebtables and entered in order into either the filter table or the mangle
https://docs.cumulusnetworks.com 297
Cumulus Linux v4.2 User Documentation System Configuration
table. The rules are read from the kernel in the following order:
• IPv6 (ip6tables)
• IPv4 (iptables)
• ebtables
When rules are combined and put into one table, the order determines the
relative priority of the rules; iptables and ip6tables have the highest
The Linux packet forwarding construct is an overlay for how the silicon
underneath processes packets. Be aware of the following:
• The order of operations for how rules are processed is not perfectly
maintained when you compare how iptables and the switch silicon
process packets. The switch silicon reorders rules when switchd writes to
the ASIC, whereas traditional iptables execute the list of rules in order.
• All rules are terminating; after a rule matches, the action is carried out
internal ASIC classification, and continues to process the next rule, which
does the rate-limiting for the matched protocol:
298 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
WARNING
• When processing traffic, rules affecting the FORWARD chain that specify
an ingress interface are performed prior to rules that match on an egress
interface. As a workaround, rules that only affect the egress interface can
have an ingress interface wildcard (currently, only swp+ and bond+ are
supported as wildcard names; see below) that matches any interface
applied so that you can maintain order of operations with other input
https://docs.cumulusnetworks.com 299
Cumulus Linux v4.2 User Documentation System Configuration
If you modify the rules like this, they are performed in order:
interface)
• When using rules that do a mangle and a filter lookup for a packet,
• When using the OUTPUT chain, rules must be assigned to the source. For
example, if a rule is assigned to the switch port in the direction of traffic
but the source is a bridge (VLAN), the traffic is not affected by the rule
and must be applied to the bridge.
• If all transit traffic needs to have a rule applied, use the FORWARD chain,
300 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
• ebtable rules are put into either the IPv4 or IPv6 memory space
NOTE
INPUT and ingress (FORWARD -i) rules occupy the same memory space. A
rule counts as ingress if the -i option is set. If both input and output
options (-i and -o) are set, the rule is considered as ingress and occupies
ACCEPT
https://docs.cumulusnetworks.com 301
Cumulus Linux v4.2 User Documentation System Configuration
NOTE
If you set an output flag with the INPUT chain, you see an error. For
example, running cl-acltool -i on the following rule:
302 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
To increase the number of ACL rules that can be configured, configure the
switch to operate in nonatomic mode.
https://docs.cumulusnetworks.com 303
Cumulus Linux v4.2 User Documentation System Configuration
304 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
You can enable nonatomic updates for switchd, which offer better scaling
because all TCAM resources are used to actively impact traffic. With atomic
updates, half of the hardware resources are on standby and do not actively
impact traffic.
https://docs.cumulusnetworks.com 305
Cumulus Linux v4.2 User Documentation System Configuration
WARNING
or slices in hardware, then that table is switched over to the new groups
or slices.
4. Finally, old resources for that table are freed. This process is repeated for
each of the tables listed above.
5. If sufficient resources do not exist to hold both the new rule set and old
306 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
network traffic.
6. If the regular nonatomic update fails, Cumulus Linux reverts back to the
previous rules.
1. Edit /etc/cumulus/switchd.conf.
acl.non_atomic_update_mode = TRUE
3. Restart switchd:
WARNING
hardware configuration.
https://docs.cumulusnetworks.com 307
Cumulus Linux v4.2 User Documentation System Configuration
NOTE
any rules installed in these cases only are applied to the Linux kernel and
are not hardware accelerated using synchronization to the switch silicon.
Running cl-acltool -i (the installation command) resets all rules and
echo-request -j DROP
Appears to work, and the rule appears when you run cl-acltool -L:
308 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
-------------------------------
-------------------------------
TABLE filter :
However, the rule is not synced to hardware when applied in this way and
running cl-acltool -i or reboot removes the rule without replacing it. To
ensure all rules that can be in hardware are hardware accelerated, place
acltool -i.
To estimate the number of rules you can create from an ACL entry, first
determine if that entry is an ingress or an egress. Then, determine if it is an
IPv4-mac or IPv6 type rule. This determines the slice to which the rule
belongs. Use the following to determine how many entries are used up for
each type.
By default, each entry occupies one double wide entry, except if the entry is
one of the following:
https://docs.cumulusnetworks.com 309
Cumulus Linux v4.2 User Documentation System Configuration
-p icmp -j ACCEPT
into one rule for each combination of input and output interface (listed
after --in-interface and --out-interface below). This entry splits into
four rules:
• An entry with multiple layer 4 port ranges is split into one rule for each
310 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
range (listed after --dports below). For example, this entry splits into two
rules:
1050:1051,1055:1056 -j ACCEPT
NOTE
Cumulus Linux supports matching ACL rules for both ingress and egress
interfaces on both VLAN-aware and traditional mode bridges, including
bridge SVIs (switch VLAN interfaces) for input and output. However, keep
packets.
• You cannot match both input and output interfaces in a rule.
• For routed packets, Cumulus Linux cannot match the output bridge for
SPAN/ERSPAN.
• Matching SVI interfaces in ebtable rules is supported on switches based
https://docs.cumulusnetworks.com 311
Cumulus Linux v4.2 User Documentation System Configuration
[ebtables]
[iptables]
[ebtables]
[iptables]
312 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
On switches with Spectrum ASICs, you can match on VLAN IDs on layer 2
The following example matches on a VLAN and DSCP class, and sets the
internal class of the packet. This can be combined with ingress iptable rules
to get extended matching on IP fields.
[ebtables]
[iptables]
NCLU provides an easy way to create custom ACLs in Cumulus Linux. The
rules you create live in the /var/lib/cumulus/nclu/nclu_acl.conf file, which
https://docs.cumulusnetworks.com 313
Cumulus Linux v4.2 User Documentation System Configuration
50_nclu_acl.rules. This way, the rules you create with NCLU are
content in these files might get updated after you upgrade Cumulus Linux.
ACCEPT
You create this rule, called EXAMPLE1, using NCLU like this:
any
All options, such as the -j and -p, even FORWARD in the above rule, are added
automatically when you apply the rule to the control plane; NCLU figures it
all out for you.
314 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
You can also set a priority value, which specifies the order in which the rules
get executed and the order in which they appear in the rules file. Lower
numbers are executed first. To add a new rule in the middle, first run net
show config acl, which displays the priority numbers. Otherwise, new rules
get appended to the end of the list of rules in the nclu_acl.conf and
50_nclu_acl.rules files.
NOTE
After you add the rule, you need to apply it to an inbound or outbound
interface using net add int acl. The inbound interface in our example is
swp1:
After you commit your changes, you can verify the rule you created with
NCLU by running net show configuration acl:
https://docs.cumulusnetworks.com 315
Cumulus Linux v4.2 User Documentation System Configuration
interface swp1
Or you can see all of the rules installed by running cat on the
50_nclu_acl.rules file:
50_nclu_acl.rules
[iptables]
For INPUT and FORWARD rules, apply the rule to a control plane interface
using net add control-plane:
316 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
inbound
This deletes all rules from the 50_nclu_acl.rules file with that name. It also
You can manage Cumulus Linux ACLs with cl-acltool. Rules are first
NOTE
https://docs.cumulusnetworks.com 317
Cumulus Linux v4.2 User Documentation System Configuration
To examine the current state of chains and list all installed rules, run:
-------------------------------
-------------------------------
TABLE filter :
To list installed rules using native iptables, ip6tables and ebtables, use the
318 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
If the install fails, ACL rules in the kernel and hardware are rolled back to
the previous state. Errors from programming rules in the kernel or ASIC are
reported appropriately.
cl-acltool takes access control list (ACL) rules input in files. Each ACL
policy file contains iptables, ip6tables and ebtables categories under the
https://docs.cumulusnetworks.com 319
Cumulus Linux v4.2 User Documentation System Configuration
Each rule in an ACL policy must be assigned to one of the rule categories
above.
See man cl-acltool(5) for ACL rule details. For iptables rule syntax, see
man iptables(8). For ip6tables rule syntax, see man ip6tables(8). For
See man cl-acltool(5) and man cl-acltool(8) for further details on using
cl-acltool. Some examples are listed here and more are listed later in this
chapter.
NOTE
By default:
cumulus/acl/policy.conf.
320 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
[iptables]
[ip6tables]
[ebtables]
You can use wildcards or variables to specify chain and interface lists to
ease administration of rules.
NOTE
https://docs.cumulusnetworks.com 321
Cumulus Linux v4.2 User Documentation System Configuration
INGRESS = swp+
INPUT_PORT_CHAIN = INPUT,FORWARD
[iptables]
-j ACCEPT
[ip6tables]
-j ACCEPT
[ebtables]
You can write ACL rules for the system into multiple files under the default
/etc/cumulus/acl/policy.d/ directory. The ordering of rules during
installation follows the sort order of the files based on their file names.
Use multiple files to stack rules. The example below shows two rules files
separating rules for management and datapath traffic:
cumulus@switch:~$ ls /etc/cumulus/acl/policy.d/
00sample_mgmt.rules 01sample_datapath.rules
322 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
00sample_mgmt.rules
INGRESS_INTF = swp+
INGRESS_CHAIN = INPUT
[iptables]
udp -j DROP
01sample_datapath.rules
INGRESS_INTF = swp+
[iptables]
icmp -j ACCEPT
https://docs.cumulusnetworks.com 323
Cumulus Linux v4.2 User Documentation System Configuration
192.0.2.4 -j DROP
192.0.2.8 -j DROP
Done.
rules and policies that are not contained in the files referenced by /etc/
cumulus/acl/policy.conf.
324 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
By default, Cumulus Linux installs any .rules file you configure in /etc/
example:
# example:
# include <filepath>
policy files
https://docs.cumulusnetworks.com 325
Cumulus Linux v4.2 User Documentation System Configuration
include /etc/cumulus/acl/policy.d/01_new.datapathacl
• The platform type (switch silicon, like Tomahawk or Spectrum - see the
HCL to determine which platform type applies to a particular switch).
• The mix of IPv4 and IPv6 rules; Cumulus Linux does not support the
maximum number of rules for both IPv4 and IPv6 simultaneously.
• The number of default rules provided by Cumulus Linux.
• Whether the rules are applied on ingress or egress.
• Whether the rules are in atomic or nonatomic mode; nonatomic mode
rules are used when nonatomic updates are enabled (see above).
In the tables below, the default rules count toward the limits listed. The raw
326 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
limits below assume only one ingress and one egress table are present.
The Trident3 ASIC is divided into 12 slices, organized into 4 groups for
ACLs. Each group contains 3 slices. Each group can support a maximum of
768 rules. You cannot mix IPv4 and IPv6 rules within the same group. IPv4
and MAC rules can be programmed into the same group.
https://docs.cumulusnetworks.com 327
Cumulus Linux v4.2 User Documentation System Configuration
normal INPUT chain ACL rules installed with cl-acltool. See default ACL
considerations.
328 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
raw limit
https://docs.cumulusnetworks.com 329
Cumulus Linux v4.2 User Documentation System Configuration
330 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
The Mellanox Spectrum ASIC has one common TCAM for both ingress and
egress, which can be used for other non-ACL-related resources. However,
the number of supported rules varies with the TCAM profile specified for
the switch.
NOTE
Even though the table above specifies that zero IPv6 rules are
supported with the ip-acl-heavy profile, nothing prevents you from
https://docs.cumulusnetworks.com 331
Cumulus Linux v4.2 User Documentation System Configuration
implementation on top of the underlying hardware but they are not always
directly compatible. Here are the supported rules for chains in iptables,
NOTE
To learn more about any of the options shown in the tables below,
run iptables -h [name of option]. The same help syntax works for
<...snip...>
tricolorpolice option:
aware
332 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
second
Ma
Mattche
chess Src/Dst, IP protocol Rules with input/
In/out interface output Ethernet
https://docs.cumulusnetworks.com 333
Cumulus Linux v4.2 User Documentation System Configuration
Stan
tanddard T
Ta
arget
getss ACCEPT, DROP RETURN, QUEUE,
STOP, Fall Thru,
Jump
Ext
xten
endded T
Ta
arget
getss LOG (IPv4/IPv6);
UID is not
supported for LOG
TCP SEQ, TCP
options or IP
options
ULOG
SETQOS
DSCP
Unique to Cumulus
Linux:
SPAN
ERSPAN (IPv4/
IPv6)
POLICE
TRICOLORPOLICE
SETCLASS
334 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Ma
Mattche
chess ether type Inverse matches
input interface/ Proto length
wildcard
output interface/
wildcard
Src/Dst MAC
IP: src, dest, tos,
proto, sport, dport
IPv6: tclass, icmp6:
type, icmp6: code
range, src/dst addr,
sport, dport
802.1p (CoS)
VLAN
Stan
tanddard T
Ta
arget
getss ACCEPT, DROP RETURN,
CONTINUE, Jump,
Fall Thru
Ext
xten
endded T
Ta
arget
getss ULOG
LOG
Unique to Cumulus
Linux:
SPAN
ERSPAN
POLICE
TRICOLORPOLICE
SETCLASS
https://docs.cumulusnetworks.com 335
Cumulus Linux v4.2 User Documentation System Configuration
• Rules that have no matches and accept all packets in a chain are
currently ignored.
• Chain default rules (that are ACCEPT) are also ignored.
switches. Because there are no slices to allocate in the egress TCAM for
IPv6, the matches are implemented using a combination of the ingress IPv6
slice and the existing egress IPv4 MAC slice:
• Cumulus Linux compares all the match fields in the IPv6 ingress slice,
except the --out-interface field, and marks the packet with a classid.
• The egress IPv4 MAC slice matches on the classid and the out-
4)
ACCEPT
336 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
NOTE
Hurricane2 switches.
• You cannot match both input and output interfaces in the
same rule.
• The egress TCAM IPv4 MAC slice is shared with other rules,
which constrains the scale to a much lower limit.
Considerations
Splitting rules across the ingress TCAM and the egress TCAM causes the
ingress IPv6 part of the rule to match packets going to all destinations,
which can interfere with the regular expected linear rule match in a
sequence. For example:
A higher rule can prevent a lower rule from being matched unexpectedly:
ACCEPT
Rule 1 matches all icmp6 packets from to all out interfaces in the ingress
TCAM.`
https://docs.cumulusnetworks.com 337
Cumulus Linux v4.2 User Documentation System Configuration
This prevents rule 2 from getting matched, which is more specific but with
a different out interface. Make sure to put more specific matches above
more general matches even if the output interfaces are different.
When you have two rules with the same output interface, the lower rule
might match unexpectedly depending on the presence of the previous
rules.
Rule 3 still matches for an icmp6 packet with sip 00:01 going out of vlan101.
When you have two adjacent rules with the same match and different
Rule 2 will never be match on ingress. Both rules share the same mark.
338 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
SVI vlan100, the output interface match on vlan100 has to be expanded into
each member port. The -A FORWARD -o vlan100 -p icmp6 -j ACCEPT rule
Matching on an egress port matches all packets egressing the port, tagged
as well as untagged. Therefore, to match only untagged traffic on the port,
you must specify additional rules above this rule to prevent tagged packets
matching the rule. This is true for bridge member ports as well as regular
layer 2 ports. In the example rule above, if vlan101 is also present on the
bridge, add a rule above rule 1 and rule 2 to protect vlan101 tagged traffic:
https://docs.cumulusnetworks.com 339
Cumulus Linux v4.2 User Documentation System Configuration
Common Examples
You can configure quality of service for traffic on both the control plane
and the data plane. By using QoS policers, you can rate limit traffic so
incoming packets get dropped if they exceed specified thresholds.
NOTE
Use the POLICE target with iptables. POLICE takes these arguments:
configuration to value.
• --set-rate value specifies the maximum rate in kilobytes (KB) or
packets.
• --set-burst value specifies the number of packets or kilobytes (KB)
For example, to rate limit the incoming traffic on swp1 to 400 packets per
340 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
second with a burst of 100 packets per second and set the class of the
queue for the policed traffic as 0, set this rule in your appropriate .rules
file:
Here is another example of control plane ACL rules to lock down the switch.
You specify them in /etc/cumulus/acl/policy.d/00control_plane.rules:
The examples here use the mangle table to modify the packet as it transits
the switch. DSCP is expressed in decimal notation in the examples below.
[iptables]
https://docs.cumulusnetworks.com 341
Cumulus Linux v4.2 User Documentation System Configuration
The examples here use the DSCP match criteria in combination with other
IP, TCP, and interface matches to identify traffic and count the number of
packets.
[iptables]
#Match and count the packets that match SSH traffic with DSCP EF
342 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
#Match and count the packets in a port range with DSCP AF41
To verify the counters using the above example rules, first send test traffic
NOTE
https://docs.cumulusnetworks.com 343
Cumulus Linux v4.2 User Documentation System Configuration
tcp "dp=22,dscp=46"
sum=0,
payload=
-------------------------------
-------------------------------
TABLE filter :
source destination
source destination
match 0x2e
344 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
dpts:webmin:2002
ip
payload=
-------------------------------
-------------------------------
TABLE filter :
https://docs.cumulusnetworks.com 345
Cumulus Linux v4.2 User Documentation System Configuration
source destination
source destination
match 0x2e
dpts:webmin:2002
ip
payload=
346 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
-------------------------------
-------------------------------
TABLE filter :
source destination
source destination
match 0x2e
dpts:webmin:2002Still working
https://docs.cumulusnetworks.com 347
Cumulus Linux v4.2 User Documentation System Configuration
The example solution below creates rules on the INPUT and FORWARD
chains to drop ingress IPv4 and IPv6 TCP packets when the SYN bit is set
and the RST, ACK, and FIN bits are reset. The default for the INPUT and
FORWARD chains allows all other packets. The ACL is applied to ports
swp20 and swp21. After configuring this ACL, new TCP sessions that
originate from ingress ports swp20 and swp21 are not allowed. TCP
sessions that originate from any other port are allowed.
INGRESS_INTF = swp20,swp21
[iptables]
DROP
[ip6tables]
DROP
The --syn flag in the above rule matches packets with the SYN bit set and
the ACK, RST, and FIN bits are cleared. It is equivalent to using -tcp-flags
SYN,RST,ACK,FIN SYN. For example, you can write the above rule as:
348 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Run the following NCLU commands to control who can SSH into the switch.
NOTE
used for traffic sent to the CPU, where the destination MAC
https://docs.cumulusnetworks.com 349
Cumulus Linux v4.2 User Documentation System Configuration
Example Configuration
Following are the configurations for the two switches used in these
350 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Switch 1 Configuration
...
/etc/network/interfaces
=======================
auto swp1
iface swp1
auto swp2
iface swp2
auto swp3
iface swp3
auto swp4
iface swp4
auto bond2
iface bond2
auto br-untagged
iface br-untagged
https://docs.cumulusnetworks.com 351
Cumulus Linux v4.2 User Documentation System Configuration
address 10.0.0.1/24
bridge_stp on
auto br-tag100
iface br-tag100
address 10.0.100.1/24
bridge_stp on
...
Switch 2 Configuration
...
/etc/network/interfaces
=======================
auto swp3
iface swp3
auto swp4
iface swp4
352 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
auto br-untagged
iface br-untagged
address 10.0.0.2/24
bridge_ports bond2
bridge_stp on
auto br-tag100
iface br-tag100
address 10.0.100.2/24
bridge_ports bond2.100
bridge_stp on
auto bond2
iface bond2
...
Egress Rule
The following rule blocks any TCP traffic with destination port 200 going
from host1 or host2 through the switch (corresponding to rule 1 in the
diagram above).
https://docs.cumulusnetworks.com 353
Cumulus Linux v4.2 User Documentation System Configuration
Ingress Rule
The following rule blocks any UDP traffic with source port 200 going from
host1 through the switch (corresponding to rule 2 in the diagram above).
Input Rule
The following rule blocks any UDP traffic with source port 200 and
destination port 50 going from host1 to the switch (corresponding to rule 3
in the diagram above).
DROP
Output Rule
The following rule blocks any TCP traffic with source port 123 and
destination port 123 going from Switch 1 to host2 (corresponding to rule 4
in the diagram above).
354 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
123 -j DROP
Combined Rules
The following rule blocks any TCP traffic with source port 123 and
destination port 123 going from any switch port egress or generated from
Switch 1 to host1 or host2 (corresponding to rules 1 and 4 in the diagram
above).
123 -j DROP
[iptables]
The following rule blocks any traffic with source MAC address
00:00:00:00:00:12 and destination MAC address 08:9e:01:ce:e2:04 going
https://docs.cumulusnetworks.com 355
Cumulus Linux v4.2 User Documentation System Configuration
-j DROP
Considerations
Not all iptables, ip6tables, or ebtables rules are supported. Refer to the
To protect the CPU from overloading, traffic copied to the CPU is limited to
1 pkt/s by an ACL Log Policer.
Bridge traffic that matches LOG ACTION rules are not logged in syslog; the
packet and send the packet to the control plane (or kernel) for logging. To
emphasize this, a log action must also have a drop action.
356 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
SPAN Sessions that Reference an Outgoing Interface and Use the CPU Port
as the SPAN Destination in the Network Troubleshooting section.
For example, your switch is set so BFD is rate limited to 2000 packets per
second. When the BFD packets are received on port1/pipe1 and port2/
https://docs.cumulusnetworks.com 357
Cumulus Linux v4.2 User Documentation System Configuration
pipe2, they are each rate limited at 2000 pps; the switch is rate limiting at
4000 pps overall. Because there are four pipelines on a Tomahawk switch,
you might see a fourfold increase of your configured rate limits.
restart switchd.
acl.non_atomic_update_mode = TRUE
On a Trident II+ switch, the TCAM allocation for ACLs is limited to 2048
rules in atomic mode for a default setup instead of 4096, as advertised for
ingress rules.
358 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
TCAM Allocation
On a Trident3 switch, the TCAM allocation for ACLs is limited to 2048 rules
in atomic mode for a default setup instead of 4096, as advertised for
ingress rules.
On a Trident3 switch, you must enable nonatomic update mode before you
restart switchd.
acl.non_atomic_update_mode = TRUE
interface match layer 3 routed packets only, not bridged packets. To match
layer 2 traffic, use egress bridge member port-based rules.
instead because:
https://docs.cumulusnetworks.com 359
Cumulus Linux v4.2 User Documentation System Configuration
echo-request -j DROP
-------------------------------
-------------------------------
TABLE filter :
icmp echo-request
rules that can be in hardware are hardware accelerated, place them in the
360 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Due to hardware limitations in the Spectrum ASIC, BFD policers are shared
between all BFD-related control plane rules. Specifically the following
default rules share the same policer in the 00control_plan.rules file:
[iptables]
[ip6tables]
2000 --set-class 7
https://docs.cumulusnetworks.com 361
Cumulus Linux v4.2 User Documentation System Configuration
To work around this limitation, set the rate and burst of all 6 of these rules
to the same values, using the --set-rate and --set-burst options.
After an ACL rule installation failure, a generic error message like the
following is displayed:
failed.
362 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
The Dell S3048-ON has a limit of 24576 MAC address entries instead of 32K
for other 1G switches.
assigned trap IDs. The default INPUT chain rules are mapped to these trap
IDs. However, if a packet matches multiple traps, they are resolved by an
internal priority mechanism that might be different from the rule priorities.
Packets might not get policed by the default expected rule, but by another
rule instead. For example, ICMP packets headed to the CPU are policed by
the LOCAL rule instead of the ICMP rule. Also, multiple rules might share
the same trap. In this case the policer that is applied is the largest of the
policer values.
To work around this issue, create rules on the INPUT and FORWARD chains
(INPUT,FORWARD).
https://docs.cumulusnetworks.com 363
Cumulus Linux v4.2 User Documentation System Configuration
Subinterface
For example:
interface are not supported. For example, the following rule is not
supported:
[iptables]
To work around this issue, duplicate the ACL rule on each physical port of
364 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
[iptables]
Related Information
• Netfilter website
https://docs.cumulusnetworks.com 365
Cumulus Linux v4.2 User Documentation System Configuration
configurations for each part. You can see the default file by clicking the
Default ACL Configuration link:
iptables
Action/V
ction/Val
aluue Prot
otoc
ocol/
ol/IIP A
Addr
ddre
ess
366 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Action/V
ction/Val
aluue Prot
otoc
ocol/
ol/IIP A
Addr
ddre
ess
https://docs.cumulusnetworks.com 367
Cumulus Linux v4.2 User Documentation System Configuration
NOTE
Set class is internal to the switch - it does not set any precedence
bits.
ip6tables
Action/V
ction/Val
aluue Prot
otoc
ocol/
ol/IIP A
Addr
ddre
ess
368 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Action/V
ction/Val
aluue Prot
otoc
ocol/
ol/IIP A
Addr
ddre
ess
https://docs.cumulusnetworks.com 369
Cumulus Linux v4.2 User Documentation System Configuration
Action/V
ction/Val
aluue Prot
otoc
ocol/
ol/IIP A
Addr
ddre
ess
NOTE
Set class is internal to the switch - it does not set any precedence
bits.
ebtables
Action/V
ction/Val
aluue Prot
otoc
ocol/MA
ol/MAC
CAAddr
ddreess
370 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Action/V
ction/Val
aluue Prot
otoc
ocol/MA
ol/MAC
CAAddr
ddreess
NOTE
Set class is internal to the switch. It does not set any precedence
bits.
Considerations
https://docs.cumulusnetworks.com 371
Cumulus Linux v4.2 User Documentation System Configuration
shown below:
...
#hal.bcm.vxlan_policers =
tunnel_arp=400,tunnel_dhcp_v4=100,tunnel_dhcp_v6=100,tunnel_ttl1=100,tunnel_rs=300
372 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
can be a security or resource problem as the MAC address table has the
potential to get filled with bogus MAC addresses; a malfunctioning host,
network error, loop, or malicious attack on a shared layer 2 platform can
create an outage for other hosts if the same MAC address is learned on
another port.
To prevent this from happening, Cumulus Linux filters frames before MAC
traffic otherwise.
NOTE
https://docs.cumulusnetworks.com 373
Cumulus Linux v4.2 User Documentation System Configuration
and VLAN with a given MAC address, adding each one to the bridge:
interfaces file:
auto swp1
iface swp1
auto swp2
iface swp2
auto swp3
374 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
iface swp3
auto bridge
iface bridge
bridge-pvid 1
bridge-vlan-aware yes
If you need to list many MAC addresses, you can run a script to create the
same configuration. For example, create a script called macs.txt and put in
the bridge fdb add commands for each MAC address you need to
configure:
#!/bin/bash
bridge fdb add 00:00:00:00:00:11 dev swp1 master static vlan 100
https://docs.cumulusnetworks.com 375
Cumulus Linux v4.2 User Documentation System Configuration
bridge fdb add 00:00:00:00:00:22 dev swp2 master static vlan 200
bridge fdb add 00:00:00:00:00:33 dev swp3 master static vlan 300
bridge fdb add 00:00:00:00:00:44 dev swp4 master static vlan 400
bridge fdb add 00:00:00:00:00:55 dev swp5 master static vlan 500
bridge fdb add 00:00:00:00:00:66 dev swp6 master static vlan 600
interfaces file:
auto swp1
iface swp1
376 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
auto swp2
iface swp2
auto swp3
iface swp3
auto swp4
iface swp4
auto swp5
iface swp5
auto swp6
iface swp6
auto bridge
iface bridge
bridge-pvid 1
bridge-vlan-aware yes
https://docs.cumulusnetworks.com 377
Cumulus Linux v4.2 User Documentation System Configuration
If you are using EVPN, local static MAC addresses added to the local FDB
378 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
switch is a Linux system, you can dig deeper if you like. Services can start
multiple processes as they run. Services are important to monitor on a
Cumulus Linux switch.
In general, you manage services using systemd via the systemctl command.
You use it with any service on the switch to start, stop, restart, reload,
enable, disable, reenable, or get the status of the service.
https://docs.cumulusnetworks.com 379
Cumulus Linux v4.2 User Documentation System Configuration
SERVICENAME.service
NOTE
before it.
To show all the services currently running, run the systemctl status
● switch
State: running
Jobs: 0 queued
Failed: 0 units
380 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
CGroup: /
├─init.scope
│ └─1 /sbin/init
└─system.slice
├─haveged.service
verbose=1 -w 1024
├─sysmonitor.service
│ └─26543 sleep 60
├─systemd-udevd.service
│ └─218 /lib/systemd/systemd-udevd
├─system-ntp.slice
│ └─ntp@mgmt.service
│ └─vrf
│ └─mgmt
├─cron.service
│ └─274 /usr/sbin/cron -f -L 38
├─system-serial\x2dgetty.slice
│ └─serial-getty@ttyS0.service
├─nginx.service
https://docs.cumulusnetworks.com 381
Cumulus Linux v4.2 User Documentation System Configuration
├─auditd.service
│ └─235 /sbin/auditd
├─rasdaemon.service
│ └─275 /usr/sbin/rasdaemon -f -r
├─clagd.service
├─switchd.service
...
systemctl Subcommands
on a given service.
• sta
tattus returns the status of the specified service.
• sta
tarrt starts the service.
• stop stops the service.
• resta
tarrt stops, then starts the service, all the while maintaining state. If
there are dependent services or services that mark the restarted service
382 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
• reloa
eloadd reloads the configuration for the service.
• enable enables the service to start when the system boots, but does not
start it unless you use the systemctl start SERVICENAME.service
that any new Wants or WantedBy lines create the symlinks necessary for
ordering. This has no side effects on other services.
There is often little reason to interact with the services directly using these
commands. If a critical service crashes or encounters an error, it is
automatically respawned by systemd. systemd is effectively the caretaker
of services in modern Linux systems and is responsible for starting all the
necessary services at boot time.
certain number of times within a given interval before the service fails to
start at all. The settings, StartLimitInterval (which defaults to 10 seconds)
and StartBurstLimit (which defaults to 5 attempts) are stored in the service
https://docs.cumulusnetworks.com 383
Cumulus Linux v4.2 User Documentation System Configuration
When the restart fails for this reason, you see a message similar to the
following:
know you are going to restart frequently (multiple times within the
StartLimitInterval), you can run the same command before you issue the
If you start, restart, or reload any systemd service that can be started from
another systemd service, you must use the --no-block option with
systemctl. Otherwise, that service or even the switch itself might hang after
384 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
starting or restarting.
You can identify the active listener ports under both IPv4 and IPv6 using
the netstat command:
tcp 0 0 0.0.0.0:53
tcp 0 0 0.0.0.0:22
tcp6 0 0 :::53
tcp6 0 0 :::22
udp 0 0 0.0.0.0:28450
0.0.0.0:* 839/dhclient
udp 0 0 0.0.0.0:53
0.0.0.0:* 444/dnsmasq
udp 0 0 0.0.0.0:68
0.0.0.0:* 839/dhclient
https://docs.cumulusnetworks.com 385
Cumulus Linux v4.2 User Documentation System Configuration
udp 0 0 192.168.0.42:123
0.0.0.0:* 907/ntpd
udp 0 0 127.0.0.1:123
0.0.0.0:* 907/ntpd
udp 0 0 0.0.0.0:123
0.0.0.0:* 907/ntpd
udp 0 0 0.0.0.0:4784
0.0.0.0:* 909/ptmd
udp 0 0 0.0.0.0:3784
0.0.0.0:* 909/ptmd
udp 0 0 0.0.0.0:3785
0.0.0.0:* 909/ptmd
udp6 0 0 :::58352
:::* 839/dhclient
udp6 0 0 :::53
:::* 444/dnsmasq
udp6 0 0 fe80::a200:ff:fe00::123
:::* 907/ntpd
udp6 0 0 ::1:123
:::* 907/ntpd
udp6 0 0 :::123
:::* 907/ntpd
udp6 0 0 :::4784
:::* 909/ptmd
386 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
udp6 0 0 :::3784
:::* 909/ptmd
To determine which services are currently active or stopped, run the cl-
service-summary command:
cumulus@switch:~$ cl-service-summary
https://docs.cumulusnetworks.com 387
Cumulus Linux v4.2 User Documentation System Configuration
...
You can also run the systemctl list-unit-files --type service command
to list all services on the switch and see which ones are enabled:
aclinit.service enabled
acltool.service enabled
acpid.service disabled
asic-monitor.service enabled
auditd.service enabled
autovt@.service disabled
bmcd.service disabled
bootlog.service enabled
bootlogd.service masked
bootlogs.service masked
388 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
bootmisc.service masked
checkfs.service masked
checkroot-bootclean.service masked
checkroot.service masked
clagd.service enabled
console-getty.service disabled
console-shell.service disabled
container-getty@.service static
cron.service enabled
cryptdisks-early.service masked
cryptdisks.service masked
cumulus-aclcheck.service static
cumulus-core.service static
cumulus-fastfailover.service enabled
cumulus-firstboot.service disabled
cumulus-hyperconverged.service disabled
cumulus-platform.service enabled
...
If you need to know which services are required to run when the switch
boots, run:
https://docs.cumulusnetworks.com 389
Cumulus Linux v4.2 User Documentation System Configuration
basic.target
● ├─bootlog.service
● ├─systemd-readahead-done.service
● ├─systemd-readahead-done.timer
● ├─systemd-update-utmp-runlevel.service
● └─graphical.target
● └─systemd-update-utmp-runlevel.service
Important Services
The following table lists the most important services in Cumulus Linux.
390 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Aff
ffect
ectss
Se
Serrvic
vice
e Name De
Desscription
Forw
rwaard
rding?
ing?
https://docs.cumulusnetworks.com 391
Cumulus Linux v4.2 User Documentation System Configuration
Aff
ffect
ectss
Se
Serrvic
vice
e Name De
Desscription
Forw
rwaard
rding?
ing?
392 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Aff
ffect
ectss
Se
Serrvic
vice
e Name De
Desscription
Forw
rwaard
rding?
ing?
CPU).
https://docs.cumulusnetworks.com 393
Cumulus Linux v4.2 User Documentation System Configuration
Configuring switchd
switchd is the daemon at the heart of Cumulus Linux. It communicates
between the switch and Cumulus Linux, and all the applications running on
Cumulus Linux.
command. The following example shows output for a switch with one
switch port configured:
/cumulus/switchd/
├── clear
│ └── stats
│ ├── vlan
│ └── vxlan
├── config
│ ├── acl
│ │ ├── flow_based_mirroring
394 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
│ │ ├── non_atomic_update_mode
│ │ ├── optimize_hw
│ │ └── vxlan_tnl_arp_punt_disable
│ ├── arp
│ │ ├── drop_during_failed_state
│ │ └── next_hops
│ ├── bridge
│ │ ├── broadcast_frame_to_cpu
│ │ └── optimized_mcast_flood
│ ├── buf_util
│ │ ├── measure_interval
│ │ └── poll_interval
│ ├── coalesce
│ │ ├── offset
│ │ ├── reducer
│ │ └── timeout
│ ├── disable_internal_hw_err_restart
│ ├── disable_internal_parity_restart
│ ├── hal
│ │ └── bcm
│ │ ├── l3
│ │ │ └── per_vlan_router_mac_lookup_for_vrrp
│ │ ├── linkscan_interval
│ │ ├── logging
https://docs.cumulusnetworks.com 395
Cumulus Linux v4.2 User Documentation System Configuration
│ │ │ └── l3mc
│ │ ├── per_vlan_router_mac_lookup
│ │ └── vxlan_support
│ ├── ignore_non_swps
│ ├── interface
│ │ ├── swp1
│ │ │ ├── ethtool_mode
│ │ │ ├── interface_mode
│ │ │ ├── port_security
│ │ │ │ ├── enable
│ │ │ │ ├── mac_limit
│ │ │ │ ├── static_mac
│ │ │ │ ├── sticky_aging
│ │ │ │ ├── sticky_mac
│ │ │ │ ├── sticky_timeout
│ │ │ │ ├── violation_mode
│ │ │ │ └── violation_timeout
│ │ │ └── storm_control
│ │ │ ├── broadcast
│ │ │ ├── multicast
│ │ │ └── unknown_unicast
...
396 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
#stats.poll_interval = 2000
#buf_util.poll_interval = 0
#buf_util.measure_interval = 0
#acl.optimize_hw = FALSE
#acl.flow_based_mirroring = TRUE
https://docs.cumulusnetworks.com 397
Cumulus Linux v4.2 User Documentation System Configuration
acl.non_atomic_update_mode = FALSE
#arp.next_hops = TRUE
#route.table = 254
...
switchd for the changes to take effect. See Restart switchd, below.
Restart switchd
you update any *.conf file that requires making a change to the switching
You do not have to restart the switchd service when you update a network
398 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
interfaces file).
WARNING
https://docs.cumulusnetworks.com 399
Cumulus Linux v4.2 User Documentation System Configuration
• Dell N3048EP-ON
• Delta AG6248C PoE
• EdgeCore AS4610-54P
PoE Basics
connected device, power is supplied to the switch port, and the device
powers on
400 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
power source, low priority ports are turned off. In the case of a tie, the
port with the lower port number gets priority
920W x 750W
x 920W 750W
The AS4610-54P has an LED on the front panel to indicate PoE status:
• Yellow: One or more errors are detected or the poed daemon is not
running
NOTE
Link state and PoE state are completely independent of each other.
When a link is brought down on a particular port using ip link
<port> down, power on that port is not turned off; however, LLDP
https://docs.cumulusnetworks.com 401
Cumulus Linux v4.2 User Documentation System Configuration
Configure PoE
You use the poectl command utility to configure PoE on a switch that
The PoE configuration resides in /etc/cumulus/poe.conf. The file lists all the
switch ports, whether PoE is enabled for those ports and the priority for
each port.
By default, PoE and PoE+ are enabled on all Ethernet/1G switch ports, and
these ports are set with a low priority. Switch ports can have low, high or
critical priority.
To change the priority for one or more switch ports, run poectl -p swp#
402 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
[port_numbers]:
The Sta
tattus can be one of the following:
• sea
earrching: PoE is enabled but no device has been detected.
• disable
abledd: The PoE port has been configured as disabled.
https://docs.cumulusnetworks.com 403
Cumulus Linux v4.2 User Documentation System Configuration
• connect
onnecte
ed: A powered device is connected and receiving power.
• po
powwer-denie
eniedd: There is insufficient PoE power available to enable the
connected device.
The Alloca
Allocatted column displays how much PoE power has been allocated to
To see all the PoE information for a switch, run poectl -s:
cumulus@switch:~$ poectl -s
System power:
Total: 730.0 W
Used: 11.0 W
Available: 719.0 W
Connected ports:
404 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Argument De
Desscription
https://docs.cumulusnetworks.com 405
Cumulus Linux v4.2 User Documentation System Configuration
Argument De
Desscription
Troubleshooting
You can troubleshoot PoE and PoE+ using the following utilities and files:
as described above.
406 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
You can run lldpcli to view the LLDP information that has been received
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Chassis:
SysName: ihm-ubuntu
https://docs.cumulusnetworks.com 407
Cumulus Linux v4.2 User Documentation System Configuration
MgmtIP: fe80::6ac9:bff:fe25:547c
Capability: Station, on
Port:
PortDescr: eth0
duplex mode
Device type: PD
Class: class 4
Power type: 2
UnknownTLVs:
408 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
-------------------------------------------------------------------------------
You can use tcpdump to view the LLDP frames being transmitted and
0x0000: 0078
https://docs.cumulusnetworks.com 409
Cumulus Linux v4.2 User Documentation System Configuration
dni 3048up
fe80::230:abff:fef2:d7a5
410 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
Private (0x00120f)
Private (0x00120f)
Private (0x00120f)
(0x000142)
(0x000142)
https://docs.cumulusnetworks.com 411
Cumulus Linux v4.2 User Documentation System Configuration
412 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
variables, which tells the switch the address of the proxy server to use to
fetch URLs on the command line. This is useful for programs such as
apt/apt-get, curl and wget, which can all use this proxy.
code example below, the file is called proxy.sh, and is created using the
both:
• HTTP proxy:
http_proxy=http://myproxy.domain.com:8080
export http_proxy
• HTTPS proxy:
https://docs.cumulusnetworks.com 413
Cumulus Linux v4.2 User Documentation System Configuration
https_proxy=https://myproxy.domain.com:8080
export https_proxy
lines to the file for acquiring the HTTP and HTTPS proxies; the example
below uses http_proxy as the file name:
Acquire::http::Proxy "http://myproxy.domain.com:8080";
Acquire::https::Proxy "https://myproxy.domain.com:8080";
...
https_proxy = https://myproxy.domain.com:8080
http_proxy = http://myproxy.domain.com:8080
...
5. Run the source command, to execute the file in the current environment:
414 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
The proxy is now configured. The echo command can be used to confirm
• HTTP proxy:
http://myproxy.domain.com:8080
• HTTPS proxy:
https://myproxy.domain.com:8080
Related Information
https://docs.cumulusnetworks.com 415
Cumulus Linux v4.2 User Documentation System Configuration
HTTP API
Cumulus Linux implements an HTTP application programming interface to
the OpenStack ML2 driver and NCLU. Instead of accessing Cumulus Linux
using SSH, you can interact with the switch using an HTTP client, such as
The supporting software for the API is installed with Cumulus Linux.
To use the REST API, you must enable nginx on the switch:
restart nginx
To enable the HTTP API service, run the following systemd command:
Use the systemctl start and systemctl stop commands to start or stop
the service:
416 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
nginx command.
NOTE
https://docs.cumulusnetworks.com 417
Cumulus Linux v4.2 User Documentation System Configuration
Configure Security
Authentication
The default configuration requires all HTTP requests from external sources
(not internal switch traffic) to set the HTTP Basic Authentication header.
The user and password must correspond to a user on the host switch.
this application so that it works out of the box, but using your own
certificates and keys is highly recommended. Certificates must be in the
PEM format.
Security documentation.
WARNING
418 https://docs.cumulusnetworks.com
System Configuration Cumulus Linux v4.2 User Documentation
cURL Examples
This section includes several example cURL commands you can use to send
HTTP requests to a host. The following settings are used for these
examples:
• Username: user
• Password: pw
• IP: 192.168.0.32
• Port: 8080
NOTE
command.
https://docs.cumulusnetworks.com 419
Cumulus Linux v4.2 User Documentation System Configuration
https://192.168.0.32:8080
https://192.168.0.32:8080/nclu/v1/rpc
https://192.168.0.32:8080/ml2/v1/bridge/"br1"/200
Considerations
420 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 421
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
IMPORTANT
Basic Commands
422 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
To bring down the physical connection to a single interface, run the sudo
The ifdown command always deletes logical interfaces after bringing them
When you put an interface into an admin down state, the interface remains
down after any future reboots or configuration changes with ifreload -a.
https://docs.cumulusnetworks.com 423
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
To put an interface into an admin down state, run the net add
network/interfaces file:
auto swp1
iface swp1
link-down yes
To bring the interface back up, run the net del interface <interface>
424 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
To see the link and administrative state, use the ip link show command. In
/etc/network/interfaces file.
The most common class is auto, which you configure like this:
auto swp1
iface swp1
https://docs.cumulusnetworks.com 425
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
You can add other classes using the allow prefix. For example, if you have
multiple interfaces used for uplinks, you can define a class called uplinks:
auto swp1
allow-uplink swp1
address 10.1.1.1/31
auto swp2
allow-uplink swp2
address 10.1.1.3/31
This allows you to perform operations on only these interfaces using the --
allow=uplinks option. You can still use the -a options because these
If you are using Management VRF, you can use the special interface class
called mgmt and put the management interface into that class. The
management VRF must have an IPv6 address in addition to an IPv4
address to work correctly.
426 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
WARNING
allow-mgmt eth0
vrf mgmt
allow-mgmt mgmt
iface mgmt
address 127.0.0.1/8
address ::1/128
vrf-table auto
All ifupdown2 commands (ifup, ifdown, ifquery, ifreload) can take a class.
Include the --allow=<class> option when you run the command. For
https://docs.cumulusnetworks.com 427
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Use the -a option to bring up or down all interfaces that are marked with
To reload all network interfaces marked auto, use the ifreload command.
TIP
428 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
ifreload -a"
For more information, see the individual man pages for ifup(8), ifdown(8),
ifreload(8).
interfaces file. When the switch boots up, it has a loopback interface called
TIP
https://docs.cumulusnetworks.com 429
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
430 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
Alias
-----
loopback interface
IP Details
------------------------- --------------------
IP Neighbor(ARP) Entries: 0
interface:
https://docs.cumulusnetworks.com 431
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
24
network/interfaces file:
...
auto lo
address 172.16.2.1/24
432 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
speed, and so on. If you need to delete a child interface, delete all
references to that interface from the interfaces file.
In the following example, swp1 and swp2 do not need an entry in the
interfaces file. The following stanzas defined in /etc/network/interfaces
With Chil
Childd Int
nte
erfac
ace
es Define
Definedd:
auto swp1
iface swp1
auto swp2
iface swp2
auto bridge
iface bridge
bridge-vlan-aware yes
https://docs.cumulusnetworks.com 433
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
bridge-vids 1-100
bridge-pvid 1
bridge-stp on
Witho
ithouut Chil
Childd Int
nte
erfac
ace
es Define
Definedd
auto bridge
iface bridge
bridge-vlan-aware yes
bridge-vids 1-100
bridge-pvid 1
bridge-stp on</code></pre></td>
With Chil
Childd Int
nte
erfac
ace
es Define
Definedd
auto swp1.100
434 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
iface swp1.100
auto swp2.100
iface swp2.100
auto br-100
iface br-100
address 10.0.12.2/24
address 2001:dad:beef::3/64
bridge-stp on
Witho
ithouut Chil
Childd Int
nte
erfac
ace
es Define
Definedd
auto br-100
iface br-100
address 10.0.12.2/24
address 2001:dad:beef::3/64
bridge-stp on
https://docs.cumulusnetworks.com 435
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
ifup and ifdown with all interfaces, the commands always run with all
interfaces in dependency order. When you run ifup and ifdown with the
interface list on the command line, the default behavior is to not run with
To run with dependents when you specify the interface list, use the --with-
the dependency tree rooted at the interface you specify. Consider the
auto bond1
iface bond1
address 100.0.0.2/16
auto bond2
iface bond2
address 100.0.0.5/16
436 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
auto br2001
iface br2001
address 12.0.1.3/24
bridge-stp on
WARNING
https://docs.cumulusnetworks.com 437
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
To guide you through which interfaces will be brought down and up, use
the --print-dependency option.
lo : None
eth0 : None
bond1.2000 : ['bond1']
bond2.2000 : ['bond2']
438 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
bond1.2001 : ['bond1']
bond2.2001 : ['bond2']
swp40 : None
swp25 : None
swp26 : None
swp29 : None
swp30 : None
swp31 : None
swp32 : None
To print the dependency list of a single interface, run the ifquery --print-
bond1.2001 : ['bond1']
bond2.2001 : ['bond2']
swp29 : None
https://docs.cumulusnetworks.com 439
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
swp30 : None
swp31 : None
swp32 : None
To show the dependency information for an interface in dot format, run the
in dot format:
GvGen) */
digraph G {
compound=true;
node1 [label="br2001"];
node2 [label="bond1.2001"];
node3 [label="bond2.2001"];
node4 [label="bond1"];
node5 [label="bond2"];
node6 [label="swp29"];
node7 [label="swp30"];
node8 [label="swp31"];
440 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
node9 [label="swp32"];
node1->node2;
node1->node3;
node2->node4;
node3->node5;
node4->node6;
node4->node7;
node5->node8;
node5->node9;
You can use dot to render the graph on an external system where dot is
installed.
To print the dependency information of the entire interfaces file, run the
following command:
https://docs.cumulusnetworks.com 441
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
>interfaces_all.dot
Subinterfaces
A VLAN subinterface only receives traffic tagged for that VLAN; therefore,
swp1.100 only receives packets tagged with VLAN 100 on switch port swp1.
Similarly, any packets transmitted from swp1.100 are tagged with VLAN
100.
442 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
In an MLAG configuration, the peer link interface that connects the two
switches in the MLAG pair has a VLAN subinterface named 4094 by default
if you configured the subinterface with NCLU. The peerlink.4094
When you run ifup on a logical interface (like a bridge, bond or VLAN
auto br100
iface br100
auto bond1
iface bond1
If you run ifdown bond1, ifdown deletes bond1 and the VLAN interface on
bond1 (bond1.100); it also removes bond1 from the bridge br100. Next,
when you run ifup bond1, it creates bond1 and the VLAN interface on bond1
https://docs.cumulusnetworks.com 443
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
(bond1.100); it also executes ifup br100 to add the bond VLAN interface
There can be cases where an upper interface (like br100) is not in the right
state, which can result in warnings. The warnings are mostly harmless.
If you want to disable these warnings, you can disable the implicit upper
interface handling by setting skip_upperifaces=1 in the /etc/network/
ifupdown2/ifupdown2.conf file.
interfaces. In this case, you will have to run ifup br100 after an ifup bond1
NOTE
full. If you only create swp1.100 and not swp1, then you cannot run
Configure IP Addresses
444 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
12.0.0.1/30
12.0.0.2/30
2001:DB8::1/126
network/interfaces file:
auto swp1
iface swp1
address 12.0.0.1/30
address 12.0.0.2/30
address 2001:DB8::1/126
NOTE
You can specify both IPv4 and IPv6 addresses for the same
interface.
https://docs.cumulusnetworks.com
For IPv6 addresses, you can create or modify the IP address 445
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
ifupdown2 does not honor the configured IP address scope setting in the
auto swp2
iface swp2
address 35.21.30.5/30
address 3101:21:20::31/80
scope link
446 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
addresses as global.
https://docs.cumulusnetworks.com 447
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
network/interfaces file:
auto swp6
iface swp6
site
448 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
have other processes that manage IP addresses for an interface, you can
disable this feature.
https://docs.cumulusnetworks.com 449
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
auto swp1
iface swp1
address-purge no
NOTE
450 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
happens, you must shut down and restart the interface with ifup
https://docs.cumulusnetworks.com 451
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
bar
network/interfaces file:
auto swp1
iface swp1
address 12.0.0.1/30
WARNING
You can add any valid command in the sequence to bring an interface up or
down; however, limit the scope to network-related commands associated
with the particular interface. For example, it does not make sense to install
Sourcing interface files helps organize and manage the interfaces file. For
example:
auto lo
auto eth0
source /etc/network/interfaces.d/bond0
https://docs.cumulusnetworks.com 453
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
auto bond0
iface bond0
address 14.0.0.9/30
address 2001:ded:beef:2::1/64
454 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
NCLU supports globs to define port lists (a range of ports). You must
use commas to separate different ranges of ports in the NCLU
...
auto bridge
iface bridge
bridge-vlan-aware yes
auto swp1
iface swp1
auto swp2
iface swp2
auto swp3
iface swp3
https://docs.cumulusnetworks.com 455
auto swp4
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Mako Templates
WARNING
/etc/network/interfaces file.
%for i in [1,12]:
auto swp${i}
iface swp${i}
address 10.20.${i}.3/24
456 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
NOTE
TIP
To comment out content in Mako templates, use double hash marks (##).
For example:
## auto swp${i}
## iface swp${i}
## % endfor
##
https://docs.cumulusnetworks.com 457
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Unlike the traditional ifupdown system, ifupdown2 does not run scripts
ifupdown2.conf
addon_scripts_support=1
commands:
• $IFACE represents the physical name of the interface being processed; for
interfaces file.
458 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 459
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
hypervisor_port_1
auto swp1
iface swp1
alias hypervisor_port_1
460 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
To show the description (alias) for an interface, run the net show
Alias
-----
hypervisor_port_1
------------------
UP bond01 LACP
UP bond02 LACP
UP bridge Bridge/L2
UP eth0 Mgmt
UP lo Loopback loopback
interface
UP mgmt Interface/L3
https://docs.cumulusnetworks.com 461
UP peerlink LACP
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
NOTE
Considerations
Even though ifupdown2 supports the inclusion of multiple iface stanzas for
the same interface, consider using a single iface stanza for each interface.
If you must specify more than one iface stanza; for example, if the
configuration for a single interface comes from many places, like a template
or a sourced file, make sure the stanzas do not specify the same interface
attributes. Otherwise, unexpected behavior can result.
462 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
source /etc/network/interfaces.d/speed_settings
auto swp1
iface swp1
address 10.0.14.2/24
auto swp1
iface swp1
link-speed 1000
link-duplex full
NOTE
iface stanzas.
For sysctl commands in the pre-up, up, post-up, pre-down, down, and post-
down lines that use the $IFACE variable, if the interface name contains a dot
(.), ifupdown2 does not change the name to work with sysctl. For example,
https://docs.cumulusnetworks.com 463
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
auto swp2
iface swp2
address 172.16.3.3/24
any name that matches with the regular expression .{0,13}\-v.* is not
supported.
If you encounter issues, remove the interface name from the /etc/network/
464 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Related Information
• man ifdown(8)
• man ifquery(8)
• man ifreload
• man ifup(8)
• man ifupdown-addons-interfaces(5)
• man interfaces(5)
https://docs.cumulusnetworks.com 465
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
• ethN are switch management ports (for out of band management only)
• (optional) bondN are bonds (IEEE 802.3ad link aggregation trunks, or port
channels)
settings:
• Auto-negotiation
• Duplex Mode
• Link speed
For Spect
Spectru
rum
mAAS
SICs, MTU is the only port attribute you can directly
configure. The Spectrum firmware configures FEC, link speed, duplex mode
and auto-negotiation automatically, following a predefined list of parameter
settings until the link comes up. However, you can disable FEC if necessary,
466 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
For Broa
oaddcom-ba
om-bassed sw
swit
itche
chess, consider enabling auto-negotiation on each
port. When enabled, Cumulus Linux automatically configures the best link
This topic describes the auto-negotiation, link speed, duplex mode, MTU,
and FEC settings and provides a table showing the default configuration for
various port and cable types. Breakout port configuration, logical switch
Auto-negotiation
If you disable auto-negotiation later or never enable it, then you have to
configure any settings that deviate from the port default - such as duplex
mode, FEC, and link speed settings.
WARNING
https://docs.cumulusnetworks.com 467
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
following:
468 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
also enables forward error correction (FEC), if the cable requires it (see the
table below). The correct FEC mode is set based on the speed of the cable
when auto-negotiation is enabled.
•
NCLU Commands Linux Commands
Run the net add interface <interface> link autoneg command. The
NOTE
https://docs.cumulusnetworks.com 469
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Supported port speeds include 100M, 1G, 10G, 25G, 40G, 50G and 100G. In
Cumulus Linux, you set the speed on a Broadcom switch in Mbps, where
You can configure ports to the following speeds (unless there are
restrictions in the /etc/cumulus/ports.conf file of a particular platform).
Swit
itch
ch P
Poort T
Type
ype Othe
Otherr C
Config
onfigur
urable
able Spee
Speeds
ds
1G 100 Mb
470 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
NOTE
Pla
Platf
tfo
orm Limita
Limitation
tionss
Considerations below.
https://docs.cumulusnetworks.com 471
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
Run the net add interface <interface> link speed command. The
following commands configure the port speed for the swp1 interface.
The duplex mode setting defaults to full. You only need to specify link
auto swp1
iface swp1
link-speed 10000
The following commands configure the port speed and set half-duplex
mode for the swp31 interface.
472 https://docs.cumulusnetworks.com
The above commands create the following /etc/network/interfaces
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
MTU
Mellanox switch, the initial MTU value set by the driver is 9238. After you
configure the interface, the default MTU setting is 9216.
https://docs.cumulusnetworks.com 473
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
Run the net add interface <interface> mtu command. The following
example command sets the MTU to 1500 for the swp1 interface.
auto swp1
iface swp1
mtu 1500
NOTE
Some switches might not support the same maximum MTU setting
474 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
For a global policy to set MTU, create a policy document (called mtu.json).
For example:
mtu.json
WARNING
ifupdown2/policy.d/.
The MTU setting is the lowest MTU of any interface that is a member of the
bridge (every interface specified in bridge-ports in the bridge configuration
https://docs.cumulusnetworks.com 475
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
auto bridge
iface bridge
bridge-vids 100-110
bridge-vlan-aware yes
For bridge to have an MTU of 9000, set the MTU for each of the member
TIP
Two common MTUs for jumbo frames are 9216 (the default value)
and 9000 bytes. The corresponding MTUs for the VNIs are 9166
and 8950.
When configuring MTU for a bond, configure the MTU value directly under
the bond interface; the configured value is inherited by member links/slave
interfaces. If you need a different MTU on the bond, set it on the bond
interface, as this ensures the slave interfaces pick it up. There is no need to
476 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
VLAN interfaces inherit their MTU settings from their physical devices or
their lower interface; for example, swp1.100 inherits its MTU setting from
If you are working with VXLANs, the MTU for a virtual network interface
(VNI must be 50 bytes smaller than the MTU of the physical interfaces on
the switch, as those 50 bytes are required for various headers and other
data. Also, consider setting the MTU much higher than 1500.
NOTE
The MTU for an SVI interface, such as vlan100, is derived from the
bridge. When you use NCLU to change the MTU for an SVI and the
(if some SVIs have a higher MTU and some lower), set the MTU for
all member interfaces to the maximum value, then set the MTU on
https://docs.cumulusnetworks.com 477
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
FEC
speed ethernet link is 10-12. Because 25G transmission speeds can introduce
a higher than acceptable BER on a link, FEC is often required to correct
errors to achieve the target BER at 25G, 4x25G, 100G, and higher link
speeds. The type and grade of a cable or module and the medium of
transmission will determine which FEC setting is needed.
For the link to come up, the two interfaces on each end must use the same
FEC setting.
478 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
NOTE
There is a very small latency overhead required for FEC. For most
applications, this small amount of latency is preferable to error
packet retransmission latency.
• Auto FEC instructs the hardware to select the best FEC. For copper DAC,
FEC can be negotiated with the remote end. However, optical modules
do not have auto-negotiation capability; if the device chooses a preferred
mode, it might not match the remote end. This is the current default on a
Spectrum switch.
• No FEC (no error correction is done). This is the current default on a
Broadcom switch.
https://docs.cumulusnetworks.com 479
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
NOTE
For 25
25GGD
DA
AC, 4x
4x25
25G
GBBrreak
eako
outs D
DA
AC an
andd 100
100GGD
DA
AC cable
cabless, the IEEE
802.3by specification creates 3 classes:
480 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
important to set the FEC according to the cable class (or better) to have
acceptable bit error rates. See Determining Cable Class below.
You can check bit errors using cl-netstat (RX_ERR column) or ethtool -S
the link. A non-zero value indicates bit errors. Expect error packets to be
zero or extremely low compared to good packets. If a cable has an
For 25
25G,
G, 4x
4x25
25G
GBBrreak
eako
out, an
andd 100
100GG Fibe
Fiberr mo
modu
dule
less an
anddA
AOC
OCss, there is no
You can determine the cable class for 100G and 25G DACs from the
25GBASE-CR CA-L value (the 100G DAC specification predates the IEEE
802.3by 25G DAC specification). RS FEC is the expected setting for 100G
DAC but might not be required with shorter or better cables.
https://docs.cumulusnetworks.com 481
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
NOTE
You can determine for which grade the manufacturer has designated the
cable as follows.
0c
482 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
0b
In each example below, the Compliance field is derived using the method
described above and is not visible in the ethool -m output.
(CA-N)
(CA-S)
https://docs.cumulusnetworks.com 483
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
classification.
100G cables based on the cable type and whether the peer switch also has
a Spectrum ASIC.
• For 25G optical modules, the Spectrum ASIC firmware chooses Base-R/
FC-FEC.
• For 25G DAC cables with attenuation less or equal to 16db, the firmware
chooses Base-R/FC-FEC.
• For 25G DAC cables with attenuation higher than 16db, the firmware
chooses RS-FEC.
• For 100G cables/modules, the firmware chooses RS-FEC.
Cable T
Type
ype FEC Mo
Modde
484 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Cable T
Type
ype FEC Mo
Modde
When linking to a non-Spectrum peer, the firmware lets the peer decide.
The Spectrum ASIC supports RS-FEC (for both 100G and 25G), Base-R/FC-
Cable T
Type
ype FEC Mo
Modde
This depends upon the make of the switch you are using.
https://docs.cumulusnetworks.com 485
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
A Spectrum switch enables FEC automatically when it powers up; that is,
the setting is fec auto. The port firmware tests and determines the correct
FEC mode to bring the link up with the neighbor. It is possible to get a link
up to a Spectrum switch without enabling FEC on the remote device as the
On a Broadcom switch, Cumulus Linux does not enable FEC by default; that
is, the setting is fec off. Consider configuring FEC explicitly to match the
configured FEC on the link neighbor. On 100G DACs, you can configure
link-autoneg so that the port attempts to negotiate FEC settings with the
remote peer.
The following sections describe how to show the current FEC mode, and to
enable and disable FEC.
Spectrum switch.
On a Broadcom switch, the --show-fec output tells you exactly what you
configured, even if the link is down due to a FEC mismatch with the
neighbor.
On a Spectrum switch, the --show-fec output tells you the current active
state of FEC only if the link iiss up; that is, if the FEC modes matches that of
the neighbor. If the link is not up, the value displays None, which is not
valid.
486 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
To show the FEC mode currently enabled on a given switch port, run the
ethtool --show-fec <interface> command.
To enable Ree
eedd Solomon (RS) F
FEEC on a link:
•
NCLU Commands Linux Commands
Run the net add interface <interface> link fec rs command. For
example:
To enable Ba
Basse-R/Fi
e-R/FirreC
eCoode F
FEEC on a link:
https://docs.cumulusnetworks.com 487
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
Run the net add interface <interface> link fec baser command.
For example:
baser
NOTE
488 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
on
To show the FEC and auto-negotiation settings for an interface, run the
following command:
https://docs.cumulusnetworks.com 489
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
Run the net add interface <interface> link fec off command. For
example:
the following table. These are the link settings that are applied to the port
hardware when auto-negotiation is enabled on a Broadcom-based switch. If
further troubleshooting is required to bring a link up, use the table below as
a guide to set the link parameters.
Except as noted below, the settings for both sides of the link are expected
to be the same.
NOTE
490 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
https://docs.cumulusnetworks.com 491
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
adapter
side of
off the link by
the PHY
built into
the
Config
onfigur
ura
ation
module.
in /
/et
etc/
c/
This is
net
netwwork/
independent
int
inte
erfac
ace
es
of the
switch
setting.
auto Set auto-
swp1 negotiation
iface to off.
swp1
Auto-
link- negotiation
autoneg must be
off enabled
on the
link- server
speed side in
100 this
scenario.
492 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
port possible
with auto-
$ negotiation
net off on
add both
interface sides.
swp1
link Testing on
speed an
100 Edgecore
$net AS4610-54P
add showed
interface the ASIC
swp1 reporting
link auto-
autoneg negotiation
on as on.
Power
over
Config
onfigur
ura
ation
Ethernet
in /
/et
etc/
c/
might
net
netwwork/
require
int
inte
erfac
ace
es
auto-
negotiation
to be on.
auto
swp1
iface
https://docs.cumulusnetworks.com 493
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
swp1
ink-
autoneg
on
link-
speed
100
Auto-
negotiation
494 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
is always
used on
add the RJ-45
interface side of
swp1 the link by
link the PHY
autoneg built into
off the
module.
This is
independent
Config
onfigur
ura
ation
of the
in /
/et
etc/
c/
switch
net
netwwork/
setting.
int
inte
erfac
ace
es
Set auto-
negotiation
to off.
auto
swp1 Auto-
iface negotiation
swp1 must be
enabled
link- on the
autoneg server
off side.
link-
speed
1000
https://docs.cumulusnetworks.com 495
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
Config
onfigur
ura
ation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
496 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
auto
swp1
iface
swp1
link-
autoneg
on
link-
speed
1000
https://docs.cumulusnetworks.com 497
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
1000
$
net
add
interface
swp1
link
autoneg
on
Config
onfigur
uraation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
link-
autoneg
on
498 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
link-
speed
1000
https://docs.cumulusnetworks.com 499
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
Config
onfigur
ura
ation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
link-
autoneg
on
link-
speed
1000
500 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
switch
ASIC and
interface the RJ-45
swp1 side.
link
speed Auto-
10000 negotiation
$ is always
net used on
add the RJ-45
interface side of
swp1 the link by
link the PHY
autoneg built into
off the
module.
This is
independent
Config
onfigur
ura
ation
of the
in /
/et
etc/
c/
switch
net
netwwork/
setting.
int
inte
erfac
ace
es
Set link-
autoneg
to off.
auto
swp1 Auto-
iface negotiation
swp1 needs to
be
enabled
on the
https://docs.cumulusnetworks.com 501
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
server
side.
link-
autoneg
off
link-
speed
10000
502 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
swp1
link
autoneg
on
Config
onfigur
ura
ation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
link-
autoneg
on
link-
speed
10000
https://docs.cumulusnetworks.com 503
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
CR comman
ommands
ds
10GBASE-
LR
10GBASE- $
SR net
10G AOC add
interface
swp1
link
speed
10000
$
net
add
interface
swp1
link
autoneg
off
Config
onfigur
uraation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
504 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
swp1
iface
swp1
link-
autoneg
off
link-
speed
10000
https://docs.cumulusnetworks.com 505
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
$
net
add
interface
swp1
link
autoneg
on
Config
onfigur
ura
ation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
link-
autoneg
on
link-
506 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
speed
40000
Config
onfigur
ura
ation
https://docs.cumulusnetworks.com 507
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
link-
autoneg
off
link-
speed
40000
$
net
add
interface
508 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
swp1
link
speed
100000
$
net
add
interface
swp1
link
autoneg
on
Config
onfigur
ura
ation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
link-
https://docs.cumulusnetworks.com 509
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
autoneg
on
link-
speed
100000
510 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
link
autoneg
off
$
net
add
interface
swp1
link
fec
rs
Config
onfigur
uraation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
link-
autoneg
https://docs.cumulusnetworks.com 511
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
off
link-
speed
100000
link-
fec
rs
$
net
add
interface
swp1
link
speed
100000
$
net
512 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
add
interface
swp1
link
autoneg
off
$
net
add
interface
swp1
link
fec
off
Config
onfigur
ura
ation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
https://docs.cumulusnetworks.com 513
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
link-
autoneg
off
link-
speed
100000
link-
fec
off
514 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
support
Base-R
25000 FEC.
$
net
add
interface
swp1
link
autoneg
on
Config
onfigur
uraation
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
link-
autoneg
on
https://docs.cumulusnetworks.com 515
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
link-
speed
25000
516 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
$ $
net net
add add
interface interface
swp1 swp1
link link
fec speed
rs 25000
$
net
add
Config
onfigur
ura
ation
interface
in /
/et
etc/
c/
swp1
net
netwwork/
link
int
inte
erfac
ace
es
autoneg
off
$
auto
net
swp1
add
iface
interface
swp1
swp1
link
link-
fec
autoneg
baser
off
link-
Config
onfigur
ura
ation
in /
/et
etc/
c/
https://docs.cumulusnetworks.com 517
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
net
netwwork/
int
inte
erfac
ace
es
speed
25000
auto
link- swp1
fec iface
rs swp1
link-
autoneg
off
link-
speed
25000
link-
fec
baser
Configure
FEC to
the
setting
that the
cable
requires.
518 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
LR comman
ommands
ds
$
net
add
interface
swp1
link
speed
25000
$
net
add
interface
swp1
link
autoneg
off
$
net
add
interface
swp1
link
fec
off
Config
onfigur
ura
ation
https://docs.cumulusnetworks.com 519
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Man
Manuual
Auto- FEC Config
onfigur
ura
ation
Spee
Speedd Not
ote
es
negotia
negotiation
tion Setting
Example
ampless
in /
/et
etc/
c/
net
netwwork/
int
inte
erfac
ace
es
auto
swp1
iface
swp1
link-
autoneg
off
link-
speed
25000
link-
fec
off
Instead of configuring settings for each individual interface, you can specify
a policy for all interfaces on a switch or tailor custom settings for each
520 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
address.json
"ethtool": {
"defaults": {
"link-duplex": "full"
},
"iface_defaults": {
"swp1": {
"link-autoneg": "on",
"link-speed": "1000"
},
"swp16": {
"link-autoneg": "off",
"link-speed": "10000"
},
"swp50": {
"link-autoneg": "off",
"link-speed": "100000",
"link-fec": "rs"
https://docs.cumulusnetworks.com 521
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
},
"address": {
"iface_defaults": {
NOTE
Breakout Ports
• Break out 100G switch ports into 2x50G, 4x25G, or 4x10G with breakout
cables.
• Break out 40G switch ports into four separate 10G ports (4x10G) for use
with breakout cables.
522 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
• Combine (aggregate or gang) four 10G switch ports into one 40G port
for use with a breakout cable (not to be confused with a bond).
NOTE
https://docs.cumulusnetworks.com 523
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
switches.
cumulus/ports.conf file:
1=4x25G
2=disabled
524 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Mellanox switches with the Spectrum 2 and Spectrum 3 ASICs have a limit
of 128 logical ports. To ensure that the number of total logical interfaces
does not exceed the limit, Spectrum 2 and Spectrum 3 platforms with 64
interfaces have the following breakout limitation:
When you split ports into four interfaces, you must configure the adjacent
port as “disabled” in this file. When splitting a port into two interfaces, such
as 2x50G, you do not have to disable the adjacent port. Adjacent ports only
need to be disabled when a port is split into four interfaces. For example,
when splitting port 1 into four 25G interfaces, port 2 must be configured as
1=4x25G 2=disabled
https://docs.cumulusnetworks.com 525
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
This example command breaks out the 100G port on swp3 into four
25G ports:
To break out swp3 into four 10G ports, run the net add interface swp3
These commands break out swp3 into four 25G interfaces in the /etc/
interfaces file:
...
auto swp3s0
526 https://docs.cumulusnetworks.com
iface swp3s0
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 527
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
...
1=100G
2=100G
3=100G
4=100G
...
services.
528 https://docs.cumulusnetworks.com
cumulus@switch:~$ sudo systemctl restart switchd.service
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
You can gang (combine) four 10G ports into one 40G port for use with a
breakout cable, provided you follow these requirements:
• You must gang four 10G ports in sequential order. For example, you
cannot gang swp1, swp10, swp20 and swp40 together.
• The ports must be in increments of four, with the starting port being
swp1 (or swp5, swp9, or so forth); so you cannot gang swp2, swp3, swp4
and swp5 together.
NOTE
https://docs.cumulusnetworks.com 529
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
To gang swp1 through swp4 into a 40G port, run the following
commands:
# SFP+ ports#
1=40G/4
2=40G/4
3=40G/4
4=40G/4
5=10G
100G and 40G switches can support a certain number of logical ports,
530 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
manufacturer.
The following example shows the logical port limitation provided in the Dell
Z9254F-ON ports.conf file. The maximum number of ports for this switch
is 128.
# ports.conf --
split into
effect.
https://docs.cumulusnetworks.com 531
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
if an odd-numbered
(even-numbered port)
port be
interfaces, port
# 11=4x10G
# 12=disabled
# QSFP28 ports
532 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Statistics
command:
-------------------------
br0
Counters TX RX
errors 0 0
unicast 0 0
broadcast 0 0
multicast 0 0
https://docs.cumulusnetworks.com 533
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
LLDP
NIC statistics:
HwIfInOctets: 21870
HwIfInUcastPkts: 0
HwIfInBcastPkts: 0
HwIfInMcastPkts: 243
HwIfOutOctets: 1148217
HwIfOutUcastPkts: 0
HwIfOutMcastPkts: 11353
HwIfOutBcastPkts: 0
HwIfInDiscards: 0
HwIfInL3Drops: 0
HwIfInBufferDrops: 0
HwIfInAclDrops: 0
HwIfInBlackholeDrops: 0
HwIfInDot3LengthErrors: 0
HwIfInErrors: 0
534 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
SoftInErrors: 0
HwIfOutErrors: 0
HwIfOutQDrops: 0
HwIfOutNonQDrops: 0
SoftOutErrors: 0
SoftOutDrops: 0
SoftOutTxFifoFull: 0
HwIfOutQLen: 0
To verify SFP settings, run the ethtool -m command. The following example
shows the vendor, type and power output for the swp4 interface.
'Vendor|type|power\s+:'
CORP.
Vendor PN : FTLX2071D327
Vendor rev : A
https://docs.cumulusnetworks.com 535
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Vendor SN : UY30DTX
-2.81 dBm
-1.38 dBm
Considerations
file, you need to run the ifreload -a command to reload the configuration
• If you configure, or configure then remove, the port speed in the /etc/
cumulus/ports.conf file and you also set or remove the speed on the
• If you break out a switch port or remove a break out port and the port
speed is set in both the /etc/cumulus/ports.conf file and the /etc/
network/interfaces file.
If you change the port speed in the /etc/cumulus/ports.conf file but the
536 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
after you edit the /etc/cumulus/ports.conf file and restart switchd, you
For 10G and 1G SFPs inserted in a 25G port on a Broadcom switch, you
must configure the four ports in the same core to be 10G. Each set of four
25G ports are controlled by a single core; therefore, each core must run at
the same clock speed. The four ports must be in sequential order; for
example, swp1, swp2, swp3, and swp4, unless a particular core grouping is
10G. 1G SFPs are clocked at 10G speeds; therefore, for 1G SFPs, the /etc/
...
# SFP28 ports
1=25G
2=25G
3=25G
https://docs.cumulusnetworks.com 537
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
4=25G
5=10G
6=10G
7=10G
8=10G
9=25G
...
NOTE
the port speed unless the four ports in a core group are already
configured to 10G and switchd has been restarted. If the ports
2. Restart switchd.
538 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
WARNING
hardware configuration.
3. If you want to set the speed of any SFPs to 1G, set the port speed to
1000 Mbps using NCLU commands; this is not necessary for 10G SFPs.
You don’t need to set the port speed to 1G for all four ports. For example,
if you intend only for swp5 and swp6 to use 1G SFPs, do the following:
NOTE
https://docs.cumulusnetworks.com 539
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Breaking out the 100G ports to 4x10G and 4x25G is not supported on the
Delta AGV848v1 switch.
You cannot remove the QSFPx2 module while the switch is powered on; it
is not hot-swappable. However, if an Operation timed out error occurs,
restart switchd to bring the link up. Be aware that this disrupts your
network.
540 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
The front SFP+ ports (swp33 and swp34) are disabled in Cumulus Linux on
the following switches:
• Dell Z9100-ON
• Penguin Arctica 3200-series switches (the 3200C, 3200XL and
3200XLP)
• Supermicro SSE-C3632S
On the Dell S5248F switch, the 2x200G QSFP-DD interfaces labeled 49/50
https://docs.cumulusnetworks.com 541
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
and 51/52 are not supported natively at 200G speeds. The interfaces are
supported with 100G cables; however, you can only use one 100G from
each QSFP-DD port. The upper QSFP-DD port is named swp49 and the
Cumulus Linux does not support the 2x10G QSFP+ ports on the Dell
S5232F switch.
On the Dell S4148T switch, the two QSFP+ ports are set to disabled by
default and the four QSFP28 ports are configured for 100G. The following
example shows the default settings in the /etc/cumulus/ports.conf file for
this switch:
...
# QSFP+ ports
27=disabled
28=disabled
# QSFP28 ports
542 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
25=100G
26=100G
29=100G
30=100G
To enable the two QSFP+ ports, you must configure all four QSFP28 ports
for either 40G or 4x10G. You cannot use either of the QSFP+ ports if any of
The following example shows the /etc/cumulus/ports.conf file with all four
QSFP28 ports configured for 40G and both QSFP+ ports enabled:
...
# QSFP+ ports
27=40G
28=40G
# QSFP28 ports
25=40G
https://docs.cumulusnetworks.com 543
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
26=40G
29=40G
30=40G
NOTE
To disable the QSFP+ ports, you must set the ports to disabled. Do
not comment out the lines as this prevents switchd from restarting.
platforms:
the switch has board revision R01D (to determine the revision of the
board, look for the output in the label revision field when you run
decode-syseeprom)
• Dell S5248F-ON
• Mellanox SN2410
• Mellanox SN2010
544 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
After rebooting the Melllanox SN2100 switch, eth0 always has a speed of
100Mb/s. If you bring the interface down and then back up again, the
interface negotiates 1000Mb. This only occurs the first time the interface
comes up.
To work around this issue, add the following commands to the /etc/
rc.local file to flap the interface automatically when the switch boots:
modprobe -r igb
sleep 20
modprobe igb
On the EdgeCore AS7326-56X switch, all four switch ports in each port
group must be set to the same link speed; otherwise, the links do not come
up. These ports are set to 25G by default, but can also be set to 10G. The
port groups on this switch are as follows, where each row is a port group:
• 1 2 3 6*
• 4 5 7* 9
• 8 10 11* 12
• 13 14 15 18*
• 16 17 19* 21
• 20 22 23* 24
https://docs.cumulusnetworks.com 545
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
• 25 26 27 30*
• 28 29 31* 33
• 32 34 35* 36
• 37 38 39 42*
• 40* 41 43 45
• 44* 46 47 48
For example, if you configure port 19 for 10G, you must also configure ports
16, 17 and 21 for 10G.
Additionally, you can gang each port group together as a 100G or 40G
port. When ganged together, one port (based on the arrangement of the
NOTE
The Lenovo NE2572O switch has external retimers on swp1 through swp8.
Currently, these ports only support a speed of 25G.
546 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
The following switches that use Serial over LAN technology (SOL) do not
support eth0 speed or auto-negotiation changes:
• EdgeCore AS7816-64X
• Penguin Arctica 4804ip
second for the second interface to show the operational down status. In
addition, the services on this interface also take an extra second to come
down.
https://docs.cumulusnetworks.com 547
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
10G DAC, 10G Optical, 1G RJ45 SFP), the link breaks. To work around this
issue, disable auto-negotiation on interfaces where it is not supported.
Related Information
548 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
ifplugd
ifplugd is an Ethernet link-state monitoring daemon that executes user-
daemon.
Install ifplugd
You can install this package even if the switch is not connected to the
To install ifplugd:
https://docs.cumulusnetworks.com 549
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Configure ifplugd
After you install ifplugd, you must edit two configuration files:
• /etc/default/ifplugd
• /etc/ifplugd/action.d/ifupdown
appropriate. Add the peerbond name before you save the file.
INTERFACES="peerbond"
HOTPLUG_INTERFACES=""
SUSPEND_ACTION="stop"
#!/bin/sh
set -e
case "$2" in
550 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
up)
'{print $8}')
if [ "$clagrole" = "secondary" ]
then
do
done
fi
;;
down)
'{print $8}')
if [ "$clagrole" = "secondary" ]
then
do
https://docs.cumulusnetworks.com 551
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
done
fi
;;
esac
Considerations
The default shell for ifplugd is dash (/bin/sh) instead of bash, as it provides
a faster and more nimble shell. However, dash contains fewer features than
552 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
traffic.conf.
NOTE
The /usr/lib/python2.7/dist-packages/
https://docs.cumulusnetworks.com 553
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
same priority value are assigned to separate queues, which are assigned
equal scheduling weights.
NOTE
Syntax Checker
file.
554 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
On both Broadcom and Mellanox switches, you can run the syntax checker
manually from the command line by issuing the cl-consistency-check --
by default. If you run the command with -q, errors are written to the /var/
log/switchd.log file.
following options:
Option De
Desscription
You can run the syntax checker when switchd is either running or stopped.
Example C
Comman
ommands
ds
The following example command runs the syntax checker on the default
/etc/cumulus/datapath/traffic.conf file and shows that no errors are
detected:
https://docs.cumulusnetworks.com 555
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
traffic.conf
The following example command runs the syntax checker on the default
-q
The following example command runs the syntax checker on the /mypath/
-t /path/test-traffic.conf
traffic.conf
The following example command runs the syntax checker on the /mypath/
556 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
test-traffic.conf file in quiet mode. If errors exist, they are written to the
/var/log/switchd.log file.
-t /path/test-traffic.conf -q
You can mark traffic for egress packets through iptables or ip6tables rule
To enable traffic marking, use cl-acltool. Add the -p option to specify the
location of the policy file. By default, if you do not include the -p option, cl-
action extension:
https://docs.cumulusnetworks.com 557
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
[ebtables]
Option De
Desscription
NOTE
both.
558 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
[iptables]
[ip6tables]
You can put the rule in either the mangle table or the default filter table; the
mangle table and filter table are put into separate TCAM slices in the
hardware.
To put the rule in the mangle table, include -t mangle; to put the rule in the
https://docs.cumulusnetworks.com 559
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
NOTE
PFC operates between two adjacent neighbor switches; it does not provide
end-to-end flow control. However, when an upstream neighbor throttles
560 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
PFC congestion detection is implemented on the switch using xoff and xon
threshold values for the specific ingress buffer which is used by the
targeted switch priorities. When a packet enters the buffer and the buffer
timeout value for the upstream switch: packet transmission can resume
after the timer has expired, or when a PFC frame with quanta == 0 is
After the downstream switch has sent a PFC frame upstream, it continues
to receive packets until the upstream switch receives and responds to the
PFC frame. The downstream ingress buffer must be large enough to store
those additional packets after the xoff threshold has been reached.
https://docs.cumulusnetworks.com 561
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
threshold for the PFC buffer; when this limit is reached, an xoff transition
is initiated, signaling the upstream port to stop sending traffic, during
number of bytes to subtract from the xoff limit, which results in a second
threshold at which the egress port resumes sending traffic. After the xoff
limit is reached and the upstream port stops sending traffic, the buffer
begins to drain. When the buffer reaches 8000 bytes (assuming default
xoff and xon settings), the egress port signals that it can start receiving
traffic again. The default is 2000 bytes.
• Enable the egress port to signal the upstream port to stop sending traffic
(pfc.pfc_port_group.tx_enable). The default is true.
• The switch priority value(s) are mapped to the specific ingress buffer for
each targeted switch port. Cumulus Linux looks at either the 802.1p bits
or the IP layer DSCP bits depending on which is configured in the
traffic.conf file to map packets to internal switch priority values.
562 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
The following configuration example shows PFC configured for ports swp1
through swp4 and swp6:
# swp1-swp4,swp8,swp50s0-swp50s3
group
# -- set the xoff byte limit (buffer limit that triggers PFC
# -- set the xon byte delta (buffer limit that triggers PFC
pfc.port_group_list = [pfc_port_group]
pfc.pfc_port_group.cos_list = []
pfc.pfc_port_group.port_set = swp1-swp4,swp6
pfc.pfc_port_group.port_buffer_bytes = 25000
pfc.pfc_port_group.xoff_size = 10000
pfc.pfc_port_group.xon_delta = 2000
pfc.pfc_port_group.tx_enable = true
pfc.pfc_port_group.rx_enable = true
https://docs.cumulusnetworks.com 563
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Port Groups
A port group refers to one or more sequences of contiguous ports. You can
define multiple port groups by adding:
• The port_set, rx_enable, and tx_enable configuration lines for each port
group.
...
swp2
swp3
swp4
swp5
swp6s0
swp6s1
564 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
swp6s2
swp6s3
swp7
...
not necessary.
WARNING
hardware configuration.
https://docs.cumulusnetworks.com 565
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Link Pause
The PAUSE frame is a flow control mechanism that halts the transmission of
the transmitter for a specified period of time. A server or other network
node within the data center may be receiving traffic faster than it can
handle it, thus the PAUSE frame. In Cumulus Linux, you can configure
individual ports to execute link pause by:
TIP
What’s the difference between link pause and priority flow control?
566 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Here is an example configuration that enables both types of link pause for
swp1 through swp4 and swp6:
# swp1-swp4,swp8,swp50s0-swp50s3
group
# link pause
link_pause.port_group_list = [pause_port_group]
link_pause.pause_port_group.port_set = swp1-swp4,swp6
link_pause.pause_port_group.port_buffer_bytes = 25000
link_pause.pause_port_group.xoff_size = 10000
link_pause.pause_port_group.xon_delta = 2000
link_pause.pause_port_group.rx_enable = true
link_pause.pause_port_group.tx_enable = true
https://docs.cumulusnetworks.com 567
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
not necessary.
WARNING
hardware configuration.
568 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
HwIfInDot3LengthErrors: 0
HwIfInErrors: 0
HwIfInDot3FrameErrors: 0
SoftInErrors: 0
SoftInFrameErrors: 0
HwIfOutErrors: 35495749
SoftOutErrors: 0
HwIfInDot3LengthErrors: 3038098
HwIfInErrors: 297595762
HwIfInDot3FrameErrors: 293710518
To work around this issue, disable link pause or disable cut-through mode in
To disable link pause, comment out the link_pause* section in the /etc/
cumulus/datapath/traffic.conf file:
#link_pause.port_group_list = [port_group_0]
#link_pause.port_group_0.port_set = swp45-swp54
#link_pause.port_group_0.rx_enable = true
https://docs.cumulusnetworks.com 569
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
#link_pause.port_group_0.tx_enable = true
cut_through_enable = false
NOTE
Congestion Notification
instead of dropping the packet, which is how TCP typically behaves when
570 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
an IP header DiffServ (ToS) field to 01 or 10. A packet that has the least 2
The ECN mechanism on a switch only marks packets to notify the end
receiver. It does not take any other action or change packet handling in any
way, nor does it respond to packets that have already been marked ECN by
an upstream switch.
NOTE
On T
Trrident II sw
swit
itche
chess only
only, if ECN is enabled on a specific queue,
the ASIC also enables RED on the same queue. If the packet is ECT
marked (the ECN bits are 01 or 10), the ECN mechanism executes
https://docs.cumulusnetworks.com 571
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
The downstream switches with ECN enabled perform the same actions as
the traffic is received. If the ECN bits are set, they remain set. The only way
572 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
• For the default source packet fields and mapping, each selected packet
field must have a block of mapped values. Any packet field value that is
not specified in the configuration is assigned to a default internal switch
field should have a block of mapped values. Any internal switch priority
value that is not specified in the configuration is assigned to a default
packet field value. The configuration applies to every forwarding port
• Per-port source packet fields and mapping apply to the designated set of
ports.
• Per-port remark packet fields and mapping apply to the designated set
of ports.
https://docs.cumulusnetworks.com 573
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
NOTE
remark.port_group_list = [ingress_remark_group,
egress_remark_group]
remark.ingress_remark_group.packet_priority_remark_set =
[dscp]
remark.remark_port_group.port_set = swp1-swp4,swp6
remark.egress_remark_group.port_set = swp10-swp20
remark.egress_remark_group.cos_0.priority_remark.dscp =
[2]
remark.egress_remark_group.cos_1.priority_remark.dscp =
[10]
remark.egress_remark_group.cos_2.priority_remark.dscp =
[18]
574 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
remark.egress_remark_group.cos_3.priority_remark.dscp =
[26]
remark.egress_remark_group.cos_4.priority_remark.dscp =
[34]
remark.egress_remark_group.cos_5.priority_remark.dscp =
[42]
remark.egress_remark_group.cos_6.priority_remark.dscp =
[50]
remark.egress_remark_group.cos_7.priority_remark.dscp =
[58]
switchd.service command.
https://docs.cumulusnetworks.com 575
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
WARNING
On Mellanox switches with the Spectrum ASIC, the following options in the
/etc/cumulus/datapath/traffic.conf file do not require you to restart
reload
576 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Related Information
https://docs.cumulusnetworks.com 577
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Hardware-enabled DDOS
Protection
It is crucial to protect the control plane on the switch to ensure that the
proper control plane applications have access to the CPU. Failure to do so
increases vulnerabilities to a Denial of Service (DOS attack. Cumulus Linux
performance impact:
• Source IP address matches the destination address for IPv4 and IPv6
packets
• Source MAC address matches the destination MAC address
• Unfragmented or first fragment SYN packets with a source port of
0-1023
• TCP packets with control flags =0 and seq number == 0
• TCP packets with FIN, URG and PSH bits set and seq number == 0
• TCP packets with both SYN and FIN bits set
• TCP source PORT matches the destination port
• UDP source PORT matches the destination port
• First TCP fragment with partial TCP header
• TCP header has fragment offset value of 1
• ICMPv6 ping packets payload larger than programmed value of ICMP
max size
578 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
NOTE
dos_enable = true
bcm/datapath.conf file in a text editor. Set any of the DOS checks to true.
For example:
https://docs.cumulusnetworks.com 579
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
cumulus/__chip_config/bcm/datapath.conf
dos.sip_eq_dip = true
dos.smac_eq_dmac = true
dos.tcp_hdr_partial = true
dos.tcp_syn_frag = true
dos.tcp_ports_eq = true
dos.tcp_flags_syn_fin = true
dos.tcp_flags_fup_seq0 = true
dos.tcp_offset1 = true
dos.tcp_ctrl0_seq0 = true
dos.udp_ports_eq = true
dos.icmp_frag = true
dos.icmpv4_length = true
dos.icmpv6_length = true
dos.ipv6_min_frag = true
NOTE
580 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
BFD packets are dropped because the BFD protocol uses the
same source and destination UDP ports.
dos.sip_eq_dip
dos.smac_eq_dmac
dos.tcp_ctrl0_seq0
dos.tcp_flags_fup_seq0
dos.tcp_flags_syn_fin
dos.tcp_ports_eq
dos.tcp_syn_frag
dos.udp_ports_eq
4. Restart switchd:
WARNING
https://docs.cumulusnetworks.com 581
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
582 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
DHCP
This section descibes how to configure:
https://docs.cumulusnetworks.com 583
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
DHCP Relays
DHCP is a client/server protocol that automatically provides IP hosts with
IP addresses and other related configuration information. A DHCP relay
(agent) is a host that forwards DHCP packets between clients and servers.
DHCP relays forward requests and replies between clients and servers that
are not on the same physical subnet.
This topic describes how to configure DHCP relays for IPv4 and IPv6.
Configurations on the server hosts, DHCP relays, and DHCP server are
provided using the following topology:
NOTE
The dhcpd and dhcrelay services are disabled by default. After you
584 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
finish configuring the DHCP relays and servers, you need to start
those services. If you intend to run these services within a VRF,
including the management VRF, follow these steps.
https://docs.cumulusnetworks.com 585
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
WARNING
Specify the IP address of each DHCP server and the interfaces that are
used as the uplinks. In the example commands below, the DHCP server
IP address is 172.16.1.102, VLAN 1 (the SVI is vlan1) and the uplinks are
swp51 and swp52. As per RFC 3046, you can specify as many server IP
addresses that can fit in 255 octets. You can specify each address only
once.
default/isc-dhcp-relay file:
586 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
To see the DHCP relay status, use the systemctl status dhcrelay.service
command:
enabled)
Docs: man:dhcrelay(8)
CGroup: /system.slice/dhcrelay.service
Cumulus Linux supports DHCP Agent Information Option 82, which allows a
DHCP relay to insert circuit or relay specific information into a request that
is being forwarded to a DHCP server. Two sub-options are provided:
To enable the DHCP Agent Information Option, you configure the -a option.
https://docs.cumulusnetworks.com 587
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
By default, when you enable this option, the Circuit ID is the printable name
of the interface on which the client request is received, typically an SVI. The
Remote ID is the System MAC of the device on which DHCP relay is
running.
NOTE
NCLU commands are not currently available for this feature. Use
• To configure the DHCP relay to inject the ingress SVI interface against
...
OPTIONS="-a"
• To configure the DHCP relay to inject the physical switch port on which
the relayed DHCP discover packet arrives instead of the SVI, edit the
/etc/default/isc-dhcp-relay file and add -a --use-pif-circuit-id to
588 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
...
OPTIONS="-a --use-pif-circuit-id"
relay file and add -a -r to the OPTIONS line followed by a custom string
(up to 255 characters that is used for the Remote ID. For example:
...
OPTIONS="-a -r CUSTOMVALUE"
Make sure to restart the dhcrelay service to apply the new configuration:
https://docs.cumulusnetworks.com 589
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
anycast traffic, the SVI IP address is not unique to each rack; it is typically
shared amongst all racks. Most EVPN ToR deployments only possess a
single unique IP address, which is the loopback IP address.
sub-option, which is built by the DHCP relay agent. The link selection sub-
option takes on the normal role of the giaddr in relaying to the DHCP server
which subnet is correlated to the DHCP request. When using this sub-
option, the giaddr continues to be present but only relays the return IP
address that is to be used by the DHCP server; the giaddr becomes the
unique loopback IP address.
When enabling RFC 3527 support, you can specify an interface, such as the
loopback interface or a switch port interface to be used as the giaddr. The
relay picks the first IP address on that interface. If the interface has multiple
NOTE
The following illustration demonstrates how you can control the giaddr with
590 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
RFC 3527.
To enable RFC 3527 support and control the giaddr, run the following
commands.
https://docs.cumulusnetworks.com 591
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
1. Run the net add dhcp relay giaddr-interface command with the
daemon?
OPTIONS="-U lo"
10.0.0.1
You can configure the dhcrelay service to forward IPv4 (only) DHCP
packets to a DHCP server and ensure that the source IP address of the
relayed packet is the same as the gateway IP address.
NOTE
•
NCLU Commands Linux Commands
https://docs.cumulusnetworks.com 593
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
NOTE
downstream interfaces. In the example below, the SVI is vlan1, and the
interfaces are swp51 and swp52.
INTF_CMD="-l vlan1"
To see the status of the IPv6 DHCP relay, use the systemctl status
594 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
dhcrelay6.service command:
disabled)
UTC; 1s ago
Docs: man:dhcrelay(8)
CGroup: /system.slice/dhcrelay6.service
https://docs.cumulusnetworks.com 595
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
# sourced by /etc/init.d/isc-dhcp-relay
scripts
SERVERS="102.0.0.2"
DHCP requests?
above.
OPTIONS=""
596 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
# sourced by /etc/init.d/isc-dhcp-relay6
scripts
INTF_CMD=""
OPTIONS=""
https://docs.cumulusnetworks.com 597
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
The configuration procedure for DHCP relay with VRR is the same as
documented above.
NOTE
The DHCP relay must run on the SVI and not on the -v0 interface.
Troubleshooting
If you are experiencing issues with DHCP relay, you can check if there is a
problem with systemd:
server>
598 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
host> -u <ip-address-hcp-server>%<interface-facing-dhcp-
server>
For example:
-i swp51
2001:db8:100::2%swp51
The above commands manually activate the DHCP relay process and they
do not persist when you reboot the switch.
To see how DHCP relay is working on your switch, run the journalctl
command:
https://docs.cumulusnetworks.com 599
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
To specify a time period with the journalctl command, use the --since
flag:
grep dhcrelay
600 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Configuration Errors
For example, if you see an error similar to the following, there might be a
space between the DHCP server address and the interface used as the
uplink.
change.
Considerations
The dhcrelay command does not bind to an interface if the interface’s name
is longer than 14 characters. To work around this issue, change the interface
https://docs.cumulusnetworks.com 601
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
602 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
DHCP Servers
A DHCP Server automatically provides and assigns IP addresses and other
network parameters to client devices. It relies on the Dynamic Host
Configuration Protocol to respond to broadcast requests from clients.
This topic describes how to configure a DHCP server for IPv4 and IPv6.
Configurations on the hosts, DHCP relay and DHCP server are provided
using the following topology. The DHCP server is a switch running Cumulus
Linux; however, the DHCP server can also be located on a dedicated server
in your environment.
NOTE
The dhcpd and dhcrelay services are disabled by default. After you
https://docs.cumulusnetworks.com 603
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
finish configuring the DHCP relays and servers, you need to start
those services. If you intend to run these services within a VRF,
including the management VRF, follow these steps.
To configure the DHCP server on a Cumulus Linux switch for IPv4 and IPv6,
• Pool 1 is the subnet that includes the IP addresses of the interfaces on the
DHCP server
• Pool 2 is the subnet that includes the IP addresses being assigned
configuration as an example:
604 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
DHCPD_CONF="-cf /etc/dhcp/dhcpd.conf"
INTERFACES="swp1"
https://docs.cumulusnetworks.com 605
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
configuration as an example:
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
subnet6 2001:db8:100::/64 {
subnet6 2001:db8:1::/64 {
606 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
DHCPD_CONF="-cf /etc/dhcp/dhcpd6.conf"
INTERFACES="swp1"
You can assign an IP address and other DHCP options based on physical
location or port regardless of MAC address to clients that are attached
directly to the Cumulus Linux switch through a switch port. This is helpful
when swapping out switches and servers; you can avoid the inconvenience
of collecting the MAC address and sending it to the network administrator
to modify the DHCP server configuration.
Edit the /etc/dhcp/dhcpd.conf file and add the interface name ifname to
https://docs.cumulusnetworks.com 607
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
host myhost {
ifname "swp1" ;
fixed-address 10.10.10.10 ;
Troubleshooting
DHCP request. You can run the following command to see the DHCP
request:
608 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
DHCP Snooping
DHCP snooping enables Cumulus Linux to act as a middle layer between
the DHCP infrastructure and DHCP clients by scanning DHCP control
packets and building an IP-MAC database. Cumulus Linux accepts DHCP
offers from only trusted interfaces and can rate limit packets.
NOTE
https://docs.cumulusnetworks.com 609
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
IPv4 IPv6
trust swp6
rate-limit 50
"bridge": [
"vlan": [
"vlan_id": 100,
"snooping": 1,
"rate_limit": 50,
610 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
"ip_version": 6,
"trusted_interface": [
"swp6"
],
To remove all DHCP snooping configuration, run the net del dhcp-snoop
To show the DHCP binding table, run the net show dhcp-snoop table
https://docs.cumulusnetworks.com 611
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
command for IPv4 or the net show dhcp-snoop6 table command for IPv6.
The following example command shows the DHCP binding table for IPv4:
612 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
802.1X Interfaces
The IEEE 802.1X protocol provides a method of authenticating a client
(called a supplicant) over wired media. It also provides access for individual
MAC addresses on a switch (called the authenticator) after those MAC
which has been modified to provide the PAE (port access entity).
https://docs.cumulusnetworks.com 613
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Supported Features
◦ Parking VLAN.
◦ Dynamic VLAN.
◦ MAB (MAC-based authentication bypass).
• MAB, parking VLAN, and dynamic VLAN all require a bridge access port.
• In traditional bridge mode, parking VLANs and dynamic VLANs both
614 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
accounting port.
◦ Parking VLAN ID.
https://docs.cumulusnetworks.com 615
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Before you can authenticate with 802.1x on your switch, you must configure
a RADIUS server somewhere in your network. Popular examples of
commercial software with RADIUS capability include Cisco ISE and Aruba
ClearPass (you can read our six-part blog series on campus design, which
There are also open source versions of software supporting RADIUS such
as PacketFence and FreeRADIUS. This section discusses how to add
FreeRADIUS to a Debian server on your network.
616 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
NOTE
When installed and configured, the FreeRADIUS server can serve Cumulus
Linux running hostapd as a RADIUS client.
All the 802.1X interfaces share the same RADIUS server settings. Make sure
you configure the RADIUS server before you configure the 802.1X
https://docs.cumulusnetworks.com 617
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
• The RADIUS Server IPv4 or IPv6 address, which has no default, but is
required. You can also specify a VRF.
• The RADIUS shared secret, which has no default, but is required.
618 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 619
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
mysecret
https://docs.cumulusnetworks.com 621
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
ifreload.
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=2
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=TTLS MD5
identity="host1"
anonymous_identity="host1"
password="host1password"
phase1="auth=MD5"
eapol_flags=0
https://docs.cumulusnetworks.com 623
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=2
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=TTLS MD5
identity="host2"
anonymous_identity="host2"
password="host2password"
phase1="auth=MD5"
eapol_flags=0
To test that a supplicant (client) can communicate with the Cumulus Linux
Authenticator switch, install the wpasupplicant package:
624 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
successfully
compl
https://docs.cumulusnetworks.com 625
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
successfully
comp
Linux. The default values are 1813 for the accounting port and 1812 for the
authentication port. You can also change the reauthentication period for
626 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
2812
MAB must be configured on both the RADIUS server and the RADIUS client
(the Cumulus Linux switch).
When using a VLAN-aware bridge, the switch port must be part of bridge
named bridge.
https://docs.cumulusnetworks.com 627
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
To configure MAB:
•
NCLU Commands Linux Commands
can route traffic from that device to a different VLAN and associate that
VLAN with one of the switch ports to which the supplicant is attached.
the PVID of the switch port. For traditional mode bridges, Cumulus Linux
identifies the bridge associated with the parking VLAN ID and moves the
switch port into that bridge. If an appropriate bridge is not found for the
When using a VLAN-aware bridge, the switch port must be part of bridge
named bridge.
628 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
If the authentication for swp1 fails, the port is moved to the parking
VLAN:
Value
-----------------
[PARKED_VLAN]
Username
vlan60
Authentication Type
MD5
VLAN
777
24772
https://docs.cumulusnetworks.com 629
EAPOL Frames RX
9
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
configuration.
switch port into that bridge. If an appropriate bridge is not found for the
move, the port remains in an unauthenticated state where no packets can
be received or transmitted.
630 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
You can specify the require option in the command so that VLAN
attributes but the user has an incorrect password, the user is placed in
the parking VLAN (if you have configured parking VLAN).
Server.
•
NCLU Commands Linux Commands
NOTE
Dynamic ACLs
632 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
interface and the MAC address that was authorized (sometimes called a
station).
Since DACLs restrict access to network resources at the user level, multiple
users on the same VLAN can access different resources based on the policy
provided by the RADIUS server. DACLs utilize NAS-Filter-Rule (RADIUS
attribute 92), so you can configure them in your RADIUS server
configuration and not on each switch.
The DACLs are also dynamically modified to fit the specific authenticating
NOTE
address.
https://docs.cumulusnetworks.com 633
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
implementation.
How It Works
ACL filter or just use the Cumulus Linux default (see below). There are no
NCLU commands for creating the filter itself.
installs the pre-auth ACL defaults for the port (once you execute net
commit).
3. When a supplicant on the port tries to get 802.1X authorized, the RADIUS
server may (or may not) send along some NAS-Filter-Rule attributes in
the Access-Accept message.
4. If any filters are sent from the RADIUS server, Cumulus Linux applies
them before the default pre-auth ACL.
5. If no filters are sent, Cumulus Linux leaves the defaults in place, and no
634 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Keyword Definition
varies widely by RADIUS vendor. But the resulting format for these rules
https://docs.cumulusnetworks.com 635
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
converted to ebtables rules using the actual user MAC address, and are
The rules for the appropriate direction are evaluated in order, with the first
matched rule terminating the evaluation. Each packet is evaluated once. If
no rule matches, the packet is dropped if the last rule was a deny.
If these rules are invalid — for example, they contain contain port ranges or
IPv6 addresses — the port does not get authorized and a log message is
written to /var/log/syslog.
Get Started
To start applying a DACL to a port, configure the RADIUS server and client,
You configure DACLs on the RADIUS server on your network using the
methods provided by the RADIUS software, then you enable it for one or
more switch ports on a given switch. This section shows the configuration
methods for the FreeRADIUS server.
636 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
On the RADIUS server, set the password for the RADIUS client (that is, the
Cumulus Linux switch) in the /etc/freeradius/3.0/clients.conf file as
client leaf01 {
ipaddr = 10.0.0.1
secret = CumulusLinux!
example:
Service-Type = Framed-User,
Tunnel-Type = VLAN,
Tunnel-Medium-Type = "IEEE-802",
Tunnel-Private-Group-ID = 222,
53",
https://docs.cumulusnetworks.com 637
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
123",
172.16.0.99",
172.16.0.33",
172.16.0.105",
172.16.0.224",
172.16.224.142",
172.16.224.0/9 8883",
like /etc/cumulus/acl/policy.d/150_dot1x_dacl_swp2_000200000002.rules
(the filename is always prefaced with 150_; default rules filenames are
prefaced with 200_). It looks like the following:
150_dot1x_dacl_swp2_000200000002.rules
638 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
########
[ebtables]
172.16.0.99 -j ACCEPT
https://docs.cumulusnetworks.com 639
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
172.16.131.99 -j ACCEPT
172.16.0.33 -j ACCEPT
172.16.131.105 -j ACCEPT
10.72.169.224 -j ACCEPT
10.72.168.142 -j ACCEPT
640 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
mark 2
mark 2
TIP
In the above rules file, the --set-mark 2 option ensures that the
nearly identical next rule gets installed in the dedicated TCAM slice
for 802.1X.
https://docs.cumulusnetworks.com 641
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
Configure the Cumulus Linux switch as a RADIUS client using the net
mysecret
Enable one or more switch ports for DACLs by running the net add
[mab]
Pre-auth ACLs
A pre-auth ACL is a static ACL that is applied to all 802.1X dynamic ACL-
642 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
enabled ports by default. It provides some basic services that are available
before 802.1X authorization occurs. The default pre-auth ACL in Cumulus
Linux allows for DHCP and DNS to operate without authorizing the
supplicant.
you can create your own. The default pre-auth ACL permits DHCP (using
source port 68 and destination port 67) and DNS (using destination port
53) before 802.1X authorization. You configure pre-auth ACLs only with
ebtables syntax.
dot1x_preauth_dacl/default_preauth_dacl.rules
[ebtables]
-j ACCEPT
https://docs.cumulusnetworks.com 643
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
WARNING
If you don’t use the default pre-auth ACL and don’t create your
own, all traffic gets denied.
To create your own pre-auth ACL file, complete the following steps.
•
NCLU Commands Linux Commands
command.
filename my_preauth_dacl.rules
Troubleshooting
To see which interfaces are enabled for 802.1X, run the net show dot1x
644 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
while the Dynamic ACL Interfaces line shows only those 802.1X interfaces
that are enabled for DACLs:
Authenticator Daemon
Attribute Value
----------------------- ----------------
MAB Interfaces
Voice Interfaces
To see which interfaces have attempted authorization for DACLs, run net
https://docs.cumulusnetworks.com 645
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
MD5 NO NO
MD5 NO YES
To determine the name of the DACL rules file for an interface after it has
been authorized and has received DACL rules, run net show dot1x
Value
-----------------
[AUTHORIZED]
Username
host1
646 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
VLAN
DACL Filename
150_dot1x_dacl_swp2_000200000002.rules
EAPOL Frames RX 3
EAPOL Frames TX 3
To see which ACLs are applied to a given interface, run net show dot1x
========================
https://docs.cumulusnetworks.com 647
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
= 421
-- bcnt = 1684
pcnt = 0 -- bcnt = 0
pcnt = 0 -- bcnt = 0
648 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
= 0 -- bcnt = 0
pcnt = 0 -- bcnt = 0
, pcnt = 0 -- bcnt = 0
pcnt = 0 -- bcnt = 0
https://docs.cumulusnetworks.com 649
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
, pcnt = 0 -- bcnt = 0
, pcnt = 0 -- bcnt = 0
0 -- bcnt = 0
650 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
-- bcnt = 0
•
NCLU Commands Linux Commands
can specify any number between 0 and 255. The default value is 4.
Cumulus Linux provides the send-eap-request-id option, which you can use
to trigger EAP packets to be sent from the host side of a connection. For
example, this option is required in a configuration where a PC connected to
a phone attempts to send EAP packets to the switch via the phone but the
https://docs.cumulusnetworks.com 651
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
PC does not receive a response from the switch (the phone might not be
ready to forward packets to the switch after a reboot). Because the switch
does not receive EAP packets, it attempts to authorize the PC with MAB
instead of waiting for the packets. In this case, the PC might be placed into
a parking VLAN to isolate it. To remove the PC from the parking VLAN, the
switch needs to send an EAP request to the PC to trigger EAP.
NOTE
NOTE
652 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Extensions to the RADIUS protocol (RFC 5176) enable the Cumulus Linux
switch to act as a Dynamic Authorization Server (DAS) by listening for
Change of Authorization (CoA) requests from the RADIUS server (Dynamic
Configure DAS
To configure DAS, provide the UDP port (3799 is the default port), the IP
https://docs.cumulusnetworks.com 653
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
654 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
The following example commands set the UDP port to the default port,
the IP address of the DAS client to 10.0.2.228, and the secret key to
myclientsecret:
You can specify a VRF so that incoming RADIUS disconnect and CoA
commands are received and acknowledged on the correct interface
cumulus@switch:~$https://docs.cumulusnetworks.com
net add dot1x radius das-client-ip 655
10.0.1.7 das-client-secret mysecret2
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
You can disable DAS in Cumulus Linux at any time by running the following
commands:
•
NCLU Commands Linux Commands
From the DAC, users can create a disconnect message using the radclient
Request packet is used when the RADIUS server wants to disconnect the
user after the session has been accepted by the RADIUS Access-Accept
packet.
656 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
packet.txt
disconnect myclientsecret
• If the packet comes from a different source IP address than the one
hostapd logs the debug message: DAS: Drop message from unknown
client.
https://docs.cumulusnetworks.com 657
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
RADIUS Protocol
658 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Length: 53
Authenticator: c0e1fa75fdf594a1cfaf35151a43c6a7
val=38cb3b6896623b4b7d32f116fa976cdc
Bounce a Port
You can create a CoA bounce-host-port message from the RADIUS server
using the radclient utility (included in the Debian freeradius-utils
package). The bounce port can cause a link flap on an authentication port,
which triggers DHCP renegotiation from one or more hosts connected to
the port.
https://docs.cumulusnetworks.com 659
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
bounce-packet.txt
myclientsecret
RADIUS Protocol
Length: 96
Authenticator: 6480d710802329269d5cae6a59bcfb59
Type: 44
Length: 17
Acct-Session-Id: D91FE8E51802097
Type: 1
Length: 10
User-Name: somebody
660 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Type: 4
Length: 6
NAS-IP-Address: 10.0.0.1
Type: 26
Length: 43
port
Type: 1
Length: 37
Cisco-AVPair: subscriber:command=bounce-host-port
You can send the NAS IPv4 or IPv6 address in access request and
accounting packets. You can only configure one NAS IP address on the
switch, which is used for all interface authorizations.
https://docs.cumulusnetworks.com 661
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands Linux Commands
10.0.0.1
To delete the NAS IP address, either run the NCLU net del dot1x radius
Troubleshooting
To check connectivity between two supplicants, ping one host from the
other:
^C
662 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
You can run net show dot1x with the following options for more data:
swp2 No Data
swp3 No Data
swp4 No Data
https://docs.cumulusnetworks.com 663
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
----------- ----------------------------------------
---------
00:02:00:00:00:01
authMultiSessionId
96703ADC82D77DF2
connected_time 182
dot1xAuthEapolFramesRx 3
dot1xAuthEapolFramesTx 3
dot1xAuthEapolLogoffFramesRx 0
dot1xAuthEapolReqFramesTx 2
dot1xAuthEapolReqIdFramesTx 1
dot1xAuthEapolRespFramesRx 2
dot1xAuthEapolRespIdFramesRx 1
dot1xAuthEapolStartFramesRx 1
dot1xAuthInvalidEapolFramesRx 0
dot1xAuthLastEapolFrameSource
00:02:00:00:00:01
dot1xAuthLastEapolFrameVersion 2
dot1xAuthPaeState 5
dot1xAuthQuietPeriod 60
dot1xAuthReAuthEnabled FALSE
dot1xAuthReAuthPeriod 0
dot1xAuthServerTimeout 30
664 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
dot1xAuthSessionAuthenticMethod 1
dot1xAuthSessionId
1B50FE8939FD9F5E
dot1xAuthSessionTerminateCause 999
dot1xAuthSessionTime 182
dot1xAuthSessionUserName testing
dot1xPaePortProtocolVersion 2
last_eap_type_as 4 (MD5)
last_eap_type_sta 4 (MD5)
----------- ----------------------------------------
---------
swp1 radiusAccClientRequests 1
radiusAccClientResponses 1
radiusAccClientServerPortNumber 1813
radiusAccServerAddress
127.0.0.1
radiusAuthClientAccessAccepts 1
https://docs.cumulusnetworks.com 665
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
radiusAuthClientAccessChallenges 1
radiusAuthClientAccessRejects 0
radiusAuthClientAccessRequests 0
radiusAuthClientServerPortNumber 1812
radiusAuthServerAddress
127.0.0.1
radiusAuthServerIndex 1
...
UNINITIALIZED->ENABLED
cumulus/acl/policy.d/00control_ps ...
/etc/cumulus/acl/policy.d/00...
cumulus/acl/policy.d/100_dot1x...
666 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
/etc/cumulus/acl/policy.d/ ..
cumulus/acl/policy.d/99control
/etc/cumulus/acl/policy.d/99
commands.
To increase the debug level in hostapd, copy over the hostapd service file,
then add -d, -dd or -ddd to the ExecStart line in the hostapd.service file:
systemd/system/hostapd.service
...
...
https://docs.cumulusnetworks.com 667
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
at interface counters
Related Information
668 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Prescriptive Topology
Manager - PTM
In data center topologies, right cabling is a time-consuming endeavor and is
error prone. Prescriptive Topology Manager (PTM) is a dynamic cabling
verification tool to help detect and eliminate such errors. It takes a
information derived from LLDP to verify that the cabling matches the
You can customize the topology.dot file to control ptmd at both the global/
Supported Features
https://docs.cumulusnetworks.com 669
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Configure PTM
At startup, ptmd connects to lldpd, the LLDP daemon, over a Unix socket
and retrieves the neighbor name and port information. It then compares the
retrieved port information with the configuration information that it read
from the topology file. If there is a match, it is a PASS, else it is a FAIL.
NOTE
670 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
PTM performs its LLDP neighbor check using the PortID ifname
TLV information.
ptmd Scripts
failfor each interface that goes through a change and runs if-topo-pass
when an LLDP or BFD check passes or if-topo-fails when the check fails.
The scripts receive an argument string that is the result of the ptmctl
Configuration Parameters
You can configure ptmd parameters in the topology file. The parameters are
Host-only Parameters
Host-only parameters apply to the entire host on which PTM is running. You
can include the hostnametype host-only parameter, which specifies if PTM
uses only the host name (hostname) or the fully-qualified domain name
(fqdn) while looking for the self-node in the graph file. For example, in the
https://docs.cumulusnetworks.com 671
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
graph file below PTM ignores the FQDN and only looks for switch04
because that is the host name of the switch on which it is running:
TIP
To avoid errors when starting the ptmd process, make sure that
graph G {
hostnametype="hostname"
BFD="upMinTx=150,requiredMinRx=250"
"cumulus":"swp44" --
"switch04.cumulusnetworks.com":"swp20"
"cumulus":"swp46" --
"switch04.cumulusnetworks.com":"swp22"
In this next example, PTM compares using the FQDN and looks for
672 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
graph G {
hostnametype="fqdn"
"cumulus":"swp44" --
"switch05.cumulusnetworks.com":"swp20"
"cumulus":"swp46" --
"switch05.cumulusnetworks.com":"swp22"
Global Parameters
Global parameters apply to every port listed in the topology file. There are
two global parameters: LLDP and BFD. LLDP is enabled by default; if no
keyword is present, default values are used for all ports. However, BFD is
disabled if no keyword is present, unless there is a per-port override
graph G {
LLDP=""
BFD="upMinTx=150,requiredMinRx=250,afi=both"
"cumulus":"swp44" -- "qct-ly2-04":"swp20"
"cumulus":"swp46" -- "qct-ly2-04":"swp22"
https://docs.cumulusnetworks.com 673
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Per-port Parameters
graph G {
LLDP=""
BFD="upMinTx=300,requiredMinRx=100"
"cumulus":"swp44" -- "qct-ly2-04":"swp20"
[BFD="upMinTx=150,requiredMinRx=250,afi=both"]
"cumulus":"swp46" -- "qct-ly2-04":"swp22"
Templates
named parameter string instead of a default one. There are two parameter
strings ptmd supports:
674 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
For example:
graph G {
LLDP=""
BFD="upMinTx=300,requiredMinRx=100"
BFD1="upMinTx=200,requiredMinRx=200"
BFD2="upMinTx=100,requiredMinRx=300"
LLDP1="match_type=ifname"
LLDP2="match_type=portdescr"
"cumulus":"swp44" -- "qct-ly2-04":"swp20"
[BFD="bfdtmpl=BFD1", LLDP="lldptmpl=LLDP1"]
"cumulus":"swp46" -- "qct-ly2-04":"swp22"
[BFD="bfdtmpl=BFD2", LLDP="lldptmpl=LLDP2"]
"cumulus":"swp46" -- "qct-ly2-04":"swp22"
In this template, LLDP1 and LLDP2 are templates for LLDP parameters.
BFD1 and BFD2 are templates for BFD parameters.
specified in milliseconds.
https://docs.cumulusnetworks.com 675
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
non-zero value.
• afi is the address family to be supported for the edge. The address
graph G {
"cumulus-1":"swp44" -- "cumulus-2":"swp20"
[BFD="upMinTx=300,requiredMinRx=100,afi=v6"]
"cumulus-1":"swp46" -- "cumulus-2":"swp22"
[BFD="detectMult=4"]
• match_type, which defaults to the interface name (ifname), but can accept
topology against the port description instead of the interface name. You
can set this parameter globally or at the per-port level.
676 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
PTM to match the topology using the fully-qualified domain name (fqdn)
supplied by LLDP.
graph G {
"cumulus-1":"swp44" -- "cumulus-2":"swp20"
[LLDP="match_hostname=fqdn"]
"cumulus-1":"swp46" -- "cumulus-2":"swp22"
[LLDP="match_type=portdescr"]
NOTE
hostname only, (cumulus-3 below), and ignores the rest of the URL:
graph G {
https://docs.cumulusnetworks.com 677
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
"cumulus-1":"swp44" --
"cumulus-2.domain.com":"swp20"
[LLDP="match_hostname=fqdn"]
"cumulus-1":"swp46" -- "cumulus-3":"swp22"
[LLDP="match_type=portdescr"]
BFD provides low overhead and rapid detection of failures in the paths
IPv4 and IPv6 single or multihop paths between any two network devices,
including unidirectional path failure detection. For information about
configuring BFD using PTM, see BFD.
678 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
NOTE
You only need to do this to check link state; you do not need to
enable PTM to determine BFD status.
command:
switch(config)# ptm-enable
switch(config)# end
switch# exit
cumulus@switch:~$
To disable the checks, delete the ptm-enable parameter from the interface:
https://docs.cumulusnetworks.com 679
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
•
NCLU Commands vtysh Commands
•
NCLU Commands vtysh Commands
With PTM enabled on an interface, the zebra daemon connects to ptmd over
a Unix socket. Any time there is a change of status for an interface, ptmd
and evaluates routing adjacency based on this flag. To check the per-
interface ptm-status:
680 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
vrf: Default-IP-Routing-Table
flags: <UP,BROADCAST,RUNNING,MULTICAST>
HWaddr: c4:54:44:bd:01:41
To start or restart the ptmd service, run the following command. The
ptmd.service
To instruct ptmd to read the topology.dot file again to apply the new
https://docs.cumulusnetworks.com 681
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
ptmctl Commands
ptmctl is a client of ptmd that retrieves the operational state of the ports
configured on the switch and information about BFD sessions from ptmd.
ptmctl parses the CSV notifications sent by ptmd. See man ptmctl for more
information.
ptmctl Examples
The examples below contain the following keywords in the output of the
cbl status column:
682 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
cbl sta
tattus K
Ke
eyword Definition
https://docs.cumulusnetworks.com 683
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
-------------------------------------------------------------
-------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
684 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
----------------------------------------------------------------------------------
peer DownDiag
----------------------------------------------------------------------------------
A N/A N/A
A N/A N/A
option:
----------------------------------------------------------
----------------------------------------------------------
https://docs.cumulusnetworks.com 685
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
To return LLDP information, use the -l option. It returns only the active
---------------------------------------------
descr on upd
---------------------------------------------
----------------------------------------------------------------------------------
686 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
tx_timeout rx_timeout
mult
----------------------------------------------------------------------------------
300 900
300 900
#continuation of output
---------------------------------------------------------------------
tx_echo
---------------------------------------------------------------------
If there are errors in the topology file or there is no session, PTM returns
appropriate outputs. Typical error strings are:
https://docs.cumulusnetworks.com 687
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
cumulus] -
(errno 2)] -
Unsupported command
For example:
-------------------------------------------------------------------------
cmd error
-------------------------------------------------------------------------
688 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
log/ptmd.log
TIP
If you encounter errors with the topology.dot file, you can use dot
topology file.
This is a basic example DOT file and its corresponding topology diagram.
Use the same topology.dot file on all switches and do not split the file per
device; this allows for easy automation by pushing/pulling the same exact
https://docs.cumulusnetworks.com 689
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
graph G {
"spine1":"swp1" -- "leaf1":"swp1";
"spine1":"swp2" -- "leaf2":"swp1";
"spine2":"swp1" -- "leaf1":"swp2";
"spine2":"swp2" -- "leaf2":"swp2";
"leaf1":"swp3" -- "leaf2":"swp3";
"leaf1":"swp4" -- "leaf2":"swp4";
"leaf1":"swp5s0" -- "server1":"eth1";
"leaf2":"swp5s0" -- "server2":"eth1";
690 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Considerations
enabled, PIF BGP sessions do not establish the route, but the subinterface
on top of it does establish routes.
https://docs.cumulusnetworks.com 691
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
-d splits the string on the commas and misplaces its components in other
Related Information
• LLDP on Wikipedia
• PTMd GitHub repo
692 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Port Security
Port security is a layer 2 traffic control feature that enables you to manage
network access from end-users. Use port security to:
• Limit port access to specific MAC addresses so that the port does not
forward ingress traffic from source addresses that are not defined.
• Limit port access to only the first learned MAC address on the port
(sticky MAC) so that the device with that MAC address has full
bandwidth. You can provide a timeout so that the MAC address on that
port no longer has access after a specified time.
• Limit port access to a specific number of MAC addresses.
You can specify what action to take when there is a port security violation
(drop packets or put the port into ADMIN down state) and add a timeout
for the action to take effect.
NOTE
To limit po
porrt ac
acc
cess tto
o a specific MA
MAC
Caaddr
ddreess
ss, run the following
commands.
https://docs.cumulusnetworks.com 693
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
mac 00:02:00:00:00:05
You can specify only one MAC address with the NCLU command. To specify
multiple MAC addresses, set the
Manually below.
To enable stick
tickyy MA
MAC
C on a po
porrt, where the first learned MAC address on
the port is the only MAC address allowed, run the following commands.
You can add a timeout value so that after the time specified, the MAC
address ages out and no longer has access to the port. The default aging
timeout value is 1800 seconds. You can specify a value between 0 and
3600 seconds.
The example commands enable sticky MAC on interface swp1, set the
timeout value to 2000 seconds, and enable aging.
mac
694 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
mac aging
To limit the n
nuumbe
mberr of MA
MAC
Caaddr
ddreess
ssees tha
thatt a
arre allo
allowwed tto
o ac
acc
cess a po
porrt,
run the following commands. You can specify a number between 0 and 512.
The default is 32.
limit 40
You can configure the action you want to take when there is a security
violation on a port:
https://docs.cumulusnetworks.com 695
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
You can also set a timeout value between 0 and 3600 seconds for the
action to take effect. The default is 1800 seconds.
The following example commands put swp1 into ADMIN down state when
there is a security violation and set the timeout value to 3600 seconds:
violation shutdown
After you configure the port security settings to suit your needs, you can
enable security on a port with the following commands:
696 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
To disable port security on a port, run the net del interface <interface>
port-security command.
changes.
Setting De
Desscription
https://docs.cumulusnetworks.com 697
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
Setting De
Desscription
is shown here:
698 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
port_security.conf
interface.swp1.port_security.enable = 1
interface.swp1.port_security.mac_limit = 32
interface.swp1.port_security.static_mac = 00:02:00:00:00:05
00:02:00:00:00:06
interface.swp1.port_security.sticky_mac = 1
interface.swp1.port_security.sticky_timeout = 2000
interface.swp1.port_security.sticky_aging = 1
interface.swp1.port_security.violation_mode = 0
interface.swp1.port_security.violation_timeout = 3600
...
https://docs.cumulusnetworks.com 699
Cumulus Linux v4.2 User Documentation Layer 1 and Switch Ports
swp2 Disabled NA NA
NA NA Restrict 1800
swp3 Disabled NA NA
NA NA Restrict 1800
swp4 Disabled NA NA
NA NA Restrict 1800
swp5 Disabled NA NA
NA NA Restrict 1800
swp6 Disabled NA NA
NA NA Restrict 1800
...
Interface swp1
Mac limit 40
700 https://docs.cumulusnetworks.com
Layer 1 and Switch Ports Cumulus Linux v4.2 User Documentation
Mac addresses
00:02:00:00:00:05
00:02:00:00:00:06
https://docs.cumulusnetworks.com 701
Cumulus Linux v4.2 User Documentation Layer 2
Layer 2
This section describes layer 2 configuration, such as Ethernet bridging,
bonding, spanning tree protocol, multi-chassis link aggregation (MLAG),
link layer discovery protocol (LLDP), LACP bypass, virtual router
702 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Protocol, or LLDP) standard. LLDP shows you which ports are neighbors of
a given port. By default, lldpd runs as a daemon and starts at system boot.
lldpd supports CDP (Cisco Discovery Protocol, v1 and v2) and logs by
You can use the lldpcli CLI tool to query the lldpd daemon for neighbors,
for details.
Configure LLDP
https://docs.cumulusnetworks.com 703
Cumulus Linux v4.2 User Documentation Layer 2
The last line in the example above shows that LLDP is disabled on eth0. To
disable LLDP on a single port, edit the /etc/default/lldpd file. This file
specifies the default options to present to the lldpd service when it starts.
DAEMON_ARGS="-c -I *, !swp43"
lldpd has two timers defined by the tx-interval setting that affect each
switch port:
other changes like hostname. This timer uses the tx-interval value
multiplied by 20.
704 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
operations
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Chassis:
SysName: PIONEERMS22
lb9
MgmtIP: 192.168.0.22
https://docs.cumulusnetworks.com 705
Cumulus Linux v4.2 User Documentation Layer 2
Capability: Bridge, on
Capability: Router, on
Port:
PortDescr: swp47
-------------------------------------------------------------------------------
Chassis:
SysName: MSP-1
MgmtIP: 192.0.2.9
MgmtIP: fe80::201:ff:fe00:900
Capability: Router, on
Port:
PortDescr: swp1
-------------------------------------------------------------------------------
Chassis:
SysName: MSP-1
706 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
MgmtIP: 192.0.2.9
MgmtIP: fe80::201:ff:fe00:900
Capability: Router, on
Port:
PortDescr: swp2
-------------------------------------------------------------------------------
Chassis:
SysName: MSP-2
MgmtIP: 192.0.2.10
MgmtIP: fe80::201:ff:fe00:a00
Capability: Router, on
Port:
PortDescr: swp1
-------------------------------------------------------------------------------
https://docs.cumulusnetworks.com 707
Cumulus Linux v4.2 User Documentation Layer 2
Chassis:
SysName: MSP-2
MgmtIP: 192.0.2.10
MgmtIP: fe80::201:ff:fe00:a00
Capability: Router, on
Port:
PortDescr: swp2
-------------------------------------------------------------------------------
Chassis:
SysName: TORC-1-2
MgmtIP: 192.0.2.12
MgmtIP: fe80::201:ff:fe00:c00
Capability: Bridge, on
Capability: Router, on
708 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Port:
PortDescr: swp6
-------------------------------------------------------------------------------
Chassis:
SysName: TORC-1-2
MgmtIP: 192.0.2.12
MgmtIP: fe80::201:ff:fe00:c00
Capability: Bridge, on
Capability: Router, on
Port:
PortDescr: swp5
-------------------------------------------------------------------------------
----------------------------------------------------------------------
https://docs.cumulusnetworks.com 709
Cumulus Linux v4.2 User Documentation Layer 2
LLDP statistics:
----------------------------------------------------------------------
Interface: eth0
Transmitted: 9423
Received: 17634
Discarded: 0
Unrecognized: 0
Ageout: 10
Inserted: 20
Deleted: 10
--------------------------------------------------------------------
Interface: swp1
Transmitted: 9423
Received: 6264
Discarded: 0
Unrecognized: 0
Ageout: 0
Inserted: 2
Deleted: 0
---------------------------------------------------------------------
Interface: swp2
Transmitted: 9423
Received: 6264
Discarded: 0
710 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Unrecognized: 0
Ageout: 0
Inserted: 2
Deleted: 0
---------------------------------------------------------------------
Interface: swp3
Transmitted: 9423
Received: 6265
Discarded: 0
Unrecognized: 0
Ageout: 0
Inserted: 2
Deleted: 0
----------------------------------------------------------------------
...
---------------------------------------------------------------------
---------------------------------------------------------------------
Summary of stats:
https://docs.cumulusnetworks.com 711
Cumulus Linux v4.2 User Documentation Layer 2
Transmitted: 648186
Received: 437557
Discarded: 0
Unrecognized: 0
Ageout: 10
Inserted: 38
Deleted: 10
--------------------------------------------------------------------
Global configuration:
--------------------------------------------------------------------
Configuration:
Transmit delay: 30
Transmit hold: 4
Receive mode: no
712 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
--------------------------------------------------------------------
LLDP does not enable the SNMP subagent by default. You need to edit
/etc/default/lldpd and enable the -x option.
https://docs.cumulusnetworks.com 713
Cumulus Linux v4.2 User Documentation Layer 2
DAEMON_ARGS="-c"
Considerations
Related Information
714 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Voice VLAN
In Cumulus Linux, a voice VLAN is a VLAN dedicated to voice traffic on a
switch port. Voice VLAN is part of a trunk port with two VLANs that
comprises either of the following:
might not be 0) and an 802.1p (3-bit layer 2 COS) with a specific value
(typically 5 is assigned for voice traffic).
Example Configuration
https://docs.cumulusnetworks.com 715
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
200
Troubleshooting
To show the bridge VIDs, run the net show bridge vlan command:
716 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
200
200
300
To obtain MAC address information, run the NCLU net show bridge macs
example:
https://docs.cumulusnetworks.com 717
Cumulus Linux v4.2 User Documentation Layer 2
Considerations
• Configuring voice VLAN with NCLU does not configure lldpd in Cumulus
Linux; LLDP-MED does not provide data and voice VLAN information.
You can configure LLDP-MED for each interface in a new file in /etc/
voice_vlan.conf:
718 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
reboots.
https://docs.cumulusnetworks.com 719
Cumulus Linux v4.2 User Documentation Layer 2
and an MTU (maximum transmission unit). The bridge MTU is the minimum
MTU among all its members. By default, the bridge's MAC address is the
MAC address of the first port in the bridge-ports list. The bridge can also
NOTE
720 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
TIP
NOTE
default.
• You can configure both VLAN-aware and traditional mode
bridges on the same network in Cumulus Linux; however
you cannot have more than one VLAN-aware bridge on a
given switch.
https://docs.cumulusnetworks.com 721
Cumulus Linux v4.2 User Documentation Layer 2
The MAC address for a frame is learned when the frame enters the bridge
through an interface. The MAC address is recorded in the bridge table and
the bridge forwards the frame to its intended destination by looking up the
destination MAC address. The MAC entry is then maintained for a period of
time defined by the bridge-ageing configuration option. If the frame is seen
with the same source MAC address before the MAC entry age is exceeded,
the MAC entry age is refreshed; if the MAC entry age is exceeded, the MAC
The following example output shows a MAC address table for the bridge:
44:38:39:00:00:03 00:00:15
722 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
01:14:03
table for 1800 seconds (30 minutes). To change the amount of time MAC
addresses are stored in the table, configure bridge ageing.
The following example commands set MAC address ageing to 600 seconds.
•
NCLU Commands Linux Commands
https://docs.cumulusnetworks.com 723
Cumulus Linux v4.2 User Documentation Layer 2
NOTE
•
NCLU Commands Linux Commands
Run the net add bridge and net add vlan commands. The following
example commands configure an SVI using swp1 and swp2, and VLAN
ID 10.
When you configure a switch initially, all southbound bridge ports might be
down; therefore, by default, the SVI is also down. You can force the SVI to
always be up by disabling interface state tracking, which leaves the SVI in
the UP state always, even if all member ports are down. Other
724 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
To keep the SVI perpetually UP, create a dummy interface, then make the
▼ Example Configuration
VLAN:
https://docs.cumulusnetworks.com 725
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
Run the net add vlan <vlan> ipv6-addrgen off command. The
•
NCLU Commands Linux Commands
Run the net del vlan <vlan> ipv6-addrgen off command. The
726 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
The bridge fdb command in Linux interacts with the forwarding database
table (FDB), which the bridge uses to store the MAC addresses it learns and
the ports on which it learns those MAC addresses. The bridge fdb show
Keyword De
Desscription
https://docs.cumulusnetworks.com 727
Cumulus Linux v4.2 User Documentation Layer 2
Keyword De
Desscription
The following example shows the bridge fdb show command output:
bridge
NOTE
EVPN.
• The first FDB entry points to a Linux bridge entry that
points to the VXLAN device vx-1001.
• The second FDB entry points to the same entry on the
VXLAN device and includes additional remote destination
information.
728 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Considerations
interfaces file). You need to delete the VLAN and recreate it.
https://docs.cumulusnetworks.com 729
Cumulus Linux v4.2 User Documentation Layer 2
Related Information
730 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
For traditional Linux bridges, the kernel supports VLANs in the form of
VLAN subinterfaces. Enabling bridging on multiple VLANs means
configuring a bridge for each VLAN and, for each member port on a bridge,
creating one or more VLAN subinterfaces out of that port. This mode poses
scalability challenges in terms of configuration size as well as boot time and
run time state management, when the number of ports times the number of
VLAN Identifier (PVID) or native VLAN. MAC address learning, filtering and
forwarding are VLAN-aware. This significantly reduces the configuration
size, and eliminates the large overhead of managing the port/VLAN
TIP
https://docs.cumulusnetworks.com 731
Cumulus Linux v4.2 User Documentation Layer 2
VLANs; the tagged VLANs 100 and 200 and the untagged (native) VLAN of
1.
732 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
The above commands create the following code snippet in the /etc/
network/interfaces file:
auto bridge
iface bridge
bridge-pvid 1
bridge-vlan-aware yes
NOTE
https://docs.cumulusnetworks.com 733
Cumulus Linux v4.2 User Documentation Layer 2
even though this does not affect the configuration, it helps other
users for readability. The following configurations are identical to
each other and the configuration above:
auto bridge
iface bridge
bridge-vlan-aware yes
auto bridge
iface bridge
bridge-pvid 1
bridge-vlan-aware yes
auto bridge
iface bridge
734 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
bridge-vlan-aware yes
TIP
WARNING
Do not try to bridge the management port, eth0, with any switch
ports (swp0, swp1 and so on). For example, if you create a bridge
with eth0 and swp1, it will not work properly and might disrupt
https://docs.cumulusnetworks.com 735
Cumulus Linux v4.2 User Documentation Layer 2
For hardware data plane internal operations, the switching silicon requires
VLANs for every physical port, Linux bridge, and layer 3 subinterface.
Cumulus Linux reserves a range of VLANs by default; the reserved range is
3600-3999.
TIP
You can modify the reserved range if it conflicts with any user-
defined VLANs, as long the new range is a contiguous set of
VLANs with IDs anywhere between 2 and 4094, and the minimum
size of the range is 150 VLANs.
736 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
...
resv_vlan_range
WARNING
hardware configuration.
By default, the bridge port inherits the bridge VIDs. To configure a port to
override the bridge VIDs:
https://docs.cumulusnetworks.com 737
Cumulus Linux v4.2 User Documentation Layer 2
738 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
The above commands create the following code snippets in the /etc/
network/interfaces file:
auto bridge
iface bridge
bridge-pvid 1
bridge-vlan-aware yes
auto swp3
iface swp3
bridge-vids 200
https://docs.cumulusnetworks.com 739
Cumulus Linux v4.2 User Documentation Layer 2
Untagged/Access Ports
Access ports ignore all tagged packets. In the configuration below, swp1
and swp2 are configured as access ports, while all untagged traffic goes to
VLAN 100:
740 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
The above commands create the following code snippets in the /etc/
network/interfaces file:
auto bridge
iface bridge
bridge-pvid 1
bridge-vlan-aware yes
auto swp1
iface swp1
bridge-access 100
auto swp2
iface swp2
bridge-access 100
https://docs.cumulusnetworks.com 741
Cumulus Linux v4.2 User Documentation Layer 2
With VLAN-aware bridge mode, you can configure a switch port to drop
any untagged frames. To do this, add bridge-allow-untagged no to the
sw
swit
itch
ch po
porrt (not to the bridge). This leaves the bridge port without a PVID
and drops untagged packets.
742 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
To configure a switch port to drop untagged frames, run the net add
untagged no
When you check VLAN membership for that port, it shows that there
is no untagged VLAN.
10
100
200
swp2 10
100
200
https://docs.cumulusnetworks.com 743
Cumulus Linux v4.2 User Documentation Layer 2
When configuring the VLAN attributes for the bridge, specify the attributes
for each VLAN interface. If you are configuring the switch virtual interface
(SVI) for the native VLAN, you must declare the native VLAN and specify
its IP address. Specifying the IP address in the bridge stanza itself returns
an error.
•
NCLU Commands Linux Commands
The following example commands declare native VLAN 100 with IPv4
24
32
NOTE
744 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Cumulus Linux does not often interact directly with end systems as much
as end systems interact with one another. Therefore, after a successful
period of time for the neighbor to move into a stale state. To keep
neighbors in the reachable state, Cumulus Linux includes a background
process (/usr/bin/neighmgrd). The background process tracks neighbors
that move into a stale, delay, or probe state, and attempts to refresh their
state before they are removed from the Linux kernel and from hardware
forwarding.
The ARP refresh timer defaults to 1080 seconds (18 minutes). To change
this setting, follow the procedures outlined in Address Resolution Protocol -
ARP.
https://docs.cumulusnetworks.com 745
Cumulus Linux v4.2 User Documentation Layer 2
To specify a range:
•
NCLU Commands Linux Commands
In the example below, swp1-52 indicates that swp1 through swp52 are
Example Configurations
port that are pruned; they only sends and receive traffic tagged to and
from a specific set of VLANs declared by the bridge-vids attribute. It also
contains other switch ports that send and receive traffic from all the
746 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
defined VLANs.
...
# ports swp3-swp48 are trunk ports which inherit vlans from the
'bridge'
# ie vlans 310,700,707,712,850,910
auto bridge
iface bridge
bridge-vlan-aware yes
auto swp1
iface swp1
bridge-access 310
mstpctl-bpduguard yes
mstpctl-portadminedge yes
# native vlan is 1, but only .1q tags of 707, 712, 850 are
auto swp2
iface swp2
https://docs.cumulusnetworks.com 747
Cumulus Linux v4.2 User Documentation Layer 2
mstpctl-bpduguard yes
mstpctl-portadminedge yes
# The following port is the trunk uplink and inherits all vlans
'portnetwork' attribute
auto swp49
iface swp49
mstpctl-portnetwork yes
mstpctl-portpathcost 10
# The following port is the trunk uplink and inherits all vlans
'portnetwork' attribute
auto swp50
iface swp50
mstpctl-portnetwork yes
mstpctl-portpathcost 0
...
748 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
...
other than 1
auto lo
iface lo
auto eth0
# bond interface
auto uplink1
iface uplink1
https://docs.cumulusnetworks.com 749
Cumulus Linux v4.2 User Documentation Layer 2
bond-slaves swp32
bridge-vids 2000-2079
# bond interface
auto peerlink
iface peerlink
# bond interface
auto downlink
iface downlink
bond-slaves swp1
bridge-vids 2000-2079
auto swp${port}
iface swp${port}
750 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
bridge-vids ${vlanid}
%endfor
auto bridge.2000
iface bridge.2000
address 11.100.1.252/24
auto bridge.2000
vlan bridge.2000
bridge-igmp-querier-src 172.16.101.1
# vlan-aware bridge
auto bridge
iface bridge
bridge-vlan-aware yes
auto peerlink.4094
https://docs.cumulusnetworks.com 751
Cumulus Linux v4.2 User Documentation Layer 2
iface peerlink.4094
address 192.168.10.1/30
broadcast 192.168.10.3
...
definition on the VXLAN and the VLAN membership definition on the local
bridge member interfaces.
configured for traditional bridge mode and one configured for VLAN-aware
mode. The configurations use head end replication (HER) together with the
NOTE
752 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
...
auto lo
address 10.35.0.10/32
auto bridge
iface bridge
bridge-ports uplink
bridge-pvid 1
bridge-vids 1-100
bridge-vlan-aware yes
auto vni-10000
iface vni-10000
bridge-access 10
vxlan-id 10000
vxlan-local-tunnelip 10.35.0.10
vxlan-remoteip 10.35.0.34
...
You can add a static MAC address entry to the layer 2 table for an interface
within the VLAN-aware bridge by running a command similar to the
following:
https://docs.cumulusnetworks.com 753
Cumulus Linux v4.2 User Documentation Layer 2
Considerations
754 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
IGMP Snooping
VLAN Translation
https://docs.cumulusnetworks.com 755
Cumulus Linux v4.2 User Documentation Layer 2
756 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
10.10.10.10/24
NOTE
https://docs.cumulusnetworks.com 757
Cumulus Linux v4.2 User Documentation Layer 2
WARNING
Do not try to bridge the management port, eth0, with any switch
ports (swp0, swp1, and so on). For example, if you create a bridge
with eth0 and swp1, it does not work.
You can configure multiple bridges to logically divide a switch into multiple
layer 2 domains. This allows for hosts to communicate with other hosts in
the same domain, while separating them from hosts in other domains.
The diagram below shows a multiple bridge configuration, where host-1 and
host-2 are connected to bridge-A, while host-3 and host-4 are connected
to bridge-B:
758 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
file:
...
auto bridge-A
iface bridge-A
bridge-vlan-aware no
auto bridge-B
iface bridge-B
bridge-vlan-aware no
...
https://docs.cumulusnetworks.com 759
Cumulus Linux v4.2 User Documentation Layer 2
The standard for trunking is 802.1Q. The 802.1Q specification adds a 4 byte
header within the Ethernet frame that identifies the VLAN of which the
frame is a member.
places that frame in the native VLAN defined on the trunk port.
• A switch receiving a tagged frame on a trunk port places that frame in
the VLAN identified by the 802.1Q tag.
760 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
NOTE
Trunk Example
https://docs.cumulusnetworks.com 761
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
swp1.100,swp2.100
swp1.200,swp2.200
You can find more examples of VLAN tagging in the VLAN tagging chapter.
Cumulus Linux does not often interact directly with end systems as much
as end systems interact with one another. Therefore, after a successful
address resolution protocol (ARP) places a neighbor into a reachable state,
Cumulus Linux might not interact with the client again for a long enough
period of time for the neighbor to move into a stale state. To keep
neighbors in the reachable state, Cumulus Linux includes a background
process (/usr/bin/neighmgrd). The background process tracks neighbors
that move into a stale, delay, or probe state, and attempts to refresh their
state before they are removed from the Linux kernel and from hardware
forwarding. The neighmgrd process only adds a neighbor if the sender’s IP in
the ARP packet is in one of the SVI’s subnets (you can disable this check by
762 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
The ARP refresh timer defaults to 1080 seconds (18 minutes). To change
this setting, follow the procedures outlined in this Address Resolution
Protocol - ARP.
Considerations
https://docs.cumulusnetworks.com 763
Cumulus Linux v4.2 User Documentation Layer 2
VLAN Tagging
This topic shows two examples of VLAN tagging, one basic and one more
advanced. They both demonstrate the streamlined interface configuration
from ifupdown2.
connected to a switch.
• host1 connects to swp1 with both untagged frames and with 802.1Q
frames tagged for vlan100.
• host2 connects to swp2 with 802.1Q frames tagged for vlan120 and
764 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
vlan130.
auto swp1
iface swp1
auto swp1.100
iface swp1.100
auto swp2
iface swp2
auto swp2.120
iface swp2.120
auto swp2.130
iface swp2.130
https://docs.cumulusnetworks.com 765
Cumulus Linux v4.2 User Documentation Layer 2
This example of VLAN tagging is more complex, involving three hosts and
two switches, with a number of bridges and a bond connecting them all.
766 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
setting,
subinterfaces..
https://docs.cumulusnetworks.com 767
Cumulus Linux v4.2 User Documentation Layer 2
auto swp1.100
iface swp1.100
setting,
subinterfaces..
auto swp2.100
iface swp2.100
auto swp2.120
iface swp2.120
setting,
subinterfaces..
768 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
auto swp3.120
iface swp3.120
auto swp3.130
iface swp3.130
auto bond2
iface bond2
auto br-untagged
iface br-untagged
address 10.0.0.1/24
bridge-stp on
auto br-tag100
iface br-tag100
address 10.0.100.1/24
https://docs.cumulusnetworks.com 769
Cumulus Linux v4.2 User Documentation Layer 2
bridge-stp on
auto br-vlan120
iface br-vlan120
address 10.0.120.1/24
bridge-stp on
auto v130
iface v130
address 10.0.130.1/24
bridge-stp on
To verify:
enabled yes
bridge id 8.000.44:38:39:00:32:8B
770 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
topology change no
-B 2 state
enabled yes
role Designated
port id 8.003
state forwarding
--
https://docs.cumulusnetworks.com 771
Cumulus Linux v4.2 User Documentation Layer 2
enabled yes
role Designated
port id 8.001
state forwarding
--
enabled yes
role Designated
port id 8.002
state forwarding
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
772 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
MII Status: up
Up Delay (ms): 0
802.3ad info
Min links: 0
Aggregator ID: 3
Number of ports: 4
Actor Key: 33
Partner Key: 33
MII Status: up
https://docs.cumulusnetworks.com 773
Cumulus Linux v4.2 User Documentation Layer 2
Duplex: full
Aggregator ID: 3
MII Status: up
Duplex: full
Aggregator ID: 3
MII Status: up
Duplex: full
Aggregator ID: 3
774 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
MII Status: up
Duplex: full
Aggregator ID: 3
WARNING
swp9.100
https://docs.cumulusnetworks.com 775
Cumulus Linux v4.2 User Documentation Layer 2
VLAN Translation
restriction.
In some cases, it may be useful to relax this restriction. For example, two
servers might be connected to the switch using VLAN trunks, but the VLAN
numbering provisioned on the two servers are not consistent. You can
choose to just bridge two VLAN subinterfaces of different VLAN IDs from
the servers. You do this by enabling the sysctl net.bridge.bridge-allow-
subinterface will egress another member VLAN subinterface with the VLAN
ID translated.
NOTE
776 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
net.bridge.bridge-allow-multiple-vlans = 1
multiple_vlans.conf
net.bridge.bridge-allow-multiple-vlans = 1
If the sysctl is enabled and you want to disable it, run the above example,
After sysctl is enabled, ports with different VLAN IDs can be added to the
same bridge. In the following example, packets entering the bridge br-mix
interfaces
swp10.100
https://docs.cumulusnetworks.com 777
Cumulus Linux v4.2 User Documentation Layer 2
swp11.200
778 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
failover when an active link fails. STP is enabled by default in Cumulus Linux
for both VLAN-aware and traditional bridges.
• Traditional bridges operate in both PVST and PVRST mode. The default is
set to PVRST. Each traditional bridge has its own separate STP instance.
• VLAN-aware bridges operate only in RSTP mode.
Per VLAN Spanning Tree (PVST) creates a spanning tree instance for a
bridge. Rapid PVST (PVRST) supports RSTP enhancements for each
spanning tree instance. To use PVRST with a traditional bridge, you must
create a bridge corresponding to the untagged native VLAN and all the
physical switch ports must be part of the same VLAN.
NOTE
https://docs.cumulusnetworks.com 779
Cumulus Linux v4.2 User Documentation Layer 2
The RSTP domain sends BPDUs on the native VLAN, whereas PVST sends
BPDUs on a per VLAN basis. For both protocols to work together, you need
to enable the native VLAN on the link between the RSTP to PVST domain;
the spanning tree is built according to the native VLAN parameters.
The RSTP protocol does not send or parse BPDUs on other VLANs, but
floods BPDUs across the network, enabling the PVST domain to maintain its
spanning-tree topology and provide a loop-free network.
• To enable proper BPDU exchange across the network, be sure to allow all
VLANs participating in the PVST domain on the link between the RSTP
780 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
• When using RSTP together with an existing PVST network, you need to
define the root bridge on the PVST domain. Either lower the priority on
the PVST domain or change the priority of the RSTP switches to a higher
number.
switches to address the BPDU frames to the IEEE multicast MAC address.
RSTP treats the MST domain as one giant switch, whereas MST treats the
RSTP domain as a different region. To enable proper communication
between the regions, MST creates a Common Spanning Tree (CST) that
connects all the boundary switches and forms the overall view of the MST
domain. Because changes in the CST need to be reflected in all regions, the
RSTP tree is included in the CST to ensure that changes on the RSTP
domain are reflected in the CST domain. This does cause topology changes
https://docs.cumulusnetworks.com 781
Cumulus Linux v4.2 User Documentation Layer 2
on the RSTP domain to impact the rest of the network but keeps the MST
domain informed of every change occurring in the RSTP domain, ensuring a
loop-free network.
Configure the root bridge within the MST domain by changing the priority
on the relevant MST switch. When MST detects an RSTP link, it falls back
into RSTP mode. The MST domain choses the switch with the lowest cost to
the CST root bridge as the CIST root bridge.
More than one spanning tree instance enables switches to load balance and
use different links for different VLANs. With RSTP, there is only one
instance of spanning tree. To better utilize the links, you can configure
MLAG on the switches connected to the MST or PVST domain and set up
these interfaces as an MLAG port. The PVST or MST domain thinks it is
connected to a single switch and utilizes all the links connected to it. Load
Optional Configuration
782 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
NOTE
https://docs.cumulusnetworks.com 783
Cumulus Linux v4.2 User Documentation Layer 2
All ports configured with PortAdminEdge bypass the listening and learning
states to move immediately to forwarding.
WARNING
typically connect to servers, which might pass both tagged and untagged
traffic.
784 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
PortAutoEdge
NOTE
Edge ports and access ports are not the same. Edge ports
transition directly to the forwarding state and skip the listening and
learning stages. Upstream topology change notifications are not
generated when an edge port link changes state. Access ports only
forward untagged traffic; however, there is no such restriction on
https://docs.cumulusnetworks.com 785
Cumulus Linux v4.2 User Documentation Layer 2
edge ports, which can forward both tagged and untagged traffic.
•
NCLU Commands Linux Commands
786 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
BPDU Guard
You can configure BPDU guard to protect the spanning tree topology from
unauthorized switches affecting the forwarding path. For example, if you
add a new switch to an access port off a leaf switch and this new switch is
configured with a low priority, it might become the new root switch and
affect the forwarding path for the entire layer 2 topology.
https://docs.cumulusnetworks.com 787
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
If a BPDU is received on the port, STP brings down the port and logs an
•
NCLU Commands Linux Commands
error yes
788 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
The only way to recover a port that has been placed in the disabled state is
to manually bring up the port with the sudo ifup <interface> command.
NOTE
Bringing up the disabled port does not correct the problem if the
configuration on the connected end-station has not been resolved.
Bridge Assurance
bridge assurance on the port by enabling a port type network. The port is
then in a bridge assurance inconsistent state until a BPDU is received from
the peer. You need to configure the port type network on both ends of the
link for bridge assurance to operate properly.
https://docs.cumulusnetworks.com 789
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
command:
grep mstp
inconsistent
BPDU Filter
You can enable bpdufilter on a switch port, which filters BPDUs in both
790 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
WARNING
Using BDPU filter might cause layer 2 loops. Use this feature
deliberately and with extreme caution.
•
NCLU Commands Linux Commands
Parameter List
Spanning tree parameters are defined in the IEEE 802.1D and 802.1Q
specifications.
https://docs.cumulusnetworks.com 791
Cumulus Linux v4.2 User Documentation Layer 2
NOTE
parameters, you must edit the file to remove them from the
blacklist.
Paramet
amete
er NCL
CLU
UCComman
ommandd De
Desscription
792 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Paramet
amete
er NCL
CLU
UCComman
ommandd De
Desscription
https://docs.cumulusnetworks.com 793
Cumulus Linux v4.2 User Documentation Layer 2
Paramet
amete
er NCL
CLU
UCComman
ommandd De
Desscription
794 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Paramet
amete
er NCL
CLU
UCComman
ommandd De
Desscription
https://docs.cumulusnetworks.com 795
Cumulus Linux v4.2 User Documentation Layer 2
Paramet
amete
er NCL
CLU
UCComman
ommandd De
Desscription
bridge.
796 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Paramet
amete
er NCL
CLU
UCComman
ommandd De
Desscription
Troubleshooting
https://docs.cumulusnetworks.com 797
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
Bridge info
enabled yes
bridge id 8.000.44:38:39:FF:40:94
Priority: 32768
Address: 44:38:39:FF:40:94
Priority: 32768
Address: 44:38:39:FF:40:94
Related Information
The source code for mstpd and mstpctl was written by Vitalii Demianets and
• mstpctl-utils-interfaces(5)
https://docs.cumulusnetworks.com 799
Cumulus Linux v4.2 User Documentation Layer 2
Storm Control
Storm control provides protection against excessive inbound BUM
(broadcast, unknown unicast, multicast) traffic on layer 2 switch port
interfaces, which can cause poor network performance.
NOTE
Tomahawk2 ASIC.
• On Broadcom switches, ARP requests over layer 2 VXLAN
switchd.conf file. For example, to enable broadcast storm control for swp1
at 400 packets per second (pps), multicast storm control at 3000 pps, and
unknown unicast at 500 pps, edit the /etc/cumulus/switchd.conf file and
storm_control.unknown_unicast lines:
800 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
...
interface.swp1.storm_control.broadcast = 400
interface.swp1.storm_control.multicast = 3000
interface.swp1.storm_control.unknown_unicast = 500
...
WARNING
https://docs.cumulusnetworks.com 801
Cumulus Linux v4.2 User Documentation Layer 2
below takes effect immediately, but does not persist if you reboot the
switch. For a persistent configuration, edit the /etc/cumulus/switchd.conf
config/interface/swp1/storm_control/broadcast'
config/interface/swp1/storm_control/multicast'
config/interface/swp1/storm_control/unknown_unicast'
802 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
failover protection.
• IEEE 802.3ad link aggregation mode that allows one or more links to be
aggregated together to form a link aggregation group (LAG) so that a
media access control (MAC) client can treat the group as if it were a
single link. IEEE 802.3ad link aggregation is the default mode.
• Balance-xor mode, where the bonding of slave interfaces are static and
all slave interfaces are active for load balancing and fault tolerance
purposes. This is useful for MLAG deployments.
Hash Distribution
https://docs.cumulusnetworks.com 803
Cumulus Linux v4.2 User Documentation Layer 2
same slave.
The hash calculation uses packet header data to choose to which slave to
transmit the packet:
• For IP traffic, IP header source and destination fields are used in the
calculation.
• For IP + TCP/UDP traffic, source and destination ports are included in the
hash calculation.
NOTE
On Mellanox switches, you can configure which fields are used in the LAG
hash calculation. For example, if you do not want to use source or
destination port numbers in the hash calculation, you can disable the
source port and destination port fields.
• Source MAC
• Destination
• Source IP
• Destination IP
804 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
• Ether type
• VLAN ID
• Source port
• Destination port
• Layer 3 protocol
file:
true line.
2. To enable a field, set the field to true. To disable a field, set the field to
false.
...
#calculation
https://docs.cumulusnetworks.com 805
Cumulus Linux v4.2 User Documentation Layer 2
lag_hash_config.enable = true
lag_hash_config.smac = true
lag_hash_config.dmac = true
lag_hash_config.sip = true
lag_hash_config.dip = true
lag_hash_config.ether_type = true
lag_hash_config.vlan_id = true
lag_hash_config.sport = false
lag_hash_config.dport = false
lag_hash_config.ip_prot = true
...
NOTE
806 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
You can set a unique hash seed for each switch to help avoid hash
polarization. See Configure a Hash Seed to Avoid Hash Polarization.
Create a Bond
In the example below, the front panel port interfaces swp1 thru swp4 are
slaves in bond0, while swp5 and swp6 are not part of bond0.
https://docs.cumulusnetworks.com 807
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
Run the net add bond command. The example command below
creates a bond called bond0 with slaves swp1, swp2, swp3, and swp4:
NOTE
808 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
...
...
NOTE
https://docs.cumulusnetworks.com 809
Cumulus Linux v4.2 User Documentation Layer 2
All slave interfaces within a bond have the same MAC address as
the bond. Typically, the first slave added to the bond donates its
MAC address as the bond MAC address, whereas the MAC
addresses of the other slaves are set to the bond MAC address. The
bond MAC address is used as the source MAC address for all traffic
The configuration options for a bond are are described in the table below.
To configure a bond:
•
NCLU Commands Linux Commands
Run net add bond <bond-name> bond <option>. The following example
810 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
NOTE
Paramet
amete
er De
Desscription
Not
ote:
e: When you enable balance-
xor mode, the bonding of slave
interfaces are static and all slave
interfaces are active for load
balancing and fault tolerance
purposes. Packet transmission
on the bond is based on the
hash policy specified by xmit-
hash-policy.
https://docs.cumulusnetworks.com 811
Cumulus Linux v4.2 User Documentation Layer 2
Paramet
amete
er De
Desscription
812 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Paramet
amete
er De
Desscription
value is 1.
https://docs.cumulusnetworks.com 813
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
Bond Details
--------------- -------------
Minimum Links: 1
UP swp3(P) 10G 0 0 0 0
UP swp4(P) 10G 0 0 0 0
LLDP
-------
IMPORTANT
Considerations
• Set all slave ports within a bond to the same speed/duplex and make
member ports, traffic gets dropped when the bond uses members of the
same unit listed in the /var/lib/cumulus/porttab file. For example, traffic
gets dropped if both swp49 and swp52 are in the bond because they
both are in xe0 (or if both swp50 and swp51 are in the same bond
because they are both in xe1):
https://docs.cumulusnetworks.com 815
Cumulus Linux v4.2 User Documentation Layer 2
swp49 xe0 0 0 -1 0
swp50 xe1 0 0 -1 0
swp51 xe1 1 0 -1 0
swp52 xe0 1 0 -1 0
Single port member bonds, bonds with different units (xe0 or xe1, as
above), or layer 3 bonds do not have this issue.
NOTE
Related Information
816 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Multi-Chassis Link
Aggregation - MLAG
NOTE
MLA
MLAG
Goorr CLA
CLAG
G: The Cumulus Linux implementation of MLAG is
referred to by other vendors as CLAG, MC-LAG or VPC. You will
even see references to CLAG in Cumulus Linux, including the
management daemon, named clagd, and other options in the code,
Dual-connected devices can create LACP bonds that contain links to each
physical switch; active-active links from the dual-connected devices are
supported even though they are connected to two different physical
switches.
https://docs.cumulusnetworks.com 817
Cumulus Linux v4.2 User Documentation Layer 2
818 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Link Aggregation Control Protocol (LACP), the IEEE standard protocol for
managing bonds, is used for verifying dual-connectedness. LACP runs on
On each of the peer switches, you must place the links that are connected
to the dual-connected host or switch in the bond. This is true even if the
links are a single port on each peer switch, where each port is placed into a
bond, as shown below:
https://docs.cumulusnetworks.com 819
Cumulus Linux v4.2 User Documentation Layer 2
All of the dual-connected bonds on the peer switches have their system ID
set to the MLAG system ID. Therefore, from the point of view of the hosts,
each of the links in its bond is connected to the same system and so the
host uses both links.
Each peer switch periodically makes a list of the LACP partner MAC
addresses for all of their bonds and sends that list to its peer (using the
clagd service). The LACP partner MAC address is the MAC address of the
system at the other end of a bond (server01, server02, and server03 in the
figure above). When a switch receives this list from its peer, it compares the
list to the LACP partner MAC addresses on its switch. If any matches are
found and the clag-id for those bonds match, then that bond is a dual-
connected bond. You can find the LACP partner MAC address by the
running net show bridge macs command.
Requirements
820 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
and bandwidth.
• There must be only two peer switches in one MLAG configuration, but
you can have multiple configurations in a network for switch-to-switch
MLAG.
• Both switches in the MLAG pair must be running the same release of
Cumulus Linux. See Upgrading Cumulus Linux.
Basic Configuration
To configure MLAG, you need to create a bond that uses LACP on the dual-
connected devices and configure the interfaces (including bonds, VLANs,
bridges, and peer links) on each peer switch.
NOTE
2. Place every interface that connects to the MLAG pair from a dual-
connected device into a bond, even if the bond contains only a single link
https://docs.cumulusnetworks.com 821
Cumulus Linux v4.2 User Documentation Layer 2
The following examples place swp1 in bond1 and swp2 in bond2. The
examples also add a description for the bonds (an alias), which is
optional.
•
NCLU Commands Linux Commands
822 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
4. Add the bonds you created above to a bridge. The example commands
On Mellanox switches, you must add all VLANs configured on the MLAG
bond to the bridge so that traffic to the downstream device connected in
MLAG is redirected successfully over the peerlink in case of an MLAG
bond failure.
•
NCLU Commands Linux Commands
5. Create the inter-chassis bond and the peer link VLAN (as a VLAN
subinterface). You also need to provide the peer link IP address, the
MLAG bond interfaces, the MLAG system MAC address, and the backup
https://docs.cumulusnetworks.com 823
Cumulus Linux v4.2 User Documentation Layer 2
interface.
◦ Do not use the same MAC address for different MLAG pairs; make
sure you specify a different MAC address for each MLAG pair in the
network.
• The backup IP address is any layer 3 backup interface for the peer link,
which is used in case the peer link goes down. The backup IP address
is req
equuired and mus
ustt be different than the peer link IP address. It must
be reachable by a route that does not use the peer link. Use the
loopback or management IP address of the switch.
The following examples show commands for both MLAG peers (leaf01
and leaf02).
824 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
address)
• Adds the MLAG system MAC address, the MLAG bond interfaces,
and the backup IP address you specify
•
leaf01 leaf02
ip 10.10.10.2
https://docs.cumulusnetworks.com
cumulus@leaf01:~$ net commit 825
Cumulus Linux v4.2 User Documentation Layer 2
NOTE
unnumbered interfaces.
• When you configure MLAG manually in the /etc/network/
interfaces file, the changes take effect when you bring the
new configuration.
MLAG synchronizes the dynamic state between the two peer switches but
it does not synchronize the switch configurations. After modifying the
configuration of one peer switch, you must make the same changes to the
826 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
• Static address entries, such as static FDB entries and static IGMP entries.
• QoS configuration, such as ACL entries.
Optional Configuration
Each MLAG-enabled switch in the pair has a role. When the peering
relationship is established between the two switches, one switch is put into
the primary role and the other into the secondary role. When an MLAG-
enabled switch is in the secondary role, it does not send STP BPDUs on
dual-connected links; it only sends BPDUs on single-connected links. The
switch in the primary role sends STP BPDUs on all single- and dual-
connected links.
https://docs.cumulusnetworks.com 827
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
priority 2048
The switch with the lower priority value is given the primary role; the
When the clagd service exits during switch reboot or if you stop the service
on the primary switch, the peer switch that is in the secondary role
becomes the primary.
However, if the primary switch goes down without stopping the clagd
service for any reason, or if the peer link goes down, the secondary switch
does not change its role. If the peer switch is determined to not be alive,
the switch in the secondary role rolls back the LACP system ID to be the
bond interface MAC address instead of the MLAG system MAC address
(clagd-sys-mac) and the switch in primary role uses the MLAG system MAC
The clagd service has a number of timers that you can tune for enhanced
performance:
828 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Time
imerr De
Desscription
https://docs.cumulusnetworks.com 829
Cumulus Linux v4.2 User Documentation Layer 2
Time
imerr De
Desscription
lacpPoll value.
To set a timer:
830 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
Run the net add interface peerlink.4094 clag args <timer> <value>
--peerTimeout 900
mode bridge, you must configure the peer link and all dual-connected links
as untagged (native) ports on a bridge (note the absence of any VLANs in
the bridge-ports line and the lack of the bridge-vlan-aware parameter
below):
...
auto br0
iface br0
https://docs.cumulusnetworks.com 831
Cumulus Linux v4.2 User Documentation Layer 2
...
The following example shows you how to allow VLAN 10 across the peer
link:
...
auto br0.10
iface br0.10
bridge-stp on
...
By default, Cumulus Linux uses UDP port 5342 with the backup IP address.
To change the backup UDP port:
832 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
--backupPort 5400
Best Practices
The MTU in MLAG traffic is determined by the bridge MTU. Bridge MTU is
determined by the lowest MTU setting of an interface that is a member of
the bridge. If you want to set an MTU other than the default of 9216 bytes,
you must configure the MTU on each physical interface and bond interface
that is a member of every MLAG bridge in the entire bridged domain.
The following example commands set an MTU of 1500 for each of the bond
interfaces (peerlink, uplink, bond1, bond2), which are members of bridge
bridge:
https://docs.cumulusnetworks.com 833
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
Enabling STP in your layer 2 network and BPDU Guard on the host-facing
bond interfaces is highly recommended.
• The STP global configuration must be the same on both peer switches.
• The STP configuration for dual-connected ports must be the same on
state, configure the edge ports (for tagged and untagged frames) with
PortAdminEdge and BPDU guard enabled.
The peer link carries very little traffic when compared to the bandwidth
consumed by dataplane traffic. In a typical MLAG configuration, most every
connection between the two switches in the MLAG pair is dual-connected
834 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
so the only traffic going across the peer link is traffic from the clagd
process and some LLDP or LACP traffic; the traffic received on the peer link
is not forwarded out of the dual-connected bonds.
However, there are some instances where a host is connected to only one
switch in the MLAG pair; for example:
• You have a hardware limitation on the host where there is only one PCIE
slot, and therefore, one NIC on the system, so the host is only single-
connected across that interface.
• The host does not support 802.3ad and you cannot create a bond on it.
• You are accounting for a link failure, where the host becomes single
connected until the failure is resolved.
one half of the traffic destined to the single-connected host arrives on the
switch directly connected to the single-connected host and the other half
peer link.
In addition, you might want to add extra links to the peer link bond to
https://docs.cumulusnetworks.com 835
Cumulus Linux v4.2 User Documentation Layer 2
When planning for link failures for a full rack, you need only allocate enough
bandwidth to meet your site strategy for handling failure scenarios. For
example, for a full rack with 40 servers and two switches, you might plan
for four to six servers to lose connectivity to a single switch and become
single connected before you respond to the event. Therefore, if you have
40 hosts each with 20G of bandwidth dual-connected to the MLAG pair,
you might allocate between 20G and 30G of bandwidth to the peer link,
which accounts for half of the single-connected bandwidth for four to six
hosts.
836 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
uplink interfaces. If there is a peer link failure, MLAG does not remove static
routes or bring down a BGP or OSPF adjacency unless you use a separate
link state daemon such as ifplugd.
When you use MLAG with VRR, set up a routed adjacency across the
peerlink.4094 interface. If a routed connection is not built across the peer
link, during an uplink failure on one of the switches in the MLAG pair, egress
traffic might not be forwarded if the destination is on the switch whose
uplinks are down.
remote-as internal
0.0.0.1
https://docs.cumulusnetworks.com 837
Cumulus Linux v4.2 User Documentation Layer 2
If you are using EVPN and MLAG, you need to enable the EVPN address
family across the peerlink.4094 interface as well:
remote-as internal
activate
NOTE
If you use NCLU to create an iBGP peering across the peer link, the
Configuration Examples
Basic Example
838 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 839
Cumulus Linux v4.2 User Documentation Layer 2
•
leaf01 leaf02 spine01
auto lo
address 10.10.10.1/32
auto mgmt
iface mgmt
vrf-table auto
address 127.0.0.1/8
address ::1/128
auto eth0
vrf mgmt
auto bridge
iface bridge
bridge-ports peerlink
bridge-vids 10 20 30
bridge-vlan-aware yes
auto vlan10
iface vlan10
address 10.1.10.2/24
vlan-raw-device bridge
• leaf01 and leaf02 are MLAG peers, and leaf03 and leaf04 are are MLAG
peers
• Three bonds are configured for MLAG, each with a single port, a peer link
that is a bond with two member ports, and three VLANs on each port
• BGP unnumbered is configured on the leafs and spines with a routed
adjacency across the peerlink.4094 interface
/et
etc/net
c/netwwork/int
/inte
erfac
ace
es
https://docs.cumulusnetworks.com 841
Cumulus Linux v4.2 User Documentation Layer 2
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
auto lo
address 10.10.10.1/32
auto mgmt
iface mgmt
vrf-table auto
address 127.0.0.1/8
address ::1/128
auto eth0
vrf mgmt
auto bridge
iface bridge
bridge-ports peerlink
bridge-vids 10 20 30
bridge-vlan-aware yes
auto vlan10
iface vlan10
address 10.1.10.2/24
vlan-raw-device bridge
vlan-id 10
842 https://docs.cumulusnetworks.com
auto vlan20
Layer 2 Cumulus Linux v4.2 User Documentation
/et
etc/f
c/frr
rr/f
/frr
rr..conf
https://docs.cumulusnetworks.com 843
Cumulus Linux v4.2 User Documentation Layer 2
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
...
service integrated-vtysh-config
redistribute connected
exit-address-family
line vty
844 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Troubleshooting
To check the status of your MLAG configuration, run the NCLU net show
secondary
CLAG Interfaces
-------------------- -----------------
bond1 bond1 1
https://docs.cumulusnetworks.com 845
Cumulus Linux v4.2 User Documentation Layer 2
- -
bond2 bond2 2
- -
clagVersion = 1.4.0
clagDataVersion = 1.4.0
clagCmdVersion = 1.1.0
peerIp = linklocal
peerIf = peerlink.4094
sysMac = 44:38:39:be:ef:aa
lacpPoll = 2
currLacpPoll = 2
peerConnect = 1
cmdConnect = 1
peerLinkPoll = 1
switchdReadyTimeout = 120
reloadTimer = 300
periodicRun = 4
846 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
priority = 1000
quiet = False
debug = 0x0
verbose = False
log = syslog
vm = True
peerPort = 5342
peerTimeout = 20
initDelay = 180
sendTimeout = 30
sendBufSize = 65536
forceDynamic = False
dormantDisable = False
redirectEnable = False
backupIp = 10.10.10.2
backupVrf = None
backupPort = 5342
vxlanAnycast = None
neighSync = True
permanentMacSync = True
peerlinkLearnEnable = False
https://docs.cumulusnetworks.com 847
Cumulus Linux v4.2 User Documentation Layer 2
By default, when running, the clagd service logs status messages to the
below:
config loaded
switch is active.
handshake done.
848 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
service. systemd logs these failures in the /var/log/syslog file and, on the
ip) are configured for an interface) and the clagd service is running. If you
You can check if clagd is enabled and running with the cl-service-summary
cumulus@switch:~$ cl-service-summary
https://docs.cumulusnetworks.com 849
Cumulus Linux v4.2 User Documentation Layer 2
...
Daemon
4 days ago
Docs: man:clagd(8)
CGroup: /system.slice/clagd.service
└─15795 /usr/share/mgmt-vrf/bin/ping6 -L -c 1
ff02::1 -I peerlink.409
850 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
pri...168.0.12
timeout
...
A large volume of packet drops across one of the peer link interfaces can
be expected. These drops serve to prevent looping of BUM (broadcast,
To check packet drops across peer link interfaces, run the following
command:
https://docs.cumulusnetworks.com 851
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
bond1 9216 0 0 0
0 542 0 0 0 BMmU
bond2 9216 0 0 0
0 542 0 0 0 BMmU
bridge 9216 0 0 0
0 17 0 0 0 BMRU
0 933 0 0 0 BMRU
lo 65536 1328 0 0
0 1328 0 0 0 LRU
0 0 0 33 0 OmRU
0 23665 0 0 0 BMmRU
0 8017 0 0 0 BMRU
swp1 9216 5 0 0
swp2 9216 3 0 0
Layer 2 Cumulus Linux v4.2 User Documentation
issues include:
• When the peer link goes down but the peer switch is up (the backup link
is active).
• When the bond is configured with an MLAG ID but the clagd service is
To show an interface in protodown state, run the NCLU net show bridge
https://docs.cumulusnetworks.com 853
Cumulus Linux v4.2 User Documentation Layer 2
bond comes up with a clag-id and the peer is using a bond with the
same clag-id but a different LACP partner MAC address. The clagctl
mismatch.
• When there is a duplicate LACP partner MAC address. For example, when
there are multiple LACP bonds between the same two LACP endpoints.
The clagctl command output shows the protodown reason as a
duplicate-partner-mac.
bond interface in a protodown state and the clagctl output shows the
After you make the necessary cable or configuration changes to avoid the
protodown state and you want MLAG to reevaluate the LACP partners, use
854 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Related Information
https://docs.cumulusnetworks.com 855
Cumulus Linux v4.2 User Documentation Layer 2
LACP Bypass
On Cumulus Linux, LACP bypass allows a bond configured in 802.3ad
mode to become active and forward traffic even when there is no LACP
partner. For example, you can enable a host that does not have the
In all-active mode, when a bond has multiple slave interfaces, each bond
slave interface operates as an active link while the bond is in bypass mode.
This is useful during PXE boot of a server with multiple NICs, when you
cannot determine beforehand which port needs to be active.
NOTE
856 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
supported.
allow to yes.
https://docs.cumulusnetworks.com 857
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
swp51s2,swp51s3
bond1,bond2,bond3,bond4,peer5
858 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
Run the net show interface <bond> command on the bond and its
slave interfaces:
Bond Details
------------------ -------------------------
Minimum Links: 1
UP swp51s2(P) 1G 0 0 0 0
UP swp51s3(P) 1G 0 0 0 0
----------------------
To verify that LACP bypass is enabled on a bond and its slave interfaces,
use the cat command:
on 1
swp51 swp52
ad_rx_bypass
ad_rx_bypass
The following configuration shows LACP bypass enabled for multiple active
interfaces (all-active mode) with a bridge in traditional bridge mode:
...
auto bond1
iface bond1
bond-lacp-bypass-allow 1
860 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
auto br0
iface br0
mstpctl-bpduguard bond1=yes
...
https://docs.cumulusnetworks.com 861
Cumulus Linux v4.2 User Documentation Layer 2
Use VRR when you have multiple devices connected to a single logical
connection, such as an MLAG bond. A device connected to an MLAG
bond believes there is a single device on the other end of the bond and
only forwards one copy of the transit frames. If this frame is destined to
the virtual MAC address and you are running VRRP, it is possible that the
frame is sent to the link connected to the VRRP standby device, which
will not forward the frame appropriately. By having the virtual MAC active
on both MLAG devices, it ensures either MLAG device handles the frame
it receives correctly.
VRRP router that forwards packets at any given time is called the master.
862 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Use VRRP when you have multiple distinct devices that connect to a
NOTE
You cannot configure both VRR and VRRP on the same switch.
VRR
NOTE
https://docs.cumulusnetworks.com 863
Cumulus Linux v4.2 User Documentation Layer 2
864 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
As the bridges in each of the redundant routers are connected, they each
receive and reply to ARP requests for the virtual router IP address.
Each ARP request made by a host receives replies from each router; these
replies are identical, and the host receiving the replies either ignores replies
after the first, or accepts them and overwrites the previous identical reply.
A range of MAC addresses is reserved for use with VRR to prevent MAC
address conflicts with other interfaces in the same bridged network. The
reserved range is 00:00:5E:00:01:00 to 00:00:5E:00:01:ff.
Use MAC addresses from the reserved range when configuring VRR.
The reserved MAC address range for VRR is the same as for the Virtual
The routers implement the layer 2 network interconnecting the hosts and
the redundant routers. To configure the routers, add a bridge with the
following interfaces to each router:
• One bond interface or switch port interface to each host. For networks
using MLAG, use bond interfaces. Otherwise, use switch port interfaces.
• One or more interfaces to each peer router. To accommodate higher
https://docs.cumulusnetworks.com 865
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
00:00:5e:00:01:00 192.0.2.254/24
32
00:00:5e:00:01:00 2001:db8::f/32
Each host must have two network interfaces. The routers configure the
interfaces as bonds running LACP; the hosts must also configure the two
interfaces using teaming, port aggregation, port group, or EtherChannel
running LACP. Configure the hosts either statically or with DHCP, with a
gateway address that is the IP address of the virtual router; this default
866 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Configure the links between the hosts and the routers in active-active mode
for First Hop Redundancy Protocol.
NOTE
The following examples uses a single virtual MAC address for all
VLANs. You can add a unique MAC address for each VLAN, but this
is not necessary.
https://docs.cumulusnetworks.com 867
Cumulus Linux v4.2 User Documentation Layer 2
•
leaf01 leaf02 server01 server02
192.168.0.21
peerlink.4094
address 169.254.255.1/30
ip 169.254.255.2
backup-ip 192.168.0.22
mac 44:38:39:FF:40:90
server01,peerlink
00:00:5E:00:01:01 10.0.1.1/24
00:00:5E:00:01:01 10.0.2.1/24
868 cumulus@leaf01:~$https://docs.cumulusnetworks.com
net add vlan 300 ip address 10.0.3.2/24
VRRP
VRRP allows for a single virtual default gateway to be shared among two or
more network devices in an active standby configuration. The VRRP router
that forwards packets at any given time is called the master. If this VRRP
00:00:5E:00:02:XX for IPv6 gateways as their MAC address. The last byte
of the address is the Virtual Router IDentifier (VRID), which is different for
each virtual router in the network. This MAC address is used by only one
physical router at a time, which replies with this address when ARP
requests or neighbor solicitation packets are sent for the IP addresses of
NOTE
https://docs.cumulusnetworks.com 869
Cumulus Linux v4.2 User Documentation Layer 2
for SVIs.
870 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Configure VRRP
• A vi
virrtual router ID (VR
(VRIID) tha
thatt iid
dentifie
entifiess the g
grroup of VRRP routers
rs. You
must specify the same ID across all virtual routers in the group.
• One o
orr mo
morre vi
virrtual IP a
addr
ddre
ess
sse
es tha
thatt a
arre a
ass
ssigne
ignedd tto
o the vi
virrtual router
You can also set these optional parameters. If you do not set these
Optional P
Paaramet
amete
er Def
Defa
ault V
Val
aluue De
Desscription
https://docs.cumulusnetworks.com 871
Cumulus Linux v4.2 User Documentation Layer 2
Optional P
Paaramet
amete
er Def
Defa
ault V
Val
aluue De
Desscription
872 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 873
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux and vtysh Commands
spine
pine01
01
24
2001:0db8::1/64
254
advertisement-interval 5000
spine
pine02
02
24
2001:0db8::1/64
874 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp1
vrrp 44
vrrp 44 ip 10.0.0.1
...
To show virtual router information on a switch, run the NCLU net show vrrp
<VRID> command or the vtysh show vrrp <VRID> command. For example:
Virtual Router ID 44
Protocol Version 3
Autoconfigured No
Shutdown No
Interface swp1
https://docs.cumulusnetworks.com 875
Cumulus Linux v4.2 User Documentation Layer 2
Primary IP (v4)
Priority 254
Advertisements Tx (v4) 17
Advertisements Tx (v6) 17
Advertisements Rx (v4) 0
Advertisements Rx (v6) 0
876 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
IPv4 Addresses 1
. . . . . . . . . . . . . . . . . . 10.0.0.1
IPv6 Addresses 1
. . . . . . . . . . . . . . . . . . 2001:0db8::1
https://docs.cumulusnetworks.com 877
Cumulus Linux v4.2 User Documentation Layer 2
NOTE
An IGMP query message received on a port is used to identify the port that
is connected to a router and is interested in receiving multicast traffic.
MLD snooping processes MLD v1/v2 reports, queries and v1 done messages
for IPv6 groups. If IGMP or MLD snooping is disabled, multicast traffic gets
flooded to all the bridge ports in the bridge. Similarly, in the absence of
receivers in a VLAN, multicast traffic is flooded to all ports in the VLAN. The
878 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 879
Cumulus Linux v4.2 User Documentation Layer 2
•
NCLU Commands Linux Commands
To disable IGMP/MLD snooping over VXLAN, run the net add bridge
network/interfaces file. To enable IGMP and MLD snooping for a bridge, set
880 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
...
auto bridge.100
vlan bridge.100
bridge-igmp-querier-src 123.1.1.1
auto bridge
iface bridge
bridge-vlan-aware yes
bridge-pvid 1
bridge-mcquerier 1
...
...
auto bridge.[1-200]
https://docs.cumulusnetworks.com 881
Cumulus Linux v4.2 User Documentation Layer 2
vlan bridge.[1-200]
bridge-igmp-querier-src 123.1.1.1
...
For a bridge in traditional mode, you can set the source IP address of the
...
auto br0
iface br0
address 192.0.2.10/24
bridge-vlan-aware no
bridge-mcquerier 1
bridge-mcqifaddr 1
...
882 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
Troubleshooting
To show the IGMP/MLD snooping bridge state, run the brctl showstp
<bridge> command:
bridge
bridge id 8000.7072cf8c272c
cost 0
age 20.00
time 2.00
delay 15.00
https://docs.cumulusnetworks.com 883
Cumulus Linux v4.2 User Documentation Layer 2
timer 0.00
timer 263.70
max 4096
count 2
mc router 1 mc
snooping 1
timer 260.00
interval 125.00
interval 31.25
mc querier 0 mc query
ifaddr 0
flags
swp1 (1)
port id 8001
state forwarding
884 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
cost 2
timer 0.00
timer 0.00
timer 0.00
mc router 1 mc fast
leave 0
flags
swp2 (2)
port id 8002
state forwarding
cost 2
timer 0.00
timer 0.00
timer 0.00
mc router 1 mc fast
https://docs.cumulusnetworks.com 885
Cumulus Linux v4.2 User Documentation Layer 2
leave 0
flags
swp3 (3)
port id 8003
state forwarding
cost 2
timer 0.00
timer 8.98
timer 0.00
mc router 1 mc fast
leave 0
flags
To show the groups and bridge port state, run the NCLU net show bridge
mdb command or the Linux bridge mdb show command. To show detailed
router ports and group information, run the bridge -d -s mdb show
command:
886 https://docs.cumulusnetworks.com
Layer 2 Cumulus Linux v4.2 User Documentation
Related Information
• RFC 3376
• RFC 3810
• RFC 4541
https://docs.cumulusnetworks.com 887
Cumulus Linux v4.2 User Documentation Network Virtualization
Network Virtualization
Cumulus Linux supports a few forms of network virtualization.
You can deploy simple and scalable layer 3 Clos architectures while
extending layer 2 segments over that layer 3 network.
tenant network, typically the hypervisor vSwitch or top of rack. These edge
points are the VXLAN tunnel end points (VTEP).
Cumulus Linux can initiate and terminate VTEPs in hardware and supports
wire-rate VXLAN. VXLAN provides an efficient hashing scheme across the
IP fabric during the encapsulation process; the source UDP port is unique,
with the hash based on layer 2 through layer 4 information from the original
frame. The UDP destination port is the standard port 4789.
Cumulus Linux includes the native Linux VXLAN kernel support and
integrates with controller-based overlay solutions like VMware NSX and
Midokura MidoNet.
888 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
VXLAN is supported only on switches in the Cumulus Linux HCL using the
Broadcom Tomahawk, Trident II, Trident II+ and Trident3 chipsets, as well
as the Mellanox Spectrum chipset.
NOTE
switch may get dropped; even if the subinterface is used only for
underlay traffic and does not perform VXLAN encapsulation, traffic
may still get dropped. Only configure VXLAN uplinks as layer 3
interfaces without any subinterfaces (for example, swp3).
and destination.
Considerations
On switches using Broadcom Tomahawk, Trident II, Trident II+, and Trident3
ASICs, Cumulus Linux supports store and forward switching for VXLANs
but does not support cut-through mode.
through mode for VXLANs but does not support store and forward
https://docs.cumulusnetworks.com 889
Cumulus Linux v4.2 User Documentation Network Virtualization
switching.
The maximum transmission unit (MTU) size for a virtual network interface
should be 50 bytes smaller than the MTU for the physical interfaces on the
switch. For more information on setting MTU, read Layer 1 and Switch Port
Attributes.
A layer 3 VNI and a layer 2 VNI cannot have the same ID. If the VNI IDs are
the same, the layer 2 VNI does not get created.
Related Information
890 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
include any control plane and relied on a flood-and-learn approach for MAC
address learning.
MPLS IP VPNs (RFC 4364). It enables not only bridging between end
systems in the same layer 2 segment but also routing between different
segments (subnets). There is also inherent support for multi-tenancy. EVPN
Key Features
Cumulus Linux fully supports EVPN as the control plane for VXLAN,
including for both intra-subnet bridging and inter-subnet routing, and
provides these key features:
https://docs.cumulusnetworks.com 891
Cumulus Linux v4.2 User Documentation Network Virtualization
advertisement) routes.
• Host/VM mobility support (MAC and IP moves) through exchange of the
MAC Mobility Extended community.
• Dual-attached hosts via VXLAN active-active mode. MAC
synchronization between the peer switches is done using MLAG.
• ARP/ND suppression, which enables VTEPs to suppress ARP flooding
The EVPN address-family is supported with both eBGP and iBGP peering. If
892 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
the underlay routing is provisioned using eBGP, you can use the same eBGP
session to carry EVPN routes. For example, in a typical 2-tier Clos network
topology where the leaf switches are the VTEPs, if eBGP sessions are in use
between the leaf and spine switches for the underlay routing, the same
sessions can be used to exchange EVPN routes; the spine switches merely
act as route forwarders and do not install any forwarding state as they are
not VTEPs. When EVPN routes are exchanged over iBGP peering, OSPF can
be used as the IGP or the next hops can also be resolved using iBGP.
NOTE
https://docs.cumulusnetworks.com 893
Cumulus Linux v4.2 User Documentation Network Virtualization
Basic Configuration
The following sections provide the basic configuration needed to use EVPN
as the control plane for VXLAN. The steps provided assume you have
already configured VXLAN interfaces, attached them to a bridge, and
NOTE
To enable EVPN between BGP neighbors, add the address family evpn to
the existing neighbor address-family activation command.
needed in FRRouting.
894 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
To configure an EVPN route exchange with a BGP peer, activate the peer or
peer group within the EVPN address family. For example:
•
NCLU Commands vtysh Commands
remote-as external
activate
/etc/frr/frr.conf file.
...
https://docs.cumulusnetworks.com 895
Cumulus Linux v4.2 User Documentation Network Virtualization
...
The above configuration does not result in BGP knowing about the local
VNIs defined on the system and advertising them to peers. This requires
additional configuration, described in Advertise All VNIs, below.
FRR is not aware of any local VNIs and MACs, or hosts (neighbors)
associated with those VNIs until you enable the BGP control plane for all
NOTE
896 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
...
advertise-all-vni
...
For EVPN in VXLAN active-active mode, both switches in the MLAG pair
establish EVPN peering with other EVPN speakers (for example, with spine
switches if using hop-by-hop eBGP) and inform about their locally known
https://docs.cumulusnetworks.com 897
Cumulus Linux v4.2 User Documentation Network Virtualization
VNIs and MACs. When MLAG is active, both switches announce this
information with the shared anycast IP address.
For information about active-active VTEPs and anycast IP behavior, and for
Considerations
• When EVPN is enabled on a VTEP, all locally defined VNIs on that switch
and other information (such as MAC addresses) are advertised to EVPN
peers. There is no provision to only announce certain VNIs.
• On switches with Spectrum ASICs, ND suppression only works with the
Spectrum-A1 chip.
898 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
which represents the ASN of the core as well as the ASN for any tenant
VRFs if they have BGP peerings. If you need to change the ASN, you
must first remove the layer 3 VNI in the /etc/frr/frr.conf file, modify
the BGP ASN, then add back the layer 3 VNI in the /etc/frr/frr.conf file.
https://docs.cumulusnetworks.com 899
Cumulus Linux v4.2 User Documentation Network Virtualization
EVPN Enhancements
This section describes EVPN enhancements.
When FRR learns about a local VNI and there is no explicit configuration for
that VNI in FRR, the route distinguisher (RD), and import and export route
targets (RTs) for this VNI are automatically derived. The RD uses
RouterId:VNI-Index and the import and export RTs use AS:VNI. For routes
that come from a layer 2 VNI (type-2 and type-3), the RD uses the vxlan-
exchange.
The RD disambiguates EVPN routes in different VNIs (as they may have the
same MAC and/or IP address) while the RTs describe the VPN membership
for the route. The VNI-Index used for the RD is a unique, internally
900 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
automatic RT of AS:VNI does not work for route import. Therefore, the
import RT is treated as *:VNI to determine which received routes are
applicable to a particular VNI. This only applies when the import RT is auto-
If you do not want RDs and RTs to be derived automatically, you can define
them manually. The following example commands are per VNI. You must
specify these commands under address-family l2vpn evpn in BGP.
•
NCLU Commands vtysh Commands
•
leaf01 leaf03
10.10.10.1:20
vni
https://docs.cumulusnetworks.com 901
Cumulus Linux v4.2 User Documentation Network Virtualization
frr/frr.conf file.
•
leaf01 leaf03
...
advertise-all-vni
vni 10
rd 10.10.10.1:20
...
NOTE
You can configure multiple RT values. In addition, you can configure both
the import and export route targets with a single command by using route-
target both:
902 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
•
leaf01 leaf03
https://docs.cumulusnetworks.com 903
Cumulus Linux v4.2 User Documentation Network Virtualization
•
leaf01 leaf03
...
vni 10
vni 20
...
You can use EVPN with an OSPF or static route underlay. This is a more
complex configuration than using eBGP. In this case, iBGP advertises EVPN
routes directly between VTEPs and the spines are unaware of EVPN or
BGP.
The leaf switches peer with each other in a full mesh within the EVPN
address family without using route reflectors. The leafs generally peer to
their loopback addresses, which are advertised in OSPF. The receiving
VTEP imports routes into a specific VNI with a matching route target
community.
904 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
10.10.10.2 activate
10.10.10.3 activate
10.10.10.4 activate
point-to-point
point-to-point
point-to-point
cumulus@leaf01:~$https://docs.cumulusnetworks.com
net add interface swp52 ospf network 905
point-to-point
Cumulus Linux v4.2 User Documentation Network Virtualization
frr/frr.conf file.
...
interface lo
interface swp49
interface swp50
interface swp51
interface swp52
906 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
advertise-all-vni
exit-address-family
Router ospf
Passive-interface lo
...
ARP suppression with EVPN allows a VTEP to suppress ARP flooding over
VXLAN tunnels as much as possible. A local proxy handles ARP requests
received from locally attached hosts for remote hosts. ARP suppression is
the implementation for IPv4; ND suppression is the implementation for
IPv6.
https://docs.cumulusnetworks.com 907
Cumulus Linux v4.2 User Documentation Network Virtualization
The following examples show a configuration using two VXLANs (10 and
20) and two VLANs (10 and 20).
908 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
10.10.10.1
10.10.10.1
For a bridge in traditional mode, you must edit the bridge configuration in
the /etc/network/interfaces file using a text editor:
https://docs.cumulusnetworks.com 909
Cumulus Linux v4.2 User Documentation Network Virtualization
...
auto bridge1
iface bridge1
ip6-forward off
ip-forward off
...
When deploying EVPN and VXLAN using a hardware profile other than the
default Forwarding Table Profile, ensure that the Linux kernel ARP sysctl
settings gc_thresh2 and gc_thresh3 are both set to a value larger than the
reboot the switch. If your network has more hosts than the values used in
the example below, change the sysctl entries accordingly.
910 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
provisioned on the VTEP as a static bridge FDB entry. EVPN picks up these
MAC addresses and advertises them to peers as remote static MACs. You
configure static bridge FDB entries for MACs under the bridge
configuration:
https://docs.cumulusnetworks.com 911
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands Linux Commands
...
auto br10
iface br10
master static
...
A common deployment scenario for large data centers is to sub divide the
data center into multiple pods with full host mobility within a pod but only
912 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
To filter EVPN routes based on the route type and allow only certain types
•
NCLU Commands vtysh Commands
NOTE
You must apply the route map for the configuration to take effect.
https://docs.cumulusnetworks.com 913
Cumulus Linux v4.2 User Documentation Network Virtualization
the SVI IP/MAC address as a type-2 route and eliminates the need for any
NOTE
914 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Primary IP Address.
To advertise all SVI IP/MAC addresses on the switch, run these commands:
•
NCLU Commands vtysh Commands
•
NCLU Commands vtysh Commands
svi-ip
The NCLU and vtysh commands save the configuration in the /etc/frr/
https://docs.cumulusnetworks.com 915
Cumulus Linux v4.2 User Documentation Network Virtualization
...
vni 10
advertise-svi-ip
exit-address-family
...
By default, the VTEP floods all broadcast, and unknown unicast and
VXLAN tunnel interface, it floods the packets to all interfaces in the packet’s
broadcast domain.
You can disable BUM flooding over VXLAN tunnels so that EVPN does not
advertise type-3 routes for each local VNI and stops taking action on
received type-3 routes.
916 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
NOTE
To disable BUM flooding, run the NCLU net add bgp l2vpn evpn disable-
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
https://docs.cumulusnetworks.com 917
Cumulus Linux v4.2 User Documentation Network Virtualization
flooding disable
exit-address-family
...
To re-enable BUM flooding, run the NCLU net del bgp l2vpn evpn
•
NCLU Commands vtysh Commands
Verify Configuration
To show that BUM flooding is disabled, run the NCLU net show bgp l2vpn
evpn vni command or the vtysh show bgp l2vpn evpn vni command. For
example:
918 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Number of L2 VNIs: 3
Number of L3 VNIs: 2
Flags: * - Kernel
* 20 L2 10.10.10.1:3
* 30 L2 10.10.10.1:4
* 10 L2 10.10.10.1:6
* 4002 L3 10.1.30.2:2
* 4001 L3 10.1.20.2:5
Run the NCLU net show bgp l2vpn evpn route type multicast command
https://docs.cumulusnetworks.com 919
Cumulus Linux v4.2 User Documentation Network Virtualization
Extended Mobility
Cumulus Linux supports scenarios where the IP to MAC binding for a host
or virtual machine changes across the move. In addition to the simple
mobility scenario where a host or virtual machine with a binding of IP1,
MAC1 moves from one rack to another, Cumulus Linux supports additional
scenarios where a host or virtual machine with a binding of IP1, MAC1 moves
and takes on a new binding of IP2, MAC1 or IP1, MAC2. The EVPN protocol
Extended mobility not only supports virtual machine moves, but also where
one virtual machine shuts down and another is provisioned on a different
rack that uses the IP address or the MAC address of the previous virtual
The support for extended mobility is enabled by default and does not
require any additional configuration.
You can examine the sequence numbers associated with a host or virtual
machine MAC address and IP address with the NCLU net show evpn mac
vni <vni> mac <address> command or the vtysh show evpn mac vni <vni>
920 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
00:02:00:00:00:42
MAC: 00:02:00:00:00:42
Neighbors:
10.1.1.74 Active
IP: 10.1.1.74
Type: local
State: active
MAC: 44:39:39:ff:00:24
https://docs.cumulusnetworks.com 921
Cumulus Linux v4.2 User Documentation Network Virtualization
• Two hosts have the same MAC address (the host IP addresses might be
the same or different)
• Two hosts have the same IP address but different MAC addresses
troubleshoot the reason and address the fault, then clear the duplicate
NOTE
NOTE
922 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
The VTEP that sees an address move from remote to local begins the
https://docs.cumulusnetworks.com 923
Cumulus Linux v4.2 User Documentation Network Virtualization
To change the threshold for MAC and IP address moves, run the net add
•
NCLU Commands vtysh Commands
924 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
The following example shows the syslog message that is generated when
Cumulus Linux detects a MAC address as a duplicate during a local update:
The following example shows the syslog message that is generated when
Cumulus Linux detects an IP address as a duplicate during a remote
update:
https://docs.cumulusnetworks.com 925
Cumulus Linux v4.2 User Documentation Network Virtualization
automatically.
When you enable the freeze option and a duplicate address is detected:
updates are processed but are not advertised to remote VTEPs. If FRR
receives a local entry delete event, the frozen entry is removed from the
FRR database. Any remote updates (from other VTEPs) change the state
of the entry to remote but the entry is not installed in the kernel (until
cleared).
To rec
eco
over ffrrom a ffrree
eezze, shut down the faulty host or VM or fix any other
misconfiguration in the network. If the address is frozen permanently, issue
the clear command on the VTEP where the address is marked as duplicate.
If the address is frozen for a defined period of time, it is cleared
automatically after the timer expires (you can clear the duplicate address
before the timer expires with the clear command).
926 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
NOTE
If you issue the clear command or the timer expires before you
address the fault, duplicate address detection might occur
repeatedly.
After you clear a frozen address, if it is present behind a remote VTEP, the
kernel and hardware forwarding tables are updated. If the address is locally
learned on this VTEP, the address is advertised to remote VTEPs. All VTEPs
get the correct address as soon as the host communicates . Silent hosts are
learned only after the faulty entries age out, or you intervene and clear the
faulty MAC and ARP table entries.
3600.
https://docs.cumulusnetworks.com 927
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands vtysh Commands
freeze 1000
NOTE
window is set to the default of 180 seconds, set the freeze timer to
540 seconds.
•
NCLU Commands vtysh Commands
freeze permanent
928 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
10.0.0.9
To clear duplicate addresses for all VNIs, run the following command:
•
NCLU Commands vtysh Commands
NOTE
https://docs.cumulusnetworks.com 929
Cumulus Linux v4.2 User Documentation Network Virtualization
NOTE
•
NCLU Commands vtysh Commands
When you disable duplicate address detection, Cumulus Linux clears the
configuration and all existing duplicate addresses.
During the duplicate address detection process, you can see the start time
and current detection count with the NCLU net show evpn mac vni
<vni_id> mac <mac_addr> command or the vtysh show evpn mac vni
930 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
shows that detection started for MAC address 00:01:02:03:04:11 for VNI
1001 on Tuesday, Nov 6 at 18:55:05 and the number of moves detected is 1.
00:01:02:03:04:11
MAC: 00:01:02:03:04:11
detection count 1
Neighbors:
10.0.1.26 Active
After the duplicate MAC address is cleared, the NCLU net show evpn mac
vni <vni_id> mac <mac_addr> command or the vtysh show evpn mac vni
MAC: 00:01:02:03:04:11
Neighbors:
10.0.1.26 Active
https://docs.cumulusnetworks.com 931
Cumulus Linux v4.2 User Documentation Network Virtualization
To display information for a duplicate IP address, run the NCLU net show
command example shows information for IP address 10.0.0.9 for VNI 1001.
IP: 10.0.0.9
Type: remote
State: inactive
MAC: 00:01:02:03:04:11
932 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
L2 VNIs: 4
L3 VNIs: 2
https://docs.cumulusnetworks.com 933
Cumulus Linux v4.2 User Documentation Network Virtualization
934 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Inter-subnet Routing
There are multiple models in EVPN for routing between different subnets
(VLANs), also known as inter-VLAN routing. The model you choose
depends if every VTEP acts as a layer 3 gateway and performs routing or if
only specific VTEPs perform routing, and if routing is performed only at the
ingress of the VXLAN tunnel or both the ingress and the egress of the
VXLAN tunnel.
bridging.
• Distributed asymmetric routing: Every VTEP participates in routing, but
all routing is done at the ingress VTEP; the egress VTEP only performs
bridging.
• Distributed symmetric routing: Every VTEP participates in routing and
routing is done at both the ingress VTEP and the egress VTEP.
for that subnet. Such a model facilitates easy host/VM mobility as there is
no need to change the host/VM configuration when it moves from one
VTEP to another.
All routing occurs in the context of a tenant VRF (virtual routing and
https://docs.cumulusnetworks.com 935
Cumulus Linux v4.2 User Documentation Network Virtualization
forwarding). A VRF instance is provisioned for each tenant and the subnets
of the tenant are associated with that VRF (the corresponding SVI is
attached to the VRF). Inter-subnet routing for each tenant occurs within
the context of the VRF for that tenant and is separate from the routing for
other tenants.
Centralized Routing
need to configure all subnets on such a gateway VTEP. When a host in one
subnet wants to communicate with a host in another subnet, it addresses
the packets to the gateway VTEP. The ingress VTEP (to which the source
host is attached) bridges the packets to the gateway VTEP over the
corresponding VXLAN tunnel. The gateway VTEP performs the routing to
the destination host and post-routing, the packet gets bridged to the
egress VTEP (to which the destination host is attached). The egress VTEP
then bridges the packet on to the destination host.
936 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
gw
frr/frr.conf file.
...
...
advertise-default-gw
exit-address-family
...
NOTE
You can deploy centralized routing at the VNI level. Therefore, you
https://docs.cumulusnetworks.com 937
Cumulus Linux v4.2 User Documentation Network Virtualization
Asymmetric Routing
routing and does not involve any interconnecting VNIs. However, you must
provision each VTEP with all VLANs/VNIs - the subnets between which
communication can take place; this is required even if there are no locally-
attached hosts for a particular VLAN.
TIP
938 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Symmetric Routing
and egress VTEP route the packets (similar to the traditional routing
behavior of routing to a next hop router). In the VXLAN encapsulated
packet, the inner destination MAC address is set to the router MAC address
of the egress VTEP as an indication that the egress VTEP is the next hop
and also needs to perform routing. All routing happens in the context of a
tenant (VRF). For a packet received by the ingress VTEP from a locally
attached host, the SVI interface corresponding to the VLAN determines the
VRF. For a packet received by the egress VTEP over the VXLAN tunnel, the
VNI in the packet has to specify the VRF. For symmetric routing, this is a
VNI corresponding to the tenant and is different from either the source VNI
or the destination VNI. This VNI is referred to as the layer 3 VNI or
interconnecting VNI; it has to be provisioned by the operator and is
https://docs.cumulusnetworks.com 939
Cumulus Linux v4.2 User Documentation Network Virtualization
exchanged through the EVPN control plane. To make the distinction clear,
the regular VNI, which is used to map a VLAN, is referred to as the layer 2
VNI.
NOTE
the VNI IDs are the same, the layer 2 VNI does not get
created.
of the layer 2 VNI; however you can also explicitly configure it.
940 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
• Configure a per-tenant VXLAN interface that specifies the layer 3 VNI for
the tenant. This VXLAN interface is part of the bridge and the router MAC
control plane.
Optional configuration includes configuring RD and RTs for the tenant VRF
and advertising the locally-attached subnets.
•
NCLU Commands Linux Commands
10.10.10.1
https://docs.cumulusnetworks.com 941
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands Linux Commands
NOTE
address) for the SVI corresponding to the layer 3 VNI. Use the
same address on both switches in the MLAG pair. Use the MLAG
system MAC address. See Advertise Primary IP Address.
942 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
If you do not want the RD and RTs (layer 3 RTs) for the tenant VRF to be
derived automatically, you can configure them manually by specifying them
under the l2vpn evpn address family for that specific VRF.
•
NCLU Commands vtysh Commands
10.1.20.2:5
https://docs.cumulusnetworks.com 943
Cumulus Linux v4.2 User Documentation Network Virtualization
frr/frr.conf file:
...
rd 10.1.20.2:5
...
NOTE
The tenant VRF RD and RTs are different from the RD and RTs for
the layer 2 VNI. See Define RDs and RTs.
not advertised for the destination host, the ingress VTEP cannot route the
packet to its destination. You can overcome this problem by having VTEPs
944 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
known in the BGP VRF routing table by injecting them using the network
command.
NOTE
Prefix-based Routing
EVPN prefix routes carry the layer 3 VNI and router MAC address and
follow the symmetric routing model for routing to the destination prefix.
NOTE
https://docs.cumulusnetworks.com 945
Cumulus Linux v4.2 User Documentation Network Virtualization
For a switch to be able to install EVPN type-5 routes into the routing table,
you must configure it with the layer 3 VNI related information. This
configuration is the same as for symmetric routing. You need to:
1. Configure a per-tenant VXLAN interface that specifies the layer 3 VNI for
the tenant. This VXLAN interface is part of the bridge; router MAC
946 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
3. Specify the mapping of the VRF to layer 3 VNI. This configuration is for
the BGP control plane.
•
NCLU Commands vtysh Commands
ipv4 unicast
...
exit-address-family
end
...
https://docs.cumulusnetworks.com 947
Cumulus Linux v4.2 User Documentation Network Virtualization
The following example commands show how to use the layer 3 VNI for
type-5 routes only:
948 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
only
NOTE
The following commands add a route map filter to IPv4 EVPN type-5 route
advertisement:
https://docs.cumulusnetworks.com 949
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands vtysh Commands
default route towards the border leaf for all external traffic (towards the
Internet or a different pod).
950 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
leaf01(config-router-af)# end
next-hop IP address and the anycast MAC address as the router MAC
address. In a failure scenario, this can lead to traffic being forwarded to a
leaf switch that does not have the destination routes. Traffic has to traverse
To prevent sub-optimal routing in Cumulus Linux 4.0 and later, the next hop
• For host type-2 routes, the anycast IP address is used as the next hop IP
address and the anycast MAC address is used as the router MAC address.
• For type-5 routes, the system IP address (the primary IP address of the
VTEP) is used as the next hop IP address and the system MAC address of
the VTEP is used as the router MAC address.
See EVPN and VXLAN Active-Active mode for information about EVPN and
VXLAN active-active mode.
https://docs.cumulusnetworks.com 951
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands Linux Commands
44:38:39:BE:EF:AA
NOTE
952 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Optional Configuration
The system MAC address must be the layer 3 SVI MAC address (not the
clad-sys-mac).
The following example commands add the system IP address 10.10.10.1 and
the system MAC address 44:38:39:be:ef:aa:
https://docs.cumulusnetworks.com 953
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands vtysh Commands
44:38:39:ff:00:00
The system IP address and system MAC address you provide take
precedence over the addresses that Cumulus Linux derives automatically.
Each switch in the MLAG pair advertises type-5 routes with its own system
IP, which creates an additional next hop at the remote VTEPs. In a large
954 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
pip
To show Advertise Primary IP Address parameters, run the NCLU net show
bgp l2vpn evpn vni <vni> command or the vtysh show bgp l2vpn evpn vni
Type: L3
RD: 10.1.20.2:5
Advertise-gw-macip : n/a
Advertise-svi-macip : n/a
Advertise-pip: Yes
System-IP: 10.10.10.1
https://docs.cumulusnetworks.com 955
Cumulus Linux v4.2 User Documentation Network Virtualization
System-MAC: 44:38:39:be:ef:aa
Router-MAC: 44:38:39:be:ef:aa
65101:4001
65101:4001
leaf01#
To show EVPN routes with Primary IP Advertisement, run the NCLU net
show bgp l2vpn evpn route command or the vtysh show bgp l2vpn evpn
...
*> [2]:[0]:[48]:[00:60:08:69:97:ef]
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*> [2]:[0]:[48]:[26:76:e6:93:32:78]
10.0.1.1 32768 i
956 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Rmac:44:38:39:be:ef:aa
*> [2]:[0]:[48]:[26:76:e6:93:32:78]:[32]:[10.1.10.101]
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
...
Considerations
(centralized, asymmetric, and symmetric) and affects all traffic from VXLAN
overlay hosts that need to be routed after VXLAN decapsulation on an exit
https://docs.cumulusnetworks.com 957
Cumulus Linux v4.2 User Documentation Network Virtualization
the exit leaf by creating a temporary VNI and associating it with the
existing VLAN ID.
▼ Example Workaround
extends beyond VTEPs, (for example, a host with bridges), the gateway
MAC address is not refreshed in the network when ARP suppression is
enabled on the gateway. To work around this issue, disable ARP
For VXLAN type-5 routes, ECMP does not work when the VTEP is directly
In EVPN symmetric routing, if you use the same SVI IP address across
racks; for example, if the SVI IP address for a specific VLAN interface (such
as vlan100) is the same on all VTEPs where this SVI is present, be aware of
958 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
the following:
https://docs.cumulusnetworks.com 959
Cumulus Linux v4.2 User Documentation Network Virtualization
EVPN Multihoming
EVPN multihoming (EVPN-MH) provides support for all-active server
redundancy. It is a standards-based replacement for MLAG in data centers
deploying Clos topologies. Replacing MLAG:
• Eliminates the need for peerlinks or inter-switch links between the top of
rack switches
• Allows more than two TOR switches to participate in a redundancy
group
• Provides a single BGP-EVPN control plane
• Allows multi-vendor interoperability
EVPN-MH uses BGP-EVPN type-1, type-2 and type-4 routes for discovering
Ethernet segments (ES) and for forwarding traffic to those Ethernet
segments. The MAC and neighbor databases are synced between the
Ethernet segment peers via these routes as well. An Ethernet segment is a
group of switch links that are attached to the same server. Each Ethernet
segment has an unique Ethernet segment ID (es-id) across the entire PoD.
static or LACP bond. The es-sys-mac and local-es-id are used to build a
type-3 es-id. This es-id must be globally unique across all the EVPN
segments attached to the same switch, the es-sys-mac must be the same
960 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
IMPORTANT
segment.
Supported Features
https://docs.cumulusnetworks.com 961
Cumulus Linux v4.2 User Documentation Network Virtualization
WARNING
advertising EVPN type-1 and type-4 routes for that bond. Split-horizon
and designated forwarder filters are disabled.
◦ When an EVPN-MH bond exits the LACP bypass state, BGP starts
advertising EVPN type-1 and type-4 routes for that bond. Split-horizon
and designated forwarder filters are enabled.
962 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
WARNING
network/interfaces file.
interfaces file.
Configure EVPN-MH
https://docs.cumulusnetworks.com 963
Cumulus Linux v4.2 User Documentation Network Virtualization
is responsible for forwarding flooded traffic received via the VXLAN overlay
to the locally attached Ethernet segment. We recommend you specify a
preference (using the es-df-pref option) on an Ethernet segment for the
IMPORTANT
unique SVI IP address for each VTEP across the racks. These IP
addresses must be reachable from remote VTEPs. You enable the
964 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
option, under the BGP EVPN address family. See the leaf
configurations in the example configuration below.
disabled by default.
...
evpn.multihoming.enable = TRUE
...
https://docs.cumulusnetworks.com 965
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands vtysh Commands
mac 44:38:39:ff:ff:01
pref 50000
interface hostbond1
966 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
bond-slaves swp5
es-sys-mac 44:38:39:ff:ff:01
interface hostbond2
bond-slaves swp6
es-sys-mac 44:38:39:ff:ff:01
interface hostbond3
bond-slaves swp7
es-sys-mac 44:38:39:ff:ff:01
frr.conf file.
interface hostbond1
evpn mh es-id 1
interface hostbond2
https://docs.cumulusnetworks.com 967
Cumulus Linux v4.2 User Documentation Network Virtualization
evpn mh es-id 2
interface hostbond3
evpn mh es-id 3
There are a few global settings for EVPN multihoming you can set,
including:
• mac-holdtime: MAC hold time, in seconds. This is the duration for which a
switch maintains SYNC MAC entries after the Ethernet segment peer’s
EVPN type-2 route is deleted. During this time, the switch attempts to
independently establish reachability of the MAC on the local Ethernet
segment. The hold time can be between 0 and 86400 seconds. The
default is 1080 seconds.
• neigh-holdtime: Neighbor entry hold time, in seconds. The duration for
which a switch maintains SYNC neigh entries after the Ethernet segment
peer’s EVPN type-2 route is deleted. During this time, the switch
attempts to independently establish reachability of the host on the local
Ethernet segment. The hold time can be between 0 and 86400 seconds.
968 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
to the access port via the VXLAN overlay. This knob only applies to
Cumulus VX, since fast failover is only supported on the ASIC.
• startup-delay: Startup delay. The duration for which a switch holds the
To configure a MAC hold time for 1000 seconds, run the following
commands:
•
NCLU Commands vtysh Commands
To configure a neighbor hold time for 600 seconds, run the following
commands:
https://docs.cumulusnetworks.com 969
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands vtysh Commands
To configure a startup delay for 1800 seconds, run the following commands:
•
NCLU Commands vtysh Commands
970 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
When all the uplinks go down, the VTEP loses connectivity to the VXLAN
overlay. To prevent traffic loss in this state, the uplinks’ oper-state is
tracked. When all the uplinks are down, the Ethernet segment bonds on the
switch are put into a protodown or error-disabled state. You can configure
•
NCLU Commands vtysh Commands
frr.conf file:
...
interface swp1
evpn mh uplink
ip pim
interface swp2
https://docs.cumulusnetworks.com 971
Cumulus Linux v4.2 User Documentation Network Virtualization
evpn mh uplink
ip pim
interface swp3
evpn mh uplink
ip pim
interface swp4
evpn mh uplink
ip pim
...
You can add debug statements to the /etc/frr/frr.conf file to debug the
972 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
To debug Ethernet segments and routes, use the net add bgp debug
frr.conf file:
...
https://docs.cumulusnetworks.com 973
Cumulus Linux v4.2 User Documentation Network Virtualization
...
Fast Failover
When an Ethernet segment link goes down, the attached VTEP notifies all
other VTEPs via a single EAD-ES withdraw. This is done by way of an
Ethernet segment bond redirect.
974 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Container sharing for both layer 2 and layer 3 next hop groups is enabled
by default when EVPN-MH is configured. These settings are stored in the
evpn.multihoming.shared_l2_groups and
evpn.multihoming.shared_l3_groups variables.
To disable either setting, edit switchd.conf, set the variable to FALSE, then
restart the switchd service. For example, to disable container sharing for
...
evpn.multihoming.shared_l3_groups = FALSE
...
https://docs.cumulusnetworks.com 975
Cumulus Linux v4.2 User Documentation Network Virtualization
Some third party switch vendors don’t advertise EAD-per-EVI routes; they
only advertise EAD-per-ES routes. To interoperate with these vendors, you
need to disable EAD-per-EVI route advertisements.
Troubleshooting
You can use the following net show commands to troubleshoot your EVPN
multihoming configuration.
976 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
The net show evpn es command displays the Ethernet segments across all
VNIs.
03:44:38:39:ff:ff:01:00:00:01 R -
172.0.0.22,172.0.0.23
03:44:38:39:ff:ff:01:00:00:02 LR hostbond2
172.0.0.22,172.0.0.23
03:44:38:39:ff:ff:01:00:00:03 LR hostbond3
172.0.0.22,172.0.0.23
03:44:38:39:ff:ff:01:00:00:05 L hostbond1
03:44:38:39:ff:ff:02:00:00:01 R -
172.0.0.24,172.0.0.25,172.0.0.26
03:44:38:39:ff:ff:02:00:00:02 R -
172.0.0.24,172.0.0.25,172.0.0.26
03:44:38:39:ff:ff:02:00:00:03 R -
172.0.0.24,172.0.0.25,172.0.0.26
The net show evpn es-evi command displays the Ethernet segments
https://docs.cumulusnetworks.com 977
Cumulus Linux v4.2 User Documentation Network Virtualization
...
1002 03:44:38:39:ff:ff:01:00:00:02 L
1002 03:44:38:39:ff:ff:01:00:00:03 L
1002 03:44:38:39:ff:ff:01:00:00:05 L
1001 03:44:38:39:ff:ff:01:00:00:02 L
1001 03:44:38:39:ff:ff:01:00:00:03 L
1001 03:44:38:39:ff:ff:01:00:00:05 L
...
The net show bgp l2vpn evpn es command displays the Ethernet segments
ESI Flags RD
#VNIs VTEPs
03:44:38:39:ff:ff:01:00:00:01 LR 172.0.0.9:3
978 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
10 172.0.0.10(EA),172.0.0.11(EA)
03:44:38:39:ff:ff:01:00:00:02 LR 172.0.0.9:4
10 172.0.0.10(EA),172.0.0.11(EA)
03:44:38:39:ff:ff:01:00:00:03 LR 172.0.0.9:5
10 172.0.0.10(EA),172.0.0.11(EA)
cumulus@switch:~$
The net show bgp l2vpn evpn es-evi command displays the Ethernet
...
1002 03:44:38:39:ff:ff:01:00:00:01 R
172.0.0.22(EV),172.0.0.23(EV)
1002 03:44:38:39:ff:ff:01:00:00:02 LR
172.0.0.22(EV),172.0.0.23(EV)
1002 03:44:38:39:ff:ff:01:00:00:03 LR
172.0.0.22(EV),172.0.0.23(EV)
https://docs.cumulusnetworks.com 979
Cumulus Linux v4.2 User Documentation Network Virtualization
1002 03:44:38:39:ff:ff:01:00:00:05 L
1002 03:44:38:39:ff:ff:02:00:00:01 R
172.0.0.24(EV),172.0.0.25(EV),172.0.0.26(EV)
1002 03:44:38:39:ff:ff:02:00:00:02 R
172.0.0.24(EV),172.0.0.25(EV),172.0.0.26(EV)
1002 03:44:38:39:ff:ff:02:00:00:03 R
172.0.0.24(EV),172.0.0.25(EV),172.0.0.26(EV)
1001 03:44:38:39:ff:ff:01:00:00:01 R
172.0.0.22(EV),172.0.0.23(EV)
1001 03:44:38:39:ff:ff:01:00:00:02 LR
172.0.0.22(EV),172.0.0.23(EV)
1001 03:44:38:39:ff:ff:01:00:00:03 LR
172.0.0.22(EV),172.0.0.23(EV)
1001 03:44:38:39:ff:ff:01:00:00:05 L
1001 03:44:38:39:ff:ff:02:00:00:01 R
172.0.0.24(EV),172.0.0.25(EV),172.0.0.26(EV)
1001 03:44:38:39:ff:ff:02:00:00:02 R
172.0.0.24(EV),172.0.0.25(EV),172.0.0.26(EV)
1001 03:44:38:39:ff:ff:02:00:00:03 R
172.0.0.24(EV),172.0.0.25(EV),172.0.0.26(EV)
...
cumulus@switch:~$
980 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
You can use the net show bgp l2vpn evpn route command to view type-1
best, i - internal
Path
Extended Community
*> [1]:[0]:[03:44:38:39:ff:ff:01:00:00:01]:[128]:[0.0.0.0]
172.16.0.21 32768 i
ET:8 RT:5556:1005
*> [1]:[0]:[03:44:38:39:ff:ff:01:00:00:02]:[128]:[0.0.0.0]
172.16.0.21 32768 i
https://docs.cumulusnetworks.com 981
Cumulus Linux v4.2 User Documentation Network Virtualization
ET:8 RT:5556:1005
*> [1]:[0]:[03:44:38:39:ff:ff:01:00:00:03]:[128]:[0.0.0.0]
172.16.0.21 32768 i
ET:8 RT:5556:1005
...
cumulus@switch:~$
Example Configuration
The following example uses the topology illustrated here. It shows one rack
982 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Configuration Commands
This section lists the NCLU commands to configure the switches and the
network as well as the vtysh commands to configure FRRouting.
https://docs.cumulusnetworks.com 983
Cumulus Linux v4.2 User Documentation Network Virtualization
•
leaf01 leaf02 leaf03 spine01 spine02
NCL
CLU
UCComman
ommands
ds
iburst
iburst
iburst
iburst
44:38:39:ff:ff:01
984 https://docs.cumulusnetworks.com
net add routing log timestamp precision 6
/etc/network/interfaces
If you are using the NCLU commands listed above, they create the following
configurations in the /etc/network/interfaces files for the leaf and spine
switches.
If you are not using NCLU and are configuring the topology on the
command line, copy the configurations below to the appropriate switches
or servers. For the leaf and spine switch configurations, reload the new
configuration by running ifreload -a:
https://docs.cumulusnetworks.com 985
Cumulus Linux v4.2 User Documentation Network Virtualization
•
leaf01 leaf02 leaf03 spine01 spine02 host01
your system
interfaces(5)
auto eth0
iface eth0
address 192.168.0.15/24
gateway 192.168.0.2
vrf mgmt
auto mgmt
iface mgmt
address 172.16.0.1/8
address ::1/128
vrf-table auto
auto lo
iface lo
address 172.16.0.21/32
auto swp1
986 https://docs.cumulusnetworks.com
iface swp1
/etc/frr/frr.conf
frr.conf file:
https://docs.cumulusnetworks.com 987
Cumulus Linux v4.2 User Documentation Network Virtualization
•
leaf01 leaf02 leaf03 spine01 spine02
hostname leaf01
evpn mh startup-delay 30
service integrated-vtysh-config
password cn321
vrf vrf1
vni 4001
exit-vrf
988 ! https://docs.cumulusnetworks.com
vrf vrf2
Network Virtualization Cumulus Linux v4.2 User Documentation
deployments.
packet over the underlay network, which is forwarded using the MDT to
https://docs.cumulusnetworks.com 989
Cumulus Linux v4.2 User Documentation Network Virtualization
For PIM-SM, type-3 routes do not result in any forwarding entries. Cumulus
Linux does not advertise type-3 routes for a layer 2 VNI when BUM mode
NOTE
990 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
239.1.1.111
NOTE
Verify EVPN-PIM
Run the NCLU net show mroute command or the vtysh show ip mroute
https://docs.cumulusnetworks.com 991
Cumulus Linux v4.2 User Documentation Network Virtualization
pimreg 1 21:37:36
PIM ipmr-
lo 1 21:37:36
lo 1 21:36:41
PIM
swp2 1 21:36:41
pimreg 1 21:37:36
PIM ipmr-
lo 1 21:37:36
lo 1 21:36:41
PIM
swp2 1 21:36:41
(*,G) entries should show ipmr-lo in the OIL (Outgoing Interface List) and
992 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
the kernel. The kernel information should match the FRR information.
cumulus@switch:~$ ip mroute
resolved
resolved
that all zero MAC addresses for every VXLAN device point to the correct
multicast group destination.
permanent
permanent
https://docs.cumulusnetworks.com 993
Cumulus Linux v4.2 User Documentation Network Virtualization
NOTE
Run the NCLU net show evpn vni <vni> command or the vtysh show evpn
vni <vni> command to ensure that your layer 2 VNI has the correct
flooding information:
VNI: 10
Type: L2
VxLAN ifIndex: 18
10.0.0.26 flood: -
10.0.0.27 flood: -
Number of ARPs (IPv4 and IPv6, local and remote) known for
994 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
this VNI: 14
Advertise-gw-macip: No
https://docs.cumulusnetworks.com 995
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands vtysh Commands
Run the net add interface <peerlink> pim command. For example:
Example Configuration
• PIM is enabled on swp1, swp2, and the loopback interface (shown in the
example /etc/frr/frr.conf file below).
996 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
/etc/frr/frr.conf file /etc/network/interfaces file
...
ip pim rp 192.168.0.1
...
vrf vrf1
vni 104001
exit-vrf
vrf vrf2
vni 104002
exit-vrf
interface swp1
ip pim
interface swp2
ip pim
interface swp3
interface swp6
description swp6https://docs.cumulusnetworks.com
> host-112's swp1 997
!
Cumulus Linux v4.2 User Documentation Network Virtualization
Troubleshooting
This section provides various commands to help you examine your EVPN
configuration and provides troubleshooting tips.
All of the following outputs are from the EVPN Symmetric Cumulus in the
Cloud demo.
You can use various iproute2 and NCLU commands to examine links, VLAN
mappings and the bridge MAC forwarding database known to the Linux
kernel. You can also use these commands to examine the neighbor cache
and the routing table (for the underlay or for a specific tenant VRF). Some
• ip neighbor show
A sample output of ip -d link show type vxlan is shown below for one
VXLAN interface. Relevant parameters are the VNI value, the state, the local
IP address for the VXLAN tunnel, the UDP port number (4789) and the
bridge of which the interface is part (bridge in the example below). The
998 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
output also shows that MAC learning is disabled (off) on the VXLAN
interface.
1000
noudp6zerocsumrx
off guard off root_block off fastleave off learning off flood
https://docs.cumulusnetworks.com 999
Cumulus Linux v4.2 User Documentation Network Virtualization
...
The following example output for the net show bridge macs command
shows:
10 bridge bond1
00:60:08:69:97:ef
00:01:40
1000 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
10 bridge bond1
26:76:e6:93:32:78
<1 sec
permanent 00:13:08
permanent 00:13:08
10 bridge vni10
68:0f:31:ae:3d:7a extern_learn
00:09:58
10 bridge vni10
94:8e:1c:0d:77:93 extern_learn
00:09:58
20 bridge bond2
cc:6e:fa:8d:ff:92
00:00:26
20 bridge bond2
f0:9d:d0:59:60:5d
https://docs.cumulusnetworks.com 1001
Cumulus Linux v4.2 User Documentation Network Virtualization
00:00:08
permanent 00:36:50
permanent 00:36:50
20 bridge vni20
12:15:9a:9c:f2:e1 extern_learn
00:33:41
20 bridge vni20
f8:4f:db:ef:be:8b extern_learn
00:33:40
1002 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
...
The following example output for the net show neighbor command shows:
AF STATE
---- ---------
IPv4 zebra
IPv4 REACHABLE
https://docs.cumulusnetworks.com 1003
Cumulus Linux v4.2 User Documentation Network Virtualization
IPv4 zebra
IPv4 zebra
IPv4 zebra
IPv4 PERMANENT
IPv4 zebra
IPv4 zebra
IPv4 zebra
IPv4 REACHABLE
IPv4 zebra
IPv4 REACHABLE
IPv4 PERMANENT
IPv4 STALE
1004 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
IPv4 REACHABLE
IPv4 PERMANENT
...
If you use BGP for the underlay routing, run the NCLU net show bgp
=============================
https://docs.cumulusnetworks.com 1005
Cumulus Linux v4.2 User Documentation Network Virtualization
0 0 0 00:37:34 7
0 0 0 00:37:34 7
0 0 0 00:37:34 7
0 0 0 00:37:34 7
0 0 0 00:37:35 12
=============================
===========================
1006 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
0 0 00:37:35 34
0 0 00:37:35 34
0 0 00:37:35 34
0 0 00:37:35 34
Run the NCLU net show route command or the vtysh show route command
to examine the underlay routing and determine how remote VTEPs are
reached. The following example shows output from a leaf switch:
This is the routing table of the global (underlay) routing table. Use
https://docs.cumulusnetworks.com 1007
Cumulus Linux v4.2 User Documentation Network Virtualization
NOTE
the `vrf` keyword to see routes for specific VRFs where the hosts
reside.
show ip route
=============
F - PBR, f - OpenFabric,
rejected route
weight 1, 00:40:04
weight 1, 00:40:04
weight 1, 00:40:04
1008 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
weight 1, 00:40:04
weight 1, 00:35:18
weight 1, 00:35:18
weight 1, 00:35:18
weight 1, 00:35:18
weight 1, 00:42:55
weight 1, 00:42:55
weight 1, 00:42:55
weight 1, 00:42:55
weight 1, 00:42:55
weight 1, 00:42:55
https://docs.cumulusnetworks.com 1009
Cumulus Linux v4.2 User Documentation Network Virtualization
weight 1, 00:42:55
weight 1, 00:42:55
weight 1, 00:42:55
weight 1, 00:42:55
weight 1, 00:42:55
weight 1, 00:42:55
weight 1, 00:38:07
weight 1, 00:38:07
weight 1, 00:38:07
weight 1, 00:38:07
1010 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Run the NCLU net show bgp l2vpn evpn summary command or the vtysh
show bgp l2vpn evpn summary command to see the BGP peers participating
example output from a leaf switch shows eBGP peering with four spine
switches to exchange EVPN routes; all peering sessions are in the
established state.
https://docs.cumulusnetworks.com 1011
Cumulus Linux v4.2 User Documentation Network Virtualization
0 0 00:44:46 34
0 0 00:44:46 34
0 0 00:44:46 34
0 0 00:44:46 34
Run the NCLU net show bgp l2vpn evpn vni command or the vtysh show
bgp l2vpn evpn vni command to display the configured VNIs on a network
The following example from leaf01 shows three layer 2 VNIs (10, 20 and 30)
as well as two layer 3 VNIs (4001, 4002).
1012 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Number of L2 VNIs: 3
Number of L3 VNIs: 2
Flags: * - Kernel
* 20 L2 10.10.10.1:4
* 30 L2 10.10.10.1:6
* 10 L2 10.10.10.1:3
* 4002 L3 10.1.30.2:2
* 4001 L3 10.1.20.2:5
Run the NCLU net show evpn vni command to see a summary of VNIs and
https://docs.cumulusnetworks.com 1013
Cumulus Linux v4.2 User Documentation Network Virtualization
20 L2 vni20 8 5
1 RED
30 L2 vni30 8 4
1 BLUE
10 L2 vni10 8 6
1 RED
4001 L3 vniRED 1 1 n/
a RED
4002 L3 vniBLUE 0 0 n/
a BLUE
Run the NCLU net show evpn vni <vni> command or the vtysh show evpn
detail. The following example output shows details for the layer 2 VNI 10 as
well as for the layer 3 VNI 4001. For the layer 2 VNI, the remote VTEPs that
contain that VNI are shown. For the layer 3 VNI, the router MAC and
associated layer 2 VNIs are shown. The state of the layer 3 VNI depends on
the state of its associated VRF as well as the states of its underlying VXLAN
interface and SVI.
1014 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
VNI: 10
Type: L2
VxLAN ifIndex: 14
Number of ARPs (IPv4 and IPv6, local and remote) known for
this VNI: 6
Advertise-gw-macip: No
cumulus@leaf01:mgmt:~$
VNI: 4001
Type: L3
Vxlan-Intf: vniRED
SVI-If: vlan4001
State: Up
https://docs.cumulusnetworks.com 1015
Cumulus Linux v4.2 User Documentation Network Virtualization
L2 VNIs: 10 20
Run the NCLU net show evpn mac vni <vni> command or the vtysh show
evpn mac vni <vni> command to examine all local and remote MAC
addresses for a VNI. This command is only relevant for a layer 2 VNI:
X=peer-proxy
10 0/0
94:8e:1c:0d:77:93 remote
10.0.1.2 0/0
50:88:b2:3c:08:f9 remote
10.0.1.2 0/0
1016 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
68:0f:31:ae:3d:7a remote
10.0.1.2 1/0
c8:7d:bc:96:71:f3 remote
10.0.1.2 0/0
10 0/0
10 0/0
10 0/0
Run the NCLU net show evpn mac vni all command or the vtysh show
evpn mac vni all command to examine MAC addresses for all VNIs.
You can examine the details for a specific MAC addresse or query all
remote MAC addresses behind a specific VTEP:
94:8e:1c:0d:77:93
MAC: 94:8e:1c:0d:77:93
Sync-info: neigh#: 0
https://docs.cumulusnetworks.com 1017
Cumulus Linux v4.2 User Documentation Network Virtualization
Neighbors:
No Neighbors
cumulus@leaf01:mgmt:~$
94:8e:1c:0d:77:93
cumulus@leaf01:mgmt:~$
VNI 20
12:15:9a:9c:f2:e1 remote
10.0.1.2 1/0
50:88:b2:3c:08:f9 remote
10.0.1.2 0/0
f8:4f:db:ef:be:8b remote
10.0.1.2 0/0
c8:7d:bc:96:71:f3 remote
10.0.1.2 0/0
Run the NCLU net show evpn arp-cache vni <vni> command or the vtysh
show evpn arp-cache vni <vni> command to examine all local and remote
1018 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
neighbors (ARP entries) for a VNI. This command is only relevant for a layer
2 VNI and the output shows both IPv4 and IPv6 neighbor entries:
76:ed:2a:8a:67:24 0/0
26:76:e6:93:32:78 0/0
26:76:e6:93:32:78 0/0
76:ed:2a:8a:67:24 0/0
...
Run the NCLU net show evpn arp-cache vni all command or the vtysh
show evpn arp-cache vni all command to examine neighbor entries for all
VNIs.
https://docs.cumulusnetworks.com 1019
Cumulus Linux v4.2 User Documentation Network Virtualization
For symmetric routing, run the NCLU net show evpn rmac vni <vni>
command or the vtysh show evpn rmac vni <vni> command to examine the
44:38:39:be:ef:bb 10.0.1.2
Run the NCLU net show evpn rmac vni all command or the vtysh show
evpn rmac vni all command to examine router MACs for all layer 3 VNIs.
For symmetric routing, you can run the NCLU net show evpn next-hops vni
<vni> command or the vtysh show evpn next-hops vni <vni> command to
examine the gateway next hops. This command is only relevant for a layer 3
1020 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
IP RMAC
10.0.1.2 44:38:39:be:ef:bb
Run the NCLU net show evpn next-hops vni all command or the vtysh
show evpn next-hops vni all command to examine gateway next hops for
You can query a specific next hop; the output displays the remote host and
prefix routes through this next hop:
10.0.1.2
Ip: 10.0.1.2
RMAC: 44:38:39:be:ef:bb
Refcount: 2
Prefixes:
10.1.10.104/32
10.1.20.105/32
https://docs.cumulusnetworks.com 1021
Cumulus Linux v4.2 User Documentation Network Virtualization
Run the net show route vrf <vrf-name> command to examine the VRF
======================
F - PBR, f - OpenFabric,
rejected route
VRF RED:
00:53:46
00:53:46
1022 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
1, 00:43:55
00:53:46
1, 00:20:07
...
In the output above, the next hops for these routes are specified by EVPN
Run the NCLU net show bgp l2vpn evpn route command or the vtysh show
bgp l2vpn evpn route command to display all EVPN routes, both local and
remote. The routes displayed here are based on RD as they are across VNIs
and VRFs:
https://docs.cumulusnetworks.com 1023
Cumulus Linux v4.2 User Documentation Network Virtualization
best, i - internal
Path
Extended Community
*> [2]:[0]:[48]:[00:60:08:69:97:ef]
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*> [2]:[0]:[48]:[26:76:e6:93:32:78]
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*> [2]:[0]:[48]:[26:76:e6:93:32:78]:[32]:[10.1.10.101]
1024 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*>
[2]:[0]:[48]:[26:76:e6:93:32:78]:[128]:[fe80::9465:45ff:fe6d:4890]
10.0.1.1 32768 i
ET:8 RT:65101:10
*> [2]:[0]:[48]:[c0:8a:e6:03:96:d0]
10.0.1.1 32768 i
MAC Rmac:44:38:39:be:ef:aa
*> [3]:[0]:[32]:[10.0.1.1]
10.0.1.1 32768 i
ET:8 RT:65101:10
*> [2]:[0]:[48]:[c0:8a:e6:03:96:d0]
10.0.1.1 32768 i
MAC Rmac:44:38:39:be:ef:aa
*> [2]:[0]:[48]:[cc:6e:fa:8d:ff:92]
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*> [2]:[0]:[48]:[f0:9d:d0:59:60:5d]
https://docs.cumulusnetworks.com 1025
Cumulus Linux v4.2 User Documentation Network Virtualization
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*>
[2]:[0]:[48]:[f0:9d:d0:59:60:5d]:[128]:[fe80::ce6e:faff:fe8d:ff92]
10.0.1.1 32768 i
ET:8 RT:65101:20
*> [3]:[0]:[32]:[10.0.1.1]
10.0.1.1 32768 i
ET:8 RT:65101:20
*> [2]:[0]:[48]:[c0:8a:e6:03:96:d0]
10.0.1.1 32768 i
MAC Rmac:44:38:39:be:ef:aa
*> [2]:[0]:[48]:[de:02:3b:17:c9:6d]
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*>
[2]:[0]:[48]:[de:02:3b:17:c9:6d]:[128]:[fe80::dc02:3bff:fe17:c96d]
10.0.1.1 32768 i
ET:8 RT:65101:30
*> [2]:[0]:[48]:[ea:77:bb:f1:a7:ca]
1026 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*> [3]:[0]:[32]:[10.0.1.1]
10.0.1.1 32768 i
ET:8 RT:65101:30
*> [2]:[0]:[48]:[12:15:9a:9c:f2:e1]
10.0.1.2 0
65199 65102 i
Rmac:44:38:39:be:ef:bb
* [2]:[0]:[48]:[12:15:9a:9c:f2:e1]
10.0.1.2 0
65199 65102 i
Rmac:44:38:39:be:ef:bb
...
You can filter the routing table based on EVPN route type. The available
options are shown below:
https://docs.cumulusnetworks.com 1027
Cumulus Linux v4.2 User Documentation Network Virtualization
multicast : Multicast
To drill down on a specific route for more information, run the NCLU net
show bgp l2vpn evpn route rd <rd-value> command or the vtysh show bgp
EVPN routes with that RD and with the path attribute details for each path.
Additional filtering is possible based on route type or by specifying the
MAC and/or IP address. The following example shows the specific MAC/IP
route of server05. The output shows that this remote host is behind VTEP
10.10.10.3 and is reachable through four paths; one through each spine
switch. This example is from a symmetric routing configuration, so the
route shows both the layer 2 VNI (20) and the layer 3 VNI (4001), as well as
the EVPN route target attributes corresponding to each and the associated
router MAC address.
1028 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
10.10.10.3:3:[2]:[0]:[48]:[12:15:9a:9c:f2:e1]:[32]:[10.1.20.105]
20/4001
65199 65102
(Router ID)
Rmac:44:38:39:be:ef:bb
20/4001
65199 65102
Rmac:44:38:39:be:ef:bb
20/4001
https://docs.cumulusnetworks.com 1029
Cumulus Linux v4.2 User Documentation Network Virtualization
65199 65102
Rmac:44:38:39:be:ef:bb
20/4001
65199 65102
Rmac:44:38:39:be:ef:bb
NOTE
• Only global VNIs are supported. Even though VNI values are
exchanged in the type-2 and type-5 routes, the received
values are not used when installing the routes into the
1030 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Received EVPN routes are maintained in the global EVPN routing table
present, received EVPN routes are imported into the per-VNI routing tables
based on the route target attributes. You can examine the per-VNI routing
table with the net show bgp l2vpn evpn route vni <vni> command:
https://docs.cumulusnetworks.com 1031
Cumulus Linux v4.2 User Documentation Network Virtualization
best, i - internal
Path
*> [2]:[0]:[48]:[00:60:08:69:97:ef]
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*> [2]:[0]:[48]:[26:76:e6:93:32:78]
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*> [2]:[0]:[48]:[26:76:e6:93:32:78]:[32]:[10.1.10.101]
10.0.1.1 32768 i
Rmac:44:38:39:be:ef:aa
*>
[2]:[0]:[48]:[26:76:e6:93:32:78]:[128]:[fe80::9465:45ff:fe6d:4890]
1032 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
10.0.1.1 32768 i
ET:8 RT:65101:10
* [2]:[0]:[48]:[50:88:b2:3c:08:f9]
10.0.1.2 0
65199 65102 i
MAC Rmac:44:38:39:be:ef:bb
* [2]:[0]:[48]:[50:88:b2:3c:08:f9]
10.0.1.2 0
65199 65102 i
MAC Rmac:44:38:39:be:ef:bb
* [2]:[0]:[48]:[50:88:b2:3c:08:f9]
10.0.1.2 0
65199 65102 i
MAC Rmac:44:38:39:be:ef:bb
*> [2]:[0]:[48]:[50:88:b2:3c:08:f9]
10.0.1.2 0
65199 65102 i
MAC Rmac:44:38:39:be:ef:bb
* [2]:[0]:[48]:[68:0f:31:ae:3d:7a]
10.0.1.2 0
https://docs.cumulusnetworks.com 1033
Cumulus Linux v4.2 User Documentation Network Virtualization
65199 65102 i
Rmac:44:38:39:be:ef:bb
...
To display the VNI routing table for all VNIs, run the net show bgp l2vpn
For symmetric routing, received type-2 and type-5 routes are imported into
the VRF routing table (against the corresponding address-family: IPv4
unicast or IPv6 unicast) based on a match on the route target attributes.
Run the NCLU net show bgp vrf <vrf-name> ipv4 unicast command or the
net show bgp vrf <vrf-name> ipv6 unicast command to examine the BGP
VRF routing table. The equivalent vtysh commands are show bgp vrf <vrf-
name> ipv4 unicast and show bgp vrf <vrf-name> ipv6 unicast.
1034 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
best, = multipath,
Path
* 10.1.10.104/32 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
*> 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.1.20.105/32 10.0.1.2< 0
https://docs.cumulusnetworks.com 1035
Cumulus Linux v4.2 User Documentation Network Virtualization
65199 65102 i
*> 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
* 10.0.1.2< 0
65199 65102 i
1036 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
able to configure their default routers or might lose their existing default
router information. Cumulus Linux supports the EVPN Neighbor Discovery
(ND) Extended Community with a type field value of 0x06, a sub-type field
value of 0x08 (ND Extended Community), and a router flag; this enables
the switch to determine if a particular IPv6-MAC pair belongs to a host or a
router.
When the MAC/IP (type-2) route contains the IPv6-MAC pair and the R-bit
is set, the route belongs to a router. If the R-bit is set to zero, the route
belongs to a host. If the router is in a local LAN segment, the switch
To show the EVPN arp-cache that gets populated by the neighbor table
and see if the IPv6-MAC entry belongs to a router, run either the NCLU net
show evpn arp-cache vni <vni> ip <address> command or the vtysh show
10.1.20.105
https://docs.cumulusnetworks.com 1037
Cumulus Linux v4.2 User Documentation Network Virtualization
IP: 10.1.20.105
Type: remote
State: active
MAC: 12:15:9a:9c:f2:e1
Sync-info: -
The first time a MAC moves from behind one VTEP to behind another, BGP
command or the vtysh show bgp l2vpn evpn route vni <vni> mac <mac>
command. The example output below shows the type-2 route for a MAC
cumulus@switch:~$ net show bgp l2vpn evpn route vni 10109 mac
00:02:22:22:22:02
1038 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Local
You can identify static or sticky MACs in EVPN by the presence of MM:0,
sticky MAC in the Extended Community line of the output from the NCLU
net show bgp l2vpn evpn route vni <vni> mac <mac> command or the
vtysh show bgp l2vpn evpn route vni <vni> mac <mac> command.
cumulus@switch:~$ net show bgp l2vpn evpn route vni 10101 mac
00:02:00:00:00:01
https://docs.cumulusnetworks.com 1039
Cumulus Linux v4.2 User Documentation Network Virtualization
Local
AddPath ID: RX 0, TX 46
To troubleshoot EVPN, enable FRR debug logs. The relevant debug options
are:
Option De
Desscription
1040 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Option De
Desscription
When you run the ping -I command and specify an interface, you don’t
get an ICMP echo reply. However, when you run the ping command without
of data.
https://docs.cumulusnetworks.com 1041
Cumulus Linux v4.2 User Documentation Network Virtualization
^C
This is expected behavior with Cumulus Linux; when you send an ICMP
echo request to an IP address that is not in the same subnet using the ping
-I command, Cumulus Linux creates a failed ARP entry for the destination
IP address.
1042 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Configuration Examples
This section shows the following EVPN configuration examples:
• MLAG is configured between leaf01 and leaf02, and leaf03 and leaf04
• BGP unnumbered is in the underlay (configured on all leafs and spines)
• Server gateways are outside the VXLAN fabric
https://docs.cumulusnetworks.com 1043
Cumulus Linux v4.2 User Documentation Network Virtualization
The following images shows traffic flow between tenants. The spines and
other devices are omitted for simplicity.
Traffic Flo
Floww bet
betwween server01
an
andd server0
r044
1044 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
/etc/network/interfaces
https://docs.cumulusnetworks.com 1045
Cumulus Linux v4.2 User Documentation Network Virtualization
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
auto lo
address 10.10.10.1/32
clagd-vxlan-anycast-ip 10.0.1.1
vxlan-local-tunnelip 10.10.10.1
auto mgmt
iface mgmt
vrf-table auto
address 127.0.0.1/8
address ::1/128
auto eth0
vrf mgmt
auto bridge
iface bridge
bridge-vids 10 20
bridge-vlan-aware yes
auto vni10
iface vni10
1046 https://docs.cumulusnetworks.com
bridge-access 10
vxlan-id 10
Network Virtualization Cumulus Linux v4.2 User Documentation
/etc/frr/frr.conf
https://docs.cumulusnetworks.com 1047
Cumulus Linux v4.2 User Documentation Network Virtualization
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
...
redistribute connected
exit-address-family
advertise-all-vni
exit-address-family
line vty
1048 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
• MLAG is configured between leaf01 and leaf02, leaf03 and leaf04, and
border01 and border02
The following images shows traffic flow between tenants. The spines and
other devices are omitted for simplicity.
Traffic Flo
Floww bet
betwween server01
an
andd server05
https://docs.cumulusnetworks.com 1049
Cumulus Linux v4.2 User Documentation Network Virtualization
Traffic Flo
Floww bet
betwween server01
an
andd server05
1050 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
/etc/network/interfaces
https://docs.cumulusnetworks.com 1051
Cumulus Linux v4.2 User Documentation Network Virtualization
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
auto lo
address 10.10.10.1/32
clagd-vxlan-anycast-ip 10.0.1.1
vxlan-local-tunnelip 10.10.10.1
auto mgmt
iface mgmt
vrf-table auto
address 127.0.0.1/8
address ::1/128
auto eth0
vrf mgmt
auto bridge
iface bridge
bridge-vids 10 20
bridge-vlan-aware yes
auto vni10
iface vni10
1052 https://docs.cumulusnetworks.com
bridge-access 10
vxlan-id 10
Network Virtualization Cumulus Linux v4.2 User Documentation
/etc/frr/frr.conf
https://docs.cumulusnetworks.com 1053
Cumulus Linux v4.2 User Documentation Network Virtualization
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
...
redistribute connected
exit-address-family
exit-address-family
line vty
1054 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
• MLAG is configured between leaf01 and leaf02, leaf03 and leaf04, and
The following images shows traffic flow between tenants. The spines and
other devices are omitted for simplicity.
Traffic Flo
Floww bet
betwween server01
an
andd server0
r044
https://docs.cumulusnetworks.com 1055
Cumulus Linux v4.2 User Documentation Network Virtualization
Traffic Flo
Floww bet
betwween server01
an
andd server0
r044
Traffic Flo
Floww bet
betwween server01
an
andd server05
1056 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Traffic Flo
Floww bet
betwween server01
an
andd server06
https://docs.cumulusnetworks.com 1057
Cumulus Linux v4.2 User Documentation Network Virtualization
/etc/network/interfaces
1058 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
auto lo
address 10.10.10.1/32
clagd-vxlan-anycast-ip 10.0.1.1
vxlan-local-tunnelip 10.10.10.1
auto mgmt
iface mgmt
vrf-table auto
address 127.0.0.1/8
address ::1/128
auto eth0
vrf mgmt
auto RED
iface RED
vrf-table auto
auto BLUE
iface BLUE
vrf-table auto
https://docs.cumulusnetworks.com 1059
auto bridge
iface bridge
Cumulus Linux v4.2 User Documentation Network Virtualization
/etc/frr/frr.conf
1060 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
...
vrf RED
vni 4001
vrf BLUE
vni 4002
redistribute connected
exit-address-family
exit-address-family
Cumulus Linux v4.2 User Documentation Network Virtualization
Terminology
Term Definition
1062 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Term Definition
https://docs.cumulusnetworks.com 1063
Cumulus Linux v4.2 User Documentation Network Virtualization
Technology Mo
Morre Inf
nfoorma
mation
tion
You must provision each individual switch within an MLAG pair with a
loopback interface. clagd dynamically adds and removes this address as the
1. When the switches boot up, ifupdown2 places all VXLAN interfaces in a
1064 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
TIP
Sc
Scena
enarrio Beha
Behavio
viorr
https://docs.cumulusnetworks.com 1065
Cumulus Linux v4.2 User Documentation Network Virtualization
Sc
Scena
enarrio Beha
Behavio
viorr
When the peer link goes down All VXLAN interfaces are put
but the peer switch is up (the into a PROTO_DOWN state on
backup link is active). the secondary switch.
1066 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
• The anycast virtual IP address for VXLAN termination must be the same
on each pair of switches.
• A VXLAN interface with the same VXLAN ID must be configured and
administratively up on both switches.
PROTO_DOWN state.
With MLAG peering, both switches use an anycast IP address for VXLAN
host MAC addresses attached to the MLAG switches against one logical
VTEP, even though the switches independently encapsulate and
decapsulate layer 2 traffic originating from the host. You can configure the
anycast address under the loopback interface, as shown below.
https://docs.cumulusnetworks.com 1067
Cumulus Linux v4.2 User Documentation Network Virtualization
•
leaf01 /etc/network/interfaces snippet
auto lo
address 10.0.0.11/32
clagd-vxlan-anycast-ip 10.10.10.20
1068 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
FRRouting Configuration
You can configure the layer 3 fabric using BGP or OSPF. The following
example uses BGP unnumbered. The MLAG switch configuration for the
Layer 3 IP Addressing
https://docs.cumulusnetworks.com 1069
Cumulus Linux v4.2 User Documentation Network Virtualization
•
spine01 spine02 leaf01 leaf02 leaf03 leaf04
auto lo
address 10.0.0.21/32
auto eth0
# downlinks
auto swp1
iface swp1
auto swp2
iface swp2
auto swp3
iface swp3
auto swp4
iface swp4
auto swp29
iface swp29
auto swp30
iface swp30
1070 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Host Configuration
In this example, the servers are running Ubuntu 14.04. A layer2 bond must
be mapped from server01 and server03 to the respective switch. In Ubuntu,
you use subinterfaces.
https://docs.cumulusnetworks.com 1071
Cumulus Linux v4.2 User Documentation Network Virtualization
•
server01 server03
auto lo
auto lo
address 10.0.0.31/32
auto eth0
auto eth1
bond-master bond0
auto eth2
bond-master bond0
auto bond0
bond-slaves none
bond-miimon 100
bond-min-links 1
bond-mode 802.3ad
bond-xmit-hash-policy layer3+4
bond-lacp-rate 1
address 172.16.1.101/24
1072 https://docs.cumulusnetworks.com
auto bond0.10
Network Virtualization Cumulus Linux v4.2 User Documentation
Troubleshooting
Run the clagctl command to show MLAG behavior and any inconsistencies
cumulus@leaf01$ clagctl
primary
secondary
CLAG Interfaces
Proto-Down Reason
-----------------
bond0 bond0 1 - -
vxlan20 vxlan20 - - -
vxlan1 vxlan1 - - -
vxlan10 vxlan10 - - -
https://docs.cumulusnetworks.com 1073
Cumulus Linux v4.2 User Documentation Network Virtualization
Outp
tpuut Explana
xplanation
tion
wrong vxlan-id. When you run the clagctl command, VXLAN10 is down
because this switch is the secondary switch and the peer switch takes
control of VXLAN. The reason code is vxlan-single indicating that there is
cumulus@leaf02$ clagctl
secondary
1074 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
CLAG Interfaces
Proto-Down Reason
-----------------
bond0 bond0 1 - -
vxlan20 vxlan20 - - -
vxlan1 vxlan1 - - -
vxlan10 - - -
vxlan-single
Considerations
Do not reuse the VLAN for the peer link layer 3 subinterface for any other
interface in the system. A high VLAN ID value is recommended. For more
information on VLAN ID ranges, refer to the VLAN-aware bridge chapter.
https://docs.cumulusnetworks.com 1075
Cumulus Linux v4.2 User Documentation Network Virtualization
auto swp49
iface swp49
auto swp50
iface swp50
Cumulus VX documentation.
1076 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
VXLAN Routing
VXLAN routing, sometimes referred to as inter-VXLAN routing, provides IP
routing between VXLAN VNIs in overlay networks. The routing of traffic is
based on the inner header or the overlay tenant IP address.
This topic describes the platform and hardware considerations for VXLAN
routing. For a detailed description of different VXLAN routing models and
VXLAN routing supports full layer 3 multi-tenancy; all routing occurs in the
context of a VRF. Also, VXLAN routing is supported for dual-attached hosts
Supported Platforms
https://docs.cumulusnetworks.com 1077
Cumulus Linux v4.2 User Documentation Network Virtualization
NOTE
The Trident II+, Trident3, and Maverick ASICs provide native support for
VXLAN routing, also referred to as Routing In and Out of Tunnels (RIOT).
1078 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
• default: 15% of the underlay next hops are set apart for overlay (8k next
hops are reserved)
• mode-1: 25% of the underlay next hops are set apart for overlay
• mode-2: 50% of the underlay next hops are set apart for overlay
• mode-3: 80% of the underlay next hops are set apart for overlay
• disable: disables VXLAN routing
...
determines the
'mode-3', 'disable'}
https://docs.cumulusnetworks.com 1079
Cumulus Linux v4.2 User Documentation Network Virtualization
vxlan_routing_overlay.profile = default
The Trident II+ and Trident3 ASICs support a maximum of 48k underlay
next hops.
For any profile you specify, you can allocate a maximum of 2K (2048)
VXLAN SVI interfaces.
Trident II
The Tomahawk and Tomahawk+ ASICs do not support RIOT natively; you
must configure the switch ports for VXLAN routing to use internal loopback
(also referred to as internal hyperloop). The internal loopback facilitates the
1080 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
routing and routing rewrites of the packet MAC source, destination address,
and VLAN, then packets recirculate through the internal hyperloop for
VXLAN encapsulation and underlay forwarding on the second pass.
For routing out of a VXLAN tunnel, the first pass performs VXLAN
decapsulation, then packets recirculate through the hyperloop for routing
on the second pass.
You only need to configure the switch ports that must be in internal
loopback mode based on the amount of bandwidth required. No additional
configuration is necessary.
To configure one or more switch ports for loopback mode, edit the /etc/
example below, swp8 and swp9 are configured for loopback mode:
...
7=4x10G
8=loopback
9=loopback
10=100G
...
https://docs.cumulusnetworks.com 1081
Cumulus Linux v4.2 User Documentation Network Virtualization
NOTE
For VXLAN routing on a switch with the Tomahawk+ ASIC, if you use 25G
ports as the internal loopback, you must configure all four ports in the same
port group.
Spectrum ASICs.
1082 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
tunnel all
tunnel all
as LACP:
https://docs.cumulusnetworks.com 1083
Cumulus Linux v4.2 User Documentation Network Virtualization
tunnel lacp
tunnel lacp
NOTE
You must enable layer 2 protocol tunneling on the VXLAN link also
so that the packets get bridged and correctly forwarded.
network/interfaces file:
auto swp1
iface swp1
bridge-access 10
bridge-l2protocol-tunnel lacp
auto swp2
1084 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
iface swp2
auto swp3
iface swp3
auto swp4
iface swp4
...
interface vni13
bridge-access 13
bridge-l2protocol-tunnel all
bridge-learning off
mstpctl-bpduguard yes
mstpctl-portbpdufilter yes
vxlan-id 13
vxlan-local-tunnelip 10.0.0.4
LLDP Example
https://docs.cumulusnetworks.com 1085
Cumulus Linux v4.2 User Documentation Network Virtualization
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Chassis:
SysName: H1
MgmtIP: 10.0.2.207
MgmtIP: fe80::e61d:2dff:fef7:d552
Capability: Router, on
Port:
PortDesc: swp14
TTL: 120
...
1086 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
LACP Example
H2 bond0:
802.3ad: info
Min links: 1
Aggregator ID: 1
Number of ports: 2
https://docs.cumulusnetworks.com 1087
Cumulus Linux v4.2 User Documentation Network Virtualization
...
...
...
Pseudo-wire Example
In this example, there are only 2 VTEPs in the VXLAN. VTEP1 and VTEP2
point to each other as the only remote VTEP.
1088 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
The VTEP host-facing port is in access mode, and the PVID is mapped to
the VNI.
Considerations
Use caution when enabling bridge layer 2 protocol tunneling. Keep the
following issues in mind:
https://docs.cumulusnetworks.com 1089
Cumulus Linux v4.2 User Documentation Network Virtualization
1090 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
options like Midokura MidoNet or VMware NSX and even new standards like
EVPN try to address these complexities, however, they also have their own
complexities.
VXLAN standards. Because you simply map which VTEPs are in a particular
VNI, you can avoid the tedious process of defining connections to every
VLAN on every other VTEP on every other rack.
Requirements
Broadcom Tomahawk, Trident II+, Trident II, Trident3, and Maverick ASICs.
https://docs.cumulusnetworks.com 1091
Cumulus Linux v4.2 User Documentation Network Virtualization
by default).
• The VXLAN link and local interfaces are added to the bridge to create the
association between the port, VLAN and VXLAN instance.
• Each traditional mode bridge on the switch has only one VXLAN
interface. Cumulus Linux does not support more than one VXLAN ID per
traditional bridge.
NOTE
Example Topology
1092 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
IP address.
• Enable bridge learning on the VNI.
• Create the tunnels by configuring the remote IP address to each other
For example, to configure static VXLAN tunnels on the four leafs in the
topology shown above:
https://docs.cumulusnetworks.com 1093
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands Linux Commands
32
10.0.0.11
10.0.0.12
10.0.0.13
10.0.0.14
leaf
leaf02
02
32
1094 cumulus@leaf02:~$https://docs.cumulusnetworks.com
net add vxlan vni-10 vxlan local-tunnelip
10.0.0.12
Network Virtualization Cumulus Linux v4.2 User Documentation
After you configure all the leaf switches, run the following command to
check for replication entries:
NOTE
policy.d/bridge.json
"bridge": {
https://docs.cumulusnetworks.com 1095
Cumulus Linux v4.2 User Documentation Network Virtualization
"module_globals": {
"bridge_vxlan_port_learning" : "on",
"bridge-vxlan-arp-nd-suppress" : "off"
After you create the file, run ifreload -a to load the new
configuration.
the CPU so that such packets only flood the ASIC, which reduces CPU
usage.
1096 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
ll_mcast_punt_disable
The configuration above takes effect immediately, but does not persist if
you reboot the switch.
...
hal.bcm.ll_mcast_punt_disable = TRUE
...
https://docs.cumulusnetworks.com 1097
Cumulus Linux v4.2 User Documentation Network Virtualization
VXLAN Scale
On Broadcom Trident II and Tomahawk switches running Cumulus Linux,
there is a limit to the number of VXLANs you can configure simultaneously.
The limit most often given is 2000 VXLANs, but you might want to get
more specific and know exactly the limit for your specific design.
NOTE
The limit is a physical to virtual mapping where a switch can hold 15000
mappings in hardware before you encounter hash collisions. There is also
an upper limit of around 3000 VLANs you can configure before you hit the
reserved range (Cumulus Linux uses 3600-3999 by default). Cumulus Linux
typically uses a soft number because the math is unique to each
1098 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
The equation for the number of configurable VXLANs looks like this:
48 * X = 14943
X = 311 VXLANs
Similarly, you can apply this logic to a 32 port 100G switch where 16 ports
are broken up to 4 * 25 Gbps ports, for a total of 64 * 25 Gbps ports:
64 * X = 14917
X = 233 VXLANs
However, not all ports are trunks for all VXLANs (or at least not all the
time). It is much more common for subsets of ports to be used for different
VXLANs. For example, a 10G (48 * 10G + 6 * 40G uplinks) can have the
following configuration:
https://docs.cumulusnetworks.com 1099
Cumulus Linux v4.2 User Documentation Network Virtualization
Ports Tru
runk
nkss
swp31-48 X VXLAN/VLANs
14943
18 * X = 11943
1100 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Ethernet.
between the underlay and overlay and are based on RFC 6040, which
describes how to construct the IP header of an ECN field on both ingress to
and egress from an IP-in-IP tunnel.
NOTE
You can set the following DSCP operations by editing the /etc/cumulus/
switchd.conf file.
Option De
Desscription
https://docs.cumulusnetworks.com 1101
Cumulus Linux v4.2 User Documentation Network Virtualization
Option De
Desscription
vxlan.def_encap_dscp_value If the
vxlan.def_encap_dscp_action
option is set, you must specify a
value.
1102 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
WARNING
The following example shows that the VXLAN outer DSCP action during
encapsulation is set with a value of 16.
...
vxlan.def_encap_dscp_action = set
'set'
vxlan.def_encap_dscp_value = 16
https://docs.cumulusnetworks.com 1103
Cumulus Linux v4.2 User Documentation Network Virtualization
#vxlan.def_decap_dscp_action = derive
...
You can also set the DSCP operations from the command line. Use the echo
def_encap_dscp_action
To change the VXLAN outer DSCP action during encapsulation to set with
a value of 32:
def_encap_dscp_value
1104 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
def_encap_dscp_action
Considerations
Cumulus Linux supports only the default global settings. Per-VXLAN and
per-tunnel granularity are not supported.
https://docs.cumulusnetworks.com 1105
Cumulus Linux v4.2 User Documentation Network Virtualization
QinQ with VXLAN is typically used by a service provider who offers multi-
tenant layer 2 connectivity between different customer data centers
(private clouds) and also needs to connect those data centers to public
cloud providers. Public clouds often has a mandatory QinQ handoff
interface, where the outer tag is for the customer and the inner tag is for
the service.
• Single tag translation, where you map a customer to a VNI and preserve
the service as an inner VLAN inside a VXLAN packet.
• Double tag translation, where you map a customer and service to a VNI.
1106 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Single tag translation adheres to the traditional QinQ service model. The
customer-facing interface is a QinQ access port with the outer S-tag being
the PVID, representing the customer. The S-tag is translated to a VXLAN
VNI. The inner C-tag, which represents the service, is transparent to the
provider. The public cloud handoff interface is a QinQ trunk where packets
on the wire carry both the S-tag and the C-tag.
Single tag translation works with both VLAN-aware bridge mode and
You configure two switches: one at the service provider edge that faces the
customer (the switch on the left above), and one on the public cloud
https://docs.cumulusnetworks.com 1107
Cumulus Linux v4.2 User Documentation Network Virtualization
NOTE
1108 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
tunnelip 10.0.0.1
tunnelip 10.0.0.1
802.1ad
swp3,vni-1000,vni-3000
• The customer interface is the QinQ access port, the PVID is the S-tag
(customer) and is mapped to a VNI.
• The service VLAN tags (C-tags) are preserved during VXLAN
encapsulation.
https://docs.cumulusnetworks.com 1109
Cumulus Linux v4.2 User Documentation Network Virtualization
•
NCLU Commands Linux Commands
tunnelip 10.0.0.1
tunnelip 10.0.0.1
swp3,swp4,vni-1000,vni-3000
802.1ad
1110 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
NOTE
The configuration in Cumulus Linux uses the outer tag for the
swp1.100.10: the outer tag is VLAN 100, which represents the customer, and
the inner tag is VLAN 10, which represents the service.
The outer tag or TPID (tagged protocol identifier) needs the vlan_protocol
below.
https://docs.cumulusnetworks.com 1111
Cumulus Linux v4.2 User Documentation Network Virtualization
NOTE
An example configuration:
To configure the switch for double tag translation using the above example,
edit the /etc/network/interfaces file in a text editor and add the following:
auto swp3.100
iface swp3.100
vlan_protocol 802.1ad
auto swp3.100.10
1112 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
iface swp3.100.10
mstpctl-portbpdufilter yes
mstpctl-bpduguard yes
auto vni1000
iface vni1000
vxlan-local-tunnelip 10.0.0.1
mstpctl-portbpdufilter yes
mstpctl-bpduguard yes
vxlan-id 1000
auto custA-10-azr
iface custA-10-azr
bridge-vlan-aware no
interfaces
swp3.100.10
https://docs.cumulusnetworks.com 1113
Cumulus Linux v4.2 User Documentation Network Virtualization
vni1000
swp3.200.20
vni3000
auto swp5.100
iface swp5.100
vlan-protocol 802.1ad
auto swp5.100.10
iface swp5.100.10
mstpctl-portbpdufilter yes
mstpctl-bpduguard yes
auto br10
iface br10
bridge-vlan-aware no
1114 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Considerations
Feature Limitations
• Mixing 802.1Q and 802.1ad subinterfaces on the same switch port is not
supported.
https://docs.cumulusnetworks.com 1115
Cumulus Linux v4.2 User Documentation Network Virtualization
◦ All bridge ports are access ports, except for the MLAG peerlink.
◦ All bridge ports are VLAN trunks. This means the switch terminating
the cloud provider connections (double-tagged) cannot have local
The Linux kernel limits interface names to 15 characters in length. For QinQ
interfaces, you can reach this limit easily.
To work around this issue, create two VLANs as nested VLAN raw devices,
one for the outer tag and one for the inner tag. For example, you cannot
...
auto vlan1001
iface vlan1001
vlan-id 1001
vlan-raw-device swp50s0
vlan-protocol 802.1ad
auto vlan1001-101
iface vlan1001-101
1116 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
vlan-id 101
vlan-raw-device vlan1001
auto bridge101
iface bridge101
...
https://docs.cumulusnetworks.com 1117
Cumulus Linux v4.2 User Documentation Network Virtualization
Virtualization Integrations
Cumulus Linux integrates with a number of VXLAN controller-based
virtualization solutions. You can integrate hardware VTEPs with Midokura-
MidoNet and OpenStack, and with VMware NSX.
1118 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 1119
Cumulus Linux v4.2 User Documentation Network Virtualization
Get Started
Make sure you have a layer 2 gateway; a Tomahawk, Trident II+ or Trident II
switch running Cumulus Linux. Cumulus Linux includes OVSDB server
(ovsdb-server) and VTEPd (ovs-vtepd), which support VLAN-aware
bridges.
For more information about MidoNet, see the MidoNet Operations Guide,
version 1.8 or later.
NOTE
Before you start to configure the MidoNet tunnel zones and VTEP binding,
and connect virtual ports to the VXLAN, you need to enable and start the
openvswitch-vtep service, and configure the MidoNet integration on the
switch. This creates the VTEP gateway and initializes the OVS database
server.
1120 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
command:
NOTE
service . Now, you just have to enable and start the openvswitch-
vtep service.
• The switch name (the name of the switch that is the VTEP gateway)
https://docs.cumulusnetworks.com 1121
Cumulus Linux v4.2 User Documentation Network Virtualization
10.50.20.21 --no_encryption
Executed:
().
Executed:
().
Executed:
().
Executed:
restart a service
Starting ovsdb-server.
Starting ovs-vtepd.).
NOTE
1122 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
If you do not use the configuration script, you must initialize the OVS
database instance manually and create the VTEP.
https://docs.cumulusnetworks.com 1123
Cumulus Linux v4.2 User Documentation Network Virtualization
<switch_name> tunnel_ips=<tunnel_ip>
<switch_name> management_ips=<management_ip>
vtep.service
1124 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
agent is the networking component that manages the VXLAN, while the
You can configure the MidoNet VTEP and port bindings from the MidoNet
1. Click Tunnel Z
Zone
oness in the menu on the left side.
2. Click Add
dd.
4. Click Sa
Sav
ve.
https://docs.cumulusnetworks.com 1125
Cumulus Linux v4.2 User Documentation Network Virtualization
After you create the tunnel zone, click the name of the tunnel zone to view
the hosts table.
The tunnel zone is a construct used to define the VXLAN source address
used for the tunnel. The address of this host is used for the source of the
VXLAN encapsulation and traffic transits into the routing domain from this
point. Therefore, the host must have layer 3 reachability to the Cumulus
Linux switch tunnel IP.
1. Click Add
dd.
4. Click Sa
Sav
ve.
1126 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
2. Click Add
dd.
3. Fill out the fields using the same information you used earlier on the
switch for the bootstrap procedure:
https://docs.cumulusnetworks.com 1127
Cumulus Linux v4.2 User Documentation Network Virtualization
• Management P
Poort Nu
Numbe
mberr is the PTCP port you configured in the ovs-
• Tunnel Z
Zone
one is the name of the zone you created in the previous
procedure.
4. Click Sa
Sav
ve.
The new VTEP appears in the list below. MidoNet then initiates a
connection between the OpenStack Controller and the Cumulus Linux
switch. If the OVS client successfully connects to the OVSDB server, the
VTEP entry displays the switch name and VXLAN tunnel IP address, which
you specified during the bootstrapping process.
1128 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
1. Click Add
dd.
2. In the Port Name list, select the port on the Cumulus Linux switch that
4. In the Bridge list, select the MidoNet bridge that the instances (VMs) are
using in OpenStack.
5. Click Sa
Sav
ve.
https://docs.cumulusnetworks.com 1129
Cumulus Linux v4.2 User Documentation Network Virtualization
You see the port binding displayed in the binding table under the VTEP.
To get started with the MidoNet CLI, you can access the CLI prompt on the
1130 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
OpenStack Controller:
root@os-controller:~# midonet-cli
midonet>
From the MidoNet CLI, the commands explained in this section perform the
same operations depicted in the previous section with the MidoNet
Manager GUI.
tzone1
2. The tunnel zone is a construct used to define the VXLAN source address
used for the tunnel. The address of this host is used for the source of the
VXLAN encapsulation and traffic transits into the routing domain from
this point. Therefore, the host must have layer 3 reachability to the
Cumulus Linux switch tunnel IP.
https://docs.cumulusnetworks.com 1131
Cumulus Linux v4.2 User Documentation Network Virtualization
1132 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
10.111.0.182
CONNECTED
https://docs.cumulusnetworks.com 1133
Cumulus Linux v4.2 User Documentation Network Virtualization
NOTE
4. The VTEP binding uses the information provided to MidoNet from the
OVSDB server, providing a list of ports that the hardware VTEP can use
for layer 2 attachment. This binding virtually connects the physical
interface to the overlay switch, and joins it to the Neutron bridged
network.
First, get the UUID of the Neutron network behind the MidoNet bridge:
6c9826da-6655-4fe3-a826-4dcba6477d2d
Next, create the VTEP binding using the UUID and the switch port being
bound to the VTEP on the remote end. If there is no VLAN ID, set vlan to
0:
1134 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
vlan 0
network-id 6c9826da-6655-4fe3-a826-4dcba6477d2d
At this point, the VTEP is connected and the layer 2 overlay is operational.
From the openstack instance (VM), you can ping a physical server
Troubleshooting
As with any complex system, there is a control plane and data plane.
In this solution, the control plane consists of the connection between the
OpenStack Controller and each Cumulus Linux switch running the ovsdb-
First, it is important that the OVSDB server and ovs-vtep daemon are
https://docs.cumulusnetworks.com 1135
Cumulus Linux v4.2 User Documentation Network Virtualization
From the OpenStack Controller host, verify that it can connect to the
Trying 10.50.20.22...
Connected to 10.50.20.22.
<Ctrl+c>
If the connection fails, verify IP reachability from the host to the switch. If
that succeeds, it is likely that the bootstrap process did not set up port
6632. Redo the bootstrapping procedures above.
1136 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
After creating the VTEP in MidoNet and adding an interface binding, you
vxln10006
https://docs.cumulusnetworks.com 1137
Cumulus Linux v4.2 User Documentation Network Virtualization
bridge_slave
Next, look at the bridging table for the VTEP and the forwarding entries.
The bound interface and the VTEP are listed along with the MAC addresses
of those interfaces. When the hosts attached to the bound port send data,
those MACs are learned and entered into the bridging table, as well as the
OVSDB.
timer
self permanent
permanent
1138 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
permanent
Datapath Troubleshooting
If you have verified the control plane is correct, and you still cannot get
data between the OpenStack instances and the physical nodes on the
switch, there might be something wrong with the data plane. The data
plane consists of the actual VXLAN encapsulated path, between one of the
OpenStack nodes running the midolman service. This is typically the
compute nodes, but can include the MidoNet gateway nodes. If the
OpenStack instances can ping the tenant router address but cannot ping
the physical device connected to the switch (or vice versa), then something
Verify IP Reachability
OpenStack host can ping the tunnel IP. If this does not work, check the
routing design and fix the layer 3 problem first.
https://docs.cumulusnetworks.com 1139
Cumulus Linux v4.2 User Documentation Network Virtualization
If the instance (VM) cannot ping the physical server or the reply is not
returning, look at the packets on the OpenStack node. Initiate a ping from
the OpenStack instance, then use tcpdump to see the VXLAN data. This
length 148: (tos 0x0, ttl 255, id 7583, offset 0, flags [none],
length 98: (tos 0x0, ttl 64, id 64058, offset 0, flags [DF],
seq 0, length 64
1140 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
E..........2.o..
.o...`...r......
.'..d..2.A..>...
..E..T.:@.@._&.o
fh.of.....>...B3
}...............
................
................
length 148: (tos 0x0, ttl 62, id 2689, offset 0, flags [none],
length 98: (tos 0x0, ttl 255, id 64058, offset 0, flags [DF],
https://docs.cumulusnetworks.com 1141
Cumulus Linux v4.2 User Documentation Network Virtualization
0, length 64
E.......>.[Q.o..
.o.......r......
.'....>...d..2.A
..E..T.:@....%.o
f..ofh....>...B3
}...............
................
................
These commands show you the information installed in the OVSDB. This
database is structured using the physical switch ID, with one or more
1142 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
logical switch IDs associated with it. The bootstrap process creates the
physical switch and MidoNet creates the logical switch after the control
session is established.
sw12
mn-6c9826da-6655-4fe3-a826-4dcba6477d2d
These commands show the MAC addresses learned from the connected
port bound to the logical switch or the MAC addresses advertised from
MidoNet. The unknown-dst entries are installed to satisfy the ethernet
flooding of unknown unicast and are important for learning.
mn-6c9826da-6655-4fe3-a826-4dcba6477d2d
https://docs.cumulusnetworks.com 1143
Cumulus Linux v4.2 User Documentation Network Virtualization
ucast-mac-local
mcast-mac-local
mn-6c9826da-6655-4fe3-a826-4dcba6477d2d
ucast-mac-remote
mcast-mac-remote
The ovsdb-client dump command is large but shows all of the information
and tables used in communication between the OVS client and server.
1144 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Get Started
Before you integrate VXLANs with NSX-V, make sure you have a layer 2
gateway; a switch with Broadcom Tomahawk, Trident II+, Trident II, or
https://docs.cumulusnetworks.com 1145
Cumulus Linux v4.2 User Documentation Network Virtualization
• Configure the transport and logical layers from the NSX Manager.
• Verify the VXLAN configuration.
NOTE
to fail. To work around this issue, run the net add bgp redistribute
Before you start configuring the gateway service, and logical switches and
ports that comprise the VXLAN, you need to enable and start the
openvswitch-vtep service, and configure the NSX integration on the switch,
1146 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
command:
NOTE
service . Now, you just have to enable and start the openvswitch-
vtep service .
switch automatically.
https://docs.cumulusnetworks.com 1147
Cumulus Linux v4.2 User Documentation Network Virtualization
Executed:
().
Executed:
sign certificate
fingerprint a4cda030fe5e458c0d7ba44e22f52650f01bcd75).
Executed:
().
Executed:
().
1148 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Executed:
().
Executed:
().
Executed:
restart a service
().
configuration process:
vtep.service
NOTE
https://docs.cumulusnetworks.com 1149
Cumulus Linux v4.2 User Documentation Network Virtualization
If you do not want to use the configuration script to configure the NSX-V
integration on the switch automatically, you can configure the integration
In Cumulus Linux, generate a certificate that the NSX controller uses for
authentication.
Creating controllerca...
Creating switchca...
1150 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
fingerprint b587c9fe36f09fb371750ab50c430485d33a174a
cumulus@switch:~$ ls -l
total 12
# Start ovsdb-server.
https://docs.cumulusnetworks.com 1151
Cumulus Linux v4.2 User Documentation Network Virtualization
If files have been moved or regenerated, restart the OVSDB server and
VTEPd:
vtep.service
3. Define the NSX Controller Cluster IP address in OVSDB. This causes the
ssl:192.168.100.17:6632
4. Define the local IP address on the VTEP for VXLAN tunnel termination.
First, find the physical switch name as recorded in OVSDB:
vtep7
1152 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Then set the tunnel source IP address of the VTEP. This is the datapath
address of the VTEP, which is typically an address on a loopback
interface on the switch that is reachable from the underlying layer 3
network:
tunnel_ips=172.16.20.157
After you generate the certificate, keep the terminal session active; you
need to paste the certificate into NSX Manager when you configure the
VTEP gateway.
# Start ovs-vtepd
https://docs.cumulusnetworks.com 1153
Cumulus Linux v4.2 User Documentation Network Virtualization
vtep.service
Sec
Secur
urity
ity icon, Se
Serrvic
vice
e Definition
Definitionss category, then the Hardw
rdwaare De
Devic
vice
es
tab. Under Hardw
rdwaare De
Devic
vice
es, click +. The Create Add Hardware Devices
window opens.
1154 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
3. Enable the BFD service to the service nodes. Select the Enable BFD
check box.
4. From the terminal session connected to the switch where you generated
the certificate, copy the certificate and paste it into the Certifica
tificatte text
field. Copy only the bottom portion, including the BEGIN CERTIFICATE and
END CERTIFICATE lines. For example, copy all the highlighted text in the
cumulus@switch:~$ cd /var/lib/openvswitch
cumulus@switch:/var/lib/openvswitch$ ls
https://docs.cumulusnetworks.com 1155
Cumulus Linux v4.2 User Documentation Network Virtualization
"Manager"
Manager table
_uuid : 2693ea2e-306-4c23-ac03-934ala304077
inactivity_probe : []
is_connected : true
max_backoff : []
1156 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
other_config : {}
target : "ssl:192.168.110.110:6640"
After you finish configuring NSX-V integration on the switch, configure the
Installa
tallation
tion category, then click the Segment ID tab.
2. Click Ed
Edit
it and add the segment IDs (VNIDs) to be used. Here VNIs
5000-5999 are configured.
https://docs.cumulusnetworks.com 1157
Cumulus Linux v4.2 User Documentation Network Virtualization
5. Select Unica
Unicasst to choose the NSX-V Controller Cluster to handle the
1158 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
To complete the integration with NSX-V, you need to configure the logical
layer, which requires defining a logical switch (the VXLAN instance) and all
the logical ports needed.
https://docs.cumulusnetworks.com 1159
Cumulus Linux v4.2 User Documentation Network Virtualization
3. In the Tran
ansspo
porrt Z
Zone
one field, add the transport zone that you created
earlier.
4. In the Replica
eplication
tion Mo
Modde field, select Unica
Unicasst for replication by the service
node. Then check the Enable IP Di
Disscovery check box.
5. Click OK
OK.
1. Select the Se
Serrvic
vice
e Definition
Definitionss category, then click the Hardw
rdwaare De
Devic
vice
es
1160 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 1161
Cumulus Linux v4.2 User Documentation Network Virtualization
To define the logical switch ports (you can define a VLAN-to-VNI binding
for each switch port associated with a particular logical switch):
1. In NSX Manager, add a new logical switch port. Click the Logical
Swit
itche
chess category. Under Action
ctionss, click Manage Hardw
rdwaare Bin
Bindding
ingss. The
1162 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
4. Select the switch port and the corresponding VLAN binding for logical
switch 5000. This creates the logical switch port and also maps VLAN 16
of switch port swp2 to VNI 5000.
https://docs.cumulusnetworks.com 1163
Cumulus Linux v4.2 User Documentation Network Virtualization
default
promiscuity 1
1164 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
ageing 300
To check that the active OVSDB server is connected to the NSX controller,
run the ovsdb-client dump Manager command:
https://docs.cumulusnetworks.com 1165
Cumulus Linux v4.2 User Documentation Network Virtualization
Manager table
_uuid inactivity_probe
status target
------------------------------------ ----------------
-------------------------------------- -------------------
e700ad21-8fd8-4f09-96dc-fa7cc6e498d8 30000
state=ACTIVE} "ssl:54.0.0.2:6632"
1166 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
server infrastructures.
Get Started
Before you integrate VXLANs with NSX-MH, make sure you have a layer 2
https://docs.cumulusnetworks.com 1167
Cumulus Linux v4.2 User Documentation Network Virtualization
NOTE
Before you start configuring the gateway service, logical switches, and
ports that comprise the VXLAN, you need to enable and start the
openvswitch-vtep service, and configure the NSX integration on the switch,
1168 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
command:
NOTE
service . Now, you just have to enable and start the openvswitch-
vtep service.
switch automatically.
https://docs.cumulusnetworks.com 1169
Cumulus Linux v4.2 User Documentation Network Virtualization
Executed:
().
Executed:
sign certificate
fingerprint a4cda030fe5e458c0d7ba44e22f52650f01bcd75).
Executed:
().
Executed:
().
1170 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Executed:
().
Executed:
().
Executed:
restart a service
().
configuration process:
vtep.service
NOTE
https://docs.cumulusnetworks.com 1171
Cumulus Linux v4.2 User Documentation Network Virtualization
If you do not want to use the configuration script to configure the NSX-MH
integration on the switch automatically, you can configure the integration
In Cumulus Linux, generate a certificate that the NSX controller uses for
authentication.
Creating controllerca...
Creating switchca...
1172 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
fingerprint
b587c9fe36f09fb371750ab50c430485d33a174a
cumulus@switch:~$ ls -l
total 12
# Start ovsdb-server.
https://docs.cumulusnetworks.com 1173
Cumulus Linux v4.2 User Documentation Network Virtualization
If files have been moved or regenerated, restart the OVSDB server and
VTEPd:
vtep.service
3. Define the NSX controller cluster IP address in OVSDB. This causes the
ssl:192.168.100.17:6632
4. Define the local IP address on the VTEP for VXLAN tunnel termination.
First, find the physical switch name as recorded in OVSDB:
vtep7
1174 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Then set the tunnel source IP address of the VTEP. This is the datapath
address of the VTEP, which is typically an address on a loopback
interface on the switch that is reachable from the underlying layer 3
network:
tunnel_ips=172.16.20.157
After you generate the certificate, keep the terminal session active; you
need to paste the certificate into NSX Manager when you configure the
VTEP gateway.
# Start ovs-vtepd
https://docs.cumulusnetworks.com 1175
Cumulus Linux v4.2 User Documentation Network Virtualization
vtep.service
opens.
1176 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
3. In the Di
Disspla
play
y Name field, provide a name for the gateway, then click
Next
xt.
5. From the terminal session connected to the switch where you generated
the certificate, copy the certificate and paste it into the Sec
Secur
urity
ity
Certifica
tificatte text field. Copy only the bottom portion, including the BEGIN
https://docs.cumulusnetworks.com 1177
Cumulus Linux v4.2 User Documentation Network Virtualization
CERTIFICATE and END CERTIFICATE lines. For example, copy all the
1178 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 1179
Cumulus Linux v4.2 User Documentation Network Virtualization
"Manager"
Manager table
_uuid : 505f32af-9acb-4182-a315-022e405aa479
inactivity_probe : 30000
is_connected : true
max_backoff : []
other_config : {}
status : {sec_since_connect="18223",
sec_since_disconnect="18225", state=ACTIVE}
target : "ssl:192.168.100.17:6632"
Component
omponentss tab, then the Se
Serrvic
vice
es category. Under Gateway Se
Serrvic
vice
e,
click Add
dd. The Create Gateway Service wizard opens.
1180 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
3. Provide a Di
Disspla
play
y Name for the service to represent the VTEP in NSX.
4. Click Add G
Gaateway to associate the service with the gateway you
created earlier.
5. In the Tran
ansspo
porrt Node field, choose the name of the gateway you
created earlier.
6. In the Port ID field, choose the physical port on the gateway (for
example, swp10) that will connect to a logical layer 2 segment and carry
data traffic.
https://docs.cumulusnetworks.com 1181
Cumulus Linux v4.2 User Documentation Network Virtualization
To complete the integration with NSX, you need to configure the logical
layer, which requires defining a logical switch (the VXLAN instance) and all
the logical ports needed.
Component
omponentss tab, then the Logical La
Lay
yer category. Under Logical S
Swwit
itch
ch,
click Add
dd. The Create Logical Switch wizard opens.
1182 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
2. In the Di
Disspla
play
y Name field, enter a name for the logical switch, then click
Next
xt.
3. Under Replica
eplication
tion Mo
Modde, select Se
Serrvic
vice
e Nodes, then click Next
xt.
4. Specify the transport zone bindings for the logical switch. Click Add
Bin
Bindding
ing. The Create Transport Zone Binding dialog opens.
5. In the Tran
ansspo
porrt Type list, select VXLAN, then click OK to add the
Type
https://docs.cumulusnetworks.com 1183
Cumulus Linux v4.2 User Documentation Network Virtualization
6. In the VNI field, assign the switch a VNI ID, then click OK
OK.
NOTE
Do not use 0 or 16777215 as the VNI ID; these are reserved values
7. Click Sa
Sav
ve to save the logical switch configuration.
1184 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Logical switch ports can be virtual machine VIF interfaces from a registered
OVS or a VTEP gateway service instance on this switch, as defined above in
the Configuring the Transport Layer. You can define a VLAN binding for
each VTEP gateway service associated with the particular logical switch.
1. In NSX Manager, add a new logical switch port. Click the Net
etwwork
Component
omponentss tab, then the Logical La
Lay
yer category. Under Logical S
Swwit
itch
ch
Port, click Add
dd. The Create Logical Switch Port wizard opens.
https://docs.cumulusnetworks.com 1185
Cumulus Linux v4.2 User Documentation Network Virtualization
2. In the Logical S
Swwit
itch
ch UU
UUIID list, select the logical switch you created
above, then click Crea
eatte.
1186 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
3. In the Di
Disspla
play
y Name field, provide a name for the port that indicates it is
5. In the VT
VTEEP L
L22G
Gaateway Se
Serrvic
vice
e UU
UUIID list, choose the name of the
6. In the VLA
VLANN list, you can choose a VLAN if you want to connect only
7. Click Sa
Sav
ve to save the logical switch port. Connectivity is established.
Repeat this procedure for each logical switch port you want to define.
https://docs.cumulusnetworks.com 1187
Cumulus Linux v4.2 User Documentation Network Virtualization
1188 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
or
"Manager"
Manager table
_uuid : 505f32af-9acb-4182-a315-022e405aa479
inactivity_probe : 30000
https://docs.cumulusnetworks.com 1189
Cumulus Linux v4.2 User Documentation Network Virtualization
is_connected : true
max_backoff : []
other_config : {}
status : {sec_since_connect="18223",
sec_since_disconnect="18225", state=ACTIVE}
target : "ssl:192.168.100.17:6632"
1190 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
WARNING
standalonemode and OVSDB server high availability mode (where the data
plane is running in active-active mode). For information about VMware NSX
in standalone mode and for a description of the components that work
NOTE
With OVSDB server high availability mode, you use two peer Cumulus Linux
switches in an MLAG configuration. Both the MLAG primary and MLAG
https://docs.cumulusnetworks.com 1191
Cumulus Linux v4.2 User Documentation Network Virtualization
secondary switch contain OVSDB server and VTEPd. The OVSDB servers
synchronize their databases with each other and always maintain the
replicated state unless failover occurs; for example, the peer link bond
breaks, a switch fails, or the OVSDB server goes down. Both of the VTEPd
components talk to the active OVSDB server to read the configuration and
then push the configuration to the kernel. Only the active OVSDB server
communicates with the NSX controller, unless failover occurs and then the
standby OVSDB server takes over automatically. Although the Cumulus
switches are configured as an MLAG pair, the NSX controller sees them as a
single system (the NSX controller is not aware that multiple switches exist).
Example 1: The OVSDB server on the MLAG primary switch is active. The
OVSDB server on the MLAG secondary switch is the hot standby. Only the
active OVSDB server communicates with the NSX controller.
switch becomes the active OVSDB server and communicates with the NSX
controller.
1192 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
When the OVSDB server on the MLAG primary switch starts responding
again, it resynchronizes its database, becomes the active OVSDB server,
and connects to the controller. At the same time, the OVSDB server on the
MLAG secondary switch stops communicating with the NSX controller,
synchronizes with the now active OVSDB server, and takes the standby role
again.
NOTE
upgrading.
Getting Started
Before you configure OVSDB server high availability, make sure you have
two sw
swit
itche
chess ru
running
nning C
Cuumulus Lin
Linuux in an MLA
MLAG
Gcconfig
onfigur
ura
ation
tion. Cumulus
Linux includes OVSDB server (ovsdb-server) and VTEPd (ovs-vtepd), which
https://docs.cumulusnetworks.com 1193
Cumulus Linux v4.2 User Documentation Network Virtualization
auto peerlink-3
iface peerlink-3
bond-mode 802.3ad
bond-min-links 1
bond-lacp-rate 1
mtu 9202
alias Local Node/s leaf01 and Ports swp5 swp6 <==> Remote
auto peerlink-3.4094
iface peerlink-3.4094
address 10.0.0.24/32
1194 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
address 169.254.0.9/29
mtu 9202
clagd-priority 4096
clagd-sys-mac 44:38:39:ff:ff:02
clagd-peer-ip 169.254.0.10
4094.accept_local=1
clagd-backup-ip 10.0.0.25
auto hostbond4
iface hostbond4
bond-slaves swp7
bond-mode 802.3ad
bond-min-links 1
bond-lacp-rate 1
mtu 9152
alias Local Node/s leaf01 and Ports swp7 <==> Remote Node/
clag-id 1
auto hostbond5
iface hostbond5
https://docs.cumulusnetworks.com 1195
Cumulus Linux v4.2 User Documentation Network Virtualization
bond-slaves swp8
bond-mode 802.3ad
bond-min-links 1
bond-lacp-rate 1
mtu 9152
alias Local Node/s leaf01 and Ports swp8 <==> Remote Node/
clag-id 2
• Determine on which switch you want to run the active OVSDB server (the
NOTE
1196 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Before you start configuring the gateway service, the logical switches, and
ports that comprise the VXLAN, you need to enable and start the
openvswitch-vtep service, then run the configuration script on both the
MLA
MLAG
Gpprrima
imarry an
andd MLA
MLAG
G sec
econ
onddary sw
swit
itche
chess. Follow these steps:
1. On the switch where you want to run the active OVSDB server, run the
vtep-bootstrap command with these options:
• db_ha active specifies that the OVSDB server on this switch is the
active server.
https://docs.cumulusnetworks.com 1197
Cumulus Linux v4.2 User Documentation Network Virtualization
controller.
172.16.20.157 192.168.100.157
Executed:
().
1198 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
Executed:
sign certificate
fingerprint
a4cda030fe5e458c0d7ba44e22f52650f01bcd75).
Executed:
().
Executed:
().
Executed:
().
Executed:
().
Executed:
restart a service
().
2. On the switch where you want to run the standby OVSDB server, run
vtep-bootstrap command with the same options as above but replace
https://docs.cumulusnetworks.com 1199
Cumulus Linux v4.2 User Documentation Network Virtualization
192.168.100.157
Executed:
().
Executed:
sign certificate
fingerprint
a4cda030fe5e458c0d7ba44e22f52650f01bcd75).
Executed:
().
Executed:
().
Executed:
().
Executed:
1200 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
().
Executed:
restart a service
().
3. From the switch running the active OVSDB server, copy the certificate
files (hostname-cert.pem and hostname-privkey.pem) to the same location
NOTE
The certificate and key pairs for authenticating with the NSX
4. On the switch running the active OVSDB server and then the switch
running the standby OVSDB server, run the following commands in the
order shown to complete the configuration process:
https://docs.cumulusnetworks.com 1201
Cumulus Linux v4.2 User Documentation Network Virtualization
vtep.service
After you finish configuring the NSX integration on both the MLAG primary
and MLAG secondary switch, you need to configure the transport and
logical layers from the NSX Manager. Refer to Integrating Hardware VTEPs
with VMware NSX-MH or Integrating Hardware VTEPs with VMware NSX-V.
Troubleshooting
After you configure OVSDB server high availability, you can check that
configuration is successful.
To check the sync status on the active OVSDB server, run the following
command:
1202 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
state: active
To check the sync status on the standby OVSDB server, run the following
command:
state: backup
replicating: tcp:169.254.0.9:9999
database: hardware_vtep
To check that the active OVSDB server is connected to the NSX controller,
run the ovsdb-client dump Manager command:
Manager table
_uuid inactivity_probe
status target
------------------------------------ ----------------
https://docs.cumulusnetworks.com 1203
Cumulus Linux v4.2 User Documentation Network Virtualization
-------------------------------------- -------------------
e700ad21-8fd8-4f09-96dc-fa7cc6e498d8 30000
state=ACTIVE} "ssl:54.0.0.2:6632"
To make sure the MLAG configuration is correct, run the clagctl command:
1204 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
CLAG Interfaces
-----------------
vxln14567102 vxln14567102 - - -
vxln14567103 vxln14567103 - - -
CLAG Interfaces
-----------------
vxln14567102 - - - -
vxln14567103 - - - -
https://docs.cumulusnetworks.com 1205
Cumulus Linux v4.2 User Documentation Network Virtualization
To make sure that the BFD sessions are up and running, run the ptmctl -b
command:
--------------------------------------------------------
--------------------------------------------------------
NOTE
adding the hardware bindings, run the ifreload -a command to reload all
network interfaces.
1206 https://docs.cumulusnetworks.com
Network Virtualization Cumulus Linux v4.2 User Documentation
If you still encounter issues with high availability after you restart
openvswitch-vtep.service, run ifreload -a, and restart
https://docs.cumulusnetworks.com 1207
Cumulus Linux v4.2 User Documentation Layer 3
Layer 3
This section describes layer 3 configuration. Read this section to
understand routing protocols and learn how to configure routing on the
Cumulus Linux switch.
1208 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Routing
Network routing is the process of selecting a path across one or more
networks. When the switch receives a packet, it reads the packet headers
to find out its intended destination. It then determines where to route the
Cumulus Linux supports both Static Routing, where you enter routes and
specify the next hop manually and dynamic routing such as BGP, and OSP,
where you configure a routing protocol on your switch and the routing
protocol learns about other routers automatically.
For the number of route table entries supported per platform, see
Supported Route Table Entries.
https://docs.cumulusnetworks.com 1209
Cumulus Linux v4.2 User Documentation Layer 3
Static Routing
You can use static routing if you don’t require the complexity of a dynamic
routing protocol (such as BGP or OSPF), if you have routes that do not
change frequently and for which the destination is only one or two paths
away.
With static routing, you configure the switch manually to send traffic with a
specific destination prefix to a specific next hop. When the switch receives
a packet, it looks up the destination IP address in the routing table and
forwards the packet accordingly.
Static routes are added to the FRRouting routing table and then the kernel
routing table.
1210 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux and vtysh Commands
10.0.1.1/31
10.0.1.0
https://docs.cumulusnetworks.com 1211
Cumulus Linux v4.2 User Documentation Layer 3
...
...
1212 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux and vtysh Commands
10.0.0.32/31
...
vrf BLUE
...
https://docs.cumulusnetworks.com 1213
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
10.0.1.0
TIP
To view static routes, run the NCLU net show route static command or
====================
1214 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
F - PBR, f - OpenFabric,
rejected route
00:02:07
You can also create a static route by adding the route to a switch port
•
NCLU Commands Linux Commands
10.0.1.1/31
https://docs.cumulusnetworks.com 1215
Cumulus Linux v4.2 User Documentation Layer 3
The ip route command allows you to manipulate the kernel routing table
directly from the Linux shell. See man ip(8) for details. FRRouting monitors
the kernel routing table changes and updates its own routing table
accordingly.
destined outside the switch’s subnet or local network. All such traffic
passes through the gateway, which is a system on the same network that
routes packets to their destination beyond the local network.
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
1216 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
...
NOTE
Considerations
To avoid incorrect routing, do not use the Linux shell to delete static routes
that you added with vtysh commands. Delete the routes with the vtysh
commands.
If you install an IPv6 default route on eth0 with a source IP address, the
https://docs.cumulusnetworks.com 1217
Cumulus Linux v4.2 User Documentation Layer 3
configuration either fails at reboot or the first time you run ifup -dv eth0,
you see a warning and the route is not installed. (If you run ifup -dv eth0 a
2001:db8:5ca1:160::1 /
Invalid argument)<<<<<<<<<<
1218 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
2001:db8:5ca1:160::45/64 post-up
Cumulus Linux does not support different neighbor cache aging timer
settings for IPv4 and IPv6.
...
net.ipv4.neigh.default.base_reachable_time_ms=1080000
net.ipv6.neigh.default.base_reachable_time_ms=1080000
...
https://docs.cumulusnetworks.com 1219
Cumulus Linux v4.2 User Documentation Layer 3
Related Information
1220 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
• Layer 3 IPv4 LPM (longest prefix match) entries that have a mask less
than /32
• Layer 3 IPv6 LPM entries that have a mask of /64 or less
• Layer 3 IPv6 LPM entries that have a mask greater than /64
• Layer 3 IPv4 neighbor (or host) entries that are the next hops seen in ip
neighbor
• Layer 3 IPv6 neighbor entries that are the next hops seen in ip -6
neighbor
• ECMP next hops, which are IP address entries in a router’s routing table
that specify the next closest or most optimal router in its routing path
• MAC addresses
In addition, Tomahawk, Trident II, Trident II+, and Trident3 switches are
To determine the current table sizes on a switch, use either the NCLU net
https://docs.cumulusnetworks.com 1221
Cumulus Linux v4.2 User Documentation Layer 3
On Mellanox Spectrum and some Broadcom ASICs, you can configure the
allocation of forwarding table resources and mechanisms. Cumulus Linux
provides a number of generalized profiles for the platforms described
below. These profiles work only with layer 2 and layer 3 unicast forwarding.
Choose the profile that best suits your network architecture and specify the
profile name for the forwarding_table.profile variable in the /etc/
forwarding_table -B 4
# Valid profiles -
forwarding_table.profile = default
After you specify a different profile, restart switchd for the change to take
effect. You can see the forwarding table profile when you run cl-resource-
query.
1222 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
The following tables list the number of MAC addresses, layer 3 neighbors,
and LPM routes validated for each forwarding table profile for supported
platforms. If you do not specify any profiles as described above, the switch
TIP
manufacturer specifications.
https://docs.cumulusnetworks.com 1223
Cumulus Linux v4.2 User Documentation Layer 3
Longe
ongesst
MA
MAC
C
Profile L3 Neighbo
eighbors
rsPrefix Ma
Mattch
Addr
ddreess
ssees
(LPM)
1224 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Longe
ongesst
MA
MAC
C
Profile L3 Neighbo
eighbors
rs Prefix Ma
Mattch
Addr
ddreess
ssees
(LPM)
Longe
ongesst
MA
MAC C
Profile L3 Neighbo
eighbors
rs Prefix Ma
Mattch
Addr
ddreess
ssees
(LPM)
https://docs.cumulusnetworks.com 1225
Cumulus Linux v4.2 User Documentation Layer 3
Longe
ongesst
MA
MAC C
Profile L3 Neighbo
eighbors
rs Prefix Ma
Mattch
Addr
ddreess
ssees
(LPM)
(IPv6-long)
Longe
ongesst P
Prrefix
MA
MAC
CAAddr
ddreess
ssees L3 Neighbo
eighbors
rs
Ma
Mattch (LPM)
NOTE
For Broadcom switches, IPv4 and IPv6 entries are not carved in
1226 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
ACL tables. Cumulus Linux provides a number of general profiles for this
platform. Choose the profile that best suits your network architecture and
specify that profile name in the tcam_resource.profile variable in the /usr/
lib/python2.7/dist-packages/cumulus/__chip_config/mlx/datapath.conf
"tcam_resource"
1. Valid profiles -
tcam_resource.profile = default
After you specify a different profile, restart switchd for the change to take
effect.
https://docs.cumulusnetworks.com 1227
Cumulus Linux v4.2 User Documentation Layer 3
On Broadcom switches running Cumulus Linux 4.0 and later, when there is
a /32 IPv4 or /128 IPv6 route and the same prefix is also a neighbor entry in
1228 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
the linux kernel, the route entry takes precedence over the neighbor entry
in the forwarding lookup. To change this behaviour, update the
route_preferred_over_neigh variable to FALSE in the /etc/cumulus/
switchd.conf file.
https://docs.cumulusnetworks.com 1229
Cumulus Linux v4.2 User Documentation Layer 3
• Prefix lists
• Route maps
• Route redistribution
Prefix Lists
Prefix lists are access lists for route advertisements that match routes
instead of traffic. Prefix lists are typically used with route maps and other
filtering methods. A prefix list can match the prefix (the network itself) and
the prefix-length (the length of the subnet mask).
The following example commands configure a prefix list that permits all
prefixes in the range 10.0.0.0/16 with a subnet mask less than or equal to
/30. For networks 10.0.0.0/24, 10.10.10.0/24, and 10.0.0.10/32, only
10.0.0.0/24 is matched (10.10.10.0/24 has a different prefix and 10.0.0.10/32
has a greater subnet mask).
1230 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf
passive-interface vlan10
passive-interface vlan20
Route Maps
Route maps are routing policies that are considered before the router
https://docs.cumulusnetworks.com 1231
Cumulus Linux v4.2 User Documentation Layer 3
The following example commands configure a route map that sets the
metric to 50 for interface swp51:
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf
1232 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
passive-interface vlan10
passive-interface vlan20
set metric 50
To apply the route map, you specify the routing protocol (bgp, ospf, or
static) and the route map name.
The following example filters routes from Zebra into the Linux kernel. The
commands apply the route map called routemap1 to BGP:
•
NCLU Commands vtysh Commands
routemap1
The NCLU and vtysh commands save the configuration in the /etc/frr/
https://docs.cumulusnetworks.com 1233
Cumulus Linux v4.2 User Documentation Layer 3
...
router ospf
passive-interface vlan10
passive-interface vlan20
For BGP, you can also apply a route map on route updates from BGP to
Zebra. All the applicable match operations are allowed, such as match on
prefix, next hop, communities, and so on. Set operations for this attach-
point are limited to metric and next hop only. Any operation of this feature
does not affect BGPs internal RIB. Both IPv4 and IPv6 address families are
supported. Route maps work on multi-paths; however, the metric setting is
To apply a route map to filter route updates from BGP into Zebra, run the
following command:
1234 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
In NCLU, you can only set the community number in a route map.
You cannot set other community options such as no-export, no-
advertise, or additive.
Route Redistribution
•
NCLU Commands vtysh Commands
https://docs.cumulusnetworks.com 1235
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
NOTE
Configuration Examples
The following example filters all routes that are not originated in the local
AS:
...
1236 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
exit-address-family
...
https://docs.cumulusnetworks.com 1237
Cumulus Linux v4.2 User Documentation Layer 3
exit-address-family
The following example filters routes from being advertised to the peer:
1238 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
exit-address-family
The following example sets mutual redistribution between OSPF and BGP
https://docs.cumulusnetworks.com 1239
Cumulus Linux v4.2 User Documentation Layer 3
...
router ospf
exit-address-family
1240 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
router ospf
https://docs.cumulusnetworks.com 1241
Cumulus Linux v4.2 User Documentation Layer 3
Policy-based Routing
Typical routing systems and protocols forward traffic based on the
destination address in the packet, which is used to look up an entry in a
routing table. However, sometimes the traffic on your network requires a
Policy-based routing (PBR) lets you make routing decisions based on filters
that change the routing behavior of specific traffic so that you can override
the routing table and influence where the traffic goes. For example, you can
use PBR to help you reach the best bandwidth utilization for business-
critical applications, isolate traffic for inspection or analysis, or manually
load balance outbound traffic.
NOTE
• You can create a maximum of 255 PBR match rules and 256
next hop groups (this is the ECMP limit).
• You can apply only one PBR policy per input interface.
1242 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Configure PBR
A PBR policy contains one or more policy maps. Each policy map:
https://docs.cumulusnetworks.com 1243
Cumulus Linux v4.2 User Documentation Layer 3
To use PBR in Cumulus linux, you define a PBR policy and apply it to the
ingress interface (the interface must already have an IP address assigned).
NOTE
switchd.conf file.
1244 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
10.1.2.0/24
10.1.4.1/24
value 10:
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp51
pbr-policy map1
...
nexthop-group group1
nexthop 192.168.0.22
...
...
To see the policies applied to all interfaces on the switch, run the NCLU net
show pbr interface command or the vtysh show pbr interface command.
For example:
1246 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
To see the policies applied to a specific interface on the switch, add the
interface name at the end of the command; for example, net show pbr
To see information about all policies, including mapped table and rule
numbers, run the NCLU net show pbr map command or the vtysh show pbr
map command. If the rule is not set, you see a reason why.
nexthop 192.168.0.32
nexthop 192.168.0.32
To see information about a specific policy, what it matches, and with which
https://docs.cumulusnetworks.com 1247
Cumulus Linux v4.2 User Documentation Layer 3
interface it is associated, add the map name at the end of the command; for
example, net show pbr map map1 (or show pbr map map1 in vtysh).
To see information about all next hop groups, run the NCLU net show pbr
To see information about a specific next hop group, add the group name at
the end of the command; for example, net show pbr nexthop-group group1
1248 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
A new Linux routing table ID is used for each next hop and next
hop group.
When you want to change or extend an existing PBR rule, you must first
delete the conditions in the rule, then add the rule back with the
modification or addition.
You can delete a PBR rule, a next hop group, or a policy. The following
commands provide examples.
NOTE
Use caution when deleting PBR rules and next hop groups, as you
might create an incorrect configuration for the PBR policy.
https://docs.cumulusnetworks.com 1249
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
10.1.2.0/24
The following examples show how to delete a next hop from a group:
The following examples show how to delete a PBR policy so that the
1250 https://docs.cumulusnetworks.com
cumulus@switch:~$ net del interface swp3 pbr-policy map1
NOTE
nexthop 192.168.0.21
https://docs.cumulusnetworks.com 1251
Cumulus Linux v4.2 User Documentation Layer 3
net commit
net commit
Example Configuration
In the following example, the PBR-enabled switch has a PBR policy to route
all traffic from the Internet to a server that performs anti-DDOS. The traffic
returns to the PBR-enabled switch after being cleaned and is then passed
onto the regular destination based routing mechanism.
1252 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
0.0.0.0/0
192.168.0.32
The NCLU and vtysh commands save the configuration in the /etc/frr/
https://docs.cumulusnetworks.com 1253
Cumulus Linux v4.2 User Documentation Layer 3
...
interface swp51
pbr-policy map1
...
...
1254 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
ECMP operates only on equal cost routes in the Linux routing table.
In this example, the 10.1.1.0/24 route has two possible next hops that have
been installed in the routing table:
• Originate from the same routing protocol. Routes from different sources
are not considered equal. For example, a static route and an OSPF route
https://docs.cumulusnetworks.com 1255
Cumulus Linux v4.2 User Documentation Layer 3
• Have equal cost. If two routes from the same protocol are unequal, only
the best route is installed in the routing table.
IMPORTANT
ECMP Hashing
When multiple routes are installed in the routing table, a hash is used to
• IP protocol
• Ingress interface
• Source IPv4 or IPv6 address
• Destination IPv4 or IPv6 address
1256 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
• Source port
• Destination port
all packets with the same source and destination IP addresses and the same
source and destination ports always hash to the same next hop. ECMP
hashing does not keep a record of flow states.
ECMP hashing does not keep a record of packets that have hashed to each
next hop and does not guarantee that traffic sent to each next hop is equal.
Because the hash is deterministic and always provides the same result for
the same input, you can query the hardware and determine the hash result
of a given input. This is useful when determining exactly which path a flow
takes through a network.
hash result.
https://docs.cumulusnetworks.com 1257
Cumulus Linux v4.2 User Documentation Layer 3
To use cl-ecmpcalc, all fields that are used in the hash must be provided.
This includes ingress interface, layer 3 source IP, layer 3 destination IP, layer
4 source port, and layer 4 destination port.
swp3
10.0.0.1 -p tcp
OUT_INTERFACE]
hardware]
[--hashfunction {crc16-ccitt,crc16-bisync}]
1258 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
[-e EGRESS]
[-c MCOUNT]
UDP frames
cl-ecmpcalc Limitations
cl-ecmpcalc can only take input interfaces that can be converted to a single
physical port in the port tab file, such as the physical switch ports (swp).
Virtual interfaces like bridges, bonds, and subinterfaces are not supported.
the Broadcom Maverick, Tomahawk, Trident II, Trident II+ and Trident3
chipsets.
When multiple routes are installed in the routing table, each route is
assigned to an ECMP bucket. When the ECMP hash is executed the result of
the hash determines which bucket gets used.
In the following example, four next hops exist. Three different flows are
hashed to different hash buckets. Each next hop is assigned to a unique
hash bucket.
https://docs.cumulusnetworks.com 1259
Cumulus Linux v4.2 User Documentation Layer 3
When a next hop is added, a new hash bucket is created. The assignment of
next hops to hash buckets, as well as the hash result, might change when
1260 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
A new next hop is added and a new hash bucket is created. As a result, the
hash and hash bucket assignment changes, causing the existing flows to be
sent to different next hops.
When a next hop is removed, the remaining hash bucket assignments might
change, again, potentially changing the next hop selected for an existing
flow.
https://docs.cumulusnetworks.com 1261
Cumulus Linux v4.2 User Documentation Layer 3
A next hop fails and the next hop and hash bucket are removed. The
It is useful to have a unique hash seed for each switch. This helps avoid hash
polarization, a type of network congestion that occurs when multiple data
flows try to reach a switch using the same switch ports.
1262 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
For example, to set the hash seed to 50, run the following commands:
•
NCLU Commands Linux Commands
NOTE
You can configure the set of fields used to hash upon during ECMP load
balancing. For example, if you do not want to use source or destination port
numbers in the hash calculation, you can disable the source port and
destination port fields.
• IP Protocol
• Source IP
• Destination IP
• Source port
https://docs.cumulusnetworks.com 1263
Cumulus Linux v4.2 User Documentation Layer 3
• Destination port
• IPv6 flow label
• Ingress interface
• Inner IP protocol
• Inner source IP
• Inner destination IP
• Inner source port
• Inner destination port
• Inner IPv6 flow label
file:
line.
2. To enable a field, set the field to true. To disable a field, set the field to
false.
1264 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
hash_config.enable = true
#ip protocol
hash_config.ip_prot = true
#source ip
hash_config.sip = true
#destination ip
hash_config.dip = true
#source port
hash_config.sport = false
#destination port
hash_config.dport = false
hash_config.ip6_label = true
#ingress interface
hash_config.ing_intf = false
hash_config.inner_ip_prot = false
hash_config.inner_sip = false
hash_config.inner_dip = false
https://docs.cumulusnetworks.com 1265
Cumulus Linux v4.2 User Documentation Layer 3
hash_config.inner_sport = false
hash_config.inner_dport = false
hash_config.inner_ip6_label = false
...
NOTE
Make sure that the settings for the source IP (hash_config.sip) and
symmetric_hash_enable = FALSE.
Resilient Hashing
In Cumulus Linux, when a next hop fails or is removed from an ECMP pool,
the hashing or hash bucket assignment can change. For deployments
where there is a need for flows to always use the same next hop, like TCP
anycast deployments, this can create session failures.
1266 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
chipset.
• When a next hop is removed, the assigned buckets are distributed to the
remaining next hops.
• When a next hop is added, some buckets assigned to other next hops are
migrated to the new next hop.
• The algorithm assigns buckets to next hops so as to make the number of
https://docs.cumulusnetworks.com 1267
Cumulus Linux v4.2 User Documentation Layer 3
• The assignment of buckets to next hops is not changed in any other case.
In particular, this assignment is not changed due to traffic loading or
imbalance.
A Mellanox switch has two unique options for configuring resilient hashing,
both of which you configure in the /usr/lib/python2.7/dist-packages/
for these options depend largely on the desired outcome for a specific
network implementation — the number and duration of flows, and the
being disrupted while attempting to populate new next hops. You specify
the number of seconds when at least one hash bucket consistently sees
no traffic before Cumulus Linux rebalances the flows; the default is 120
seconds. If any one bucket is idle; that is, it sees no traffic for the defined
period, the next new flow utilizes that bucket and flows to the new link.
Thus, if the network is experiencing a large number of flows or very
consistent or persistent flows, there may not be any buckets remaining
idle for a consistent 120 second period, and the imbalance remains until
that timer has been met. If a new link is brought up and added back to a
group during this time, traffic does not get allocated to utilize it until a
bucket qualifies as empty, meaning it has been idle for 120 seconds. This
is when a rebalance can occur.
1268 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
seconds with this option. However, while this could correct the persistent
imbalance that is expected with resilient hashing, this rebalance would
result in the movement of all flows and thus a break in any TCP sessions
Note that when you configure these options, a new next hop might not get
populated for a long time.
The Mellanox Spectrum ASIC assigns packets to hash buckets and assigns
hash buckets to next hops as follows. It also runs a background thread that
monitors and may migrate buckets between next hops to rebalance the
load.
• When a next hop is removed, the assigned buckets are distributed to the
remaining next hops.
• When a next hop is added, no buckets are assigned to the new next hop
until the background thread rebalances the load.
• The load gets rebalanced when the active flow timer specified by the
resilient_hash_active_timer setting expires if, and only if, there are
inactive hash buckets available; the new next hop may remain
unpopulated until the period set in resilient_hash_active_timer expires.
load is not balanced, the thread migrates any bucket(s) to different next
hops to rebalance the load.
As a result, any flow may be migrated to any next hop, depending on flow
activity and load balance conditions; over time, the flow may get pinned,
https://docs.cumulusnetworks.com 1269
Cumulus Linux v4.2 User Documentation Layer 3
assigned.
Unlike default ECMP hashing, when a next hop needs to be removed, the
1270 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
With 12 buckets assigned and four next hops, instead of reducing the
number of buckets - which would impact flows to known good hosts - the
remaining next hops replace the failed next hop.
https://docs.cumulusnetworks.com 1271
Cumulus Linux v4.2 User Documentation Layer 3
After the failed next hop is removed, the remaining next hops are installed
Resilient hashing does not prevent possible impact to existing flows when
new next hops are added. Due to the fact there are a fixed number of
buckets, a new next hop requires reassigning next hops to buckets.
1272 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
As a result, some flows may hash to new next hops, which can impact
anycast deployments.
An ECMP group is a list of unique next hops that are referenced by multiple
ECMP routes.
IMPORTANT
https://docs.cumulusnetworks.com 1273
Cumulus Linux v4.2 User Documentation Layer 3
All ECMP routes must use the same number of buckets (the number of
buckets cannot be configured per ECMP route).
The number of buckets can be configured as 64, 128, 256, 512 or 1024; the
default is 128:
Nu
Numbe
mberr of S
Suuppo
pporrted ECMP
Nu
Numbe
mberr of Hash B
Buuck
cket
etss
Groups
64 1024
128 512
256 256
512 128
1024 64
1274 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
A larger number of ECMP buckets reduces the impact on adding new next
hops to an ECMP route. However, the system supports fewer ECMP routes.
If the maximum number of ECMP routes have been installed, new ECMP
NOTE
Mellanox switches with the Spectrum ASIC allow for two custom
https://docs.cumulusnetworks.com 1275
Cumulus Linux v4.2 User Documentation Layer 3
resilient_hash_enable = TRUE
resilient_hash_entries_ecmp = 256
WARNING
1276 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Considerations
When the next hop information for an IPv6 prefix changes (for example,
when ECMP paths are added or deleted, or when the next hop IP address,
interface, or tunnel changes), FRR deletes the existing route to that prefix
from the kernel and then adds a new route with all the relevant new
To work around this issue, you can enable the IPv6 route replacement
option.
IMPORTANT
hops with a gateway value with the outbound interface or just the
outbound interface itself, without a gateway address defined. If
both types of next hops for the same destination exist, route
replacement does not operate correctly; Cumulus Linux adds an
additional route entry and next hop but does not delete the
https://docs.cumulusnetworks.com 1277
Cumulus Linux v4.2 User Documentation Layer 3
...
vtysh_enable=yes
semantics -s 90000000"
...
1278 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
WARNING
To verify that the IPv6 route replacement option is enabled, run the
```
● frr.service - FRRouting
3min 8s ago
Docs: https://frrouting.readthedocs.io/en/latest/setup.html
(code=exited, status=0/SUCCESS)
Memory: 14.4M
CGroup: /system.slice/frr.service
https://docs.cumulusnetworks.com 1279
Cumulus Linux v4.2 User Documentation Layer 3
v6-rr-semantics -s 90000000
```
1280 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
community to load balance traffic towards anycast services for IPv4 and
IPv6 routes in a layer 3 deployment and for prefix (type-5) routes in an
EVPN deployment.
UCMP Routing
In ECMP, the route to a destination has multiple next hops and traffic is
equally distributed across them. Flow-based hashing is used so that all
traffic associated with a particular flow uses the same next hop and the
In UCMP, along with the ECMP flow-based hash, a weight is associated with
each next hop and traffic is distributed across the next hops in proportion
to their weight. Cumulus Linux relies on the BGP link bandwidth extended
community to carry information about the anycast server distribution
through the network; this is mapped to the weight of the corresponding
next hop. This mapping is a factoring of a particular path’s bandwidth value
against the total bandwidth values of all possible paths, mapped to the
range 1 to 100. There is no change to either the BGP best path selection
algorithm or to the multipath computation algorithm that determines which
https://docs.cumulusnetworks.com 1281
Cumulus Linux v4.2 User Documentation Layer 3
UCMP Example
1282 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
The border leafs balance traffic equally; all weights are equal to the spines.
Only the spines have unequal load sharing based on the weight values.
Configure UCMP
https://docs.cumulusnetworks.com 1283
Cumulus Linux v4.2 User Documentation Layer 3
bandwidth are converting the number of ECMP paths in the same way.
NOTE
The following command examples show how you can set the BGP link
bandwidth extended community against all prefixes.
1284 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
ucmp-route-map out
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
...
The following command examples show how you can set the BGP link
https://docs.cumulusnetworks.com 1285
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
ip permit 192.168.0.0/16 le 32
ucmp-route-map out
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
1286 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
EVPN Configuration
For EVPN configuration, make sure that you activate the commands under
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
https://docs.cumulusnetworks.com 1287
Cumulus Linux v4.2 User Documentation Layer 3
...
exit-address-family
...
1288 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
• Skip paths without link bandwidth and perform UCMP among the others
(if at least some paths have link bandwidth).
• Assign a low default weight (value 1) to paths that do not have link
bandwidth.
Change this setting per BGP instance for both IPv4 and IPv6 unicast routes
in the BGP instance. For EVPN, set the options on the tenant VRF.
•
NCLU Commands vtysh Commands
missing
The NCLU and vtysh commands save the configuration in the /etc/frr/
https://docs.cumulusnetworks.com 1289
Cumulus Linux v4.2 User Documentation Layer 3
network 10.0.0.1/32
exit-address-family
...
with the prefix to eBGP peers. If you do not want to pass on the BGP link
bandwidth extended community outside of a particular domain, you can
disable the advertisement of all BGP extended communities on specific
peerings.
1290 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
•
NCLU Commands vtysh Commands
community extended
Troubleshooting
To show the extended community in a received or local route, run the NCLU
net show bgp command or the vtysh show bgp command.
The following example shows that an IPv4 unicast route is received with the
https://docs.cumulusnetworks.com 1291
Cumulus Linux v4.2 User Documentation Layer 3
BGP link bandwidth attribute from two peers. The link bandwidth extended
community is encoded in bytes-per-second and shown in Mbps per second:
Extended Community: LB:65002:131072000 (1000.000 Mbps) and Extended
65002
(fe80::202:ff:fe00:1b) (used)
bestpath-from-AS 65002
65001
(fe80::202:ff:fe00:15) (used)
1292 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
To show EVPN type-5 routes, run the NCLU net show bgp l2vpn evpn route
type prefix command or the vtysh show bgp l2vpn evpn route type
prefix command.
best, i - internal
...
*> [5]:[0]:[32]:[192.168.10.1]
65200 i
https://docs.cumulusnetworks.com 1293
Cumulus Linux v4.2 User Documentation Layer 3
ET:8 Rmac:36:4f:15:ea:81:90
To see weights associated with next hops for a route with multiple paths,
run the NCLU net show route command or the vtysh show ip route
Considerations
UCMP with BGP link bandwidth is only available for BGP-learned routes.
Related Information
1294 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Redistribute Neighbor
Redistribute neighbor provides a mechanism for IP subnets to span racks
without forcing the end hosts to run a routing protocol.
individual host /32 routes in the routed fabric. Other hosts on the fabric can
then use this new path to access the hosts in the fabric. If multiple equal-
cost paths (ECMP) are available, traffic can load balance across the
available paths natively.
available to solve this problem. Hosts use ARP to resolve MAC addresses
when sending to an IPv4 address. A host then builds an ARP cache table of
known MAC addresses: IPv4 tuples as they receive or respond to ARP
requests.
In the case of a leaf switch, where the default gateway is deployed for hosts
within the rack, the ARP cache table contains a list of all hosts that have
ARP’d for their default gateway. In many scenarios, this table contains all
the layer 3 information that is needed. This is where redistribute neighbor
comes in, as it is a mechanism of formatting and syncing this table into the
routing protocol.
https://docs.cumulusnetworks.com 1295
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
• Virtualized clusters
• Hosts with service IP addresses that migrate between racks
• Hosts that are dual connected to two leaf nodes without using
proprietary protocols such as MLAG
• Anycast services that need dynamic advertisement from multiple hosts
• You can connect a host to one or more leafs. Each leaf advertises the /32
it sees in its neighbor table.
• Make sure that a host-bound bridge/VLAN is local to each switch.
• Connect leaf switches with redistribute neighbor enabled directly to the
hosts.
1296 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
How It Works
1. The leaf/ToR switches learn about connected hosts when the host sends
an ARP request or ARP reply.
2. An entry for the host is added to the kernel neighbor table of each leaf
switch.
table and creates a /32 route for each neighbor entry. This /32 route is
created in kernel table 10.
4. FRRouting is configured to import routes from kernel table 10.
Example Configuration
https://docs.cumulusnetworks.com 1297
Cumulus Linux v4.2 User Documentation Layer 3
The following steps demonstrate how to configure leaf01, but you can
follow the same steps on any of the leafs.
1298 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
1. Configure the host facing ports using the same IP address on both
host-facing interfaces as well as a /32 prefix. In this case, swp1 and
swp2 are configured as they are the ports facing server01 and
server02:
10.0.0.11/32
10.0.0.11/32
3. Configure routing:
The NCLU and vtysh commands save the configuration in the /etc/frr/
frr.conf file. The following example uses OSPF as the routing protocol:
service integrated-vtysh-config
redistribute table 10
exit-address-family
router ospf
redistribute table 10
1300 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
line vty
There are a few possible host configurations that range in complexity. This
document only covers the basic use case: dual-connected Linux hosts with
static IP addresses assigned.
Configure a host with the same /32 IP address on its loopback (lo) and
uplinks (in this example, eth1 and eth2). This is done so both leaf switches
advertise the same /32 regardless of the interface. Cumulus Linux relies on
ECMP to load balance across the interfaces southbound, and an equal cost
static route (see the configuration below) for load balancing northbound.
The loopback hosts the primary service IP address(es) and to which you
can bind services.
https://docs.cumulusnetworks.com 1301
Cumulus Linux v4.2 User Documentation Layer 3
• The post-up ARPing is used to force the host to ARP as soon as its
interface comes up. This allows the leaf to learn about the host as soon as
possible.
• The post-up ip route replace is used to install a default route via one or
▼ Click to expand
Install ifplugd
Additionally, install and use ifplugd. ifplugd modifies the behavior of the
and eth2 are the interface names that your host uses to connect to the
leaves.
INTERFACES="eth1 eth2"
HOTPLUG_INTERFACES=""
SUSPEND_ACTION="stop"
1302 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Troubleshooting
13min ago
CGroup: /system.slice/rdnbrd.service
loglevel = INFO
https://docs.cumulusnetworks.com 1303
Cumulus Linux v4.2 User Documentation Layer 3
keepalive = 1
holdtime = 3
route_table = 10
request. This is
# unusual for ARP (why ARP if you know the destination MAC) but
we will be
request, set
1304 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
need to set
# this to False.
unicast_arp_requests = True
The Linux kernel supports multiple routing tables and can utilize 0 through
255 as table IDs; however tables 0, 253, 254 and 255 are reserved, and 1 is
usually the first one utilized. Therefore, rdnbrd only allows you to specify
2-252. Cumulus Linux uses table ID 10, however you can set the ID to any
value between 2-252. You can see all the tables specified here:
# reserved values
255 local
254 main
253 default
0 unspec
https://docs.cumulusnetworks.com 1305
Cumulus Linux v4.2 User Documentation Layer 3
# local
#1 inr.ruhep
For more information, refer to Linux route tables or you can read the
Ubuntu man pages for ip route.
For BGP, run the NCLU net show bgp neighbor <interface> advertise-
best, = multipath,
1306 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Path
*> 10.0.0.12/32 :: 0
65020 65012 i
*> 10.0.0.21/32 :: 0
65020 i
*> 10.0.0.22/32 :: 0
65020 i
Use the following workflow to verify that the kernel routing table isbeing
populated correctly and that routes are being correctly imported/
advertised:
1. Verify that ARP neighbor entries are being populated into the Kernel
routing table 10.
https://docs.cumulusnetworks.com 1307
Cumulus Linux v4.2 User Documentation Layer 3
If these routes are not being generated, verify the following that the
rdnbrd daemon is running and check the /etc/rdnbrd.conf file to verify
2. Verify that routes are being imported into FRRouting from the kernel
routing table 10.
01:25:29
Both the > and * should be present so that table 10 routes are installed as
preferred into the routing table. If the routes are not being installed,
verify the imported distance of the locally imported kernel routes with
the ip import 10 distance X command (where X is not less than the
routes learned from the protocol might overwrite the locally imported
routes. Also, verify that the routes are in the kernel routing table.
3. Confirm that routes are in the BGP/OSPF database and are being
advertised.
1308 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Considerations
This feature adds each ARP entry as a /32 host route into the routing table
of all switches within a summarization domain. Take care to keep the
number of hosts minus fabric routes under the TCAM size of the switch.
Review the Cumulus Networks datasheets for up to date scalability limits of
Freshly provisioned hosts that have never sent traffic may not ARP for their
default gateways. The post-up ARPing in /etc/network/interfaces on the
host should take care of this. If the host does not ARP, then rdnbrd on the
https://docs.cumulusnetworks.com 1309
Cumulus Linux v4.2 User Documentation Layer 3
1310 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Segment Routing
WARNING
Features
https://docs.cumulusnetworks.com 1311
Cumulus Linux v4.2 User Documentation Layer 3
• MPLS label edge router (LER) functionality for IPv4 and IPv6 routing with
ECMP. An ingress LER first adds an MPLS label to an IP packet. An egress
LER removes the outermost MPLS label (also called popping the label).
• MPLS label switch router (LSR) functionality with ECMP. The LSR receives
a packet with a label and forwards it based on that label.
• FRRouting support for MPLS transit label switched paths (LSPs) and
labeled routes (LER), both static routes and routes using BGP labeled-
unicast (LU).
• FRR support for BGP/MPLS segment routing based on draft-ietf-idr-bgp-
prefix-sid-06.
1312 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
index 1
index 2
index 3
index 4
index 5
The local label is the MPLS label global-block plus the label-index.
https://docs.cumulusnetworks.com 1313
Cumulus Linux v4.2 User Documentation Layer 3
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
exit-address-family
exit-address-family
1314 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
You can see the label-index when you show the BGP configuration on a
router. Run the NCLU net show configuration bgp command or the vtysh
...
...
From another node in the network, run the NCLU net show bgp <ip-
https://docs.cumulusnetworks.com 1315
Cumulus Linux v4.2 User Documentation Layer 3
400
(fe80::202:ff:fe00:c) (used)
Remote label: 3
Label Index: 4
AddPath ID: RX 0, TX 14
cumulus@r1:~$
To show the FRR MPLS table, run the NCLU net show mpls table command
or the vtysh show mpls table command. You can see the FRR MPLS table in
the output below, where r1 receives a packet with label 104. Its outbound
1316 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Inbound Outbound
cumulus@r1:~$
cumulus@r1:~$
You can see the MPLS routing table that is installed in the kernel as well:
https://docs.cumulusnetworks.com 1317
Cumulus Linux v4.2 User Documentation Layer 3
zebra
zebra
cumulus@r1:~$
cumulus@r1:~$
Example Configuration
1318 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
For HTTP traffic to be routed from host1 to host2 via r1, r4, r5 then r3, the
MPLS controller tells host1 to push label stack 103,105,104 on all HTTP
traffic destined for host2; 104 is the outside label and 103 is the inside label.
Switch r1 sees label 104, then pops that outermost label and forwards the
payload towards switch r4. Switch r4 sees label 105, then pops that label
and forwards the payload towards switch r5. Switch r5 sees label 103, then
pops that label and forwards the payload towards switch r3. Switch r3 sees
For FTP traffic to be routed from host1 to host2 through r5, the MPLS
controller tells host1 to push label stack 105 on all FTP traffic destined for
host2. Switch r1 sees label 105, then uses ECMP using swap with label 105
https://docs.cumulusnetworks.com 1319
Cumulus Linux v4.2 User Documentation Layer 3
and forwards the payload towards switches r4 and r2. Switches r2 and r4
see label 105, then they pop the label and forward the payload towards
switches r5 and r3. Switches r5 and r3 both see just an IP packet and route
it as usual.
The table below contains the configuration for all five nodes.
1320 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
Node r1 Node r2 Node r3 Node r4 Node r5
/et
etc/net
c/netwwork/int
/inte
erfac
ace
es
auto lo
address 10.1.1.1/32
auto swp2
iface swp2
auto swp4
iface swp4
auto swp10
iface swp10
address 192.168.11.1/24
auto vagrant
auto eth0
vrf mgmt
auto mgmt
iface mgmt
address 127.0.0.1/8
address ::1/128
FRRouting
Cumulus Linux uses FRRouting (FRR) to provide the routing protocols for
dynamic routing and supports the following routing protocols:
Architecture
daemons are responsible for running the relevant protocol and building the
routing table based on the information exchanged.
It is not uncommon to have more than one protocol daemon running at the
same time. For example, at the edge of an enterprise, protocols internal to
1322 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
an enterprise (called IGP for Interior Gateway Protocol) such as OSPF text
or RIP run alongside the protocols that connect an enterprise to the rest of
the world (called EGP or Exterior Gateway Protocol) such as BGP.
About zebra
zebra is the daemon that resolves the routes provided by multiple protocols
(including the static routes you specify) and programs these routes in the
Linux kernel via netlink (in Linux). The FRRouting documentation defines
Related Information
• FRRouting website
https://docs.cumulusnetworks.com 1323
Cumulus Linux v4.2 User Documentation Layer 3
Configure FRRouting
FRRouting does not start by default in Cumulus Linux. Before you run
FRRouting, make sure you have enabled the relevant daemons that you
intend to use (bgpd, ospfd, ospf6d or pimd) in the /etc/frr/daemons file.
IMPORTANT
The zebra daemon is enabled by default. You can enable the other daemons
Before you start FRRouting, edit the /etc/frr/daemons file to enable each
daemon you want to use. For example, to enable BGP, set bgpd to yes:
...
bgpd=yes
ospfd=no
ospf6d=no
ripd=no
ripngd=no
1324 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
isisd=no
fabricd=no
pimd=no
ldpd=no
nhrpd=no
eigrpd=no
babeld=no
sharpd=no
pbrd=no
vrrpd=no
...
After you enable the appropriate daemons, enable and start the FRRouting
service:
TIP
https://docs.cumulusnetworks.com 1325
Cumulus Linux v4.2 User Documentation Layer 3
All the routing protocol daemons (bgpd, ospfd, ospf6d, ripd, ripngd,
restarts any of the routing protocol daemons that are enabled and
running.
Integrated Configurations
You can disable this mode by running the following command in the vtysh
FRRouting CLI:
1326 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Building Configuration...
[OK]
switch# exit
cumulus@switch:~$
https://docs.cumulusnetworks.com 1327
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
When integrated configuration mode is disabled, the output looks like this:
Building Configuration...
[OK]
configuration, delete the frr.conf file and restart the frr service.
Back up frr.conf (or any configuration files you want to remove) before
proceeding.
1328 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
service integrated-vtysh-config
2. Remove /etc/frr/frr.conf:
frr.conf.
WARNING
https://docs.cumulusnetworks.com 1329
Cumulus Linux v4.2 User Documentation Layer 3
FRRouting inherits the IP addresses and any associated routing tables for
the network interfaces from the /etc/network/interfaces file. This is the
configuring and displaying protocol state. To start the CLI, run the sudo
vtysh command:
switch#
1330 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
vtysh provides a Cisco-like modal CLI and many of the commands are
similar to Cisco IOS commands. There are different modes to the CLI and
certain commands are only available within a specific mode. Configuration
is available with the configure terminal command:
switch(config)#
The prompt displays the current CLI mode. For example, when the
interface-specific commands are invoked, the prompt changes to:
switch(config-if)#
When the routing protocol specific commands are invoked, the prompt
changes to:
switch(config-router)#
https://docs.cumulusnetworks.com 1331
Cumulus Linux v4.2 User Documentation Layer 3
switch(config-if)# ?
ip IP Information
switch(config-if)# bandwidth ?
switch(config-if)# ip ?
1332 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
To search for specific vtysh commands so that you can identify the correct
syntax to use, run the sudo vtysh -c 'find <term>' command. For
[json]
[json]
[A.B.C.D]] [json]
https://docs.cumulusnetworks.com 1333
Cumulus Linux v4.2 User Documentation Layer 3
<none$none|primary$primary|secondary$secondary>
[json]
[detail|WORD] [json]
[A.B.C.D]] [json]
Displaying state can be done at any level, including the top level. For
example, to see the routing table as seen by zebra:
1334 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
00:11:57
00:11:57
00:11:57
00:11:57
00:11:58
00:11:59
00:11:59
00:11:57
00:11:57
https://docs.cumulusnetworks.com 1335
Cumulus Linux v4.2 User Documentation Layer 3
00:11:57
00:11:57
00:11:59
00:11:59
00:05:17
00:05:17
00:05:17
00:05:17
1336 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
00:05:18
00:05:18
00:05:18
00:05:17
00:05:17
00:05:17
00:05:17
00:05:18
00:05:18
https://docs.cumulusnetworks.com 1337
Cumulus Linux v4.2 User Documentation Layer 3
Notice that the commands also take a partial command name (for example,
sh ip route) as long as the partial command name is not aliased:
1338 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
% Ambiguous command.
switch(config-router)# exit
switch(config)# exit
switch# exit
cumulus@switch:~$
To view the current state of the configuration, run the show running-config
command:
▼ Example command
https://docs.cumulusnetworks.com 1339
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
If you try to configure a routing protocol that has not been started,
vtysh silently ignores those commands.
If you do not want to use a modal CLI to configure FRRouting, you can use
a suite of Cumulus Linux-specific commands instead.
NOTE
1340 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
frr.conf, run:
FRR Logging
https://docs.cumulusnetworks.com 1341
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
To write debug messages to the log file, you must run the log
frr.log. However, when you manually define a log target with the
Considerations
Obfuscated Passwords
Duplicate Hostnames
If you change the hostname, either with NCLU or with the hostname
command in vtysh, the switch can have two hostnames in the FRR
1342 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Spine01-1(config)# do sh run
Building configuration...
Current configuration:
hostname Spine01
hostname Spine01-1
...
NOTE
Related Information
https://docs.cumulusnetworks.com 1343
Cumulus Linux v4.2 User Documentation Layer 3
1344 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
The following table shows the FRRouting commands and the equivalent
Cumulus Linux NCLU commands.
FRR
FRRoouting
Action NCL
CLU
UCComman
ommands
ds
Comman
ommandsds
Create a new
neighbor
cumulus@switch:~$ switch(config)#
net add bgp router bgp
autonomous- 65002
system 65002 switch(config-
cumulus@switch:~$ router)#
net add bgp neighbor
neighbor 14.0.0.22
https://docs.cumulusnetworks.com 1345
Cumulus Linux v4.2 User Documentation Layer 3
FRR
FRRoouting
Action NCL
CLU
UCComman
ommands
ds
Comman
ommands
ds
14.0.0.22
Redistribute routing
information from
static route entries cumulus@switch:~$ switch(config)#
into RIP tables net add bgp router bgp
redistribute 65002
static switch(config-
router)#
redistribute
static
cumulus@switch:~$ switch(config)#
net add ip route
routing 155.1.2.20/
route 24 bridge 45
155.1.2.20/
24 bridge 45
1346 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
FRR
FRRoouting
Action NCL
CLU
UCComman
ommands
ds
Comman
ommands
ds
Configure an IPv6
address
cumulus@switch:~$ switch(config)#
net add int swp3
interface switch(config-
swp3 ipv6 if)# ipv6
address address
3002:2123:1234:1abc::21/
3002:2123:1234:1abc::21/
64 64
Enable topology
checking (PTM)
cumulus@switch:~$ switch(config)#
net add ptm-enable
routing ptm-
enable
Configure MTU in
IPv6 network
discovery for an cumulus@switch:~$ switch(config)#
interface sudo cl-ra int swp3
interface switch(config-
swp3 set if)# ipv6
mtu 9000 nd mtu 9000
https://docs.cumulusnetworks.com 1347
Cumulus Linux v4.2 User Documentation Layer 3
FRR
FRRoouting
Action NCL
CLU
UCComman
ommands
ds
Comman
ommands
ds
1348 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
FRR
FRRoouting
Action NCL
CLU
UCComman
ommands
ds
Comman
ommands
ds
Display BGP
information
cumulus@switch:~$ switch#
net show show ip bgp
bgp summary summary
Display OSPF
debugging status
cumulus@switch:~$ switch#
net show show
debugs debugging
ospf
Show information
about the interfaces
on the switch cumulus@switch:~$ switch#
net show show
interface interface
https://docs.cumulusnetworks.com 1349
Cumulus Linux v4.2 User Documentation Layer 3
FRR
FRRoouting
Action NCL
CLU
UCComman
ommands
ds
Comman
ommands
ds
To quickly check
important
information, such as
IP address, VRF, and
operational status,
in easy to read
tabular format:
switch#
show
interface
brief
1350 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
BGP is an increasingly popular protocol for use in the data center as it lends
itself well to the rich interconnections in a Clos topology. RFC 7938
BGP directs packets between autonomous systems (AS), which are a set of
Autonomous System
https://docs.cumulusnetworks.com 1351
Cumulus Linux v4.2 User Documentation Layer 3
The ASN is central to how BGP builds a forwarding topology. A BGP route
advertisement carries with it not only the ASN of the originator, but also
the list of ASNs that this route advertisement passes through. When
forwarding a route advertisement, a BGP speaker adds itself to this list. This
list of ASNs is called the AS path. BGP uses the AS path to detect and avoid
loops.
ASNs were originally 16-bit numbers, but were later modified to be 32-bit.
FRRouting supports both 16-bit and 32-bit ASNs, but many
NOTE
Auto BGP
In a two-tier leaf and spine environment, you can use auto BGP to generate
32-bit ASNs automatically so that you don’t have to think about which
1352 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
range. For information about configuring auto BGP, refer to Basic BGP
Configuration.
NOTE
in an existing configuration.
• It is not necessary to use auto BGP across all switches in
your configuration. For example, you can use auto BGP to
https://docs.cumulusnetworks.com 1353
Cumulus Linux v4.2 User Documentation Layer 3
ASN.
The heart of the protocol is the same when used as eBGP or iBGP but there
All iBGP speakers need to be peered with each other in a full mesh. In a
large network, this requirement can quickly become unscalable. The most
popular method to scale iBGP networks is to introduce a route reflector.
1354 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Linux so that multiple equal cost routes can be installed in the routing table
but only a single route is advertised to BGP peers.
• Highe
ighesst W
Weight
eight: Weight is a value from 0 to 65535. Weight is not carried
in a BGP update but is used locally to influence the best path selection.
• Highe
ighesst L
Local
ocal P
Prref
efeerenc
ence
e: Local preference is exchanged between iBGP
neighbors only. Routes received from eBGP peers are assigned a local
preference of 0. Whereas weight is used to make route selections
without sending additional information to peers, local preference can be
used to influence routing to iBGP peers.
• Locally O
Orrigina
iginatted R
Rooutes: Any route that the local switch is responsible
for placing into BGP is selected as best. This includes static routes,
aggregate routes and redistributed routes.
• Sho
Shorrtest A
ASSP
Paath
th: The path received with the fewest number of ASN
hops is selected.
• Origin Check
Check: Preference is given to routes with an IGP origin (routes
placed into BGP with a network statement) over incomplete origins
(routes places into BGP through redistribution). The EGP origin attribute
is no longer used.
https://docs.cumulusnetworks.com 1355
Cumulus Linux v4.2 User Documentation Layer 3
• Lowest M
MEED: The Multi-Exit Discriminator or MED is sent to eBGP peers
to indicate a preference on how traffic enters an AS. A MED received
from an eBGP peer is exchanged with iBGP peers but is reset to a value
• eBGP R
Rooutes: A route received from an eBGP peer is preferred over a
route learned from an iBGP peer.
• Lowest IGP C
Coost tto
o the Next Hop
op: The route with the lowest IGP metric
to reach the BGP next hop.
• iBGP ECMP o
ov
ver eBGP ECMP
CMP: If BGP multipath is configured, prefer
equal iBGP routes over equal eBGP routes, unless as-path multipath-relax
is also configured.
• Ol
Olddest R
Rooute: Preference is given to the oldest route in the BGP table.
• Lowest R
Roouter ID: Preference is given to the route received from the
peer with the lowest Router ID attribute. If the route is received from a
route reflector, the ORIGINATOR_ID attribute is used for comparison.
• Sho
Shorrtest R
Rooute R
Reflect
eflecto
or Cl
Clus
ustter Li
Lisst: If a route passes through multiple
route reflectors, prefer the route with the shortest route reflector cluster
list.
• Highe
ighesst P
Pee
eerr IP A
Addr
ddre
ess
ss: Preference is given to the route received from
the peer with the highest IP address.
Cumulus Linux provides the reason it selects one path over another in
1356 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NCLU net show bgp and vtysh show ip bgp command output for a specific
prefix.
When BGP multipath is in use, if multiple paths are equal, BGP still selects a
single best path to advertise to peers. This path is indicated as best with
the reason, although multiple paths might be installed into the routing
table.
BGP Unnumbered
Historically, peers connect over IPv4 and TCP port 179, and after they
address of the advertising router. This requires that each BGP peer has an
IPv4 address, which in a large network can consume a lot of address space,
The BGP unnumbered standard, specified in RFC 5549, uses extended next
hop encoding (ENHE) and no longer requires an IPv4 prefix to be
advertised along with an IPv4 next hop. This means that you can set up
BGP peering between your Cumulus Linux switches and exchange IPv4
The next hop address for each prefix is an IPv6 link-local address, which is
assigned automatically to each interface. Using the IPv6 link-local address
as a next hop instead of an IPv4 unicast address, BGP unnumbered saves
you from having to configure IPv4 addresses on each interface.
https://docs.cumulusnetworks.com 1357
Cumulus Linux v4.2 User Documentation Layer 3
When you use BGP unnumbered, BGP learns the prefixes, calculates the
routes and installs them in IPv4 AFI to IPv6 AFI format. ENHE in Cumulus
Linux does not install routes into the kernel in IPv4 prefix to IPv6 next hop
other end.
NOTE
1358 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Related Information
https://docs.cumulusnetworks.com 1359
Cumulus Linux v4.2 User Documentation Layer 3
• RFC 5004, Avoid BGP Best Path Transitions from One External to
Another
• RFC 5065, Autonomous System Confederations for BGP
1360 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
BGP Numbered
• Assign an ASN to identify this BGP node. In a two-tier leaf and spine
configuration, you can use auto BGP, where Cumulus Linux assigns an
ASN automatically.
• Assign a router ID, which is a 32-bit value and is typically the address of
the loopback interface on the switch.
• Specify where to distribute routing information by providing the IP
address and ASN of the neighbor.
◦ For BGP numbered, this is the IP address of the interface between the
two peers; the interface must be a layer 3 access port.
◦ The ASN can be a number, or internal for a neighbor in the same AS
https://docs.cumulusnetworks.com 1361
Cumulus Linux v4.2 User Documentation Layer 3
1362 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
•
leaf01 spine01
65101
the AS number.
routing information.
https://docs.cumulusnetworks.com 1363
cumulus@leaf01:~$ net add bgp neighbor 10.0.1.0
Cumulus Linux v4.2 User Documentation Layer 3
The NCLU and vtysh commands save the configuration in the /etc/frr/
•
leaf01 spine01
...
network 10.10.10.1/32
network 10.1.10.0/24
exit-address-family
...
NOTE
the configurations. Auto BGP determines the ASN for the system
and configures it using standard vtysh commands.
1364 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
BGP Unnumbered
The only difference between a BGP unnumbered configuration and the BGP
https://docs.cumulusnetworks.com 1365
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
•
leaf01 spine01
external
10.10.10.1/32
10.1.10.0/24
external
swp51 activate
2001:db8::1/128
1366 https://docs.cumulusnetworks.com
cumulus@leaf01:~$ net pending
Layer 3 Cumulus Linux v4.2 User Documentation
The NCLU and vtysh commands save the configuration in the /etc/frr/
•
leaf01 spine01
...
network 10.10.10.1/32
network 10.1.10.0/24
exit-address-family
...
https://docs.cumulusnetworks.com 1367
Cumulus Linux v4.2 User Documentation Layer 3
Peer Groups
Instead of specifying properties of each individual peer, you can define one
or more peer groups and associate all the attributes common to that peer
session to a peer group. A peer needs to be attached to a peer group only
once, when it then inherits all address families activated for that peer group.
NOTE
If the peer you want to add to a group already exists in the BGP
configuration, delete it first, than add it to the peer group.
The following example commands create a peer group called SPINE that
includes two external peers.
1368 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
external
SPINE
SPINE
•
NCLU Commands vtysh Commands
group SPINE
https://docs.cumulusnetworks.com 1369
Cumulus Linux v4.2 User Documentation Layer 3
You configure dynamic neighbors using the bgp listen range <ip-address>
a BGP speaker can listen for, and form peer relationships with, any neighbor
that is in the IP address range and is mapped to a peer group.
The following example commands create the peer group SPINE and
configure BGP peering to remote neighbors within the address range
10.0.1.0/31.
•
NCLU Commands vtysh Commands
external
group SPINE
The net add bgp listen limit command limits the number of
The NCLU and vtysh commands save the configuration in the /etc/frr/
1370 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
eBGP Multihop
The eBGP multihop option lets you use BGP to exchange routes with an
external peer that is more than one hop away.
To establish a connection between two eBGP peers that are not directly
connected:
•
NCLU Commands vtysh Commands
as external
multihop
https://docs.cumulusnetworks.com 1371
Cumulus Linux v4.2 User Documentation Layer 3
You can use the TTL security hop count option to prevent attacks against
eBGP, such as denial of service (DoS) attacks. By default, BGP messages
are sent to eBGP neighbors with an IP time-to-live (TTL) of 1, which
The BGP TTL security hops option inverts the direction in which the TTL is
counted. Instead of accepting only packets with a TTL set to 1, only BGP
messages with a TTL greater than or equal to 255 minus the specified hop
count are accepted.
The following command example sets the TTL security hop count value to
200:
•
NCLU Commands vtysh Commands
hops 200
1372 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
...
...
NOTE
https://docs.cumulusnetworks.com 1373
Cumulus Linux v4.2 User Documentation Layer 3
To enable MD5 authentication for BGP peers, set the same password on
each peer.
•
NCLU Commands vtysh Commands
•
leaf01 spine01
mypassword
You can confirm the configuration with the NCLU command net show bgp
<neighbor>.
1374 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
If you use private ASNs in the data center, any routes you send out to the
internet contain your private ASNs. You can remove all the private ASNs
from routes to a specific neighbor.
The following example command removes private ASNs from routes sent to
the neighbor on swp51 (an unnumbered interface):
You can replace the private ASNs with your public ASN with the following
command:
https://docs.cumulusnetworks.com 1375
Cumulus Linux v4.2 User Documentation Layer 3
replace-AS
ECMP
these peers. BGP typically choses one best path for each prefix and installs
that route in the forwarding table.
In Cumulus Linux, the BGP multipath option is enabled by default with the
maximum number of paths set to 64 so that the switch can install multiple
equal-cost BGP paths to the forwarding table and load balance traffic
across multiple links. You can change the number of paths allowed,
according to your needs.
The example commands change the maximum number of paths to 120. You
can set a value between 1 and 256. 1 disables the BGP multipath option.
•
NCLU Commands vtysh Commands
1376 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
The NCLU and vtysh commands save the configuration in the address-
...
network 10.1.10.0/24
network 10.10.10.1/32
maximum-paths 120
exit-address-family
...
When BGP multipath is enabled, only BGP routes from the same AS are
load balanced. If the routes go across several different AS neighbors, even
if the AS path length is the same, they are not load balanced. To be able to
load balance between multiple paths received from different AS neighbors,
•
NCLU Commands vtysh Commands
relax
https://docs.cumulusnetworks.com 1377
Cumulus Linux v4.2 User Documentation Layer 3
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
...
NOTE
RFC 5549 defines the method used for BGP to advertise IPv4 prefixes with
IPv6 next hops. The RFC does not make a distinction between whether the
IPv6 peering and next hop values should be global unicast addresses (GUA)
1378 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
When BGP peering uses IPv6 global addresses and IPv4 prefixes are being
advertised and installed, IPv6 route advertisements are used to derive the
MAC address of the peer so that FRR can create an IPv4 route with a link-
local IPv4 next hop address (defined by RFC 3927). This is required to
install the route into the kernel. These route advertisement settings are
configured automatically when FRR receives an update from a BGP peer
using IPv6 global addresses that contain an IPv4 prefix with an IPv6 next
hop, and the enhanced-next hop capability has been negotiated.
To enable advertisement of IPv4 prefixes with IPv6 next hops over global
IPv6 peerings, add the extended-nexthop capability to the global IPv6
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
https://docs.cumulusnetworks.com 1379
Cumulus Linux v4.2 User Documentation Layer 3
...
...
Ensure that the IPv6 peers are activated under the IPv4 unicast address
family; otherwise, all peers are activated in the IPv4 unicast address family
explicitly activate the IPv6 neighbor under the IPv4 unicast address family
as shown below:
•
NCLU Commands vtysh Commands
2001:db8:0002::0a00:0002 activate
The NCLU and vtysh commands save the configuration in the /etc/frr/
1380 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
router-id 10.10.10.1
exit-address-family
...
https://docs.cumulusnetworks.com 1381
Cumulus Linux v4.2 User Documentation Layer 3
leaf01(config-router)# end
leaf01# exit
cumulus@leaf01:~$
Aggregate Addresses
To minimize the size of the routing table and save bandwidth, you can
1382 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
summary-only
BGP add-path
Cumulus Linux supports both BGP add-path RX and BGP add-path TX.
BGP add-path RX
BGP add-path RX allows BGP to receive multiple paths for the same prefix.
configuration is required.
To view the existing capabilities, run the NCLU command net show bgp
capabilities.
The following example output shows that additional BGP paths can be sent
and received and that the BGP neighbor on swp51 supports both.
https://docs.cumulusnetworks.com 1383
Cumulus Linux v4.2 User Documentation Layer 3
Hostname: spine01
10.10.10.1
Neighbor capabilities:
AddPath:
IPv4 Unicast
...
To view the current additional paths, run the NCLU command net show bgp
1384 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
<prefix> or the vtysh command show ip bgp <prefix>. The example output
shows an additional path that has been added by the TX node for receiving.
Each path has a unique AddPath ID.
spine01(swp51) spine02(swp52)
65020 65012
(fe80::4638:39ff:fe00:5c) (used)
AddPath ID: RX 0, TX 6
65020 65012
(fe80::4638:39ff:fe00:2b) (used)
multipath
AddPath ID: RX 0, TX 3
https://docs.cumulusnetworks.com 1385
Cumulus Linux v4.2 User Documentation Layer 3
BGP add-path TX
BGP add-path TX enables BGP to advertise more than just the best path for
a prefix. Cumulus Linux includes two options:
each AS to a neighbor
•
NCLU Commands vtysh Commands
bestpath-per-AS
1386 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
paths
In this configuration:
https://docs.cumulusnetworks.com 1387
Cumulus Linux v4.2 User Documentation Layer 3
When you run the net show bgp 10.10.10.3/32 command on leaf02, the
command output shows the leaf03 loopback IP address and that two BGP
paths are learned, both from leaf01:
leaf01(swp50)
(fe80::4638:39ff:fe00:13) (used)
(fe80::4638:39ff:fe00:13) (used)
BGP Timers
1388 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
local BGP table. By default, the keepalive interval is set to 3 seconds and
the hold time is set to 9 seconds. To decrease CPU load, especially in the
presence of a lot of neighbors, you can increase the values of these timers
or disable the exchange of keepalives entirely. When manually configuring
new values, the keepalive interval can be less than or equal to one third of
the hold time, but cannot be less than 1 second. Setting the keepalive and
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
https://docs.cumulusnetworks.com 1389
Cumulus Linux v4.2 User Documentation Layer 3
...
...
...
Reconnect Interval
By default, the BGP process attempts to connect to a peer after a failure (or
on startup) every 10 seconds. You can change this value to suit your needs.
•
NCLU Commands vtysh Commands
30
The NCLU and vtysh commands save the configuration in the /etc/frr/
1390 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
...
...
Advertisement Interval
After making a new best path decision for a prefix, BGP can optionally
insert a delay before advertising the new results to a peer. This delay is
https://docs.cumulusnetworks.com 1391
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
interval 5
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
...
...
Route Reflectors
iBGP rules state that a route learned from an iBGP peer can not be sent to
another iBGP peer. In a data center spine and leaf network using iBGP, this
prevents a spine from sending a route learned from a leaf to any other leaf.
As a workaround, BGP introduced the concept of a route reflector that
selectively ignores this rule so that when an iBGP speaker is configured as a
1392 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
route reflector, it can send iBGP learned routes to other iBGP peers.
spine01 learns from a route reflector client is sent to other route reflector
clients.
To configure the BGP node as a route reflector for a BGP peer, set the
neighbor route-reflector-client option. The following example sets
spine01 shown in the illustration above to be a route reflector for leaf01 (on
swp1), which is a route reflector client. No configuration is required on the
client.
https://docs.cumulusnetworks.com 1393
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
reflector-client
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
network 10.10.10.101/32
exit-address-family
...
1394 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
IMPORTANT
When configuring BGP for IPv6, you must run the route-
Administrative Distance
the same destination. The smaller the distance, the more reliable the
protocol. For example, if the switch receives a route from OSPF with an
administrative distance of 110 and the same route from BGP with an
The following example commands set the administrative distance for routes
https://docs.cumulusnetworks.com 1395
Cumulus Linux v4.2 User Documentation Layer 3
spine01(config-router)# end
spine01# exit
cumulus@spine01:~$
The following example commands set the administrative distance for routes
external to the AS to 150, routes internal to the AS to 110, and local routes
to 100:
spine01(config-router)# end
spine01# exit
cumulus@spine01:~$
1396 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
from eBGP peers and the local-pref for that route is set to 0. To see the
configuration, run the NCLU command net show bgp <route> or the vtysh
https://docs.cumulusnetworks.com 1397
Cumulus Linux v4.2 User Documentation Layer 3
bottom0(10.10.10.2)
30 20
AS 30, best
Community: 99:1
AddPath ID: RX 0, TX 52
20
bestpath-from-AS 20
AddPath ID: RX 0, TX 2
As BGP peers are established and updates are received, prefixes might be
1398 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
installed in the RIB and advertised to BGP peers even though the
information from all peers is not yet received and processed. Depending on
the timing of the updates, prefixes might be installed and propagated
through BGP, and then immediately withdrawn and replaced with new
routing information. Read-only mode minimizes this BGP route churn in
both the local RIB and with BGP peers.
Enable read-only mode to reduce CPU and network usage when restarting
the BGP process. Because intermediate best paths are possible for the
NOTE
To enable read-only mode, you set the max-delay timer and, optionally, the
reaches its established state and the max-delay timer starts, and continues
• All the configured peers (except the shutdown peers) have sent an
explicit EOR (End-Of-RIB) or an implicit EOR. The first keep-alive after
https://docs.cumulusnetworks.com 1399
Cumulus Linux v4.2 User Documentation Layer 3
reached the established state from the moment the max-delay timer
established peers for which EOR is expected are the peers that are
established during the establish-wait window, not necessarily all the
configured neighbors.
The default value for max-delay is 0, which disables read-only mode. The
update delay and establish wait can be any value between 0 and 3600
seconds.
•
NCLU Commands vtysh Commands
To show information about the state of the update delay, run the NCLU
1400 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
command net show bgp summary or the vtysh command show ip bgp
summary.
You can use community lists to define a BGP community to tag one or
more routes. You can then use the communities to apply a route policy on
either egress or ingress.
The BGP community list can be either standard or expanded. The standard
BGP community list is a pair of values (such as 100:100) that can be tagged
on a specific prefix and advertised to other neighbors or applied on route
ingress. Or, it can be one of four BGP default communities:
sub-AS
• no-advertise: a BGP community that is not advertised to anyone
When the neighbor receives the prefix, it examines the community value
and takes action accordingly, such as permitting or denying the community
https://docs.cumulusnetworks.com 1401
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
You can apply the community list to a route map to define the routing
policy:
•
NCLU Commands vtysh Commands
Related Information
1402 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Troubleshooting
Use the following commands to troubleshoot BGP.
To show a summary of the BGP configuration on the switch, run the NCLU
net show bgp summary command or the vtysh show ip bgp summary
=============================
https://docs.cumulusnetworks.com 1403
Cumulus Linux v4.2 User Documentation Layer 3
0 0 0 1d01h44m 7
0 0 0 01:47:13 7
0 0 0 01:48:31 7
0 0 0 01:46:57 7
0 0 0 01:47:43 12
=============================
TIP
1404 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
To view the routing table as defined by BGP, run the NCLU net show bgp
ipv4 unicast command or the vtysh show ip bgp command. For example:
best, = multipath,
Path
*= 10.0.1.2/32 swp54 0
65199 65102 ?
*= swp52 0
65199 65102 ?
* i peerlink.4094 100 0
65199 65102 ?
*= swp53 0
65199 65102 ?
*> swp51 0
https://docs.cumulusnetworks.com 1405
Cumulus Linux v4.2 User Documentation Layer 3
65199 65102 ?
*= 10.0.1.254/32 swp54 0
65199 65132 ?
*= swp52 0
65199 65132 ?
* i peerlink.4094 100 0
65199 65132 ?
*= swp53 0
65199 65132 ?
*> swp51 0
65199 65132 ?
*= 10.10.10.3/32 swp54 0
65199 65102 ?
*= swp52 0
65199 65102 ?
* i peerlink.4094 100 0
65199 65102 ?
*= swp53 0
65199 65102 ?
*> swp51 0
65199 65102 ?
...
1406 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Hostname: spine01
10.10.10.1
Neighbor capabilities:
AddPath:
https://docs.cumulusnetworks.com 1407
Cumulus Linux v4.2 User Documentation Layer 3
IPv4 Unicast
R bit: False
Timers:
Message statistics:
Inq depth is 0
Outq depth is 0
Sent Rcvd
Opens: 2 1
Notifications: 0 0
Route Refresh: 0 0
Capability: 0 0
1408 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
7 accepted prefixes
Nexthop: 10.10.10.1
https://docs.cumulusnetworks.com 1409
Cumulus Linux v4.2 User Documentation Layer 3
leaf02(peerlink.4094)
65199 65102
(fe80::8e24:2bff:fe79:7d46) (used)
65199 65102
(fe80::841:43ff:fe27:caf) (used)
65199 65102
(10.10.10.2)
65199 65102
(fe80::48e7:fbff:fee9:5bcf) (used)
1410 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
65199 65102
(fe80::7c41:fff:fe93:b711) (used)
To verify that FRR learned the neighboring link-local IPv6 address through
the IPv6 neighbor discovery router advertisements on a given interface, run
the NCLU net show interface <interface> command or the vtysh show
Neighbor address(s): has the other end’s link-local address (the address
NOTE
https://docs.cumulusnetworks.com 1411
Cumulus Linux v4.2 User Documentation Layer 3
Alias
-----
leaf to spine
cl-netstat counters
-------------------
1874 0 0 0 1252 0 0 0
LLDP Details
------------
LocalPort RemotePort(RemoteHost)
--------- ----------------------
1412 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
swp51 swp1(spine01)
Routing
-------
vrf: default
flags: <UP,BROADCAST,RUNNING,MULTICAST>
Type: Ethernet
HWaddr: 10:d8:68:d4:a6:81
inet6 fe80::12d8:68ff:fed4:a681/64
protodown: off
https://docs.cumulusnetworks.com 1413
Cumulus Linux v4.2 User Documentation Layer 3
Neighbor address(s):
inet6 fe80::f208:5fff:fe12:cc8c/128
To show IPv4 prefixes learned with IPv6 next hops, run the following
commands.
The following examples show an IPv4 prefix learned from a BGP peer over
an IPv6 session using IPv6 global addresses, but where the next hop
installed by BGP is a link-local IPv6 address. This occurs when the session is
directly between peers and both link-local and global IPv6 addresses are
included as next hops in the BGP update for the prefix. If both global and
link-local next hops exist, BGP prefers the link-local address for route
installation.
id 0
1414 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
leaf01(2001:db8:2::a00:1) 4 65101 22 22
0 0 0 00:01:00 0
best, = multipath,
Weight Path
10.10.10.101/32 fe80::a00:27ff:fea6:b9fe 0 0
32768 i
https://docs.cumulusnetworks.com 1415
Cumulus Linux v4.2 User Documentation Layer 3
Leaf01(2001:db8:0002::0a00:1)
(10.10.10.101)
(fe80::a00:27ff:fea6:b9fe) (used)
AddPath ID: RX 0, TX 3
The example output below shows the results of installing the route in the
FRR RIB as well as the kernel FIB. Note that the next hop used for
installation in the FRR RIB is the link-local IPv6 address, but then it is
converted into an IPv4 link-local address as required for installation into the
kernel FIB.
1416 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
===========================
===========================
If an IPv4 prefix is learned with only an IPv6 global next hop address (for
example, when the route is learned through a route reflector), the
command output shows the IPv6 global address as the next hop value and
https://docs.cumulusnetworks.com 1417
Cumulus Linux v4.2 User Documentation Layer 3
Up/Down State/PfxRcd
Spine01(2001:db8:0002::0a00:2) 4 1 74 68 0
0 0 00:00:45 1
best, = multipath,
1418 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Local
AddPath ID: RX 0, TX 5
===========================
2001:2:2::4 (recursive)
===========================
https://docs.cumulusnetworks.com 1419
Cumulus Linux v4.2 User Documentation Layer 3
To have only IPv6 global addresses used for route installation into the FRR
RIB, you must add an additional route map to the neighbor or peer group
statement in the appropriate address family. When the route map
both a link-local and global IPv6 address are in the BGP update for a prefix,
With this additional configuration, the output in the FRR RIB changes in the
direct neighbor case as shown below:
exit-address-family
1420 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
F - PBR,
When the route is learned through a route reflector, it appears like this:
https://docs.cumulusnetworks.com 1421
Cumulus Linux v4.2 User Documentation Layer 3
exit-address-family
F - PBR,
1422 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
To check BGP timers, such as the BGP keepalive interval, hold time, and
advertisement interval, run the NCLU net show bgp neighbor <peer>
example:
Hostname: spine01
10.10.10.1
Neighbor capabilities:
https://docs.cumulusnetworks.com 1423
Cumulus Linux v4.2 User Documentation Layer 3
AddPath:
IPv4 Unicast
none
R bit: True
Timers:
IPv4 Unicast:
1424 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
F bit: False
Timers:
Message statistics:
Inq depth is 0
Outq depth is 0
Sent Rcvd
Opens: 2 1
Notifications: 0 0
Updates: 54 59
Route Refresh: 0 0
Capability: 0 0
Cumulus Linux records the changes that a neighbor goes through in syslog
https://docs.cumulusnetworks.com 1425
Cumulus Linux v4.2 User Documentation Layer 3
by peer
by peer
1426 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 1427
Cumulus Linux v4.2 User Documentation Layer 3
Configuration Example
This section shows a BGP configuration example based on the reference
topology. The example configures BGP unnumbered on all leafs and spines
and uses the peer group underlay. MLAG is configured on leaf01 and leaf02,
1428 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
/etc/network/interfaces
https://docs.cumulusnetworks.com 1429
Cumulus Linux v4.2 User Documentation Layer 3
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
auto lo
address 10.10.10.1/32
auto mgmt
iface mgmt
vrf-table auto
address 127.0.0.1/8
address ::1/128
auto eth0
vrf mgmt
auto bridge
iface bridge
bridge-vids 10 20 30
bridge-vlan-aware yes
auto vlan10
iface vlan10
address 10.1.10.2/24
vlan-raw-device bridge
vlan-id 10
/etc/frr/frr.conf
•
leaf01 leaf02 leaf03 leaf04 spine01 spine02
...
redistribute connected
exit-address-family
line vty
https://docs.cumulusnetworks.com 1431
Cumulus Linux v4.2 User Documentation Layer 3
their links, prefixes, and associated cost with Link State Advertisements
(LSAs). This topology information is used to build a topology database.
Each router within an area has an identical database and calculates its own
routing table using the Shortest Path First (SPF) algorithm. The SPF
algorithm is used any time there are changes to routing information in the
network. OSPF uses the concept of areas to try and limit the size of the
topology database on different routers. The routers that exist in more than
one area are called Area Border Routers (ABRs) and they simplify the
information contained within LSAs when advertising LSAs from one area to
another. ABRs are the only routers in OSPF that are allowed to implement
route filtering or route summarization.
1432 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
OSPFv2 Numbered
To configure OSPF using numbered interfaces, you specify the router ID, IP
subnet prefix, and area address. All the interfaces on the switch with an IP
address that matches the network subnet are put into the specified area.
OSPF attempts to discover other OSPF routers on those interfaces. All
https://docs.cumulusnetworks.com 1433
Cumulus Linux v4.2 User Documentation Layer 3
spine01.
leaf
leaf01
01 spine
pine01
01
1434 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
leaf
leaf01
01 spine
pine01
01
NOTE
the IP subnet prefix with an area address per network (net add
command (net add interface swp1 ospf area 0). However, you
https://docs.cumulusnetworks.com 1435
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands Linux and vtysh Commands
•
leaf01 spine01
10.10.10.1/32
10.0.1.0/31
area 0
area 0
command to set all interfaces as passive and the net del ospf
default
1436 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
The NCLU and vtysh commands save the configuration in the /etc/frr/
•
leaf01 spine01
...
router ospf
passive-interface swp1
passive-interface swp2
...
OSPFv2 Unnumbered
https://docs.cumulusnetworks.com 1437
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
leaf
leaf01
01 spine
pine01
01
1438 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
leaf
leaf01
01 spine
pine01
01
https://docs.cumulusnetworks.com 1439
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands Linux and vtysh Commands
•
leaf01 spine01
10.10.10.1/32
10.10.10.1/32
Configure OSPF:
point-to-point
command to set all interfaces as passive and the net del ospf
1440 https://docs.cumulusnetworks.com
passive-interface <interface> command to selectively bring up
Layer 3 Cumulus Linux v4.2 User Documentation
The NCLU and vtysh commands save the configuration in the /etc/frr/
•
leaf01 spine01
...
interface lo
ip ospf area 0
interface swp51
ip ospf area 0
router ospf
passive-interface swp1,swp2
...
Interface Parameters
https://docs.cumulusnetworks.com 1441
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
• Hello interval. The number of seconds between hello packets sent on the
seconds.
• Priority in becoming the OSPF Designated Router (DR) on a broadcast
1442 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
point-to-point
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp51
...
The following command example sets the hello interval to 5 seconds and
the dead interval to 60 seconds. The hello interval and dead inteval can be
any value between 1 and 65535 seconds.
https://docs.cumulusnetworks.com 1443
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
interval 5
interval 60
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp51
ip ospf hello-interval 5
ip ospf dead-interval 60
...
The following command example sets the priority to 5 for swp51. The
1444 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp51
ip ospf priority 5
...
To see the currently configured OSPF interface parameter values, run the
NCLU net show ospf interface command or the vtysh show ip ospf
interface command.
OSPF uses the following default timers to prevent consecutive SPFs from
overburdening the CPU:
https://docs.cumulusnetworks.com 1445
Cumulus Linux v4.2 User Documentation Layer 3
the initial event until SPF runs to 80, the number of milliseconds between
consecutive SPF runs to 100, and the maximum number of milliseconds
between SPFs to 6000.
•
NCLU Commands vtysh Commands
6000
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf
passive-interface swp1
passive-interface swp2
1446 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
To see the configured SPF timer values, run the NCLU net show ospf
MD5 Authentication
and a key ID, then enable MD5 authentication. The key ID must be a value
between 1 and 255 that represents the key used to create the message
digest. This value must be consistent across all routers on a link. The key
must be a value with an upper range of 16 characters (longer strings are
truncated) that represents the actual message digest.
The following example commands create key ID 1 with the key thisisthekey
https://docs.cumulusnetworks.com 1447
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
•
leaf01 spine01
authentication message-digest
The NCLU and vtysh commands save the configuration in the /etc/frr/
•
leaf01 spine01
...
interface swp51
...
1448 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
for each route in an area and advertises it in adjacent areas. Prefix range
configuration optimizes this behavior by creating and advertising one
summary LSA for multiple routes. OSPF only allows for route
summarization between areas on a ABR. This is done with the area range
command.
The following example shows a topology divided into area 0 and area 1.
border01 and border02 are area border routers (ABRs) that have links to
https://docs.cumulusnetworks.com 1449
Cumulus Linux v4.2 User Documentation Layer 3
On border01:
These commands create a summary route for all the routes in the range
172.16.1.0/24 in area 0:
leaf01(config-router)# end
1450 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
leaf01# exit
cumulus@leaf01:~$
For example:
...
interface lo
ip ospf area 0
interface swp1
ip ospf area 1
interface swp2
ip ospf area 1
interface swp51
ip ospf area 0
interface swp52
ip ospf area 0
router ospf
https://docs.cumulusnetworks.com 1451
Cumulus Linux v4.2 User Documentation Layer 3
Stub Areas
External routes are the routes redistributed into OSPF from another
protocol. They have an AS-wide flooding scope. In many cases, external link
states make up a large percentage of the link-state database (LSDB). Stub
areas reduce the LSDB size by not flooding AS-external LSAs.
All routers must agree that an area is a stub, otherwise they will not
become OSPF neighbors.
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf
router-id 10.10.10.63
1452 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
area 1 stub
...
Stub areas still receive information about networks that belong to other
areas of the same OSPF domain. If summarization is not configured (or is
not comprehensive), the information can be overwhelming for the nodes.
Totally stubby areas address this issue. Routers in totally stubby areas keep
information about routing within their area in their LSDB.
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf
https://docs.cumulusnetworks.com 1453
Cumulus Linux v4.2 User Documentation Layer 3
router-id 10.10.10.63
...
Type Beha
Behavio
viorr
1454 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
TIP
•
NCLU Commands vtysh Commands
bandwidth 90000
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf
https://docs.cumulusnetworks.com 1455
Cumulus Linux v4.2 User Documentation Layer 3
router-id 10.10.10.1
...
Administrative Distance
protocol. For example, if the switch receives a route from OSPF with an
administrative distance of 110 and the same route from BGP with an
administrative distance of 100, the switch chooses BGP.
The following example commands set the distance for an entire group of
routes:
•
NCLU Commands vtysh Commands
1456 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
•
NCLU Commands vtysh Commands
https://docs.cumulusnetworks.com 1457
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration to the /etc/frr/
...
router ospf
...
1458 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
the OSPF router with an OSPF max-metric to notify its neighbors not to use
it as part of the OSPF topology. While the network converges, all traffic
forwarded to the max-metric router is still forwarded. After the network is
fully updated, the max-metric router no longer receives any traffic and can
be safely modified. To remove a single interface, you can configure the
OSPF cost for that specific interface.
For failure events, traffic might be lost during reconvergence (until SPF on
all nodes computes an alternative path around the failed link or node to
switch(config-router)# end
switch# exit
cumulus@switch:~$
https://docs.cumulusnetworks.com 1459
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
Troubleshooting
To… NCL
CLU
UCComman
ommandd vty
vtyssh C
Comman
ommand
d
1460 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
To… NCL
CLU
UCComman
ommandd vty
vtyssh C
Comman
ommand
d
process
The following example shows the net show ospf neighbor command
output:
swp51:10.0.1.0 0 0 0
The following example shows the net show route ospf command output:
==================
F - PBR, f - OpenFabric,
rejected route
https://docs.cumulusnetworks.com 1461
Cumulus Linux v4.2 User Documentation Layer 3
1, 00:02:37
00:02:37
00:00:57
To capture OSPF packets, run the sudo tcpdump -v -i swp1 ip proto ospf
command.
For a list all of the OSPF debug options, refer to Debugging OSPF.
Related Information
• FRR OSPFv2
• Perlman, Radia (1999); Interconnections: Bridges, Routers, Switches, and
Internetworking Protocols (2 ed.); Addison-Wesley
• Moy, John T.; OSPF: Anatomy of an Internet Routing Protocol; Addison-
Wesley
• RFC 2328 OSPFv2
• RFC 3101 OSPFv2 Not-So-Stubby Area (NSSA)
1462 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
address families (both IPv6 and IPv4). FRR does not currently
OSPFv3 Numbered
To configure OSPF using numbered interfaces, you specify the router ID, IP
subnet prefix, and area address. All the interfaces on the switch with an IP
address that matches the network subnet are put into the specified area.
OSPF attempts to discover other OSPF routers on those interfaces. All
matching interface network addresses are added to a Type-1 Router LSA
and advertised to discovered neighbors for proper reachability.
https://docs.cumulusnetworks.com 1463
Cumulus Linux v4.2 User Documentation Layer 3
entry but does not send or recieve OSPF hello packets. For example, in a
data center topology, the host-facing interfaces do not need to run OSPF,
however, the corresponding IP addresses still need to be advertised to
neighbors.
spine01.
1464 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
leaf
leaf01
01 spine
pine01
01
https://docs.cumulusnetworks.com 1465
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands Linux and vtysh Commands
•
leaf01 spine01
2001:db8::a0a:0a01/128
2001:db8::a00:0101/127
0.0.0.0
0.0.0.0
The NCLU and vtysh commands save the configuration in the /etc/frr/
1466 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
leaf01 spine01
...
router ospf6
interface swp1
interface swp2
...
OSPFv3 Unnumbered
https://docs.cumulusnetworks.com 1467
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
leaf
leaf01
01 spine
pine01
01
1468 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
leaf
leaf01
01 spine
pine01
01
https://docs.cumulusnetworks.com 1469
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands Linux and vtysh Commands
•
leaf01 spine01
2001:db8::a0a:0a01/128
2001:db8::a0a:0a01/128
0.0.0.0
0.0.0.0
network point-to-point
The NCLU and vtysh commands save the configuration in the /etc/frr/
1470 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
leaf01 spine01
...
router ospf6
interface swp1
interface swp2
interface swp51
...
Interface Parameters
https://docs.cumulusnetworks.com 1471
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
• Hello interval. The number of seconds between hello packets sent on the
seconds.
• Priority in becoming the OSPF Designated Router (DR) on a broadcast
1472 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
point-to-point
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp51
...
The following command example sets the hello interval to 5 seconds, the
dead interval to 60 seconds, and the priority to 5 for swp51. The hello
interval and dead inteval can be any value between 1 and 65535 seconds.
The priority can be any value between 0 to 255 (0 configures the interface
to never become the OSPF Designated Router (DR) on a broadcast
interface).
https://docs.cumulusnetworks.com 1473
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
interval 5
interval 60
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp51
...
The following example command configures interface swp51 with the IPv6
1474 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
prefix-list myfilter
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp51
...
•
NCLU Commands vtysh Commands
https://docs.cumulusnetworks.com 1475
Cumulus Linux v4.2 User Documentation Layer 3
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp51
...
To show the currently configured OSPF interface parameter values, run the
NCLU net show ospf6 interface command or the vtysh show ipv6 ospf6
interface command.
OSPF3 uses the following default timers to prevent consecutive SPFs from
overburdening the CPU:
1476 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
6000
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf6
passive-interface swp1
passive-interface swp2
...
To see the configured SPF timer values, run the NCLU net show ospf6
https://docs.cumulusnetworks.com 1477
Cumulus Linux v4.2 User Documentation Layer 3
1478 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
The following example command removes the 3:3::/64 route from the
not-advertise
The following example command creates a summary route for all the
routes in the range 2001::/64:
2001::/64 advertise
You can also configure the cost for a summary route, which is used to
determine the shortest paths to the destination. The value for cost
must be between 0 and 16777215.
cumulus@switch:~$https://docs.cumulusnetworks.com
net commit 1479
Cumulus Linux v4.2 User Documentation Layer 3
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf6
...
Stub Areas
External routes are the routes redistributed into OSPF from another
protocol. They have an AS-wide flooding scope. In many cases, external link
states make up a large percentage of the link-state database (LSDB). Stub
areas reduce the LSDB size by not flooding AS-external LSAs.
All routers must agree that an area is a stub, otherwise they will not
become OSPF neighbors.
1480 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf6
...
Stub areas still receive information about networks that belong to other
areas of the same OSPF domain. If summarization is not configured (or is
not comprehensive), the information can be overwhelming for the nodes.
Totally stubby areas address this issue. Routers in totally stubby areas keep
information about routing within their area in their LSDB.
https://docs.cumulusnetworks.com 1481
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf6
...
Type Beha
Behavio
viorr
1482 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Type Beha
Behavio
viorr
routes summarized
TIP
https://docs.cumulusnetworks.com 1483
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
bandwidth 90000
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
router ospf6
...
Administrative Distance
1484 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
administrative distance of 110 and the same route from BGP with an
administrative distance of 100, the switch chooses BGP.
https://docs.cumulusnetworks.com 1485
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
This example command sets the distance for an entire group of routes:
150 for internal routes to a subnet or network inside the same area as
the router:
150
The NCLU and vtysh commands save the configuration to the /etc/frr/
...
router ospf6
...
Troubleshooting
To… NCL
CLU
UCComman
ommandd vty
vtyssh C
Comman
ommand
d
https://docs.cumulusnetworks.com 1487
Cumulus Linux v4.2 User Documentation Layer 3
To… NCL
CLU
UCComman
ommandd vty
vtyssh C
Comman
ommand
d
The following example shows the net show ospf6 neighbor command
output:
Duration I/F[State]
00:02:58 swp51[DR]
The following example shows the net show route ospf6 command output:
===================
1488 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
f - OpenFabric,
rejected route
weight 1, 00:01:40
To capture OSPF packets, run the sudo tcpdump -v -i swp1 ip proto ospf6
command.
Related Information
• FRR OSPFv3
• RFC 2740 OSPFv3 OSPF for IPv6
https://docs.cumulusnetworks.com 1489
Cumulus Linux v4.2 User Documentation Layer 3
1490 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
/etc/network/interfaces
https://docs.cumulusnetworks.com 1491
Cumulus Linux v4.2 User Documentation Layer 3
•
leaf01 leaf02 spine01 spine02 border01 border02
auto lo
address 10.10.10.1/32
auto mgmt
iface mgmt
vrf-table auto
address 127.0.0.1/8
address ::1/128
auto eth0
vrf mgmt
auto bridge
iface bridge
bridge-vids 10 20 30
bridge-vlan-aware yes
auto vlan10
iface vlan10
address 10.1.10.2/24
vlan-raw-device bridge
vlan-id 10
/etc/frr/frr.conf
https://docs.cumulusnetworks.com 1493
Cumulus Linux v4.2 User Documentation Layer 3
•
leaf01 leaf02 spine01 spine02 border01 border02
...
interface lo
ip ospf area 0
interface vlan10
ip ospf area 0
interface vlan20
ip ospf area 0
interface vlan30
ip ospf area 0
interface swp51
ip ospf area 0
ip ospf hello-interval 5
ip ospf dead-interval 60
interface swp52
ip ospf area 0
ip ospf hello-interval 5
ip ospf dead-interval 60
1494 ! https://docs.cumulusnetworks.com
router ospf
Layer 3 Cumulus Linux v4.2 User Documentation
VRFs
This section discusses:
https://docs.cumulusnetworks.com 1495
Cumulus Linux v4.2 User Documentation Layer 3
paths without the need for multiple switches. Think of this feature as VLAN
for layer 3, but unlike VLANs, there is no field in the IP header carrying it.
Other implementations call this feature VRF-Lite.
The primary use cases for VRF in a data center are similar to VLANs at layer
2: using common physical infrastructure to carry multiple isolated traffic
streams for multi-tenant environments, where these streams are allowed to
OpenStack deployment.
• The VRF is presented as a layer 3 master network device with its own
associated routing table.
• The layer 3 interfaces (VLAN interfaces, bonds, switch virtual interfaces/
SVIs) associated with the VRF are enslaved to that VRF; IP rules direct
FIB (forwarding information base) lookups to the routing table for the
VRF device.
1496 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
• The VRF device can have its own IP address, known as a VRF-local
loopback.
• Applications can use existing interfaces to operate in a VRF context by
binding sockets to the VRF device or passing the ifindex using cmsg. By
default, applications on the switch run against the default VRF. Services
started by systemd run in the default VRF unless the VRF instance is used.
sysctl that allows a single instance to accept connections over all VRFs.
For TCP, connected sockets are bound to the VRF on which the first
• You can use existing Linux tools, such as tcpdump, to interact with a VRF.
https://docs.cumulusnetworks.com 1497
Cumulus Linux v4.2 User Documentation Layer 3
Configure VRF
Each routing table is called a VRF table, and has its own table ID.
• A VRF table can have an IP address, which is a loopback interface for the
VRF.
• Associated rules are added automatically.
• You can also add a default route to avoid skipping across tables when the
1498 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
management VRF.
•
NCLU Commands Linux Commands
Specify a Table ID
Instead of having Cumulus Linux assign a table ID for the VRF table, you
can specify your own table ID in the configuration. The table ID to name
mapping is saved in /etc/iproute2/rt_tables.d/ for name-based
references. Instead of using the auto option as shown above, specify the
https://docs.cumulusnetworks.com 1499
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands Linux Commands
NOTE
If you take down a VRF using ifdown, you need to run one of the following
• ifreload -a
For example:
1500 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Run the vrf command to show information about VRF tables not available
VRF Table
---------------- -----
rocket 1016
To show a list of processes and PIDs associated with a specific VRF table,
run the ip vrf pids <vrf-name> command. For example:
VRF: rocket
-----------------------
https://docs.cumulusnetworks.com 1501
Cumulus Linux v4.2 User Documentation Layer 3
dhclient 2508
sshd 2659
bash 2681
su 2702
bash 2720
vrf 2829
To determine which VRF table is associated with a particular PID, run the ip
rocket
commands started from a login shell, as they affect only AF_INET and
AF_INET6 sockets opened by the command that gets executed; it has no
To execute such a command against a VRF table, run ip vrf exec <vrf-
1502 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Services in VRFs
For services that need to run against a specific VRF, Cumulus Linux uses
systemd instances, where the instance is the VRF. In general, you start a
command. For example, to run the NTP service in the turtle VRF:
In most cases, the instance running in the default VRF needs to be stopped
before a VRF instance can start. This is because the instance running in the
default VRF owns the port across all VRFs (it is VRF global). Cumulus Linux
stops systemd-based services when the VRF is deleted and starts them
• chef-client
• collectd
• dhcpd
• dhcrelay
https://docs.cumulusnetworks.com 1503
Cumulus Linux v4.2 User Documentation Layer 3
• hsflowd
• netq-agent
• ntp
• puppet
• snmptrapd
• ssh
• zabbix-agent
NOTE
There are cases where systemd instances do not work; you must
VRF:
Device="mgmt" Port=514
Protocol="udp")
The most common use case for VRF is to use multiple independent routing
and forwarding tables; however, there are situations where destinations in
one VRF must be reachable (leaked) from another VRF. For example, to
1504 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
configuration only.
• VRF route leaking is not supported between the tenant VRF and the
default VRF with onlink next hops (BGP unnumbered).
• The NCLU command to configure route leaking fails if the VRF is named
red (lowercase letters only). This is not a problem if the VRF is named RED
(uppercase letters) or has a name other than red. To work around this
issue, rename the VRF or run the vtysh command instead. This is a
NOTE
VRF route leaking uses BGP to replicate the leaked routes across
VRFs. However, Cumulus Linux 4.2.0 and earlier cannot replicate
the host routes for neighbors local to a switch where the leak is
configured. To discover all directly connected neighbors in the
https://docs.cumulusnetworks.com 1505
Cumulus Linux v4.2 User Documentation Layer 3
switchd.conf file. These routes are then replicated into the target
to the destination VRF through BGP. If the routes in the source VRF are
learned through BGP, no additional configuration is necessary. If the routes
in the source VRF are learned through OSPF, or if they are statically
You can also use route leaking to reach remote destinations as well as
directly connected destinations in another VRF. Multiple VRFs can import
routes from a single source VRF and a VRF can import routes from multiple
source VRFs. This is typically used when a single VRF provides connectivity
to external networks or a shared service for many other VRFs. The routes
1506 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
that are leaked dynamically across VRFs can be controlled using a route-
map.
relies on the BGP constructs of the Route Distinguisher (RD) and Route
Targets (RTs). However, you do not need to configure these parameters;
they are automatically derived when you enable route leaking between a
pair of VRFs.
• You cannot reach the loopback address of a VRF (the address assigned
to the VRF device) from another VRF.
• When using route leaking, you must use the redistribute command in
BGP to leak non-BGP routes (connected or static routes); you cannot use
the network command.
• Do not use the default VRF as a shared service VRF. Create another VRF
for shared services.
• An EVPN symmetric routing configuration on a Mellanox switch with a
Spectrum ASIC or a Broadcom switch has certain limitations when
https://docs.cumulusnetworks.com 1507
Cumulus Linux v4.2 User Documentation Layer 3
leaking routes between the default VRF and non-default VRFs. The
default VRF has underlay routes (routes to VTEP addresses) that cannot
be leaked to any tenant VRFs. If you need to leak routes between the
default VRF and a non-default VRF, you must filter out routes to the
VTEP addresses to prevent leaking these routes. Use caution with such a
configuration. Run common services in a separate VRF (service VRF)
instead of the default VRF to simplify configuration and avoid using
route-maps for filtering.
In the following example commands, routes in the BGP routing table of VRF
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
1508 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
You can exclude certain prefixes from being imported. The prefixes must be
https://docs.cumulusnetworks.com 1509
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
rocket-IPV4 permit 10
To check the status of VRF route leaking, run the NCLU net show bgp vrf
example:
1510 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
leak
VRFs:
rocket
rocket
RD: 10.1.1.1:2
• To view the BGP routing table, run the NCLU net show bgp vrf <vrf-
name> ipv4|ipv6 unicast command or the vtysh show ip bgp vrf <vrf-
• To view the FRRouting IP routing table, use the NCLU net show route
The following example commands show all routes in VRF turtle, including
https://docs.cumulusnetworks.com 1511
Cumulus Linux v4.2 User Documentation Layer 3
NHRP,
F - PBR,
VRF turtle:
6d07h01m
rocket), 6d05h10m
5d05h10m
rocket), 6d05h10m
1512 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
The following example commands delete leaked routes from VRF rocket to
VRF turtle:
•
NCLU Commands vtysh Commands
NOTE
and might cause issues when used with VRF route leaking in FRR.
In Cumulus Linux, BGP, OSPFv2 and static routing (IPv4 and IPv6) are
supported within a VRF context. Various FRRouting routing constructs,
such as routing tables, nexthops, router-id, and related processing are also
VRF-aware.
https://docs.cumulusnetworks.com 1513
Cumulus Linux v4.2 User Documentation Layer 3
You can assign switch ports to each VRF table with an interface-level
configuration, and BGP instances can be assigned to the table with a BGP
router-level command.
static routes, and route maps. As with BGP, you can track OSPF neighbors
with BFD.
NOTE
1514 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
OSPF.
name.
• An OSPFv2 instance can be configured using the NCLU net add ospf vrf
parameters.
• You can provision static routes (IPv4 and IPv6) in a VRF by specifying
the VRF along with the static route configuration. For example, ip route
prefix dev vrf <vrf-name>. The VRF has to exist for this configuration to
pre-provisioned in FRRouting.
https://docs.cumulusnetworks.com 1515
Cumulus Linux v4.2 User Documentation Layer 3
1516 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
64900
group
peer-group
remote-as external
remote-as external
network 20.7.2.0/24
network 2003:7:2::/125
cumulus@switch:~$https://docs.cumulusnetworks.com
net add bgp vrf vrf1012 ipv6 unicast 1517
neighbor ISLv6 activate
Cumulus Linux v4.2 User Documentation Layer 3
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
network 20.7.2.0/24
exit-address-family
network 2003:7:2::/125
1518 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
exit-address-family
...
https://docs.cumulusnetworks.com 1519
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
changes detail
area 0.0.0.1
area 0.0.0.0
connected
to-point
to-point
The NCLU and vtysh commands save the configuration in the /etc/frr/
1520 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
...
interface swp1
ip address 192.0.2.1/32
interface swp2
ip address 192.0.2.1/32
log-adjacency-changes detail
redistribute connected
redistribute bgp
...
https://docs.cumulusnetworks.com 1521
Cumulus Linux v4.2 User Documentation Layer 3
VRF is based on interfaces, not IP addresses. While Linux does not support
multiple loopback devices, it does support the concept of a dummy
interface, which is used to achieve the same goal.
An IP address can be associated with the VRF device, which will then act as
the dummy (loopback-like) interface for that VRF.
1522 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
128
2001:20:1:6::1/80
65001
multipath-relax
routerid
group
as external
capability extended-nexthop
https://docs.cumulusnetworks.com
cumulus@switch:~$ net add bgp vrf vrf1 neighbor swp1.101
1523
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
redistribute connected
exit-address-family
redistribute connected
exit-address-family
...
1524 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Because you can use VRF to bind IPv4 and IPv6 sockets to non-default
VRF tables, you can start DHCP servers and relays in any non-default VRF
table using the dhcpd and dhcrelay services. These services must be
these two services, as well as others like ntp. You can add more services as
generate the systemd instance files for the newly added services. Then you
can start the service in the VRF using systemctl start <service>@<vrf-
For example, to start the dhcrelay service after you configure a VRF named
turtle, run:
To enable the service at boot time, you must also enable the service:
https://docs.cumulusnetworks.com 1525
Cumulus Linux v4.2 User Documentation Layer 3
• isc-dhcp-server-<vrf-name>
• isc-dhcp-server6-<vrf-name>
• isc-dhcp-relay-<vrf-name>
• isc-dhcp-relay6-<vrf-name>
NOTE
1526 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Example Configuration
In the following example, there is one IPv4 network with a VRF named
https://docs.cumulusnetworks.com 1527
Cumulus Linux v4.2 User Documentation Layer 3
IPv4 D
DHHCP Se
Serrver/rela
elay
y IPv6 D
DHHCP Se
Serrver/rela
elay
y
net
netwwork net
netwwork
1528 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
DHCP Server DHCP6 Server DHCP Relay DHCP6 Relay
sample content:
# sourced by /etc/init.d/isc-dhcp-server
maintainer scripts
dhcpd.conf).
DHCPD_CONF="-cf /etc/dhcp/dhcpd-rocket.conf"
DHCPD_PID="-pf /var/run/dhcpd-rocket.pid"
DHCPD_PID instead
#OPTIONS=""
DHCP requests?
eth1".
INTERFACES="swp2"
https://docs.cumulusnetworks.com 1529
Cumulus Linux v4.2 User Documentation Layer 3
You can run ping or traceroute on a VRF from the default VRF.
To ping a VRF from the default VRF, run the ping -I <vrf-name> command.
For example:
To run traceroute on a VRF from the default VRF, run the traceroute -i
Troubleshooting
troubleshoot VRFs.
1530 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands Linux Commands
To show the routes in a VRF, run the net show route vrf <vrf-name>
=================
To show the BGP summary for a VRF, run the net show bgp vrf <vrf-
14
Considerations
all BGP instances to get the same router ID. If you want each BGP
instance to have its own router ID, specify the router-id under the BGP
instance using bgp router-id. If both are specified, the one under the
• When you take down a VRF using ifdown, Cumulus Linux removes all
routes associated with that VRF from FRR but it does not remove the
routes from the kernel.
• The NCLU command to remove a BGP neighbor (net del bgp neighbor
1532 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Management VRF
NOTE
For all VRFs, the main routing table is the default table for all of the data
plane switch ports. With management VRF, a second table, mgmt, is used
for routing through the Ethernet ports of the switch. The mgmt name is
special cased to identify the management VRF from a data plane VRF. FIB
rules are installed for DNS servers because this is the typical deployment
case.
Cumulus Linux only supports eth0 (or eth1, depending on the switch
subinterfaces, bonds, bridges, and the front panel switch ports are not
supported as OOB management interfaces.
https://docs.cumulusnetworks.com 1533
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
default context does not impact services run through systemd and the
systemctl command, and does not impact commands examining the state
TIP
1534 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
To disable management VRF, either run the NCLU net del vrf mgmt
command or remove the auto mgmt and auto eth0 stanzas from the /etc/
If you take down the management VRF using ifdown, to bring it back up
The following command example brings down the management VRF, then
brings it back up with the ifup --with-depends mgmt command:
https://docs.cumulusnetworks.com 1535
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
configured as auto.
At installation, the only two enabled services that run in the management
VRF are NTP (ntp@mgmt.service) and netqd (netqd@mgmt). However, you can
run a variety of services within the management VRF instead of the default
VRF. When you run a systemd service inside the management VRF, that
service runs only on eth0. You cannot configure the same service to run
successfully in both the management VRF and the default VRF; you must
You must disable the following services in the default VRF if you want to
run them in the management VRF:
• chef-client
• collectd
• dhcpd
• dhcrelay
• hsflowd
• netq-agent
• netq-notifier
• puppet
1536 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
• snmpd
• snmptrapd
• ssh
• zabbix-agent
You can configure certain services (such as snmpd) to use multiple routing
NOTE
For TCP, connected sockets are bound to the VRF on which the
first packet is received.
The following steps show how to enable the SNMP service to run in the
management VRF. You can enable any of the services listed above, except
for dhcrelay (see DHCP Relays).
https://docs.cumulusnetworks.com 1537
Cumulus Linux v4.2 User Documentation Layer 3
Run the following command to show the process IDs associated with the
1538 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
management VRF:
1149 ntpd
1159 login
1227 bash
16178 vi
948 dhclient
20934 sshd
20975 bash
21343 sshd
21384 bash
21477 ip
Run the following command to show the VRF association of the specified
process:
mgmt
https://docs.cumulusnetworks.com 1539
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
You might see a warning, similar to the one below from systemctl
for any management VRF service. You can ignore this warning. This
is a problem in systemd in Debian 10 (buster).
When you enable snmpd to run in the management VRF, you need to specify
that VRF so that snmpd listens on eth0 in the management VRF; you can
NOTE
1540 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
By default, when you issue a ping or traceroute, the packet is sent to the
select a source address within the management VRF, use the -s flag for
traceroute.
Or:
https://docs.cumulusnetworks.com 1541
Cumulus Linux v4.2 User Documentation Layer 3
<destination-ip>
Troubleshooting.
create a custom service based on the original service file. The following
example commands configure the SSH service to run in the management
VRF as a non-root user.
1. Run the following command to create a custom service file in the /etc/
systemd/system direcotry.
...
1542 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
[Service]
#User=username
-bind=192.168.0.11
...
-u USER -- ssh:
...
[Service]
#User=username
-- ssh
...
routing table. This includes BGP peering via loopback interfaces. BGP does
routing lookups in the default table. However, depending on how your
routes are redistributed, you might want to perform the following
modification.
https://docs.cumulusnetworks.com 1543
Cumulus Linux v4.2 User Documentation Layer 3
Management VRF uses the mgmt table, including local routes. It does not
affect how the routes are redistributed when using routing protocols such
as OSPF and BGP.
NOTE
can specify a route map to redistribute routes in this way (for both BGP
and OSPF):
1544 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
<routing-protocol>
...
If you SSH to the switch through a switch port, SSH works as expected. If
https://docs.cumulusnetworks.com 1545
Cumulus Linux v4.2 User Documentation Layer 3
you need to SSH from the device out of a switch port, use the ip vrf exec
10.3.3.3
1546 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 1547
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands Linux Commands
The ip route show command shows the switch port (main) table. You
can see the dataplane routing table with the net show route vrf main
command.
To show information for eth0 (the management routing table), run the
10.23.23.2
192.168.0.11
single route, the command resolves over the mgmt table by default. To
obtain information about the route in the switching silicon, run this
command:
1548 https://docs.cumulusnetworks.com
To show the route for any VRF, run the net show route vrf <vrf-name>
Layer 3 Cumulus Linux v4.2 User Documentation
WARNING
file. In the example below, the management interface eth0 and the
management VRF stanzas are added to the mgmt interface class:
...
https://docs.cumulusnetworks.com 1549
Cumulus Linux v4.2 User Documentation Layer 3
auto lo
allow-mgmt eth0
vrf mgmt
allow-mgmt mgmt
iface mgmt
address 127.0.0.1/8
address ::1/128
vrf-table auto
...
When you run ifupdown2 commands against the interfaces in the mgmt
class, include --allow=mgmt with the commands. For example, to see which
eth0
mgmt
1550 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
You can still bring the management interface up and down using ifup eth0
Cumulus Linux supports both DHCP and static DNS entries over
management VRF through IP FIB rules. These rules are added to direct
lookups to the DNS addresses out of the management VRF.
For DNS to use the management VRF, the static DNS entries must
reference the management VRF in the /etc/resolv.conf file. You cannot
specify the same DNS server address twice to associate it with different
VRFs.
For example, to specify DNS servers and associate some of them with the
management VRF, run the following commands:
https://docs.cumulusnetworks.com 1551
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands Linux Commands
vrf mgmt
vrf mgmt
NOTE
1552 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 1553
Cumulus Linux v4.2 User Documentation Layer 3
Protocol Independent
Multicast - PIM
Protocol Independent Multicast (PIM) is a multicast control plane protocol
that advertises multicast sources and receivers over a routed layer 3
network. Layer 3 multicast relies on PIM to advertise information about
PIM has two modes of operation: Sparse Mode (PIM-SM) and Dense Mode
(PIM-DM).
NOTE
The following illustration shows a PIM configuration. The table below the
illustration describes the network elements.
1554 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Net
etwwork Element De
Desscription
https://docs.cumulusnetworks.com 1555
Cumulus Linux v4.2 User Documentation Layer 3
Net
etwwork Element De
Desscription
WARNING
cumulus@switch:~$
sudo vtysh
switch#
1556 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Net
etwwork Element De
Desscription
configure
terminal
switch(config)#
ip nht
resolve-
via-
default
switch(config)#
exit
switch#
write
memory
• Do not use a
spine switch as
an RP. If you are
running BGP on a
spine switch and
it is not
configured for
allow-as in origin,
BGP does not
accept routes
learned through
https://docs.cumulusnetworks.com 1557
Cumulus Linux v4.2 User Documentation Layer 3
Net
etwwork Element De
Desscription
PIM Shared Tree (RP Tree) or The multicast tree rooted at the
(*,G) Tree RP. When receivers want to join
a multicast group, join messages
are sent along the shared tree
towards the RP.
PIM Shortest Path Tree (SPT) or The multicast tree rooted at the
(S,G) Tree multicast source for a given
1558 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Net
etwwork Element De
Desscription
https://docs.cumulusnetworks.com 1559
Cumulus Linux v4.2 User Documentation Layer 3
Net
etwwork Element De
Desscription
PIM Messages
PIM Me
Mess
ssage
age De
Desscription
1560 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
PIM Me
Mess
ssage
age De
Desscription
500ms, Override
interval 2500ms
0x0000: 01f4 09c4
DR Priority Option
(19), length 4, Value:
1
0x0000: 0000 0001
Generation ID Option
(20), length 4, Value
0x2459b190
0x0000: 2459 b190
Not
ote
e: PIM join/prune messages
are sent to PIM neighbors on
individual interfaces. Join/prune
https://docs.cumulusnetworks.com 1561
Cumulus Linux v4.2 User Documentation Layer 3
PIM Me
Mess
ssage
age De
Desscription
21:49:59.470885 IP
(tos 0x0, ttl 255, id
138, offset 0, flags
[none], proto PIM
(103), length 54)
22.1.2.2 > 224.0.0.13:
PIMv2, length 34
Join / Prune, cksum
0xb9e5 (correct),
upstream-neighbor:
22.1.2.1
1 group(s), holdtime:
3m30s
1562 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
PIM Me
Mess
ssage
age De
Desscription
https://docs.cumulusnetworks.com 1563
Cumulus Linux v4.2 User Documentation Layer 3
PIM Me
Mess
ssage
age De
Desscription
21:37:00.419379 IP
(tos 0x0, ttl 255, id
24, offset 0, flags
[none], proto PIM
(103), length 38)
100.1.2.1 > 33.1.1.10:
PIMv2, length 18
Register Stop, cksum
0xd8db (correct)
group=225.1.0.0
source=33.1.1.1
1564 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
PIM Me
Mess
ssage
age De
Desscription
PIM Neighbors
When PIM is configured on an interface, PIM Hello messages are sent to the
link local multicast group 224.0.0.13. Any other router configured with PIM
on the segment that hears the PIM Hello messages builds a PIM neighbor
with the sending device.
NOTE
Configure PIM
https://docs.cumulusnetworks.com 1565
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
NOTE
address is configured.
NOTE
the default. Only specify the version if you exclusively want to use
IGMP version 2. SSM requires the use of IGMP version 3.
1566 NOTE
https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
https://docs.cumulusnetworks.com 1567
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
Cumulus Linux only supports ASM and SSM. PIM BiDir is not
currently supported.
Sparse Mode.
1568 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
This creates a (*,G) mroute with an OIF of the interface on which the IGMP
Membership Report is received and an IIF of the RPF interface for the RP.
The LHR generates a PIM (*,G) join message and sends it from the interface
towards the RP. Each multicast router between the LHR and the RP builds a
(*,G) mroute with the OIF being the interface on which the PIM join
message is received and an Incoming Interface of the reverse path
forwarding interface for the RP.
https://docs.cumulusnetworks.com 1569
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
When the RP receives the (*,G) Join message, it does not send any
NOTE
1570 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
When a first hop router (FHR) receives a multicast data packet from a
source, the FHR does not know if there are any interested multicast
receivers in the network. The FHR encapsulates the data packet in a unicast
PIM register message. This packet is sourced from the FHR and destined to
As the unencapsulated multicast packet travels down the (*,G) tree towards
the interested receivers, at the same time, the RP sends a PIM (S,G) join
towards the FHR. This builds an (S,G) state on each multicast router
When the FHR receives a PIM (S,G) join, it continues encapsulating and
sending PIM register messages, but also makes a copy of the packet and
sends it along the (S,G) mroute.
The RP then receives the multicast packet along the (S,G) tree and sends a
PIM register stop to the FHR to end the register process.
https://docs.cumulusnetworks.com 1571
Cumulus Linux v4.2 User Documentation Layer 3
When the LHR receives the first multicast packet, it sends a PIM (S,G) join
towards the FHR to efficiently forward traffic through the network. This
builds the shortest path tree (SPT), or the tree that is the shortest path to
the source. When the traffic arrives over the SPT, a PIM (S,G) RPT prune is
sent up the shared tree towards the RP. This removes multicast traffic from
the shared tree; multicast data is only sent over the SPT.
You can configure SPT switchover on a per-group basis, allowing for some
groups to never switch to a shortest path tree; this is also called SPT
infinity. The LHR now sends both (*,G) joins and (S,G) RPT prune messages
towards the RP.
To configure a group to never follow the SPT, create the necessary prefix-
lists, then configure SPT switchover for the spt-range prefix-list:
1572 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
32
32
range
switch(config)# end
switch# exit
cumulus@switch:~$
To view the configured prefix-list, run the vtysh show ip mroute command
or the NCLU net show mroute command. The following command shows
TTL Uptime
1 00:03:3
IGMP br1
1 00:03:38
https://docs.cumulusnetworks.com 1573
Cumulus Linux v4.2 User Documentation Layer 3
1 00:02:08
A multicast sender can send multicast data without any additional IGMP or
PIM signaling. When the FHR receives the multicast traffic, it encapsulates it
and sends a PIM register to the rendezvous point (RP).
When the RP receives the PIM register, it builds an (S,G) mroute; however,
The RP drops the PIM register message and immediately sends a PIM
Receiving a PIM register stop without any associated PIM joins leaves the
FHR without any outgoing interfaces. The FHR drops this multicast traffic
NOTE
PIM register messages are sourced from the interface that receives
the multicast traffic and are destined to the RP address. The PIM
register is not sourced from the interface towards the RP.
1574 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
PIM Null-Register
To notify the RP that multicast traffic is still flowing when the RP has no
receiver, or if the RP is not on the SPT tree, the FHR periodically sends PIM
null register messages. The FHR sends a PIM register with the Null-Register
flag set, but without any data. This special PIM register notifies the RP that
a multicast source is still sending, in case any new receivers come online.
When a receiver sends an IGMPv3 Join with the source defined the LHR
builds an S,G entry and sends a PIM S,G join to the PIM neighbor closest to
the source, according to the routing table.
The full path between LHR and FHR contains an S,G state, although no
multicast traffic is flowing. Periodic IGMPv3 joins between the receiver and
LHR, as well as PIM S,G joins between PIM neighbors, maintain this state
until the receiver leaves.
https://docs.cumulusnetworks.com 1575
Cumulus Linux v4.2 User Documentation Layer 3
When the sender begins, traffic immediately flows over the pre-built SPT
from the sender to the receiver.
In SSM when a sender begins sending, the FHR does not have any existing
mroutes. The traffic is dropped and nothing further happens until a receiver
joins. SSM does no rely on an RP; there is no PIM Register process.
• There is no *,G PIM Join message. The multicast sender is always known
so the PIM Join messages used in SSM are always S,G Join messages.
• There is no Shared Tree or *,G tree. The PIM join message is always sent
towards the source, building the SPT along the way. There is no shared
1576 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 1577
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
NOTE
2. Confirm PIM active-active is configured with the net show pim mlag
summary command:
Peerlink: peerlink.4094
Multicast Sender
receives the traffic, it is forwarded over the MLAG peer link to the other
MLAG-enabled switch, because the peerlink is always considered a
multicast router port and will always receive the multicast stream.
NOTE
The PIM DR for the VLAN where the source resides is responsible for
sending the PIM register towards the RP. The PIM DR is the PIM speaker
with the highest IP address on the segment. After the PIM register process
is complete and traffic is flowing along the Shortest Path Tree (SPT), either
MLAG switch will forward traffic towards the receivers.
Examples are provided below that show the flow of traffic between
server02 and server03:
https://docs.cumulusnetworks.com 1579
Cumulus Linux v4.2 User Documentation Layer 3
register from leaf02. leaf02 syncs the *,G table from leaf01 as an MLAG
active-active peer.
• Step 2: leaf02 has the *,G route indicating that traffic is to be forwarded
toward spine01. Either leaf02 or leaf01 sends this traffic directly based on
which MLAG switch receives it from the attached source. In this case,
leaf02 receives the traffic on the MLAG bond and forwards it directly
upstream.
Step 1 Step 2
To show the PIM DR, run the NCLU net show pim interface command or
the vtysh show ip pim interface command. The following example shows
lo up 10.0.0.11 0
1580 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
local 0 0
pimreg up 0.0.0.0 0
local 0 0
swp51 up 10.0.0.11 1
10.0.0.21 0 4
swp52 up 10.0.0.11 1
10.0.0.22 0 0
vlan12 up 10.1.2.11 1
10.1.2.12 0 2
PIM joins sent towards the source can be ECMP load shared by upstream
PIM neighbors (spine01 and spine02 in the example above). Either MLAG
member can receive the PIM join and forward traffic, regardless of DR
status.
Multicast Receiver
over the peerlink. This allows both MLAG switches to program IGMP and
MDB table forwarding information.
Both switches send *,G PIM Join messages towards the RP. If the source is
https://docs.cumulusnetworks.com 1581
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
Traditionally, the PIM DR is the only node to send the PIM *,G Join,
but to provide resiliency in case of failure, both MLAG switches
send PIM *,G Joins towards the RP to receive the multicast stream.
elected. The DF is the primary member of the MLAG pair. As a result, the
MLAG secondary puts the VLAN in the Outgoing Interface List (OIL),
preventing duplicate multicast traffic.
PIM considers 232.0.0.0/8 the default SSM range. You can change the SSM
You can change the default SSM group or add additional group ranges to
be treated as SSM groups.
NOTE
1582 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
If you use the ssm-range command, all SSM ranges must be in the
https://docs.cumulusnetworks.com 1583
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
that should be treated as SSM groups and deny keyword for those
range
command:
range
https://docs.cumulusnetworks.com 1585
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
Run the net add pim ecmp command to enable PIM to use all the
paths in the event of a loss of path over one of the ECMP paths.
Without this command, only the streams that are using the path that is
lost are moved to alternate ECMP paths. Rebalance does not affect
existing groups.
WARNING
1586 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
To show which nexthop is selected for a specific source/group, run the show
-------------------------------------------
6.0.0.11 lo 0.0.0.0
IP Multicast Boundaries
network.
With such boundaries in place, any incoming IGMP or PIM joins are dropped
or accepted based upon the prefix-list specified. The boundary is
implemented by applying an IP multicast boundary OIL (outgoing interface
list) on an interface.
https://docs.cumulusnetworks.com 1587
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
oil <prefix-list>
You can use the Multicast Source Discovery Protocol (MSDP) to connect
multiple PIM-SM multicast domains together, using the PIM-SM RPs. By
configuring any cast RPs with the same IP address on multiple multicast
a source-active (SA) message is sent to each MSDP peer. The peer then
determines if any receivers are interested.
NOTE
1588 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
https://docs.cumulusnetworks.com 1589
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
32
3. Configure the MSDP mesh group for all active RPs (the following
example uses 3 RPs):
NOTE
PIM in a VRF
VRFs divide the routing table on a per-tenant basis, ultimately providing for
separate layer 3 networks over a single layer 3 infrastructure. With a VRF,
each tenant has its own virtualized layer 3 network, so IP addresses can
overlap between tenants.
PIM in a VRF enables PIM trees and multicast data traffic to run inside a
layer 3 virtualized network, with a separate tree per domain or tenant. Each
VRF has its own multicast tree with its own RP(s), sources, and so on.
Therefore, you can have one tenant per corporate division, client, or
product; for example.
https://docs.cumulusnetworks.com 1591
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
First, add the VRFs and associate them with switch ports:
Then add the PIM configuration to FRR, review and commit the
changes:
1592 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
To show VRF information, run the NCLU net show mroute vrf <vrf-name>
TTL Uptime
1 00:01:13
IGMP br0.200
1 00:01:13
1 00:01:13
IGMP swp32s1
1 00:01:12
IGMP br0.200
1 00:01:13
You can use bidirectional forward detection (BFD) for PIM neighbors to
quickly detect link failures. When you configure an interface, include the pim
https://docs.cumulusnetworks.com 1593
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands vtysh Commands
Verify PIM
The following outputs are based on the Cumulus Reference Topology with
cldemo-pim.
1594 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
So
Sour
urc
ce S
Sta
tarrts Fi
Firs
rstt
On the FHR, an mroute is built, but the upstream state is Prune. The
FHR flag is set on the interface receiving multicast. Run the NCLU net
show commands to review detailed output for the FHR. For example:
none 0 --:--:--
RefCnt
00:02:50 1
DR FHR
br0 up 172.16.5.1 0
local 1
swp51 up 10.1.0.17 1
https://docs.cumulusnetworks.com 1595
local 0
Cumulus Linux v4.2 User Documentation Layer 3
Troubleshooting
When a multicast source starts, the FHR sends unicast PIM register
messages from the RPF interface towards the source. After the PIM register
is received by the RP, a PIM register stop message is sent from the RP to
the FHR to end the register process. If an issue occurs with this
Review the FHR. The output interface of pimreg can be seen here. If this
does not change to an interface within a few seconds, the FHR is likely
stuck.
TTL Uptime
1 00:03:59
1596 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
1. Validate that the FHR can reach the RP. If the RP and FHR can not
communicate, the registration process fails:
of data.
^C
3000ms
2. On the RP, use tcpdump to see if the PIM register packets are arriving:
protocol decode
262144 bytes
length 66
3. If PIM registration packets are being received, verify that they are seen by
PIM by issuing debug pim packets from within FRRouting:
https://docs.cumulusnetworks.com 1597
Cumulus Linux v4.2 User Documentation Layer 3
pim_msg_size=64 checksum=a681
4. Repeat the process on the FHR to see if PIM register stop messages are
length 28
Stop, length 18
1598 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
pim_msg_size=18 checksum=5a39
The most common reason for a *,G to not be built on an LHR is for if both
PIM an
andd IGMP are not enabled on an interface facing a receiver.
interface br0
ip igmp
ip pim sm
To troubleshoot this issue, if both PIM and IGMP are enabled, ensure that
IGMPv3 joins are being sent by the receiver:
protocol decode
262144 bytes
https://docs.cumulusnetworks.com 1599
Cumulus Linux v4.2 User Documentation Layer 3
protocol decode
262144 bytes
length 9
interface br0
1600 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
ip pim sm
3. If PIM is configured, verify that the RPF interface for the source matches
the interface on which the multicast traffic is received:
An RP does not build an mroute when there are no active receivers for a
multicast group, even though the mroute was created on the FHR.
https://docs.cumulusnetworks.com 1601
Cumulus Linux v4.2 User Documentation Layer 3
TTL Uptime
spine01#
TTL Uptime
0 --:--:--
This is expected behavior. You can see the active source on the RP with
either the NCLU net show pim upstream command or the vtysh show ip pim
upstream command:
1602 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
You can also run the NCLU command equivalent:net show system
To verify the state of MSDP sessions, run either the NCLU net show msdp
https://docs.cumulusnetworks.com 1603
Cumulus Linux v4.2 User Documentation Layer 3
Source : 100.1.1.1
Member State
100.1.1.2 established
100.1.1.3 established
cumulus@switch:~$
To review the active sources learned locally (through PIM registers) and
from MSDP peers, run either the NCLU net show msdp sa command or the
SPT Uptime
00:00:40
00:00:25
1604 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Example Configurations
Considerations
https://docs.cumulusnetworks.com 1605
Cumulus Linux v4.2 User Documentation Layer 3
GRE Tunneling
WARNING
GRE packets travel directly between the two endpoints through a virtual
tunnel. As a packet comes across other routers, there is no interaction with
its payload; the routers only parse the outer IP packet. When the packet
reaches the endpoint of the GRE tunnel, the outer packet is de-
encapsulated, the payload is parsed, then forwarded to its ultimate
destination.
1606 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
The following example shows two sites that use IPv4 addresses. Using GRE
tunneling, the two end points can encapsulate an IPv4 or IPv6 payload
inside an IPv4 packet. The packet is routed based on the destination in the
To configure GRE tunneling, you create a GRE tunnel interface with routes
for tunneling on both endpoints as follows:
https://docs.cumulusnetworks.com 1607
Cumulus Linux v4.2 User Documentation Layer 3
The local tunnel endpoint for Tunnel-R1 is 10.0.0.9 and the remote endpoint
is 10.0.0.2. The local tunnel endpoint for Tunnel-R2 is 10.0.0.2 and the
Tunnel-R
nnel-R11 c
comman
ommands
ds::
1608 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Tunnel-R
nnel-R22c
comman
ommands
ds::
...
# Tunnel-R1 configuration
https://docs.cumulusnetworks.com 1609
Cumulus Linux v4.2 User Documentation Layer 3
iface swp1
link-speed 10000
link-duplex full
link-autoneg off
address 10.0.0.9/24
auto Tunnel-R2
iface Tunnel-R2
tunnel-mode gre
tunnel-endpoint 10.0.0.2
tunnel-local 10.0.0.9
tunnel-ttl 255
address 10.0.100.1
# Tunnel-R2 configuration
iface swp1
link-speed 10000
link-duplex full
link-autoneg off
address 10.0.0.2/24
auto Tunnel-R1
1610 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
iface Tunnel-R1
tunnel-mode gre
tunnel-endpoint 10.0.0.9
tunnel-local 10.0.0.2
tunnel-ttl 255
address 10.0.200.1
To check GRE tunnel settings, run the ip tunnel show command or the
auto Tunnel-R1
iface Tunnel-R1
[pass]
https://docs.cumulusnetworks.com 1611
Cumulus Linux v4.2 User Documentation Layer 3
R1 []
tunnel-ttl 255
[pass]
tunnel-endpoint 10.0.0.9
[pass]
tunnel-local 10.0.0.2
[pass]
tunnel-mode gre
[pass]
address 10.0.200.1/32
[pass]
To delete a GRE tunnel, remove the tunnel interface, and remove the routes
configured with the tunnel interface, run the ip tunnel del command. For
example:
1612 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
sure you run the ifreload - a command after you update the
interfaces file.
This action is disruptive as the tunnel is removed, then recreated
with the new settings.
Use the ip tunnel change command to make changes to the GRE tunnel
NOTE
You can make changes to GRE tunnel settings directly in the /etc/
https://docs.cumulusnetworks.com 1613
Cumulus Linux v4.2 User Documentation Layer 3
command. Make sure you run the ifreload - a command after you
1614 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
addresses, NAT enables you to use the private address space internally and
still have a way to access the Internet.
Cumulus Linux supports both static NAT and dynamic NAT. Static NAT
provides a permanent mapping between one private IP address and a
single public address. Dynamic NAT maps private IP addresses to public
addresses; these public IP addresses come from a pool. The translations are
created as needed dynamically, so that a large number of private addresses
• Basic NAT, which only translates the IP address in the packet: the source
IP address in the outbound direction and the destination IP address in
https://docs.cumulusnetworks.com 1615
Cumulus Linux v4.2 User Documentation Layer 3
NOTE
1616 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Static NAT
Static NAT entries do not time out from the translation table.
...
# NAT configuration
# Enables NAT
nat.static_enable = TRUE
...
https://docs.cumulusnetworks.com 1617
Cumulus Linux v4.2 User Documentation Layer 3
WARNING
hardware configuration.
NOTE
For static PAT, create a rule that matches a source or destination IP address
1618 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
together with the layer 4 port and translates the IP address and port to a
public IP address and port.
incoming interface.
https://docs.cumulusnetworks.com 1619
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands cl-acltool Commands
NAT
PAT
address> <port>
Where:
switches only)
Comman
ommandd Example
ampless
The following rule matches TCP packets with source IP address 10.0.0.1
Dynamic NAT
...
# NAT configuration
# Enables NAT
nat.dynamic_enable = TRUE
...
https://docs.cumulusnetworks.com 1621
Cumulus Linux v4.2 User Documentation Layer 3
WARNING
NOTE
options for dynamic NAT. Only change these options if dynamic NAT is
enabled.
Option De
Desscription
1622 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Option De
Desscription
After you change any of the dynamic NAT configuration options, restart
switchd.
WARNING
https://docs.cumulusnetworks.com 1623
Cumulus Linux v4.2 User Documentation Layer 3
For dynamic NAT, create a rule that matches a IP address in CIDR notation
For dynamic PAT, create a rule that matches an IP address in CIDR notation
and translates the address to a public IP address and port range or an IP
address range and port range. You can also match on an IP address in CIDR
notation and port.
1624 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands cl-acltool Commands
NAT
<ipv4-address/prefixlen>|destination-ip <ip-address/
<ipv4-address>|<ip-address-range>
PAT
<ipv4-address/prefixlen>|destination-ip <ipv4-address/
range>|<ipv4-address-range> <port-range>
Where:
switches only)
https://docs.cumulusnetworks.com 1625
Example C
Comman
ommands
ds
Cumulus Linux v4.2 User Documentation Layer 3
To see the NAT rules configured on the switch, run the sudo iptables -t
...
anywhere to:172.30.58.80
To see the currently active connection tracking (conntrack) flows, run the
sudo cat /proc/net/nf_conntrack command. The hardware offloaded flows
1626 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Bidirectional Forwarding
Detection - BFD
Bidirectional Forwarding Detection (BFD) provides low overhead and rapid
detection of failures in the paths between two network devices. It provides
a unified mechanism for link detection over all media and protocol layers.
Use BFD to detect failures for IPv4 and IPv6 single or multihop paths
between any two network devices, including unidirectional path failure
detection.
NOTE
BFD multihop sessions are built over arbitrary paths between two systems,
which results in some complexity that does not exist for single hop
sessions. Here are some best practices for using multihop paths:
count (max_hop_cnt*)* for each peer, which limits the number of hops for
a BFD session. All BFD packets exceeding the maximum hop count are
dropped.
https://docs.cumulusnetworks.com 1627
Cumulus Linux v4.2 User Documentation Layer 3
Cumulus Linux supports multihop BFD sessions for both IPv4 and IPv6
peers.
Configure BFD
You can configure BFD by either using FRRouting (with NCLU or vtysh
• The topology file supports BFD IPv4 and IPv6 single hop sessions only;
you cannot specify IPv4 or IPv6 multihop sessions in the topology file.
• The topology file supports BFD sessions for only link-local IPv6 peers;
BFD sessions for global IPv6 peers discovered on the link are not
created.
Use FRRouting to register multihop peers with PTM and BFD as well as to
monitor the connectivity to the remote BGP multihop peer. FRRouting can
dynamically register and unregister both IPv4 and IPv6 peers with BFD
1628 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
NOTE
NOTE
must be in the ARP table before BFD can start sending control
packets.
When you configure BFD, you can set the following parameters for both
IPv4 and IPv6 sessions. If you do not set these parameters, the default
values are used.
https://docs.cumulusnetworks.com 1629
Cumulus Linux v4.2 User Documentation Layer 3
BFD in BGP
When you configure BFD in BGP, neighbors are registered and deregistered
with PTM dynamically.
NOTE
neighbor.
1630 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
The following example configures BFD for swp1 and uses the default
intervals.
The following example configures BFD for the peer group fabric and
The NCLU and vtysh commands save the configuration in the /etc/frr/
https://docs.cumulusnetworks.com 1631
Cumulus Linux v4.2 User Documentation Layer 3
...
...
To see neighbor information in BGP, including BFD status, run the NCLU net
...
...
BFD in OSPF
When you enable or disable BFD in OSPF, neighbors are registered and de-
registered dynamically with PTM. When BFD is enabled on the interface, a
neighbor is registered with BFD when two-way adjacency is established
and deregistered when adjacency goes down. The BFD configuration is per
interface and any IPv4 and IPv6 neighbors discovered on that interface
1632 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands vtysh Commands
The NCLU and vtysh commands save the configuration in the /etc/frr/
...
interface swp1
...
https://docs.cumulusnetworks.com 1633
Cumulus Linux v4.2 User Documentation Layer 3
• To show IPv6 OSPF interface information, run the NCLU net show ospf6
<interface> command.
• To show IPv4 OSPF interface information, run the NCLU net show ospf
<interface> command.
Interface ID: 4
Internet Address:
inet : 11.0.0.21/30
inet6: fe80::4638:39ff:fe00:6c8e/64
1634 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
• To show IPv6 OSPF neighbor details, run the NCLU net show ospf6
command.
• To show IPv4 OSPF interface information, run the NCLU net show ospf
command.
Neighbor 0.0.0.4%swp2s0
Summary-List: 0 LSAs
Request-List: 0 LSAs
https://docs.cumulusnetworks.com 1635
Cumulus Linux v4.2 User Documentation Layer 3
Retrans-List: 0 LSAs
300
Scripts
Echo Function
Cumulus Linux supports the echo function for IPv4 single hops only, and
with the asynchronous operating mode only (Cumulus Linux does not
support demand mode).
Use the echo function to test the forwarding path on a remote system. To
enable the echo function, set echoSupport to 1 in the topology file.
1636 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
After the echo packets are looped by the remote system, the BFD control
packets can be sent at a much lower rate. You configure this lower rate by
setting the slowMinTx parameter in the topology file to a non-zero value in
milliseconds.
You can use more aggressive detection times for echo packets because the
round-trip time is reduced; echo packets access the forwarding path. You
can configure the detection interval by setting the echoMinRx parameter in
This indicates to the peer that the local system can loop back the echo
packets. Echo packets are transmitted if the peer supports receiving echo
packets.
BFD echo packets are encapsulated into UDP packets over destination and
source UDP port number 3785. The BFD echo packet format is vendor-
specific and has not been defined in the RFC. BFD echo packets that
originate from Cumulus Linux are 8 bytes long and have the following
format:
0 1 2 3
My
Discriminator
Where:
https://docs.cumulusnetworks.com 1637
Cumulus Linux v4.2 User Documentation Layer 3
• Vers
rsion
ion is the version of the BFD echo packet.
• Length is the length of the BFD echo packet.
• My Di
Disscrimina
iminattor is a non-zero value that uniquely identifies a BFD
session on the transmitting side. When the originating node receives the
packet after being looped back by the receiving system, this value
uniquely identifies the BFD session.
BFD echo packets are transmitted for a BFD session only when the peer
has advertised a non-zero value for the required minimum echo Rx interval
(the echoMinRx setting) in the BFD control packet when the BFD session
starts. The transmit rate of the echo packets is based on the peer
advertised echo receive value in the control packet.
BFD echo packets are looped back to the originating node for a BFD
session only if locally the echoMinRx and echoSupport are configured to a
non-zero values.
You configure the echo function by setting the following parameters in the
• echoS
echoSuuppo
pporrt enables and disables echo mode. Set to 1 to enable the
echo function. It defaults to 0 (disable).
• echoMinRx is the minimum interval between echo packets the local
1638 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Troubleshooting
To troubleshoot BFD, run the NCLU net show bfd sessions or net show bfd
----------------------------------------------------------------------------------
tx_timeout rx_timeout
mult
----------------------------------------------------------------------------------
300 900
300 900
#continuation of output
---------------------------------------------------------------------
https://docs.cumulusnetworks.com 1639
Cumulus Linux v4.2 User Documentation Layer 3
tx_echo
---------------------------------------------------------------------
Related Information
1640 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
• arp_accept
• arp_announce
• arp_filter
• arp_ignore
• arp_notify
https://docs.cumulusnetworks.com 1641
Cumulus Linux v4.2 User Documentation Layer 3
are based on the assertion made long ago that Linux IP addresses are a
property of the device, not a property of an individual interface. Therefore,
an ARP request or reply could be sent on one interface containing an
The ARP tunable parameters are set to the following values by default in
Cumulus Linux.
Paramet
amete
er Setting Type De
Desscription
• 0: Do not
create new
entries in
the ARP
1642 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
table.
• 1: Create
new entries
in the ARP
table.
Cumulus
Linux uses
the default
arp_accept
behavior of
not creating
new entries in
the ARP table
when a
gratuitous
ARP is seen
on an
interface or
when an ARP
reply packet
is received.
However, an
individual
interface can
have the
arp_accept
behavior set
differently
than the
remainder of
the switch if
https://docs.cumulusnetworks.com 1643
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
needed. For
information
on how to
apply this
port-specific
behavior, see
below.
• 0: (default)
Use any
local
address,
configured
on any
interface.
• 1: Try to
avoid local
addresses
that are not
in the
1644 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
target’s
subnet for
this
interface.
This mode
is useful
when
target
hosts
reachable
via this
interface
require the
source IP
address in
ARP
requests to
be part of
their logical
network
configured
on the
receiving
interface.
When
Cumulus
Linux
generates
the
request, it
checks all
subnets
https://docs.cumulusnetworks.com 1645
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
that include
the target
IP and
preserves
the source
address if it
is from
such a
subnet. If
there is no
such
subnet.
Cumulus
Linux
selects the
source
address
according
to the rules
for level 2.
• 2: Always
use the
best local
address for
this target.
In this
mode
Cumulus
Linux
ignores the
source
address in
1646 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
the IP
packet and
tries to
select local
address
preferred
for talks
with the
target host.
Such local
address is
selected by
looking for
primary IP
addresses
on all the
subnets on
the
outgoing
interface
that include
the target
IP address.
If no
suitable
local
address is
found,
Cumulus
Linux
selects the
first local
https://docs.cumulusnetworks.com 1647
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
address on
the
outgoing
interface or
on all other
interfaces,
so that a
reply for
the request
is received
no matter
the source
IP address
announced.
The default
Debian
behavior with
arp_announce
set to 0 is to
send
gratuitous
ARPs or ARP
requests
using any
local source
IP address,
not limiting
the IP source
of the ARP
packet to an
address
residing on
1648 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
the interface
used to send
the packet.
This reflects
the
historically
held view in
Linux that IP
addresses
reside inside
the device
and are not
considered a
property of a
specific
interface.
Routers
expect a
different
relationship
between the
IP address
and the
physical
network.
Adjoining
routers look
for MAC/IP
addresses to
reach a next
hop residing
on a
https://docs.cumulusnetworks.com 1649
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
connecting
interface for
transiting
traffic. By
setting the
arp_announce
parameter to
2, Cumulus
Linux uses
the best local
address for
each ARP
request,
preferring
primary
addresses on
the interface
used to send
the ARP. This
most closely
matches
traditional
router ARP
request
behavior.
arp_filter 0 BOOL
• 0: (default)
The kernel
can
respond to
ARP
requests
1650 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
with
addresses
from other
interfaces
to increase
the chance
of
successful
communication.
IP
addresses
are owned
by the
complete
host on
Linux, not
by
particular
interfaces.
Only for
more
complex
setups like
load
balancing,
does this
behavior
cause
problems.
• 1: Allows
you to have
multiple
https://docs.cumulusnetworks.com 1651
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
network
interfaces
on the
same
subnet and
to have the
ARPs for
each
interface
answered
based on
whether or
not the
kernel
routes a
packet
from the
ARPd IP
address out
of that
interface
(therefore
you must
use source
based
routing for
this to
work). In
other
words, it
allows
control of
1652 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
which
cards
(usually 1)
will
respond to
an ARP
request.
arp_filter
for the
interface is
enabled if at
least one of
conf/{all,interface}/arp_fi
is set to
TRUE, it is
disabled
otherwise.
Cumulus
Linux uses
the default
Debian Linux
arp_filter
setting of 0.
The
arp_filter
is primarily
used when
multiple
interfaces
reside in the
same subnet
https://docs.cumulusnetworks.com 1653
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
and is used to
allow or
disallow
which
interfaces
respond to
ARP requests.
For OSPF
using IP
unnumbered
interfaces,
many
interfaces
appear to be
in the same
subnet, and
so actually
contain the
same
address. If
multiple
interfaces are
used between
a pair of
routers,
having
arp_filter
set to 1
causes
forwarding to
fail.
The
1654 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
arp_filter
parameter is
set to allow a
response on
any interface
in the subnet,
where the
arp_ignore
setting
(below) to
limit cross-
interface ARP
behavior.
• 0: (default)
Reply for
any local
target IP
address,
configured
on any
https://docs.cumulusnetworks.com 1655
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
interface.
• 1: Reply
only if the
target IP
address is
local
address
configured
on the
incoming
interface.
• 2: Reply
only if the
target IP
address is
local
address
configured
on the
incoming
interface
and both
with the
sender’s IP
address are
part from
same
subnet on
this
interface.
• 3: Do not
reply for
1656 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
local
addresses
configured
with scope
host, only
resolutions
for global
and link
addresses
are replied.
• 4-7:
Reserved.
• 8: Do not
reply for all
local
addresses.
The maximum
value from
conf/{all,interface}/arp_ig
is used when
the ARP
request is
received on
the
{interface}.
The default
Debian
arp_ignore
parameter
allows the
device to
https://docs.cumulusnetworks.com 1657
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
reply to an
ARP request
for any IP
address on
any interface.
While this
matches the
expectation
that an IP
address
belongs to
the device,
not an
interface, it
can cause
some
unexpected
and
undesirable
behavior on a
router.
For example,
if the
arp_ignore
parameter is
set to 0 and
an ARP
request is
received on
one interface
for the IP
address
1658 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
residing on a
different
interface, the
switch
responds with
an ARP reply
even if the
interface of
the target
address is
down. This
can cause a
loss of traffic
due to
incorrect
understanding
about the
reachability
of next hops,
and also
makes
troubleshooting
extremely
challenging
for some
failure
conditions.
In Cumulus
Linux, the
arp_ignore
value is set to
2 so that it
https://docs.cumulusnetworks.com 1659
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
only replies to
ARP requests
if the target
IP address is
a local
address and
both the
sender’s and
target’s IP
addresses are
part of the
same subnet
on the
incoming
interface. This
should
prevent the
creation of
stale
neighbor
entries when
a peer device
sends an ARP
request from
a source IP
address that
is not on the
connected
subnet.
Eventually,
the switch
sends ARP
requests to
1660 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
the host in an
attempt to
keep the
entry fresh. If
the host
responds, the
switch now
has reachable
neighbor
entries for
hosts that are
not on the
connected
subnet.
• 0: (default)
Do nothing.
• 1: Generate
gratuitous
arp
requests
when
device is
brought up
or
hardware
https://docs.cumulusnetworks.com 1661
Cumulus Linux v4.2 User Documentation Layer 3
Paramet
amete
er Setting Type De
Desscription
address
changes.
The default
Debian
arp_notify
setting is to
remain silent
when an
interface is
brought up or
the hardware
address is
changed.
Since
Cumulus
Linux often
acts as a
next-hop for
many end
hosts, it
immediately
notifies
attached
devices when
an interface
comes up or
the address
changes. This
speeds up
convergence
on the new
information
1662 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
Paramet
amete
er Setting Type De
Desscription
and provides
the most
rapid support
for changes.
You can change the ARP parameter settings in several places, including:
The ARP parameter changes in Cumulus Linux use the default file locations.
The all and default locations sound similar, with the exception of which
ARP P
Paaramet
amete
er Con
onddition
arp_accept OR
arp_announce MAX
arp_filter OR
https://docs.cumulusnetworks.com 1663
Cumulus Linux v4.2 User Documentation Layer 3
ARP P
Paaramet
amete
er Con
onddition
arp_ignore MAX
arp_notify MAX
on a per-port basis, interface swp1 still uses the value of 1; the port-specific
setting does not override the global all setting. Instead, the MAX value
between the all value and port-specific value defines the actual behavior.
values for all future IP interfaces. Changing the default setting of an ARP
parameter does not impact interfaces that already contain an IP address. If
changes are being made to a running system that already has IP addresses
assigned to it, port-specific settings should be used instead.
NOTE
1664 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
To determine the current ARP parameter settings for each of the locations,
run the following commands:
/proc/sys/net/ipv4/conf/all/arp_accept:0
/proc/sys/net/ipv4/conf/all/arp_announce:0
/proc/sys/net/ipv4/conf/all/arp_filter:0
/proc/sys/net/ipv4/conf/all/arp_ignore:0
/proc/sys/net/ipv4/conf/all/arp_notify:0
arp*
/proc/sys/net/ipv4/conf/default/arp_accept:0
/proc/sys/net/ipv4/conf/default/arp_announce:2
/proc/sys/net/ipv4/conf/default/arp_filter:0
/proc/sys/net/ipv4/conf/default/arp_ignore:2
/proc/sys/net/ipv4/conf/default/arp_notify:1
/proc/sys/net/ipv4/conf/swp1/arp_accept:0
/proc/sys/net/ipv4/conf/swp1/arp_announce:2
/proc/sys/net/ipv4/conf/swp1/arp_filter:0
https://docs.cumulusnetworks.com 1665
Cumulus Linux v4.2 User Documentation Layer 3
/proc/sys/net/ipv4/conf/swp1/arp_ignore:2
/proc/sys/net/ipv4/conf/swp1/arp_notify:1
cumulus@switch:~$
Cumulus Linux implements this change at boot time using the arp.conf file
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.default.arp_notify = 1
net.ipv4.conf.default.arp_ignore=1
cumulus@switch:~$
swp1/arp_ignore"
1666 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
/proc/sys/net/ipv4/conf/swp1/arp_accept:0
/proc/sys/net/ipv4/conf/swp1/arp_announce:2
/proc/sys/net/ipv4/conf/swp1/arp_filter:0
/proc/sys/net/ipv4/conf/swp1/arp_ignore:0
/proc/sys/net/ipv4/conf/swp1/arp_notify:1
cumulus@switch:~$
When you enable proxy ARP, if the switch receives an ARP request for
which it has a route to the destination IP address, the switch sends a proxy
ARP reply that contains its own MAC address. The host that sent the ARP
request then sends its packets to the switch and the switch forwards the
packets to the intended host.
NOTE
https://docs.cumulusnetworks.com 1667
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands Linux Commands
/proc/sys/net/ipv4/conf/swp1/proxy_arp"
If you are running two interfaces in the same broadcast domain (typically
seen when using VRR, which creates a -v0 interface in the same broadcast
the interface and the -v0 interface so that both interfaces do not respond
1668 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
/proc/sys/net/ipv4/conf/swp1/medium_id"
> /proc/sys/net/ipv4/conf/swp1-v0/proxy_arp"
> /proc/sys/net/ipv4/conf/swp1-v0/medium_id"
If you are running proxy ARP on a VRR interface, add a post-up line to the
VRR interface stanza similar to the following. For example, if vlan100 is the
VRR interface for the configuration above:
https://docs.cumulusnetworks.com 1669
Cumulus Linux v4.2 User Documentation Layer 3
•
NCLU Commands Linux Commands
sys/net/ipv4/conf/swp1/proxy_arp"
sys/net/ipv4/conf/swp1-v0/proxy_arp"
sys/net/ipv4/conf/swp1/medium_id"
sys/net/ipv4/conf/swp1-v0/medium_id"
assigned to the SVI. The neighmgrd service selects a source IP address for
1670 https://docs.cumulusnetworks.com
Layer 3 Cumulus Linux v4.2 User Documentation
The configuration above takes effect immediately but does not persist if
you reboot the switch. To make the changes apply persistently:
[main]
setsrcipv4: 10.1.0.2
https://docs.cumulusnetworks.com 1671
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Monitoring and
Troubleshooting
This chapter introduces the basics for monitoring and troubleshooting
Cumulus Linux.
Serial Console
The serial console is a useful tool for debugging issues, especially when you
find yourself rebooting the switch often or if you do not have a reliable
network connection.
The default serial console baud rate is 115200, which is the baud rate ONIE
uses.
baud rate of the serial console. To change the baudrate variable, use the
fw_setenv command:
1672 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
You must reboot the switch for the baudrate change to take effect.
• 300
• 600
• 1200
• 2400
• 4800
• 9600
• 19200
• 38400
• 115200
On x86 switches, you configure serial console baud rate by editing grub.
WARNING
https://docs.cumulusnetworks.com 1673
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
• 300
• 600
• 1200
• 2400
• 4800
• 9600
• 19200
• 38400
• 115200
grub are as follows; replace the 115200 value with a valid value specified
above in the --speed variable in the first line and in the console variable in
GRUB_CMDLINE_LINUX="console=ttyS1,115200n8
cl_platform=accton_as5712_54x"
2. After you save your changes to the grub configuration, type the following
at the command prompt:
1674 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
cumulus@switch:~$ update-grub
3. If you plan on accessing the switch BIOS over the serial console, you
need to update the baud rate in the switch BIOS. For more information,
see this knowledge base article.
By default, the console prints all log messages except debug messages. To
tune console logging to be less verbose so that certain levels of messages
are not printed, run the dmesg -n <level> command, where the log levels
are:
Level De
Desscription
https://docs.cumulusnetworks.com 1675
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Level De
Desscription
6 Informational messages.
7 Debug messages.
Only messages with a value lower than the level specified are printed to the
console. For example, if you specify level 3, only level 2 (critical conditions),
level 1 (serious conditions), and level 0 (emergency messages) are printed
to the console:
the log levels are emerg, alert, crit, err, warn, notice, info, or debug. For
1676 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
For more details about the dmesg command, run man dmesg.
Two commands are helpful for getting general information about the
switch and the version of Cumulus Linux you are running. These are helpful
with system diagnostics and if you need to submit a support request.
For information about the version of Cumulus Linux running on the switch,
run the net show version,command which displays the contents of /etc/
lsb-release:
NCLU_VERSION=1.0-cl4u1
DISTRIB_ID="Cumulus Linux"
DISTRIB_RELEASE=4.1.0
For general information about the switch, run net show system, which
gathers information about the switch from a number of files in the system:
https://docs.cumulusnetworks.com 1677
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Hostname......... celRED
Memory........... 4GB
Disk............. 14.9GB
You can use cl-support to generate a single export file that contains
various details and the configuration from a switch. This is useful for remote
Run cl-support before you submit a support request as this file helps in the
investigation of issues.
1678 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
[-p prefix] [-r reason] [-S dir] [-T Timeout_seconds] [-t tag]
-d: Disable (do not run) modules in this comma separated list
-e: Enable (only run) modules in this comma separated list; "-
e all" runs
modules
...
You can configure the remote syslog server on the switch using the
following configuration:
udp 514
https://docs.cumulusnetworks.com 1679
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
Logging on Cumulus Linux is done with rsyslog. rsyslog provides both local
logging to the syslog file as well as the ability to export logs to an external
syslog server. High precision timestamps are enabled for all rsyslog log
1680 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
There are applications in Cumulus Linux that can write directly to a log file
without going through rsyslog. These files are typically located in /var/
log/.
NOTE
Local Logging
Most logs within Cumulus Linux are sent through rsyslog, which writes
them to files in the /var log directory. There are default rules in the /etc/
Rule Pur
urpo
posse
https://docs.cumulusnetworks.com 1681
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rule Pur
urpo
posse
Log files that are rotated are compressed into an archive. Processes that do
not use rsyslog write to their own log files within the /var/log directory.
1682 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
For more information on specific log files, see Troubleshooting Log Files.
By default, not all log messages are sent to a remote server. To send other
log files (such as switchd logs) to a syslog server, follow these steps:
@192.168.1.2:514
This configuration sends log messages to a remote syslog server for the
UDP, 192.168.12 is the IP address of the syslog server, and 514 is the UDP
port.
NOTE
https://docs.cumulusnetworks.com 1683
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
unavailable.
frr.log file on the local disk only (these messages are not
1684 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
frr.log file).
rsyslogd.
2. Restart rsyslog.
You can write to syslog with management VRF enabled by applying the
following configuration; this configuration is commented out in the /etc/
rsyslog.d/11-remotesyslog.conf file:
https://docs.cumulusnetworks.com 1685
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Port="514" Protocol="udp")
For each syslog server, configure a unique action line. For example, to
Port="514" Protocol="udp")
Protocol="udp")
If you want to limit the number of syslog messages that can be written to
the syslog file from individual processes, add the following configuration to
the /etc/rsyslog.conf file. Adjust the interval and burst values to rate-limit
1686 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
module(load="imuxsock"
SysSock.RateLimit.Interval="2"
SysSock.RateLimit.Burst="50")
Linux
Invalid argument
attempts to change group attributes that are read only. The upstream
version of systemd has been modified to not log this message by default.
packages are installed, so the message may be seen multiple times when
upgrading packages.
https://docs.cumulusnetworks.com 1687
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
To verify that the rsyslog service is running, use the sudo systemctl status
rsyslog.service command:
7min ago
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
CGroup: /system.slice/rsyslog.service
└─11751 /usr/sbin/rsyslogd -n
Service.
1688 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
use the sudo rsyslogd -N1 command to identify any errors in the
configuration files that might prevent the rsyslog service from starting.
management VRF:
11-remotesyslog.conf
Port="514" Protocol="udp"
/www.rsyslog.com/e/2207 ]
After correcting the invalid syntax, issuing the sudo rsyslogd -N1 command
https://docs.cumulusnetworks.com 1689
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
11-remotesyslog.conf
Port="514" Protocol="udp")
tcpdump
1690 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
protocol decode
262144 bytes
To see the contents of the syslog file, use the tcpdump -X option:
protocol decode
262144 bytes
https://docs.cumulusnetworks.com 1691
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
0x0000: 4500 0085 33ee 4000 4011 8420 c0a8 000b E...3.@.@.......
0x0010: c0a8 00fe 8453 0202 0071 9d18 3c38 353e .....S...q..<85>
0x0020: 4465 6320 2039 2030 303a 3539 3a31 3520 Dec..9.00:59:15.
0x0030: 6c65 6166 3031 2073 7564 6f3a 2020 6375 leaf01.sudo:..cu
0x0040: 6d75 6c75 7320 3a20 5454 593d 7074 732f mulus.:.TTY=pts/
0x0050: 3120 3b20 5057 443d 2f68 6f6d 652f 6375 1.;.PWD=/home/cu
0x0060: 6d75 6c75 7320 3b20 5553 4552 3d72 6f6f mulus.;.USER=roo
0x0070: 7420 3b20 434f 4d4d 414e 443d 2f62 696e t.;.COMMAND=/bin
1692 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
• decode-syseeprom
• smond
• sensors
• Net-SNMP
• watchdog
the switch’s EEPROM. If the EEPROM is writable, you can set values on the
EEPROM.
cumulus@switch:~$ decode-syseeprom
TlvInfo Header:
Id String: TlvInfo
Version: 1
https://docs.cumulusnetworks.com 1693
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
(checksum valid)
IMPORTANT
1694 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
psu2
Command Options
<target>][-e][-m]
Option
De
Desscription
https://docs.cumulusnetworks.com 1695
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Option
De
Desscription
Not
ote
e: Some systems that use a
BMC to manage sensors (such as
the Dell Z9264 and EdgeCore
Minipack AS8000) do not
provide the PSU EEPROM
contents. This is because the
BMC connects to the PSUs via
I2C and the main CPU of the
switch has no direct access.
1696 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Option
De
Desscription
management interfaces.
Related Commands
You can use apt-get to install the lshw program on the switch, which also
The smond daemon monitors system units like power supply and fan,
updates their corresponding LEDs, and logs the change in the state.
Changes in system unit state are detected via the cpld registers. smond
utilizes these registers to read all sources, which impacts the health of the
system unit, determines the unit’s health, and updates the system LEDs.
Use smonctl to display sensor information for the various system units:
https://docs.cumulusnetworks.com 1697
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Board : OK
Fan : OK
PSU1 : OK
PSU2 : BAD
NOTE
When the switch is not powered on, smonctl shows the PSU status
1698 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
NOTE
On the Dell S4148 switch, smonctl shows PSU1 and PSU2; however
NOTE
For example, the Dell S4048 series has this sensor and displays
power and voltage information:
PSU2: OK
= ['0.72'] A)
PSU1: OK
https://docs.cumulusnetworks.com 1699
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Option
De
Desscription
You can also run these NCLU commands to show sensor information: net
show system sensors, net show system sensors detail, and net show
Use the sensors command to monitor the health of your switch hardware,
such as power, temperature and fan speeds. This command executes lm-
sensors.
NOTE
1700 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Even though you can use the sensors command to monitor the
For example:
cumulus@switch:~$ sensors
tmp75-i2c-6-48
tmp75-i2c-6-49
ltc4215-i2c-7-40
in1: +11.87 V
in2: +11.98 V
power1: 12.98 W
curr1: +1.09 A
https://docs.cumulusnetworks.com 1701
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
max6651-i2c-8-48
NOTE
is at maximum speed.
Option
De
Desscription
1702 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Option
De
Desscription
• lm78-i2c-0-2d *-i2c-0-2d
• lm78-i2c-0-* *-i2c-0-*
• lm78-i2c-*-2d *-i2c-*-2d
• lm78-i2c-*-* *-i2c-*-*
• lm78-isa-0290 *-isa-0290
• lm78-isa-* *-isa-*
• lm78-*
https://docs.cumulusnetworks.com 1703
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
once per minute. Each write delays the reboot time by another minute.
You can modify the settings for the watchdog — like the timeout setting
and scheduler priority — in the configuration file, /etc/watchdog.conf. Here
1704 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
watchdog-device = /dev/watchdog
watchdog-timeout = 30
interval = 5
Requires
logtick = 240
slightly
realtime = no
priority = -2
Related Information
• packages.debian.org/search?keywords=lshw
• lm-sensors.org
https://docs.cumulusnetworks.com 1705
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
• Net-SNMP tutorials
1706 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
network port and status LEDs should appear on the front panel of a
network switch. This provides a network operator with a standard way to
identify the state of a switch and its ports by looking at its front panel,
irrespective of the hardware vendor or NOS.
A network port LED indicates the state of the link, such as link UP or Tx/Rx
activity. Here are the requirements for these LEDs:
• Nu
Numbe
mberr of L
LEEDs pe
perr po
porrt - Ports that cannot be split; for example, 1G
ports must have 1 LED per port. Ports that can be split should have 1 LED
per split port. So a 40G port that can be split into 4 10G ports has 4
to prevent confusion.
• Port Nu
Numbe
mberr Label - The port number must be printed in white on the
https://docs.cumulusnetworks.com 1707
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
at a lower speed.
◦ Ph
Phy
ysical Link Up/Do
Up/Dowwn displays layer 2 link status.
◦ Beac
Beaconing
oning provides a way for a network operator to identify a
particular link. The administrator can beacon that port from a remote
location so the network operator has visual indication for that port.
1708 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Max Spee
Speedd Lower Spee
Speedd
Activity
in
inddica
ication
tion Indica
ication
tion
Status LEDs
A set of status LEDs are typically located on one side of a network switch.
The status LEDs provide a visual indication on what is physically wrong
with the network switch. Typical LEDs on the front panel are for PSUs
(power supply units), fans and system. Locator LEDs are also found on the
front panel of a switch. Each component that has an LED is known as a unit
below.
• Nu
Numbe
mberr of L
LEEDs pe
perr unit - Each unit should have only 1 LED.
• Loca
ocation
tion - All units should have their LEDs on the right-hand side of the
switch after the physical ports.
• Unit label - The label should be printed on the front panel directly above
the LED.
https://docs.cumulusnetworks.com 1709
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
• Colo
olors
rs - The focus should be on giving a network operator a simple set
of indications that provide basic information about the unit. The following
section has more information about the indications, but colors are
• Define
DefineddL
LEED - Every network switch must have LEDs for the following:
◦ PSU
◦ Fans
◦ System LED
◦ Locator LED
• PSU L
LEEDs - Each PSU must have its own LED. PSU faults are difficult to
debug. If a network operator knows which PSU is faulty, he or she can
Unit A
Activity
ctivity Indica
ication
tion
• Fan L
LEED - A network switch may have multiple fan trays (3 - 6). It is
difficult to put an LED for each fan tray on the front panel, given the
limited real estate. Hence, the recommendation is one LED for all fans.
1710 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Unit A
Activity
ctivity Indica
ication
tion
• System L
LEED - A network switch must have a system LED that indicates
the general state of a switch. This state could be of hardware, software,
or both. It is up to the individual switch NOS to decide what this LED
indicates. But the LED can have only the following indications:
Unit A
Activity
ctivity Indica
ication
tion
• Loca
ocattor L
LEED - The locator LED helps locate a particular switch in a data
Unit A
Activity
ctivity Indica
ication
tion
https://docs.cumulusnetworks.com 1711
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Locate a Switch
• Dell Z9100-ON
• Edgecore AS7712-32X
• Penguin Arctica 3200c
• Quanta QuantaMesh BMS T4048-IX2
• Supermicro SSE-C3632S
the port, and TIME should be replaced with the length of time, in seconds,
NOTE
1712 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Considerations
NOTE
If you set the ports to 100M, the link lights for ports 1-46 are orange, while
the lights for ports 47 and 48 are green.
When all of the ports are set to 1G, all the link lights are green.
The port LED blink state that indicates link activity is not implemented; the
ports only have ON/OFF states.
On the Penguin Arctica 3200c switch, the front panel ALARM LED is not
functional and remains off when you remove or insert a power module. The
rear panel ALARM always flashes yellow.
https://docs.cumulusnetworks.com 1713
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
Cumulus Linux TDR runs, checks, and reports on the status of the cable
diagnostic circuitry for specified ports.
WARNING
1714 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
NOTE
To run cable diagnostics and report results, issue the cl-tdr <port-list>
command. You must have root permissions to run the command. Because
the test is disruptive, a warning message displays and you are prompted to
continue.
disruptive.
restarted
https://docs.cumulusnetworks.com 1715
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
swp39
cable(4 pairs)
Command Options
Option De
Desscription
1716 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Option De
Desscription
JSON format.
The TDR tool reports diagnostic test results per pair for each port. For
example:
cable(4 pairs)
Sta
tatte De
Desscription
https://docs.cumulusnetworks.com 1717
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Sta
tatte De
Desscription
Per pair cable faults are detected within plus or minus 5 meters. Good cable
accuracy is detected within plus or minus 10 meters.
For example:
started
1718 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Example Commands
https://docs.cumulusnetworks.com 1719
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
1720 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
information for troubleshooting. The system either creates the archive file
automatically or you can create the archive file manually.
The system creates the cl-support archive file automatically for the
following reasons:
• After the first failure of one of several monitored services since the switch
was rebooted or power cycled.
command:
https://docs.cumulusnetworks.com 1721
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
If the support team requests that you submit the output from cl-support to
help with the investigation of issues you might experience with Cumulus
Linux and you need to include security-sensitive information, such as the
sudoers file, use the -s option:
NOTE
On ARM switches, the cl-support FRR module might time out even
when FRR is not running. To disable the timeout, run the cl-
file size.
• Troubleshooting Log Files. This guide highlights the most important log
files to inspect. Keep in mind, cl-support includes all of the log files.
1722 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Log De
Desscription
https://docs.cumulusnetworks.com 1723
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Log De
Desscription
cumulus@switch:~$ last
-f /var/log/btmp | more
1724 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Log De
Desscription
https://docs.cumulusnetworks.com 1725
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
This is the alphabetical list of the output from running ls -l on the /etc
File
acpi
adduser.conf
alternatives
apparmor.d
apt
audisp
audit
bash.bashrc
bash_completion
1726 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
File
bash_completion.d
bcm.d
bindresvport.blacklist
binfmt.d
ca-certificates
ca-certificates.conf
calendar
console-setup
cron.d
cron.daily
cron.hourly
cron.monthly
crontab
cron.weekly
cruft
cumulus
dbus-1
debconf.conf
debian_version
https://docs.cumulusnetworks.com 1727
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
File
debsums-ignore
default
deluser.conf
dhcp
discover.conf.d
discover-modprobe.conf
dnsmasq.conf
dnsmasq.d
dpkg
e2fsck.conf
emacs
environment
etckeeper
ethertypes
fonts
freeipmi
frr
fstab
gai.conf
1728 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
File
groff
grub.d
gshadow
gshadow-
gss
gunicorn.conf.py
hostapd
hostapd.conf
host.conf
hostname
hsflowd
hsflowd.conf
hw_init.d
image-release
init
init.d
initramfs-tools
inputrc
insserv
https://docs.cumulusnetworks.com 1729
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
File
insserv.conf
insserv.conf.d
iproute2
issue
issue.net
kernel
ldap
ld.so.cache
ld.so.conf
ld.so.conf.d
libaudit.conf
libnl
linuxptp
lldpd.d
locale.alias
locale.gen
localtime
logcheck
login.defs
1730 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
File
login.defs.cumulus
login.defs.cumulus-orig
logrotate.conf
logrotate.conf.cumulus
logrotate.conf.cumulus-orig
logrotate.d
lsb-release
lvm
machine-id
magic
magic.mime
mailcap
mailcap.order
manpath.config
mime.types
mke2fs.conf
modprobe.d
modules
modules-load.d
https://docs.cumulusnetworks.com 1731
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
File
motd
motd.distrib
mtab
mysql
nanorc
netd.conf
netq
network
networks
nginx
nsswitch.conf
ntp.conf
openvswitch
opt
os-release
perl
profile
profile.cumulus
profile.cumulus-orig
1732 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
File
profile.d
protocols
ptm.d
ptp4l.conf
python
python2.7
python3
python3.7
ras
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
rcS.d
rdnbrd.conf
resolv.conf
https://docs.cumulusnetworks.com 1733
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
File
resolvconf
resolv.conf.bak
restapi.conf
rmt
rpc
rsyslog.conf
rsyslog.conf.cumulus
rsyslog.conf.cumulus-orig
rsyslog.d
runit
screenrc
securetty
security
selinux
sensors3.conf
sensors.d
services
sgml
shells
1734 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
File
skel
smartd.conf
smartmontools
snmp
ssh
subgid
subgid-
subuid
subuid-
sv
sysctl.conf
sysctl.d
systemd
terminfo
timezone
tmpfiles.d
ucf.conf
udev
ufw
https://docs.cumulusnetworks.com 1735
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
File
update-motd.d
vim
vrf
watchdog.conf
wgetrc
X11
xattr.conf
xdg
xml
1736 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Troubleshooting Network
Interfaces
The following sections describe various ways you can troubleshoot
ifupdown2 and network interfaces.
file with the systemctl edit networking.service command and add the
following lines:
[Service]
ExecStart=
ExecStart=/sbin/ifup -av
NOTE
When you run the systemctl edit command, you do not need to
https://docs.cumulusnetworks.com 1737
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
• Remove the overrides file. Run the systemctl cat networking command
To exclude an interface so that it does not come up when you boot the
switch or start/stop/reload the networking service:
override.conf).
2. Add the following lines to the file, where <interface> is the interface you
[Service]
ExecStart=
ExecStart=/sbin/ifup -a -X <interface>
ExecStop=
ExecStop=/sbin/ifdown -a -X <interface>
1738 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
To use ifquery to pretty print iface entries from the interfaces file, run:
auto bond0
iface bond0
address 14.0.0.9/30
address 2001:ded:beef:2::1/64
within the interfaces file. It will return exit code 0 or 1 if the configuration
iface bond0
https://docs.cumulusnetworks.com 1739
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
auto bond0
iface bond0
address 14.0.0.9/30
address 2001:ded:beef:2::1/64
the interfaces file. For complete syntax on the interfaces file, see man
1740 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
auto eth0
An easy way to debug and get details about template errors is to use the
mako-render command on your interfaces template file or on /etc/network/
interfaces itself.
system
interfaces(5).
auto lo
https://docs.cumulusnetworks.com 1741
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
auto eth0
#auto eth1
source /etc/network/interfaces.d/*.if
# ssim2 added
auto swp45
iface swp45
auto swp46
iface swp46
interfaces.d/<interfaces_stub_file>
If you are trying to bring down an interface that you know exists, use ifdown
where the ifup command issues for that interface are interrupted before it
1742 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
never up ?)
peerlink
bond, or another physical interface and you remove that interface from a
running configuration, you must remove every reference to it in the
auto lo
https://docs.cumulusnetworks.com 1743
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
auto eth0
auto bond1
iface bond1
auto bond3
iface bond3
auto br0
iface br0
address 11.0.0.10/24
address 2001::10/64
1744 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
This error occurs when the MTU you are trying to set on an interface is
higher than the MTU of the lower interface or dependent interface. Linux
expects the upper interface to have an MTU less than or equal to the MTU
physical interface swp1. If you want to change the MTU to 9000 on the
VLAN interface, you must include the new MTU on the lower interface swp1
as well.
auto swp1.100
iface swp1.100
mtu 9000
auto swp1
iface swp1
mtu 9000
https://docs.cumulusnetworks.com 1745
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
command number that failed is at the end of this line: Command failed -:1.
Below is a sample error for the command 1: link set dev host2 master
bridge. There was an error adding the bond host2 to the bridge named
error: failed to execute cmd 'ip -force -batch - [link set dev
This error can occur when the bridge port does not have a valid hardware
address.
This occurs typically when the interface being added to the bridge is an
incomplete bond; a bond without slaves is incomplete and does not have a
valid hardware address.
1746 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 1747
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
and hardware settings. It takes the device name (like swp1) as an argument.
When the device name is the only argument to ethtool, it prints the current
settings of the network device. See man ethtool(8) for details. Not all
10000baseT/Full
Supports auto-negotiation: No
Advertised auto-negotiation: No
Speed: 10000Mb/s
1748 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Duplex: Full
Port: FIBRE
PHYAD: 0
Transceiver: external
Auto-negotiation: off
NOTE
The switch hardware contains the active port settings. The output
of ethtool swpXX shows the port settings stored in the kernel. The
switchd process keeps the hardware and kernel in sync for the
not updated based on the actual module inserted in the port and
https://docs.cumulusnetworks.com 1749
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NIC statistics:
HwIfInOctets: 1435339
HwIfInUcastPkts: 11795
HwIfInBcastPkts: 3
HwIfInMcastPkts: 4578
HwIfOutOctets: 14866246
HwIfOutUcastPkts: 11791
HwIfOutMcastPkts: 136493
HwIfOutBcastPkts: 0
HwIfInDiscards: 0
HwIfInL3Drops: 0
HwIfInBufferDrops: 0
HwIfInAclDrops: 28
HwIfInDot3LengthErrors: 0
HwIfInErrors: 0
SoftInErrors: 0
SoftInDrops: 0
SoftInFrameErrors: 0
HwIfOutDiscards: 0
HwIfOutErrors: 0
HwIfOutQDrops: 0
HwIfOutNonQDrops: 0
SoftOutErrors: 0
1750 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
SoftOutDrops: 0
SoftOutTxFifoFull: 0
HwIfOutQLen: 0
Interface counters contain information about an interface. You can view this
----------------------------------------------------------------------------------
487 0 0 0 BMRU
lo 16436 0 0 0 0 0
0 0 0 0 LRU
swp1 1500 0 0 0 0 0
0 0 0 0 BMU
https://docs.cumulusnetworks.com 1751
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Cleared counters
Option De
Desscription
Not
otee: The -c argument is applied
per user ID by default. You can
override it by using the -t
argument to save statistics to a
different directory.
Not
ote
e: The -d argument is
applied per user ID by default.
You can override it by using the
-t argument to save statistics to
a different directory.
1752 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Option De
Desscription
name>.
the SFP/QSFP supports Digital Optical Monitoring (that is, the Optical
diagnostics support field in the output below is set to Yes), the optical
power levels and thresholds are also printed below the standard hardware
details.
In the sample output below, you can see that this module is a 1000BASE-
SX short-range optical module, manufactured by JDSU, part number
threshold settings.
https://docs.cumulusnetworks.com 1753
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
1000BASE-SX
MBytes/sec
MBytes/sec
10B)
(unspecified)
1754 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Length (SMF) : 0m
Length (Copper) : 0m
Length (OM3) : 0m
Vendor PN : PLRXPL-VI-
S24-22
Vendor rev : 1
-4.97 dBm
-4.96 dBm
https://docs.cumulusnetworks.com 1755
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
-0.97 dBm
1756 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
-10.00 dBm
-2.22 dBm
-6.99 dBm
2.04 dBm
-20.00 dBm
0.00 dBm
https://docs.cumulusnetworks.com 1757
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
-16.99 dBm
1758 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Network Troubleshooting
Cumulus Linux includes a number of command line and analytical tools to
help you troubleshoot issues with your network.
Use ping to check reachability of a host. ping also calculates the time it
takes for packets to travel the round trip. See man ping for details.
...
https://docs.cumulusnetworks.com 1759
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
ms
ms
traceroute tracks the route that packets take from an IP network on their
byte packets
ms
...
22.584 ms 24.328 ms
1760 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
25.987 ms
ms 22.604 ms
You can use ip vrf exec to run commands in a non-default VRF context.
This is particularly useful for network utilities like ping, traceroute, and
nslookup.
example:
- 8.8.8.8
This is done using a mechanism that checks the VRF context of the current
shell - which can be seen when you run ip vrf id - at the time one of these
commands is run. If the shell’s VRF context is mgmt, then these commands
are run in the default VRF context.
https://docs.cumulusnetworks.com 1761
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
ping and traceroute have additional arguments that you can use to specify
an egress interface and/or a source address. In the default VRF, the source
interface flag (ping -I or traceroute -i) specifies the egress interface for
the ping/traceroute operation. However, you can use the source interface
flag instead to specify a non-default VRF to use for the command. Doing so
causes the routing lookup for the destination address to occur in that VRF.
With ping -I, you can specify the source interface or the source IP address,
but you cannot use the flag more than once. Thus, you can choose either an
You gain some additional flexibility if you run ip vrf exec in combination
outside of the ping and traceroute commands. This allows for the most
granular control of ping and traceroute, as you can specify both the VRF
<source_ip>] <destination_ip>
For example:
1762 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
8.8.8.8
2001:4860:4860::8888
2001:4860:4860::8888
For example:
-s 192.0.1.1 8.8.8.8
-s 2001:db8::1 2001:4860:4860::8888
https://docs.cumulusnetworks.com 1763
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
automatically shifted to the default VRF context, you must use the source
interface flag to specify the management VRF. Typically, this is not an issue
since there is only a single interface in the management VRF - eth0 - and in
most situations only a single IPv4 address or IPv6 global unicast address is
assigned to it. But it is worth mentioning since, as stated earlier, you cannot
specify both a source interface and a source IP address with ping -I.
arp manipulates or displays the kernel’s IPv4 network neighbor cache. See
cumulus@switch:~$ arp -a
cumulus@switch:~$ arp -a
1764 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
cumulus@switch:~$ arp -a
If you need to flush or remove an ARP entry for a specific interface, you can
disable dynamic ARP learning:
For example, to send two sets of packets to TCP port 23 and 24, with
https://docs.cumulusnetworks.com 1765
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
-t tcp "dp=23-24"
https://packages.debian.org/unstable/mz
-- Verbose mode --
sum=0,
payload=
sum=0,
1766 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
payload=
sum=0,
payload=
sum=0,
payload=
In Linux, all ACL rules are always counted. To create an ACL rule for
counting purposes only, set the rule action to ACCEPT. See the Netfilter
chapter for details on how to use cl-acltool to set up iptables-/ip6tables-
/ebtables-based ACLs.
https://docs.cumulusnetworks.com 1767
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
[iptables]
destination
1768 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
destination
destination
WARNING
The -p option clears out all other rules. The -i option reinstalls all
the rules.
SPAN (Switched Port Analyzer) provides for the mirroring of all packets
coming in from or going out of an interface (the SPAN source), and being
copied and transmitted out of a local port or CPU (the SPAN destination)
for monitoring. The SPAN destination port is also referred to as a mirror-to-
port (MTP). The original packet is still switched, while a mirrored copy of
the packet is sent out of the MTP.
https://docs.cumulusnetworks.com 1769
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
----------------------------------------------------------
----------------------------------------------------------
NOTE
SPAN and ERSPAN are configured via cl-acltool, the same utility for
1770 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
security ACL configuration. The match criteria for SPAN and ERSPAN is
usually an interface; for more granular match terms, use selective spanning.
The SPAN source interface can be a port, a subinterface, or a bond
given SPAN source cannot specify two SPAN destinations. The SPAN
destination (MTP) interface can be a physical port, subinterface, bond
interface or CPU. The SPAN and ERSPAN action is independent of security
ACL actions. If packets match both a security ACL rule and a SPAN rule,
NOTE
https://docs.cumulusnetworks.com 1771
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
atomic mode.
• Multiple rules (SPAN sources) can point to the same SPAN destination,
but a given SPAN source cannot specify two SPAN destinations.
next hop for the ERSPAN destination. If an ARP entry for the destination/
next hop does not already exist in the kernel, you need to manually
resolve this before mirrored traffic is sent (using ping or arping).
This section describes how to set up, install, verify and uninstall SPAN rules.
In the examples that follow, you span (mirror) switch port swp4 input traffic
and swp4 output traffic to destination switch port swp19.
1772 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
policy.d/span.rules
[iptables]
EOF'
NOTE
traffic only; it does not apply to traffic sourced from the switch.
source destination
5 anywhere
https://docs.cumulusnetworks.com 1773
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
8 anywhere
address.mcast.net/8 anywhere
255.255.255.255 anywhere
rate:2000 burst:2000
class:7
class:7
1774 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
SETCLASS class:7
SETCLASS class:7
rate:100 burst:40
https://docs.cumulusnetworks.com 1775
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
rate:300 burst:100
1776 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
source destination
5 anywhere
8 anywhere
address.mcast.net/8 anywhere
255.255.255.255 anywhere
source destination
https://docs.cumulusnetworks.com 1777
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
00control_plane.rules ...
00control_plane.rules ...
99control_plane_catch_all.rules ...
99control_plane_catch_all.rules ...
...
done.
WARNING
1778 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
acl/policy.d/span.rules
The rule transmits packets that reference the original VLAN tag and
source/destination MAC address at the time the packet is originally
https://docs.cumulusnetworks.com 1779
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
received on swp3.
This section describes how to configure SPAN for all packets going out of
policy.d/span_bond.rules
[iptables]
EOF'
NOTE
traffic only; it does not apply to traffic sourced from the switch.
1780 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
00control_plane.rules ...
00control_plane.rules ...
99control_plane_catch_all.rules ...
99control_plane_catch_all.rules ...
span_bond.rules ...
done.
https://docs.cumulusnetworks.com 1781
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
You can set the CPU port as a SPAN destination interface to mirror data
plane traffic to the CPU. The SPAN traffic is sent to a separate network
interface mirror where you can analyze it with tcpdump. This is a useful
feature if you do not have any free external ports on the switch for
Cumulus Linux controls how much traffic reaches the CPU so that mirrored
traffic does not overwhelm the CPU.
NOTE
To use the CPU port as the SPAN destination, create a file in the /etc/
rule matches on swp1 ingress traffic that has the source IP Address 10.10.1.1.
When a match occurs, the traffic is mirrored to the CPU:
1782 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
[iptables]
This example rule matches on swp1 egress traffic that has the source IP
Address 10.10.1.1. When a match occurs, the traffic is is mirrored to the CPU:
[iptables]
You can use tcpcdump to monitor traffic mirrored to the CPU on the switch.
You can also use filters for tcpdump. To use tcpcdump to monitor traffic
https://docs.cumulusnetworks.com 1783
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Configure ERSPAN
This section describes how to configure ERSPAN for all packets coming in
from swp1 to 12.0.0.2.
NOTE
policy.d/erspan.rules
[iptables]
EOF'
1784 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
00control_plane.rules ...
00control_plane.rules ...
99control_plane_catch_all.rules ...
99control_plane_catch_all.rules ...
erspan.rules ...
done.
ip:12.0.0.1 dst-ip:12.0.0.2
The src-ip option can be any IP address, whether it exists in the routing
https://docs.cumulusnetworks.com 1785
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
table or not. The dst-ip option must be an IP address reachable via the
option is recommended.
TIP
1786 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Selective Spanning
SPAN and ERSPAN traffic rules can be configured to limit the traffic that is
spanned, to reduce the volume of copied data.
NOTE
• IPv4 SIP/DIP
• IP protocol
• L4 (TCP/UDP) src/dst port
• TCP flags
• An ingress port/wildcard (swp+) can be specified in addition
NOTE
https://docs.cumulusnetworks.com 1787
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
SPAN Examples
To mirror forwarded packets from all ports matching SIP 20.0.1.0 and DIP
20.0.1.2 to port swp1s1:
--dport swp1s2
dport swp1s2
To mirror forwarded UDP packets received from port swp1s0, towards DIP
20.0.1.2 and destination port 53:
1788 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
ERSPAN Examples
To mirror forwarded packets from all ports matching SIP 20.0.1.0 and DIP
20.0.1.2:
https://docs.cumulusnetworks.com 1789
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
To mirror forwarded UDP packets received from port swp1s0, towards DIP
20.0.1.2 and destination port 53:
1790 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
cumulus@switch:~$
cumulus@switch:~$
You can use tcpdump to monitor control plane traffic - traffic sent to and
coming from the switch CPUs. tcpdump does not monitor data plane traffic;
For more information on tcpdump, read the documentation and the man
page.
• -i bond0, which captures packets from bond0 to the CPU and from the
CPU to bond0
• host 169.254.0.2, which filters for this IP address
https://docs.cumulusnetworks.com 1791
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
protocol decode
65535 bytes
[.], ack 1448, win 166, options [nop,nop,TS val 530348721 ecr
590400681], length 0
[.], ack 1836, win 165, options [nop,nop,TS val 530348721 ecr
590400681], length 0
1792 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
10 packets captured
Related Information
https://docs.cumulusnetworks.com 1793
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Running net show and pressing TAB displays all available command line
debugs : Debugs
EAPOL
1794 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
RPF lookup
route-map : Route-map
time : Time
https://docs.cumulusnetworks.com 1795
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Show Interfaces
To show all available interfaces that are physically UP, run net show
interface:
--------------------------------------
127.0.0.1/8, ::1/128
24(DHCP)
Untagged Members:
swp1
STP:
1796 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
RootSwitch(32768)
To show every interface regardless of state, run net show interface all:
LLDP Summary
---------------------- -------------------------
UP lo N/A 65536
lo IP:
10.0.0.11/32
lo IP:
::1/128
https://docs.cumulusnetworks.com 1797
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
L3 IP: 172.16.1.1/24
To get information about the switch itself, run net show system:
Hostname......... celRED
Memory........... 4GB
1798 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Disk............. 14.9GB
network-docopt Package
interface command and net show sys runs the net show system command.
https://docs.cumulusnetworks.com 1799
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
When WJH capabilities are combined with the analytics engine of Cumulus
NetQ, you have the ability to hone in on any loss, anywhere in the fabric,
from a single management console. You can view any current or historic
drops and specific drop reasons, and also identify any flow or endpoints
and pin-point exactly where communication is failing in the network.
1800 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
hsflowd is the daemon that samples and sends sFlow data to configured
NOTE
https://docs.cumulusnetworks.com 1801
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Configure sFlow
You can configure your DNS zone to advertise the collectors and polling
information to all interested clients.
Add the following content to the zone file on your DNS server:
_sflow._udp TXT (
"txtvers=1"
"sampling.100M=100"
"sampling.1G=1000"
"sampling.10G=10000"
"sampling.40G=40000"
"sampling.100G=100000"
"polling=20"
1802 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
port 6343 and to collector2 on port 6344. hsflowd will poll counters every
NOTE
below:
packets/sec
# Values: {0..16384}
#sflow.rate = 16384
#sflow.burst = 16384
https://docs.cumulusnetworks.com 1803
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Edit the /etc/hsflowd.conf file to set up your collectors and sampling rates
sflow {
# DNS-SD { }
# OR: manual:
# Counter Polling:
polling = 20
# default sampling N:
# sampling = 400
sampling.100M = 100
sampling.1G = 1000
sampling.10G = 10000
sampling.40G = 40000
# sampling.http = 50
# sampling.app.myapp = 100
1804 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
# collectors:
NOTE
To configure the IP address for the sFlow agent, configure one of the
following the /etc/hsflowd.conf file (following the recommendations in the
sFlow documentation):
https://docs.cumulusnetworks.com 1805
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Considerations
Related Information
• sFlow Collectors
• sFlow Wikipedia page
1806 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
version 5.8.1.pre1, which provides support for most of the common industry-
wide MIBs, including interface counters and TCP/UDP IP stack data. The
version in Cumulus Linux adds custom MIBs and pass-through and pass-
persist scripts.
SNMP Components
• SNMP agents
• The MIBs (management information bases)
send query requests to SNMP agents with the correct credentials. The
managers poll the agents and the agents respond with the data. There are a
variety of command line tools for polling, including snmpget, snmpgetnext,
https://docs.cumulusnetworks.com 1807
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
SNMP Agent
The SNMP agent (the snmpd daemon) running on a Cumulus Linux switch
gathers information about the local system and stores the data in a
management information base, or MIB. Parts of the MIB tree are available
and provided to incoming requests originating from an NMS host that has
authenticated with the correct credentials. You can configure the Cumulus
Linux switch with usernames and credentials to provide authenticated and
encrypted responses to NMS requests. The snmpd agent can also proxy
The MIB is a database for the snmpd daemon that runs on the agent. MIBs
tables, which are defined in a set text files on the switch; the files are
located in /usr/share/snmp/mibs/ and their names all start with Cumulus.
They include:
• Cumulus-Counters-MIB.txt
• Cumulus-POE-MIB.txt
• Cumulus-Resource-Query-MIB.txt
• Cumulus-Snmp-MIB.txt
1808 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
forks off is labeled with both an identifying number (starting with 1) and an
identifying string that is unique for that level of the hierarchy. The strings
and numbers can be used interchangeably. The parent IDs (numbers or
strings) are strung together, starting with the most general to form an
address for the MIB object. Each junction in the hierarchy is represented by
a dot in this notation so that the address ends up being a series of ID
strings or numbers separated by dots. This entire address is known as an
object identifier (OID).
You can use various online and command line tools to translate between
numbers and strings and to also provide definitions for the various MIB
objects. For example, you can view the sysLocation object (which is
defined in SNMPv2-MIB.txt) in the system table as either a series of numbers
.1.3.6.1.2.1.1.6
sysLocation OBJECT-TYPE
-- FROM SNMPv2-MIB
DISPLAY-HINT "255a"
https://docs.cumulusnetworks.com 1809
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
MAX-ACCESS read-write
STATUS current
'telephone
the
system(1) 6 }
In the last line above, the section 1.3.6.1 or iso.org.dod.internet is the OID
specification. And finally, the 1 or system is the parent for a number of child
objects sysDescr, sysObjectID, sysUpTime, sysContact, sysName,
sysLocation, sysServices, and so on, as seen in the tree output from the
second snmptranslate command below, where sysLocation is defined as 6.
+--system(1)
1810 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
| Size: 0..255
| |
| +--sysUpTimeInstance(0)
| Size: 0..255
| Size: 0..255
| Size: 0..255
| Range: 0..127
+--sysORTable(9)
+--sysOREntry(1)
| Index: sysORIndex
https://docs.cumulusnetworks.com 1811
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
| Range: 1..2147483647
| Size: 0..255
1812 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Configure SNMP
The most basic SNMP configuration requires you to specify:
requests originating on the switch itself. This is a secure method that allows
checking the SNMP configuration without exposing the switch to outside
attacks. In order for an external SNMP NMS to poll a Cumulus Linux switch,
you must configure the snmpd daemon running on the switch to listen to
string allows polling of the various MIB objects on the device itself.
Before you can use SNMP, you need to enable and start the snmpd service.
https://docs.cumulusnetworks.com 1813
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
following lines:
[Service]
1814 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Restart=always
RestartSec=60
After the service starts, you can use SNMP to manage various components
on the switch.
Configure SNMP
even though NCLU does not provide functionality to configure every snmpd
feature. You are not restricted to using NCLU for configuration and can edit
the /etc/snmp/snmpd.conf file and control snmpd with systemctl commands.
IMPORTANT
snmp/snmpd.conf file.
https://docs.cumulusnetworks.com 1815
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Use caution when editing this file. Be aware that snmpd caches
snmpd.conf file. Make sure you stop snmpd and remove the old
The next time you use NCLU to update your SNMP configuration, if
NCLU is unable to correctly parse the syntax, some of the options
might be overwritten.
Make sure you do not delete the snmpd.conf file; this can cause
issues with the package manager the next time you update
Cumulus Linux.
file for most of its configuration. The syntax of the most important
keywords are defined in the following table.
For security reasons, the listening address is set to the localhost by default
1816 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
so that the SNMP agent only responds to requests originating on the switch
itself. You can also configure listening only on the IPv6 localhost address.
When using IPv6 addresses or localhost, you can use a readonly-
you can use the username command to restrict access. See Configure the
The IP address must exist on an interface that has link UP on the switch
where snmpd is being used. By default, this is set to udp:127.0.0.1:161, so
https://docs.cumulusnetworks.com 1817
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
•
NCLU Commands Linux Commands
To configure the snmpd daemon to listen on the localhost IPv4 and IPv6
interfaces, run:
localhost
localhost-v6
TIP
address localhost
address
1818 https://docs.cumulusnetworks.com
To configure the snmpd daemon to listen on all interfaces for either IPv4
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Cumulus Linux provides a listening address for VRFs along with trap and
inform support. You can configure snmpd to listen to a specific IPv4 or IPv6
https://docs.cumulusnetworks.com 1819
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
•
NCLU Commands Linux Commands
1820 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
packet contents. You can configure multiple usernames for different user
NOTE
• MD5 password
• SHA password
https://docs.cumulusnetworks.com 1821
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
•
NCLU Commands Linux Commands
testusernoauth auth-none
auth-md5 myauthmd5password
auth-sha SHApassword1
If you specify MD5 or SHA authentication, you can also specify an AES
or DES encryption password to encrypt the contents of the request
and response packets.
1822 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
To restrict MIB tree exposure, you can define a view for an SNMPv3
username or community password, and a host from a restricted subnet. In
doing so, any SNMP request with that username and password must have a
source IP address within the configured subnet.
You can define a specific view multiple times and fine tune to provide or
restrict access using the included or excluded command to specify
systemonly view.
https://docs.cumulusnetworks.com 1823
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
•
NCLU Commands Linux Commands
included .1.3.6.1.4.1.40310
cumulusCounters
can respond to requests. By default, this provides access to the full OID
tree for such requests, regardless of from where they were sent. No default
password is set, so snmpd does not respond to any requests that arrive
1824 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
For SNMPv1 and SNMPv2c you can specify a read-only community string.
For SNMPv3, you can specify a read-only or a read-write community string
(provided you are not using the preferred username method described
above), but you must configure the read-write community string directly in
the snmpd.conf file; you cannot use NCLU to configure it. If you configure a
read-write community string, then edit the SNMP configuration later with
NCLU, the read-write community configuration is preserved.
You can specify a source IP address token to restrict access to only that
You can also specify a view to restrict the subset of the OID tree.
https://docs.cumulusnetworks.com 1825
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
•
NCLU Commands Linux Commands
requests
• Restricts requests to only those sourced from hosts in the
192.168.200.10/24 subnet
• Restricts viewing to the mysystem view defined with the viewname
command
included 1.3.6.1.2.1.1
allows access to the entire OID tree for requests originating from any
source IP address.
1826 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
You can configure system settings for the SNMPv2 MIB. The example
commands here set:
• The system physical location for the node in the SNMPv2-MIB system
table (the syslocation).
• The username and email address of the contact person for this managed
https://docs.cumulusnetworks.com 1827
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
•
NCLU Commands Linux Commands
For example, to set the system physical location for the node in the
SNMPv2-MIB system table, run:
private bunker
To set the username and email address of the contact person for this
managed node, run:
at myemail@example.com
snmpd.conf file:
1828 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Enabling FRR includes support for BGP. However, if you plan on using the
BGP4 MIB, be sure to provide access to the MIB tree 1.3.6.1.2.1.15.
NOTE
neighbors.
TIP
https://docs.cumulusnetworks.com 1829
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
agentxsocket /var/agentx/master
master agentx
NOTE
...
1830 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
...
To verify the configuration, run snmpwalk. For example, if you have a running
OSPF configuration with routes, you can check this OSPF-MIB first from the
1.3.6.1.2.1.14
network tools (like librenms) to return less than optimal data. You can
https://docs.cumulusnetworks.com 1831
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
include more MIBs by enabling the complete .1.3.6.1.2.1 range. This simplifies
the configuration file, removing the concern that any required MIBs might
be missed by the monitoring system. Various MIBs included were added to
• ENTITY-MIB
• ENTITY-SENSOR MIB
• Parts of the BRIDGE-MIB and Q-BRIDGE-MIBs
WARNING
To enable the .1.3.6.1.2.1 range, make sure the view commands include the
snmpd.conf file and replaces them with defaults, including for all SNMPv3
1832 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
support the custom Cumulus Networks MIBs. The following lines are
already included by default and provide support for both the Cumulus
Counters and the Cumulus Resource Query MIBs.
...
sysObjectID 1.3.6.1.4.1.40310
cl_drop_cntrs_pp.py
...
However, you need to copy several files to the NMS server for the custom
Cumulus MIB to be recognized on the NMS server.
https://docs.cumulusnetworks.com 1833
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
• /usr/share/snmp/mibs/Cumulus-Snmp-MIB.txt
• /usr/share/snmp/mibs/Cumulus-Counters-MIB.txt
• /usr/share/snmp/mibs/Cumulus-Resource-Query-MIB.txt
The pass persist scripts in Cumulus Linux use the pass_persist extension to
Net-SNMP. The scripts are stored in /usr/share/snmp and include:
• bgp4_pp.py
• bridge_pp.py
• cl_drop_cntrs_pp.py
• cl_poe_pp.py
• entity_pp.py
• entity_sensor_pp.py
• ieee8023_lag_pp.py
• resq_pp.py
• snmpifAlias_pp.py
• sysDescr_pass.py
All the scripts are enabled by default in Cumulus Linux, except for:
1834 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Example Configuration
https://docs.cumulusnetworks.com 1835
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
•
NCLU Commands Linux Commands
frequency 15
frequency 10
failures
agentaddress udp:161
agentxsocket /var/agentx/master
+authtrapenable 1
createuser _snmptrapusernameX
iquerysecname _snmptrapusernameX
You configure the following for SNMPv3 trap and inform messages:
traps. The inform keyword specifies an inform message where the SNMP
agent waits for an acknowledgement. You can find this at the end of the
/var/lib/snmp/snmpd.conf file labeled oldEngineID. Configure this same
the trap daemon receiving the trap to validate the received trap.
• Link up/down.
• Exceeding the temperature sensor threshold, CPU load, or memory
threshold.
https://docs.cumulusnetworks.com 1837
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Although the traps are sent to an SNMPv2c receiver, the SNMPv3 username
is still required to authorize the DisMan service. Starting with Net-SNMP 5.3,
Follow the steps in Configure SNMP to define the username. You can refer
to the snmptrapd.conf(5) manual page for more information.
NOTE
You may need to install the snmptrapd Debian package before you
1838 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
SNMPv1 and SNMPv2c traps are sent. For SNMP versions 1 and 2c, you must
set at least one SNMP trap destination IP address; multiple destinations can
exist. Removing all settings disables SNMP traps. The default version is 2c,
unless otherwise configured. You must include a VRF name with the IP
address to force traps to be sent in a non-default VRF table.
https://docs.cumulusnetworks.com 1839
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
•
NCLU Commands Linux Commands
mymanagementvrfpassword version 1
version 2c
snmpd.conf file:
...
...
1840 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
must configure this trap server EngineID in the switch snmpd daemon
sending the trap and inform messages. You specify the level of
authentication and encryption for SNMPv3 trap and inform messages with
-l (NoauthNoPriv, authNoPriv, or authPriv).
https://docs.cumulusnetworks.com 1841
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
•
NCLU Commands Linux Commands
response for the trap message using its own engine ID/username. In
practice, the trap daemon generates the usernames with its own
engine ID and after these are created, the SNMP server (or agent)
needs to use these engine ID/usernames when configuring the inform
messages so that they are correctly authenticated and the correct
response is sent to the snmpd agent that sent it.
0x80001f888070939b14a514da5a00000000 inform
0x80001f888070939b14a514da5a00000000 inform
1842 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
run from the command line, or when snmpd is configured to send a trap
allows the SNMP client programs or snmpd (for traps) to source requests
For more information about clientaddr, read the snmpd.conf man page.
NOTE
this address.
NOTE
Edit the /etc/snmp/snmpd.conf file and add the clientaddr option. In the
...
...
https://docs.cumulusnetworks.com 1843
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
An SNMP agent (snmpd) waits for incoming SNMP requests and responds to
them. If no requests are received, an agent does not initiate any actions.
However, various commands can configure snmpd to send traps based on
See the snmpd.conf man page for details on the monitor directive.
You can configure snmpd to monitor the operational status of either the
snmpd.conf file. Once you know the OID, you can determine the operational
1844 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
...
status
• Using the OID name. You can use the OID name if the snmp-mibs-
...
entPhySensorOperStatus.100011001 > 1
https://docs.cumulusnetworks.com 1845
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
entPhySensorOperStatus > 1
NOTE
entPhysicalName table.
For example:
.1.3.6.1.2.1.47.1.1.1.1.7
1846 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
NOTE
NOTE
https://docs.cumulusnetworks.com 1847
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
You can change the default frequency using the directly instead of
the linkUpDownNotifications directive. See man snmpd.conf for
details.
1848 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
frequency 15
frequency 10
You can monitor free memory using the following directives. The example
below generates a trap when free memory drops below 1,000,000KB. The
free memory trap also includes the amount of total real memory:
https://docs.cumulusnetworks.com 1849
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
...
...
NOTE
1850 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
•
NCLU Commands Linux Commands
To monitor disk utilization for all disks, use the includeAllDisks directive
together with the monitor directive. The example code below generates a
...
includeAllDisks 1%
!=0
...
https://docs.cumulusnetworks.com 1851
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
•
NCLU Commands Linux Commands
failures
1852 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
downloader Debian package and comment out the mibs line from the /etc/
following example:
...
defaultMonitors yes
prErrorFlag != 0
memSwapError != 0
dskErrorFlag != 0
fileErrorFlag != 0
...
https://docs.cumulusnetworks.com 1853
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
MIB names can be used instead of OIDs, which greatly improves the
readability of the snmpd.conf file. You enable this by installing the snmp-
enabling traps.
1854 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
commented out:
reasons, loading
can reenable
#mibs :
6. Open the /etc/default/snmpd file to verify that the export MIBS= line is
commented out:
# You might comment this lines once you have the MIBs
Downloaded.
https://docs.cumulusnetworks.com 1855
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
#export MIBS=
7. After you confirm the configuration, remove or comment out the non-
SNMP traps. You configure how incoming traps are processed in the /etc/
receiver (and what types of processing these are allowed to trigger). You
can specify three processing types:
1856 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
NOTE
You may need to install the snmptrapd Debian package before you
https://docs.cumulusnetworks.com 1857
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Supported MIBs
Below are the MIBs supported by Cumulus Linux, as well as suggested uses
for them. The overall Cumulus Linux MIB is defined in the /usr/share/snmp/
mibs/Cumulus-Snmp-MIB.txt file.
1858 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
#pass_persist
.1.3.6.1.4.1.40310.3
/usr/share/snmp/
cl_poe_pp.py
https://docs.cumulusnetworks.com 1859
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Not
ote:
e: The ENTITY-MIB does not
show the chassis information in
Cumulus Linux.
1860 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
view systemonly
included
.1.2.840.10006.300.43
pass_persist
.1.2.840.10006.300.43
/usr/share/snmp/
ieee8023_lag_pp.py
Not
ote
e: The IF-MIB cache is
disabled by default. The non-
caching code path in the IF-MIB
treats 64-bit counters like 32-bit
counters (a 64-bit counter rolls
over after the value increments
to a value that extends beyond
32 bits). To enable the counter to
reflect traffic statistics using
64-bit counters, remove the -y
option from the SNMPDOPTS line
in the /etc/default/snmpd file.
The example below first shows
the original line, commented out,
then the modified line without
https://docs.cumulusnetworks.com 1861
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
the -y option:
cumulus@switch:~$ cat
/etc/default/snmpd
# SNMPDOPTS='-y -LS
0-4 d -Lf /dev/null -u
snmp -g snmp -I -smux
-p /run/snmpd.pid'
SNMPDOPTS='-LS 0-4 d
-Lf /dev/null -u snmp
-g snmp -I -smux -p
/run/snmpd.pid
1862 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
SNMP-TARGET-MIB SNMP-TARGET-MIB.
Due to licensing restrictions, not all supported MIBs are installed in Cumulus
Linux. The MIBs that are not installed require the “non-free” archive to be
added to /etc/apt/sources.list. To see which MIBs are installed on your
https://docs.cumulusnetworks.com 1863
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
▼ Installed MIBs
1864 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Troubleshoot SNMP
Use the following commands to troubleshoot potential SNMP issues.
To check the status of snmpd using NCLU, run the net show snmp-server
status command. If there are issues, you might see errors like the following:
---------------------------------
----------------------------------------------------------------------------------
https://docs.cumulusnetworks.com 1865
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
---------------------------------
----------------------------------------------------------------------------------
You can review the SNMP server configuration when you run:
snmp-server
listening-address 127.0.0.1
trap-link-up check-frequency 10
trap-snmp-auth-failures
You can see which NCLU commands were used to configure SNMP. Look
for snmp-server in the output when you run:
...
1866 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
public version 2c
...
The snmp Debian package contains snmpget, snmpwalk and other programs
that are useful for checking daemon functionality from the switch itself or
From a client, you access the MIB with the correct credentials.
1.3.6.1.2.1.1.1
https://docs.cumulusnetworks.com 1867
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
1.3.6.1.2.1.1.1
This command gets the first MIB object in the system table; in this case, the
SNMPv2 system name specified above:
localhost SNMPv2-MIB::sysName
The following commands check the access for each user from the localhost.
localhost 1.3.6.1.2.1.1.1.0
localhost 1.3.6.1.2.1.1
1868 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
.1.3.6.1.2.1.1.1.0
1.3.6.1.2.1.1
1.3.6.1.2.1.1
https://docs.cumulusnetworks.com 1869
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
-v 2c -c mynotsosecretpassword localhost
SNMPv2-MIB::sysName
1870 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
• bridge_pp.py
https://docs.cumulusnetworks.com 1871
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
• Community
4. Restart snmpd:
Configure Nutanix
1. Log into the Nutanix Prism. Nutanix defaults to the Home menu, referred
to as the Dashboard:
1872 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
2. Click on the gear icon in the top right corner of the dashboard, then
select NetworkSwitch:
https://docs.cumulusnetworks.com 1873
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
3. Click the +A
+Add
dd S
Swwit
itch
ch C
Config
onfigur
uraation button in the Net
etwwork S
Swwit
itch
ch
Config
onfigur
ura
ation pop up window.
1874 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Config
onfigur
ura
ation Val
aluue U
Ussed in
De
Desscription
Paramet
amete
er Example
https://docs.cumulusnetworks.com 1875
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Config
onfigur
ura
ation Val
aluue U
Ussed in
De
Desscription
Paramet
amete
er Example
NOTE
The rest of the values were not touched for this demonstration.
They are usually used with SNMP v3.
5. Save the configuration. The switch will now be present in the Net
etwwork
Swit
itch
ch C
Config
onfigur
uraation menu now.
1876 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
interface statistics:
https://docs.cumulusnetworks.com 1877
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
1878 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
• Physical interface (for example, swp1, swp2). This only displays switch
port interfaces connected to Nutanix hosts by default.
• Switch ID: Unique identifier that Nutanix keeps track of each port ID (see
below).
• Index: Interface index, in the above demonstration swp49 maps to Index
52 because there is a loopback and two ethernet interface before the
swp starts.
• MTU of interface.
• MAC address of interface.
The Nutanix appliance will use Switch IDs that can also be viewed on the
Prism CLI (by SSHing to the box). To view information from the Nutanix CLI,
login using the default username nutanix, and the password nutanix/4u.
list-switch
Switch ID :
https://docs.cumulusnetworks.com 1879
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
00051a76-f711-89b6-0000-000000003bac::5f13678e-6ffd-4b33-912f-
f1aa6e8da982
Name : switch
Object ID : enterprises.40310
Services : 72
Port Ids :
00051a76-f711-89b6-0000-000000003bac::5f13678e-6ffd-4b33-912f-
f1aa6e8da982:52,
00051a76-f711-89b6-0000-000000003bac::5f13678e-6ffd-4b33-912f-
f1aa6e8da982:53,
00051a76-f711-89b6-0000-000000003bac::5f13678e-6ffd-4b33-912f-
f1aa6e8da982:54,
00051a76-f711-89b6-0000-000000003bac::5f13678e-6ffd-4b33-912f-
f1aa6e8da982:55
1880 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
-v vSwitch0
vSwitch0
vSwitch0
Name: vSwitch0
Class: etherswitch
Used Ports: 12
https://docs.cumulusnetworks.com 1881
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
MTU: 1500
Beacon Interval: 1
Beacon Threshold: 3
both means CDP is now running and the lldp dameon on Cumulus Linux
2. After the next CDP interval, the Cumulus Linux switch picks up the
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Chassis:
SysName: NX-1050-A
1882 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
MgmtIP: 0.0.0.0
Capability: Bridge, on
Port:
PortDescr: vmnic2
-------------------------------------------------------------------------------
swp1 spine01
https://docs.cumulusnetworks.com 1883
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
swp1 spine02
installing normal Linux lldp daemons to operating just like Cumulus Linux.
LLDP should be enabled for each interface on the host. Refer to this article
from Mellanox, https://portal.nutanix.com/page/documents/kbs/
details/?targetId=kA032000000TVfiCAG, for setup instructions.
Troubleshooting
1884 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Nu
Nutanix
tanix Node Ph
Phy
ysical P
Poort Cumulus Lin
Linuux P
Poort
1. Find the MAC address information in the Prism GUI, located in: Hardw
rdwaare
> Table > Host > Host NI
NICCs
https://docs.cumulusnetworks.com 1885
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
3. List out all the MAC addresses associated with the bridge:
1886 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
0c:c4:7a:09:a2:43
https://docs.cumulusnetworks.com 1887
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Chassis:
SysName: NX-1050-A
MgmtIP: 0.0.0.0
Capability: Bridge, on
Port:
PortDescr: vmnic2
-------------------------------------------------------------------------------
1888 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
1. Boot the switch, then as soon as you see the GRUB menu, use the arrow
keys to select Advanc
ance
ed option
optionss ffo
or C
Cuumulus Lin
Linuux G
GNNU/Lin
/Linuux.
IMPORTANT
Bef
Befoore the GRUB menu appears, the switch goes through the
boot cycle. Do not interrupt this autoboot process when you see
the following lines; wait until you see the GRUB menu.
...
Peripheral=500Hz
Net: eth-0
https://docs.cumulusnetworks.com 1889
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
+----------------------------------------------------------------------------
Linux |
Linux |
ONIE
+----------------------------------------------------------------------------
1890 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
(rec
eco
overy mo
modde).
+----------------------------------------------------------------------------
4.19.0-cl-1-amd64 |
(recovery mode) |
+----------------------------------------------------------------------------
3. Press ct
ctrrl-
l-dd to reboot.
4. After the system reboots, set a new root password. The root user
provides complete control over the switch.
root@switch:~# passwd
https://docs.cumulusnetworks.com 1891
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
TIP
You can take this opportunity to reset the password for the
cumulus account.
root@switch:~# sync
root@switch:~# reboot -f
1892 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
layer 2 and layer 3 routes, and ECMP routes that are in use. Because
Cumulus Linux synchronizes routes between the kernel and the switching
silicon, if the required resource pools in hardware fill up, new kernel routes
can cause existing routes to move from being fully allocated to being
partially allocated. To avoid this, monitor the routes in the hardware to keep
them below the ASIC limits. For example, on a Broadcom Tomahawk
switch, the limits are as follows:
host_routes: 73728
ecmp_nhs: 16327
ecmp_nhs_per_route: 52
This translates to about 314 routes with ECMP nexthops, if every route has
the maximum ECMP nexthops.
https://docs.cumulusnetworks.com 1893
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
chipsets.
Tomahawk switch:
value 40960
IPv4 neighbors: 0
IPv6 neighbors: 0
value 65536
value 8192
IPv4 Routes: 4
IPv6 Routes: 8
value 65536
value 16327
value 40960
value 20480
1894 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
value 1536
value 1536
value 2048
value 6
value 512
value 1024
value 512
value 2
value 0 (allocated: 0)
value 0 (allocated: 0)
https://docs.cumulusnetworks.com 1895
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 32
Trident II switch:
value 16384
IPv4 neighbors: 0
IPv6 neighbors: 0
1896 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
value 131072
value 20480
IPv4 Routes: 0
IPv6 Routes: 1
value 131072
value 16346
value 32768
value 8192
value 2048
value 2048
value 4096
value 6
value 512
https://docs.cumulusnetworks.com 1897
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
value 1024
value 512
value 2
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
1898 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
value 0 (allocated: 0)
value 24
NOTE
Spectrum switch:
value 32768
value 16384
IPv4 neighbors: 0
IPv6 neighbors: 0
https://docs.cumulusnetworks.com 1899
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
value 65536
value 28672
IPv4 Routes: 0
IPv6 Routes: 7
value 94208
value 4101
value 40960
value 400
value 0
value 0
value 0
value 0
value 0
1900 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
value 0
value 0
value 0
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
value 0 (allocated: 0)
https://docs.cumulusnetworks.com 1901
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
value 0 (allocated: 0)
value 0
value 400
value 2256
value 1024
value 1024
NOTE
Ingress ACL and Egress ACL entries show the counts in single wide
(not double-wide). For information about ACL entries, see Estimate
1902 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
supported platforms.
You can retrieve the data from these counters using tools like ip -s link
• Aggregate statistics are available per VNI; this includes access and
network statistics.
• Network statistics are available for each VNI and displayed against the
VXLAN device. This is independent of the VTEP used, so this is a
https://docs.cumulusnetworks.com 1903
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
interfaces
swp2s1.6
swp2s2.6
swp2s3.6
vxln16757104
10848 158 0 0 0 0
27816 541 0 0 0 0
1904 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
2680 39 0 0 0 0
7558 140 0 0 0 0
0 0 0 0 0 0
0 0 0 9 0 0
https://docs.cumulusnetworks.com 1905
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
For a bridge using the VLAN-aware bridge mode driver, the bridge is a just
a container and each VLAN (VID/PVID) in the bridge is an independent
layer 2 broadcast domain. As there is no netdev available to display these
auto bridge
bridge-vlan-aware yes
bridge-stp on
cumulus@switch:~$ ls /cumulus/switchd/run/stats/vlan/
aggregate
Vlan id : 2000
L3 Routed In Octets : -
L3 Routed In Packets : -
1906 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Total In Packets : 3
For a bridge using the traditional bridge mode driver, each bridge is a
single L2 broadcast domain and is associated with an internal VLAN. This
internal VLAN’s counters are displayed as bridge netdev stats.
swp2s2.100
23201498 227514 0 0 0 0
https://docs.cumulusnetworks.com 1907
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
18198262 178443 0 0 0 0
These counters are enabled by default. To configure them, use cl-cfg and
configure them as you would any other switchd parameter. The switchd
parameters are:
For the other types, DETAIL has the same effect as BRIEF.
1908 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
NOTE
The virtual device counters are polled periodically. This can be CPU
intensive, so the interval is configurable in switchd, with a default of 2
seconds.
#stats.vdev_hw_poll_interval = 2
For debugging purposes, you can access packet statistics associated with
internal VLAN IDs. These statistics are hidden by default, but you can
#stats.vlan.show_internal_vlans = FALSE
https://docs.cumulusnetworks.com 1909
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Clear Statistics
Because ethtool is not supported for virtual devices, you cannot clear the
statistics cache maintained by the kernel. You can clear the hardware
statistics via switchd:
vlan
vxlan
Considerations
take effect. For example, if 500 broadcast packets are sent into the
bridge, the CPU is also sent 500 packets. These 500 packets are policed
by the default ACLs in Cumulus Linux, so the CPU might receive fewer
than the 500 packets if the incoming packet rate is too high. The TX
counter for the bridge should be equal to 500*(number of ports in the
bridge - incoming port + CPU port) or just 500 * number of ports in the
bridge.
1910 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
• You cannot use ethtool -S for virtual devices. This is because the
https://docs.cumulusnetworks.com 1911
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
ASIC Monitoring
Cumulus Linux provides an ASIC monitoring tool that collects and
distributes data about the state of the ASIC. The monitoring tool polls for
data at specific intervals and takes certain actions so that you can quickly
You can collect the following type of statistics with the ASIC monitoring
tool:
NOTE
1912 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
You configure the histogram with a minimum size boundary (Min) and a
histogram size. You then derive the maximum size boundary (Max) by
adding the minimum size boundary and the histogram size.
between the Min and Max, which is determined by dividing the histogram
size by 8.
• Min = 960
• Histogram size = 12288
• Max = 13248
• Range size = 1536
• Bin 0: 0:959
• Bin 1: 960:2495
https://docs.cumulusnetworks.com 1913
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
• Bin 2: 2496:4031
• Bin 3: 4032:5567
• Bin 4: 5568:7103
• Bin 5: 7104:8639
• Bin 6: 8640:10175
• Bin 7: 10176:11711
• Bin 8: 11712:13247
• Bin 9: 13248:*
times the queue length for a port was in the ranges specified by each bin.
The example shows that the queue length was between 960 and 2495
bytes 125 times within one second.
1914 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
collect and when to trigger. The service always starts; however, if the
configuration file is empty, the service exits.
data to collect, the switch ports to monitor, how and when to start reading
the ASIC (such as when a specific queue length or number of packets
dropped is reached), and what actions to take (create a snapshot file, send
a message to the /var/log/syslog file, or collect more data).
service reads the new configuration file and then runs until it is stopped.
https://docs.cumulusnetworks.com 1915
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
2. At the end of the file, add the following line to specify the name of the
histogram monitor (port group). The example uses histogram_pg;
however, you can use any name you choose. You must use the same
name with all histogram settings.
monitor.port_group_list = [histogram_pg]
3. Add the following line to specify the ports you want to monitor. The
monitor.histogram_pg.port_set = swp1-swp50
4. Add the following line to set the data type to histogram. This is the data
monitor.histogram_pg.stat_type = histogram
5. Add the following line to set the trigger type to timer. Currently, the only
1916 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
monitor.histogram_pg.trigger_type = timer
6. Add the following line to set the frequency at which data collection
starts. In the following example, the frequency is set to one second.
monitor.histogram_pg.timer = 1s
7. Add the following line to set the actions you want to take when data is
collected. In the following example, the system writes the results of data
collection to a snapshot file and sends a message to the /var/log/syslog
file.
monitor.histogram_pg.action_list = [snapshot,log]
8. Add the following line to specify a name and location for the snapshot
file. In the following example, the system writes the snapshot to a file
called histogram_stats in the /var/lib/cumulus directory and adds a
suffix to the file name with the snapshot file count (see the following
step).
https://docs.cumulusnetworks.com 1917
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
monitor.histogram_pg.snapshot.file = /var/lib/cumulus/
histogram_stats
9. Add the following line to set the number of snapshots that are taken
before the system starts overwriting the earliest snapshot files. In the
following example, because the snapshot file count is set to 64, the first
snapshot file is named histogram_stats_0 and the 64th snapshot is
restarts.
monitor.histogram_pg.snapshot.file_count = 64
10. Add the following line to include a threshold, which determines how to
collect data. Setting a threshold is optional. In the following example,
when the size of the queue reaches 500 bytes, the system sends a
message to the /var/log/syslog file.
monitor.histogram_pg.log.queue_bytes = 500
1918 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
11. Add the following lines to set the size, minimum boundary, and sampling
time of the histogram. Adding the histogram size and the minimum
boundary size together produces the maximum boundary size. These
settings are used to represent the range of queue lengths per bin.
monitor.histogram_pg.histogram.minimum_bytes_boundary = 960
monitor.histogram_pg.histogram.histogram_size_bytes = 12288
monitor.histogram_pg.histogram.sample_time_ns = 1024
12. Save the file, then restart the asic-monitor service with the following
command:
NOTE
when you boot the switch and restarts when you restart switchd.
https://docs.cumulusnetworks.com 1919
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
NOTE
Snapshots and logs can occupy a lot of disk space if you do not
limit their number.
To collect other data, such as all packets per port, buffer congestion, or
packet drops due to error, follow the procedure above but change the port
group list setting to include the port group name you want to use. For
example, to monitor packet drops due to buffer congestion:
monitor.port_group_list = [buffers_pg]
monitor.buffers_pg.port_set = swp1-swp50
monitor.buffers_pg.stat_type = buffer
...
1920 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Setting De
Desscription
Example:
monitor.port_group_list
=
[histogram_pg,discards_pg,buffers_pg,
all_packets_pg]
Not
ote
e: You must specify at least
one port group. If the port group
list is empty, systemd shuts
down the asic-monitor service.
Example:
https://docs.cumulusnetworks.com 1921
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Setting De
Desscription
monitor.histogram_pg.port_set
= swp1-swp50
monitor.histogram_pg.stat_type
= histogram
monitor.discards_pg.stat_type
= packet
1922 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Setting De
Desscription
monitor.buffers_pg.stat_type
= buffer
monitor.all_packet_pg.stat_type
= packet_all
Example:
monitor.histogram_pg.cos_list
= [0]
https://docs.cumulusnetworks.com 1923
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Setting De
Desscription
Example:
monitor.histogram_pg.trigger_type
= timer
Example:
1924 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Setting De
Desscription
monitor.histogram_pg.timer
= 4s
Example:
monitor.histogram_pg.action_list
= [snapshot]
monitor.histogram_pg.snapshot.file
= /var/lib/cumulus/
histogram_stats
https://docs.cumulusnetworks.com 1925
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Setting De
Desscription
Example:
monitor.histogram_pg.action_list
= [collect
monitor.histogram_pg.collect.port_group_l
=
[buffers_pg,all_packet_pg]
monitor.histogram_pg.action_list
= [log]
monitor.histogram_pg.log.queue_bytes
= 500
1926 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Setting De
Desscription
monitor.histogram_pg.action_list
=
[snapshot,collect,log]
Not
ote
e: If an action appears in the
action list but does not have the
required settings (such as a
threshold for the log action), the
ASIC monitor stops and reports
an error.
Example:
monitor.histogram_pg.snapshot.file
= /var/lib/cumulus/
histogram_stats
https://docs.cumulusnetworks.com 1927
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Setting De
Desscription
Example:
monitor.histogram_pg.snapshot.file_count
= 64
Not
ote
e: While more snapshots
provide you with more data,
they can occupy a lot of disk
space on the switch.
Examples:
1928 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Setting De
Desscription
monitor.histogram_pg.snapshot.queue_bytes
= 500
monitor.histogram_pg.log.queue_bytes
= 500
monitor.histogram_pg.collect.queue_bytes
= 500
Examples:
monitor.discards_pg.snapshot.packet_error
= 500
monitor.discards_pg.log.packet_error_drop
= 500
monitor.discards_pg.collect.packet_error_
= 500
https://docs.cumulusnetworks.com 1929
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Setting De
Desscription
Examples:
monitor.buffers_pg.log.packet_congestion_
= 500
monitor.buffers_pg.snapshot.packet_conges
= 500
monitor.buffers_pg.collect.packet_congest
= 500
1930 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Setting De
Desscription
Example:
monitor.histogram_pg.histogram.minimum_by
= 960
Example:
monitor.histogram_pg.histogram.histogram_
= 12288
Example:
https://docs.cumulusnetworks.com 1931
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Setting De
Desscription
monitor.histogram_pg.histogram.sample_tim
= 1024
Example Configurations
• Queue length histograms are collected every second for swp1 through
swp50.
• The results are written to the /var/lib/cumulus/histogram_stats
snapshot file.
• The size of the histogram is set to 12288 bytes, the minimum boundary to
960 bytes, and the sampling time to 1024 nanoseconds.
• A threshold is set so that when the size of the queue reaches 500 bytes,
the system sends a message to the /var/log/syslog file.
monitor.port_group_list =
1932 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
[histogram_pg]
monitor.histogram_pg.port_set =
swp1-swp50
monitor.histogram_pg.stat_type =
histogram
monitor.histogram_pg.cos_list = [0]
monitor.histogram_pg.trigger_type = timer
monitor.histogram_pg.timer = 1s
monitor.histogram_pg.action_list =
[snapshot,log]
monitor.histogram_pg.snapshot.file = /var/
lib/cumulus/histogram_stats
monitor.histogram_pg.snapshot.file_count = 64
monitor.histogram_pg.log.queue_bytes = 500
monitor.histogram_pg.histogram.minimum_bytes_boundary = 960
monitor.histogram_pg.histogram.histogram_size_bytes = 12288
monitor.histogram_pg.histogram.sample_time_ns = 1024
• Packet drops on swp1 through swp50 are collected every two seconds.
• If the number of packet drops is greater than 100, the results are written
to the /var/lib/cumulus/discard_stats snapshot file and the system
https://docs.cumulusnetworks.com 1933
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
monitor.port_group_list =
[discards_pg]
monitor.discards_pg.port_set = swp1-swp50
monitor.discards_pg.stat_type = packet
monitor.discards_pg.action_list =
[snapshot,log]
monitor.discards_pg.trigger_type = timer
monitor.discards_pg.timer = 2s
monitor.discards_pg.log.packet_error_drops = 100
monitor.discards_pg.snapshot.packet_error_drops = 100
monitor.discards_pg.snapshot.file = /var/lib/
cumulus/discard_stats
monitor.discards_pg.snapshot.file_count = 16
• Queue length histograms are collected for swp1 through swp50 every
second.
1934 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
snapshot file.
• When the queue length reaches 500 bytes, the system sends a message
to the /var/log/syslog file and collects additional data; buffer occupancy
snapshot file and all packets per port data is written to the /var/lib/
• In addition, packet drops on swp1 through swp50 are collected every two
seconds. If the number of packet drops is greater than 100, the results
are written to the /var/lib/cumulus/discard_stats snapshot file and a
monitor.port_group_list =
[histogram_pg,discards_pg]
monitor.histogram_pg.port_set =
swp1-swp50
monitor.histogram_pg.stat_type = buffer
monitor.histogram_pg.cos_list = [0]
monitor.histogram_pg.trigger_type = timer
monitor.histogram_pg.timer = 1s
monitor.histogram_pg.action_list =
[snapshot,collect,log]
monitor.histogram_pg.snapshot.file = /var/
https://docs.cumulusnetworks.com 1935
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
lib/cumulus/histogram_stats
monitor.histogram_pg.snapshot.file_count = 64
monitor.histogram_pg.histogram.minimum_bytes_boundary = 960
monitor.histogram_pg.histogram.histogram_size_bytes = 12288
monitor.histogram_pg.histogram.sample_time_ns = 1024
monitor.histogram_pg.log.queue_bytes = 500
monitor.histogram_pg.collect.queue_bytes = 500
monitor.histogram_pg.collect.port_group_list =
[buffers_pg,all_packet_pg]
monitor.buffers_pg.port_set =
swp1-swp50
monitor.buffers_pg.stat_type = buffer
monitor.buffers_pg.action_list =
[snapshot]
monitor.buffers_pg.snapshot.file = /var/
lib/cumulus/buffer_stats
monitor.buffers_pg.snapshot.file_count = 8
monitor.all_packet_pg.port_set =
swp1-swp50
monitor.all_packet_pg.stat_type =
packet_all
monitor.all_packet_pg.action_list =
1936 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
[snapshot]
monitor.all_packet_pg.snapshot.file = /var/
lib/cumulus/all_packet_stats
monitor.all_packet_pg.snapshot.file_count = 8
monitor.discards_pg.port_set =
swp1-swp50
monitor.discards_pg.stat_type = packet
monitor.discards_pg.action_list =
[snapshot,log]
monitor.discards_pg.trigger_type = timer
monitor.discards_pg.timer = 2s
monitor.discards_pg.log.packet_error_drops = 100
monitor.discards_pg.snapshot.packet_error_drops = 100
monitor.discards_pg.snapshot.file = /var/
lib/cumulus/discard_stats
monitor.discards_pg.snapshot.file_count = 16
NOTE
https://docs.cumulusnetworks.com 1937
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
A log action writes out the ASIC state to the /var/log/syslog file. In the
following example, when the size of the queue reaches 500 bytes, the
system sends this message to the /var/log/syslog file:
1938 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 1939
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
• Metrics that you can poll from Cumulus Linux and use in trend analysis
• Critical log messages that you can monitor for triggered alerts
Triggered issues are normally sent to syslog, but can go to another log file
including local and remote logging. Logs are the best method to use for
generating alerts when the system transitions from a stable steady state.
1940 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Log Formatting
Most log files in Cumulus Linux use a standard presentation format. For
For brevity and legibility, the timestamp and hostname have been omitted
from the examples in this chapter.
Hardware
https://docs.cumulusnetworks.com 1941
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Monit
Monito
oring
Hardw
rdwaare Element Int
nte
erval P
Poll
oll
Comman
ommands
ds
Temperature 10 seconds
cumulus@switch:~$
smonctl -j
cumulus@switch:~$
smonctl -j
-s TEMP[X]
Fan 10 seconds
cumulus@switch:~$
smonctl -j
cumulus@switch:~$
smonctl -j
-s FAN[X]
PSU 10 seconds
cumulus@switch:~$
smonctl -j
cumulus@switch:~$
smonctl -j
-s PSU[X]
1942 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Monit
Monito
oring
Hardw
rdwaare Element Int
nte
erval P
Poll
oll
Comman
ommands
ds
cumulus@switch:~$
smonctl -j
cumulus@switch:~$
smonctl -j
-s
PSU[X]Fan[X]
cumulus@switch:~$
smonctl -j
cumulus@switch:~$
smonctl -j
-s
PSU[X]Temp[X]
Voltage 10 seconds
cumulus@switch:~$
smonctl -j
cumulus@switch:~$
smonctl -j
-s Volt[X]
https://docs.cumulusnetworks.com 1943
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Monit
Monito
oring
Hardw
rdwaare Element Int
nte
erval P
Poll
oll
Comman
ommands
ds
cumulus@switch:~$
ledmgrd -d
cumulus@switch:~$
ledmgrd -j
NOTE
1944 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Hardw
rdwaare L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
High temperature
/var/log/ /usr/sbin/
syslog smond : :
Temp1(Board
Sensor near
CPU): state
changed
from
UNKNOWN to
OK
/usr/sbin/
smond : :
Temp2(Board
Sensor Near
Virtual
Switch):
state
changed
from
UNKNOWN to
OK
/usr/sbin/
smond : :
Temp3(Board
Sensor at
Front Left
Corner):
state
changed
from
https://docs.cumulusnetworks.com 1945
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Hardw
rdwaare L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
UNKNOWN to
OK
/usr/sbin/
smond : :
Temp4(Board
Sensor at
Front Right
Corner):
state
changed
from
UNKNOWN to
OK
/usr/sbin/
smond : :
Temp5(Board
Sensor near
Fan): state
changed
from
UNKNOWN to
OK
/var/log/ /usr/sbin/
1946 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Hardw
rdwaare L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
syslog smond : :
Fan1(Fan
Tray 1, Fan
1): state
changed
from
UNKNOWN to
OK
/usr/sbin/
smond : :
Fan2(Fan
Tray 1, Fan
2): state
changed
from
UNKNOWN to
OK
/usr/sbin/
smond : :
Fan3(Fan
Tray 2, Fan
1): state
changed
from
UNKNOWN to
OK
/usr/sbin/
smond : :
Fan4(Fan
https://docs.cumulusnetworks.com 1947
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Hardw
rdwaare L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
Tray 2, Fan
2): state
changed
from
UNKNOWN to
OK
/usr/sbin/
smond : :
Fan5(Fan
Tray 3, Fan
1): state
changed
from
UNKNOWN to
OK
/usr/sbin/
smond : :
Fan6(Fan
Tray 3, Fan
2): state
changed
from
UNKNOWN to
OK
1948 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Hardw
rdwaare L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
PSU failure
/var/log/ /usr/sbin/
syslog smond : :
PSU1Fan1(PSU1
Fan): state
changed
from
UNKNOWN to
OK
/usr/sbin/
smond : :
PSU2Fan1(PSU2
Fan): state
changed
from
UNKNOWN to
BAD
System Data
When a CPU reports five high CPU alerts within a span of five minutes, an
alert is logged.
https://docs.cumulusnetworks.com 1949
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
WARNING
routing protocol startup. Do not set alerts for these short bursts.
Monit
Monito
oring
System Element Int
nte
erval P
Poll
oll
Comman
ommandsds
cumulus@switch:~$
cat /proc/
stat
cumulus@switch:~$
top -b -n 1
CPU L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
High CPU
/var/log/ sysmonitor:
syslog Critically
high CPU
1950 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
CPU L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
use: 99%
systemd[1]:
Starting
Monitor
system
resources
(cpu,
memory,
disk)…
systemd[1]:
Started
Monitor
system
resources
(cpu,
memory,
disk).
sysmonitor:
High CPU
use: 89%
systemd[1]:
Starting
Monitor
system
resources
(cpu,
memory,
disk)…
systemd[1]:
https://docs.cumulusnetworks.com 1951
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
CPU L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
Started
Monitor
system
resources
(cpu,
memory,
disk).
sysmonitor:
CPU use no
longer
high: 77%
Cumulus Linux 3.0 and later monitors CPU, memory, and disk space via
sysmonitor. The configurations for the thresholds are stored in /etc/
sysmonitor.
CPU mea
measur
sure
e Threshol
holds
ds
Disk Usage
When monitoring disk utilization, you can exclude tmpfs from monitoring.
1952 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Monit
Monito
oring
System Element Int
nte
erval P
Poll
oll
Comman
ommands
ds
cumulus@switch:~$
/bin/df -x
tmpfs
Process Restart
processes.
Proc
oce
ess Element Monit
Monito
oring C
Comman
ommands
ds
Link and port state interface transitions are logged to /var/log/syslog and
/var/log/switchd.log.
https://docs.cumulusnetworks.com 1953
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Int
nte
erfac
ace
e Element Monit
Monito
oring C
Comman
ommands
ds
Link state
cumulus@switch:~$ cat
/sys/class/
net/[iface]/operstate
cumulus@switch:~$ net
show interface all json
Link speed
cumulus@switch:~$ cat
/sys/class/
net/[iface]/speed
cumulus@switch:~$ net
show interface all json
Port state
cumulus@switch:~$ ip
link show
cumulus@switch:~$ net
show interface all json
1954 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Int
nte
erfac
ace
e Element Monit
Monito
oring C
Comman
ommands
ds
Bond state
cumulus@switch:~$ cat
/proc/net/
bonding/[bond]
cumulus@switch:~$ net
show interface all json
Interface counters are obtained from either querying the hardware or the
Linux kernel. The two outputs should align, but the Linux kernel aggregates
the output from the hardware.
Int
nte
erfac
ace
eCCo
ount
nte
er Monit
Monito
oring
Int
nte
erval P
Poll
oll
Element Comman
ommands
ds
cumulus@switch:~$
cat /sys/
class/
net/[iface]/statistics/[stat_name]
cumulus@switch:~$
net show
counters
json
cumulus@switch:~$
cl-netstat
https://docs.cumulusnetworks.com 1955
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Int
nte
erfac
ace
eCCo
ount
nte
er Monit
Monito
oring
Int
nte
erval P
Poll
oll
Element Comman
ommands
ds
-j
cumulus@switch:~$
ethtool -S
[ iface]
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
/var/log/ switchd[5692]:
switchd.log nic.c:213
nic_set_carrier:
swp17:
setting
kernel
carrier:
down
switchd[5692]:
netlink.c:291
libnl:
swp1,
family 0,
ifi 20,
oper down
switchd[5692]:
1956 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
nic.c:213
nic_set_carrier:
swp1:
setting
kernel
carrier: up
switchd[5692]:
netlink.c:291
libnl:
swp17,
family 0,
ifi 20,
oper up
Unidirectional link
/var/log/ ptmd[7146]:
switchd.log ptm_bfd.c:2471
/var/log/ Created new
ptm.log session 0x1
with peer
10.255.255.11
port swp1
ptmd[7146]:
ptm_bfd.c:2471
Created new
https://docs.cumulusnetworks.com 1957
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
session 0x2
with peer
fe80::4638:39ff:fe00:5b
port swp1
ptmd[7146]:
ptm_bfd.c:2471
Session 0x1
down to
peer
10.255.255.11,
Reason 8
ptmd[7146]:
ptm_bfd.c:2471
Detect
timeout on
session 0x1
with peer
10.255.255.11,
in state 1
Bond Negotiation
Working
/var/log/ kernel:
syslog [85412.763193]
bonding:
bond0 is
1958 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
being
created…
kernel:
[85412.770014]
bond0:
Enslaving
swp2 as a
backup
interface
with an up
link
kernel:
[85412.775216]
bond0:
Enslaving
swp1 as a
backup
interface
with an up
link
kernel:
[85412.797393]
IPv6:
ADDRCONF(NETDEV_UP):
bond0: link
is not ready
kernel:
[85412.799425]
IPv6:
https://docs.cumulusnetworks.com 1959
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
ADDRCONF(NETDEV_CHANGE):
bond0: link
becomes
ready
Bond Negotiation
Failing
/var/log/ kernel:
syslog [85412.763193]
bonding:
bond0 is
being
created…
kernel:
[85412.770014]
bond0:
Enslaving
swp2 as a
backup
interface
with an up
link
kernel:
[85412.775216]
bond0:
Enslaving
1960 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
swp1 as a
backup
interface
with an up
link
kernel:
[85412.797393]
IPv6:
ADDRCONF(NETDEV_UP):
bond0: link
is not ready
MLAG peerlink
negotiation
Working /var/log/ lldpd[998]:
syslog error while
receiving
frame on
swp50:
Network is
down
lldpd[998]:
error while
receiving
frame on
swp49:
https://docs.cumulusnetworks.com 1961
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
Network is
down
kernel:
[76174.262893]
peerlink:
Setting
ad_actor_system
to
44:38:39:00:00:11
kernel:
[76174.264205]
8021q:
adding VLAN
0 to HW
filter on
device
peerlink
mstpd:
one_clag_cmd:
setting (1)
peer link:
peerlink
mstpd:
one_clag_cmd:
setting (1)
clag state:
up
mstpd:
one_clag_cmd:
1962 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
setting
system-mac
44:38:39:ff:40:94
mstpd:
one_clag_cmd:
setting
clag-role
secondary
/var/log/ clagd[14003]:
clagd.log Cleanup is
executing.
clagd[14003]:
Cannot open
file “/tmp/
pre-
clagd.q7XiO
clagd[14003]:
Cleanup is
finished
clagd[14003]:
Beginning
execution
of clagd
https://docs.cumulusnetworks.com 1963
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
version 1
clagd[14003]:
Invoked
with: /usr/
sbin/clagd
–daemon
clagd[14003]:
Role is now
secondary
clagd[14003]:
HealthCheck:
role via
backup is
second
clagd[14003]:
HealthCheck:
backup
active
clagd[14003]:
Initial
config
loaded
clagd[14003]:
The peer
switch is
active.
clagd[14003]:
Initial
data sync
1964 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
from peer
done.
clagd[14003]:
Initial
handshake
done.
clagd[14003]:
Initial
data sync
to peer
done.
MLAG peerlink
negotiation Failing
/var/log/ lldpd[998]:
syslog error while
receiving
frame on
swp50:
Network is
down
lldpd[998]:
error while
receiving
frame on
swp49:
https://docs.cumulusnetworks.com 1965
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
Network is
down
kernel:
[76174.262893]
peerlink:
Setting
ad_actor_system
to
44:38:39:00:00:11
kernel:
[76174.264205]
8021q:
adding VLAN
0 to HW
filter on
device
peerlink
mstpd:
one_clag_cmd:
setting (1)
peer link:
peerlink
mstpd:
one_clag_cmd:
setting (1)
clag state:
down
mstpd:
one_clag_cmd:
1966 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
setting
system-mac
44:38:39:ff:40:94
mstpd:
one_clag_cmd:
setting
clag-role
secondary
/var/log/ clagd[26916]:
clagd.log Cleanup is
executing.
clagd[26916]:
Cannot open
file “/tmp/
pre-
clagd.6M527vvGX0/
brbatch”
for
reading: No
such file
or directory
clagd[26916]:
Cleanup is
https://docs.cumulusnetworks.com 1967
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
finished
clagd[26916]:
Beginning
execution
of clagd
version
1.3.0
clagd[26916]:
Invoked
with: /usr/
sbin/clagd
–daemon
169.254.1.2
peerlink.4094
44:38:39:FF:01:01
–priority
1000
–backupIp
10.0.0.2
clagd[26916]:
Role is now
secondary
clagd[26916]:
Initial
config
loaded
1968 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
MLAG port
negotiation
Working /var/log/ kernel:
syslog [77419.112195]
bonding:
server01 is
being
created…
lldpd[998]:
error while
receiving
frame on
swp1:
Network is
down
kernel:
[77419.122707]
8021q:
adding VLAN
0 to HW
filter on
device swp1
kernel:
[77419.126408]
server01:
Enslaving
swp1 as a
backup
interface
with a down
link
https://docs.cumulusnetworks.com 1969
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
kernel:
[77419.177175]
server01:
Setting
ad_actor_system
to
44:38:39:ff:40:94
kernel:
[77419.190874]
server01:
Warning: No
802.3ad
response
from the
link
partner for
any
adapters in
the bond
kernel:
[77419.191448]
IPv6:
ADDRCONF(NETDEV_UP):
server01:
link is not
ready
kernel:
[77419.191452]
8021q:
1970 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
adding VLAN
0 to HW
filter on
device
server01
kernel:
[77419.192060]
server01:
link status
definitely
up for
interface
swp1, 1000
Mbps full
duplex
kernel:
[77419.192065]
server01:
now running
without any
active
interface!
kernel:
[77421.491811]
IPv6:
ADDRCONF(NETDEV_CHANGE):
server01:
link
becomes
https://docs.cumulusnetworks.com 1971
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
ready
mstpd:
one_clag_cmd:
setting (1)
mac
44:38:39:00:00:17
<server01,
None>
/var/log/ clagd[14003]:
clagd.log server01 is
now dual
connected.
MLAG port
negotiation Failing
/var/log/ kernel:
syslog [79290.290999]
bonding:
server01 is
being
created…
1972 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
kernel:
[79290.299645]
8021q:
adding VLAN
0 to HW
filter on
device swp1
kernel:
[79290.301790]
server01:
Enslaving
swp1 as a
backup
interface
with a down
link
kernel:
[79290.358294]
server01:
Setting
ad_actor_system
to
44:38:39:ff:40:94
kernel:
[79290.373590]
server01:
Warning: No
802.3ad
response
https://docs.cumulusnetworks.com 1973
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
from the
link
partner for
any
adapters in
the bond
kernel:
[79290.374024]
IPv6:
ADDRCONF(NETDEV_UP):
server01:
link is not
ready
kernel:
[79290.374028]
8021q:
adding VLAN
0 to HW
filter on
device
server01
kernel:
[79290.375033]
server01:
link status
definitely
up for
interface
swp1, 1000
1974 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
Mbps full
duplex
kernel:
[79290.375037]
server01:
now running
without any
active
interface!
/var/log/ clagd[14291]:
clagd.log Conflict
(server01):
matching
clag-id (1)
not
configured
on peer…
clagd[14291]:
Conflict
cleared
(server01):
matching
clag-id (1)
https://docs.cumulusnetworks.com 1975
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
detected on
peer
MLAG port
negotiation
Flapping /var/log/ mstpd:
syslog one_clag_cmd:
setting (0)
mac
00:00:00:00:00:00
<server01,
None>
mstpd:
one_clag_cmd:
setting (1)
mac
44:38:39:00:00:03
<server01,
None>
/var/log/ clagd[14291]:
clagd.log server01 is
1976 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 1 L
Log
ogss L og L
Loca
ocation
tion Log Ent
ntrrie
iess
no longer
dual
connected
clagd[14291]:
server01 is
now dual
connected.
NOTE
https://docs.cumulusnetworks.com 1977
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Monit
Monito
oring
Neighbo
eighborr Element Int
nte
erval P
Poll
oll
Comman
ommands
ds
cumulus@switch:~$
lldpctl -f
json
Prescriptive Triggered
Topology Manager
cumulus@switch:~$
ptmctl -j [-
d]
Layer 2 Protocols
1978 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Int
nte
erfac
ace
eCCo
ount
nte
er Monit
Monito
oring
Int
nte
erval P
Poll
oll
Element Comman
ommands
ds
cumulus@switch:~$
mstpctl
showbridge
json
cumulus@switch:~$
mstpctl
showport
json
cumulus@switch:~$
clagctl
status
cumulus@switch:~$
clagd -j
cumulus@switch:~$
cat /var/
log/
clagd.log
https://docs.cumulusnetworks.com 1979
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Int
nte
erfac
ace
eCCo
ount
nte
er Monit
Monito
oring
Int
nte
erval P
Poll
oll
Element Comman
ommands
ds
cumulus@switch:~$
clagctl
dumppeermacs
cumulus@switch:~$
clagctl
dumpourmacs
La
Lay
yer 2 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
Spanning Tree
Working
/var/log/ kernel:
syslog [1653877.190724]
device swp1
entered
promiscuous
mode
kernel:
[1653877.190796]
device swp2
entered
promiscuous
mode
mstpd:
create_br:
1980 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 2 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
Add bridge
bridge
mstpd:
clag_set_sys_mac_br:
set bridge
mac
00:00:00:00:00:00
mstpd:
create_if:
Add iface
swp1 as
port#2 to
bridge
bridge
mstpd:
set_if_up:
Port swp1 :
up
mstpd:
create_if:
Add iface
swp2 as
port#1 to
bridge
bridge
mstpd:
set_if_up:
Port swp2 :
up
https://docs.cumulusnetworks.com 1981
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 2 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
mstpd:
set_br_up:
Set bridge
bridge up
mstpd:
MSTP_OUT_set_state:
bridge:swp1:0
entering
blocking
state(Disabled)
mstpd:
MSTP_OUT_set_state:
bridge:swp2:0
entering
blocking
state(Disabled)
mstpd:
MSTP_OUT_flush_all_fids:
bridge:swp1:0
Flushing
forwarding
database
mstpd:
MSTP_OUT_flush_all_fids:
bridge:swp2:0
Flushing
forwarding
database
mstpd:
1982 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 2 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
MSTP_OUT_set_state:
bridge:swp1:0
entering
learning
state(Designated)
mstpd:
MSTP_OUT_set_state:
bridge:swp2:0
entering
learning
state(Designated)
sudo:
pam_unix(sudo:session):
session
closed for
user root
mstpd:
MSTP_OUT_set_state:
bridge:swp1:0
entering
forwarding
state(Designated)
mstpd:
MSTP_OUT_set_state:
bridge:swp2:0
entering
forwarding
state(Designated)
mstpd:
https://docs.cumulusnetworks.com 1983
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 2 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
MSTP_OUT_flush_all_fids:
bridge:swp2:0
Flushing
forwarding
database
mstpd:
MSTP_OUT_flush_all_fids:
bridge:swp1:0
Flushing
forwarding
database
Spanning Tree
Blocking
/var/log/ mstpd:
syslog MSTP_OUT_set_state:
bridge:swp2:0
entering
blocking
state(Designated)
mstpd:
MSTP_OUT_set_state:
bridge:swp2:0
entering
learning
state(Designated)
1984 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 2 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
mstpd:
MSTP_OUT_set_state:
bridge:swp2:0
entering
forwarding
state(Designated)
mstpd:
MSTP_OUT_flush_all_fids:
bridge:swp2:0
Flushing
forwarding
database
mstpd:
MSTP_OUT_flush_all_fids:
bridge:swp2:0
Flushing
forwarding
database
mstpd:
MSTP_OUT_set_state:
bridge:swp2:0
entering
blocking
state(Alternate)
mstpd:
MSTP_OUT_flush_all_fids:
bridge:swp2:0
Flushing
forwarding
https://docs.cumulusnetworks.com 1985
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 2 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
database
Layer 3 Protocols
When FRRouting boots up for the first time, there is a different log file for
each daemon that is activated. If the log file is ever edited (for example,
through vtysh or frr.conf), the integrated configuration sends all logs to
vtysh.
BGP
When monitoring BGP, check if BGP peers are operational. There is not
much value in alerting on the current operational state of the peer;
monitoring the transition is more valuable, which you can do by monitoring
syslog.
1986 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Monit
Monito
oring
BGP Element Int
nte
erval P
Poll
oll
Comman
ommands
ds
cumulus@switch:~$
sudo vtysh
-c “show ip
bgp summary
json"
cumulus@switch:~$
net show
bgp summary
json
cumulus@switch:~$
sudo vtysh
-c “show ip
bgp json"
cumulus@switch:~$
net show
route bgp
json
https://docs.cumulusnetworks.com 1987
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
BGP L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
/var/log/ bgpd[3000]:
syslog %NOTIFICATION:
/var/log/ sent to
frr/*.log neighbor
swp1 4/0
(Hold Timer
Expired) 0
bytes
bgpd[3000]:
%ADJCHANGE:
neighbor
swp1 Down
BGP
Notification
send
OSPF
When monitoring OSPF, check if OSPF peers are operational. There is not
syslog.
1988 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Monit
Monito
oring
OSPF Element Int
nte
erval P
Poll
oll
Comman
ommands
ds
https://docs.cumulusnetworks.com 1989
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Monit
Monito
oring
Route Element Int
nte
erval P
Poll
oll
Comman
ommandsds
cumulus@switch:~$
cl-resource-
query
cumulus@switch:~$
cl-resource-
query -k
cumulus@switch:~$
cl-resource-
query
cumulus@switch:~$
cl-resource-
query -k
NOTE
1990 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
You can also run the net show system asic command, which is the
Routing Logs
La
Lay
yer 3 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
Routing protocol
process crash
/var/log/ frrouting[1824]:
syslog Starting
FRRouting
daemons
(prio:10):.
zebra. bgpd.
bgpd[1847]:
BGPd
1.0.0+cl3u7
starting:
vty@2605,
bgp@:179
zebra[1840]:
client 12
says hello
and bids
fair to
announce
https://docs.cumulusnetworks.com 1991
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 3 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
only bgp
routes
watchfrr[1853]:
watchfrr
1.0.0+cl3u7
watching
[zebra
bgpd], mode
[phased
zebra
restart]
watchfrr[1853]:
bgpd state
-> up :
connect
succeeded
watchfrr[1853]:
bgpd state
-> down :
read
returned EOF
cumulus-
core:
Running cl-
support for
core files
bgpd.3030.1470341944.core.core_
core_check.sh[4992]:
Please send
1992 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
La
Lay
yer 3 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
/var/
support/
cl_support__spine01_20160804_20
to Cumulus
support
watchfrr[1853]:
Forked
background
command
[pid 6665]:
/usr/sbin/
service frr
restart bgpd
watchfrr[1853]:
watchfrr
0.99.24+cl3u2
watching
[zebra bgpd
ospfd],
mode
[phased
zebra
restart]
watchfrr[1853]:
zebra state
-> up :
connect
succeeded
watchfrr[1853]:
https://docs.cumulusnetworks.com 1993
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
La
Lay
yer 3 L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
bgpd state
-> up :
connect
succeeded
watchfrr[1853]:
watchfrr:
Notifying
Systemd we
are up and
running
Logging
Monit
Monito
oring
Logging Element Log L
Loca
ocation
tion
Comman
ommandsds
1994 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Monit
Monito
oring
Logging Element Log L
Loca
ocation
tion
Comman
ommands
ds
switchd Hardware
functionality Abstraction Layer
(HAL). /var/log/
switchd.log
https://docs.cumulusnetworks.com 1995
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Monit
Monito
oring
Logging Element Log L
Loca
ocation
tion
Comman
ommands
ds
Not
ote
e: To write
syslog debug
messages to the log
file, you must run
the log syslog
debug command to
configure FRR with
syslog severity 7
(debug); otherwise,
when you issue a
debug command
such as, debug bgp
neighbor-events, no
output is sent to
/var/log/frr/frr.log.
1996 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Monit
Monito
oring
Logging Element Log L
Loca
ocation
tion
Comman
ommands
ds
debug.log
command, FRR
automatically
defaults to severity
7 (debug) logging
and the output is
logged to /var/log/
frr/frr.log.
Run the following command to confirm that the NTP process is working
correctly and that the switch clock is in sync with NTP:
cumulus@switch:~$ /usr/bin/ntpq -p
https://docs.cumulusnetworks.com 1997
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Device Management
Access L
Log
ogss Log L
Loca
ocation
tion Log Ent
ntrrie
iess
User Authentication
and Remote Login
/var/log/ sshd[31830]:
syslog Accepted
publickey
for cumulus
from
192.168.0.254
port 45582
ssh2: RSA
38:e6:3b:cc:04:ac:41:5e:c9:e3:9
sshd[31830]:
pam_unix(sshd:session):
session
opened for
user
cumulus by
(uid=0)
1998 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Supe
perr U
Usser
Log L
Loca
ocation
tion Log Ent
ntrrie
iess
Comman
ommand dL Log
ogss
Executing
commands using
sudo /var/log/ sudo:
syslog cumulus:
TTY=unknown
; PWD=/home/
cumulus ;
USER=root ;
COMMAND=/tmp/
script_9938.sh
-v
sudo:
pam_unix(sudo:session):
session
opened for
user root
by (uid=0)
sudo:
pam_unix(sudo:session):
session
closed for
user root
https://docs.cumulusnetworks.com 1999
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
switchd.log.
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
CRITICAL _port_group_config_values_get:
List create File a ticket
hal_list_get failed. with Cumulus
failed on [str] Support.
2000 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
recognized
CRITICAL _port_group_ports_set:
Port set list Check QoS
hal_list_get create failed. configuration
failed on [str] file.
CRITICAL _port_group_name_list_get:
List create Check QoS
hal_list_get failed. configuration
failed on [str] file.
CRITICAL _port_group_range_translate:
Invalid port Check QoS
_get_range_limits set configuration
failed on [str] configuration. file.
CRITICAL _priority_group_config_get:
Configuration File a ticket
hal_list_get list create with Cumulus
failed on [str] failed. Support.
CRITICAL hal_sh_datapath_file_read:
Could not Check
could not load the back backend QoS
load config end QoS configuration
file [str] configuration file.
file.
https://docs.cumulusnetworks.com 2001
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2002 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
versions will
enforce fully
valid licenses
on the
system.
Please
contact
licensing@cumulusnetworks.com
at your
convenience
so we can
validate and
assist you
with this
licensing
issue.
https://docs.cumulusnetworks.com 2003
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
check
requested
2004 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2005
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2006 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2007
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2008 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2009
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2010 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
device. Support.
https://docs.cumulusnetworks.com 2011
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2012 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2013
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2014 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2015
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2016 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2017
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2018 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2019
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
MCAST
router.
2020 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2021
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR sx_api_cos_prio_to_ieeeprio_set
IEEE priority File a ticket
failed: [str] map with Cumulus
configuration Support.
write failed.
ERROR _hal_mlx_packet_2_switch:
Packet Check QoS
priority field priority field configuration
2022 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR hal_sh_datapath_pfc_set:
CPU port File a ticket
PFC does not with Cumulus
configuration support Support.
not priority flow
supported on control.
the CPU port
ERROR hal_sh_datapath_init:
Back end Check for
https://docs.cumulusnetworks.com 2023
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR _priority_field_list_get:
Invalid packet Check QoS
Packet priority field. configuration
priority field file.
[str] not
supported
2024 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
group [str]
ERROR _switch_priority_config:
ASIC File a ticket
[str] scheduler with Cumulus
configuration Support.
failed.
ERROR _priority_map_config
ASIC priority File a ticket
map function, map with Cumulus
hal port [int]: configuration Support.
[str] failed.
ERROR _priority_map_config
ASIC priority File a ticket
enable map enable with Cumulus
function: [str] configuration Support.
failed.
ERROR _port_group_range_translate:
Invalid port Check QoS
invalid port set configuration
list: range configuration. file.
length is 0, id
list is 0
ERROR _port_group_range_translate:
Invalid port Check QoS
failed: port set configuration
list not configuration. file.
created from
range [str] to
[str]
https://docs.cumulusnetworks.com 2025
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
three priority
fields, got
[int]
ERROR _cutthrough_config:
ASIC cut- File a ticket
Cutthrough through with Cumulus
config failed configuration Support.
on HAL port failed.
[int]: [str]
ERROR _source_priority_map_init:
Configured Check QoS
packet priority map configuration
priority map list is too file.
size [int] is large.
larger than
array length
[int]
ERROR _source_priority_map_populate:
Configured Check QoS
packet priority map configuration
2026 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR _remark_priority_map_init:
Configured Check QoS
packet priority map configuration
priority map list is too file.
entry index large.
[int] is larger
than array
length [int]
ERROR _remark_priority_map_populate:
Configured Check QoS
packet priority map configuration
priority map list is too file.
entry index large.
[int] is larger
than array
length [int]
https://docs.cumulusnetworks.com 2027
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
cos ID values
ERROR hal_port_pause_set:
Invalid Check QoS
RX pause not operation for configuration
allowed on the current file.
port [int] port
configuration.
2028 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR backend_enum_info_key
Invalid File a ticket
unsupported backend type. with Cumulus
type [uint] Support.
https://docs.cumulusnetworks.com 2029
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR Failed to
update VRF
[str] to table
id [uint]
2030 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
capacity. table.
https://docs.cumulusnetworks.com 2031
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2032 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2033
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
software
database.
2034 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2035
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2036 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR sx_api_lag_hash_flow_params_set
Set hash flow
failed: [str] parameters
failed in the
SDK.
https://docs.cumulusnetworks.com 2037
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2038 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
failed in the
SDK.
https://docs.cumulusnetworks.com 2039
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2040 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2041
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2042 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
tunnel.
https://docs.cumulusnetworks.com 2043
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2044 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2045
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2046 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2047
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2048 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
devices in the
XML
configuration
file.
https://docs.cumulusnetworks.com 2049
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2050 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
configuration
file.
https://docs.cumulusnetworks.com 2051
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
XML
configuration
file.
2052 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2053
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
XML
configuration
file.
ERROR topo_xml_device_add
A device File a ticket
failed for could not be with Cumulus
device [uint] added to a Support.
([str]) topo_xml_device
database.
2054 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2055
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2056 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2057
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR unreg_mc_flood_ports
Unregistered File a ticket
fail for swid multicast with Cumulus
[int], vfid flood ports Support.
[int], [str] setting for
given swid/
port/vfid
failed in the
SDK.
2058 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2059
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2060 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2061
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
entry.
2062 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2063
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2064 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2065
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2066 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2067
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
following
field(s): –src-
ip –dst-ip .
2068 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2069
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2070 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
following
https://docs.cumulusnetworks.com 2071
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2072 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2073
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2074 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2075
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
failed: [str]
2076 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2077
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2078 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2079
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2080 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
number of
output
interfaces
([val])
https://docs.cumulusnetworks.com 2081
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2082 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2083
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2084 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2085
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2086 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
[str]
https://docs.cumulusnetworks.com 2087
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2088 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2089
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
failed: [str]
2090 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2091
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2092 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2093
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2094 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
supported actions.
https://docs.cumulusnetworks.com 2095
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2096 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
IPv6,socket. Support.
https://docs.cumulusnetworks.com 2097
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2098 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
return/etc.
https://docs.cumulusnetworks.com 2099
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2100 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2101
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
index:[int], rv:
[int]
2102 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2103
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2104 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
command in
Prescriptive
Topology
Manager.
https://docs.cumulusnetworks.com 2105
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
rc [int] Prescriptive
Topology
Manager.
2106 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2107
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2108 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2109
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
msg [str].
ERROR dflt_trap_parsing_depth
Failed to File a ticket
get failed: retrieve the and contact
[str] Mellanox Cumulus
Spectrum Support.
chip parsing
2110 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
depth from
Mellanox
SDK, error
msg [str].
Possibly the
parsing depth
has not been
set correctly.
This would
impact
hardware
packet
forwarding.
https://docs.cumulusnetworks.com 2111
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
would lead to
the
respective
control
packet not
reaching the
CPU.
2112 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
CPU.
https://docs.cumulusnetworks.com 2113
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2114 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2115
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2116 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
can be
metered with
unit of
packets for
bytes. This is
an internal
error.
https://docs.cumulusnetworks.com 2117
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
vlan id [uint]
and external
vlan id[uint],
error msg
[str]
2118 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
software
https://docs.cumulusnetworks.com 2119
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
interface [str]
in the e2i
table. This is
an internal
configration
error
2120 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
in the e2i
table. This is
an internal
configration
error
ERROR bond_mbrs_vlan_port_set
failed to set File a ticket
failed for vlan for bond and contact
bond: [int] members for Cumulus
bond id [uint] Support.
https://docs.cumulusnetworks.com 2121
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2122 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2123
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2124 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2125
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
information
2126 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2127
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2128 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
swid [uint]
vlan id [uint]
https://docs.cumulusnetworks.com 2129
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
because of
configuration
error
2130 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2131
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
age mac
address
2132 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2133
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
SDK, error
msg [str]
2134 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
msg [str]
https://docs.cumulusnetworks.com 2135
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2136 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2137
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2138 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
SDK, error
msg [str]
https://docs.cumulusnetworks.com 2139
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
forwarding id Cumulus
[uint] in hash Support.
table because
of a duplicate
entry
ERROR fdb_uc_mac_addr_get
Failed to get File a ticket
failed: [str] fdb unicast and contact
mac address Cumulus
from Mellanox Support.
SDK, error
msg [str]
2140 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2141
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
interface id Support.
[uint],
errorstr [str]
2142 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2143
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
duplicate
ECMP ID
[uint]
2144 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
error [str]
https://docs.cumulusnetworks.com 2145
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
[uint] in
Mellanox
SDK, error
[str]
2146 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
[int] id [uint] in
mellaox SDK.
https://docs.cumulusnetworks.com 2147
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2148 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
net device
https://docs.cumulusnetworks.com 2149
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
interface
2150 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
msg [str]
https://docs.cumulusnetworks.com 2151
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2152 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR sx_api_router_uc_route_get_all
Failed to File a ticket
failed: [str] retrieve a and contact
unicast route Cumulus
from Mellanox Support.
SDK, error
reason [str].
https://docs.cumulusnetworks.com 2153
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR sx_api_router_ecmp_clone_set
Failed to File a ticket
2154 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2155
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
exists.
2156 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2157
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR hal_clag_set_port_egress_mask
Failed to File a ticket
failed in install egress with Cumulus
backend[[int]] mask on Support.
for MLAG port.
2158 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
ERROR hal_clag_set_ln_egress_mask
Failed to File a ticket
failed in install egress with Cumulus
backend[[int]] mask on Support.
for VXLAN
device.
WARNING sx_api_cos_port_tc_prio_map_get
ASIC egress File a ticket
hal port [int] queue map with Cumulus
returned [str] configuration Support.
read failed.
WARNING sx_api_cos_port_tc_prio_map_set
ASIC egress File a ticket
logical port queue map with Cumulus
0x%x configuration Support.
returned [str] write failed.
WARNING hal_mlx_priority_source_trust_get
ASIC priority File a ticket
HAL port source trust with Cumulus
[int] logical configuration Support.
port 0x%x read failed.
returned [str]
WARNING hal_mlx_priority_source_trust_set
ASIC priority File a ticket
HAL port source trust with Cumulus
[int] logical configuration Support.
port 0x%x write failed.
returned [str]
WARNING hal_mlx_rewrite_enable_get
ASIC priority File a ticket
HAL port rewrite with Cumulus
https://docs.cumulusnetworks.com 2159
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING hal_mlx_rewrite_enable_set
ASIC priority File a ticket
HAL port rewrite with Cumulus
[int] logical enable Support.
port 0x%x configuration
returned [str] write failed.
WARNING sx_api_cos_port_tc_mcaware_get
ASIC MC File a ticket
hal port [int] buffer with Cumulus
returned [str] configuration Support.
read failed.
WARNING sx_api_cos_port_tc_mcaware_set
ASIC MC File a ticket
hal port [int] buffer with Cumulus
returned [str] configuration Support.
write failed.
WARNING sx_api_cos_port_tc_prio_map_set
ASIC egress File a ticket
hal port [int] queue map with Cumulus
returned [str] configuration Support.
write failed.
2160 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
not file.
recognized:
defaulting to
buffer units
WARNING sx_api_cos_shared_buff_pool_set
ASIC buffer File a ticket
for sw pool id pool with Cumulus
[int] to size configuration Support.
[int] (mode write failed.
[int]) failed:
[str],
WARNING sx_api_cos_port_prio_buff_map_get
Priority group File a ticket
failed for MLX buffer map with Cumulus
port [int]: read failed. Support.
[str]
WARNING sx_api_cos_port_prio_buff_map_set
ASIC packet File a ticket
failed for MLX buffer with Cumulus
port [int]: configuration Support.
[str] write failed.
https://docs.cumulusnetworks.com 2161
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING sx_api_cos_shared_buff_pool_get
ASIC buffer File a ticket
failed, cannot pool with Cumulus
get pool size configuration Support.
or mode : read failed.
[str]
2162 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING sx_api_cos_shared_buff_pool_get
ASIC buffer File a ticket
failed, cannot pool with Cumulus
report pool configuration Support.
configurations: read failed.
[str]
https://docs.cumulusnetworks.com 2163
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING sx_api_cos_pools_list_get,
Buffer pool File a ticket
pool count == configuration with Cumulus
0, failed: [str] read failed. Support.
WARNING sx_api_cos_pools_list_get,
Buffer pool File a ticket
pool count == configuration with Cumulus
[uint] failed: read failed. Support.
[str]
WARNING _pool_buffer_list_get
Buffer pool File a ticket
failed: [str] configuration with Cumulus
read failed. Support.
WARNING sx_api_cos_shared_buff_pool_get
ASIC packet File a ticket
failed, cannot buffer with Cumulus
report pool configuration Support.
configurations: write failed.
[str]
WARNING sx_api_cos_port_pcpdei_to_prio_get
ASIC L2 File a ticket
port [int] priority with Cumulus
(0x%x) source map Support.
returned [str] get operation
failed.
WARNING sx_api_cos_port_buff_type_set
ASIC packet File a ticket
failed for HAL buffer with Cumulus
port configuration Support.
[int]/MLX write failed.
port [int]:
[str]
WARNING sx_api_cos_port_shared_buff_type_set
ASIC packet File a ticket
failed for HAL buffer with Cumulus
2164 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING sx_api_cos_port_pcpdei_to_prio_set
ASIC L2 File a ticket
port [int] priority with Cumulus
logical port source map Support.
0x%x set operation
returned [str] failed.
WARNING sx_api_cos_port_dscp_to_prio_get
ASIC L3 File a ticket
port [int] priority with Cumulus
(0x%x) source map Support.
returned [str] get operation
failed.
WARNING sx_api_cos_port_dscp_to_prio_set
ASIC L3 File a ticket
port [int] priority with Cumulus
returned [str] source map Support.
set operation
failed.
WARNING sx_api_cos_port_prio_to_pcpdei_rewrite_set
ASIC L2 File a ticket
hal port [int] priority with Cumulus
element remark map Support.
count [int]: set operation
returned [str] failed.
https://docs.cumulusnetworks.com 2165
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
[int]
WARNING sx_api_cos_port_prio_to_dscp_rewrite_set
ASIC L3 File a ticket
hal port [int] priority with Cumulus
logical_port remark map Support.
[int] element set operation
count [int]: failed.
returned [str]
WARNING sx_api_cos_port_ets_element_get
ASIC File a ticket
logical port scheduler with Cumulus
0x%x configuration Support.
returned [str] read failed.
WARNING sx_api_cos_port_ets_element_set
ASIC File a ticket
(destroy) scheduler with Cumulus
logical port configuration Support.
0x%x write failed.
returned [str]
WARNING sx_api_cos_port_ets_element_get
ASIC File a ticket
hal port [int] scheduler with Cumulus
returned [str] configuration Support.
read failed.
WARNING sx_api_cos_port_ets_element_set
ASIC File a ticket
logical port scheduler with Cumulus
0x%x level configuration Support.
[int] index write failed.
2166 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
[int] returned
[str]
WARNING sx_api_cos_port_ets_element_get
ASIC File a ticket
hal port [int] scheduler with Cumulus
returned [str] configuration Support.
read failed.
WARNING sx_api_cos_port_ets_element_set
ASIC File a ticket
(destroy) hal scheduler with Cumulus
port [int] configuration Support.
returned [str] write failed.
WARNING sx_api_cos_port_ets_element_set
ASIC File a ticket
hal port [int] scheduler with Cumulus
level [int] configuration Support.
index [int] write failed.
returned [str]
WARNING sx_api_port_pfc_enable_set
ASIC priority File a ticket
hal port [int] flow control with Cumulus
returned [str] configuration Support.
failed.
WARNING sx_api_cos_redecn_general_param_get
ASIC ECN File a ticket
returned [str] configuration with Cumulus
failed. Support.
https://docs.cumulusnetworks.com 2167
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING hal_mlx_ecn_red_set
invalid Check QoS
HAL port parameter. configuration
[int] file.
min_threshold_bytes
[int] is less
than
minimum
size, using
[int] bytes
WARNING hal_mlx_ecn_red_set
invalid Check QoS
HAL port parameter. configuration
[int] file.
max_threshold_bytes
[int] is
greater than
maximum
size, using
[int] bytes
WARNING sx_api_cos_redecn_profile_set
ASIC ECN File a ticket
returned [str] configuration with Cumulus
failed. Support.
WARNING sx_api_cos_redecn_tc_enable_set
ASIC ECN File a ticket
returned [str] configuration with Cumulus
failed. Support.
WARNING sx_api_cos_redecn_profle_tc_bind_set
ASIC ECN File a ticket
for hal port configuration with Cumulus
[int] flow failed. Support.
type [int]
returned [str]
2168 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING hal_sh_datapath_file_read:
Invalid egress Check back
egress port port MC end QoS
MC buffer buffer value. configuration
percent file.
[perc]
reduced to
100.0
WARNING hal_sh_datapath_packet_buffer_set:
Back end Check for
[str] packet buffer detailed log
config failed. messages.
https://docs.cumulusnetworks.com 2169
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING _port_group_priority_map_get:
Invalid File a ticket
arg is NULL parameter. with Cumulus
Support.
WARNING _port_group_config_values_get:
Port group File a ticket
_port_group_find not found or with Cumulus
failed on [str] created. Support.
[str]
WARNING _port_group_set_get:
Port group Check QoS
[str] port set port set not configuration
not found found. file.
WARNING _port_pause_config:
ASIC port File a ticket
config_port_pausepause with Cumulus
failed: [str] configuration Support.
failed.
WARNING _priority_flow_control_config:
ASIC priority File a ticket
hal_port_pfc_set flow control with Cumulus
failed on hal configuration Support.
port [int]: failed.
[str]
WARNING _config_port_packet_buffers:
ASIC packet File a ticket
[str] buffer config with Cumulus
2170 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
failed. Support.
WARNING _switch_priority_config:
_switch_priority_config:
File a ticket
hal port [int]: hal port [int]: with Cumulus
[str] [str] Support.
WARNING _config_port_packet_buffers:
ASIC packet File a ticket
[str] buffer config with Cumulus
failed. Support.
WARNING _priority_map_config:
Invalid File a ticket
priority map parameter. with Cumulus
direction [int] Support.
is larger then
max value
HAL_DATAPATH_PRIORITY_DIRECTION_MAX
WARNING _priority_map_config:
Invalid packet Check QoS
packet priority configuration
priority field field(s). file.
[int] not
supported
https://docs.cumulusnetworks.com 2171
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING _port_attribute_mark:
Flow control Check QoS
flow control configuration configuration
configuration conflict. file.
conflict on hal
port [int]:
WARNING hal_datapath_forwarding_profile_get:
Memory File a ticket
forwarding allocation with Cumulus
table profile failed. Support.
path was
NULL
WARNING hal_datapath_forwarding_profile_get:
Missing Check QoS
sfs_config_get forwarding configuration
2172 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING _config_value_read:
Invalid File a ticket
sfs path is null parameter. with Cumulus
Support.
WARNING _config_value_read:
Configuration File a ticket
sfs_config_get parameter with Cumulus
[str] failed not found. Support.
WARNING _config_value_read:
Configuration File a ticket
sfs_config_get value not with Cumulus
[str] returned found. Support.
NULL
configuration
WARNING _cos_show_node_create:
switchd fuse File a ticket
sfs_add failed node create with Cumulus
https://docs.cumulusnetworks.com 2173
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
WARNING _priority_map_list_get:
ASIC priority File a ticket
[str] profile create with Cumulus
failed. Support.
WARNING _switch_priority_config_values_get:
Invalid Check QoS
scheduling scheduling configuration
algorithm algorithm. file.
[str] not
recognized
2174 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2175
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2176 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2177
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2178 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
https://docs.cumulusnetworks.com 2179
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
2180 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
excessive addresses
moves of mac over
address [str] threshold.
on bridge
[str],
https://docs.cumulusnetworks.com 2181
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Rec
ecommen
ommendded
Se
Sev
verity Me
Mess
ssage
age T
Te
ext Explana
xplanation
tion
Action
This is an
internal error.
2182 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
https://docs.cumulusnetworks.com 2183
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
2184 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
incorrectly.
https://docs.cumulusnetworks.com 2185
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
2186 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
https://docs.cumulusnetworks.com 2187
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
incorrectly.
2188 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
https://docs.cumulusnetworks.com 2189
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
most
likely a
bug.
2190 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
group to likely a
creation create bug. If
failed an the
update problem
group persists,
but report
was it for
unable troubleshooting.
to do
so.
https://docs.cumulusnetworks.com 2191
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
packet.
2192 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
https://docs.cumulusnetworks.com 2193
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
report
it for
troubleshooting.
2194 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
https://docs.cumulusnetworks.com 2195
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
2196 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
not do troubleshooting.
so.
https://docs.cumulusnetworks.com 2197
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
it for
troubleshooting.
2198 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
local that
and same
remote route is
routes. not
learned
both
local
and
remote.
https://docs.cumulusnetworks.com 2199
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
2200 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
entry report
and it for
failed. troubleshooting.
https://docs.cumulusnetworks.com 2201
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
and
instance
name
are
consistent.
2202 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
removal/ FRR.
modification
of
Flowspec
from
the
dataplane.
https://docs.cumulusnetworks.com 2203
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
troubleshooting.
2204 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
subsystem.
https://docs.cumulusnetworks.com 2205
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
probably sufficient
already system
exited. resources
are
available.
2206 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
SNMP is
library properly
it uses. set up
A and
callback working.
from
this
subsystem
has
indicated
some
error.
https://docs.cumulusnetworks.com 2207
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
via
normal
netlink
messaging.
2208 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
queue queue
does does
not not
exist. exist.
https://docs.cumulusnetworks.com 2209
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
now.
2210 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
installation of all
failure routes configuration
to the parameters
underlying for
dataplane correctness.
failed.
https://docs.cumulusnetworks.com 2211
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
that feature.
require
protobuf
will fail.
2212 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
kernel the
kernel
via
Netlink.
https://docs.cumulusnetworks.com 2213
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
the the
FRR issue
daemons. for
troubleshooting.
2214 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
packet persists,
but report
could it for
not do troubleshooting.
so.
https://docs.cumulusnetworks.com 2215
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
advertising shut
ID down
mismtach the
with OSPF
the link domain
ID. and
report
the
problem
for
troubleshooting.
2216 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
it for
troubleshooting.
https://docs.cumulusnetworks.com 2217
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
it for
troubleshooting.
2218 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
Issue
https://docs.cumulusnetworks.com 2219
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
2220 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
stop
FRR,
remove
it from
the
system
and
reinstall.
Typically,
only
developers
should
see this
issue.
https://docs.cumulusnetworks.com 2221
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
match
the
client
instance
number.
2222 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
https://docs.cumulusnetworks.com 2223
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
chunks.
2224 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
https://docs.cumulusnetworks.com 2225
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
unknown update
address for
family unknown
address
family.
2226 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
https://docs.cumulusnetworks.com 2227
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
2228 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
protocol table a
for manager developer.
table only
manager accepts
client connections
from
daemons
managing
dynamic
routing
protocols,
but
received
a
connection
attempt
from a
daemon
that
does
not
meet
this
criterion.
https://docs.cumulusnetworks.com 2229
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
and/or
instance
numbers
versus
those
stored
in a
message
transiting
its
socket.
2230 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
from an
unidentified
client.
https://docs.cumulusnetworks.com 2231
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
message the
with an latest
unrecognized
version
type of FRR
field. to
ensure
kernel
compatibility.
If the
problem
persists,
notify a
developer.
2232 https://docs.cumulusnetworks.com
Monitoring and Troubleshooting Cumulus Linux v4.2 User Documentation
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
https://docs.cumulusnetworks.com 2233
Cumulus Linux v4.2 User Documentation Monitoring and Troubleshooting
Me
Mess
ssage
age Me
Mess
ssage
age Rec
ecommen
ommendded
Ca
Cattego
egorry Se
Sev
verity Explana
xplanation
tion
# Text Action
2234 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Network Solutions
This section discusses the various architectures and strategies available
with Cumulus Linux, provides demos to help you build virtual simulations of
production networks and validate configurations, and describes different
https://docs.cumulusnetworks.com 2235
Cumulus Linux v4.2 User Documentation Network Solutions
Example Summa
mmarry
Benefit
Benefitss Con
onssideration
tionss
2236 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Benefit
Benefitss Con
onssideration
tionss
Activ
ctive-A
e-Activ
ctive
e Activ
ctive-P
e-Paass
ssiv
ive
e L2 tto
oLL3
3
Mo
Modde Mo
Modde Dema
Demarrca
cation
tion
https://docs.cumulusnetworks.com 2237
Cumulus Linux v4.2 User Documentation Network Solutions
Activ
ctive-A
e-Activ
ctive
e Activ
ctive-P
e-Paass
ssiv
ive
e L2 tto
oLL3
3
Mo
Modde Mo
Modde Dema
Demarrca
cation
tion
Example C
Config
onfigur
uraation
2238 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
•
leaf01 Ubuntu host
auto bridge
iface bridge
bridge-vlan-aware yes
bridge-vids 1-2000
bridge-stp on
auto bridge.10
iface bridge.10
address 10.1.10.2/24
auto peerlink
iface peerlink
auto swp1
iface swp1
mstpctl-portadminedge yes
mstpctl-bpduguard yes
https://docs.cumulusnetworks.com 2239
Cumulus Linux v4.2 User Documentation Network Solutions
Layer 2 - MLAG
Example Summa
mmarry
Benefit
Benefitss Con
onssideration
tionss
Activ
ctive-A
e-Activ
ctive
e Activ
ctive-
e- L2 tto
oLL3
3 Mo
Morre
Mo
Modde Pass
ssiv
ive
e Mo
Modde Dema
Demarrca
cation
tion Inf
nfoorma
mation
tion
VRR None
• ToR layer • Can be
(recommended) done with
• Spine layer either the
• Core/ traditional
edge/exit or VLAN-
2240 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Activ
ctive-A
e-Activ
ctive
e Activ
ctive-
e- L2 tto
oLL3
3 Mo
Morre
Mo
Modde Pass
ssiv
ive
e Mo
Modde Dema
Demarrca
cation
tion Inf
nfoorma
mation
tion
aware
bridge
driver
depending
on overall
STP needs.
• There are a
few
different
solutions
including
Cisco VPC
and Arista
MLAG, but
none of
them
interoperate
and are
very
vendor
specific.
• Cumulus
Networks
Layer 2 HA
validated
design
guide.
Example C
Config
onfigur
uraation
https://docs.cumulusnetworks.com 2241
Cumulus Linux v4.2 User Documentation Network Solutions
•
leaf01 Ubuntu host
auto bridge
iface bridge
bridge-vlan-aware yes
bridge-vids 1-2000
bridge-stp on
auto bridge.10
iface bridge.10
address 172.16.1.2/24
auto peerlink
iface peerlink
auto peerlink.4094
iface peerlink.4094
address 169.254.1.2
clagd-enable yes
clagd-peer-ip 169.254.1.2
clagd-system-mac 44:38:39:FF:40:94
auto host-01
iface host-01
bond-slaves swp1
clag-id 1
Example Summa
mmarry
Benefit
Benefitss Con
onssideration
tionss
FHR (Fi
(Firs
rstt Hop R
Reedu
dunndanc
ancy)
y) Mo
Morre Inf
nfoorma
mation
tion
Example C
Config
onfigur
uraation
https://docs.cumulusnetworks.com 2243
Cumulus Linux v4.2 User Documentation Network Solutions
•
leaf01 leaf02 Ubuntu host1 Ubuntu host2
/etc/network/interfaces file
auto swp1
iface swp1
address 172.16.1.1/30
/etc/frr/frr.conf file
router ospf
router-id 10.0.0.11
interface swp1
ip ospf area 0
2244 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Example Summa
mmarry
Benefit
Benefitss Con
onssideration
tionss
Configuration in FRRouting is
simple (route map plus • Silent hosts do not receive
redistribute table) traffic (depending on ARP).
• IPv4 only.
• If two VMs are on the same
layer 2 domain, they can learn
about each other directly
instead of using the gateway,
which causes problems (such
as VM migration or getting the
network routed). Put hosts on
/32 (no other layer 2
adjacency).
• VM moves do not trigger a
route withdrawal from the
original leaf (four hour
timeout).
• Clearing ARP impacts routing.
https://docs.cumulusnetworks.com 2245
Cumulus Linux v4.2 User Documentation Network Solutions
Benefit
Benefitss Con
onssideration
tionss
FHR (Fi
(Firs
rstt Hop R
Reedu
dunndanc
ancy)
y) Mo
Morre Inf
nfoorma
mation
tion
2246 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Example Summa
mmarry
Benefit
Benefitss Con
onssideration
tionss
https://docs.cumulusnetworks.com 2247
Cumulus Linux v4.2 User Documentation Network Solutions
FHR (Fi
(Firs
rstt Hop R
Reedu
dunndanc
ancy)
y) Mo
Morre Inf
nfoorma
mation
tion
Example Summa
mmarry
Benefit
Benefitss Con
onssideration
tionss
2248 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Benefit
Benefitss Con
onssideration
tionss
FHR (Fi
(Firs
rstt Hop R
Reedu
dunndanc
ancy)
y) Mo
Morre Inf
nfoorma
mation
tion
Example Summa
mmarry
https://docs.cumulusnetworks.com 2249
Cumulus Linux v4.2 User Documentation Network Solutions
Benefit
Benefitss Con
onssideration
tionss
FHR (Fi
(Firs
rstt Hop R
Reedu
dunndanc
ancy)
y) Mo
Morre Inf
nfoorma
mation
tion
Example Summa
mmarry
2250 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Example Summa
mmarry
Benefit
Benefitss Con
onssideration
tionss
FHR (Fi
(Firs
rstt Hop R
Reedu
dunndanc
ancy)
y)
The gateways are the ToRs, exactly like redistribute neighbor with an
equal cost route installed.
https://docs.cumulusnetworks.com 2251
Cumulus Linux v4.2 User Documentation Network Solutions
Example C
Config
onfigur
uraation
•
leaf01 leaf02 Ubuntu host
/etc/network/interfaces file
auto swp1
iface swp1
address 172.16.1.1/30
/etc/frr/frr.conf file
router ospf
router-id 10.0.0.11
interface swp1
ip ospf area 0
2252 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Each server is configured on a VLAN, with a total of two VLANs for the
setup. MLAG is also set up between servers and the leafs. Each leaf is
configured with an anycast gateway and the servers default gateways are
corresponding VLANs.
Benefit
Benefitss Con
onssideration
tionss
https://docs.cumulusnetworks.com 2253
Cumulus Linux v4.2 User Documentation Network Solutions
Activ
ctive-A
e-Activ
ctive
e Activ
ctive-
e- Mo
Morre
Dema
Demarrca
cation
tion
Mo
Modde Pass
ssiv
ive
e Mo
Modde Inf
nfoorma
mation
tion
Example /
/et
etc/net
c/netwwork/int
/inte
erfac
ace
es File C
Config
onfigur
uraation
2254 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
•
leaf01 Leaf02 Server01 Server02
# Loopback interface
auto lo
address 10.0.0.11/32
clagd-vxlan-anycast-ip 10.0.0.112
# Management interface
auto eth0
vrf mgmt
auto mgmt
iface mgmt
address 127.0.0.1/8
address ::1/128
vrf-table auto
# Port to Server01
auto swp1
iface swp1
alias to Server01
# Port to Server02
auto swp2
utilizes the reference topology shown below. Vagrant and Cumulus VX can
be used together to build virtual simulations of production networks to
validate configurations, develop automation code and simulate failure
scenarios.
Reference Topology
The Cumulus Linux reference topology includes cabling (in DOT format for
dual use with PTM), MAC addressing, IP addressing, switches and servers.
2256 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Int
nte
erfac
ace
e
Hostname eth
eth00 IP eth
eth00 MA
MAC
C
Count
https://docs.cumulusnetworks.com 2257
Cumulus Linux v4.2 User Documentation Network Solutions
Int
nte
erfac
ace
e
Hostname eth
eth00 IP eth
eth00 MA
MAC
C
Count
(exit leaf)
Virtual Appliance
You can build out the reference topology in hardware or using Cumulus VX.
The Cumulus Reference Topology using Vagrant is essentially the reference
topology built out inside Vagrant with VirtualBox or KVM. The installation
and setup instructions for bringing up the entire reference topology on a
laptop or server are on the cldemo-vagrant GitHub repo.
2258 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Hardware
Any switch from the hardware compatibility list is compatible with the
topology as long as you follow the interface count from the table above. Of
course, in your own production environment, you don’t have to use exactly
the same devices and cabling as outlined above.
Demos
You can find an up to date list of all the demos in the cldemo-vagrant
GitHub repository, which is available to anyone free of charge.
https://docs.cumulusnetworks.com 2259
Cumulus Linux v4.2 User Documentation Network Solutions
Campus Deployments
Cumulus Linux includes a number of features that you can use to deploy in
a campus setting. These features include:
• 802.1X Interfaces
• Inter-subnet Routing
• Power over Ethernet
• TDR - time domain reflectometer
• Voice VLAN
These features work in conjunction with the following core Cumulus Linux
functionality to provide a complete campus deployment:
Related Information
For a deep dive into campus architecture, read the campus architecture
solution guide.
2260 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
apt/sources.list.d/docker.list
https://docs.cumulusnetworks.com 2261
Cumulus Linux v4.2 User Documentation Network Solutions
"iptables": false,
"ip-forward": false,
"ip-masq": false
EOD
systemd/system/docker@.service
/^Requires=docker.socket$/ d;
' /lib/systemd/system/docker@.service
2262 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
NOTE
https://docs.cumulusnetworks.com 2263
Cumulus Linux v4.2 User Documentation Network Solutions
• The Modular Layer 2 (ML2) mechanism driver for OpenStack, which you
install on the OpenStack Neutron controller node. The driver is available
as a Python package from upstream.
• The OpenStack Queens release.
2264 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
[ML2]
#local_bind = 10.40.10.122
#service_node = 10.40.10.1
#trunk_interfaces = uplink
https://docs.cumulusnetworks.com 2265
Cumulus Linux v4.2 User Documentation Network Solutions
2. Restart the REST API service for the configuration changes to take effect:
Additional REST API calls have been added to support bridge configuration
using the bridge name instead of network ID.
1. Install the ML2 mechanism driver on your Neutron host, which is available
upstream:
networking-cumulus.git
root@neutron:~# cd networking-cumulus
2266 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
[ml2_cumulus]
switches="192.168.10.10,192.168.20.20"
The ML2 mechanism driver includes the following parameters, which you
can configure in the /etc/neutron/plugins/ml2/ml2_conf.ini file.
Paramet
amete
er De
Desscription
https://docs.cumulusnetworks.com 2267
Cumulus Linux v4.2 User Documentation Network Solutions
Paramet
amete
er De
Desscription
2268 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 2269
Cumulus Linux v4.2 User Documentation Network Solutions
Anycast Architecture
device sees the route as originating from multiple places. As an end user
connects to the anycast IP, each network device performs a hardware hash
of the layer 3 and layer 4 headers to determine which path to use.
Every packet in a flow from an end user has the same source and
every packet, ensuring all packets in a flow are sent to the same
destination.
In the following image, the client initiates two flows: the blue, dotted flow
and the red dashed flow. Each flow has the same source IP address (the
client’s IP address), destination IP address (172.16.255.66) and same
destination port (depending on the service; for example, DNS is port 53).
Each flow has a unique source port generated by the client.
2270 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
In this example, each flow hashes to different servers based on this source
port, which you can see when you run ip route show to the destination IP
address:
On a Cumulus Linux switch, you can see the hardware hash with the cl-
https://docs.cumulusnetworks.com 2271
Cumulus Linux v4.2 User Documentation Network Solutions
destined to the anycast IP address. Each session has a different source port.
Using the cl-ecmpcalc command, you can see that the sessions were
swp2
swp3
that the network does not maintain state for flows. Every packet is handled
individually through the routing table, saving memory and resources that
would be required to track individual flows, similar to the functionality of a
load balancing appliance.
2272 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
For stateless applications that rely on UDP, like DNS, this does not present a
problem. However, for stateful applications that rely on TCP, like HTTP, this
breaks any existing traffic flows, such as a file download. If the TCP three-
way handshake was established on server03, after the failure, server04
would have no connection built and would send a TCP reset message back
This is not to say that it is not possible to use TCP-based applications for
anycast. However, TCP applications in an anycast environment should have
short-lived flows (measured in seconds or less) to reduce the impact of
network changes or failures.
Resilient Hashing
https://docs.cumulusnetworks.com 2273
Cumulus Linux v4.2 User Documentation Network Solutions
hash result of unrelated flows. However, resilient hashing does not prevent
rehashing when new next hops are added.
path gets used for a given flow. The simplified version of that hash is the
combination of protocol, source IP address, destination IP address, source
layer 4 port and destination layer 4 port. The full hashing function includes
not only these fields but also the list of possible layer 3 next hop addresses.
The hash result is passed through a modulo of the number of next hop
online, the number of possible next hop IPs grows to four. This changes the
modulo value that is part of the hashing function, which may result in traffic
being sent to a different server, even if previously unaffected by the
change.
As you can see below, leaf03 is in a failed state. The blue dotted flow uses
leaf02 to reach server02.
2274 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Just as the addition of a device can impact unrelated traffic, the removal of
https://docs.cumulusnetworks.com 2275
Cumulus Linux v4.2 User Documentation Network Solutions
a device can also impact unrelated traffic, since again, the modulo of the
hash function is changed. You can see this below, where the blue dotted
flow goes through leaf01 and the red dashed line goes through leaf04.
Now, leaf02 has failed. As a result, the modulo on spine02 has changed
from four possible next hops to only three next hops. In this example, the
2276 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
To help solve this issue, resilient hashing can prevent traffic flows from
shifting on unrelated failure scenarios. With resilient hashing enabled, the
failure of leaf02 does not impact both existing flows, since they do not
currently flow through leaf02:
https://docs.cumulusnetworks.com 2277
Cumulus Linux v4.2 User Documentation Network Solutions
You can read more information on resilient hashing in the ECMP chapter.
2278 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
FTP data transfers require two connections: one for control and one for the
file transfer. These two connections are independent, with their own TCP
ports. Consider the scenario where an FTP server was deployed in an
anycast architecture. When the secondary data connection is initiated, the
traffic is destined initially to the same FTP server IP address, but the
network hashes this traffic as a new, unique flow because the ports are
different. This may result in the new session ending up on a new server. The
new server would only accept that data connection if the FTP server
application was capable of robust information sharing, as it has no history
network hash. Contrast this with inbound sessions, where the network hash
is the same for all packets in a flow, so the inbound traffic will hash to the
same anycast server.
https://docs.cumulusnetworks.com 2279
Cumulus Linux v4.2 User Documentation Network Solutions
TCP applications that have longer-lived flows should not be used as anycast
services. For example:
It should be noted that anycast TCP is possible and has been implemented
by a number of organizations, one notable example being LinkedIn.
Conclusion
2280 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
https://docs.cumulusnetworks.com 2281
Cumulus Linux v4.2 User Documentation Network Solutions
NOTE
RoCE helps you obtain a converged network, where all services run over
the Ethernet infrastructure, including Infiniband apps.
There are two versions of RoCE, which run at separate layers of the stack:
• RoCEv1, which runs at the link layer and cannot be run over a routed
network. Therefore, it requires the priority flow control (PFC) to be
enabled.
• RoCEv2, which runs over layer 3. Because it is a routed solution, consider
using explicit congestion notification (ECN) with RoCEv2 as ECN bits are
communicated end-to-end across a routed network.
2282 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
RoCEv1 uses the Infiniband (IB) Protocol over converged Ethernet. The IB
global route header rides directly on top of the Ethernet header. The
lossless Ethernet layer handles congestion hop by hop.
To learn the Cumulus Linux settings you need to configure support for
RoCEv1; see the example configuration in the PFC section of the Buffer and
Queue Management chapter.
On switches with Spectrum ASICs, you can use NCLU to configure RoCE
with PFC:
control buffer pool for lossless traffic and change the buffer limits in the
/usr/lib/python2.7/dist-packages/cumulus/__chip_config/mlx/
datapath.conf file.
https://docs.cumulusnetworks.com 2283
Cumulus Linux v4.2 User Documentation Network Solutions
...
ecn_red.port_group_list = [ROCE_ECN]
pfc.ROCE_PFC.port_set = swp1
pfc.ROCE_PFC.cos_list = [3]
pfc.ROCE_PFC.xoff_size = 18000
pfc.ROCE_PFC.xon_delta = 18000
pfc.ROCE_PFC.tx_enable = true
pfc.ROCE_PFC.rx_enable = true
pfc.ROCE_PFC.port_buffer_bytes = 70000
ecn_red.ROCE_ECN.port_set = swp1
ecn_red.ROCE_ECN.cos_list = [3]
ecn_red.ROCE_ECN.min_threshold_bytes = 150000
ecn_red.ROCE_ECN.max_threshold_bytes = 1500000
ecn_red.ROCE_ECN.ecn_enable = true
ecn_red.ROCE_ECN.red_enable = true
ecn_red.ROCE_ECN.probability = 100
...
NOTE
2284 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
RoCEv2 requires flow control for lossless Ethernet. RoCEv2 uses the
Infiniband (IB) Transport Protocol over UDP. The IB transport protocol
includes an end-to-end reliable delivery mechanism and has its own sender
notification mechanism.
To learn the Cumulus Linux settings, you need to configure support for
RoCEv2; see the example configuration in the ECN section of the Buffer
On switches with Spectrum ASICs, you can use NCLU to configure RoCE
with ECN:
https://docs.cumulusnetworks.com 2285
Cumulus Linux v4.2 User Documentation Network Solutions
datapath/traffic.conf file:
...
ecn_red.port_group_list = [ROCE_ECN]
ecn_red.ROCE_ECN.port_set = swp1
ecn_red.ROCE_ECN.cos_list = [3]
ecn_red.ROCE_ECN.min_threshold_bytes = 150000
ecn_red.ROCE_ECN.max_threshold_bytes = 1500000
ecn_red.ROCE_ECN.ecn_enable = true
ecn_red.ROCE_ECN.red_enable = true
ecn_red.ROCE_ECN.probability = 100
...
python2.7/dist-packages/cumulus/__chip_config/mlx/datapath.conf file.
It also enables drop behaviors and Random Early Detection (RED). RED
identifies packets that have been added to a long egress queue. The ECN
2286 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
action marks the packet and forwards it, requiring the packet to be ECT-
capable. However, the drop action drops the packet, requiring the packet
to not be ECT-capable.
Related Information
https://docs.cumulusnetworks.com 2287
Cumulus Linux v4.2 User Documentation Network Solutions
Cumulus Hyperconverged
Solution with Nutanix
The Cumulus Hyperconverged Solution (HCS) in Cumulus Linux supports
automated integration with the Nutanix Prism Management solution and
the Nutanix AHV hypervisor. Cumulus HCS automatically configures ports
• Nu
Nutanix
tanix LLDP S
Swwit
itch
ch A
Agent
gent. When enabled, the agent listens for directly
connected Nutanix servers via LLDP and enables MLAG bonding on the
relevant ports.
• Nu
Nutanix
tanix W
Webhook
ebhook VLA
VLANNP
Prrovi
vissione
ionerr. Cumulus Linux switches register
2288 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
with the Nutanix CVM and wait to receive Nutanix webhooks. When a
new VM is deployed on a server in the cluster, the CVM sends a message
to the Cumulus Linux switch with the physical server name and relevant
Cumulus HCS periodically polls Nutanix Prism for information about VMs
in the cluster. When a new VM is discovered, the service automatically
identifies the physical Nutanix server hosting the VM and discovers any
VLANs required for the VM. The service then automatically adds these
VLANs to the default VLAN-aware bridge, the MLAG peer link and the
automatically created bond to the Nutanix node. When a VM is powered
off, removed or moved, and the associated VLAN has no other VMs, the
VLAN is automatically removed from the bridge, peer link and dynamic
bond.
Requirements
https://docs.cumulusnetworks.com 2289
Cumulus Linux v4.2 User Documentation Network Solutions
• MLAG peer link is on the first two uplink ports: swp49 and swp50
• Connections to other infrastructure are on ports swp51 and above
• The eth0 management interface is configured for management VRF via
DHCP
• For automatic configuration, the gateway IP addresses for all VMs,
including the CVM, do not exist on the Cumulus Linux switches
focuses on the leaf01 and leaf02 switches. Configurations for spine01 and
spine02 are not included.
2290 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
The method you choose for configuring Cumulus HCS and Nutanix depends
upon whether or not you already have Cumulus Linux installed on your
switches, which are named leaf01 and leaf02 in the example configuration
above.
The following steps describe how to use zero touch provisioning to install
Cumulus Linux and fully configure Cumulus HCS and Nutanix on your
network.
To do this, you need a Cumulus on a Stick disk image and a USB stick with
1. Insert the USB stick into your computer and copy the Cumulus on a Stick
files onto it.
2. On the USB stick, open the ztp_config.txt file in a text editor and set
your Nutanix username and password and the server IP address, then
save and close the file.
https://docs.cumulusnetworks.com 2291
Cumulus Linux v4.2 User Documentation Network Solutions
# The username for the Nutanix API. Likely the username you
NUTANIX_USERNAME=admin
NUTANIX_PASSWORD=nutanix/4u
IP. (Required)
NUTANIX_IP=10.1.1.123
SWITCH_CVM_IP=10.1.1.254/24
#SWITCH_MANAGEMENT_IP=10.0.0.11/24
#SWITCH_DEFAULT_GATEWAY=10.1.1.1
(Optional)
UPLINKS=swp51,swp52
2292 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
here. (Optional)
#PEERLINK=swp49,swp50
3. Place the USB stick into the Cumulus Linux switch (leaf01) and power on
the switch. Cumulus Linux is automatically installed, including the license
green.
4. When the installation completes, remove the USB stick and repeat this
1. Configure MLAG on both the leaf01 and leaf02 nodes. The sys-mac is a
MAC address from the reserved MAC address space and must be the
same on both MLAG peers. If you are deploying more than one pair of
switches with MLAG, the sys-mac must be unique for each pair of MLAG-
configured switches.
https://docs.cumulusnetworks.com 2293
Cumulus Linux v4.2 User Documentation Network Solutions
•
leaf01 leaf02
2. Configure the default layer 2 bridge. Add a unique IP address to each leaf
•
leaf01 leaf02
NOTE
VLAN ID. If you do not know the value for the native VLAN ID,
2294 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
use 1.
hyperconverged
USERNAME=admin
PASSWORD=nutanixpassword
SERVER=10.1.1.11
#HOOK_SERVER=10.0.0.0
#HOOK_PORT=9440
https://docs.cumulusnetworks.com 2295
Cumulus Linux v4.2 User Documentation Network Solutions
#SOCKET_TIMEOUT=10.0.0.0
VXLAN_CONFIG=False
LOGLEVEL=verbose
#PERIODIC_SYNC_TIMEOUT=60
NOTE
2296 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Hyperconverged Daemon
hyperconverged.service; enabled)
CGroup: /system.slice/cumulus-hyperconverged.service
hyperconverged
Hyperconverged Daemon
https://docs.cumulusnetworks.com 2297
Cumulus Linux v4.2 User Documentation Network Solutions
hyperconverged.service; enabled)
CGroup: /system.slice/cumulus-hyperconverged.service
hyperconverged
TIP
If the service fails to start, you may find more information in the
service’s log file. View the log with sudo journalctl -u cumulus-
hyperconverged.
2298 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
• HOOK_PORT: the port on which the Nutanix CVM is running. The default
is 9440.
• SOCKET_TIMEOUT: the amount of time to wait for a timeout when
attempting to communicate with the Nutanix API. The default is 10
seconds.
• VXLAN_CONFIG: when set to TRUE, Cumulus HCS automatically
provisions VXLAN VNIs as well as VLANs.
• LOGLEVEL: describes the logging level. Verbose and Debug are
https://docs.cumulusnetworks.com 2299
Cumulus Linux v4.2 User Documentation Network Solutions
Configure Uplinks
How you configure uplinks depends upon whether you configured Cumulus
HCS with ZTP or manually.
If you used ZTP, you can edit the ZTP settings file to define the uplink ports
and the VLANs assigned to those uplinks.
If you manually configured the service, you need to enable the uplinks and
define the associated VLANs, as shown below. You need to configure both
1-2999,4000-4094
1-2999,4000-4094
2300 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
TIP
VLAN ID as needed.
You can add one or more local default gateways on both switches to
provide a redundant solution, as shown below. It does not matter whether
you configured Cumulus HCS with ZTP or manually. ZTP does not add any
gateway configuration.
https://docs.cumulusnetworks.com 2301
Cumulus Linux v4.2 User Documentation Network Solutions
will continue to respond, leaving the hosts with the impression that nothing
has changed.
•
Configure leaf01 Configure leaf02
00:00:5e:00:01:01 10.1.1.1/24
The first configuration line defines the IP address assigned to each switch,
which is required and must be unique. On leaf01, this IP address is 10.1.1.11/
The second line defines the virtual IP address that is used as the default
gateway address for any hosts in this VLAN. On both leaf01 and leaf02 this
this MAC address must be unique and only be assigned to a single switch
pair in your network.
2302 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Out-of-band Solutions
Cumulus RMP
management for web-scale networks. With Cumulus RMP, you can directly
manage and support Nutanix systems in the rack without relying on the
rest of the network.
https://docs.cumulusnetworks.com 2303
Cumulus Linux v4.2 User Documentation Network Solutions
After you install the software, you can use the following command to
configure all ports for a single, untagged management VLAN, including any
uplinks.
NOTE
2304 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
Use the net show interface bonds command to verify that bonds are being
name.
----------------------------------
swp50(UP)
https://docs.cumulusnetworks.com 2305
Cumulus Linux v4.2 User Documentation Network Solutions
If bonds are not being created, then LLDP messages may not be getting
through. You can check for this possibility using the net show lldp
command:
Cumulus HCS replies on the LLDP SysDescr field to identify a Nutanix host.
Run the net show lldp <swp> command to view the complete LLDP details
2306 https://docs.cumulusnetworks.com
Network Solutions Cumulus Linux v4.2 User Documentation
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Chassis:
SysName: NTNX-e08c61ec-A
MgmtIP: 10.1.1.10
MgmtIP: fe80::2ec2:60ff:fe50:f68a
Capability: Bridge, on
Port:
PortDescr: ens3
TTL: 120
https://docs.cumulusnetworks.com 2307
Cumulus Linux v4.2 User Documentation Network Solutions
-------------------------------------------------------------------------------
Considerations
Reloading Cumulus HCS causes the bond interfaces to rebuild. For the
stability of the Nutanix cluster, do not reload the service on both leaf
switches simultaneously.
2308 https://docs.cumulusnetworks.com