openvswitch完全使用手册-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 2129996
  • 博文数量: 230
  • 博客积分: 9346
  • 博客等级: 中将
  • 技术积分: 3418
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-26 01:58
文章分类

全部博文(230)

文章存档

2015年(30)

2014年(7)

2013年(12)

2012年(2)

2011年(3)

2010年(42)

2009年(9)

2008年(15)

2007年(74)

2006年(36)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: linux

2015-04-21 09:03:25

原文地址: 作者:

openvswitch完全使用手册(一)-总览overview

本文主要参考以及以及结合自己的理解。

1 什么是openvswitch

openvswitch,简称ovs是一个虚拟交换软件,主要用于虚拟机vm环境,作为一个虚拟交换机,支持xen/xenserver, kvm, and virtualbox多种虚拟化技术。

在这种某一台机器的虚拟化的环境中,一个虚拟交换机(vswitch)主要有两个作用:传递虚拟机vm之间的流量,以及实现vm和外界网络的通信。

整个ovs代码用c写的。目前有以下功能:

  • standard 802.1q vlan model with trunk and access ports
  • nic bonding with or without lacp on upstream switch
  • netflow, sflow(r), and mirroring for increased visibility
  • qos (quality of service) configuration, plus policing
  • gre, gre over ipsec, vxlan, and lisp tunneling
  • 802.1ag connectivity fault management
  • openflow 1.0 plus numerous extensions
  • transactional configuration database with c and python bindings
  • high-performance forwarding using a linux kernel module

2 openvswitch的组成

  • ovs-vswitchd:守护程序,实现交换功能,和linux内核兼容模块一起,实现基于流的交换flow-based switching。
  • ovsdb-server:轻量级的数据库服务,主要保存了整个ovs的配置信息,包括接口啊,交换内容,vlan啊等等。ovs-vswitchd会根据数据库中的配置信息工作。
  • ovs-dpctl:一个工具,用来配置交换机内核模块,可以控制转发规则。
  • ovs-vsctl:主要是获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库。
  • ovs-appctl:主要是向ovs守护进程发送命令的,一般用不上。
  • ovsdbmonitor:gui工具来显示ovsdb-server中数据信息。
  • ovs-controller:一个简单的openflow控制器
  • ovs-ofctl:用来控制ovs作为openflow交换机工作时候的流表内容。

3 openvswitch和其他vswitch

这里其他的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

1 vswitch、bridge、datapath


在网络中,交换机和桥都是同一个概念,ovs实现了一个虚拟机的以太交换机,换句话说,ovs也就是实现了一个以太桥。那么,在ovs中,给一个交换机,或者说一个桥,用了一个专业的名词,叫做datapath!

要了解,ovs如何工作,首先需要知道桥的概念。

网桥也叫做桥接器,连接两个局域网的设备,网桥工作在数据链路层,将两个lan连接,根据mac地址来转发帧,可以看成一个“低层的路由器”(路由器工作在网络层,根据ip地质进行转发)。

1.1 网桥的工作原理

网桥处理包遵循以下几条规则:

  • 在一个接口上接收到的包不会再往那个接口上发送此包。
  • 每个接收到的包都要学习其源mac地址。
  • 如果数据包是多播或者广播包(通过2层mac地址确定)则要向接收端口以外的所有端口转发,如果上层协议感兴趣,则还会递交上层处理。
  • 如果数据包的地址不能再cam表中找到,则向接收端口以外的其他端口转发。
  • 如果cam表中能找到,则转发给相应端口,如果发送和接收都是统一端口,则不发送。

注意,网桥是以混杂模式工作的。关于网桥更多,请查阅相关资料。

2 ovs中的bridge

上面,说到,一个桥就是一个交换机。在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主要是用来在虚拟化环境中。虚拟机之间一个虚拟机和外网之间的通信所用,如下是一个典型的结构图:

那么,通常情况下的工作流程如下:

  • 1 vm实例instance产生一个数据包并发送至实例内的虚拟网络接口vnic,图中就是instance中的eth0.
  • 2 这个数据包会传送到物理节点上的vnic接口,如图就是vnet接口。
  • 3 数据包从vnet nic出来,到达桥(虚拟交换机)br100上.
  • 4 数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理节点上的eth0.
  • 5 数据包从eth0出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。

阅读(5406) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图