国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 網(wǎng)絡(luò)通信 > 正文

三層以太網(wǎng)交換機(jī)CPU收發(fā)包相關(guān)問(wèn)題分析

2019-11-05 02:11:46
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

    作者:趙振寧  范力涵  陳曉

    摘要:三層以太網(wǎng)交換機(jī)發(fā)展迅速,一方面網(wǎng)絡(luò)設(shè)備的帶寬及交換容量大幅提升,另一方面設(shè)備所支持的協(xié)議種類也隨著用戶的需求不斷增加。如何在大業(yè)務(wù)量的網(wǎng)絡(luò)環(huán)境下確保各設(shè)備之間協(xié)議包的正常交互,是以太網(wǎng)交換機(jī)設(shè)計(jì)面臨的重要問(wèn)題。文章以基于ASIC的三層以太網(wǎng)交換機(jī)為例,從CPU負(fù)載、軟硬件隊(duì)列配置、CPU和交換芯片的通信機(jī)制等方面入手,討論并分析在多進(jìn)程環(huán)境中與CPU收發(fā)包功能相關(guān)的一些典型問(wèn)題,得到解決辦法。解決方法對(duì)于網(wǎng)絡(luò)處理器(NP)同樣適用。

    要害詞:三層以太網(wǎng)交換機(jī);CPU;中斷;輪詢;直接存儲(chǔ)器存取;隊(duì)列調(diào)度

    Abstract:TheL3Ethernetswitch has developed rapidly. On one hand, it has greatly imPRoved bandwidth and exchange capability of network equipment. On the other hand, network equipment is required to support more protocol types with the increasing of user demands. For design of an Ethernet switch, it is important to ensure normal interaction of protocol packets between different devices under a network environment of massive traffic. Taking the L3 Ethernet switch that uses application Specific Integrated Circuits (ASIC) chip as an example, this article analyzes several typical issues about packet receiving and sending by CPU under a multi-progress environment, including CPU load, software and hardware queue settings, and communication mechanism between CPU and the switching chip. It then gives solutions to these issues, which may also work for the Network Processor (NP).

    KeyWords:L3Ethernetswitch; CPU; interrupt; polling; DMA; queue and schedule

    在當(dāng)前的三層以太網(wǎng)交換設(shè)備中,報(bào)文的二層交換和三層路由主要由交換芯片和網(wǎng)絡(luò)處理器完成,CPU基本上不參與交換和路由過(guò)程,主要完成治理和控制交換芯片的功能[1]。

    在這種情況下,CPU的負(fù)載主要來(lái)自以下幾個(gè)方面:協(xié)議的定時(shí)驅(qū)動(dòng)、用戶的配置驅(qū)動(dòng)、外部事件的驅(qū)動(dòng)。其中,外部事件的驅(qū)動(dòng)最為隨機(jī),無(wú)法預(yù)料。典型的外部事件包括端口的連接/斷開(Up/Down),媒體訪問(wèn)控制(MAC)地址消息的上報(bào)(包括學(xué)習(xí)、老化、遷移等),CPU通過(guò)直接存儲(chǔ)器存取(DMA)收到包,CPU通過(guò)DMA發(fā)包等。

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

    1 可能涉及到的問(wèn)題

    以下就CPU收發(fā)包可能涉及的各個(gè)方面分別說(shuō)明。

    下面的分析都基于典型的CPU收發(fā)包機(jī)制:CPU端口分隊(duì)列,通過(guò)DMA接收,采用環(huán)形隊(duì)列等。

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

    根據(jù)交換機(jī)處理數(shù)據(jù)包的能力,決定單位時(shí)間上送到CPU的包的個(gè)數(shù);決定了單位時(shí)間上送多少個(gè)包給CPU后,再考慮上送數(shù)據(jù)包的節(jié)奏。

    假設(shè)通過(guò)評(píng)估,確定了單位時(shí)間上送CPU數(shù)據(jù)包的上限,例如每秒x個(gè)數(shù)據(jù)包。

三層以太網(wǎng)交換機(jī)CPU收發(fā)包相關(guān)問(wèn)題分析(圖一)


    圖1給出了兩種典型的處理手段:勻速上報(bào)CPU、突發(fā)(Burst)方式上報(bào)CPU,下面分別分析一下這兩種方式的優(yōu)劣:

    (1)勻速上報(bào)CPU

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

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

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

    1.2CPU端口隊(duì)列的長(zhǎng)度規(guī)劃

    假如僅考慮交換機(jī)CPU端口的緩沖能力,CPU端口隊(duì)列當(dāng)然是越長(zhǎng)越好,但是必須兼顧對(duì)其他功能以及性能的影響。針對(duì)不同的ASIC芯片,需要具體問(wèn)題具體分析。

    1.3零拷貝

    零拷貝是指在整個(gè)數(shù)據(jù)包的處理過(guò)程中,使用指針做參數(shù),不進(jìn)行整個(gè)數(shù)據(jù)包的拷貝。這樣可以大大提高CPU的處理效率。

    使用零拷貝后,會(huì)一定程度上降低軟件處理的靈活性,我們會(huì)面臨到這樣的問(wèn)題:假如協(xié)議棧需要更改一個(gè)數(shù)據(jù)包的內(nèi)容,會(huì)直接在接收緩存(buffer)上修改,但是假如需要在數(shù)據(jù)包中刪除或添加字段(例如添加或刪除一層標(biāo)簽(tag)),即數(shù)據(jù)包的長(zhǎng)度需要變化時(shí),應(yīng)該如何處理。

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

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

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

三層以太網(wǎng)交換機(jī)CPU收發(fā)包相關(guān)問(wèn)題分析(圖二)

    1.4中斷/輪詢

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

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

    輪詢和外部中斷相比,只是節(jié)奏可控(外部中斷的節(jié)奏取決于外部事件發(fā)生的頻率,CPU不可控)。但是,輪詢也有其不可避免的缺點(diǎn)——響應(yīng)慢。不能滿足某些實(shí)時(shí)性要求較高的功能。另外,人們會(huì)發(fā)現(xiàn)用ping命令檢測(cè)交換機(jī)3層接口大包時(shí),使用輪詢方式的交換機(jī)比使用中斷方式的交換機(jī)的時(shí)延明顯要大。

    假如能通過(guò)某種機(jī)制,避免持續(xù)、大量的中斷請(qǐng)求,則既可以保證CPU不會(huì)過(guò)于繁忙,又保留了中斷實(shí)時(shí)處理的優(yōu)點(diǎn)。

    典型的會(huì)產(chǎn)生大量中斷事件的行為是CPU接收數(shù)據(jù)包和MAC地址消息上報(bào)。以收包為例,在前面“CPU負(fù)載與收包節(jié)奏控制”部分提到的Burst方式就是根據(jù)實(shí)時(shí)的流量,控制接收DMA的開關(guān),這樣就達(dá)到了使中斷源受控的目的,這種類似負(fù)反饋的機(jī)制可以很好的避免持續(xù)的中斷事件上報(bào)CPU。

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

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

    常見的外部事件(中斷事件)包括收到包、包發(fā)送完(這里指的都是CPU收發(fā)包),包括收到MAC地址消息、MAC表操作完成等。

    假如把各類中斷事件的處理放在一個(gè)進(jìn)程里,就人為地造成了各個(gè)事件耦合性增強(qiáng),增加了各種事件相互制約的機(jī)會(huì)。

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

    1.6協(xié)議包保護(hù)和CPU保護(hù)

    對(duì)于基于ASIC的交換機(jī),協(xié)議包保護(hù)是指利用ASIC芯片的某些機(jī)制,把特定的協(xié)議包指定到特定的端口隊(duì)列上去,保證其經(jīng)DMA隊(duì)列上送CPU的優(yōu)先級(jí);CPU保護(hù)是指盡量減少不必要的數(shù)據(jù)包對(duì)CPU的沖擊。

    實(shí)現(xiàn)協(xié)議包保護(hù)的必要條件:


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

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

    在系統(tǒng)方案設(shè)計(jì)時(shí)我們需要兼顧對(duì)協(xié)議報(bào)文的保護(hù)和對(duì)CPU的保護(hù),應(yīng)該盡量做到:

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

    (2)精確匹配,按需選取。充分利用ASIC芯片的訪問(wèn)控制列表(ACL)功能,盡量精確地匹配各類協(xié)議報(bào)文。必要時(shí)需要匹配到4層字段[4]。

    實(shí)現(xiàn)以上幾點(diǎn)時(shí),應(yīng)兼顧其他功能及整機(jī)性能的限制。

    1.7效率降低的避免

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

    2 結(jié)束語(yǔ)

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

    3 參考文獻(xiàn)

    [1]陳曉,范成法,過(guò)仕好. 數(shù)據(jù)交換網(wǎng)絡(luò)設(shè)備的CPU負(fù)載分析 [J]. 電信技術(shù), 2004 (8):55-57.

    [2]ITEFRFC2697. A single rate three color marker [S]. 1999.

    [3]ITEFRFC2698. A two rate three color marker [S]. 1999

    [4]StevensWR. TCP/IP illustrated: Vol 1 [M]. Reading, MA,USA:Addison-Wesley,1994: Chapter3,6,11,13,17.

    作者簡(jiǎn)介:

    趙振寧,重慶大學(xué)通信工程專業(yè)畢業(yè)。中興通訊股份有限公司南京研究所軟件工程師,從事ZXR10以太網(wǎng)交換機(jī)產(chǎn)品的研發(fā)。范力涵,中南大學(xué)控制理論與控制工程專業(yè)碩士畢業(yè)。中興通訊股份有限公司南京研究所軟件高級(jí)工程師,從事高端以太網(wǎng)交換機(jī)研發(fā)、設(shè)計(jì)和治理。先后參與國(guó)家“863”項(xiàng)目和國(guó)家自然科學(xué)基金項(xiàng)目多項(xiàng),曾獲得湖南省科技進(jìn)步一等獎(jiǎng)和三等獎(jiǎng)。陳曉,南京航空航天大學(xué)畢業(yè)。中興通訊股份有限公司南京研究所系統(tǒng)工程師,曾參與ZXB10ATM交換機(jī)研發(fā),ZXR10 以太網(wǎng)交換機(jī)的研發(fā)、設(shè)計(jì)和治理,現(xiàn)負(fù)責(zé)城域以太網(wǎng)業(yè)務(wù)交換機(jī)的預(yù)研工作。(張翀編輯)

進(jìn)入討論組討論。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 康马县| 平顶山市| 定州市| 和田县| 牡丹江市| 赣州市| 浮山县| 永泰县| 阳西县| 平昌县| 沛县| 荃湾区| 赣州市| 华坪县| 犍为县| 双辽市| 南雄市| 伽师县| 新沂市| 吉首市| 蓝田县| 河西区| 水富县| 广饶县| 三门县| 南阳市| 隆尧县| 渝北区| 通州市| 井研县| 奉贤区| 蒙山县| 黄平县| 武强县| 乐陵市| 咸丰县| 舟山市| 鹿泉市| 应用必备| 吉隆县| 托克托县|