基础配置以及要点:
1.交换机创建和端口的配置 1) 创建一个新的 OVS 交换机【格式:$ ovs-vsctl add-br [名称]】 $ovs-vsctl add-br ovs-switch 2) 创建一个端口 p0,设置端口 p0 的 OpenFlow 端口编号为 100(如果在创建端口的时候没有指定 OpenFlow 端口编号,OVS 会自动生成一个)。(端口p1的创建和设置同p0) $ovs-vsctl add-port ovs-switch p0 -- set Interface p0 ofport_request=100 【如果报错,将上述命令替换为以下两条: $sudo ovs-vsctl add-port ovs-switch p0 #可能会报错,但实际已经创建成功 $sudo ovs-vsctl set interface p0 ofport_request=100 】
![](https://img-blog.csdnimg.cn/img_convert/635f6420d333cc576f468dfb12ba2b3b.png)
编辑
添加图片注释,不超过 140 字(可选)
3) 设置网络接口设备的类型为“internal”。对于 internal 类型的的网络接口,OVS 会同时在 Linux 系统中创建一个可以用来收发数据的模拟网络设备。我们可以为这个网络设备配置 IP 地址、进行数据监听等等。 $ sudo ovs-vsctl set Interface p0 type=internal $ sudo ethtool -i p0
![](https://img-blog.csdnimg.cn/img_convert/df04c4847a0e7c1f7f60a3308996be31.png)
编辑
添加图片注释,不超过 140 字(可选)
2.虚拟网络空间的配置 1) 为了避免网络接口上的地址和本机已有网络地址冲突,我们可以创建一个虚拟网络空间 ns0,把 p0 接口移入网络空间 ns0,并配置 IP 地址为 192.168.1.100。 $ sudo ip netns add ns0 $ sudo ip link set p0 netns ns0 $ sudo ip netns exec ns0 ip addr add 192.168.1.100/24 dev p0 $sudo ip netns exec ns0 ifconfig p0 promisc up
![](https://img-blog.csdnimg.cn/img_convert/3a85e839170ebdf5b6877ad95f5b48bb.png)
编辑
添加图片注释,不超过 140 字(可选)
![](https://img-blog.csdnimg.cn/img_convert/31cc4b0b4a43bfa4deeb546ad51fac5d.png)
编辑
添加图片注释,不超过 140 字(可选)
3.查看 OVS 交换机 1)通过 sudo ovs-vsctl show 命令查看 OVS 交换机的信息
![](https://img-blog.csdnimg.cn/img_convert/2336a847b4f296602e20a160768823e1.png)
编辑
添加图片注释,不超过 140 字(可选)
4.使用 ovs-ofctl 创建并测试 OpenFlow 命令 1) 查看 Open vSwitch 中的端口信息。从输出结果中,可以获得交换机对应的 datapath ID (dpid),以及每个端口的 OpenFlow 端口编号,端口名称,当前状态。 ①查看交换机中的所有 Table: $ sudo ovs-ofctl dump-tables ovs-switch
![](https://img-blog.csdnimg.cn/img_convert/2db4d78d178cd41a6886ffa375a378f7.png)
编辑
添加图片注释,不超过 140 字(可选)
②查看交换机中的所有流表项:$sudo ovs-ofctl dump-flows ovs-switch
![](https://img-blog.csdnimg.cn/img_convert/87efc7b03ba26f03eda3fd8472f17065.png)
编辑
添加图片注释,不超过 140 字(可选)
![](https://img-blog.csdnimg.cn/img_convert/eaf1f3d3d7b963f39044f761a59e9446.png)
编辑
添加图片注释,不超过 140 字(可选)
③查看交换机上的端口信息:$ sudo ovs-ofctl show ovs-switch
![](https://img-blog.csdnimg.cn/img_convert/d376548b75ee50b2443279e9fe601b46.png)
编辑
添加图片注释,不超过 140 字(可选)
④两个端口相互测试:$ sudo ip netns exec ns0 ping 192.168.1.101
![](https://img-blog.csdnimg.cn/img_convert/e705c8d1696faaa53c60dba3ee3d8af3.png)
编辑
添加图片注释,不超过 140 字(可选)
------------------------------------------------------------------------------------------------------------------------------------------- 【此处仅参考】(有p0,p1,p2三个端口,进行对数据包的操作) 1. 屏蔽数据包 1)屏蔽所有进入 OVS 的以太网广播数据包 $ ovs-ofctl add-flow ovs-switch "table=0, dl_src=01:00:00:00:00:00/01:00:00:00:00:00, actions=drop" 2)屏蔽 STP 协议的广播数据包 $ ovs-ofctl add-flow ovs-switch "table=0, dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0, actions=drop" 2. 修改数据包 1)添加新的 OpenFlow 条目,修改从端口 p0 收到的数据包的源地址为 9.18