配置 switchd
switchd
服务使交换机能够与 Cumulus Linux 以及 Cumulus Linux 上运行的所有应用程序通信。
配置 switchd 设置
您可以控制与 switchd
进程关联的某些选项。例如,您可以设置轮询间隔、优化 ACL 硬件资源以获得更好的利用率、配置日志消息级别、设置内部 VLAN 范围以及配置 VXLAN 封装和解封装。
要配置 switchd
选项,您可以运行 NVUE 命令或手动编辑 /etc/cumulus/switchd.conf
文件。
NVUE 当前仅支持 /etc/cumulus/switchd.conf
文件中提供的 switchd
配置的子集。
您可以运行 NVUE 命令来设置以下 switchd
选项
- 物理接口和逻辑接口的统计信息轮询间隔。
- 对于物理接口,您可以指定介于 1 到 10 之间的值。默认设置为 2 秒
- 对于逻辑接口,您可以指定介于 1 到 30 之间的值。默认设置为 5 秒。
较低的设置(例如 1)可能会影响系统性能。
- 用于调试数据平面编程相关代码的日志级别。您可以指定
debug
、info
、notice
、warning
或error
。默认设置为info
。NVIDIA 建议您不要在生产环境中将日志级别设置为 debug。 - 封装的 DSCP 操作和值。您可以将 DSCP 操作设置为
copy
(从数据包的 IP 标头复制值)、set
(指定特定值)或derive
(从交换机优先级获取值)。默认操作为derive
。仅当操作为set
时才指定值。 - VXLAN 外部标头中解封装的 DSCP 操作。您可以指定
copy
(从数据包的 IP 标头复制值)、preserve
(保留内部 DSCP 值)或derive
(从交换机优先级获取值)。默认操作为derive
。 - 具有相同 IP 地址和掩码的路由和邻居之间的首选项。您可以指定
route
、neighbor
或route-and-neighbor
。默认设置为route
。 - ACL 模式(原子或非原子)。默认设置为
atomic
。 - 保留的 VLAN 范围。默认设置为 3725-3999。
某些 switchd
设置需要 switchd
重启或重新加载。在应用设置之前,NVUE 会指示是否需要 switchd
重启或重新加载,并提示您进行确认。
- 当
switchd
服务重启时,除了重置交换机硬件配置外,所有网络端口也会重置。 - 当
switchd
服务重新加载时,网络服务不会中断。
以下命令示例将逻辑接口和物理接口的统计信息轮询间隔都设置为 6 秒
cumulus@switch:~$ nv set system counter polling-interval logical-interface 6
cumulus@switch:~$ nv set system counter polling-interval physical-interface 6
cumulus@switch:~$ nv config apply
以下命令示例将用于调试数据平面编程相关代码的日志级别设置为 warning
cumulus@switch:~$ nv set system forwarding programming log-level warning
cumulus@switch:~$ nv config apply
以下命令示例将 VXLAN 外部标头中封装的 DSCP 操作设置为 set
,并将值设置为 af12
cumulus@switch:~$ nv set nve vxlan encapsulation dscp action set
cumulus@switch:~$ nv set nve vxlan encapsulation dscp value af12
cumulus@switch:~$ nv config apply
以下命令示例将 VXLAN 外部标头中解封装的 DSCP 操作设置为 preserve
cumulus@switch:~$ nv set nve vxlan decapsulation dscp action preserve
cumulus@switch:~$ nv config apply
以下命令示例将路由或邻居首选项设置为路由和邻居两者
cumulus@switch:~$ nv set system forwarding host-route-preference route-and-neighbour
cumulus@switch:~$ nv config apply
以下命令示例将 ACL 模式设置为非原子
cumulus@switch:~$ nv set system acl mode non-atomic
cumulus@switch:~$ nv config apply
- 在 Spectrum-2 及更高版本上,在您运行并应用
nv set system acl mode
命令后,NVUE 会重新加载switchd
。 - 在 Spectrum 1 交换机上,在您运行并应用
nv set system acl mode
命令后,NVUE 会重启switchd
。
以下命令示例将保留的 VLAN 范围设置为 4064 到 4094 之间
cumulus@switch:~$ nv set system global reserved vlan internal range 4064-4094
cumulus@switch:~$ nv config apply
要配置 switchd
参数,请编辑 /etc/cumulus/switchd.conf
文件。更改设置并取消注释行(如果需要)。switchd.conf
文件包含注释,其中包含每个设置的描述。
以下示例显示了 /etc/cumulus/switchd.conf
文件的前几行。
cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
#
# /etc/cumulus/switchd.conf - switchd configuration file
#
# Statistic poll interval (in msec)
#stats.poll_interval = 2000
# Buffer utilization poll interval (in msec), 0 means disable
#buf_util.poll_interval = 0
# Buffer utilization measurement interval (in mins)
#buf_util.measure_interval = 0
# Optimize ACL HW resources for better utilization
#acl.optimize_hw = FALSE
# Enable Flow based mirroring.
#acl.flow_based_mirroring = TRUE
...
下表描述了 /etc/cumulus/switchd.conf
文件参数,并指示当您更新设置时,更改生效是否需要使用 sudo systemctl restart switchd.service
命令重启 switchd
或使用 sudo systemctl reload switchd.service
命令重新加载 switchd
。
重启 switchd
服务会导致所有网络端口重置,此外还会重置交换机硬件配置。
参数 | 描述 | switchd 重新加载或重启 |
---|---|---|
stats.poll_interval | 统计信息轮询间隔(毫秒)。 默认设置为 2000。 | 重启 |
buf_util.poll_interval | 缓冲区利用率轮询间隔(毫秒)。0 禁用缓冲区利用率轮询。 默认设置为 0。 | 重启 |
buf_util.measure_interval | 缓冲区利用率测量间隔(分钟)。 默认设置为 0。 | 重启 |
acl.optimize_hw | 优化 ACL 硬件资源以获得更好的利用率。 默认设置为 FALSE。 | 重启 |
acl.flow_based_mirroring | 启用基于流的镜像。 默认设置为 TRUE。 | 重启 |
acl.non_atomic_update_mode | 启用非原子 ACL 更新 默认设置为 FALSE。 | Spectrum-2 及更高版本:重新加载 Spectrum A1:重启 |
arp.next_hops | 为下一跳发送 ARP。 默认设置为 TRUE。 | 重启 |
route.table | 内核路由表 ID。范围介于 1 到 2^31 之间。 默认为 254。 | 重启 |
route.host_max_percent | 硬件中最大邻居表占用率(硬件表大小的百分比)。 默认设置为 100。 | 重启 |
coalescing.reducer | 用于累积更改以减少 CPU 负载的合并缩减因子。 默认设置为 1。 | 重启 |
coalescing.timeout | 合并超时时间限制(秒)。 默认设置为 10。 | 重启 |
ignore_non_swps | 忽略指向非 swp 接口的路由。 默认设置为 TRUE。 | 重启 |
disable_internal_parity_restart | 在奇偶校验错误后禁用重启。 默认设置为 TRUE。 | 重启 |
disable_internal_hw_err_restart | 在发生不可恢复的硬件错误后禁用重启。 默认设置为 FALSE。 | 重启 |
nat.static_enable | 启用静态 NAT。 默认设置为 TRUE。 | 重启 |
nat.dynamic_enable | 启用动态 NAT。 默认设置为 TRUE。 | 重启 |
nat.age_poll_interval | NAT 老化轮询间隔(分钟)。最小值为 1 分钟,最大值为 24 小时。仅当 nat.dynamic_enable 设置为 TRUE 时,才能配置此设置。默认设置为 5。 | 重启 |
nat.table_size | NAT 表大小限制(条目数)。仅当 nat.dynamic_enable 设置为 TRUE 时,才能配置此设置。默认设置为 1024。 | 重启 |
nat.config_table_size | NAT 配置表大小限制(条目数)。仅当 nat.dynamic_enable 设置为 TRUE 时,才能配置此设置。默认设置为 64。 | 重启 |
logging | 以 BACKEND=LEVEL 格式配置日志记录。用空格分隔多个 BACKEND=LEVEL 对。BACKEND 值可以是 stderr 、file:filename 、syslog 、program:executable 。LEVEL 值可以是 CRIT 、ERR 、WARN 、INFO 、DEBUG 。默认值为 syslog=INFO | 重启 |
interface.<interface>.storm_control.broadcast | 启用广播风暴控制并设置每秒数据包数 (pps)。 默认设置为 400。 | 重新加载 |
interface.<interface>.storm_control.multicast | 启用组播风暴控制并设置每秒数据包数 (pps)。 默认设置为 3000。 | 重新加载 |
interface.<interface>.storm_control.unknown_unicast | 启用单播风暴控制并设置每秒数据包数 (pps)。 默认设置为 2000。 | 重新加载 |
stats.vlan.aggregate | 启用 VLAN 的硬件统计信息并指定所需的统计信息类型。您可以指定 NONE、BRIEF 或 DETAIL。 默认设置为 BRIEF。 | 重启 |
stats.vxlan.aggregate | 启用 VXLAN 的硬件统计信息并指定所需的统计信息类型。您可以指定 NONE、BRIEF 或 DETAIL。 默认设置为 DETAIL。 | 重启 |
stats.vxlan.member | 启用 VXLAN 成员的硬件统计信息并指定所需的统计信息类型。您可以指定 NONE、BRIEF 或 DETAIL。 默认设置为 BRIEF。 | 重启 |
stats.vlan.show_internal_vlans | 显示内部 VLAN。 默认设置为 FALSE。 | 重启 |
stats.vdev_hw_poll_interval | 虚拟设备硬件统计信息的轮询间隔(秒)。 默认设置为 5。 | 重启 |
resv_vlan_range | 内部 VLAN 范围。 默认设置为 3725-3999。 | 重启 |
netlink.buf_size | netlink 套接字缓冲区大小(MB)。 默认设置为 136314880。 | 重启 |
route.delete_dead_routes | 当运营商关闭时,删除接口上的路由。 默认设置为 TRUE。 | 重启 |
vxlan.default_ttl | 要在 VXLAN 标头中使用的默认 TTL。 默认设置为 64。 | 重启 |
bridge.broadcast_frame_to_cpu | 即使 SVI 未启用,也允许桥接广播帧到 CPU。 默认设置为 FALSE。 | 重启 |
bridge.unreg_mcast_init | 初始化剪枝模块以进行 IGMP 侦听未注册第 2 层组播泛洪控制。 默认设置为 FALSE。 | 重启 |
bridge.unreg_v4_mcast_prune | 启用未注册第 2 层组播剪枝到 mrouter 端口 (IPv4)。 默认设置为 FALSE(泛洪未注册第 2 层组播流量)。 | 重启 |
bridge.unreg_v6_mcast_prune | 启用未注册第 2 层组播剪枝到 mrouter 端口 (IPv6)。 默认设置为 FALSE(泛洪未注册第 2 层组播流量)。 | 重启 |
netlink libnl logger | 默认设置为 [0-5]。 | 重启 |
netlink.nl_logger | 默认设置为 0。 | 重启 |
vxlan.def_encap_dscp_action | 设置封装期间的默认 VXLAN 路由器 DSCP 操作。如果内部数据包是 IP,您可以指定 copy ;指定 set 以设置特定值;或指定 derive 以从交换机优先级派生值。默认设置为 derive 。 | 重新加载 |
vxlan.def_encap_dscp_value | 如果操作为 set ,则设置默认 VXLAN 封装 DSCP 值。 | 重新加载 |
vxlan.def_decap_dscp_action | 设置解封装期间的默认 VXLAN 路由器 DSCP 操作。如果内部数据包是 IP,您可以指定 copy ;指定 preserve 以保留内部 DSCP 值;或指定 derive 以从交换机优先级派生值。默认设置为 derive 。 | 重新加载 |
ipmulticast.unknown_ipmc_to_cpu | 允许将未知 IPMC 发送到 CPU。 默认设置为 FALSE。 | 重启 |
vrf_route_leak_enable_dynamic | 启用动态 VRF 路由泄漏。 默认设置为 FALSE。 | 重启 |
sync_queue_depth_val | 事件队列深度。 默认设置为 50000。 | 重启 |
route.route_preferred_over_neigh | 设置具有相同 IP 地址和掩码的路由和邻居之间的首选项。您可以指定 TRUE 以优先选择路由而不是邻居,指定 FALSE 以优先选择邻居而不是路由,或指定 BOTH 以安装路由和邻居两者。默认设置为 TRUE。 | 重新加载 |
evpn.multihoming.enable | 启用 EVPN 多宿主。 默认设置为 TRUE。 | 重启 |
evpn.multihoming.shared_l2_groups | 允许共享第 2 层下一跳组。 默认设置为 FALSE。 | 重启 |
evpn.multihoming.shared_l3_groups | 允许共享第 3 层下一跳组。 默认设置为 FALSE。 | 重启 |
evpn.multihoming.fast_local_protect | 启用出口链路保护的快速重路由。默认设置为 FALSE。 | 重启 |
evpn.multihoming.bum_sph_filter | 为 EVPN 多宿主设置水平分割过滤。您可以指定 TRUE 以仅过滤来自以太网段 (ES) 对等方的 BUM 流量,或指定 FALSE 以过滤来自 ES 对等方的所有流量。默认设置为 TRUE。 | 重启 |
link_flap_window | 链接必须在 link_flap_threshold 中设置的次数内抖动的持续时间(以秒为单位),之后 Cumulus Linux 会将链接设置为 protodown 并将 linkflap 指定为原因。默认设置为 10。值为 0 将禁用链路抖动保护。 | 重启 |
link_flap_threshold | 链接必须在链路抖动窗口内抖动的次数,之后 Cumulus Linux 会将链接设置为 protodown 并将 linkflap 指定为原因。默认设置为 5。值为 0 将禁用链路抖动保护。 | 重启 |
res_usage_warn_threshold | 设置转发资源(路由、主机、MAC 地址)必须超过的百分比,之后 Cumulus Linux 会生成警告。您可以设置介于 50 到 95 之间的值。 默认设置为 90。 | 重启 |
res_warn_msg_int | 资源警告消息之间的时间间隔(秒)。即使阈值在此间隔内多次降至低于或高于 res_usage_warn_threshold 中设置的值,警告消息也仅为每个资源类型生成一次(在指定间隔内)。您可以设置介于 60 到 3600 之间的值。默认设置为 300。 | 重启 |
显示 switchd 设置
您可以运行以下 NVUE 命令来显示当前的 switchd
配置设置。
命令 | 描述 |
---|---|
nv show system counter polling-interval | 显示物理和逻辑接口计数器的轮询间隔(秒)。 |
nv show system forwarding programming | 显示数据平面编程日志的日志级别。 |
nv show nve vxlan encapsulation dscp | 显示 VXLAN 封装中外部标头的 DSCP 操作和值(如果操作为 set )。 |
nv show nve vxlan decapsulation dscp | 显示 VXLAN 解封装中外部标头的 DSCP 操作。 |
nv show system acl | 显示 ACL 模式(原子或非原子)。 |
nv show system global reserved vlan internal | 显示保留的 VLAN 范围。 |
以下命令示例显示逻辑接口计数器的轮询间隔设置为 6 秒
cumulus@switch:~$ nv show system counter polling-interval
applied description
----------------- ------- -----------------------------------------------------
logical-interface 0:00:06 Config polling-interval for logical interface(in sec)
以下命令示例显示数据平面编程日志的日志级别设置为 warning
cumulus@switch:~$ nv show system forwarding programming
applied description
--------- ------- -------------------
log-level warning configure Log-level
以下命令示例显示 VXLAN 封装中外部标头的 DSCP 操作设置是 set
,值为 af12
。
cumulus@switch:~$ nv show nve vxlan encapsulation dscp
operational applied description
------ ----------- ------- --------------------------------------------------
action set set DSCP encapsulation action
value af12 af12 Configured DSCP value to put in outer Vxlan packet
以下命令示例显示 ACL 模式为 atomic
cumulus@switch:~$ nv show system acl
applied description
---- ------- -----------------------------------------
mode atomic configure Atomic or Non-Atomic ACL update
以下命令示例显示保留的 VLAN 范围介于 4064 和 4094 之间
cumulus@switch:~$ nv show system global reserved vlan internal
operational applied description
----- ----------- --------- -------------------
range 4064-4094 4064-4094 Reserved Vlan range
除了在手动更改某些 /etc/cumulus/switchd.conf
文件参数时需要重启 switchd
外,每当您修改 switchd
硬件配置文件(任何需要更改交换硬件的 *.conf
文件,例如 /etc/cumulus/datapath/traffic.conf
)时,也需要重启 switchd
。当您更新网络接口配置时(例如,当您编辑 /etc/network/interfaces
文件时),您不必重启 switchd
服务。