![使用 ip 命令列出 openvswitch 虚拟交换机](https://linux22.com/image/231250/%E4%BD%BF%E7%94%A8%20ip%20%E5%91%BD%E4%BB%A4%E5%88%97%E5%87%BA%20openvswitch%20%E8%99%9A%E6%8B%9F%E4%BA%A4%E6%8D%A2%E6%9C%BA.png)
我已经配置了开放式交换机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
问题:
- 如何使用该
ip
命令仅列出openvswitch
接口(虚拟交换机)? - 为什么该
ip
命令无法列出openvswitch
接口(虚拟交换机)?
附加背景:
不是openvswitch
用ip
命令创建的,而是用ovs-vsctl作为openvswitch
包一部分的命令:
sudo ovs-vsctl add-br ovsbr0
然而,即使该桥不是使用命令创建的,也可以使用命令删除openvswitch
它:ip
ip
# 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
.