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

作者简介:岳青伦,任职于华为产品与解决方案部,研究方向SDN/NFV

前言


记得刚到大学报道的那天,为了给家人报个平安,我在电话亭里足足等了两个小时,而我的父亲为了接这个电话也赶到近百米的土豪家。

作为我人生第一个通信工具Motorola BP机在我大学毕业使用两个月后迅速下岗,换了第一台GSM数字移动电话飞利浦989,从此满足了随时随地沟通和被沟通的需求;那个年代最蛋疼的莫过于双向收费,朋友为了测试通话质量是否OK浪费我六角钱让我至今还难以忘怀,因此成就了短信,也有了仅仅一个除夕夜中国三大运营商短信破百亿的历史记录;接下来的近十个年头,换遍了诺基亚的N个型号,N8250、N6810、N3250、N5800… 直到它光荣的死去。

有句话叫“你不革命就被人割命”,苹果,乔布斯……在即将跨入二十一世纪第二个十年时,发布了革命性的产品,世界从此改变!直到今天,苹果依旧是最科技最时尚的个人消费品代言人,2014年苹果公司的市值超7000亿,换成GDP超过105个国家,啧啧,只有羡慕+嫉妒+恨啊!

时代的变迁、社会的进步,背后的推手要么是伟大的思想家政治家,要么是科技的巨大进步。回头看看我们亲身经历的这三个十年的伟大变化,你会发现是科技的发展成就了这些,再具体点,就是信息技术、计算机技术、半导体技术、互联网技术,让我们的生活发生了翻天覆地的变化。

一、 IP起航

让我们先简单回顾下互联网大事记:

  • 1957年前苏联发射人类第一颗人造地球卫星,作为响应,美国国防部组建ARPA;
  • 1961年MIT的Leonard Kleinrock发表第一篇有关包交换的论文;
  • 1969年美国国防部委托开发ARPANET,AT&T提供速率为50Kpbs的通信线路;
  • 1971年BBN的Ray Tomlinson发明了通过分布式网络发送消息的email程序;
  • 1973年ARPANET首次进行国际联网:伦敦大学(英国)和NORSAR(挪威);同年以太网诞生于美国施乐公司,速率为2.94Mpbs;
  • 1974年Vinton Cerf和Bob Kahn发表了论文对TCP协议的设计作了详细的描述;
  • 1976年英国女王伊丽莎白二世在皇家信号与雷达研究院发出一封电子邮件;
  • 1978 TCP分解成TCP和IP两个协议;
  • 1982年,正式把“互联网”定义为使用TCP/IP连接起来的一组网络;
  • 1984年引入名字服务系统DNS,主机数超过1000台;
  • 1986年美国建成NSFnet,主干网速率56Kbps;
  • 1992年互联网协会(ISOC)成立,接入互联网的主机超过一百万;
  • 1994年中国接入互联网,国际专线64Kbps;
  • 1995年微软发布Windows95,从此Wintel联盟一发不可收拾;同年WWW、搜索引擎成为年度重大技术;
  • 1998年谷歌成立;
  • 2000年互联网泡沫破裂,NASDAQ指数一泻千里;
  • 2001年英国电信公司的子公司MAN开通了欧洲第一个3G网络;
  • 2007年苹果公司发布第一代iPhone,开创智能终端新时代;
  • 2014年iPhone总销售突破5亿,苹果公司市值突破7000亿$;
  • ……

2000年之前的十年离我们渐渐远去,那个时候拨号上网是唯一了解世界的途径,而且按分钟计费,像打电话一样;90年代校园局域网大发展,有web、bbs、email,甚至可以开设音乐视频点播服务,但都只限于局域网,HUB、交换机可以搞定;但到了出口,对不起,能给个2M的专线已经足够奢侈了,因为要跑路由,要3层隔离,所以必须使用一台路由器,会配会用路由器在当时显得特别牛,CCNA、CCNP、CCIE,也让大家谁都不能忘记一个大名鼎鼎的名字:Cisco!

HUB(集线器),主要功能是将本端口收到的报文复制到其它所有端口,除此以外基本不具备其它功能;交换机比HUB先进不少,首先交换机是真正意义上的存储转发架构的设备,有了这个架构就可以将报文存储下来,做更智能的事情,比如MAC地址学习、基于MAC学习表项的转发,甚至可以做报文过滤、端口限速等等。由于HUB、交换机主要是ASIC芯片完成,实现较为固化和简单,因此我们一笔带过。

路由器又称网关,连接局域网和广域网,根据静态或动态的路由信息,生成转发表,到达路由器的IP报文就可以根据转发表把报文从目的端口发到下一跳。从图中我们大致可以了解路由器在网络中的位置,以及根据应用场合可以分为小型家用路由器和大型的汇聚路由器、骨干网核心路由器。从路由器的功能来看,有两个关键的技术点,一个是路由信息的生成,另一个是报文根据转发表进行转发,报文根据转发表进行转发,不但作用巨大,且挑战的技术难题很多,为了实现高性能大吞吐量,这些年已经发生了翻天覆地的技术革命,没有这些突破,就没有我们今天快乐的享受实时在线的通信和娱乐。

第一代转发架构采用集中式的CPU挂接多个接口卡,接口卡收到的报文通过内部总线送给核心CPU,由CPU上运行的软件对报文进行加工处理,处理完成后从目的端口所在的接口卡上发出去。最早期的路由器甚至就是普通的计算机加多个网卡构成,那个年代的CPU没有太多选择,Motorola的PowerPC系列在通信领域占据着主导地位,在通信产品中是当仁不让的冠军,能用个MPC860逼格已经足够高大上了。20年前的CPU还没有多核多线程概念,运行个多任务操作系统已经伟大的不行了。报文到达接口卡后产生中断给CPU,触发CPU的报文处理程序,直至报文处理结束发送给接口卡,由于单核单线程,控制转发合一,也没有并行处理、保序、pipeline之说,架构相当简单实用,以至于今天看来主频很低、实时性很差的CPU也能够应付当年的带宽需求。

随着网络用户的增多,网络流量不断增大,接口数量、总线带宽和CPU的瓶颈效应越来越突出。如何提高网络接口数量,如何降低CPU、总线的负担?为了解决这个问题,第二代路由器就在网络接口卡上进行一些智能化处理,由于网络用户通常只访问少数几个地方,因此可将少数常用的路由信息采用Cache技术保留在业务接口卡上,使大多数报文直接通过业务板Cache的路由表进行转发,减少对总线和CPU的请求,仅仅对Cache中找不到的报文送交CPU处理。

Web的出现使得互联网从黑白世界走向彩色世界,由于用户访问面极大的拓宽,经常无法从Cache找到路由的现象,总线、CPU的瓶颈效应再次出现。且联网计算机的增加(1992年突破100万),路由器接口数量不足问题再次暴露。改革势在必行,第三代路由器采用全分布式结构,路由与转发分离,由主控板负责整个设备的管理和路由的收集、计算功能,并将计算出的转发表下发到各业务板,而各业务板则根据保存的路由转发表独立地进行路由转发。此外,总线技术也得到了较大的发展,通过总线,业务板之间的数据转发完全独立于主控板,实现了并行高速处理,使路由器的处理性能成倍提高。第三代路由器将转发性能提高了数倍,并具备了一个业务灵活扩展、性能不断提升的体系结构,在90年代中期成为Internet骨干主流设备。

九十年代中后期,随着IP网络的商业化,后Web时代各种新应用如雨后春笋,如著名的QICQ、MSN、流媒体播放,Internet技术得到空前的发展,用户数目迅猛增加,网络流量特别是核心网络的流量以指数级数增长,以往基于软件的IP路由器无法再满足带宽的要求。一些厂商开始引入ASIC实现方式,将转发过程的所有细节全部通过硬件的方式来实现,此外交换网上也持续改进,采用了CrossBar无阻塞交换方式,解决内部交换瓶颈,使路由器的性能达到N个千兆比特,即早期的千兆交换式路由器GSR(Gigabit Switch Router)。

上世纪九十年代这十年是互联网发展奠定基础的十年,用户数、网络规模、全球互联、网络带宽、网络应用已经初具规模,IP也在这个时期干掉了ATM,摇身变为大哥,从此引领世界开拓疆场、走向未来!从我们聚焦的转发技术上看,控制转发分离、分布式交换的最核心技术框架已经形成,为后面在吞吐量、时延、扩展性上的继续突破奠定了坚实的基础。

二、 IP黄金十年

2000年,中国互联网开始向海外上市冲刺,新浪网于4月13日率先出手,网易、搜狐紧跟其后,三大门户网站在几个月内相继登陆纳斯达克,中国互联网业在一片喧嚣浮躁中正式拉开大幕。“中国人离信息高速公路还有多远?向北1500米。”而在大洋彼岸,NASDAQ指数比仅仅一年前翻了一倍还多,只要写个.COM,哪怕是个乞丐一样可以融资千万。是泡沫总归要破的,随后短短6个交易日NASDAQ指数下跌900点,互联网公司全线遭到抛售,恐慌气氛蔓延全球,直到2001年。

泡沫破裂人们回归理性,当坐下来面壁思过的时候,发现过去其实做了很多伪需求,比如一味的投资提升带宽,但却没有跟得上的高价值应用;IP网固有的缺陷,少了严格的QOS保证、网络无法有效管理和运营、IP组网的开放无序、IP地址枯竭、网络的安全等,让人们对IP、对互联网产生了怀疑。理性的不仅有投资者,技术大拿们也从业务、运维、管理、安全的角度重新思考着互联网的未来,需要设计一种新的技术来支撑互联网的理性发展。

2000年的深秋,在美丽的东湖畔,国内某著名研究所的多名博士、专家聚集在一个简陋的会议室,认真的听着来自Level-One公司(Intel于2000年6月宣布并购Level-One)CTO的讲解。讲解的主题是一个神奇的芯片,这款芯片可以帮助客户基于Level-One的解决方案快速开发自己的产品,而这样一款产品一旦上市,将是革命性的的!好吧,不卖官子了,这就是intel网络处理器IXP家族的鼻祖IXP1200。

IXP1200有6个包转发引擎,相当于6个独立的RISC CPU,各自有独立的指令空间和寄存器,但又共享内存和总线;每个转发引擎有4个硬线程,共享指令空间,寄存器有线程独占和共享两种,可以充分发挥并行性,当一个线程进行内存或总线的IO访问从而等待时,切换出去让其它线程执行指令,吞吐量一下子提升4倍(不考虑切换线程的开销和没有完全消除的IO等待时延),总共6个引擎,性能可以达到同规格单核单线程CPU的24倍(理论值)。转发引擎完全可编程,具有2K条汇编指令空间,包转发引擎指令专门为包转发处理进行了特别设计,移位、bit操作、比较、跳转等都是单条指令,效率比通用CPU提升明显。

IXP1200处理RFC1812规定的IPV4标准处理过程时性能可达到1Gbps 64字节以太网报文线速,这在2000年的时候,已经非常非常牛了。国内的华为、中兴就是从这款处理器起步,慢慢的在IP宽带设备上追着巨人思科,直到差距越来越小,并逐渐超越。

网络处理器提升吞吐量的关键是靠流水线处理和并行处理。流水线方式下将对报文的处理分成若干个细微的过程,比如报文接收一个阶段、报文解析一个阶段、报文查找一个阶段、报文修改一个阶段、报文发送一个阶段,这样做的好处是每个阶段的指令总数控制在比较小的值,可以让报文在规定的时间内完成处理,保证线速;另一方面报文处理使用的指令基本上一样,可以简化引擎设计,提升指令执行效率。并行处理的好处就是充分发挥所有处理器所有硬线程的威力,隐藏IO访问时延,做到最大限度的吞吐量提升。今天像EZChip的NPS已经可以做到4K个硬线程,试想想如果我们的马路都有4K个车道,还会天天堵车吗?实际上流水线和并行处理在网络处理器的设计中是常常结合起来的,首先整体上分成流水线,然后在性能瓶颈的模块采用并行处理,这样既满足了吞吐量带宽要求,又满足了复杂业务不降低整体性能的要求。

网络处理器的另一个大杀器就是灵活编程,在2000之后的十年中,大量建成的各种VPN网络、MPLS网络、IPV4/IPV6混合网络、精细的流量管理、各种安全网关,无一不得益于这种灵活的可编程性;曾经有个时期BT一度让运营商大为烦恼,带宽极度消耗但又不增值,对于这种传输层端口号不固定的应用,如何识别这种数据流并加以限制,灵活的网络处理器发挥了极大的作用。

网络处理器这种既可灵活编程又兼具性能的设计,无疑是这个领域的一颗核弹,其威力无人能及。在新世纪开始的头几年,已经有2.5G/5G处理能力的网络处理器问世,到2005年前后已经有10G的芯片商用。让我们记住这些当年的英雄们:

  • Agere(Lucent)APP系列,处理能力2.5Gbps;
  • C-Port(Motorola)C-5(16个RISC核,32个串接数据处理器),处理能力5Gbps;
  • IBM,Rainer(高端NP,16个RISC处理器核,处理能力4Gbps),Charm(低端);
  • Intel,IXP1200(6个引擎,1Gbps)、IXP425、IXP2400(8个引擎,2.5Gbps)、IXP2800(16个引擎,10Gbps);
  • MMC,nP3400(2.5Gbps,集成4Gbps交换结构);
  • EZchip,NP1、NP2(10Gbps);
  • Xelerated,X11(10Gbps)。

网络处理器为产业发展立下了汗马功劳,IXP系列NP广泛应用于宽带BRAS、城域网路由器、RAN传输等多个领域,华为的无线产品正是在IXP的基础上实现了全IP化,让华为的无线产品一举成为世界老二,直追E///;在数通路由器产品中,也大量使用NP芯片,极大的缩短了我们与世界第一的差距。

然而世事难料,网络处理器的好日子并没有持久。Intel无法忍受长期以来的亏损,于2006年6月把IXP卖给了Marvell,2012年Xelerated也卖给了Mavell,其它那些早年的英雄们几乎全部折戟沙场,唯独EZchip凭借着以色列人的聪慧和美国风投的执着,还在挣扎着,也许EZchip的确有过人之处,让我们再多看她两眼吧。

NP的消退肯定不是偶然的,有它必然的因素,首先NP诞生就是一个性能和灵活性折中的产物,这注定了它的性能始终比不过专用ASIC,而灵活性又比不过通用的CPU;其次,NP的开发门槛比较高,本人生平第一次接触的微码,那就是天书,尽管后面都采用了C语言编程,但对开发人员的要求还是相当高,要写出高性能的转发软件,必须对NP做到相当的熟悉;再有,NP转发引擎几乎都是裸跑,不支持OS,一个平台上的代码想移植到另一个平台上,对不起,工作量巨大,而且是不增值的工作。因此NP始终在一个狭窄的领域生长,属于细分市场,造就了大厂商如intel、ibm都不器重,只有小厂家玩,产业链始终不够成熟。NP在这个多彩的世界中扮演了独特的角色,如今已经慢慢褪去光环,作为一代微码工程师尽管有太多不舍,但时代就是在变,后NP时代更加精彩。

MIPS(Million Instructions Per Second),这名字取的就让人叫绝,著名的“龙芯”就是采用MIPS的指令集。MIPS公司设计的RISC处理器始于上世纪八十年代,1991年就推出第一款64位商用微处理器R4000。2000年之后MIPS战略重心放在嵌入式系统,和PowerPC成为通信领域、嵌入式领域两道靓丽的风景线。MIPS相对于X86的CISC,指令格式统一,种类和寻找方式较少,并采用了“超标量和超流水线结构”,大大提高了处理速度,适用于网络通信、信息安全、高端服务器等领域。MIPS被Cavium、RMI两大半导体公司发扬光大,基于MIPS架构开发的商业多核芯片,将网络连接、负责均衡、加/解密、应用加速等功能集成在一个芯片上,即片上系统SoC,并成功应用于通信领域各种场景,包括IP报文转发、加解密、查找等,在高度灵活性和较高性能方面,找到了最佳平衡点。

新一代多核处理器有Cavium的CN68XX、RMI的XLP732/832等,处理能力可达40Gbps,集成8/16/32个MIPS通用CPU内核,内置多个协处理器和加速引擎,提升数据包深层处理的性能。多核处理器和NP最大的不同在于它的CPU是通用的,可以运行vxworks或者Linux,这一点足以让NP汗颜;多核处理器没有NP的指令空间限制,对于包转发处理可以设计成流水线模式,也可以设计成RTC(Run-to-Completion)模式,构建业务的灵活性也是NP无法媲美的;基于Linux的SMP(Symmetric Multi-Processor),开发工作变得异常简单,尤其是移植其它通用平台的代码几乎是分分秒秒的事情。当然多核处理器也可以按照NP那样进行系统架构设计,可以基于裸核进行开发和调度管理,避免Linux系统开销,更大的发挥多核多线程的威力。多核处理器的硬加速协处理对于开发者来说就是一个函数调用而已,比如使用Cavium的加解密协处理器进行报文加解密时,仅仅就是一条普通的指令,程序员完全不需要关心更底层的细节。


多核处理器一度被认为是完美的处理器,在40Gbps甚至80Gbps以下已经没有NP的什么事了,在安全、业务路由器、L4+报文处理领域完全没有敌手,在华为的无线产品中,单板全部由NP升级换代为多核处理器,为产品的容量提升、性价比提升提供了有力支撑,华为无线销售过百亿美金有多核处理器不可磨灭的功劳。

十年弹指而过,从懵懂初开的NP到枝繁叶茂的多核,IP转发技术经历一次次洗礼,算不上革命,但的确成熟了很多;黄金十年是从固网到移动大发展的十年,是从一味的追求急速带宽增长到IP理性健康发展的十年,是互联网泡沫之后回归的十年;这十年中世界经济大起大落,但互联网健康发展,人类追求的不再是盲目扩张,而是安全、运维、实用,虽然没有大的革命,但一次次的微创新,一次次的小改进,量变成质变,使人类开始享受互联网健康发展带来的可观受益,全民互联网时代也随之呼风唤雨的到来。

分页阅读: 1 2


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

登录后才可以评论

yueqinglun 发表于17-08-30
6