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.
The switchd
configuration is stored in
/etc/cumulus/switchd.conf
.
The switchd File System¶
switchd
also exports a file system, mounted on /cumulus/switchd
,
that presents all the switchd
configuration options as a series of
files arranged in a tree structure. You can see the contents by parsing
the switchd
tree; run tree /cumulus/switchd
. The output below
is for a switch with one switch port configured:
cumulus@switch:~$ sudo tree /cumulus/switchd/
/cumulus/switchd/
|-- config
| |-- acl
| | |-- non_atomic_update_mode
| | `-- optimize_hw
| |-- arp
| | `-- next_hops
| |-- buf_util
| | |-- measure_interval
| | `-- poll_interval
| |-- coalesce
| | |-- reducer
| | `-- timeout
| |-- disable_internal_restart
| |-- ignore_non_swps
| |-- interface
| | |-- swp1
| | | `-- storm_control
| | | |-- broadcast
| | | |-- multicast
| | | `-- unknown_unicast
| |-- logging
| |-- route
| | |-- host_max_percent
| | `-- table
| `-- stats
| `-- poll_interval
|-- ctrl
| |-- acl
| |-- hal
| | `-- resync
| |-- logger
| |-- netlink
| | `-- resync
| |-- resync
| `-- sample
| `-- ulog_channel
|-- run
| `-- route_info
| |-- ecmp_nh
| | |-- count
| | |-- max
| | `-- max_per_route
| |-- host
| | |-- count
| | |-- count_v4
| | |-- count_v6
| | `-- max
| |-- mac
| | |-- count
| | `-- max
| `-- route
| |-- count_0
| |-- count_1
| |-- count_total
| |-- count_v4
| |-- count_v6
| |-- mask_limit
| |-- max_0
| |-- max_1
| `-- max_total
`-- version
Configure switchd Parameters¶
You can use cl-cfg
to configure many switchd
parameters at
runtime (like ACLs, interfaces, and route table utilization), which
minimizes disruption to your running switch. However, some options are
read only and cannot be configured at runtime.
For example, to see data related to routes, run:
cumulus@switch:~$ sudo cl-cfg -a switchd | grep route
route.table = 254
route.host_max_percent = 50
cumulus@cumulus:~$
To modify the configuration, run cl-cfg -w
. For example, to set the
buffer utilization measurement interval to 1 minute, run:
cumulus@switch:~$ sudo cl-cfg -w switchd buf_util.measure_interval=1
To verify that the value changed, use grep
:
cumulus@switch:~$ cl-cfg -a switchd | grep buf
buf_util.poll_interval = 0
buf_util.measure_interval = 1
Note
You can get some of this information by running cl-resource-query
; though you cannot update the switchd
configuration with it.
Restart switchd¶
Whenever you modify any switchd
hardware configuration file
(typically changing any *.conf
file that requires making a change to
the switching hardware, like /etc/cumulus/datapath/traffic.conf
),
you must restart switchd
for the change to take effect:
cumulus@switch:~$ sudo systemctl restart switchd.service
Note
You do not have to restart the switchd
service when you update a network interface configuration (that is, edit /etc/network/interfaces
).
Warning
Restarting switchd
causes all network ports to reset in addition to resetting the switch hardware configuration.