高端網(wǎng)絡(luò)芯片如何處理數(shù)據(jù)包_第1頁(yè)
高端網(wǎng)絡(luò)芯片如何處理數(shù)據(jù)包_第2頁(yè)
高端網(wǎng)絡(luò)芯片如何處理數(shù)據(jù)包_第3頁(yè)
高端網(wǎng)絡(luò)芯片如何處理數(shù)據(jù)包_第4頁(yè)
高端網(wǎng)絡(luò)芯片如何處理數(shù)據(jù)包_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

隨著網(wǎng)絡(luò)芯片帶寬的持續(xù)提升,其內(nèi)部數(shù)據(jù)包處理單元的工作負(fù)載也隨之增加。然而,如果處理單元無(wú)法與網(wǎng)絡(luò)接口的傳入速率相匹配,將無(wú)法及時(shí)處理數(shù)據(jù)包,這不僅會(huì)導(dǎo)致數(shù)據(jù)包隨機(jī)丟失,更會(huì)降低網(wǎng)絡(luò)的吞吐量。本文將深入探討與數(shù)據(jù)包處理相關(guān)的各項(xiàng)工作和挑戰(zhàn),分析處理單元吞吐量的需求演變,以及在網(wǎng)絡(luò)芯片中執(zhí)行這些功能的多種方法和技術(shù)。數(shù)據(jù)包處理網(wǎng)絡(luò)芯片中的數(shù)據(jù)包處理是指,當(dāng)網(wǎng)絡(luò)數(shù)據(jù)包通過(guò)路由器、交換機(jī)或防火墻中的芯片時(shí),芯片對(duì)網(wǎng)絡(luò)數(shù)據(jù)包執(zhí)行的一系列操作。網(wǎng)絡(luò)芯片主要檢查數(shù)據(jù)包的L2/L3報(bào)頭信息。從宏觀層面來(lái)看,數(shù)據(jù)包處理的主要功能可以概述如下:解析第一步是對(duì)數(shù)據(jù)包報(bào)頭進(jìn)行分析,以了解其結(jié)構(gòu)和所采用的協(xié)議(如以太網(wǎng)、VLAN、IP、TCP/UDP以及現(xiàn)有的封裝)。解析過(guò)程中會(huì)識(shí)別出后續(xù)處理步驟中需要使用的關(guān)鍵字段,例如源地址和目標(biāo)地址、端口號(hào)和協(xié)議類型。封裝是網(wǎng)絡(luò)通信中的一種常見做法,即在數(shù)據(jù)包外部添加額外的一層報(bào)頭信息,通常是為了提供額外的功能,例如安全性(在VPN的情況下)和隧道(如GRE或VXLAN)。這樣就形成了具有外部報(bào)頭和一個(gè)/多個(gè)內(nèi)部報(bào)頭的數(shù)據(jù)包。在這種情況下,解析邏輯需要同時(shí)檢查外部報(bào)頭和內(nèi)部報(bào)頭。此功能對(duì)于嚴(yán)重依賴封裝技術(shù)對(duì)網(wǎng)絡(luò)流量進(jìn)行分段、保護(hù)和管理的現(xiàn)代網(wǎng)絡(luò)基礎(chǔ)設(shè)施至關(guān)重要。

分類首先要確定數(shù)據(jù)包的來(lái)源。數(shù)據(jù)包的來(lái)源包括其主機(jī)身份、接收接口(邏輯和物理)及其轉(zhuǎn)發(fā)域。通常,會(huì)執(zhí)行第2層地址和數(shù)據(jù)包進(jìn)入的物理接口之間的綁定檢查。然后根據(jù)數(shù)據(jù)包的報(bào)頭字段(例如源/目標(biāo)IP地址、端口號(hào)和協(xié)議類型)對(duì)數(shù)據(jù)包進(jìn)行分類。分類決定了如何處理數(shù)據(jù)包,例如應(yīng)用哪些服務(wù)質(zhì)量(QoS)策略。隧道終止通過(guò)比較隧道報(bào)頭字段與隧道端點(diǎn)信息,邏輯確定是否需要終止隧道。對(duì)于需要終止的隧道,其封裝的數(shù)據(jù)包將被解封裝,恢復(fù)到原始格式后再被發(fā)送至最終目的地。外部/內(nèi)部報(bào)頭有許多變體,網(wǎng)絡(luò)芯片可以根據(jù)其部署用例支持不同的隧道終止子集。一些常見的受支持的隧道技術(shù)包括MPLS、VXLAN、GRE、MPLSoverUDP、IPinIP等。過(guò)濾許多設(shè)備通過(guò)訪問(wèn)控制列表(ACL)實(shí)現(xiàn)數(shù)據(jù)包過(guò)濾。ACL通常由一組規(guī)則(即ACL條目)組成,每個(gè)ACL條目定義了一種訪問(wèn)控制策略,包括允許或拒絕特定類型的流量或訪問(wèn)請(qǐng)求。ACL通?;谠吹刂贰⒛繕?biāo)地址、協(xié)議類型、端口號(hào)、時(shí)間等條件來(lái)控制網(wǎng)絡(luò)訪問(wèn)。路由查找根據(jù)數(shù)據(jù)包的目標(biāo)地址和路由表,處理器決定數(shù)據(jù)包的下一跳,并據(jù)此進(jìn)行轉(zhuǎn)發(fā)。這一過(guò)程涉及對(duì)IPv4/IPv6數(shù)據(jù)包執(zhí)行最長(zhǎng)前綴匹配查找,以及在轉(zhuǎn)發(fā)MPLS數(shù)據(jù)包時(shí)執(zhí)行索引查找,或者在基于目標(biāo)MAC地址進(jìn)行L2轉(zhuǎn)發(fā)時(shí)進(jìn)行精確匹配。查找結(jié)果可以直接指示數(shù)據(jù)包應(yīng)離開的發(fā)送接口,或者指向一系列下一跳指令,這些指令被執(zhí)行后將找到正確的發(fā)送接口。下一跳處理下一跳處理(執(zhí)行存儲(chǔ)在大內(nèi)存中的一系列下一跳指令)決定了如何將數(shù)據(jù)包轉(zhuǎn)發(fā)到其目的地。該處理過(guò)程會(huì)得出數(shù)據(jù)包必須離開的目標(biāo)端口、實(shí)現(xiàn)ECMP或LAG的負(fù)載平衡,以及確定推送或交換的MPLS標(biāo)簽等。此外,數(shù)據(jù)包可選擇性地執(zhí)行策略控制和計(jì)數(shù)。重寫最后一步,數(shù)據(jù)包報(bào)頭將被修改以剝離封裝報(bào)頭(在隧道終止的情況下)、更新TTL遞減、V4校驗(yàn)和更新、時(shí)間戳更新等。

入站數(shù)據(jù)包處理在入站數(shù)據(jù)包處理完成后,如果目標(biāo)隊(duì)列擁塞,或者該數(shù)據(jù)包被選擇為WRED丟棄對(duì)象,則數(shù)據(jù)包可能會(huì)被丟棄。當(dāng)數(shù)據(jù)包被允許轉(zhuǎn)發(fā)時(shí),它會(huì)在片上緩沖區(qū)或外部?jī)?nèi)存緩沖區(qū)內(nèi)排隊(duì)等待。無(wú)論是入站處的數(shù)據(jù)包排隊(duì)/出站的可選排隊(duì),還是出站調(diào)度,這些過(guò)程都極大地依賴于網(wǎng)絡(luò)芯片的架構(gòu)特性。出站數(shù)據(jù)包處理當(dāng)數(shù)據(jù)包從緩沖區(qū)中讀出,并準(zhǔn)備離開出站接口時(shí),它會(huì)在出站階段進(jìn)行進(jìn)一步的處理,以便在傳輸前對(duì)數(shù)據(jù)包進(jìn)行必要的修改。這些修改包括添加新的L2

報(bào)頭和/或VLAN標(biāo)簽、封裝(當(dāng)網(wǎng)絡(luò)設(shè)備位于隧道入口點(diǎn)時(shí))、添加MPLS標(biāo)簽等。此外,數(shù)據(jù)包還可以選擇性地通過(guò)出站過(guò)濾/策略執(zhí)行。這些實(shí)現(xiàn)方式因設(shè)備而異。具有入站/出站數(shù)據(jù)路徑和數(shù)據(jù)包處理子系統(tǒng)的獨(dú)立網(wǎng)絡(luò)交換機(jī)大型路由器可以使用多個(gè)模塊化路由芯片通過(guò)switchfabric相互連接,這些模塊化路由芯片可使用術(shù)語(yǔ)“數(shù)據(jù)包轉(zhuǎn)發(fā)實(shí)體(PFE)”來(lái)指代。在這些系統(tǒng)中,入站數(shù)據(jù)包處理發(fā)生在網(wǎng)絡(luò)流量進(jìn)入的PFE中,出站數(shù)據(jù)包處理發(fā)生在流量離開的PFE中。

數(shù)據(jù)包處理實(shí)現(xiàn)數(shù)據(jù)包處理的實(shí)現(xiàn)方式取決于所需的靈活性、設(shè)備的總吞吐量、以及該功能的功耗/性能/面積預(yù)算。

專用處理引擎大約二十年前,隨著網(wǎng)絡(luò)協(xié)議快速演化,新的可選/擴(kuò)展報(bào)頭和隧道標(biāo)準(zhǔn)也隨之涌現(xiàn)。數(shù)據(jù)包的處理是通過(guò)大量高度靈活且可編程的專用處理引擎實(shí)現(xiàn)的。這些專用處理引擎通常包含存儲(chǔ)在片上和/或片外指令存儲(chǔ)器中的微碼指令。與RISC和X86指令集不同,微碼是一種低級(jí)指令集,通常以非常長(zhǎng)的指令字(VLIW)的形式打包。處理引擎通過(guò)這些微碼指令序列解析存儲(chǔ)在本地存儲(chǔ)器中的數(shù)據(jù)包頭的不同字段,以確定數(shù)據(jù)包的結(jié)構(gòu),并執(zhí)行上述所有入站和出站處理功能。處理引擎的硬件并不了解任何網(wǎng)絡(luò)協(xié)議,它只是盲目地執(zhí)行指令以形成新的數(shù)據(jù)包頭并計(jì)算輸出接口。用于數(shù)據(jù)包處理的PPE雖然基于微碼的處理提供了無(wú)限的靈活性,但在芯片面積或每Gbps功耗方面效率較低。在混合方法中,一些功能(如過(guò)濾/最長(zhǎng)前綴匹配查找、策略執(zhí)行等)可以在硬件本地(硬件加速器)中實(shí)現(xiàn),同時(shí)使用微代碼指令進(jìn)行數(shù)據(jù)包解析和其余的數(shù)據(jù)包轉(zhuǎn)發(fā)功能。

數(shù)據(jù)包處理Pipeline隨著高端芯片開始封裝更多的WAN帶寬,混合方法無(wú)法滿足每Gbps的功率/面積目標(biāo)。十多年前,一些網(wǎng)絡(luò)供應(yīng)商開始使用硬件pipeline(同時(shí)以本地/功能特定的指令/排序操作的形式提供有限的靈活性)本地實(shí)現(xiàn)所有數(shù)據(jù)包處理功能。

下圖是基于Juniper的ExpressArchitecturepipeline實(shí)現(xiàn)的入站數(shù)據(jù)包處理pipeline的概念圖。入站和出站數(shù)據(jù)包處理pipeline及其數(shù)據(jù)結(jié)構(gòu)該pipeline包含一系列后續(xù)塊或模塊,其中每個(gè)模塊負(fù)責(zé)上文描述的特定功能。通常,整個(gè)數(shù)據(jù)包存儲(chǔ)在數(shù)據(jù)路徑存儲(chǔ)器中,而報(bào)頭(通常是數(shù)據(jù)包的前128字節(jié))則通過(guò)數(shù)據(jù)包處理pipeline。由于數(shù)據(jù)包處理只關(guān)注L4的報(bào)頭信息,因此不需要通過(guò)pipeline發(fā)送整個(gè)數(shù)據(jù)包。

根據(jù)吞吐量需求的不同,數(shù)據(jù)包報(bào)頭以每周期一個(gè)數(shù)據(jù)包的速率或更低的速率通過(guò)pipeline發(fā)送。每個(gè)模塊都有許多存儲(chǔ)在SRAM中的本地?cái)?shù)據(jù)結(jié)構(gòu)/配置。

Pipeline的靈活性網(wǎng)絡(luò)是一個(gè)不斷發(fā)展的領(lǐng)域,為了適應(yīng)新技術(shù)和新需求,經(jīng)常會(huì)開發(fā)/標(biāo)準(zhǔn)化新協(xié)議和現(xiàn)有協(xié)議的擴(kuò)展。從新的RFC標(biāo)準(zhǔn)發(fā)布到其實(shí)際在網(wǎng)絡(luò)芯片中得到應(yīng)用,通常會(huì)有3-4年的延遲時(shí)間。這就是為什么在這些pipeline中具有一定的靈活性非常重要。

例如,除了對(duì)已知的L2-L4報(bào)頭的標(biāo)準(zhǔn)解析之外,硬件還可以支持靈活的解析功能,以解析未來(lái)的協(xié)議報(bào)頭或現(xiàn)有協(xié)議的擴(kuò)展。這可以通過(guò)一系列CAM(內(nèi)容可尋址存儲(chǔ)器)和規(guī)則集來(lái)實(shí)現(xiàn),它們指定了要查找新協(xié)議的Type/Length/Value字段的字節(jié)偏移量。并非所有的網(wǎng)絡(luò)應(yīng)用程序都經(jīng)過(guò)相同的數(shù)據(jù)包處理。例如,某些數(shù)據(jù)包可能需要多次查找。第一次查找可能是LPM(最長(zhǎng)前綴匹配)查找,以確定數(shù)據(jù)包的下一個(gè)目的地。第二次查找可能涉及更具體的路由策略,比如基于策略的路由,其中決策基于數(shù)據(jù)包中的其他字段或應(yīng)用類型。類似地,在MPLS網(wǎng)絡(luò)中,第一次查找可能涉及讀取MPLS標(biāo)簽以在MPLS網(wǎng)絡(luò)內(nèi)做出轉(zhuǎn)發(fā)決策。當(dāng)數(shù)據(jù)包到達(dá)MPLS網(wǎng)絡(luò)的邊緣,并且標(biāo)簽被彈出時(shí),需要進(jìn)行第二次查找,以便根據(jù)數(shù)據(jù)包的原始IP報(bào)頭確定數(shù)據(jù)包的下一跳。

Express數(shù)據(jù)包處理pipeline中的查找功能提供了這樣的選項(xiàng),其中第一次查找的操作可以指示后續(xù)的查找,并且報(bào)頭循環(huán)回查找函數(shù)的開頭以進(jìn)行下一次查找。數(shù)據(jù)包如何在每個(gè)查找模塊內(nèi)循環(huán)需要注意的是,在數(shù)據(jù)包處理pipeline中,因?yàn)槊總€(gè)數(shù)據(jù)包都經(jīng)過(guò)不同的pipeline并具有不同數(shù)量的查找、過(guò)濾器和下一跳操作,因此無(wú)法不會(huì)保持?jǐn)?shù)據(jù)包的原有順序。網(wǎng)絡(luò)設(shè)備必須確保同一數(shù)據(jù)流中的數(shù)據(jù)包不會(huì)被打亂順序。粗略地判斷數(shù)據(jù)流的方式是以數(shù)據(jù)包進(jìn)入的輸入端口/接口為準(zhǔn)。而更為精細(xì)的判斷方法則是查看數(shù)據(jù)包的五元組,并通過(guò)計(jì)算哈希函數(shù)來(lái)確定數(shù)據(jù)流。pipeline末端的重排序引擎可以將數(shù)據(jù)包重新按照每個(gè)端口或每個(gè)數(shù)據(jù)流的順序排列好。帶有重排序引擎的數(shù)據(jù)包處理pipeline再循環(huán)在某些封裝中,報(bào)頭字節(jié)可能會(huì)超過(guò)128B。對(duì)于那些在初次傳遞中無(wú)法檢測(cè)到內(nèi)部報(bào)頭的情況,數(shù)據(jù)包需經(jīng)歷如下步驟:首先在剝離已解析的報(bào)頭字節(jié),接著從入口內(nèi)存中讀取額外的報(bào)頭字節(jié),并將新報(bào)頭再次發(fā)回處理pipeline進(jìn)行處理。在接下來(lái)的循環(huán)中,將重復(fù)處理步驟以處理內(nèi)部報(bào)頭。再循環(huán)應(yīng)用的示例包括MPLSoverUDP,其中需要處理兩個(gè)以上的堆棧,以及基于防火墻的隧道解封裝。

再循環(huán)的概念圖吞吐量網(wǎng)絡(luò)芯片所需的每秒數(shù)據(jù)包處理速率與能夠進(jìn)入設(shè)備的最小數(shù)據(jù)包大小(通常是64B以太網(wǎng)幀)、數(shù)據(jù)包間隙(IPG)以及設(shè)備的總WAN吞吐量成正比。

Packetspersecond=(bits/second)/(bits/packet+IPG/packet)假設(shè)一個(gè)3.2Tbps的設(shè)備需要處理連續(xù)到來(lái)的64B數(shù)據(jù)包,若要跟上這種處理節(jié)奏,在1GHz的時(shí)鐘頻率下,每周期幾乎需要處理近5個(gè)數(shù)據(jù)包。由于每個(gè)pipeline最多只能每周期處理一個(gè)數(shù)據(jù)包,這意味著在這種情況下需要約5個(gè)數(shù)據(jù)包處理pipeline。就面積和功率而言,是相當(dāng)昂貴的。

3.2Tbps設(shè)備要滿足64B數(shù)據(jù)包的線路速率需要5個(gè)pipeline在實(shí)際網(wǎng)絡(luò)流量中,平均數(shù)據(jù)包大小通常大于64B。大多數(shù)流量通常使用最大傳輸單元(MTU)大小的數(shù)據(jù)包來(lái)最大化吞吐量。設(shè)計(jì)針對(duì)平均常用數(shù)據(jù)包大小優(yōu)化的數(shù)據(jù)包處理引擎有助于實(shí)現(xiàn)更優(yōu)的設(shè)計(jì),有效利用芯片面積。那么,我們?nèi)绾未_定平均數(shù)據(jù)包大小呢?一種方法是檢查網(wǎng)絡(luò)性能測(cè)試中使用的各種IMIX模式。

IMIX(InternetMIX)是網(wǎng)絡(luò)性能測(cè)試中使用的概念,用于更準(zhǔn)確地模擬現(xiàn)實(shí)世界中的互聯(lián)網(wǎng)流量模式。IMIX不使用統(tǒng)一的數(shù)據(jù)包大小,而是采用多種數(shù)據(jù)包大小的組合來(lái)代表互聯(lián)網(wǎng)流量的多樣性。例如,IMIX可能包含小型數(shù)據(jù)包(64字節(jié),常見于ACK或控制消息)、中型數(shù)據(jù)包(大約576字節(jié),通常用于特定應(yīng)用數(shù)據(jù))和大型數(shù)據(jù)包(大約1500字節(jié),),并且它們之間有一定的分布比例。

對(duì)于IMIX數(shù)據(jù)包大小分布并沒有一個(gè)普遍接受的標(biāo)準(zhǔn)。不同的組織可能會(huì)根據(jù)其特定需求和對(duì)網(wǎng)絡(luò)流量的觀察,定義自己的IMIX配置文件。谷歌和Meta在評(píng)估網(wǎng)絡(luò)設(shè)備時(shí)都有自己的IMIX模式。假設(shè)數(shù)據(jù)包處理需要以線速處理平均約345B大小的數(shù)據(jù)包,并在1.1GHz的時(shí)鐘頻率下運(yùn)行,那么只需一條pipeline即可滿足需求!該表顯示了增加平均數(shù)據(jù)包大小以滿足線路速率時(shí),如何減少pipeline數(shù)量為了應(yīng)對(duì)互聯(lián)網(wǎng)流量可能存在突發(fā)性的特點(diǎn),以及可能出現(xiàn)瞬態(tài)場(chǎng)景,即平均數(shù)據(jù)包大小小于350B,且有許多連續(xù)的小數(shù)據(jù)包涌入,這就需要在數(shù)據(jù)包處理輸入端增設(shè)一個(gè)突發(fā)吸收緩沖區(qū)(即圖中所示的入口緩沖區(qū))。一旦這個(gè)緩沖區(qū)開始填滿,硬件就可以執(zhí)行優(yōu)先級(jí)感知丟棄策略,即給予控制/?;顢?shù)據(jù)包更高的優(yōu)先級(jí)。丟棄策略的具體規(guī)定因供應(yīng)商而異。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論