转发技术风雨三十年
引子
2000年
大學(xué)報(bào)道,為了給家人報(bào)平安,小O在電話亭足足排了2小時(shí)。
這些都是那個(gè)年代的符號,朋友為了測試通話質(zhì)量是否OK,浪費(fèi)了小O六角錢至今仍讓人耿耿于懷……
2010年
喬布斯和他的革命性產(chǎn)品–蘋果手機(jī)問世,世界從此改變。
從90年代到現(xiàn)在,應(yīng)用從少至多,從單調(diào)到豐富。那么,支撐這些應(yīng)用的網(wǎng)絡(luò),它的轉(zhuǎn)發(fā)方式經(jīng)歷了哪些變化呢?
IP起航
90年代校園局域網(wǎng)大獲發(fā)展,web、bbs、甚至音樂視頻點(diǎn)播服務(wù)層出,但網(wǎng)絡(luò)出口小,2M專線已屬高配。
路由器,連接局域網(wǎng)和廣域網(wǎng),根據(jù)靜態(tài)或動態(tài)的路由信息,生成轉(zhuǎn)發(fā)表,到達(dá)路由器的IP報(bào)文就可以根據(jù)轉(zhuǎn)發(fā)表把報(bào)文從目的端口發(fā)到下一跳。
第一代轉(zhuǎn)發(fā)架構(gòu)
最早期的路由器甚至就是普通的計(jì)算機(jī)加多個(gè)網(wǎng)卡構(gòu)成,當(dāng)時(shí)流量小,主頻很低、實(shí)時(shí)性很差的CPU也能夠應(yīng)付帶寬需求。
第一代轉(zhuǎn)發(fā)架構(gòu):集中轉(zhuǎn)發(fā)、總線交換
特點(diǎn):
單核單線程,控制轉(zhuǎn)發(fā)合一,沒有并行處理、保序、pipeline,架構(gòu)簡單實(shí)用。
第二代轉(zhuǎn)發(fā)架構(gòu)
隨著網(wǎng)絡(luò)用戶增多、網(wǎng)絡(luò)流量增大,需提高網(wǎng)絡(luò)接口數(shù)量,降低CPU、總線負(fù)擔(dān)。
第二代轉(zhuǎn)發(fā)架構(gòu):集中+分布轉(zhuǎn)發(fā)、接口模塊化、總線交換
接口智能化
- 常用路由信息:接口卡Cache路由表直接轉(zhuǎn)發(fā)
- 其他報(bào)文:CPU處理
第三代轉(zhuǎn)發(fā)架構(gòu)
Web技術(shù)導(dǎo)致用戶訪問量拓寬,一方面,Cache經(jīng)常找不到路由,總線、CPU瓶頸效應(yīng)出現(xiàn);另一面,聯(lián)網(wǎng)計(jì)算機(jī)增加后路由器接口數(shù)量不足。
第三代轉(zhuǎn)發(fā)架構(gòu):分布轉(zhuǎn)發(fā)、總線交換
路由與轉(zhuǎn)發(fā)分離
- 主控板:管理設(shè)備、收集/計(jì)算路由、下發(fā)路由表
- 業(yè)務(wù)板:根據(jù)路由表獨(dú)立路由轉(zhuǎn)發(fā)
- 總 線:業(yè)務(wù)板之間的數(shù)據(jù)轉(zhuǎn)發(fā)獨(dú)立于主控板
并行高速處理,性能成倍提高,90年代中期主流設(shè)備。
第四代轉(zhuǎn)發(fā)架構(gòu)
后Web時(shí)代核心網(wǎng)絡(luò)的流量以指數(shù)級數(shù)增長,基于軟件的IP路由器無法再滿足帶寬的要求,ASIC實(shí)現(xiàn)應(yīng)運(yùn)而生。
第四代轉(zhuǎn)發(fā)架構(gòu):ASIC分布轉(zhuǎn)發(fā),網(wǎng)絡(luò)交換
- ASIC:轉(zhuǎn)發(fā)過程通過硬件方式實(shí)現(xiàn)
- CrossBar:無阻塞交換方式,解決內(nèi)部交換瓶頸
誕生了早期的千兆交換式路由器GSR
IP黃金十年
中國互聯(lián)網(wǎng)海外上市并迅速破滅,引發(fā)對網(wǎng)絡(luò)的理性思考,業(yè)界認(rèn)為需要從業(yè)務(wù)、運(yùn)維、管理、安全的角度重新思考互聯(lián)網(wǎng)的未來,網(wǎng)絡(luò)處理器(NP)登上舞臺。
一款革命性的NP:IXP1200
- 包轉(zhuǎn)發(fā)引擎*6個(gè):指令空間和寄存器獨(dú)立,內(nèi)存和總線共享;可編程;具有2K條指令空間;為包轉(zhuǎn)發(fā)處理設(shè)計(jì)了移位、Bit操作、比較、跳轉(zhuǎn)等單條指令。
- 硬線程*4:指令空間共享,寄存器可獨(dú)立或共享。可充分發(fā)揮并行性。
- 性能可達(dá)到同規(guī)格單核單線程CPU的24倍(理論值)
第五代轉(zhuǎn)發(fā)架構(gòu)
第五代轉(zhuǎn)發(fā)架構(gòu):NP分布轉(zhuǎn)發(fā)、網(wǎng)絡(luò)交換
網(wǎng)絡(luò)處理器(NP)提升吞吐量的關(guān)鍵:流水線處理和并行處理。
- 流水線方式:報(bào)文處理分段:接收、解析、查找、修改、發(fā)送……,在減少指令總數(shù)、縮短處理時(shí)間的同時(shí),簡化指令和引擎設(shè)計(jì),提升執(zhí)行效率。
- 并行處理:充分發(fā)揮所有處理器所有硬線程的威力,隱藏IO訪問時(shí)延。
流水線方式+并行處理,滿足帶寬要求,滿足復(fù)雜業(yè)務(wù)不降低整體性能的要求。
網(wǎng)絡(luò)處理器的另一個(gè)大殺器就是靈活編程,靈活編程在應(yīng)對VPN、MPLS網(wǎng)絡(luò)、IPV4/IPV6混合網(wǎng)絡(luò)、精細(xì)的流量管理、各種安全網(wǎng)關(guān)以及BT這種高帶寬但不增值的數(shù)據(jù)流識別與限制上得心應(yīng)手。
網(wǎng)絡(luò)處理器為產(chǎn)業(yè)發(fā)展立下汗馬功勞,但世事難料,IXP、Xelerated、EZchip等早期英雄被并風(fēng)潮后,NP黯然退場。
NP消退必然因素:
- 誕生“原罪”:是性能和靈活性折中的產(chǎn)物,性能比不過ASIC、靈活性比不過CPU。
- 開發(fā)門檻:從微碼到C語言,寫出高性能的轉(zhuǎn)發(fā)軟件難度大。
- 無OS裸跑:遷移工作量大且不增值。大廠不重視,產(chǎn)業(yè)鏈不成熟。
基于MIPS(Million Instructions Per Second)架構(gòu)開發(fā)的商業(yè)多核芯片,將網(wǎng)絡(luò)連接、負(fù)載均衡、加/解密、應(yīng)用加速等功能集成在一個(gè)芯片上,即片上系統(tǒng)SoC,在高度靈活性和較高性能方面,找到了最佳平衡點(diǎn)。
多核處理器一度被認(rèn)為是完美的處理器,在40Gbps甚至80Gbps以下所向無敵,在安全、業(yè)務(wù)路由器、L4+報(bào)文處理領(lǐng)域完全獨(dú)領(lǐng)風(fēng)騷。
多核和NP區(qū)別:
- 多核處理器的CPU通用,可運(yùn)行vxworks或者Linux;
- 多核處理器沒有NP的指令空間限制,包轉(zhuǎn)發(fā)處理可以是流水線或RTC(Run-to-Completion)模式;
- 基于Linux的SMP降低開發(fā)和移植難度;
繼往開來
SDN
谷歌在全球有幾十個(gè)數(shù)據(jù)中心,每個(gè)數(shù)據(jù)中心有數(shù)十萬臺服務(wù)器和上千臺交換機(jī)。為了減少數(shù)據(jù)中心互聯(lián)的帶寬成本、提高利用率,谷歌引入了SDN/OpenFlow。
- 高優(yōu)先級流量只占10%-15%,對數(shù)據(jù)中心流量分級:
- 用戶數(shù)據(jù)備份至遠(yuǎn)程數(shù)據(jù)中心:數(shù)據(jù)量小、延遲敏感、高優(yōu)先級
= 多個(gè)數(shù)據(jù)中心數(shù)據(jù)同步:數(shù)據(jù)量大、延遲不敏感、低優(yōu)先級 - 遠(yuǎn)程存儲訪問進(jìn)行分布式計(jì)算
流量分級需要的配合:應(yīng)用所需的帶寬預(yù)估;低優(yōu)先級應(yīng)用無法保證帶寬和丟包;需要一個(gè)中心控制系統(tǒng)分配帶寬。
SDN使谷歌的網(wǎng)絡(luò)帶寬利用率大大提高,網(wǎng)絡(luò)更穩(wěn)定,管理簡化了,Cost降低了。將原來網(wǎng)絡(luò)設(shè)備盒子中的控制分離出來集中到Controller,以及基于流表的交換機(jī)取代原來各種路由器交換設(shè)備,是SDN/OpenFlow最核心的兩個(gè)點(diǎn)。
OpenFlow將數(shù)據(jù)面的交換機(jī)行為進(jìn)行了統(tǒng)一,如果推動整個(gè)產(chǎn)業(yè)鏈的話,硬件成本將大幅下降。但這一過程異常艱難,除利益既得者會想盡一切辦法阻止這一進(jìn)程,技術(shù)上也是困難重重。
DPDK
NFV通過基于行業(yè)標(biāo)準(zhǔn)的x86服務(wù)器、存儲和交換設(shè)備,來取代通信網(wǎng)的那些私有專用的網(wǎng)元設(shè)備,可節(jié)省成本,并通過API獲得更加靈活的網(wǎng)絡(luò)能力。
但NFV里沒有NP、ASIC或多核處理器,x86中的轉(zhuǎn)發(fā)性能怎么解決呢?
DPDK(Data Plane Development Kit),配合Intel的高速網(wǎng)卡和IO虛擬化技術(shù),解決了x86服務(wù)器這些年來最讓人詬病的IO性能問題,NFV也因此有膽量拋棄所有的非標(biāo)準(zhǔn),(非x86cpu、非intel網(wǎng)卡或不支持IO虛擬化的網(wǎng)卡)組件。
DPDK提供了一系列用于報(bào)文處理的庫函數(shù)和驅(qū)動,提供的L3轉(zhuǎn)發(fā)模型在Intel最新的CPU上可以達(dá)到28Mpps/core性能,比linux內(nèi)核態(tài)IO性能提升幾十倍。
DPDK相對NP和多核處理器在報(bào)文處理上并無過人之處,但X86在轉(zhuǎn)發(fā)領(lǐng)域的不完美,“倒逼”DPDK解決X86的短板。
在硬件通用化、虛擬化大行其道的今天,DPDK的地位已經(jīng)無法撼動,NFV明確要把DPDK加速納入標(biāo)準(zhǔn)體系,所有的x86平臺上只要跟IP相關(guān),都逃不脫DPDK的綁架。
而NP已經(jīng)被逼到只能和ASIC競爭高端路由交換市場,多核處理器也只能自降身份,淪為x86的配角,在智能網(wǎng)卡領(lǐng)地求得一絲喘息。
P4
OpenFlow協(xié)議作為SDN最流行的南向協(xié)議廣受關(guān)注,但OpeFlow交換機(jī)還不能提供更好的可編程能力。P4(Programming protocol-independent packet processors)是種高級“協(xié)議獨(dú)立數(shù)據(jù)包處理編程語言”。
主要優(yōu)點(diǎn):
- 可靈活定義轉(zhuǎn)發(fā)設(shè)備數(shù)據(jù)處理流程,且可以做到轉(zhuǎn)發(fā)無中斷的重配置。
- 協(xié)議無關(guān)。交換設(shè)備無需關(guān)注協(xié)議語法語義等內(nèi)容,就可以完成數(shù)據(jù)處理。
- 設(shè)備無關(guān)。無需關(guān)心底層設(shè)備的具體信息,P4編譯器會將通用的P4語言處理邏輯編譯成設(shè)備相關(guān)的指令,完成轉(zhuǎn)發(fā)設(shè)備的配置和編程。
P4語言支持對交換機(jī)處理邏輯進(jìn)行編程定義,使得協(xié)議版本在更新迭代時(shí)無需購買新設(shè)備,只需通過控制器編程更新交換機(jī)處理邏輯即可。這種創(chuàng)新解決了OpenFlow編程能力不足,版本不穩(wěn)定的問題。此外,這也讓底層交換機(jī)更加白盒化,適用范圍更廣,更容易降低設(shè)備采購成本,也解除了服務(wù)提供商對網(wǎng)絡(luò)設(shè)備廠家綁定的顧慮。
自誕生以來,P4得到了業(yè)界的關(guān)注和認(rèn)可,被認(rèn)為將成為OpenFlow2.0的可能方向。不過,作為完全可編程的SDN實(shí)現(xiàn),性能問題是其需要面臨的大問題,也是急需解決的技術(shù)難題。
SmartNIC
軟件方案并不能提供足夠的網(wǎng)絡(luò)可靠性和服務(wù)質(zhì)量,而具有高級可編程功能的智能網(wǎng)卡(SmartNIC),在虛擬化網(wǎng)絡(luò)中扮演非常重要的角色。
智能網(wǎng)卡核心:
- 通過FPGA協(xié)助CPU處理網(wǎng)絡(luò)負(fù)載,編程網(wǎng)絡(luò)接口功能。
- FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。
Smart NIC能提升應(yīng)用程序和虛擬化性能,實(shí)現(xiàn)SDN和NFV的諸多優(yōu)勢,將網(wǎng)絡(luò)虛擬化、負(fù)載均衡和其他低級功能從服務(wù)器CPU中移除,確保為應(yīng)用提供最大的處理能力。
與此同時(shí),智能網(wǎng)卡還能夠提供分布式計(jì)算資源,使用戶可以開發(fā)自己的軟件或提供接入服務(wù),從而加速特定應(yīng)用程序。
結(jié)束語
從IP到SDN、NFV、DPDK、P4、SmartNIC……轉(zhuǎn)發(fā)技術(shù)的變革大潮已勢不可擋,隨著5G、物聯(lián)網(wǎng)的迎到來,ICT的完全融合、云計(jì)算承載一切,大數(shù)據(jù)主導(dǎo)一切,互聯(lián)網(wǎng)將引來第二次革命。
未來已來,拭目以待。
注:本文原作者岳青倫,原標(biāo)題《轉(zhuǎn)發(fā)技術(shù)風(fēng)雨三十年,你經(jīng)歷過……》,小O對內(nèi)容進(jìn)行了改編。可點(diǎn)擊“閱讀原文”查看更詳細(xì)內(nèi)容。
關(guān)于我
小O,全名51OpenLab,是個(gè)一站式ICT創(chuàng)新服務(wù)平臺(www.51openlab.com),提供實(shí)驗(yàn)平臺、測試驗(yàn)證、實(shí)驗(yàn)教程等服務(wù),連接產(chǎn)業(yè)、學(xué)術(shù)、科研,促進(jìn)產(chǎn)學(xué)研融合發(fā)展。
(部分課程截圖,全部免費(fèi))
掃碼,加入51OpenLab交流群,結(jié)交志同道合者。
接頭暗號請輸入“加群”,歡迎關(guān)注 微信“51OpenLab”
總結(jié)
- 上一篇: 致敬柳传志三网合一的佳沃品牌之路
- 下一篇: Php开发Dlp加密,DLP与文档透明加