偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

全面分析三層以太網(wǎng)交換機CPU收發(fā)包問題

網(wǎng)絡(luò) 路由交換
文章以基于ASIC的三層以太網(wǎng)交換機為例,從CPU負載、軟硬件隊列配置、CPU和交換芯片的通信機制等方面入手,討論并分析在多進程環(huán)境中與CPU收發(fā)包功能相關(guān)的一些典型問題。

三層以太網(wǎng)交換機還是比較常用的,于是我研究了一下三層以太網(wǎng)交換機CPU收發(fā)包相關(guān)問題,在這里拿出來和大家分享一下,希望對大家有用。三層以太網(wǎng)交換機發(fā)展迅速,一方面網(wǎng)絡(luò)設(shè)備的帶寬及交換容量大幅提升,另一方面設(shè)備所支持的協(xié)議種類也隨著用戶的需求不斷增加。

如何在大業(yè)務量的網(wǎng)絡(luò)環(huán)境下確保各設(shè)備之間協(xié)議包的正常交互,是以太網(wǎng)交換機設(shè)計面臨的重要問題。文章以基于ASIC的三層以太網(wǎng)交換機為例,從CPU負載、軟硬件隊列配置、CPU和交換芯片的通信機制等方面入手,討論并分析在多進程環(huán)境中與CPU收發(fā)包功能相關(guān)的一些典型問題,得到解決辦法。解決方法對于網(wǎng)絡(luò)處理器(NP)同樣適用。在當前的三層以太網(wǎng)交換設(shè)備中,報文的二層交換和三層路由主要由交換芯片和網(wǎng)絡(luò)處理器完成,CPU基本上不參與交換和路由過程,主要完成管理和控制交換芯片的功能。

在這種情況下,CPU的負載主要來自以下幾個方面:協(xié)議的定時驅(qū)動、用戶的配置驅(qū)動、外部事件的驅(qū)動。其中,外部事件的驅(qū)動最為隨機,無法預料。典型的外部事件包括端口的連接/斷開(Up/Down),媒體訪問控制(MAC)地址消息的上報(包括學習、老化、遷移等),CPU通過直接存儲器存取(DMA)收到包,CPU通過DMA發(fā)包等。

在以上所列的外部事件中,又以CPU通過DMA收到包之后的處理最為復雜。因為數(shù)據(jù)包由低層上送到上層軟件時,各協(xié)議的處理動作千差萬別,可能會涉及到發(fā)包、端口操作、批量的表操作等。所以,只有處理好CPU的收發(fā)包的相關(guān)問題,才能使相關(guān)的上層協(xié)議正常交互,從而使交換機穩(wěn)定、高效地運行。

可能涉及到的問題

以下就CPU收發(fā)包可能涉及的各個方面分別說明。下面的分析都基于典型的CPU收發(fā)包機制:CPU端口分隊列,通過DMA接收,采用環(huán)形隊列等。

CPU的負載與收包節(jié)奏控制

根據(jù)交換機處理數(shù)據(jù)包的能力,決定單位時間上送到CPU的包的個數(shù);決定了單位時間上送多少個包給CPU后,再考慮上送數(shù)據(jù)包的節(jié)奏。假設(shè)通過評估,確定了單位時間上送CPU數(shù)據(jù)包的上限,例如每秒x個數(shù)據(jù)包。

(1)勻速上報CPU

數(shù)據(jù)包勻速上報CPU時,對CPU隊列的沖擊較小,而且對CPU隊列的緩沖能力要求不高,CPU隊列不必做得很大。

(2)突發(fā)(Burst)方式上報CPU

交換芯片(采用ASIC)一側(cè)的硬件接收隊列和DMA內(nèi)存空間中的環(huán)形隊列,一起賦予了三層以太網(wǎng)交換機一定的緩沖能力(針對上送CPU的數(shù)據(jù)包)。利用這個緩沖能力,我們可以把控制周期適當放長,并設(shè)定控制的粒度(單位控制周期內(nèi)CPU收報個數(shù)的上限),采用類似于電路中負反饋的機制動態(tài)地使能和關(guān)閉CPU收包功能。這樣就在宏觀上實現(xiàn)了對數(shù)據(jù)包上送CPU速率的控制。另外,如果交換芯片(采用ASIC)支持基于令牌桶算法的CPU端口出方向流量監(jiān)管或整形功能[2-3],且監(jiān)管或整形的最小閾值可以滿足CPU限速的需要,則可以利用這個功能控制數(shù)據(jù)包上送CPU的節(jié)奏,減小CPU的負載。這樣軟件的處理就簡化了很多。

CPU端口隊列的長度規(guī)劃

如果僅考慮三層以太網(wǎng)交換機CPU端口的緩沖能力,CPU端口隊列當然是越長越好,但是必須兼顧對其他功能以及性能的影響。針對不同的ASIC芯片,需要具體問題具體分析。

零拷貝

零拷貝是指在整個數(shù)據(jù)包的處理過程中,使用指針做參數(shù),不進行整個數(shù)據(jù)包的拷貝。這樣可以大大提高CPU的處理效率。使用零拷貝后,會一定程度上降低軟件處理的靈活性,我們會面臨到這樣的問題:如果協(xié)議棧需要更改一個數(shù)據(jù)包的內(nèi)容,會直接在接收緩存(buffer)上修改,但是如果需要在數(shù)據(jù)包中刪除或添加字段(例如添加或刪除一層標簽(tag)),即數(shù)據(jù)包的長度需要變化時,應該如何處理。

添加或刪除字段,必然會導致數(shù)據(jù)包頭一側(cè)或包尾一側(cè)的位置發(fā)生移動,如果包尾一側(cè)移動,問題比較簡單,只要數(shù)據(jù)包總長度不超過buffer邊界即可。由于通常此類操作都靠近包頭的位置,如果包頭一側(cè)移動,效率會比較高,所以協(xié)議棧在處理時可能更傾向于在包頭一側(cè)移動,這時就需要驅(qū)動在分配buffer時做一些處理:

(1)接收數(shù)據(jù)包時,頭指針不能指向buffer邊界,需要向后偏移一定裕量,同時單個buffer的大小也必須兼顧到最大傳送單元(MTU)和該裕量。

(2)釋放數(shù)據(jù)包時buffer首指針需要作歸一化處理。

中斷/輪詢

目前三層以太網(wǎng)交換機涉及到的外部中斷主要由交換芯片產(chǎn)生,交換芯片主要的外部中斷包括DMA操作(如收到包、發(fā)包結(jié)束、新地址消息等等)和一些出錯消息。如果中斷請求過于頻繁,中斷服務程序(ISR)和其他進程之間頻繁地上下文切換會消耗大量CPU時間。如果有持續(xù)大量的中斷請求,CPU會始終處于繁忙狀態(tài),各種協(xié)議得不到足夠的調(diào)度時間,從而導致協(xié)議狀態(tài)機超時等嚴重故障。

為了避免事件觸發(fā)頻率不可控的問題,可以使用輪詢機制,通常的做法是用CPU定時器觸發(fā)原先由外部中斷觸發(fā)的ISR,由于定時器觸發(fā)的間隔是固定的,所以ISR執(zhí)行的頻率得到了控制,避免了上述的問題。

輪詢和外部中斷相比,只是節(jié)奏可控(外部中斷的節(jié)奏取決于外部事件發(fā)生的頻率,CPU不可控)。但是,輪詢也有其不可避免的缺點——響應慢。不能滿足某些實時性要求較高的功能。另外,人們會發(fā)現(xiàn)用ping命令檢測交換機3層接口大包時,使用輪詢方式的三層以太網(wǎng)交換機比使用中斷方式的交換機的時延明顯要大。如果能通過某種機制,避免持續(xù)、大量的中斷請求,則既可以保證CPU不會過于繁忙,又保留了中斷實時處理的優(yōu)點。典型的會產(chǎn)生大量中斷事件的行為是CPU接收數(shù)據(jù)包和MAC地址消息上報。以收包為例,在前面“CPU負載與收包節(jié)奏控制”部分提到的Burst方式就是根據(jù)實時的流量,控制接收DMA的開關(guān),這樣就達到了使中斷源受控的目的,這種類似負反饋的機制可以很好的避免持續(xù)的中斷事件上報CPU。

總之,輪詢控制簡單,但實時性較差;中斷實時性好,但是使所有的中斷源受控有一定難度。在系統(tǒng)初始設(shè)計階段,我們需要綜合考慮需求以及芯片對外部事件的處理方式,來決定采用中斷或者輪詢方式,或者兩者兼用。

多進程環(huán)境中外部事件的處理機制

常見的外部事件(中斷事件)包括收到包、包發(fā)送完(這里指的都是CPU收發(fā)包),包括收到MAC地址消息、MAC表操作完成等。如果把各類中斷事件的處理放在一個進程里,就人為地造成了各個事件耦合性增強,增加了各種事件相互制約的機會。

在多任務操作系統(tǒng)中,為了能更靈活地處理各個事件,減少事件之間的子相互制約關(guān)系,各種事件應當盡可能地單獨起進程,或者根據(jù)處理方式的不同劃分為幾個進程,至少用單個進程來處理是不合適的。

協(xié)議包保護和CPU保護

對于基于ASIC的三層以太網(wǎng)交換機,協(xié)議包保護是指利用ASIC芯片的某些機制,把特定的協(xié)議包指定到特定的端口隊列上去,保證其經(jīng)DMA隊列上送CPU的優(yōu)先級;CPU保護是指盡量減少不必要的數(shù)據(jù)包對CPU的沖擊。實現(xiàn)協(xié)議包保護的必要條件:

(1)CPU端口必需支持嚴格優(yōu)先級(SP)或者帶權(quán)重的羅賓環(huán)(WRR)的調(diào)度算法。

(2)交換芯片必需具有較強的流分類能力,且可以給不同的流指定不同的端口隊列。

在系統(tǒng)方案設(shè)計時我們需要兼顧對協(xié)議報文的保護和對CPU的保護,應該盡量做到:

(1)保證CPU收包通道和發(fā)包通道的暢通。

(2)精確匹配,按需選取。充分利用ASIC芯片的訪問控制列表(ACL)功能,盡量精確地匹配各類協(xié)議報文。必要時需要匹配到4層字段。實現(xiàn)以上幾點時,應兼顧其他功能及整機性能的限制。

效率降低的避免

在多任務操作系統(tǒng)中,各種事件需要用盡量短的時間片處理完成,以保證其他任務有足夠的機會得到調(diào)度。所以我們在調(diào)用任何函數(shù)時都要考慮其執(zhí)行效率。除了算法本身會影響執(zhí)行效率之外,頻繁地訪問某些硬件也相當耗時,而這一點往往容易被忽略。

結(jié)束語

隨著以太網(wǎng)相關(guān)技術(shù)的發(fā)展,交換芯片和網(wǎng)絡(luò)處理器的處理能力不斷被提升;相比之下,數(shù)據(jù)交換設(shè)備中CPU處理性能的提升程度遠遠不及交換芯片和網(wǎng)絡(luò)處理器;同時數(shù)據(jù)交換設(shè)備支持的業(yè)務種類也在不斷增加,對CPU承載的業(yè)務量也有了更高的要求。在這種情況下,交換設(shè)備容量以及支持業(yè)務種類的大幅提升和有限的CPU資源之間的矛盾會日益凸顯。因此,做好CPU和交換芯片以及網(wǎng)絡(luò)處理器接口的緩沖管理、隊列調(diào)度以及流量監(jiān)管,合理利用CPU資源,是保證數(shù)據(jù)交換設(shè)備安全、穩(wěn)定運行的前提,也是目前及將來數(shù)據(jù)交換設(shè)備開發(fā)的重要課題。
 

責任編輯:王曉東 來源: 計世網(wǎng)
相關(guān)推薦

2010-03-11 15:44:07

以太網(wǎng)交換機配置

2010-01-18 11:03:54

以太網(wǎng)交換機

2010-01-04 14:00:30

三層以太網(wǎng)交換機

2010-01-04 14:31:15

三層以太網(wǎng)交換機

2010-01-15 14:47:43

第三層以太網(wǎng)交換機

2010-01-13 14:28:40

2010-01-21 10:51:53

第三層交換機

2010-01-15 15:35:39

三層交換機

2010-01-04 14:08:56

三層以太網(wǎng)交換機

2010-03-18 16:47:31

以太網(wǎng)交換機

2010-02-03 14:06:28

2010-03-10 13:29:01

以太網(wǎng)交換機

2012-10-18 10:38:17

以太交換機交互MACNIC

2013-11-21 18:26:34

2010-01-19 14:52:03

千兆以太網(wǎng)交換機

2010-01-07 15:59:56

千兆以太網(wǎng)交換機

2010-01-11 16:26:42

三層交換機作用

2010-01-26 17:03:18

以太網(wǎng)交換機

2010-03-19 14:52:31

Cisco三層交換機

2010-01-11 16:17:20

三層以太網(wǎng)交換機
點贊
收藏

51CTO技術(shù)棧公眾號