SDN私享汇(十三):DCFabirc控制器实现高级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

原文发布于微信公众号 - SDNLAB(SDNLAB)

原文发表时间:2017-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吉浦迅科技

在Jetson TX2上编译模块

4004
来自专栏转载gongluck的CSDN博客

UNPv13:#附录A#IPv4、IPv6、ICMPv4和ICMPv6

IPv4首部 IP层提供无连接不可靠的数据报递送服务。它会尽最大努力把IP数据报递送到指定的目的地,然而并不保证它们一定到达,也不保证它们的到达顺序与发...

3276
来自专栏一场梦

ping命令的高级用法

1675
来自专栏gaoqin31

监控线上服务的小脚本

利用shell脚本定时扫描线上服务是否开启,发邮件到相关人的邮箱。需要安装nmap yum install nmap 。

983
来自专栏腾讯Bugly的专栏

Bugly即将支持的ANR,精神哥告诉你是个什么鬼?

上帝说要有ANR,于是Bugly就有了ANR上报,那么ANR到底是什么? 最近很多童鞋问起精神哥ANR的问题,那么这次就来聊一下,鸡爪怎么泡才好吃...

4384
来自专栏Seebug漏洞平台

披着狼皮的羊——寻找惠普多款打印机中的RCE漏洞

原文:《A Sheep in Wolf’s Clothing – Finding RCE in HP’s Printer Fleet》

3768
来自专栏Seebug漏洞平台

披着狼皮的羊——寻找惠普多款打印机中的RCE漏洞

原文:https://foxglovesecurity.com/2017/11/20/a-sheep-in-wolfs-clothing-finding-rce...

1053
来自专栏上善若水

005工具及环境之nmap一览

Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 ...

1203
来自专栏比原链

剥开比原看代码08:比原的Dashboard是怎么做出来的?

Gitee地址:https://gitee.com/BytomBlockchain/bytom

2762
来自专栏用户画像

第23章 TCP基本原理

    TCP协议使用三次握手机制建立连接,其中被请求方在第二次握手时需应答的关键信息及其作用是(A)。

1233

扫码关注云+社区

领取腾讯云代金券