XenServer的网络堆栈Open vSwitch模式

在上一篇文章中,咱们介绍了XenServer的Bridge网络堆栈模式,如今在本篇文档中,咱们将介绍XenServer支持的另外一种开源的网络堆栈模式:open vswitch。XenServer如今安装部署的版本中默认采用open vswitch模式,若是咱们不须要作LACP或者绑定更多的网卡及使用分布式交换机,那么建议在生产环境中仍是使用Linux Bridge模式。数据库

Open vSwitch是一款开源的软件虚拟交换机,适用于基于Linux的虚拟化平台。实质上Citrix也将其集成到本身的XenServer产品当中,并对其进行大力支持。而且基于其开发出本身的虚拟分布式交换机产品提供给XenServer使用。从XenServer6.0开始Citrix将其做为xenServer默认的网络堆栈模式。Open vSwitch提供近似于硬件交换机的多种功能,相比于Bridge网络协议栈来讲,Open vSwitch提供了比Bridge更多的功能,好比VLAN功能,端口镜像,QoS等。OpenvSwitch提供的具体功能以下:编程

  • NetFlow:NetFlow最初是由思科公司开发的一项技术,用于监控网络流量和为管理员提供网络流量的可视化的视图。安全

  • sFlow:sFlow技术是用于监视网络的开放标准技术协议,为管理员提供了可视化的网络流量视图。服务器

  • Switched Port Analyzer (SPAN):SPAN或端口镜像用于复制或镜像数据包从一个端口到另外一个交换机上。这一般是用于监视和扫描目的,好比部署亚信安全的TDA设备进行网络安全威胁扫描等。网络

  • Remote Switched Port Analyzer (RSPAN):RSPAN顾名思义就是远程的SPAN技术。利用SPAN技术咱们能够把交换机上某些想要被监控端口(如下简称受控端口)的数据流COPY或MIRROR一份,发送给链接在监控端口上的流量分析仪,好比CISCO的IDS或是装了SNIFFER工具的PC. 受控端口和监控端口能够在同一台交换机上,也能够在不一样的交换机上(远程SPAN)。架构

  • Quality of Service (QoS):QoS(Quality of Service,服务质量)指一个网络可以利用各类基础技术,为指定的网络通讯提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。socket

  • Link Aggregation Control Protocol (LACP):提供LACP协议的能力,聚合多个物理网络接口链接到对端交换机,提供冗余逻辑链路以及带宽的聚合提高。分布式

  • OpenFlow suppor:容许OpenFlow的控制平面的从打开的vSwitch的状况下抽象咱们的数据包,其主要做为转发平面。此功能提供了虚拟交换机做为SDN的支持。ide

  • Generic Routing Encapsulation (GRE):GRE 是通用路由封装协议,能够对某些网络层协议的数据报进行封装,使这些被封装的数据报可以在IPv4 网络中传输。工具

  • VXLAN:VXLAN(Virtual eXtensible Local AreaNetwork)是一种将二层报文用三层协议进行封装的技术,能够对二层网络在三层范围进行扩展。即所谓的大二层技术。

 

在这里重点提一下OpenFlow技术,如今比较火热的新型网络架构软件定义网络( SDN)中,如今业界主要分为两大阵营在该领域抢占制高点,其中一派为传统的网络设备制造厂商,譬如CISCO,他们以OpenFlow为核心技术,将网络设备的控制与数据平面分离,从而实现网络流量的灵活控制,为核心网络及应用的创新提供良好的平台。以此实现软件定义网络。另外一阵营以新兴的虚拟化厂商为表明,好比VMware,他们以Overlay技术为主,高举开放的旗帜,他们不用关心底层硬件的工做,更关心的是如何经过软件的方式来定义和控制网络。这两大阵营有对抗也有共鸣。

无疑Open vSwitch也是OpenFlow技术阵营的。OpenFlow 是一组协议和API,它起源于斯坦福大学的Ethane 项目,实现可编程网络的思想, 从SDN 整个架构看,OpenFlow 协议又是控制器与交换机中的通讯协议。控制器使用OpenFlow 协议对交换机中的流表表项进行添加、更新与删除。2009 年12月,OpenFlow.org 发布了OpenFlow标准的1.0 版本,在2011年2月,OpenFlow.org 继续发布标准1.1版,后由ONF负责。

 

接下来咱们首先介绍Open vSwitch的架构和组件。

  在Open vSwitch中,若是从总体上来看的话,Open vSwitch在服务器上主要简化的结构以下图所示:

wKioL1Z0_mLwh4ojAAAfRjuQGCU738.png

能够理解为Open vSwitch主要包含Controller和Datapath两个部分。其中Datapath咱们译为数据路径,其实质就是一台以太网交换机。

其中,Controller层是一个网络的管理层,统一管理和配置下面的各个Datapath层设备。Controller层还能够和OpenFlow紧密集成。

数据路径Datapath层其实就是一个虚拟的交换机设备,功能和传统的交换机相似。在Open vSwitch中一台虚拟的交换机就被称之为一个Datapath。其主要是在名称上的称呼。其实这个Datapath和bridge差很少,区别就在于,Datapath受Open vswitch的Controller管理,支持更多的功能。其主要的功能:

   传递虚拟机之间的流量

   实现虚拟机和外部网络的流量通讯

wKiom1Z0_nqA2zR6AAPM_fDoK30979.png

本图来源于网络

如上图所示,本图很好的展现了Open vSwitch的具体逻辑实现架构。最上层表达的意思是利用OpenFlow协议链接到OpenFlow控制器,以实现SDN的控制层面存在。

中间的这一层就是OpenvSwitch本身的服务守护进行等,主要运做在Domain 0的用户空间。

  • Ovs-vswitchd:该组件是openvswitch在用户空间的守护进程,主要实现虚拟交换机的交换功能。经过netlink协议直接和内核模块Datapath进行通讯。

  • Ovsdb-Server:open vswitch的数据库,主要存储openvswitch的配置信息,ovs-vswitchd主要读取ovsdb-server里面保存的配置信息进行工做。ovs-vswitchd会经过Unix socket和ovsdb-server通讯。

最下面的这层运行Open vSwitch内核模块Datapath,Datapath主要运行于内核空间,是主要的应用咱们配置数据包规则的程序,就是负责干活的一线工程师。

 

下面咱们说说Open vSwitch是如何工做的。

 

在系统的内核模块中,Open vSwitch能够建立多个“数据路径(DataPath)”(这相似于以太网交换机,和咱们上文中说的网桥相似),在每一个Datapath中均可以建立多个“vports”(交换机端口)。

   每一个Datapath经过关联流表(flow table)来进行相应的动做,而这些流表中的流都是用户空间在报文头和元数据的基础上映射的关键信息,通常的操做都是将数据包转发到另外一个vport。当一个数据包到达一个vport,内核模块所作的处理是提取其流的关键信息并在流表中查找这些关键信息。当有一个匹配的流时它执行对应的操做。若是没有匹配,会交给用户态的ovs-vswitchd查询flow,用户态处理后,会把处理完的数据包输出到正确的端口,而且设置新的datapath规则,后续数据包能够经过新的datapath规则实现快速转发。细节以下图所示:

wKioL1Z0_qjTCBHiAAC0GUNkxcM503.png

图片来自网络

上面咱们花了必定的篇幅来介绍什么是Open vSwitch和Opne vSwitch的架构以及Open vSwitch如何工做。接下来我须要给你们说明,在Xen或着XenServer中,Open vSwitch是如何和Xen虚拟化底层结合的。

在下面的图中展现了Xen环境下的Opne vSwitch设备架构图

wKiom1Z0_rLxTwQQAACtJ9-Hmjw655.png

图片来自网络

  咱们能够看到,在Xen的环境下,Open vSwitch会在每台Xen的主机Domain 0中建立数据路径Datapath。而后经过统一的Controller来进行管理。

wKiom1Z0_tCCiIIxAAAuzWVNDEY900.png

虚拟机网卡与Open vSwitch的Datapath即网桥端口直接链接。数据包转发到Datapath以后,再有咱们上面所说的处理机制进行数据包的处理。这里的tap就是交换机上的一个端口。

  在多台Xen或着XenServer主机中的网络链接示意图。

wKioL1Z0_vaTUSs6AAFq-XrZob8356.png

在XenServer中,Citrix基于OpenvSwitch开发了分布式虚拟交换机。

分布式虚拟交换机架构图

wKiom1Z0_v_SGneDAAED4xb1BDo398.png

在XenServer中,分布式虚拟交换机以下图所示,XenServer有一台专门封装好的虚拟机,导入XenServer中做为分布式交换机的控制器,对各台XenServer上的Open vSwitch网络进行统一管理。

wKioL1Z0_zCRle5tAABJaStjtTU181.png