基于标签的SDN控制逻辑更新策略研究
2016-12-26杨艳梅
杨艳梅 卢 菁
(上海理工大学光电信息与计算机工程学院 上海 200093)
基于标签的SDN控制逻辑更新策略研究
杨艳梅 卢 菁
(上海理工大学光电信息与计算机工程学院 上海 200093)
为减少控制逻辑更新导致的网络时延,改进基于标签的两阶段更新策略中的等待机制。改进后的机制中,控制器依次向新转发路径上的所有交换机安装新的控制逻辑,转发路径上的入口交换机为数据流打上标签(设置VLAN id),出口交换机去掉标签,中间交换机根据数据流是否设置了标签来决定是否发送packet_in。在Open vSwitch中实现了该机制,并通过Mininet仿真实验验证了该机制的可行性和有效性。
软件定义网络 控制逻辑更新 端到端时延 丢包 Open vSwitch
0 引 言
软件定义网络SDN[1],是一种新型网络创新架构,其核心思想是将网络设备控制平面与数据平面分离开来。数据平面只负责转发数据;控制平面向数据平面下发控制逻辑,同时又向业务平面(应用程序)提供API;业务平面通过这些接口来集中配置、管理网络设备。
目前基于OpenFlow的SDN 技术在数据中心等特定领域已有部署应用。然而 SDN 这种管控分离架构和OpenFlow协议本身都还不是很成熟,面临着许多还未解决的问题[1,2],如转发平面的设计问题、控制平面的可扩展性、控制逻辑的一致性等。本文针对控制逻辑的一致性这一问题进行研究。
在SDN中,为了实现路由切换、负载均衡、网络维护等,需要更新各交换机上的控制逻辑,并确保控制逻辑的一致性。该一致性包含三个方面:首先是一个应用业务产生的控制逻辑要一致,即确保多条控制逻辑之间不能冲突,而且要确定多条控制逻辑的更新顺序[3];其次是多个应用业务同时更新一个交换机的控制逻辑时,如何保证所有控制逻辑不冲突[4];再次是将一条控制逻辑更新到各个网络设备时,如何保证该控制逻辑在各网络设备上的一致性。本文将对最后一个问题进行研究。
1 相关研究
控制逻辑更新时,要保证数据流只能按照新的控制逻辑或者只能按照旧的控制逻辑来处理,而不能同时被新旧两种控制逻辑处理。这个一致性更新问题的成果主要有基于时间的更新和基于标签的两阶段更新。
文献[5]提出了一种基于平均时延的一致性解决方案。该方案中,SDN控制器维护网络拓扑和所有网络节点间的平均时延,然后根据时延计算出控制逻辑在各个交换机上的安装时刻以避免控制逻辑的不一致。文献[6]首先对所有交换机进行时钟同步;然后把控制逻辑依次下发到各交换机,同时告诉交换机加载该控制逻辑的时刻——在一条转发路径上,后面的交换机要比前面的交换机先加载。该机制被纳入最新的OpenFlow 1.5规范。
基于标签的两阶段更新[7]利用不同的VLAN标签来标识新旧两种控制逻辑。第一阶段将新的控制逻辑下发到除入口交换机以外的其他后续交换机。第二阶段是等第一阶段完成之后再把新的控制逻辑下发到入口交换机。入口交换机为新进入的数据流打上新的标签,后续交换机根据不同的标签而用新旧两种控制逻辑转发数据流,出口交换机再把标签去掉。等旧控制逻辑上的数据流都离开网络之后,删除旧的控制逻辑,至此完成整个更新操作。文献[8]为减少两阶段更新过程中新旧控制逻辑所占流表空间,用通配符标签对新旧控制逻辑进行合并。
OpenFlow协议[9]用TCP来确保发出的控制逻辑能到达对端,对控制逻辑的更新都是采用异步方式。当一条控制逻辑成功安装在交换机上时不会给SDN控制器返回确认消息,只有安装失败或冲突时才会返回错误报告消息。因此两阶段更新等待机制很难实现,只能维护最大网络时延,以及控制器和交换机之间的最大网络时延,等一定时间再做下一步操作[5];而这个最大时延的维护相对复杂。文献[6]需要同步交换机的时钟,可以解决第一个等待问题,但第二个等待还是没能很好解决。
减少两阶段更新中的第一个等待时间,可以更快地建立新的转发路径,交换机或控制器所需缓存的数据包也就越少,一定程度上可以减少端到端时延和丢包。为了尽快建立新的转发路径,本文对文献[7]的两阶段更新机制TPU(Two Phase Update)的等待机制进行了修改,提出一种改进的基于标签两阶段更新方案ETPU(Enhanced Two Phase Update)。
2 控制逻辑更新方案
图1为一校园网宿舍区拓扑图,从左到右依次为核心路由器、分流交换机、防火墙交换机、核心交换机、汇集交换机和接入交换机。为实现负载均衡,将一数据流的转发路径由S1->S3->S4->S5更新为S1->S3->S4->S6。
图1 网络拓扑图
首先,控制器为该数据流计算新的转发路径,同时将新的控制逻辑依次下发到所有交换机(按照S1->S3->S4->S6的顺序)。入口交换机(S1)为数据流执行PUSH操作,打上新的VLAN标签(如原VLAN id加1,VLAN id占12 Bit),出口交换机执行POP操作把VLAN标签去掉。新的数据包有可能在新的控制逻辑之前到达后续的交换机(如S3),该交换机根据匹配字段查找控制逻辑时将会失败,通常交换机会往控制器发Packet-In消息去请求控制逻辑。
这时对OpenFlow交换机的行为加以修改:如果查找失败的数据包中包含VLAN标签,则认为VLAN标签为控制器所设置,该数据包已经被控制器处理过,控制器已经为该数据包建立了转发路径。该交换机为转发路径上的一个节点,新的控制逻辑还没有到达该交换机,因此该交换机仅缓存数据包并等待新的控制逻辑,而不发送Packet-In消息;新的控制逻辑成功安装之后再根据新的控制逻辑来转发缓存的数据包。
其次,针对何时删除旧的控制逻辑这一问题,多数文献是等待一个网络时延之后由控制器发控制报文去删除。本文曾尝试获取各交换机基于控制逻辑所处理的数据包个数,然后进行比较,进而判断数据包是否已离开出口交换机。实验表明其在某些网络拓扑场景下可行,而有些场景下获取数据包个数的控制报文往返用时反而大于最大网络时延,而且网络负载重时丢包严重,仍需依靠超时机制。为此,本文也将采用等待一定时间之后由控制器依次发送控制报文去删除旧的控制逻辑的方法。不同的是等待时间变为从发完新控制逻辑开始等待最大网络时延加上控制器到新转发路径上初始交换机的时延。
Open vSwitch的实现分为用户空间进程和内核模块,如图2所示。内核模块维护一张精确匹配的快速转发表,根据该流表实现对数据包的快速处理。用户空间进程(ovs-vswitchd)接收控制器下发的控制逻辑,维护一张包含通配符的流表和一张精确匹配的慢路径转发表,并将该精确匹配的慢路径转发表映射到内核空间的快路径流表。
图2 Open vSwitch消息处理流程图
Open vSwitch对一个新的数据包的处理流程如下:
1) 从网卡收到一个数据包;
2) 内核空间函数ovs_dp_process_received_packet()(datapath/datapath.c),查找流表并执行相应action;
3) 若没匹配到控制逻辑,则通过netLinks将该数据包传到用户空间;
4) 用户空间的ovs-vswitchd调用handle_miss_upcalls()(ofproto/ofproto-dpif.c)对其进行处理,查找是否有与flow精确匹配的规则;
5) 如果不存在,则调用handle_flow_miss_common()向控制器发送packet_in;
6) 控制器向交换机中添加一条新的控制逻辑;
7) 将该规则同时保存到用户空间和内核空间的流表;
8) 发送缓存的数据包;
9) 查找流表并做相应操作;
10) 把数据包从相应的端口发出去。
本文的做法是在第4步和第5步之间加一步:检查数据包中是否设置了VLAN id。如设置则认为该数据包已经被控制器处理过,控制器已经为该数据流建立了转发路径。该交换机是转发路径上的一个节点,控制逻辑还没有到达该交换机,因此不再发送packet_in,而是把数据包缓存起来等待新的控制逻辑。如不存在VLAN id则表明是新的数据流,然后执行第5步。
3 仿真分析
为了验证本文方案的可行性,用Mininet网络仿真平台对该方案和文献[7]中的两阶段更新机制分别进行仿真实验,然后从控制逻辑更新时的网络时延和丢包个数这两个方面进行分析。
Mininet是一个极为轻量级的网络仿真平台,支持OpenFlow协议,可以通过OpenFlow协议连接外部的Open vSwitch和SDN控制器。本实验中,基于POX网络控制器来编写控制逻辑更新算法;基于Open vSwitch1.9版本的代码进行修改,在交换机中实现第2节中的机制。
仿真网络拓扑如图1所示,其中核心交换机(S5,S6)左边的所有链路参数设置为bw=10,delay=1 ms,max_queue_size=40,loss=0,其中带宽(bw)为10 Mbits/sec;核心交换机(S5,S6)右边的所有链路参数为bw=5,delay=2 ms,max_queue_size=20,loss=0。为了测时延和丢包个数,我们分别在H1、H2和控制器上用tcpdump来抓包,并用Linux网络性能测试工具iperf从H1发UDP包到H2。包的大小为1470 Bytes,发包速率为2 Mbits/sec,发包持续时间为10秒,每组执行10次取平均值。时延包括控制逻辑的更新周期和更新时影响到的包的平均时延,更新周期为从开始发新的控制逻辑到发完最后一条后删除旧控制逻辑为止;丢包个数为10秒内的丢包个数。文献[7]和本文的更新周期、端到端时延都受网络规模的影响,因此将用图1中的两种路径更新来分别比较更新周期和时延:P1=[S4,S5,S8,S10] 更新为P1′=[S4,S6,S8,S10];P2=[S1,S2,S4,S5,S8,S10]更新为P2′=[S1,S3,S4,S6,S8,S10]。
3.1 时 延
通过在交换机上抓包发现网络最大时延为8.1 ms(S1到S11),控制器到交换机的最大时延为7.1 ms(C到S11)。时延仿真结果如表1所示,其中前两行为控制器触发的更新时延,后两行为交换机触发的更新时延,单位为毫秒(ms)。
表1 ETPU和TPU更新周期及时延
控制器触发控制逻辑更新时,ETPU的更新周期为最大网络时延,而TPU的更新周期需要加上控制器到交换机的最大网络时延。在图1的网络拓扑下,本文方案的更新机制对数据包传输几乎没有影响,只比稳定状态下多了0.1 ms。这是因为更新操作是由控制器触发的,没有packet_in的延时。P1->P1'时,新的规则到达S4时,发往后续交换机的控制逻辑更新报文也到达了S4,所以S4几乎同时转发出去数据包和控制报文,后续交换机也是如此;P2->P2'时,后续交换机先于S1安装好新的控制逻辑,所以不存在额外的时延。TPU的端到端时延也不受影响,因为它是先在后续交换机上更新好新的控制逻辑。这时并不可转发新的数据包,只有当入口交换机安装了新的控制逻辑之后才会有新的数据流被转发。
当链路故障,比如把链路状态设为down,由交换机触发控制逻辑更新时,ETPU的更新周期和控制器触发的更新相比则多了将控制逻辑下发到初始交换机的时延,因为是从收到packet_in开始计算;TPU的更新周期不变。ETPU中数据流的端到端时延和控制器触发的更新相比多了packet_in的时延和初始交换机安装新控制逻辑的时延;而TPU则增加了packet_in的时延、初始交换机安装新控制逻辑的时延和控制器到交换机的最大网络时延。ETPU比TPU少了控制器到交换机的最大网络时延。
3.2 丢 包
控制器触发的控制逻辑更新不影响网络的时延和丢包,因此只比较交换机触发的更新对丢包的影响。iperf的发包速率分别为2 Mbits/sec和5 Mbits/sec,10秒钟发包的总数分别为1701和4250个。同样采用上述两种路径更新,其结果如表2所示。更新前后两种机制下数据包的传输都是一样的,所以两种机制下丢包个数的差别主要是控制逻辑更新过程的不同所致。可以看出,iperf发包慢时,两者差别不大;但当发包速率较大、网络负载较重时,交换机要缓存的数据包个数也较多;同时由于TP建立好新转发路径用时较长,所以丢包个数也较多。
表2 ETPU和TPU的丢包个数
4 结 语
SDN中控制逻辑的更新通常需要更新转发路径上的多个交换机,本文提出的ETPU能有效缩短由交换机触发的新建转发路径所用时间,降低控制逻辑更新对数据包转发的影响,即降低端到端时延和丢包率。仿真实验结果表明,当网络负载重时,ETPU效果更加明显。本文机制不仅适用于控制逻辑更新,同样也适用于为数据流建立初始转发路径。缺点是需要用一个标志位(本文用VLAN id)来标识数据流是否已经被控制器处理过,入口交换机设置该标志位,出口交换机再将其去掉。虽有失通用性,但实现简单有效。
[1] 张朝昆,崔勇,唐翯祎,等.软件定义网络(SDN)进展研究[J].软件学报,2015,26(1):62-81.
[2] Nunes B A A,Mendonca M,Nguyen X N,et al.A survey of software-defined networking:Past,present,and future of programmable networks[J].IEEE Communications Surveys and Tutorials,2014,16(3):1617-1634.
[3] Xin Jin,Hongqiang Harry Liu,Rohan Gandhi,et al.Dynamic scheduling of network updates[C]//Proceedings of the 2014 ACM conference on SIGCOMM,2014:539-550.
[4] Canini M,Kuznetsov P,Levin D,et al.Software transactional networking:Concurrent and consistent policy composition[C]//Proceedings of the 2nd ACM SIGCOMM Workshop on Hot Topics Software Defined Network,2013:1-6.
[5] 宋海权,郭进,侯孟书,等.基于网络时延的SDN逻辑一致性策略研究[J].电子科技大学学报,2014,43(5):730-735.
[6] Mizrahi T,Saat E,Moses Y.Timed consistent network updates[C]//ACM SIGCOMM Symposium on SDN Research (SOSR),2015:326-339.
[7] Mark Reitblatt,Nate Foster,Jennifer Rexford,et al.Abstractions for network update[C]//Proceedings of the ACM SIGCOMM 2012 conference on Applications,technologies,architectures, and protocols for computer communication,2012:323-334.
[8] Luo Shouxi,Yu Hongfang,Li Lemin.Consistency is Not Easy:How to Use Two-phase Update for Wildcard Rules[J].IEEE Communications Letters,2015,19(3):347-350.
[9] Open Networking Foundation(ONF).Openflow switch specification,version 1.5.0[EB/OL].[2014-12-19].https://www.opennetworking.org/.
RESEARCH ON LABEL-BASED SDN CONTROL LOGIC UPDATE POLICY
Yang Yanmei Lu Jing
(SchoolofOptical-ElectricalandComputerEngineering,UniversityofShanghaiforScienceandTechnology,Shanghai200093,China)
To reduce the end-to-end network delay caused by control logic update, we improved the waiting mechanism of label-based two-phase update policy. In the improved mechanism, the controller installs new control logic to all switches in new forwarding path in turn, the ingress switches on forwarding path label the data flow (setting VLAN id); the egress switches remove the label; and the middle switches, according to whether the labels are set on data flow, decide to send packet_in to controller or not. This scheme has been implemented in Open vSwitch, and has been verified through Mininet simulation experiment its feasibility and effectiveness.
Software defined network Control logic update End-to-end network delay Packet loss Open vSwitch
2015-09-01。杨艳梅,实验师,主研领域:无线自组网络,软件定义网络。卢菁,讲师。
TP393.0
A
10.3969/j.issn.1000-386x.2016.11.023