全部博文(230)
分类: linux
2015-04-21 09:03:25
原文地址: 作者:
openvswitch完全使用手册(一)-总览overview
本文主要参考以及以及结合自己的理解。
openvswitch,简称ovs是一个虚拟交换软件,主要用于虚拟机vm环境,作为一个虚拟交换机,支持xen/xenserver, kvm, and virtualbox多种虚拟化技术。
在这种某一台机器的虚拟化的环境中,一个虚拟交换机(vswitch)主要有两个作用:传递虚拟机vm之间的流量,以及实现vm和外界网络的通信。
整个ovs代码用c写的。目前有以下功能:
这里其他的vswitch,包括vmware vnetwork distributed switch以及思科的cisco nexus 1000v。
vmware vnetwork distributed switch以及思科的cisco nexus 1000v这种虚拟交换机提供的是一个集中式的控制方式,。而ovs则是一个独立的vswitch,他运行在每个实现虚拟化的物理机器上,并提供远程管理。ovs提供了两种在虚拟化环境中远程管理的协议:一个是openflow,通过流表来管理交换机的行为,一个是ovsdb management protocol,用来暴露sietch的port状态。
(二)-概念及工作流程1
在网络中,交换机和桥都是同一个概念,ovs实现了一个虚拟机的以太交换机,换句话说,ovs也就是实现了一个以太桥。那么,在ovs中,给一个交换机,或者说一个桥,用了一个专业的名词,叫做datapath!
要了解,ovs如何工作,首先需要知道桥的概念。
网桥也叫做桥接器,连接两个局域网的设备,网桥工作在数据链路层,将两个lan连接,根据mac地址来转发帧,可以看成一个“低层的路由器”(路由器工作在网络层,根据ip地质进行转发)。
网桥处理包遵循以下几条规则:
注意,网桥是以混杂模式工作的。关于网桥更多,请查阅相关资料。
上面,说到,一个桥就是一个交换机。在ovs中,
ovs-vsctl add-br brname(br-int) root@compute2:~# ifconfig br-intlink encap:ethernethwaddr1a:09:56:ea:0b:49 inet6 addr: fe80::1809:56ff:feea:b49/64scope:link up broadcast running multicast mtu:1500metric:1 rx packets:1584 errors:0 dropped:0 overruns:0 frame:0 tx packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 rx bytes:316502(316.5 kb) tx bytes:468(468.0 b)
当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是brname,之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,我还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。
ovs-vsctl add-port brname port
这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置ip了。(你没见过哪个交换的端口有ip的吧)
那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在ovs中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口brname,那么,你给这个虚拟网卡配置了ip以后,就相当于给交换机的管理接口配置了ip,此时一个正常的虚拟交换机就搞定了。
ip address add 192.168.1.1/24 dev brname
最后,我们来看看一个br的具体信息:
root@compute2:~# ovs-vsctl show bc12c8d2-6900-42dd-9c1c-30e8ecb99a1bbridge"br0"port"eth0"interface"eth0"port"br0"interface"br0" type:internal ovs_version:"1.4.0 build0"
首先,这里显示了一个名为br0的桥(交换机),这个交换机有两个接口,一个是eth0,一个是br0,上面说到,创建桥的时候会创建一个和桥名字一样的接口,并自动作为该桥的一个端口,那么这个虚拟接口的作用,一方面是可以作为交换机的管理端口,另一方面也是基于这个虚拟接口,实现了桥的功能。
openvswitch完全使用手册(二)-概念及工作流程2
这一部分我以一个简单的例子,说明在虚拟化环境中openvswitch的典型工作流程。
前面已经说到,ovs主要是用来在虚拟化环境中。虚拟机之间一个虚拟机和外网之间的通信所用,如下是一个典型的结构图:
那么,通常情况下的工作流程如下: