接口配置和管理

本节讨论如何配置交换机上的接口。

Cumulus Linux(包括 NVUE)使用 ifupdown2 来管理网络接口,这是 Debian 网络接口管理器 ifupdown 的新实现。

启动或关闭接口

接口状态可以是

  • 管理状态,您可以在其中配置接口为启动或关闭。管理状态反映了管理员或管理系统设置的预期配置。它指示接口是否应启用或禁用。
  • 操作状态,反映了接口的当前操作状态。操作状态反映了接口的实际当前状态,其中考虑了物理和逻辑条件。

载波状态是接口的较低层状态。对于交换机端口,载波状态表示是否在 ASIC 级别启用了交换机端口,并且电缆已成功连接。对于虚拟接口,载波状态涉及较低级别接口的操作状态。例如,对于 VLAN 接口,载波状态取决于底层网桥设备的操作状态。

操作状态始终取决于管理状态和载波状态;操作状态是管理状态、载波状态和其他链路状态的函数。

要配置接口并以管理方式启动它,请使用 nv set interface 命令

cumulus@switch:~$ nv set interface swp1
cumulus@switch:~$ nv config apply

启动接口后,您可以通过将链路状态更改为 down 以管理方式将其关闭

cumulus@switch:~$ nv set interface swp1 link state down
cumulus@switch:~$ nv config apply

要重新启动接口,请将链路状态更改回 up

cumulus@switch:~$ nv set interface swp1 link state up
cumulus@switch:~$ nv config apply

要从配置中完全删除接口,请使用 nv unset interface 命令

cumulus@switch:~$ nv unset interface swp1
cumulus@switch:~$ nv config apply

NVUE 仅应用当前配置更改,而不是处理整个 /etc/network/interfaces 文件。

要配置接口并以管理方式启动它,请编辑 /etc/network/interfaces 文件以添加接口节,然后运行 ifreload -a 命令

cumulus@switch:~$ sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
    address 10.10.10.1/32
auto mgmt
iface mgmt
    address 127.0.0.1/8
    address ::1/128
    vrf-table auto
auto eth0
iface eth0 inet dhcp
    ip-forward off
    ip6-forward off
    vrf mgmt
auto swp1
iface swp1
...

要在配置接口后以管理方式将其关闭,请将 link-down yes 添加到 /etc/network/interfaces 文件中的接口节,然后运行 ifreload -a

auto swp1
iface swp1
 link-down yes

如果在 /etc/network/interfaces 文件中配置了接口,则可以使用 ifdown swp1 命令以管理方式将其关闭,然后使用 ifup swp1 命令重新启动接口。这些更改在重新启动后不会持久存在。重新启动后,/etc/network/interfaces 中存在的配置生效。

  • 默认情况下,ifupdownifup 命令是静默的。使用详细选项 (-v) 在关闭或启动接口时显示执行的命令。
  • 对于大规模配置,您可以运行 ifreload -a --diff 命令以仅应用当前配置更改,而不是处理整个 /etc/network/interfaces 文件。

要从配置中完全删除接口,请从 /etc/network/interfaces 文件中删除接口节,然后运行 ifreload -a 命令。

有关接口管理状态和物理状态的其他信息,请参阅 此知识库文章

环回接口

Cumulus Linux 具有预配置的环回接口。当交换机启动时,名为 lo 的环回接口已启动,并分配了 IP 地址 127.0.0.1。

环回接口 lo 必须始终存在于交换机上,并且必须始终处于启动状态。

要为环回接口配置 IP 地址

cumulus@switch:~$ nv set interface lo ip address 10.10.10.1/32
cumulus@switch:~$ nv config apply

编辑 /etc/network/interfaces 文件以添加 address

auto lo
iface lo inet loopback
    address 10.10.10.1/32

您可以为环回接口配置多个 IP 地址。

子接口

在 Linux 上,接口是可以是物理接口(例如,swp1)或虚拟接口(例如,vlan100)的网络设备。 VLAN 子接口是接口上的 VLAN 设备,VLAN ID 使用点 (.) VLAN 表示法附加到父接口。例如,ID 为 100 的 VLAN 是 swp1 的子接口,则为 swp1.100。 VLAN 设备名称的点 VLAN 表示法是在 Linux 上指定 VLAN 设备的标准方法。

VLAN 子接口仅接收标记为该 VLAN 的流量;因此,swp1.100 仅接收在交换机端口 swp1 上具有 VLAN 100 标记的数据包。从 swp1.100 传输的任何数据包都具有 VLAN 100 标记。

以下示例在 VLAN 100 中的 swp1 上配置路由的子接口

cumulus@switch:~$ nv set interface swp1.100 ip address 192.168.100.1/24
cumulus@switch:~$ nv config apply

编辑 /etc/network/interfaces 文件,然后运行 ifreload -a

cumulus@switch:~$ sudo nano /etc/network/interfaces
...
auto swp1.100
iface swp1.100
 address 192.168.100.1/24
cumulus@switch:~$ sudo ifreload -a

  • 如果您正在使用 VLAN 子接口,请不要在网桥节下添加该 VLAN。
  • 您不能使用 NVUE 命令为 VLAN 1 创建路由的子接口。

接口 IP 地址

您可以为同一接口指定 IPv4 和 IPv6 地址。

对于 IPv6 地址

  • 您可以使用 ::0:0:0 表示法为接口创建或修改 IP 地址。例如,2620:149:43:c109:0:0:0:5 和 2001:DB8::1/126 都是有效的。
  • Cumulus Linux 为每个子网分配接口标识符中所有零的 IPv6 地址 (2001:DB8::/126);连接的主机不能使用此地址。
  • 您可以使用无状态地址自动配置 (SLAAC) 为接口自动配置 IPv6 地址。

以下示例命令为 swp1 配置三个 IP 地址;两个 IPv4 地址和一个 IPv6 地址。

cumulus@switch:~$ nv set interface swp1 ip address 10.0.0.1/30
cumulus@switch:~$ nv set interface swp1 ip address 10.0.0.2/30
cumulus@switch:~$ nv set interface swp1 ip address 2001:DB8::1/126
cumulus@switch:~$ nv config apply

要显示接口的 MAC 地址,请运行 nv show interface <interface> link 命令。

/etc/network/interfaces 文件中,列出 iface 部分下的所有 IP 地址。

auto swp1
iface swp1
    address 10.0.0.1/30
    address 10.0.0.2/30
    address 2001:DB8::1/126

地址方法和地址族不是强制性的;它们默认为 inet/inet6static。但是,在创建 DHCP 或环回接口时,必须指定 inet/inet6

auto lo
iface lo inet loopback

要对接口进行非持久性运行时更改,请使用 ip addr add

cumulus@switch:~$ sudo ip addr add 10.0.0.1/30 dev swp1
cumulus@switch:~$ sudo ip addr add 2001:DB8::1/126 dev swp1

要从接口中删除地址,请使用 ip addr del

cumulus@switch:~$ sudo ip addr del 10.0.0.1/30 dev swp1
cumulus@switch:~$ sudo ip addr del 2001:DB8::1/126 dev swp1

接口 MAC 地址

您可以使用 nv set interface <interface> link mac-address <mac-address> 命令为接口配置 MAC 地址。

以下命令将 swp1 配置为 MAC 地址 00:02:00:00:00:05

cumulus@switch:~$ nv set interface swp1 link mac-address 00:02:00:00:00:05
cumulus@switch:~$ nv config apply

以下命令将 vlan10 配置为 MAC 地址 00:00:5E:00:01:00

cumulus@switch:~$ nv set interface vlan10 link mac-address 00:00:5E:00:01:00
cumulus@switch:~$ nv config apply

要取消设置接口的 MAC 地址,请运行 nv unset interface <interface> link mac-address 命令。此命令将 MAC 地址重置为系统分配的地址。

cumulus@switch:~$ nv unset interface swp1 link mac-address
cumulus@switch:~$ nv config apply

/etc/network/interfaces 文件中,在接口节中添加接口的 MAC 地址,然后运行 ifreload -a

以下示例将 swp1 配置为 MAC 地址 00:02:00:00:00:05

cumulus@switch:~$ sudo nano /etc/network/interfaces
...
auto swp1
iface swp1
    address 10.0.0.2/24
    hwaddress 00:02:00:00:00:05
...
cumulus@switch:~$ sudo ifreload -a

以下示例将 vlan10 配置为 MAC 地址 00:00:5E:00:01:00

cumulus@switch:~$ sudo nano /etc/network/interfaces
...
auto vlan10
iface vlan10
    address 10.1.10.5/24
    hwaddress 00:00:5E:00:01:00
cumulus@switch:~$ sudo ifreload -a

要取消设置接口的 MAC 地址,请从接口节中删除 mac 地址,然后运行 sudo ifreload -a 命令。

接口描述

您可以向接口添加描述(别名)。

接口描述也出现在 SNMP OID IF-MIB::ifAlias

  • 接口描述最多可以有 256 个字符。
  • 避免使用撇号或非 ASCII 字符。Cumulus Linux 不解析这些字符。

以下示例命令为 swp1 创建描述 hypervisor_port_1

cumulus@switch:~$ nv set interface swp1 description hypervisor_port_1
cumulus@switch:~$ nv config apply

/etc/network/interfaces 文件中,使用 alias 关键字添加描述

cumulus@switch:~$ sudo nano /etc/network/interfaces

auto swp1
iface swp1
    alias swp1 hypervisor_port_1

接口命令

您可以为在 pre-up、up、post-up、pre-down、down 和 post-down 时运行的接口指定用户命令。

您可以在启动或关闭接口的顺序中添加任何有效命令;但是,请将范围限制为与特定接口关联的网络相关命令。例如,在 swp1 的 ifup 上安装 Debian 软件包没有意义,即使技术上是可能的。有关更多详细信息,请参阅 man interfaces

以下示例向接口添加命令以启用代理 ARP

NVUE 不提供配置此功能的命令。
cumulus@switch:~$ sudo nano /etc/network/interfaces
auto swp1
iface swp1
    address 12.0.0.1/30
    post-up echo 1 > /proc/sys/net/ipv4/conf/swp1/proxy_arp

如果您的 post-up 命令还启动、重新启动或重新加载任何 systemd 服务,则必须将 --no-block 选项与 systemctl 一起使用。否则,该服务甚至交换机本身可能会在启动或重新启动后挂起。例如,要在启动 VLAN 后重新启动 dhcrelay 服务,/etc network/interfaces 配置如下所示

auto bridge.100
iface bridge.100
    post-up systemctl --no-block restart dhcrelay.service

端口范围

要在命令中指定端口范围

使用逗号分隔不同的端口范围。

以下示例配置默认网桥 br_default,其端口范围为 swp1 到 swp46 以及 swp10 到 swp12

cumulus@switch:~$ nv set interface swp1-4,6,10-12 bridge domain br_default
cumulus@switch:~$ nv config apply

以下示例设置 swp1s 的所有子接口,范围为 1-4

cumulus@switch:~$ nv set interface swp1s1-4
cumulus@switch:~$ nv config apply

以下示例设置 swp 范围 1 到 64 内的所有接口及其子接口范围 1 到 3

cumulus@switch:~$ nv set interface swp1-64s1-3
cumulus@switch:~$ nv config apply

使用 glob 关键字指定网桥端口和绑定从属

auto br0
iface br0
    bridge-ports glob swp1-6.100

auto br1
iface br1
    bridge-ports glob swp7-9.100  swp11.100 glob swp15-18.100

快速链路启动

Cumulus Linux 支持 NVIDIA Spectrum1 交换机上接口的快速链路启动。快速链路启动使您能够启动具有需要链路快速启动的网卡的端口,例如某些 100G 光纤网络接口卡。

您必须使用相同的速度和 FEC 设置配置连接的两端。

cumulus@switch:~$ nv set interface swp1 link fast-linkup on
cumulus@switch:~$ nv config apply

编辑 /etc/cumulus/switchd.conf 文件,并为您要启用快速链路启动的接口添加 interface.<interface>.enable_media_depended_linkup_flow=TRUEinterface.<interface>.enable_port_short_tuning=TRUE 设置。以下示例在 swp1 上启用快速链路启动

cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
...
interface.swp1.enable_media_depended_linkup_flow=TRUE
interface.swp1.enable_short_tuning=TRUE

使用 sudo systemctl reload switchd.service 命令重新加载 switchd

默认情况下,Cumulus Linux 启用链路抖动检测。当在十秒内发生五次链路抖动时,链路抖动检测会触发,此时接口进入 protodown 状态,并显示 linkflap 作为原因。 switchd 服务还显示类似于以下的日志消息

2023-02-10T17:53:21.264621+00:00 cumulus switchd[10109]: sync_port.c:2263 ERR swp2 link flapped more than 3 times in the last 60 seconds, setting protodown

要显示具有 protodown 标志的接口,请运行 NVUE nv show interface 命令或 Linux ip link 命令。要检查特定接口,请运行 nv show interface <interface> link 命令。

cumulus@switch:~$ nv show interface
Interface  State  Speed  MTU    Type      Remote Host      Remote Port  Summary                                 
---------  -----  -----  -----  --------  ---------------  -----------  ----------------------------------------
eth0       up     1G     1500   eth       oob-mgmt-switch  swp10        IP Address:            192.168.200.11/24
                                                                        IP Address:  fe80::4638:39ff:fe22:17a/64
lo         up            65536  loopback                                IP Address:                  127.0.0.1/8
                                                                        IP Address:                      ::1/128
mgmt       up            65575  vrf                                     IP Address:                  127.0.0.1/8
                                                                        IP Address:                      ::1/128
swp1       up            1500   swp                                                                             
swp2       protodown     9178   swp                                                                             
swp3       up            1500   swp                                                                             
swp4       up            1500   swp                                                                             
...
cumulus@switch:~$ ip link
...
37: swp2: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 9178 qdisc pfifo_fast master bond131 state DOWN mode DEFAULT group default qlen 1000
  link/ether 1c:34:da:ba:bb:2a brd ff:ff:ff:ff:ff:ff protodown on protodown_reason <linkflap>
...
cumulus@switch:~$ nv show interface swp1 link
                       operational                     
---------------------  ------------------------------
admin-status           up
oper-status            up
protodown              disabled
auto-negotiate         on
duplex                 full
speed                  800G
mac-address            9c:05:91:9a:e0:b8
fec                    rs
mtu                    9216
fast-linkup            off
stats
  in-bytes             145.08 KB
  in-pkts              756
  in-drops             8
  in-errors            0
  out-bytes            145.42 KB
  out-pkts             757
  out-drops            0
  out-errors           0
  carrier-transitions  12
eyes                   65, 62, 70, 65, 80, 82, 81, 82
grade                  65, 62, 70, 65, 80, 82, 81, 82
troubleshooting-info   No issue was observed

清除接口 Protodown 状态和原因

要清除 protodown 状态和原因

cumulus@switch:~$ nv action clear interface swp1 link flap-protection violation 

几秒钟后,端口状态返回到 up。运行 nv show <interface> link state 命令以验证接口不再处于 protodown 状态,并且原因已清除

cumulus@switch:~$ nv show swp1 link state
operational    applied
  -----------    -------
  up             up

要清除所有接口的 protodown 状态,请运行 nv action clear system link flap-protection violation

ifdownifup 命令不会清除 protodown 状态。您必须使用 sudo ip link set <interface> protodown_reason linkflap offsudo ip link set <interface> protodown off 命令手动清除 protodown 状态和原因。

cumulus@switch:~$ sudo ip link set swp2 protodown_reason linkflap off
cumulus@switch:~$ sudo ip link set swp2 protodown off

几秒钟后,端口状态返回到 UP。要验证接口不再处于 protodown 状态并且原因已清除,请运行 ip link show <interface> 命令

cumulus@switch:~$ ip link show swp2
37: swp2: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 9178 qdisc pfifo_fast master bond131 state UP mode DEFAULT group default qlen 1000
  link/ether 1c:34:da:ba:bb:2a brd ff:ff:ff:ff:ff:ff

您可以更改以下链路抖动保护设置

  • 在链路抖动保护触发之前,链路必须抖动链路抖动阈值中设置的次数的持续时间(以秒为单位)。您可以指定介于 0(关闭)和 60 之间的值。默认设置为 10。
  • 在链路抖动保护触发之前,链路在链路抖动窗口内可以抖动的次数。您可以指定介于 0(关闭)和 30 之间的值。默认设置为 5。

以下示例将链路抖动持续时间配置为 30,将链路必须抖动的次数配置为 8。

cumulus@switch:~$ nv set system link flap-protection interval 30
cumulus@switch:~$ nv set system link flap-protection threshold 8 
cumulus@switch:~$ nv config apply

编辑 /etc/cumulus/switchd.conf 文件以更改 link_flap_windowlink_flap_threshold 设置。

cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
...
link_flap_window = 30
link_flap_threshold = 8
...

更改链路抖动设置后,您必须使用 sudo systemctl restart switchd.service 命令重新启动 switchd

要禁用链路抖动保护

cumulus@switch:~$ nv set interface swp1 link flap-protection enable off
cumulus@switch:~$ nv config apply

编辑 /etc/cumulus/switchd.conf 文件,并将 link_flap_windowlink_flap_threshold 参数设置为 0(零)。

cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
...
link_flap_window = 0
link_flap_threshold = 0

要显示链路抖动保护时间间隔和阈值设置

cumulus@switch:~$ nv show system link flap-protection
           applied
---------  -------
threshold  8      
interval   30 

要显示链路抖动保护是否在接口上启用,请运行 nv show interface <interface> link flap-protection 命令

cumulus@switch:~$ nv show interface swp1 link flap-protection
        applied
------  -------
enable  off

源接口文件代码片段

源接口文件有助于组织和管理 /etc/network/interfaces 文件。例如

cumulus@switch:~$ sudo cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

source /etc/network/interfaces.d/bond0

上面使用的源文件的内容是

cumulus@switch:~$ sudo cat /etc/network/interfaces.d/bond0
auto bond0
iface bond0
    address 14.0.0.9/30
    address 2001:ded:beef:2::1/64
    bond-slaves swp25 swp26

Mako 模板

ifupdown2 支持 Mako 样式模板。 Mako 模板引擎在解析之前处理 interfaces 文件。

使用模板声明 cookie-cutter 网桥,并在 interfaces 文件中声明地址

%for i in [1,12]:
auto swp${i}
iface swp${i}
    address 10.20.${i}.3/24

  • 在 Mako 语法中,使用方括号 ([1,12]) 指定单个数字列表。使用 range(1,12) 指定接口范围。
  • 要测试您的模板并确认其评估正确,请运行 mako-render /etc/network/interfaces

要在 Mako 模板中注释掉内容,请使用双哈希标记 (##)。例如

## % for i in range(1, 4):
## auto swp${i}
## iface swp${i}
## % endfor
##

有关更多 Mako 模板示例,请参阅此知识库文章

ifupdown 脚本

与传统的 ifupdown 系统不同,ifupdown2 不会自动运行安装在 /etc/network/*/ 中的脚本来配置网络接口。

要启用或禁用 ifupdown2 脚本,请编辑 /etc/network/ifupdown2/ifupdown2.conf 文件中的 addon_scripts_support 行。 1 启用脚本,2 禁用脚本。例如

cumulus@switch:~$ sudo nano /etc/network/ifupdown2/ifupdown2.conf
# Support executing of ifupdown style scripts.
# Note that by default python addon modules override scripts with the same name
addon_scripts_support=1

ifupdown2 在执行命令时设置以下环境变量

  • $IFACE 表示接口的物理名称;例如,br0 或 vxlan42。名称来自 /etc/network/interfaces 文件。
  • $LOGICAL 表示接口的逻辑名称(配置名称)。
  • $METHOD 表示地址方法;例如,loopback、DHCP、DHCP6、manual、static 等。
  • $ADDRFAM 表示与接口关联的地址族,以逗号分隔的列表形式表示;例如,"inet,inet6"

显示接口信息

要显示交换机上所有接口的管理状态和物理(操作)状态

cumulus@switch:~$ nv show interface
Interface  Admin Status  Oper Status  Speed  MTU    Type      Remote Host      Remote Port  Summary                                 
---------  ------------  -----------  -----  -----  --------  ---------------  -----------  ----------------------------------------
eth0       up            up           1G     1500   eth       oob-mgmt-switch  swp10        IP Address:            192.168.200.11/24
                                                                                            IP Address:  fe80::4638:39ff:fe22:17a/64
lo         up            unknown             65536  loopback                                IP Address:                  127.0.0.1/8
                                                                                            IP Address:                      ::1/128
mgmt       up            up                  65575  vrf                                     IP Address:                  127.0.0.1/8
                                                                                            IP Address:                      ::1/128
swp1       up            up           1G     9216   swp                                     IP Address: fe80::4ab0:2dff:fe50:fecf/64
swp2       down          down                1500   swp                                                                             
swp3       down          down                1500   swp                                                                             
swp4       down          down                1500   swp                                                                             
swp5       down          down                1500   swp                                                                             
swp6       down          down                1500   swp                                                                             
swp7       down          down                1500   swp
...

要显示接口的管理状态和物理(操作)状态,以及接口物理状态更改的日期和时间

cumulus@switch:~$ nv show interface swp1
                         operational        applied
-----------------------  -----------------  -------
...
  oper-status              up                                       
  admin-status             up                                       
  oper-status-last-change  2024/10/11 19:12:16.339

运行 ip link show dev <interface> 命令。

在以下示例中,swp1 在管理上处于启动状态,物理链路处于启动状态 (LOWER_UP)。

cumulus@switch:~$ ip link show dev swp1
3: swp1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 500
    link/ether 44:38:39:00:03:c1 brd ff:ff:ff:ff:ff:ff

要显示上次(日期和时间)接口的操作状态更改的时间以及每个接口的载波转换次数(从接口创建时起)

cumulus@switch:~$ nv show interface --view=carrier-stats
Interface       Oper Status  Up Count  Down Count  Total State Changes  Last State Change      
--------------  -----------  --------  ----------  -------------------  -----------------------
BLUE            up           0         0           0                    Never                  
RED             up           0         0           0                    Never                  
bond1           up           2         1           3                    2024/10/11 19:14:59.265
bond2           up           1         0           1                    2024/10/11 19:12:18.817
bond3           up           1         0           1                    2024/10/11 19:12:18.833
br_default      up           2         2           4                    2024/10/11 19:12:15.216
eth0            up           1         1           2                    2024/10/11 19:12:02.157
lo              unknown      0         0           0                    Never                  
mgmt            up           0         0           0                    Never                  
peerlink        up           1         0           1                    2024/10/11 19:12:06.913
peerlink.4094   up           1         0           1                    2024/10/11 19:12:06.915
swp1            up           2         2           4                    2024/10/11 19:12:16.339
swp2            up           2         2           4                    2024/10/11 19:12:16.345
swp3            up           2         2           4                    2024/10/11 19:12:16.351
swp4            down         1         1           2                    2024/10/11 19:11:28.936
swp5            down         1         1           2                    2024/10/11 19:11:28.936
swp6            down         1         1           2                    2024/10/11 19:11:28.936
swp7            down         1         1           2                    2024/10/11 19:11:28.936
...

在上面的示例中

  • 上次状态更改显示上次操作状态更改的时间戳。
  • 总状态更改显示载波状态的总转换次数。
  • 启动计数显示载波转换为启动状态的次数。
  • 关闭计数显示载波转换为关闭状态的次数。

要显示特定接口的操作状态更改的日期和时间 (oper-status-last-change) 以及载波转换次数 (carrier-transitionscarrier-up-countcarrier-down-count)

cumulus@switch:~$ nv show interface swp1 link
                         operational              applied  pending
-----------------------  -----------------------  -------  -------
admin-status             up                                       
oper-status              up                                       
oper-status-last-change  2024/10/11 19:12:16.339                  
protodown                disabled                                 
auto-negotiate           off                      on       on     
duplex                   full                     full     full   
speed                    1G                       auto     auto   
mac-address              48:b0:2d:fa:a1:14                        
fec                                               auto     auto   
mtu                      9000                     9216     9216   
fast-linkup              off                                      
[breakout]                                                        
state                    up                       up       up     
flap-protection                                                   
  enable                                          on       on     
stats                                                             
  in-bytes               1.96 MB                                  
  in-pkts                16399                                    
  in-drops               0                                        
  in-errors              0                                        
  out-bytes              2.37 MB                                  
  out-pkts               24669                                    
  out-drops              0                                        
  out-errors             0                                        
  carrier-transitions    4                                        
  carrier-up-count       2                                        
  carrier-down-count     2 

要仅显示特定接口的载波转换次数 (carrier-transitionscarrier-up-countcarrier-down-count),请运行 nv show interface <interface> link stats 命令。

要显示接口上分配的 IP 地址

cumulus@switch:~$ nv show interface lo ip address
-------------
10.0.1.12/32 
10.10.10.1/32
127.0.0.1/8  
::1/128
cumulus@switch:~$ ip addr show swp1
3: swp1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 500
    link/ether 44:38:39:00:03:c1 brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.1/30 scope global swp1
    inet 192.0.2.2/30 scope global swp1
    inet6 2001:DB8::1/126 scope global tentative
        valid_lft forever preferred_lft forever

要显示接口的描述(别名)

cumulus@switch$ nv show interface swp1
                         operational        applied
-----------------------  -----------------  -------
                          operational                   applied          
------------------------  ----------------------------  -----------------
...                                                            
description               hypervisor_port_1             hypervisor_port_1
ip                                                                       
  vrrp                                                                   
    enable                                              off              
  igmp                                                                   
    enable                                              off              
  neighbor-discovery                                                     
    enable                                              on               
    router-advertisement                                                 
      enable                                            off              
    home-agent                                                           
      enable                                            off              
    [rdnss]                                                              
    [dnssl]                                                              
    [prefix]                                                             
  ipv4                                                                   
    forward                                             on               
  ipv6                                                                   
    enable                                              on               
    forward                                             on               
  vrf                                                   default          
  [address]               fe80::4ab0:2dff:feeb:db72/64                   
  [gateway]                                                              
...
cumulus@switch$ ip link show swp1
3: swp1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 500
    link/ether aa:aa:aa:aa:aa:bc brd ff:ff:ff:ff:ff:ff
    alias hypervisor_port_1

您可以监控接口的流量速率和 PPS,以确保最佳网络性能和可靠性;请参阅 用于监控接口流量速率和 PPS 的命令

注意事项

即使 ifupdown2 支持为同一接口包含多个 iface 节,也请为每个接口使用单个 iface 节。如果您必须指定多个 iface 节;例如,如果单个接口的配置来自多个位置,例如模板或源文件,请确保这些节未指定相同的接口属性。否则,您会看到意外的行为。

在以下示例中,swp1 位于两个文件中:/etc/network/interfaces/etc/network/interfaces.d/speed_settingsifupdown2 解析此配置,因为相同的属性不在多个 iface 节中。

cumulus@switch:~$ sudo cat /etc/network/interfaces

source /etc/network/interfaces.d/speed_settings

auto swp1
iface swp1
  address 10.0.14.2/24

cumulus@switch:~$ cat /etc/network/interfaces.d/speed_settings

auto swp1
iface swp1
  link-speed 1000
  link-duplex full

ifupdown2 和 sysctl

对于 pre-upuppost-uppre-downdownpost-down 行中使用 $IFACE 变量的 sysctl 命令,如果接口名称包含点号 (.),则 ifupdown2 不会更改名称以与 sysctl 配合使用。例如,接口名称 bridge.1 不会转换为 bridge/1

ifupdown2 和网关参数

gateway 参数在 ifupdown2 中创建的默认路由不会安装在 FRR 中,因此不会重新分发到其他路由协议中。请改为定义静态默认路由,该路由将安装在 FRR 中并在需要时重新分发。

以下示例显示了当您使用静态路由而不是网关参数时 /etc/network/interfaces 文件的内容

auto swp2
iface swp2
address 172.16.3.3/24
up ip route add default via 172.16.3.2

接口名称限制

接口名称最多可以包含 15 个字符。第一个字符不能是数字,并且名称中不能包含短划线 (-)。此外,您不能使用任何与正则表达式 .{0,13}\-v.* 匹配的名称。

如果您遇到问题,请从 /etc/network/interfaces 文件中删除接口名称,然后重启 networking.service

cumulus@switch:~$ sudo nano /etc/network/interfaces
cumulus@switch:~$ sudo systemctl restart networking.service

IP 地址作用域

ifupdown2 不会遵循 /etc/network/interfaces 文件中配置的 IP 地址作用域设置,并将所有地址视为全局地址。它不会报告错误。请考虑以下示例配置

auto swp2
iface swp2
    address 35.21.30.5/30
    address 3101:21:20::31/80
    scope link

当您在此配置上运行 ifreload -a 时,ifupdown2 会将所有 IP 地址视为全局地址。

cumulus@switch:~$ ip addr show swp2
5: swp2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 74:e6:e2:f5:62:82 brd ff:ff:ff:ff:ff:ff
inet 35.21.30.5/30 scope global swp2
valid_lft forever preferred_lft forever
inet6 3101:21:20::31/80 scope global
valid_lft forever preferred_lft forever
inet6 fe80::76e6:e2ff:fef5:6282/64 scope link
valid_lft forever preferred_lft forever

要解决此问题,请配置 IP 地址作用域

不支持 NVUE 命令。

/etc/network/interfaces 文件中,使用 post-up ip address add <address> dev <interface> scope <scope> 配置 IP 地址作用域。例如

auto swp6
iface swp6
    post-up ip address add 71.21.21.20/32 dev swp6 scope site

然后在此配置上运行 ifreload -a 命令。

以下配置显示了正确的范围

cumulus@switch:~$ ip addr show swp6
9: swp6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 74:e6:e2:f5:62:86 brd ff:ff:ff:ff:ff:ff
inet 71.21.21.20/32 scope site swp6
valid_lft forever preferred_lft forever
inet6 fe80::76e6:e2ff:fef5:6286/64 scope link
valid_lft forever preferred_lft forever