賀冰琰,姜 帥
(1.集美大學(xué) 計(jì)算機(jī)工程學(xué)院,福建 廈門 361021;
2.中興通訊股份有限公司,廣東 深圳 518000)
基于MPC8260與NP7250微碼通信模塊的設(shè)計(jì)與實(shí)現(xiàn)
賀冰琰1,姜 帥2
(1.集美大學(xué) 計(jì)算機(jī)工程學(xué)院,福建 廈門 361021;
2.中興通訊股份有限公司,廣東 深圳 518000)
文章給出了基于AMCC的NP7250、NPX5700和NPX5800交換套片的全I(xiàn)P交換平臺(tái)的構(gòu)建方案,重點(diǎn)介紹了在高性能的網(wǎng)絡(luò)處理器NP7250和嵌入式微處理器MPC8260之間的微碼通信模塊的設(shè)計(jì)與實(shí)現(xiàn)的方法,微碼通信模塊由兩個(gè)部分組成:處于用戶數(shù)據(jù)面(網(wǎng)絡(luò)處理器側(cè))的通信模塊UCOM和控制面(主CPU側(cè))的通信任務(wù)UCOM_TASK.
微碼子系統(tǒng);網(wǎng)絡(luò)處理器單元;ViX接口版本3;VxWorks
隨著IP技術(shù)的迅速發(fā)展,“Everything over IP”的觀念已深入人心.眾多移動(dòng)通信設(shè)備制造商都紛紛致力于基于全I(xiàn)P交換平臺(tái)之上的3G、4G產(chǎn)品開發(fā).基于全I(xiàn)P構(gòu)建開放通信體系架構(gòu),真正作到核心網(wǎng)和無線網(wǎng)絡(luò)的各個(gè)產(chǎn)品的模塊化、積木化.將核心網(wǎng)、無線接入網(wǎng)統(tǒng)一考慮,作到技術(shù)上的重用,接口上的統(tǒng)一,避免獨(dú)立開發(fā)各模塊特別是底層開發(fā)可能存在的重復(fù)勞動(dòng),實(shí)現(xiàn)全業(yè)務(wù)融合,打造一體化的可增值、可擴(kuò)展的多業(yè)務(wù)集成通信平臺(tái),已成為業(yè)界共識(shí)[1].在整個(gè)系統(tǒng)設(shè)計(jì)的過程中,主要的目標(biāo)在于軟件支撐的統(tǒng)一性,這要求相關(guān)的硬件系統(tǒng)也需要統(tǒng)一考慮成一個(gè)硬件平臺(tái)的概念.這樣就可以將來作到在統(tǒng)一的軟件支撐上開發(fā)各種不同的應(yīng)用業(yè)務(wù).
全I(xiàn)P交換平臺(tái)基于Crossbar的三層交換.可根據(jù)系統(tǒng)容量需求和實(shí)際應(yīng)用要求配置.當(dāng)容量較大時(shí),采用CrossBar+線卡方式實(shí)現(xiàn)三層交換方式,具體線卡配置的數(shù)目根據(jù)實(shí)際數(shù)據(jù)流量以及資源在各個(gè)應(yīng)用實(shí)體的利用情況確定.當(dāng)容量較小,采用線卡互連提供三層交換.位于全I(xiàn)P交換平臺(tái)之上的移動(dòng)通信設(shè)備單板需要實(shí)現(xiàn)的移動(dòng)通信功能靠HOST(主)CPU完成.
本文中的全I(xiàn)P交換平臺(tái)選用的是AMCC的NP7250、NPX5700和NPX5800交換套片作為硬件基礎(chǔ),主CPU是MPC8260,主CPU上的操作系統(tǒng)是VxWorks.AMCC套片實(shí)現(xiàn)線卡和Crossbar交換功能,具有高性能包分類、轉(zhuǎn)發(fā)、隊(duì)列管理功能,具有良好的QoS性能.其中,NP7250主要實(shí)現(xiàn)接口線卡的作用,完成基本信元/包的轉(zhuǎn)發(fā)功能;NPX5700是流量控制芯片,實(shí)現(xiàn)對(duì)數(shù)據(jù)流的輸入接納和輸出調(diào)度功能,是IP平臺(tái)QoS保證的核心[2],兩套NPX5700構(gòu)成雙向10Gbps的處理能力;
NPX5800是一種交換網(wǎng)芯片,用于連接NPX5700,實(shí)現(xiàn)交換功能,單片容量為20Gbps.容量為20Gbps的全I(xiàn)P交換平臺(tái)需要1片NPX5800,4套NPX5700,8片NP7250.
下面介紹NP7250子系統(tǒng)中負(fù)責(zé)微碼和Host CPU之間通信的微碼通信模塊的設(shè)計(jì)與實(shí)現(xiàn).
MCS(Microcode Subsytem,微碼子系統(tǒng))在軟件系統(tǒng)結(jié)構(gòu)中的位置見圖1.微碼子系統(tǒng)工作于特定的網(wǎng)絡(luò)處理器芯片上,完成媒體通道用戶面數(shù)據(jù)的分類、處理和轉(zhuǎn)發(fā)功能.MCS軟件設(shè)計(jì)與具體網(wǎng)絡(luò)處理器芯片密切相關(guān),大多采用專用的匯編指令或C代碼實(shí)現(xiàn)子系統(tǒng)功能.MCS與操作系統(tǒng)子系統(tǒng)OSS進(jìn)行通訊,數(shù)據(jù)處理過程受上層應(yīng)用業(yè)務(wù)子系統(tǒng)或IP協(xié)議子系統(tǒng)控制.
圖1 全I(xiàn)P交換平臺(tái)架構(gòu)Fig.1 The architecture of all-ip switch platform
NP7250單板是線接口模塊,它通常實(shí)現(xiàn)物理層適配和IP包查表、分片、轉(zhuǎn)發(fā)功能.單板的處理能力定位為雙向2.5Gbps線速處理,包轉(zhuǎn)發(fā)能力達(dá)到6Mpps[3].單板上行通過ViX-v3接口將經(jīng)過單板處理后的包發(fā)送到NPX5700進(jìn)行流量控制和交換,下行單板通過RGGI接口與QGMAC芯片,最多可提供8個(gè)GE口,根據(jù)系統(tǒng)需求,單板提供4到6個(gè)GE口(實(shí)際吞吐量總和是2.5G).
微碼通信模塊在子系統(tǒng)中的位置見圖2,它由兩個(gè)部分組成:處于用戶數(shù)據(jù)面(網(wǎng)絡(luò)處理器側(cè))的通信模塊U?COM和控制面(主CPU側(cè))的通信任務(wù)UCOM_TASK,主要負(fù)責(zé)網(wǎng)絡(luò)處理器和主CPU之間的通信,包括主CPU向網(wǎng)絡(luò)處理器發(fā)送控制請(qǐng)求(命令),網(wǎng)絡(luò)處理器與之相應(yīng)的響應(yīng);網(wǎng)絡(luò)處理器向主CPU發(fā)送異常指示或者無法解析的信元/包;以及主CPU與網(wǎng)絡(luò)處理器之間的數(shù)據(jù)包.對(duì)于NP7250來說,微碼與主CPU之間的通信是用消息來完成,消息被封裝成Vix-v3信元的結(jié)構(gòu),經(jīng)由NPX5700交換模塊來進(jìn)行通信,微碼通信模塊框架見圖3.
圖2 微碼通信模塊在子系統(tǒng)中的位置Fig.2 The position of the microcode communicating module in the system
圖3 微碼通信模塊框架圖Fig.3The framework pattern of the microcode communicating module
1.1 通信任務(wù)UCOM_TASK
在主CPU側(cè)完成與NP7250之間的數(shù)據(jù)通信功能,UCOM_TASK為運(yùn)行在主CPU上的VxWorks通信任務(wù),在本設(shè)計(jì)中,它以O(shè)SS設(shè)備管理驅(qū)動(dòng)任務(wù)存在[4].它負(fù)責(zé)從驅(qū)動(dòng)任務(wù)郵箱中接收底層向上發(fā)送的消息到來指示,調(diào)用接口函數(shù)從單板支撐包(BSP)緩沖區(qū)中拷貝數(shù)據(jù)并封裝成進(jìn)程消息,根據(jù)消息類型發(fā)送到指定的應(yīng)用進(jìn)程.在NP7250微碼通信過程中,UCOM_TASK還需要完成NP7250驅(qū)動(dòng)任務(wù)的功能,該功能將在通信任務(wù)子模塊中進(jìn)行描述.
1)驅(qū)動(dòng)任務(wù)郵箱MailBox:驅(qū)動(dòng)任務(wù)郵箱Mail?Box是設(shè)備管理中概念,它負(fù)責(zé)傳遞通知UCOM_TASK有數(shù)據(jù)到來的郵箱消息.郵箱消息由BSP調(diào)用回調(diào)函數(shù)發(fā)送;2)BSP緩沖區(qū)(BSP BUF):BSP緩沖區(qū)負(fù)責(zé)存放微碼發(fā)給主CPU的消息數(shù)據(jù),BSP通過驅(qū)動(dòng)任務(wù)郵箱告知UCOM_TASK有消息到來;3)硬件Wr_FIFO和Rd_FIFO:由硬件維護(hù)的讀、寫FIFO,負(fù)責(zé)主CPU端口消息數(shù)據(jù)的接收和發(fā)送.對(duì)于通信任務(wù)來說,由于BSP&DRIVER對(duì)硬件訪問進(jìn)行了封裝,所以不對(duì)它們直接操作.
1.2 通信模塊UCOM
位于網(wǎng)絡(luò)處理器側(cè),負(fù)責(zé)微碼部分封裝成Vix-v3信元的結(jié)構(gòu)的消息包的發(fā)送和接收,以及控制包的處理.主CPU和NP7250之間通過16位的Local Bus進(jìn)行通訊.AMCC提供了主 CPU和NP7250、NPX5700之間通過消息包進(jìn)行通訊的接口.主CPU將控制或管理消息按一定的格式進(jìn)行封裝,然后發(fā)到NP,NP也同樣按格式將結(jié)果消息返回.除了消息包通訊,主CPU也可以通過Applet與NP7250進(jìn)行通訊[5].圖3中的虛線表示UCOM到硬件FIFO不是直接通信的,而是經(jīng)過了Vix-v3接口和交換模塊.圖4描述了通信模塊和硬件FIFO間這種消息數(shù)據(jù)流(圖中藍(lán)色線),消息封裝在Vix-v3信元中.網(wǎng)絡(luò)處理器和主CPU之間的消息實(shí)際上必須經(jīng)由NPX5700交換模塊,所以,雖然邏輯上通信模塊UCOM處于主CPU和網(wǎng)絡(luò)處理器之間,但在物理上它實(shí)際上是在網(wǎng)絡(luò)處理器的交換幀(Switch Frame)側(cè).UCOM在網(wǎng)絡(luò)處理器中是以微碼程序存在的,對(duì)于發(fā)送來說,通過調(diào)用NPKernel提供的傳送宏來實(shí)現(xiàn);對(duì)于接收來說,是由硬件的SFI(交換-幀接口)負(fù)責(zé)接收Vix-v3結(jié)構(gòu)的信元,然后UCOM中的微碼程序進(jìn)行相應(yīng)的操作處理.
圖4 通信模塊和硬件FIFO間的數(shù)據(jù)流Fig.4Data stream between the communicating module and the hardware FIFO
根據(jù)完成功能的不同,把NP7250微碼通信軟件劃分為三個(gè)子模塊:1)微碼發(fā)送子模塊;2)微碼接收子模塊;3)通信任務(wù)子模塊.
2.1 微碼發(fā)送子模塊
微碼發(fā)送子模塊提供給NP7250微碼程序發(fā)送消息到主CPU的能力,采用NP7250提供的微碼指令和NPkernel宏調(diào)用編程,封裝成微碼宏的形式.子模塊的設(shè)計(jì)要完成以下工作:1)消息包頭的構(gòu)造:微碼向主CPU發(fā)送的消息包的頭結(jié)構(gòu)的構(gòu)造,根據(jù)不同的消息可能會(huì)有不同的消息頭結(jié)構(gòu);2)消息包的發(fā)送:主要是指發(fā)送消息包到主CPU.目前設(shè)計(jì)的發(fā)送到HOST CPU的消息包包括數(shù)據(jù)包和異常指示包.
微碼發(fā)送子模塊處理流程如下:1)構(gòu)造消息包頭(如果是數(shù)據(jù)包,則直接跳到2);2)根據(jù)配置構(gòu)造Vix-v3信元頭;3)根據(jù)消息包類型填寫Vix-v3信元用戶自定義域(UDF)中的消息類型字段(例如,數(shù)據(jù)包填0x00,異常指示包填0x81等);4)調(diào)用NPkernel傳送宏發(fā)送數(shù)據(jù).在本子模塊中,需要設(shè)計(jì)微碼宏:ecp_ind_new//異常包的創(chuàng)建;ecp_ind_send//異常包發(fā)送;fwd_pkt_to_cpu//轉(zhuǎn)發(fā)數(shù)據(jù)包到CPU.
fwd_pkt_to_cpu算法與處理流程:1)查找鏈路映射表和QoS映射表,填寫Vix-v3信元頭結(jié)構(gòu);2)在Vix-v3信元UDF中填寫消息類型字段為0x00;3)調(diào)用xfer_header傳送v3信元頭結(jié)構(gòu),調(diào)用xfer_frame傳送數(shù)據(jù)包;
2.2 微碼接收子模塊
微碼接收子模塊負(fù)責(zé)接收從交換模塊經(jīng)由Vix-v3接口過來的消息,包括普通交換數(shù)據(jù)包,主CPU發(fā)送的數(shù)據(jù)包和NPm控制包.數(shù)據(jù)的接收由硬件完成,對(duì)于微碼程序來說,面對(duì)的Vix-v3信元封裝的包結(jié)構(gòu),子模塊的設(shè)計(jì)要完成以下的工作:1)包的分類:微碼將會(huì)接收到兩種類型的包:數(shù)據(jù)包和控制包,通過Vix-v3信元用戶自定義域(UDF)消息類型字段區(qū)分.嚴(yán)格說來,它是通過UDF最高位來標(biāo)識(shí)數(shù)據(jù)包和控制包的,該比特為1,是控制包,在模塊內(nèi)處理;該比特為0,是數(shù)據(jù)包,直接交給內(nèi)部轉(zhuǎn)發(fā)模塊處理.為了方便描述,命名該比特為IsNPm;2)控制包的處理:在本模塊中,目前設(shè)計(jì)中控制包是指用來同步鏈路映射表和QoS映射表的NPm消息包,處理過程涉及到鏈路映射表和QoS映射表的增加、刪除操作.
2.3 通信任務(wù)子模塊
UCOM_TASK是運(yùn)行在主CPU上的VxWorks任務(wù),負(fù)責(zé)接收微碼發(fā)送給主CPU上應(yīng)用進(jìn)程的消息,采用消息通信的方式;應(yīng)用進(jìn)程調(diào)用接口函數(shù) ULONG SendToUE(BYTE Type,BYTE Port,BYTE*pData,WORD DataLength,DWORD Param,BYTE QoS);將消息發(fā)送給微碼,采用的函數(shù)調(diào)用的方式.通信任務(wù)UCOM_TASK的處理過程如下:
1)初始化驅(qū)動(dòng)任務(wù)(通信任務(wù))參數(shù);2)阻塞方式從驅(qū)動(dòng)任務(wù)郵箱中收取郵箱消息;3)調(diào)用BSP提供的接口函數(shù)NP7250Receive收取BSP緩沖區(qū)中的消息包;4)根據(jù)消息包的類型,確定消息包的目的進(jìn)程;目前定義的消息包和目的進(jìn)程的映射關(guān)系如下:
數(shù)據(jù)包――>IP進(jìn)程;異常指示包――>IP進(jìn)程;統(tǒng)計(jì)消息包――>微碼維護(hù)進(jìn)程
5)調(diào)用OSS提供的派發(fā)函數(shù)OSS_SendFrom?Task將消息包發(fā)送給指定的目的進(jìn)程;6)轉(zhuǎn)2;
接口函數(shù)SendToUE的處理過程如下:檢查輸入?yún)?shù)的合法性;2)根據(jù)輸入?yún)?shù)填寫Vix-v3信元HDR和UDF(因?yàn)镃PU到NP之間的連接在微碼穩(wěn)態(tài)運(yùn)行前建立成功,所以考慮將Vix-v3信元頭固定,避免查找的操作);3)調(diào)用OSS設(shè)備管理模塊提供的發(fā)送函數(shù)OutputToDevice發(fā)送數(shù)據(jù);4)返回;
2.4 相關(guān)主要數(shù)據(jù)結(jié)構(gòu)
2.4.1 Vix-v3信元結(jié)構(gòu)
NP7250(位于 GLI(GE Line Interface)板))和TMB(Traffic Manage Board)板的NPX5700之間數(shù)據(jù)的傳輸采用ViX-v3信元的格式.每個(gè)ViX-v3信元包括16個(gè)頭字節(jié)和48個(gè)數(shù)據(jù)字節(jié).其中信元頭又可分為HDR、UDF(User-Define Field用戶自定義域)和保留字段部分[5].HDR(占8個(gè)字節(jié))主要用于區(qū)分信元的源和目的端口以及特定的流信息.此外,它還包括其它控制信息,如幀數(shù)據(jù)最后一個(gè)信元標(biāo)志位等.發(fā)送信元的HDR里面還包括相反方向的反壓信息.UDF則是作為用戶的自定義區(qū),可用于在網(wǎng)絡(luò)處理器之間傳送幀數(shù)據(jù)時(shí)的一些信息的傳遞.
2.4.2微碼通信消息結(jié)構(gòu)
NP7250和MPC8260之間的通信采用消息包進(jìn)行通信,即互相之間借助于網(wǎng)絡(luò)處理器的通道進(jìn)行通信,消息流示意圖參見圖3.在本模塊中,目前有三種類型的消息包在微碼和主CPU之間進(jìn)行通信,如下:1)數(shù)據(jù)包:數(shù)據(jù)包的封裝即全I(xiàn)P交換平臺(tái)的內(nèi)部媒體流封裝,雙向;2)控制包:即主CPU和 NPU 之間傳輸?shù)?Request(Command)/Response消息,采用NPm消息的控制頭結(jié)構(gòu).目前使用Re?quest消息結(jié)構(gòu),單向從主CPU到NPU;3)異常指示包:即NPU向主CPU發(fā)送異常指示消息,采用自定義消息頭結(jié)構(gòu).單板中各模塊異??蓺w為此類,單向.需要說明的是,所有的消息包都是封裝在Vix-v3信元結(jié)構(gòu)中的.數(shù)據(jù)包無消息頭結(jié)構(gòu).
2.4.3交換連接表結(jié)構(gòu)
交換連接表是GLI板和TMB板之間接口的數(shù)據(jù)結(jié)構(gòu),TMB板負(fù)責(zé)在各GLI板的GE端口之間根據(jù)不同應(yīng)用等級(jí)建立交換連接,然后將交換連接表同步到各GLI單板.交換連接表包括QoS映射表和鏈路映射表兩部分,其結(jié)構(gòu)見表1、表2.
表1 QoS映射表結(jié)構(gòu)Tab.1 Structure of QoS mapping table
表2 鏈路映射表結(jié)構(gòu)Tab.2 Structure of link mapping table
表中字段描述如下:GLI_NUM:目的GLI的邏輯編號(hào);GLI_PORT:目的GLI的出端口號(hào);DSCP:差分服務(wù)代碼點(diǎn);QoS:服務(wù)質(zhì)量;IFD_Index:輸入流描述索引(使用20bits).
通過全I(xiàn)P的開放融合通信體系架構(gòu),可以在單一融合的IP網(wǎng)絡(luò)上運(yùn)行語音、消息、會(huì)議、數(shù)據(jù)等多種通信應(yīng)用,基本的多業(yè)務(wù)接入、多設(shè)備集成,逐步發(fā)展到支持各種標(biāo)準(zhǔn)化接口,打造一個(gè)全新的一體化集成通信平臺(tái),滿足應(yīng)用交互通信的需求.
[1]郭曉軍.構(gòu)建全I(xiàn)P的開放融合通信平臺(tái)[EB/OL].(2009-06-08)/[2011-02-26].http://www.h3c.com.cn/Technol?ogy_Doc/200906/66330
[2]AMCC.nPX5700Multi-ServiceTrafficManagement Platform Reference Manual[Z].American:AMCC Inc,2004:15.
[3]AMCC.NP7250-BA1 OC-48 Network Processor Data?sheet[Z].American:AMCC Inc,2004:10.
[4]River W.VxWorks Programmer’s Guide[Z].American:Wind River Systems,Inc 2003:183.
[5]AMCC.NP7250 OC-48 Network Processor Program Manual[Z].American:AMCC Inc,2004:17,61.
Design and Realization of Microcode Communication Module Based on MPC8260 And NP7250
HE Bingyan1,JIANG Shuai2
(1.Computer Engineering College,JiMei university,Xiamen361021,China;
2.ZTE Corporation,Shenzhe518000,China)
This paper presented a scheme of building all-IP platform based on AMCC’s switch chipsets including NP7250、NPX5700 and NPX5800,mainly introducing designing and realization methods of the microcode communicat?ing module between the high-powered embedded microprocessor MPC8260 and the network processor NP7250.The mi?crocode communicating module included two parts:one part is the communicating module—UCOM located in the user data side(network processor unit);the other is communicating task of UCOM_TASK located in the control side(host cpu).
microcode subsystem;Network Processor Unit;ViX versionIII;VxWorks
TP 311
A
1674-4942(2011)03-0274-05
2011-04-30
福建省科技廳重點(diǎn)項(xiàng)目(2009H0037)
黃 瀾