POF:更理想的SDN?

2016-03-12 by muzi

OpenFlow协议实现的SDN目前已经得到了应用和推广,但OpenFlow并不完美,OpeFlow交换机还不能提供更好的可编程能力。POF作为一种新的南向协议,是OpenFlow的未来方向?还是只是一个乌托邦?本文将介绍由华为提出的协议无关转发POF,其中包括其简介、原理、原型和应用场景以及最后的发展趋势,希望能带来一些有意思的想法。

简介

POF(Protocol Oblivious Forwarding)[1]是由华为提出的SDN南向协议,是一种SDN实现方式,中文意思为协议无关转发。与OpenFlow相似,在POF定义的架构中分为控制平面的POF控制器和和数据平面POF转发元件(Forwarding Element)。在POF架构中,POF交换机并没有协议的概念,它仅在POF控制器的指导下通过{offset, length}来定位数据、匹配并执行对应的操作,从而完成数据处理。此举使得交换机可以在不关心协议的情况下完成数据的处理,使得在支持新协议时无需对交换机进行升级或购买新设备,仅需通过控制器下发对应流表项即可,大大加快了网络创新的进程。

原理

读者可能会有疑问:OpenFlow所实现的SDN目前不是发展挺好的吗,POF相比OpenFlow有什么优点呢?

在OpenFlow1.0版本推出时,普遍被认为只有12个匹配域无法适应多网络场景的需求。但随着OpenFlow版本的推进,发展到OpenFlow1.3版本时已经有了40个匹配域,已经可以支持大部分的协议字段匹配。然而始终还会有更多的协议需要支持,所以这个增长趋势不会停止。不断增多的匹配域,使得OpenFlow协议越来越复杂,也使得OpenFlow交换机的设计与实现越来越复杂。而不稳定的协议内容让OpenFlow无法被广泛支持,因为设备厂家需要不断地开发新的交换机来支持新协议,而网络所有者如运营商也会担心协议版本不稳定带来的设备不兼容问题。

除此之外,OpenFlow实现的SDN还有两个明显的不足:首先,OpenFlow依然只能在现有交换机的转发逻辑上来添加对应流表项来指导数据包的转发,而无法对交换机的转发逻辑进行编程;其次,OpenFlow基本是无状态的,其无法维护网络状态并主动做出动作。这两个主要的缺陷将会带来如下的不良后果:

(1)目前OpenFlow所实现的数据平面和控制平面分离得不够彻底。数据平面的交换机设备依然需要掌握协议的语义信息等控制信息才能完成数据匹配。当交换机支持的协议增多时,支持特定协议的指令会大规模增长,从而增加了交换机的设计难度。

(2)在当前的交换机中,很难去对数据包进行修改或者增加一些辅助信息,更别说支持新的转发协议的运行测试了。所以目前的新协议在交换机不支持的情况下都是通过Overlay的形式来实现,这就必须对数据进行封装和解封装,这种实现方式即增加了数据解析的难度和压力,也带来了过长的报头,降低了数据传输效率。

(3)在给OpenFlow添加新协议特性时,需要重写控制器和交换机两端协议栈。而且在最麻烦的情况下,还需要重新设计交换机的芯片和硬件才能支持新特性。虽然最新版本的OpenFlow已经支持40多个匹配域,但这些匹配域大多是基于以太网的协议族的字段。还存在许多其他网络的协议,以及未来诞生的协议需要支持。所以每增加一个新的协议或者特性都会带来很多的开发量,增加了支持新协议的成本。而OpenFlow不稳定的协议版本,也增大了OpenFlow推广的难度。

(4)交换机目前匮乏的表达描述能力使得转发平面的可编程性受到很大的限制,最明显的一点就是交换机无法描述有状态的逻辑并主动采取动作。由于OpenFlow缺乏足够的能力去维持网络状态,所以OpenFlow交换机基本无法自主实现有状态的操作。与状态相关的信息均由控制器维护,交换机只能通过控制器来指导动作,而无法在满足条件时主动采取动作。这种完全需要控制器来指挥的机制让数据平面过度依赖控制平面,带来了SDN的可拓展性和性能问题。

针对以上的问题,华为提出了POF的解决方案。POF通过{offset, length}来定位数据,所有的协议相关的内容由控制器来描述,而交换机仅需通过通用的指令集完成数据操作即可,从而实现了协议无关转发。细心的读者应该发现协议的操作无非就是增加、修改和删除对应的字段/标签,而这些操作可以通过通用的指令集来实现,比如Addfiled就可以添加所有的字段,而具体的字段只有控制器了解,而交机机并不掌握这个信息。

POF的设计思想与PC的设计思想类似,所以其架构和PC的架构也类似,两者对比见图1。POF转发设备无需关心具体的协议语义,只需关心最底层的数据操作即可,正如CPU并不知道执行的运算是一个语音相关的运算,还是图片处理,它只知道执行了“+”操作。控制器正如PC中的操作系统一般,为上层业务提供丰富的业务接口,为下层提供通用的指令集,并完成两者的翻译工作。

pof
图1. POF与PC架构对比

通过使用通用指令集来实现协议无关转发的设计使得交换机拥有完全的可编程能力。控制器可以通过南向协议对交换机进行编程,包括数据转发引擎逻辑的编程以及数据流的处理规则的编程。另外,使用通用指令集的交换机很自然地就能互联互通。当网络中需要支持新的协议时,仅需通过控制器进行编程就可以实现,这大大缩短了网络创新周期。而对于运营商或者服务提供商而言,在添加新网络服务时不再需要联系厂商,也无需购买新的交换设备。

针对OpenFlow无状态的缺陷,POF设计了相关指令使得在条件满足时,交换机可以主动地创建、修改和删除流表等操作。在主动执行指令之后,交换机需要异步通知控制器发生的改变,从而实现数据的同步。笔者认为状态维护特性是POF设计中的精彩之处。因为目前OpenFlow几乎无法实现与状态相关的操作,而在网络安全等重要领域,维护网络状态是实现网络安全的必要手段。当然,为实现状态维护,必然需要付出一些性能代价或者成本代价。

原型与应用场景

为了验证POF的可行性,华为团队基于FloodLight开源控制器开发了POF控制器,其架构模块图如图2所示。在数据平面,分别基于华为硬件核心路由器和软件交换机实现了两个POF交换机模型用于验证POF的可行性,其功能架构如图3所示。

pof controller
图2. POF控制器架构模块图

pof fe
图3. POF硬件交换机(左),POF软件交换机(右)

在POF的论文中还介绍了转发性能测试的结果,其可以在40G的线卡测试中达到48Mpps的速率,虽然丢失了20%的性能,但是依然支持80-Bytes的线速转发。性能问题也许是POF存在的最大的技术问题之一。

由于POF支持协议无关转发,所以POF可以部署在任意的网络中,包括一些非以太网络。此外,POF的协议无关转发特性使得POF可以完美地支持Named Data Network (NDN)和Content-Centric Network (CCN) 等未来网络领域的研究。而POF支持有状态的网络使得交换机可以实现更多的智能,并应用于网络安全等领域。

发展趋势

为实现POF的平滑过渡,POF应满足OpenFlow兼容的需求。目前OpenFlow设备已经存在一些,如果能让POF成为OpenFlow的一种服务,则可以平滑地从OpenFlow过渡到POF。而转发设备方面的实现需要在现有的芯片上是支持POF的指令集,使POF的指令集作为一个方法去调用。之后才是将POF的指令集直接在ASIC上支持,从而换取更高的数据处理和转发性能。

作为一个理想的模型、一个开创式的技术,POF可以重新赋予SDN新的定义,带来具有完全编程能力的SDN。但是这个进程注定是艰难的。一个技术的发展,除了技术本身的技术缺陷以外,更多是收商业因素的左右。POF在技术方面的性能缺陷是一个问题,但是总可以通过不断地优化和产品迭代来提高性能,所以阻碍其发展的更多是来自商业方面的因素。POF带来的变革正如OpenFlow带来的变革一样,甚至更甚。OpenFlow使得控制平面和转发平面分离,交换机成为灰盒子或者白盒子,使得原有依靠专有技术的企业失去了技术壁垒,而这些拥有技术壁垒的企业基本都是行业的领头羊,当一项技术影响到领头羊的地位时,它必定是很难推广和发展的。企业不仅仅是推进技术的发展,让世界变得更好,更多的时候,他们还需要生存,而生存往往是最重要的。所以不难想象OpenFlow的推广并不顺利,而POF比OpenFlow有过之而无不及,所以同样可以想象POF的推广更加艰难。

POF的发展以及推广势必会打破现有的行业生态,而那些在目前生态中过得很好的领头羊自然不愿接受这个改变,而提出POF的华为司司目前在这个生态中也处于上游,POF的推广最终会让华为发展更好还是更差,这不得而知。目前看来,POF自发论文以来到没有很大的进展,但在与宋浩宇前辈的沟通中得知POF项目还在继续推进,今年年中将有产品推出,希望POF能带来一些不一样的改变。

历史的车轮总是前进的。目前不仅仅POF提出了这种想法,由OpenFlow发明者Nick教授的团队也提出了P4(Programming protocol-independent packet processors) [2]解决方案来解决目前OpenFlow的不足之处。POF和P4两者思路类似,但POF强调通用指令集实现协议无关转发,是偏硬件的解决思路,而P4则关注上层网络建模来定义交换设备转发逻辑,是更偏软件的解决思路。而无论哪一种解决方案,交换机将越来越开放,网络也会具有更好的可编程性。P4和POF都是OpenFlow未来有前景的发展方向之一。

笔者认为,随着技术的发展,POF技术方面的缺陷将得到解决,前提是华为继续推进POF的研发工作。随着技术问题的解决,成本的降低,作为网络设备购买方的服务提供商应该会更加倾向与采购更加SDN的设备。因为POF将带来可编程性能更好的SDN设备,从长远角度看,POF也降低了设备的采购成本和运营成本。如果P4和POF可以整合,在软件方案和硬件方案上相互弥补,会成为一个更加有前途的解决方案,而目前的POF确实也已经支持了P4。如果谷歌、微软等巨头加入之后,SDN的进程就会像NFV那样变成一个由网络拥有者而非设备商主导的技术革命?也许这样POF就可以改变未来的网络,实现真正具有完全可编程能力的SDN。

参考文献

[1] Song H. Protocol-oblivious forwarding: Unleash the power of SDN through a future-proof forwarding plane[C]//Proceedings of the second ACM SIGCOMM workshop on Hot topics in software defined networking. ACM, 2013: 127-132.

[2] Bosshart P, Daly D, Gibb G, et al. P4: Programming protocol-independent packet processors[J]. ACM SIGCOMM Computer Communication Review, 2014, 44(3): 87-95.

作者简介:

李呈,2014/09-至今,北京邮电大学信息与通信工程学院未来网络理论与应用实验室(FNL实验室)攻读硕士研究生。

个人博客:http://www.muzixing.com