转发技术风雨三十年,你经历过……

三、 继往开来


在美国硅谷心脏地带的101公路旁有一个巨幅广告,只有学习过高等数学的人才能看懂那是一道复杂的数学题。一些好奇的人解开难题,答案是一个网址。登陆网站后,会看到一系列难度递增的数学题,最终,7500人来到了数学迷宫的出口,看到的是谷歌公司的招聘广告。在这个看似游戏的谜题前,能走到最后的人,已经让谷歌甄别了非功利的兴趣,以及兑现这种兴趣的执着和到达目的地的智慧。谷歌用一道道别出心裁的谜题招呼着天下英杰。

进入新世纪第二个十年,全世界最风光的无疑是苹果和谷歌两家公司,在雅虎关闭邮箱服务、诺基亚手机宣布死亡、IBM转售服务器PC业务之际,这两家公司却让全世界为他们打工,过着皇帝般的日子。从搜索引擎到谷歌地图,从android系统到谷歌眼镜,从无人驾驶到热气球计划,谷歌每天都在吸引着全世界的眼球,它的创新无疑超越了其他所有人。

谷歌成功的背后是凝聚着先进技术的的基础设施、遍布全球的数据中心、数以万计的计算节点、存储节点、网络节点。2010年的时候投入运营的数据中心已经有36个,遍布美国、欧洲以及亚洲,最近几年在台湾、马来西亚、新加坡、印度以及美国本土都有新的数据中心投资建设。每个数据中心的规模至少都数十万台服务器上千台交换机,一个大型数据中心就相当于八十年整个Internet的规模。谷歌要保证分布在全球的数据中心之间高速互联,从用户使用谷歌服务的角度上不区分节点的物理位置。为了实现不同地域数据中心之间数据的同步、灾备,需要极大的广域网带宽,而这恰恰是最花钱的地方;网络流量有高峰和低谷,高峰流量可达平均流量的2~3倍,广域网带宽利用率只有30~40%,所以尽管谷歌自建了大量的光纤传输,但流量带宽的巨大浪费仍旧让谷歌心痛。

谷歌的工程师们观察到数据中心中的流量具有不同优先级:

  • 用户数据拷贝到远程数据中心,以保证数据可用性和持久性,这个数据量最小,对延迟最敏感,优先级最高;
  • 远程存储访问进行 MapReduce 之类的分布式计算;
  • 大规模数据同步,以同步多个数据中心之间的状态,这个流量最大,对延迟不敏感,优先级最低。
  • 谷歌发现高优先级流量仅占总流量的10%~15%,只要能区分出高优先级和低优先级流量,保证高优先级流量以低延迟到达,让低优先级流量把空余流量挤满,数据中心的广域网连接(WAN link)就能达到接近100%的利用率。要做到这个,需要几方面的配合:
  • 应用(Application)需要提前预估所需要的带宽,由于数据中心是谷歌自家的,各种服务所需的带宽都可以预估出来;
  • 低优先级应用需要容忍高延迟和丢包,并根据可用带宽自适应发送速度;
  • 需要一个中心控制系统来分配带宽。

就这样,谷歌引入了Software Defined Networking (SDN)/OpenFlow,SDN把分散自主的路由控制集中起来,OpenFlow交换机按照Controller指定的规则对packet进行匹配,并执行相应动作。这样,Controller 就可以利用整个网络的拓扑信息和来自application的需求信息计算出一组接近全局最优的路由规则。谷歌已经看到该网络带来的一些好处包括:网络带宽利用率大大提高(谷歌宣称平均带宽利用率可达95%),网络更稳定,管理简化了,Cost降低了。

关于谷歌的数据中心,谷歌关于SDN的优秀实践,可以上度娘和谷歌进行查找和学习,下面我们再聚焦到SDN/OpenFlow上来。

IP网络经过几十年的发展,尤其是刚刚过去的健康理性发展的黄金十年,似乎已经完美了,这个时候有人又坐不住了,心里痒痒想对IP进行革命,他们就是斯坦福大学的一帮老鸟。让我们先回顾下SDN发展大事记:

  • 2006年,SDN诞生于美国GENI项目资助的斯坦福大学Clean Slate课题,斯坦福大学Nick McKeown教授为首的研究团队提出了Openflow的概念用于校园网络的试验创新,后续基于Openflow给网络带来可编程的特性,SDN的概念应运而生。Clean Slate项目的最终目的是要重新发明英特网,旨在改变设计已略显不合时宜,且难以进化发展的现有网络基础架构
  • 2008年Nick McKeown提出OpenFlow的概念,发表《OpenFlow: Enabling Innovation in Campus Networks》,详细介绍了OpenFlow概念。2009年SDN概念入围Technology Review年度十大前沿技术,获得了学术界和工业界的广泛认可和大力支持。
  • 2009年12月,OpenFlow规范发布1.0版本,随后经历了1.1、1.2、1.3以及1.4版本。
  • 2011年3月开放网络基金会ONF成立,致力于推动SDN架构、技术的规范和发展工作。ONF成员96家,其中创建该组织的核心会员有7家,分别是Google、Facebook、NTT、、Verizon、德国电信、微软、雅虎。
  • 2012年4月,ONF发布了SDN白皮书(Software Defined Networking:The New Norm for Networks),其中的SDN三层模型获得了业界广泛认同。
  • 2012年4月,谷歌宣布其主干网络已经全面运行在OpenFlow上,并且通过10G网络链接分布在全球各地的12个数据中心,使广域线路的利用率从30%提升到接近饱和。
  • 2012年7月SDN先驱Nicira以12.6亿被VMware收购。
  • 2012年底,AT&T、英国电信(BT)、德国电信、Orange、意大利电信、西班牙电信公司和Verizon联合发起成立了网络功能虚拟化产业联盟(Network Functions Virtualisation,NFV),旨在将SDN的理念引入电信业。由52家网络运营商、电信设备供应商、IT设备供应商以及技术供应商组建。
  • 2013年4月,思科和IBM联合微软、Big Switch、博科、思杰、戴尔、爱立信、富士通、英特尔、瞻博网络、NEC、惠普、红帽和VMware等发起成立了Open Daylight,与LINUX基金会合作,开发SDN控制器、南向/北向API等软件,旨在打破大厂商对网络硬件的垄断,驱动网络技术创新力,使网络管理更容易、更廉价。

将原来网络设备盒子中的控制分离出来集中到Controller,以及基于流表的交换机取代原来各种路由器交换设备,是SDN/OpenFlow最核心的两个点。

OpenFlow提出的最初出发点是用于校园内网络研究人员实验其创新网络架构、协议,考虑到实际的网络创新思想需要在实际网络上才能更好地验证,而研究人员又无法修改在网的网络设备,故而提出了OpenFlow的控制转发分离架构,将控制逻辑从网络设备盒子中引出来,研究者可以对其进行任意的编程从而实现新型的网络协议、拓扑架构而无需改动网络设备本身。至于集中控制代替原来的分散控制全网(或局部)协调,是否一定有优势?至今也没有明确的结论,不过凭经验,应该是每种方案都适合特定的场合,最终可能是两种共存,看怎么融合了。

OpenFlow交换机的思路很简单,网络设备维护一个FlowTable并且只按照FlowTable进行转发,FlowTable本身的生成、维护、下发完全由外置的Controller来实现,注意这里的FlowTable并非是指IP五元组,事实上OpenFlow 1.0定义的了包括端口号、VLAN、L2/L3/L4信息的10个关键字,但是每个字段都是可以通配的,网络的运营商可以决定使用何种粒度的流,比如运营商只需要根据目的IP进行路由,那么流表中就可以只有目的IP字段是有效的,其它全为通配。这种控制和转发分离的架构对于L2交换设备而言,意味着MAC地址的学习由Controller来实现,V-LAN和基本的L3路由配置也由Controller下发给交换机。对于L3设备,各类IGP/EGP路由运行在Controller之上,Controller根据需要下发给相应的路由器。流表的下发可以是主动的,也可以是被动的,主动模式下,Controller将自己收集的流表信息主动下发给网络设备,随后网络设备可以直接根据流表进行转发;被动模式是指网络设备收到一个报文没有匹配的FlowTable记录时,将该报文转发给Controller,由后者进行决策该如何转发,并下发相应的流表。被动模式的好处是网络设备无需维护全部的流表,只有当实际的流量产生时才向Controller获取流表记录并存储,当老化定时器超时后可以删除相应的流表,故可以大大节省TCAM空间。OpenFlow 1.0的流表分为Match Fields、计数器和指令集三个部分,Match Fields是报文匹配的输入关键字,计数器是管理所需,指令集是决定报文如何转发,最基本的转发行为包括转发给某个端口、封装改写报文后转发以及丢弃。OpenFlow 1.1增加了对MPLS以及UDP/SCTP传输层协议的支持,同时针对流表开销过大的情况设计了多级流表,并增加分组策略功能。

OpenFlow标准最大的好处是将数据面的交换机行为进行了统一,如果推动整个产业链的话,硬件成本将大幅下降。但问题是,这一过程将异常的艰难,先不谈利益既得者会想尽一切办法阻止这一进程外,单从技术上看也是困难重重。

首先是路由器/交换机中广为使用的快速查找TCAM 存储器成本的问题。在传统设备中,需要采用TCAM的表包括FIB、MAC、MPLS Lable和ACL表,每个表的匹配字段长度不一,分开设计,并且设计了最大容量,以期达到最小的开销。而在OpenFlow设备中,不再区分匹配长度短的FIB、MAC、MPLS Lable表以及较长的ACL表,一律采用最大长度的FlowTable记录代替,对于OpenFlow1.0而言,FlowTable的匹配字段长度长达252比特,而一般IPV4 RIB TCAM匹配字段长度只有60-80个比特,开销增加了3倍以上,而对于路由器的线卡而言,TCAM成本占了约20-30%,功耗也占了很大一部分。因此如何减少FlowTable尺寸将是OpenFlow体系面临的一个极大问题,此外,TCAM体系下FlowTable记录的动态插入算法将更为复杂。

OpenFlow1.1设计了多级流表来减少Flowtable的开销,将流表进行特征提取,分解成多个步骤,形成流水线处理形式,从而降低总的流表记录条数,比如原始流表共有10000条,分解成先匹配VLAN+MAC,再匹配IP和传输层头部的两个独立流表,每个流表的数量可能均小于1000条,使得流表总数小于2000条。但流水线式架构使得匹配时延增加,在软件实现的转发模型中整体吞吐量必然下降;而且流量的生成、维护算法复杂度提高,至今也未见到针对真实网络的效果评估报告。

OpenFlow的关键是通过OpenFlow将网络转发的原子操作抽象出来,并以流表来驱动转发处理流程,我们所论述的一切好处是建立在OpenFlow FlowTable能够很好地将Primitive和WorkFlow抽象,支持设计新的协议在大部分情况下的确可以通过只修改Controller的逻辑来实现这一假定上。在OpenFlow最初应用的Switch领域,OpenFlow已经有杀鸡用牛刀的嫌疑。但是路由网络,尤其是包含有大量用户控制逻辑的边界路由器,如BRAS、无线网络的GGSN/PDSN/xGW等设备,OpenFlow需要扩展将用户控制逻辑抽象为原子操作和流程,那可能已经不适合叫FlowTable,叫AccessControlTable更合适,转发操作本身的匹配规则、转发操作中也需要增加对现存的各种接入协议和表征接入会话的协议字段的支持,比如PPPoE、GTP-U、PDP激活操作的匹配和转发封装支持。

关于OpenFlow的深入分析,请参考盛科网络张卫锋《深度解析SDN》。

SDN无疑是最近几年最热门的话题之一,但我们要讲的是转发技术的“继往开来”,只有SDN、OpenFlow显然不够,因为业界正在悄悄的发生着革命,ICT正在融合,一种新形式的网络设备正在逐步问世,这就是NFV(网络功能虚拟化)。

NFV,即网络功能虚拟化,Network Function Virtualization。通过使用x86等通用硬件以及虚拟化技术,来承载传统的网元功能。通过基于行业标准的x86服务器、存储和交换设备,来取代通信网的那些私有专用的网元设备。由此带来的好处是,一方面基于x86标准的IT设备成本低廉,能够为运营商节省巨大的投资成本,另一方面开放的API接口,也能帮助运营商获得更多、更灵活的网络能力。可以通过软硬件解耦及功能抽象,使网络设备功能不再依赖于专用硬件,资源可以充分灵活共享,实现新业务的快速开发和部署,并基于实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈等。

那么问题来了,NFV里面没有了专为数据包转发优化设计的NP、ASIC,甚至多核处理器都不行,转发怎么办?x86搞的定吗?

1995年Intel推出第一款PC服务器和工作站专用处理器Pentium Pro,自此之后的二十年中,处理器从16位到32位再到64位,从单核到双核、四核、到今天的十核,从150MHz到3GHz以上主频,从X86架构到IA64架构,从奔腾时代到崭新的酷睿、志强时代,从Nehalem到haswell,从Intel inside到Leap ahead,摩尔定律、Tick-Tock,不断增强的虚拟化技术,让我们领略到了英特尔领导服务器处理器发展潮流的雄姿与伟略,在英特尔“偏执”推动下,全球计算技术也在不断进步着。正是由于基于x86的服务器价格不断下降、性能不断提升,才有了今天CT巨头们有勇气提出的NFV架构。

当x86在服务器市场一路高歌猛进的时候,Intel意识到只有强大的计算并不是万能的,linux内核提供的socket收发包无法提供10Gbps的速率,当IO接口吞吐量不够时,CPU强大的性能只能浪费掉,好马必须配好鞍;为此Intel设计开发并为所有用户免费开放了DPDK(Data Plane Development Kit),配合Intel的高速网卡和IO虚拟化技术,解决了x86服务器这些年来最让人诟病的IO性能问题,NFV也因此有胆量抛弃所有的非标准(非x86cpu、非intel网卡或不支持IO虚拟化的网卡)组件,从网络IO到计算CPU,Intel帝国从此诞生,可喜、可敬、可恨,也可怕!

DPDK提供了一系列用于报文处理的库函数和驱动,运行在linux用户态,理论上可以运行在任何处理器上,当然目前都是在x86的cpu。DPDK提供的L3转发模型在intel最新的CPU上可以达到28Mpps/core性能,比linux内核态IO性能提升几十倍。

DPDK包括的技术有:

  • PMD轮询收发包机制,抛弃中断采用轮询模式减少系统开销;
  • 报文批量处理,提升吞吐量减少轮询开销;
  • 线程绑定的RTC模式,最大限度提升CPU利用率;
  • 网卡硬件分流技术,报文天然保序;
  • 无锁设计;
  • 优化的BUF、RING;
  • 报文预取,提升cache命中率;
  • DDIO技术;
  • 内存大页技术;
  • 虚拟化场景下硬件直通SR-IOV、passthrough;
  • SSE、AVX矢量处理。

DPDK相对于以前的NP和多核处理器,在报文处理上并没有过人之处,反倒是它的这些技术是为了解决x86的短板而逼出来的;在多核处理器上已成为标配的协处理器、以及NP的数以百计甚至千记的硬线程数目,x86都还无法招架;x86相对较少的线程数直接影响处理的并行度,cache机制对性能影响巨大,在流表规格大于L3cache后性能直接腰斩,等等,x86在转发领域的确不够完美。但是,在硬件通用化、虚拟化大行其道的今天,DPDK的地位已经无法撼动,NFV已经明确要把DPDK加速纳入标准体系,所有的x86平台上只要跟IP相关,都逃不脱DPDK的绑架。NP已经被逼到只能和ASIC竞争高端路由交换市场,多核处理器也只能自降身份,沦为x86的配角,在智能网卡领地求得一丝喘息。

新世纪第二个十年刚刚过半,在IP技术沉寂了若干年后,有点革命意思的NFV、SDN的出现,让技术弄潮们一度欢欣鼓舞;转发技术能否迎来革命,目前还不明朗,但大潮已不可阻挡,尽管还有这样那样的不成熟,尽管各种反对的力量此起彼伏,虽然技术最后没有定型,改进依然在进行,标准也还在制定中,但我们有理由相信,未来几年,在5G、物联网到来的时候,NFV、SDN必将是主流的,届时,ICT完全融合,云计算承载一切,大数据主导一切,互联网将迎来二次革命。

四、 结束语

“今天的世界充满无数惊喜进步,蕴藏无限神奇可能。很多人已受益于此,但仍有人与此无缘。华为认为,人类的真正进步,在于以创新成果普济天下。我们认为沟通互联并非专属特权,而是人人必需。我们相信,衡量信息通讯科技的影响,要看有多少人因其受惠。我们不断将宽带技术推向更高标准、更快速度,让它无处不至、无人不享。联接,就像空气和水一样,它终将融入到我们生活的每一个角落,无所不在。”

在2015年新年致辞中,华为轮值CEO胡总厚崑说:“我们预测,到2025年,全球将有超过1000亿的联接,这将是一个规模空前的市场,如何存储和处理、传送与分发、获取与呈现这些庞大的数据流量,既是一个巨大的挑战,也是我们面临的战略机遇。”

其微信公众号“大侠来了”已发布,有意者可交流讨论

分页阅读: 1 2


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/19791.html
分享到:
相关文章
条评论

登录后才可以评论

yueqinglun 发表于17-08-30
6