流表跟踪

Jneee 于 2020-12-26 发布

1、查看物理机的网桥和端口:

ovs-appctl dpif/show

查找server虚拟机的ply网桥 ovs-appctl dpif/show | grep 3dc0dfc1-ad -A 2 我是图片

数据通道命令(datapath) 这些命令管理逻辑数据通道。类似ovs-dpctl的命令。

2、查看简单的精确流表(是动态的)

ovs-appctl dpif/dump-flows ply3dc0dfc1-ad

我是图片 参数注释 我是图片

3、查看datapath

DPDK目前有两个datapath,内核态的只有一个。DPDK查看需要制定datapath进行查看。 #ovs-appctl dpctl/dump-dps

这个在第一步ovs-appctl dpif/show 也有显示

4、追踪对应datapath上的流表

根据第2步查出的规则,选择到packets前面的内容

ovs-appctl ofproto/trace ovs-netdev “流表内容(packets前面)”

ovs-netdev是datapath,由第三步找到。

我是图片 这个流在bridge(“br-int”)上面没有找到对应的mac,于是泛洪,在brcps上被drop,在br-tun上…

5. 查看网桥上面的mac和port的转发规则

注意到第4步的mac地址是 dl_src=fa:16:3e:4b:2a:c3,dl_dst=fa:16:3e:7c:05:12 查询网桥上面的mac记录:(目的mac2a:c3走41口,目的mac05:12走42口)

我是图片

查看端口的名称 我是图片

虚拟机内流量走向(网桥和端口位置) 我是图片

其他

由于公司网络限制,图片传不出来。

ovs-ofctl dump-flows ply4fdf1e98-e4 table=0 查看网桥的某个table里具体的规则

参考: