关于ovs中ovs-ofctl add-flow的“in_port”问题

2023-05-16

问题提出

在之前做的docker容器互联的实验中有这样一句命令:

ovs-ofctl add-flow s1 "in_port=1,actions=drop"

该命令的作用在于为s1网桥加入新的流内容:对来自端口1的包,进行丢弃处理。那么问题来了,端口1指的是哪个端口呢?是通过ovs-vsctl show 命令显示的第一个端口还是网桥加入的第一个端口呢?
先说结论:是网络加入的第一个端口。并以此类推,加入的第二个端口为端口2,加入的第n个端口为端口n。以下是测试内容。

测试内容

在这里插入图片描述
通过往网桥s2依次加入端口,并通过ovs-vsctl show 命令,我们发现:

  • 看起来增加port不是顺序的(可以看到新加入的端口83fe8cc59f374_l位置在之前加入的端口beffd42f5d614_l之上)
  • 其中feb475f23b904_l为端口1、beffd42f5d614_l为端口2、83fe8cc59f374_l为端口3

并且,在s2增加端口之后,都可以三个主机可以互相ping通
在这里插入图片描述

使用命令ovs-ofctl add-flow s2 "in_port=1,actions=drop"加入port1、并使用ovs-ofctl dump-flows s2查看流表,可以通过hash序列观察,发现host1被加入进来,;而后又用同样的方式加入port2、3,host2、host3分别被加入
在这里插入图片描述
因此推断,虽然ovs-vsctl show显示br的端口时不按顺序,但port的序号还是递增的,要不怎么管理呢

此外,我们可以使用命令,查看对应接口对应的序号进行验证

ovs-vsctl list interface a2bb45e7af204_l | grep "ofport"

另外,使用以下命令,也可以得到接口对应的port信息

ovs-ofctl show init-br0

在这里插入图片描述

结果如下:(因为是对博客的补充,所以hash序列已经和上述不一样了。)

在这里插入图片描述
当然我们还可以通过命令,修改想要的端口号,例子修改为5

ovs-vsctl -- set interface a2bb45e7af204_l ofport_request=5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于ovs中ovs-ofctl add-flow的“in_port”问题 的相关文章

随机推荐