SDN私享汇(十三):DCFabirc控制器实现高级OpenStack网络功能

SDN私享汇由SDNLAB倾力打造的在线分享直播,我们的宗旨是“传播知识,传递价值”,关注网络创新技术助力打造更加完善的SDN生态,欢迎加入我们的行列。

嘉宾简介:
--------------------------------------------------------------------------------------------------
蒋暕青,目前任上海宽带技术及应用工程研究中心(上海宽带中心)高级软件开发工程师,自2015年从事软件定义网络(SDN)的研究工作,作为项目负责人或参与人承担了多个上海市SDN相关科研项目,参与了CCSA等相关组织的标准制定。同时对OpenStack有深入了解
--------------------------------------------------------------------------------------------------
DCFabirc的主要特性和基于DCFabric的OpenStack网络的高性能优势。DCFabric的最新版本“秦”在峰会上正式发布,新版本主要在多线程优化、网络连接管理、内存管理、主备集群数据同步等方面完成了大量的重构和优化工作,从而可以支持3000个交换机的大型网络拓扑,控制器内存占用也大大降低,DCFabric的性能和稳定性得以大大提高,具备了在OpenStack环境下大规模商用的能力。

在以前的DCFabric版本中,我们采用的SELECT I/O复用机制,最多只能支持1024个交换机。 尽管在大多数OpenStack环境中这样的交换机已经足够了,但我们认为,在某些设置(如公共云,Docker)中使用DCFabric时,需要更多的交换机,因此,在秦版的DCFabric ,我们转向EPOLL I/O复用机制,可以支持更多数量的交换机的TCP连接。另外,由DCFabric对接的OpenStack平台,计算节点之间的链路可以到达30G以上的转发速率。

DCFabric多流表实现方案

OpenFlow从1.1版开始就可支持多流表,SFabric在每个交换机中都建立了四个流表来实现流水线式处理。假设在流表中使用VLAN ID作为Tag标签字段,四个流表的具体结构和工作过程如下。

图1. SFabric的四流表实现

Table 0用于包的预处理。它包含p+2个流表项,其中p表示与当前交换机直接相连的交换机的个数。p个流表项的格式为“port=i, ip, actions=goto table:2”,其中1≤i≤p,表示将来自其它交换机的IP包送往Table 2。剩下的2个流表项格式为“ip, actions=goto table:1”和“arp, actions=Controller”,表示将来自当前交换机下的本地主机的IP包和ARP包分别送往Table 1和DCFabric。

本地主机的数据包在发送前需要在当前交换机被打标签,而Table 1则负责存储执行相应操作的流表项。因此,Table 1在初始化后是空的,需要在后续的网络会话通信中逐渐丰富其中的流表项。

Table 2则根据目的交换机的ID来转发数据包,它最多可包含s个流表项, s表示网络中的交换机总数目。其中s-1个流表项的格式为“dl vlan=i, actions=output:j”,表示将VLAN ID为i的数据包通过当前交换机的端口j被发送出去。最后1个流表项的格式为“dl vlan=k, actions=pop vlan, goto table:3”,其中k为当前交换机的ID号,表示若当前的交换机下就是目的交换机时,则数据包应发往Table 3。

Table 3根据数据包的MAC或IP地址,将收到的数据包发往当前交换机下的某个目的主机。所以Table 3在初始化后也是空的,每当当前交换机下的某个主机被发现时,就在Table 3中建立一个相应的流表项。

流表变更如下
由于流表需要满足OpenStack的高级网络功能,对流表进行如下更改:
1. table0是所有流量的入口,包括从OVS虚拟机输出的和从外面进来的流量,所有外面输入进来的,全部跳转table4,优先级高,匹配ARP包和IIDP包全部上送控制器,IP包是跳转table1,优先级低。
2. table1是针对IP包的处理,针对NAT,FLOATING IP,内网之间虚拟机之间的IP包的处理,有FLOATING IP相关的全部跳转table2,NAT和内网之间虚拟机之间的IP包跳转table3
3. table2做QOS处理,匹配源IP,绑定QUEUE,再跳转table3
4. table3发往与本 OVS连接的ovs的端口,即发往其他交换机
5. table4是发往与本OVS连接所连接的虚拟机

使用流表实现OpenStack中高级网络功能

安全组:

在入口table0上实现
网络包从table0上送控制器,控制器根据包中协议,源端口,源IP字段,与目标IP对应虚拟机的安全组进行匹配,对应虚拟机的安全组通过OpenStack的安全组API获取。若在安全组的白名单内,则在table0上下发通过流表。若不在的名单内,则下发白名单内,则下发阻断流表,阻断流表的优先级是高优先级。

对于安全组改动
当一条已经存在流表的流,需要对其进行阻断
原理:通过流表有一个idletimeout A 优先级C
阻断流表有一个idletimeoutB 优先级D
当idletimeout B >= idletimeoutA,B>A 则经过idletimeoutB后,通过流表会失效,则实现了阻断的效果。

QoS功能

  • 目前只针对出口进行QoS,只针对浮动IP,LB,Router进行QoS
  • 在原有table2和table3这两个出口flow table前增加一个QoS table
  • 所有table0,table1需要出口的流均须通过QoS table,然后再由QoS table中流表跳转table2和table3
  • QoS table中流表项匹配源IP。若源IP对应的浮动IP,Router需要QoS,则在该流表项上增加meter或queue

负载均衡功能
通过OpenStack ports接口获取调度方法和port id,通过OpenStack vips获取负载均衡外层ip地址,通过OpenStack member获取后端的服务器,将其串成一个服务池,使用vips获取到的外层ip,通过OpenStack listeners获取health状态检查相关参数

通过SDN控制器,制造ICMP/TCP/HTTP报文,向负载均衡的后台服务器进行状态检查,检查后端服务器服务是否存活, 当访问负载均衡提供的后台服务时,控制器依据OpenStack同步下来的调度方法,使用服务器中的不同后端主机。

SDN控制器底层技术优化

1、多线程优化,增加消息传送,构建消息队列,精简线程
2、底层网络,采用epoll技术处理连接上来的交换机
3、内存优化,共享缓冲区
4、并发优化,多线程消息串行化。

功能点描述

功能点1:DCFabric可以支持3000 个Openv Switch的连接

我们在具有两个Intel Xeon CPU和16GB内存的物理服务器上部署DCFabric。使用mininet在10台物理机上创建3000台交换机,每台交换机都有300台交换机。

图2:DCFabric可以显示3000个交换机

功能点2:DCFabric可以支持Openv Switch的30G以上的打流

另外,DCFabric的高效下发流表策略,使得由DCFabric控制下的Open vSwitch实现了30G以上的转发速率,由于DCFabric不采用OverLay的技术,不通过对网络包的封装和解封装,因此大大提高了网络的转发速率。我们通过了在连接Open vSwitch上5对虚拟机之间的打流,实现了30G以上的速率。

环境介绍:

  • 创建一个包含两个节点的OpenStack环境,每个节点都有一个40G网卡。
  • 我们在每个计算节点上创建5个VM,然后使用iperf来测试在不同计算节点的5对VM之间的最大网络吞吐量。
  • 在OpenStack Dashboard上,我们可以看到5个vms在控制器上运行,5个vms正在运行
  • 在DCFabric GUI上可以看到DCFabric可以发现两个交换机,每个OVS由5台主机连接。
  • 然后我们使用5对vms中的iperf,通过物理机测试两个ovs之间的吞吐量
  • 我使用“Top”来查看cpu的使用情况,数值处于比较低的状态,吞吐量可以看到5对vms吞吐量结果和两个ovs之间的整个网络吞吐量可以达到接近35GB。

图3:DCFabric连接OpenvSwitch可以达到30G以上速率

图4:两个ovs之间打流可以达到35G

---------------------------------------------------------------------------------
SDN私享汇由SDNLAB倾力打造的在线分享直播,我们的宗旨是“传播知识,传递价值”,关注网络创新技术助力打造更加完善的SDN生态。如果您有分享意愿或有感兴趣的话题,请联系微信:wx928579866(ID:小黑)。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/19566.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于17-07-13
0