面向协议无感知转发技术的SDN试验床①
2016-06-15谈小冬邹山郭浩然田野中国科学技术大学计算机科学与技术学院合肥230027
谈小冬,邹山,郭浩然,田野(中国科学技术大学 计算机科学与技术学院,合肥 230027)
面向协议无感知转发技术的SDN试验床①
谈小冬,邹山,郭浩然,田野
(中国科学技术大学 计算机科学与技术学院,合肥 230027)
摘 要:基于OpenFlow的软件定义网络(SDN)中的转发设备不便于支持新协议的转发,因此协议无感知转发(Protocol Oblivious Forwarding,POF)技术被提出.本文基于POF技术和OpenFlow控制器POX,设计并实现了一种支持POF技术的SDN控制器,POF控制器可以充分利用POF转发设备并且体现了SDN的可编程性.同时,我们基于POF控制器搭建了POF试验床,实验结果表明POF控制器能够有效地管理POF网络,并提供高效的控制功能.
关键词:软件定义网络; OpenFlow; 协议无感知转发; 试验床
软件定义网络(Software Defined Networking,SDN)是将控制平面与转发平面分离并直接可编程的网络架构[1],它的思路是: 将传统网络设备的数据转发和路由控制两个功能模块相分离,通过集中式的控制器以标准化的接口对各种网络设备进行管理和配置.
OpenFlow是由斯坦福大学提出的可用于SDN中的核心技术[2],它已逐渐成为SDN中的控制器与网络设备通信协议的标准.然而,基于OpenFlow的SDN只能支持现有的数据报文协议转发,不能支持新的协议,若需要支持新协议,设备制造商需要修改设备代码.所以为了支持更多的新协议,OpenFlow协议变得越来越复杂.
开放网路基金会(Open Networking Foundation,ONF)在中提出了协议独立转发层和协议独立转发(Protocol Independent Forwarding,PIF)[3],并在白皮书中提出使用P4[4]和协议无感知转发技术(Protocol-Oblivious Forwarding,POF)[5]两种方案互补的方式来解决协议独立转发的问题.POF技术定义了底层的原始指令集,P4需要来编写和编译使用POF指令集的数据包处理程序.
POF技术是由华为公司提出的SDN转发平面的一项创新技术,即转发硬件设备对数据报文协议和处理转发流程没有感知,网络行为完全由控制面负责定义.POF技术可以作为对ONF OpenFlow协议的增强,支持任意转发协议和分组数据格式,使SDN的控制平面和转发平面分离更加彻底.目前,华为公司只发布了支持POF技术的交换机和控制器的Linux版本代码[6],但是华为提供的POF控制器只能手工配置网络设备的流表,不支持编程模型,而SDN最大的特色就是可编程性.所以本文中,我们在POX控制器[7]的基础上,提出了一个新的支持POF技术的SDN控制器.同时,我们利用新的POF控制器和POF软交换机搭建了第一个POF试验床,并进行了相关的功能和性能测试.
本文余下的内容安排为: 第2节介绍我们开发POF控制器的工作; 第3节展示了在POF试验床上的相应测试工作; 第4节总结我们的工作,并说明后续工作的安排.
1 POF控制器
1.1基于POF的SDN架构
基于POF的SDN架构如图1所示,类似于基于OpenFlow的SDN机构.POF控制器中包括通信引擎、拓扑发现、最小生成树、MAC地址学习等模块,控制器通过扩展的OpenFlow协议下发流表来控制POF交换机的转发行为.在设计POF控制器时,我们借助了POX控制器的编程模型和基础结构.同时,我们利用POF控制器和POF软交换机搭建了第一个POF试验床并进行测试.
图1 基于POF的SDN架构
1.2通信引擎
POF控制器与POF交换机通信主要是通过消息的交互,这些消息可以是控制器与交换机建立连接、向POF交换机下发流表、改变POF交换机的状态等.通信引擎模块主要功能是实现这些消息的数据结构、封装收发和解析处理,是整个控制器框架的基本模块,也是我们设计过程中的关键之处.我们根据POF技术设计和定义基本的消息类型,消息的解析过程以及异常处理过程.
1.3拓扑发现
拓扑发现模块实现了在POF网络中发现POF交换机间(本文假设POF网络中所有的网络设备都支持POF技术)的网络拓扑信息的功能,主要使用了LLDP(Link Layer Discovery Protocol,链路层发现协议)[8]作为链路发现协议.LLDP协议是一种邻居发现协议,它提供了一种标准的链路发现方式,可以将本端设备的主要能力、管理地址、设备标识、接口标识等信息表示成不同的TLV(Type/Length/Value,类型/长度/值)形式,并封装在LLDPDU(链路层发现协议数据单元)中,封装有LLDPDU的报文称为LLDP报文,报文中包含了特定的组播、目的MAC地址,以及特定的以太网类型,可以将LLDP数据包与其他MAC数据帧区分.POF控制器进行链路发现的过程如图2所示.
图2 POF交换机间的链路发现示意图
当POF交换机连接POF控制器时,POF控制器会发送一个包含LLDP数据包的PACKET_OUT的消息给该交换机,该消息使POF交换机通过所有自身端口发送LLDP数据包.当POF交换机收到邻居POF交换机发送的LLDP数据包时,由于POF交换机初始时并没有专门的流表项用于处理LLDP数据包,所以它会通过一个PACKET_IN消息将LLDP数据包发送给POF控制器.POF控制器在收到PACKET_IN消息时,通过解析消息和LLDP数据从而发现两台POF交换机间的链路信息.网络中其他POF交换机也都采用相同的方式发现与邻居POF交换机间的链路,因此POF控制器通过拓扑发现模块能够发现完整的网路拓扑图.
1.4生成树协议
如果基于POF的SDN网络拓扑中存在回路时可能会产生网络风暴,最小生成树模块能有效地防止了网络中回路的出现,避免了由于帧的无限循环和重复接收所导致网络风暴的发生.该模块的实现需要拓扑发现模块探测的网络拓扑信息,实现算法如下:
由拓扑发现模块得到所有连接POF控制器POF交换机的集合switches和POF交换机间的链路关系tree_dict,并用done保存已遍历的POF交换机,用tree_port保存生成树里的端口.按序遍历switches里的每个POF交换机,将该交换机保存到done中,若tree_dict中存在该POF交换机与另一POF交换机间的链路,则将另一交换机和存在的链路两端端口加入到tree_port中.最后,done中已包含所有POF交换机时,将tree_port中对应的端口开启洪泛功能.
1.5MAC地址学习
MAC地址学习模块是通过维持MAC地址表来保存MAC地址和端口的映射关系,实现MAC地址学习功能.如果网络拓扑中存在回路,则需要启动最小生成树模块打破环路,避免广播风暴.MAC地址学习模块的实现算法如下:
当POF交换机收到数据包时,首先根据输入端口p和源MAC地址src_mac更新MAC地址表mac_dict,如果数据包是LLDP类型或目的MAC地址dst_mac 是Bridge Filtered地址,则丢弃数据包; 如果dst_mac是广播地址或者mac_dict中没有dst_mac对应的键值(即输出端口)时,则广播该数据包; 如果mac_dict中有dst_mac对应的输出端口是p,则丢弃数据包,否则将收到数据包转发到合适端口并安装相应的转发流表.
2 POF试验床
基于我们实现的POF控制器和POF交换机,我们搭建了第一个POF试验床,如图3所示.其中,8台POF交换机通过以太网交换机连接,POF控制器也与以太网交换机连接.POF控制器运行在一个配置为酷睿i7,1T硬盘和1G内存的主机上,POF交换机运行在10个千兆网口的主机上,如图4所示.同时,我们也对我们的试验床进行了相应测试.
图3 POF试验床
图4 安装POF交换机的10网口主机
2.1性能分析
吞吐量和时延是网络性能的重要衡量指标.这里,我们通过对POF交换机进行了简单的修改,以统计POF控制器每秒中能够下发流表的数量.经过我们测量统计,我们得到了POF控制器下发流表的速率和POF交换机建立一个流表的平均时间,并与POX控制器进行了比较,如表1所示.由结果可知,POF控制器的性能是可观的,基本达到了与POX控制器一致的性能.
表1 流表下发速率与建立流表的平均时间
2.2拓扑发现
为了测试POF试验床的功能,我们运行拓扑发现模块来展示.这里,我们借用第三方工具poxdesk[9]来显示我们的测试结果,如图5所示.图中每个节点代表一个POF交换机,与图3对比可知,我们通过POF控制器的拓扑发现的模块得到的网络拓扑与我们试验床的拓扑一致.
图5 网络拓扑图
2.3生成树协议
POF技术对转发的数据包协议无感知,能支持任何协议的数据包转发.我们通过工具Ostinato[10]组建并发送自定义数据包来测试试验床的性能.我们设置自定义数据包的类型为0x0988,TTL字段值为10.同时,在POF控制器端运行MAC地址学习模块.当数据包到达POF交换机时,交换机在转发前会通过相应流表操作将TTL值会减1,当TTL值为0或者数据包到达目的交换机时数据包将不会转发.我们在PC_1向PC_2连续发送50个自定义数据包,并在相应链路上的POF交换机用wireshark抓包分析.
在表2中,我们统计比较是否运行生成树协议模块这两种情景下POF交换机上经过的数据包数量: 当没有运行生成树协议模块时,POF交换机PS_04和PS_05上转发的数据包数量是运行生成树协议模块时的6倍,PS_01、PS_03和PS_06上是运行生成树协议模块的5倍.因此,该模块可有效减少冗余传输,有效地提高网络的稳定性.
表2 POF交换机转发数据包的数量
3 总结
本文基于POF技术设计并实现了POF控制器,主要包括通信引擎、拓扑发现、最小生成树、MAC地址学习等模块.在此基础上,我们利用新的POF控制器和POF交换机搭建了基于POF的SDN试验床,证实了我们的POF控制器具有良好的特性和一定的灵活性和扩展性.我们的工作为POF技术的研究提供了很好地思路,极大的体现了SDN的可编程性这一特点.但是,POF控制器的功能和性能亟待丰富提升,下一步的工作我们将修改Mininet平台使其支持POF技术,并进行不同规模的仿真实验.同时我们将考虑POF控制器的并行化[11]以及性能提升,以及将POF软交换机移植到OpenWRT[12]系统中以便于支持无线接入技术.
参考文献
1Casado M,Freedman MJ,Pettit J,Luo J,McKeown N,Shenker S.Ethane: taking control of the enterprise.ACM SIGCOMM Computer Communication Review,2007,37(4): 1–12.
2McKeown N,Anderson T,Balakrishnan H,Parulkar G,Peterson L,Rexford J,Shenker S,Turner J.OpenFlow: Enabling Innovation in Campus Networks.ACM SIGCOMM Computer Communication Review,2008,38(2): 69–74.
3PIF.https://www.opennetworking.org/protocol-independentforwarding.
4Bossharty P,Daly D,Gibb G,et al.P4: Programming protocol-independent packet processors,ACM SIGCOMM Computer Communication Review,2014,44(3): 87–95.
5Song H.Protocol-Oblivious forwarding: Unleash the power of SDN through a future-proof forwarding plane.ACM SIGCOMM Workshop on HotSDN.2013.127–132.
6Huawei’s POF Controller and switch.http://www.poforwarding.org/vdownload/.
7POX.http://www.noxrepo.org/pox/about-pox/.
8LLDP.http://en.wikipedia.org/wiki/Link_Layer_Discovery_ Protocol.
9Poxdesk.https://github.com/MurphyMc/poxdesk/wiki/Getting-Started.
10Ostinato.https://code.google.com/p/ostinato/wiki/UserGuide
11Cai Z,Cox AL,Ng TSE.Maestro: A system for scalable OpenFlow control[Technical Report],TR10-08,Rice University,2010.
12OpenWRT.http://www.openwrt.org.cn.
SDN Testbed for Protocol Oblivious Forwarding
TAN Xiao-Dong,ZOU Shan,GUO Hao-Ran,TIAN Ye
(School of Computer Science and Technology,University of Science and Technology of China,Hefei 230027,China)
Abstract:The OpenFlow-based software-defined Networking could not easily support forwarding of the new protocols,thus Protocol-Oblivious Forwarding technology is proposed.On the basis of POF technology and OpenFlow controller POX,this paper designs and implements the controller which supports POF technology,employs the full potentials of POF devices and reflects the programmability of SDN.Meanwhile,we construct a network testbed based on POF controller,and experimentally illustrate that POF controller can effectively manage the POF network and provide the controlling functionality with high performances.
Key words:software-defined networking; OpenFlow; protocol oblivious forwarding; testbed
基金项目:①国家自然科学基金(61202405);中国科学院先导专项子课题(XDA06011202)
收稿时间:2015-07-30;收到修改稿时间:2015-10-09