ovs 试验 openflow

286 阅读1分钟

准备

sudo apt-get update
sudo apt-get install iputils-ping
sudo apt-get install openvswitch-switch
sudo apt-get install tcpdump

试验

创建交换机

sudo ovs-vsctl add-br ovs-demo

创建交换机的三个端口(对应的是三个虚拟网络设备)

sudo ovs-vsctl add-port ovs-switch port1 -- set Interface port1 ofport_request=101 type=internal
sudo ovs-vsctl add-port ovs-switch port2 -- set Interface port2 ofport_request=102 type=internal
sudo ovs-vsctl add-port ovs-switch port2 -- set Interface port2 ofport_request=103 type=internal

创建三个 namespace

sudo ip netns add ns1
sudo ip netns add ns2
sudo ip netns add ns3

添加这三个虚拟网络设备到 namespace 中

sudo  ip link set port1 netns ns1
sudo  ip link set port2 netns ns2
sudo  ip link set port3 netns ns3

给三个虚拟网络设备添加 ip

sudo ip netns exec ns1 ip addr add 192.168.1.101/24 dev port1
sudo ip netns exec ns2 ip addr add 192.168.1.102/24 dev port2
sudo ip netns exec ns3 ip addr add 192.168.1.103/24 dev port3

三个虚拟网络设备开启混杂模式

sudo ip netns exec ns1 ifconfig port1 promisc up
sudo ip netns exec ns2 ifconfig port2 promisc up
sudo ip netns exec ns3 ifconfig port3 promisc up

起三个 namespace 的 lo

sudo ip netns exec ns1 ifconfig lo up
sudo ip netns exec ns2 ifconfig lo up
sudo ip netns exec ns3 ifconfig lo up

可以通过如下命令验证

sudo ip netns exec ns1 ping 192.168.1.102

重定向测试

sudo ovs-ofctl add-flow ovs-switch "idle_timeout=0, dl_type=0x0800, nw_proto=1, actions=output:103"

试验

sudo ip netns exec ns1 ping 192.168.1.103
sudo ip netns exec ns2 tcpdump -i port2 -p icmp
sudo ip netns exec ns3 tcpdump -i port3 -p icmp

可以看到在 ns3 中才收到了 icmp 包

提示

可以通过openflow controller下发flow table