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