
局域网游戏代表:红色警戒
ovs交换机可以实现vlan的隔离,功能上类似于普通交换的vlan隔离。并且vlan隔离在openstack的网络各种发挥着十分重要的作用。ovs的隔离通通过tag标签来实现。下面首先使用mininet仿真软件创建一个最简单的拓扑,然后设置端口tag来实现vlan。
mininet是SDN学习中用来创建各种拓扑的仿真软件,能够使用最小的消耗完成主机,交换机,控制器的模拟。使用mn命令创建两个主机连接到一个交换机中的拓扑。

查看交换机的端口。两个主机连接到交换机的两个端口,分别是s1-eth2,s1-eth2。所有的端口默认其实都是有tag的,tag为0,但不会显示在这里。

打开h1
mininet 仿真器可以打开任何一个模拟出来的设备,可以将新开的端口看做一个虚拟机。

主机h1这时还不能和主机h2通信,因为ovs交换机中没有任何流表。

action=NORMAL的流表意思是该交换机配置成一个正常传统交换机工作。ovs交换机有两种工作模式:SDN模式和传统模式。传统的ovs交换机是通过mac地址自学习来完成数据帧交换,SDN模式是交换机里的流表匹配数据流然后有相应的转发动作。这里就是让交换机实现mac地址自学习功能。

主机1能够ping通主机2

查看mac地址自学习表,可以看到这个时候交换机的端口,特别是VALN都是0。

设置tag号
tag是在端口上设置的,使用命令将tag号打在端口上。
ovs-vsctl set Port s1-eth1 tag=100
ovs-vsctl set Port s1-eth2 tag=200

再次让h1 ping h2 可以发现已经无法通信了。

查看交换机的mac地址自学习表,能够看到VLAN发生了变化。正是这种LVAN的变化导致数据

ovs-dpctl:可以统计每条 datapath 上的设备通过的流量,打印流的信息。datapath模块是最底层交换机机制的实现,功能是接收网包-查表-执行action。下面使用dpctl查看经过datapath数据流是怎么样

可以看到在h1 h2互相ping时的数据流。
recirc_id(0),in_port(1),eth(src=46:5d:b5:ee:45:bf,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=10.0.0.2,tip=10.0.0.1,op=1/0xff), packets:59, bytes:2478, used:0.528s, actions:push_vlan(vid=200,pcp=0),3
recirc_id(0),in_port(2),eth(src=be:1c:a1:b5:c5:9f,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),arp(sip=10.0.0.1,tip=10.0.0.2,op=1/0xff), packets:78, bytes:3276, used:0.799s, actions:push_vlan(vid=100,pcp=0),3
这两条经过的数据流分别是h2和h1发出的。其中action表明了该条流vlan的产生过程。数据帧进入s1是不带vlan的,因为ovs是软件模拟,所以datapath负责对设置了tag的端口在数据帧中加入tag(个人理解)。从h2出来的数据帧进入datapath打上vlan tag200,从h1出来的数据帧进入datapath打上vlan tag100。正是因为数据流的tag导致了匹配之后无法转发。
注意这里的in_port并不是网桥s1上的port,而是datapath自己的的port,关系可以参考如下:

openstack有多种网络插件,其中最重要的就是ovs,即openvswitch-plugin。在使用ovs实现openstack中的各种网络时,这里各种网络指:local,flat,vlan,vxlan等,tag标签的使用可以说是每一种网络都离不开的。下面说说在各种网络中tag标签的使用。由于手头上没有openstack环境,这里借用我的偶像cloudman先生的每天五分钟玩转openstack系列来说明。
local网络是虚拟机的网络和网桥连接,但是网络和服务器网卡之间没有连接。流量限制在网桥内部。在local网络中,所有的虚拟机在网桥上的port使用了tag1。

float网络
原文:https://www.cnblogs.com/goldsunshine/p/12748378.html