網絡處理器聯卡設計研究論文

時間:2022-06-25 08:52:00

導語:網絡處理器聯卡設計研究論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

網絡處理器聯卡設計研究論文

摘要:以太網上聯卡是以ATM技術為內核的DSLAM設備中的一塊板卡,DSLAM設備通過它可直接與IP網絡相連,由于在進行ATM與IP轉換時要消耗大量資源,因而很容易使上聯卡成為整個系統的瓶頸。文章提出了一種基于網絡處理器IXP1200的以太網上聯卡設計方案,該方案利用IXP1200網絡處理器強大的數據處理能力和高度的靈活性來實現對數據的線速處理,同時也可根據需要增加新的功能。

關鍵詞:以太網上聯卡;網絡處理器;ATM;以太網;微碼;IXP1200

隨著網絡通訊技術的高速發展,寬帶接入技術成了當前電信接入技術的熱點。由于早期的寬帶技術以ATM為核心,各大廠家提供的核心芯片和線路接口芯片都是基于ATM技術的。而數據網絡主要以TCP/IP為核心,因此,為了解決ATM和TCP/IP的融合問題,就需要在DSLAM設備上提供ATM到以太網的轉換。但轉換過程中需要進行大量的數據處理,因此容易產生系統瓶頸,而上聯卡的設計就是為了解決在DSLAM設備中的ATM信元和以太網幀之間的高速轉發問題。本文提出了一種基于網絡處理器IXP1200的上聯卡設計方案,并對該方案的實現過程進行了詳細分析。

1網絡處理器IXP1200主要特性

網絡處理器是一種硬件可編程器件,通常是一種芯片,它是專門為處理網絡數據包而設計的。通過對硬件架構和指令集的優化,該網絡處理器不但可提供線速處理數據包的高質量硬件功能,同時還具備極大的系統靈活性。

IXP1200是英特爾公司生產的一款高檔網絡處理器,也是IXA(InternetExchangeArchitecture)架構的核心產品。IXP1200的內部結構如圖1所示,它內含1個主頻最高可達232MHz的處理核心StrongARM、6個RISC結構的可編程微引擎(每個微引擎包含4個硬件線程)、64位和最高104MHz的IXBus、32位的SRAM接口單元(工作頻率為核心頻率的一半)、64位的SDRAM接口單元(工作頻率為核心頻率的一半)、32位和最高66MHz的PCI總線接口單元等。IXP1200通過FBI接口單元和IXBus相連接。另外還有一套集成開發環境,可用于對微引擎進行應用開發,它支持匯編和C編程語言。

(1)StrongARMCore

通過StrongARMCore可實現CPU的主要功能,同時可啟動系統、管理和控制對網絡處理器的其它單元、處理微引擎無法處理的數據包和一些異常狀況。

(2)微引擎

微引擎是可編程的32-bitRISC處理器,它的指令集是專門針對網絡和通信應用而設計的。通過對各個線程進行編程,可單獨執行數據包的轉發和處理,而無需StrongARMCore干預,因而可減輕StrongARMCore的負擔,特別適合高速數據的處理和轉發。

(3)SDRAM單元

SDRAM單元可提供IXP1200與SDRAM的接口,最大可支持256M字節的SDRAM。雖然SDRAM的訪問速度較慢,但存儲空間大,因而可用來存儲大容量的數據結構(如數據包和路由表等),并可在系統運行時存儲操作系統的代碼。

(4)SRAM單元

SRAM單元可為三種類型設備提供通用總線接口。這些設備包括最大可達8M字節的SSRAM、復位后StrongARMCore執行代碼所在的FLASH或E-PROM等、BOOTROM設備和其它慢速端口設備(如CAM)、加密設備和MAC或PHY設備的控制狀態接口。SRAM訪問速度較快,但存儲空間小,主要用來存儲查找表和緩存描述符等需要快速訪問的數據結構。

(5)PCI單元

PCI單元用于提供與PCI設備相連的接口,可用于下載操作系統和配置程序。

(6)FBI單元

圖1中的哈希單元、IX總線接口和Scrachpad內存統稱為FBI單元。IXP1200通過FBI單元和IXBus相連,來實現外設與IXP1200之間數據包的收發,以便使微引擎可以訪問這些數據包,并利用線程對其進行轉發。實際上,StrongARMCore也可以訪問這些數據包,并對其進行異常處理或上層協議處理。

2以太網上聯卡的設計方案

以太網上聯卡的基本功能是實現ATM信元和以太網幀之間的轉發,即從LVDS接口收到來自核心卡的ATM信元流后,根據封裝協議(如RFC1483橋接協議)轉換成以太網幀,然后建立相應的MAC地址與ATMPVC的對應關系,并通過以太網上聯口送往IP網絡;也可以從以太網上聯口接收來自IP網絡的以太網幀,然后根據建立的MAC地址與ATMPVC的對應關系,將其轉換成ATM信元流,再通過LVDS接口送往核心卡。

在上聯卡中,ATM信元和以太網幀之間的轉發是由網絡處理器中的微引擎完成的。要使以太網上聯卡不成為網絡的瓶頸,微引擎必須能以線速來處理數據包(以太網幀或ATM信元),即在下一個數據包到來以前,完成對當前數據包的處理。因此,每個數據包的最大允許處理時間應小于數據包之間的間隔時間。

在進行設計時,應根據以太網上聯卡具體功能的實現,并結合網絡處理器IXP1200所擁有的硬件資源來進行合理的分配使用。這樣可以最大限度地發揮系統性能,本設計中,以太網上聯卡需要實現以太網接收處理、CRC計算產生、ATM發送處理、ATM接收處理、CRC校驗、以太網發送等六個主要任務,而由于IXP1200剛好擁有六個微引擎,因此,將這六個單獨的任務分配在每個微引擎上,并在處理上將其搭建成多流水線結構的程序架構,可以取得很好的處理效果。圖2給出了網絡處理器IXP1200的六個微引擎的任務分配方案,該分配方案的整個處理流程可以分為兩個方向,一是上行方向,即ATM到以太網的數據映射,二是下行方向,即以太網到ATM的數據轉換。

在上行方向,ATM接收引擎把收到的ATM信元組裝成AAL5PDUs,并根據封裝協議轉換成以太網幀,同時建立相應的MAC地址與ATMPVC的對應關系,然后送到CRC-32校驗隊列。接下來由CRC-32校驗引擎對隊列中的PDUs執行CRC校驗并把PDUs送到以太網的發送隊列。而以太網發送引擎的任務則主要是把發送隊列中的以太網幀從以太網上聯口發送出去。

在下行方向,以太網接收引擎接收來自以太網上聯口的以太網幀,并將其封裝成AAL5PDUs后送到CRC-32產生隊列,同時根據建立的MAC地址與ATMPVC的對應關系進行查找以得到ATM信元頭部。接著由CRC-32產生引擎為隊列中的PDUs生成CRC校驗值,并把PDUs送到UBR隊列。最后由ATM發送引擎把PDUs分割(segment)成ATM信元后,從ATM端口發送出去。

3以太網上聯卡的硬件設計

圖3所示是以太網上聯卡的硬件電路,該硬件電路主要包括四個部分:以太網處理單元、IXP1200網絡處理單元、FPGA控制邏輯單元、ATM及LVDS背板總線處理單元。

3.1以太網處理單元

以太網處理單元是上聯卡的上聯處理部分,用于連接路由器或者三層交換機等數據網絡設備。該單元主要包括RJ45接口、變壓器隔離電路、LXT9763以太網物理層芯片和IXF440MAC層芯片。其中RJ45接口以及變壓器隔離電路是以太網處理接口的標準單元電路,LXT9763主要完成802.3協議中描述的物理層功能,它主要通過MⅡ總線和IXF440芯片相連接。IXF440芯片主要完成802.3協議中描述的MAC層功能,同時提供與網絡處理器的IX總線接口,實際上,該芯片是網絡處理器中IX總線的SLAVE設備。

3.2IXP1200網絡處理單元

IXP1200網絡處理單元是整個以太網上聯卡的核心,它主要通過IX總線與外部芯片進行相連,是IX總線的MASTER設備,所有的處理軟件均運行在網絡處理器中。

IXP1200網絡處理單元由網絡處理器IXP1200及外部芯片(如SDRAMSRAMFlash等)構成。SDRAM和SRAM單元是可共享的智能單元。其中SDRAM單元可以被IXP1200的StrongARM內核以及微引擎和PCI總線上的設備直接訪問,這樣可以支持SDRAM與微引擎或IX總線以及PCI總線之間的快速移動數據,而SRAM單元則具有比SDRAM單元更快的訪問時間,通常可以用來存儲需要快速查找的表格,以提高性能。

3.3FPGA控制邏輯單元

由于在英特爾公司所提供的網絡處理器解決方案中,外部的數據接口是IX總線,該總線是英特爾提供的專有數據總線,而以太網上聯卡中所采用的ATM芯片的外部接口為標準的UTOPIA總線。所以,為了實現芯片間的互聯,應采用FPGA來完成IX總線和UTOPIA總線間的變換,即在IX總線端實現IX總線的SLAVE接口,在ATM端實現UTOPIA總線的SLAVE接口。通過該FPGA邏輯控制單元可為ATM到以太幀的轉換提供物理層的控制功能。FPGA邏輯控制單元的實現對于完成以太網上聯卡的設計非常關鍵。

3.4ATM與LVDS背板總線單元

該處理單元主要完成以太網上聯卡中的網絡處理器單元與背板ATM的無縫連接。由于DSLAM設備的設計核心是基于ATM技術,為了將網絡處理器單元應用在基于ATM的DSLAM設備中,必須采用該處理單元來實現系統互連。

DSLAM設備系統中的其它板卡主要用于完成ATM交換以及ADSL設備的線路接口。而背板是基于LVDS總線的高速差分總線,它具有抗干擾能力。這對于高密度的DSLAM設備來說是非常重要的。實際上,上聯卡就是通過ATM的物理層芯片與高速LVDS總線進行互聯,從而使該板卡無縫插接在系統之中。

4以太網上聯卡的軟件設計

以太網上聯卡的軟件主要運行在網絡處理器IXP1200中。為了方便基于網絡處理器IXP1200的開發,英特爾公司特別推出了高度集成且具有強大開發能力的開發工具SDK2.0。這個開發工具包中包含有IXP1200DeveloperWorkBench,是一個集成的開發工具,專門用來寫符號微碼,并且具有匯編器以及優化設備,還提供了一個不需要硬件的IXP1200模擬器,可支持軟件模式下的仿真和調試,因而具備友好的用戶接口和調試環境。

網絡處理器IXP1200的軟件開發主要基于兩個層面,一個是高層軟件,通常指運行在網絡處理器IXP1200StrongArm內核上的管理軟件、路由協議軟件以及所有的系統所需任務,這部分軟件通常需要一個嵌入式操作系統,目前的開發主要基于Linux操作系統。另一個層面是底層軟件,這部分軟件主要運行于六個微引擎之上,可用于完成包的快速處理,包括包的快速轉發和基本的二層協議處理等,這部分軟件采用微碼形式來完成,但應特別注意軟件部分的代碼優化,即用盡可能少的指令來完成處理。在網絡處理器IXP1200中,每個微引擎提供有2k字大小的代碼存儲空間。此外,每個微引擎中也包含四個線程,這四個線程可構成硬件多線程。由于微引擎內部包含有大量的GPR以及SRAM、SDRAM傳輸寄存器,因此,在采用微線程進行相對尋址模式時,每個線程都具有自己特定的寄存器組,從而極大地加快了線程切換的速度。在IXP1200中進行微碼設計有一個重要原則:即當一個線程在等待資源時,應將該線程切換出去,以讓其它線程占用微引擎的處理,這樣可進行快速切換,以保證各個線程都能夠充分利用微引擎的處理機,而不會因為一個在等待資源線程,造成處理器的浪費。微碼的組織也是按照這一原則來進行的。圖4所示是高層軟件的程序主流程圖。高層軟件的目的是完成整個硬件和軟件的初始化,同時將微碼程序加載到網絡處理器的六個微引擎中,并啟動運行。

底層軟件的微碼流程分為兩個部分,其任務分配和以上討論的六個微引擎的任務分配一致。它也分為兩個方向,即ATM到以太網方向和以太網到ATM方向。圖5所示是其微碼的軟件流程圖。

5結束語

本文介紹的基于網絡處理器IXP1200的以太網上聯卡,已經成功應用于DSLAM設備中,并解決了DSLAM設備與IP網絡的高速互聯問題。經過測試本卡性能良好,系統運行穩定。