配置 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)可能会影响系统性能。

  • 用于调试数据平面编程相关代码的日志级别。您可以指定 debuginfonoticewarningerror。默认设置为 info。NVIDIA 建议您不要在生产环境中将日志级别设置为 debug。
  • 封装的 DSCP 操作和值。您可以将 DSCP 操作设置为 copy(从数据包的 IP 标头复制值)、set(指定特定值)或 derive(从交换机优先级获取值)。默认操作为 derive。仅当操作为 set 时才指定值。
  • VXLAN 外部标头中解封装的 DSCP 操作。您可以指定 copy(从数据包的 IP 标头复制值)、preserve(保留内部 DSCP 值)或 derive(从交换机优先级获取值)。默认操作为 derive
  • 具有相同 IP 地址和掩码的路由和邻居之间的首选项。您可以指定 routeneighborroute-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_intervalNAT 老化轮询间隔(分钟)。最小值为 1 分钟,最大值为 24 小时。仅当 nat.dynamic_enable 设置为 TRUE 时,才能配置此设置。
默认设置为 5。
重启
nat.table_sizeNAT 表大小限制(条目数)。仅当 nat.dynamic_enable 设置为 TRUE 时,才能配置此设置。
默认设置为 1024。
重启
nat.config_table_sizeNAT 配置表大小限制(条目数)。仅当 nat.dynamic_enable 设置为 TRUE 时,才能配置此设置。
默认设置为 64。
重启
logging以 BACKEND=LEVEL 格式配置日志记录。用空格分隔多个 BACKEND=LEVEL 对。BACKEND 值可以是 stderrfile:filenamesyslogprogram:executable。LEVEL 值可以是 CRITERRWARNINFODEBUG
默认值为 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_sizenetlink 套接字缓冲区大小(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 服务。