使用 ip 命令列出 openvswitch 虚拟交换机

使用 ip 命令列出 openvswitch 虚拟交换机

我已经配置了开放式交换机ip虚拟交换机,可以使用以下命令列出它:

# Show all interfaces
ip link

输出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

<snip>

5: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 8a:94:11:48:01:db brd ff:ff:ff:ff:ff:ff
6: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether e6:db:3f:88:4b:48 brd ff:ff:ff:ff:ff:ff

此输出中的 openvswitch 被命名为ovsbr0

现在我想使用ip命令只列出这个虚拟交换机并排除其他接口,例如:

# List only bridges
ip link show type bridge

预期输出:

6: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether e6:db:3f:88:4b:48 brd ff:ff:ff:ff:ff:ff

实际输出:

<no output>


为什么我期望这个命令输出ovsbr0

这个问题是特定的,openvswitch因为如果我使用相同的命令列出不是的网桥,openvswitch那么它可以正常工作。

使用命令创建的桥的示例ip

# Create bridge named "br0"
sudo ip link add br0 type bridge

# Show the newly created bridge called "br0"
ip link show type bridge

提供预期输出:

7: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 6a:76:6f:50:da:35 brd ff:ff:ff:ff:ff:ff

如您所见,如果使用命令创建桥,则该命令有效ip
但这不起作用openvswitch

问题:

  1. 如何使用该ip命令仅列出openvswitch接口(虚拟交换机)?
  2. 为什么该ip命令无法列出openvswitch接口(虚拟交换机)?

附加背景:

不是openvswitchip命令创建的,而是用ovs-vsctl作为openvswitch包一部分的命令:

sudo ovs-vsctl add-br ovsbr0

然而,即使该桥不是使用命令创建的,也可以使用命令删除openvswitch它:ipip

# Delete it with ip command
sudo ip link delete ovsbr0

# Alternative and conventional method
sudo ovs-vsctl del-br ovsbr0

我尝试过什么:

# List openvswitch only but specifying type other than TYPE bridge
ip link show type TYPE

还有哪些其他接口类型可以测试列表?

# See TYPE := section from this output for types other than "bridge"
ip link show help

答案1

Open vSwitch 接口不是内核接口,但是一个内核(-加速)开放式交换机接口,有自己独立的驱动程序。

如有疑问,任何接口类型都将显示该-details选项(经过编辑以匹配 OP):

$ ip -details link show dev ovsbr0
6: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether e6:db:3f:88:4b:48 brd ff:ff:ff:ff:ff:ff promiscuity 1 allmulti 0 minmtu 68 maxmtu 65535 
    openvswitch numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 gso_ipv4_max_size 65536 gro_ipv4_max_size 65536 
$ ip -details -json link show dev ovsbr0 | jq -r '.[].linkinfo.info_kind'
openvswitch

所以自然地只显示这种类型的命令是:

ip link show type openvswitch

该资源是单独开发的ip路由2如果帮助中不包含它,人们不应该感到惊讶。例如,同样wireguard不会出现在帮助中,但(基于内核的)WireGuard 界面将使用ip link show type wireguard.

相关内容