《云数据中心网络与SDN:技术架构与实现》—— 2.3 网络可编程——百家争鸣

举报
华章计算机 发表于 2019/06/06 14:12:05 2019/06/06
【摘要】 本书摘自《云数据中心网络与SDN: 技术架构与实现》——书中第2章,第2.3.1节,作者是张晨。

2.3 网络可编程——百家争鸣

可编程是SDN最基本的特征,从某种意义上讲,提供了可编程能力的网络都可以归为广义SDN。可编程能力可以体现在很多的层次上,从下往上说,有芯片可编程、FIB可编程、RIB可编程、设备OS可编程、设备配置可编程、控制器可编程和业务可编程。业界不同方面对于SDN的理解不同,因此不同厂家提供的SDN的开放能力也存在很大的差异。

可编程离不开接口和协议,本节会涉及许多与SDN相关的主流接口或者协议。大多数协议的技术细节复杂而艰深,笔者没有能力通过一节的内容使读者了解它们的技术细节,而这也并不是本书的初衷,仅希望能够帮助读者对各协议技术背后的东西有所了解,也希望给读者解释清楚业界对于这些技术的一些普遍误解。

2.3.1 芯片可编程

芯片可编程可以说是最为彻底的SDN,未来有可能从根本上变革传统数通网络的思维。我们知道数通网络的基础是payload前面各种各样包头的使用,不同的包头往往用于不同的业务,每当有了一个新的网络需求,厂家就在IETF提草案来规划包头字段,再用一套新的协议来规范其控制逻辑。思路想得差不多了,软件上就开始开发新的协议,硬件上就重新设计电路,然后流片再到量产投入商用。这个过程是很漫长的,没有两到三年是做不下来的,除了巨大的人力投入以外,通常还伴有一些天价的授权成本,而且每设计一个新的包头,这样的工作就要重来一次。经过二三十年的积累,包头和协议多到令人眼花,彼此之间的关系错综复杂,增加新东西要付出的代价也越来越高。


1. P4

芯片可编程的代表技术是Nick McKeown教授提出并推动的P4,被学界寄希望于成为OpenFlow 2.0。相比于OpenFlow,P4可以提供对新包头的自定义能力,要求芯片的解析器、匹配字段、处理动作以及流水线是完全可编程的。通过编写P4程序,可以定义包头字段的解析方式、匹配表的数据结构、匹配后的处理动作以及规范各级表间的走向关系。准确地说,P4是一种支持设备可重构的编程语言,使得新的网络需求的实现不用再等待上述漫长的过程。不过,需要明确的是,P4仅仅是一种语言,最终数据包的处理还是要实打实地落到芯片上去,所以为了使P4程序的重构逻辑能够实际部署下去,还需要通过编译器将其转化为芯片的控制逻辑,不同的芯片需要不同的P4编译器。P4是可以运行在CPU/NP/FPGA等不同的芯片架构上,不过CPU/NP/FPGA相比于ASIC,都有着不同程度的性能损失,因此Nick和他的团队提出了协议无关的交换机架构(Protocol Independent Switch Architecture,PISA),宣称可以在兼顾到现有CPU/NP/FPGA灵活性的同时,达到甚至超过现有ASIC的性能。

Nick教授作为公认的SDN之父,他对于SDN的理解显然是要远远地领先于这个时代的。业界目前对OpenFlow仍然是以观望为主,ONF为了OpenFlow的顺利落地提出了TTP(Table Type Pattern,可理解为基于特定硬件的流表),通过增加一个编译层来弥补OpenFlow与现有ASIC架构之间的鸿沟。而Nick的理想显然不在于此,P4实际上只是一个生态上的产物,是“醉翁之酒”,而PISA才是最终的“山水之间”。在OpenFlow命运的十字路口上,TTP向右而P4向左。不过,任何事情追求单方面的极致都会出问题的,性能和灵活性都是需要付出成本的,业界多少年的思路都是用硬件解决性能,用软件解决灵活性。如果PISA真能实现其技术理想,P4再慢慢把生态做起来,网络行业或许真的就要到变天的时候了,不过从目前来看,仍然是向右走是主流的路线。

2. POF

除了P4以外,华为提出的POF也可以看作芯片级的可编程。前面也提到了,CPU/NP/FPGA这些可编程的硬件都可以用来做网络重构,其中CPU和FPGA在性能上的缺点是比较明显的,而NP可以在性能和灵活性间达到一个较为平衡的折中。实际上,业界对于NP的使用已经相当广泛了,在一些核心高端的路由器、防火墙里面经常可以见到NP的影子。NP的可编程能力很强,做到协议无关没有任何问题,但是由于微码的开发门槛过高,即便是开放出来也很难用。于是,POF把华为的NP微码中与协议解析相关的逻辑抽象出来,将其扩展到了OpenFlow中,使得控制器可以基于“偏移量+长度”的方式来自定义新的字段以及制定相应的转发规则。这些规则通过OpenFlow下发给交换机,然后由交换机本地转微码部署到NP当中,从而满足新的网络需求。POF和P4的区别在于:POF依赖的是NP原有的一部分能力,然后为其进行了进一步的抽象,提供的是一种“支持协议无关的OpenFlow”;而P4是一种高级语言,不依赖于任何芯片,旨在“转发通道级别的全面抽

象”。相比于P4更多的理想主义色彩,POF要更加务实一些,或者说是“用新瓶装了旧酒”。不过对于华为来说,盒子的市场仍然在提升,开放芯片并没有实际的商业驱动力,因此POF提出后华为也没有花大力气去推。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。