摘 要: 在對10G" title="10G">10G城域網(wǎng)技術(shù)研究的基礎(chǔ)上,,提出了10G網(wǎng)絡(luò)處理器" title="網(wǎng)絡(luò)處理器">網(wǎng)絡(luò)處理器的驅(qū)動程序設(shè)計中的一些思路并對此展開一定的分析和研究,。
關(guān)鍵詞: 10G以太網(wǎng) 網(wǎng)絡(luò)處理器 驅(qū)動 應(yīng)用程序接口 中斷服務(wù)程序
網(wǎng)絡(luò)技術(shù)的高速發(fā)展使下一代網(wǎng)絡(luò)技術(shù)不斷迎接新的挑戰(zhàn)。網(wǎng)絡(luò)處理核心從傳統(tǒng)的基于GPP(General Purpose Processor)的設(shè)計到基于ASIC(Application Specific Integrated Circuit)的設(shè)計再到基于網(wǎng)絡(luò)處理器NP(Network Processor)的設(shè)計,不斷向著高性能和高靈活性的方向發(fā)展。隨著城域網(wǎng)技術(shù)的發(fā)展,近年來許多廠家推出了10G的以太網(wǎng)設(shè)備,。10G網(wǎng)絡(luò)處理器是實現(xiàn)10G以太網(wǎng)交換技術(shù)的關(guān)鍵點,10G網(wǎng)絡(luò)處理器的開發(fā)成為目前城域網(wǎng)建設(shè)中的一個重要環(huán)節(jié),。
本文介紹了10G的網(wǎng)絡(luò)處理器及其驅(qū)動程序,,并對驅(qū)動程序的開發(fā)方法進行了研究和探討。
1 網(wǎng)絡(luò)處理器和驅(qū)動程序
網(wǎng)絡(luò)處理器是一種可編程器件,,它特定地應(yīng)用于通信領(lǐng)域的多種任務(wù),,例如數(shù)據(jù)包處理、協(xié)議分析,、路由查找,、數(shù)據(jù)的匯聚、防火墻,、QoS等,。網(wǎng)絡(luò)處理器具有多協(xié)議支持、優(yōu)化的體系結(jié)構(gòu),、專用的硬件設(shè)計和高速的數(shù)據(jù)轉(zhuǎn)發(fā)處理,、高性能、高可靠性,、豐富的流分類,、擁塞管理、隊列調(diào)度,、靈活的軟件開發(fā)和升級,、靈活擴展和組合等特點。
網(wǎng)絡(luò)處理器器件內(nèi)部由若干個微碼處理器和若干硬件協(xié)議處理器組成,,多個微碼處理器在網(wǎng)絡(luò)處理器內(nèi)部并行處理,,通過預(yù)先編制的微碼來控制處理數(shù)據(jù)包的操作。而對于一些復(fù)雜的標(biāo)準(zhǔn)操作(如內(nèi)存操作,、路由表" title="路由表">路由表查找算法,、QoS的擁塞控制算法、流量調(diào)度算法等)則采用硬件協(xié)議處理器進一步提高處理性能,,從而實現(xiàn)業(yè)務(wù)的高靈活性與高性能的有機結(jié)合,。
目前的網(wǎng)絡(luò)處理器系列有:面向網(wǎng)絡(luò)接入終端的設(shè)備;支持企業(yè),、電信市場接入和邊緣應(yīng)用的設(shè)備(支持2.5Gbps數(shù)據(jù)傳輸率),;支持網(wǎng)絡(luò)核心應(yīng)用的設(shè)備(支持10Gbps數(shù)據(jù)傳輸率)等。
網(wǎng)絡(luò)處理器的驅(qū)動程序在系統(tǒng)中位于底層BSP(Board Support Packet)和上層軟件之間,,如圖1所示,。驅(qū)動程序是建立起上下層軟件之間通信的一個橋梁,為上下層軟件提供相應(yīng)的接口,,能夠把上層的命令解釋為底層軟硬件可以識別的代碼寫入芯片的寄存器中,,包括兩個功能模塊:底層驅(qū)動模塊" title="驅(qū)動模塊">驅(qū)動模塊和業(yè)務(wù)驅(qū)動模塊。底層驅(qū)動模塊提供NP芯片初始化,、配置,、裝載微碼、建立維護NP查找結(jié)構(gòu),、中斷處理,、NP內(nèi)部表項維護、 NP實時檢測等功能,;業(yè)務(wù)驅(qū)動模塊為上層應(yīng)用提供數(shù)據(jù)包發(fā)送和接收,、路由表操作、ARP表操作,、VLAN操作,、端口表操作、MAC表操作等功能,。
2 驅(qū)動程序開發(fā)方法研究
網(wǎng)絡(luò)處理器的芯片廠家需要提供相應(yīng)的驅(qū)動開發(fā)軟件包,,開發(fā)包中主要包括封裝了特定代碼的庫文件和說明文檔,這些庫文件在系統(tǒng)編譯時進行鏈接,。開發(fā)人員通過調(diào)用驅(qū)動開發(fā)包中的API(Application Programming Interface)來完成對芯片的一系列操作,。
2.1 芯片的初始化
包括正確地初始化網(wǎng)絡(luò)處理器芯片,使芯片能正常工作,。網(wǎng)絡(luò)處理器芯片作為PCI設(shè)備掛在CPU的PCI總線上,,它通過PCI總線識別,系統(tǒng)為其分配相應(yīng)的PCI地址和中斷號,。CPU通過網(wǎng)絡(luò)處理器的PCI地址對NP內(nèi)部的寄存器進行訪問,。
NP初始化步驟:
(1)調(diào)用識別函數(shù)識別NP:如果與廠商號相符,,則說明NP已經(jīng)被識別。
(2)配置NP的PCI設(shè)備:為 NP分配內(nèi)存地址,;為 NP配置中斷號,。
(3)注冊PCI中斷處理程序" title="中斷處理程序">中斷處理程序:安裝芯片的中斷處理程序;將NP的PCI中斷處理程序與中斷號關(guān)聯(lián),。通常該中斷處理程序內(nèi)部會調(diào)用一個全局的函數(shù)指針,,開發(fā)者可以對其賦值,使能NP的PCI中斷,。
(4)中斷事件處理方式:通常網(wǎng)絡(luò)處理器或交換芯片都定義有多種中斷事件,,這些中斷事件由中斷事件狀態(tài)寄存器和中斷屏蔽寄存器進行控制。NP會定義若干種中斷事件,,每種中斷用一個二進制位表示,,該二進制位的取值決定中斷事件的中斷狀態(tài)(如:1表示有中斷,0表示無中斷),。中斷屏蔽寄存器則決定是否對中斷進行處理,。
(5)NP的中斷事件類型:
數(shù)據(jù)幀中斷:當(dāng)NP需要向CPU發(fā)數(shù)據(jù)包時,就產(chǎn)生此中斷,,以通知主控系統(tǒng)有相關(guān)的數(shù)據(jù)幀和該數(shù)據(jù)幀的指針需要處理,;
查找中斷:當(dāng)NP的硬件表進行更新時,會產(chǎn)生此中斷,。例如,,NP的MAC地址學(xué)習(xí)機制和地址老化機制更新MAC表后,會將更新結(jié)果通過消息的形式上報給主控系統(tǒng),;
統(tǒng)計中斷:當(dāng)NP的統(tǒng)計隊列有消息時,,產(chǎn)生此中斷,通知主控系統(tǒng)某個統(tǒng)計計數(shù)器已經(jīng)到達(dá)閾值,。
(6)中斷處理流程如圖2所示,。當(dāng)主機接收到一個NP發(fā)生的PCI中斷時,NP的PCI ISR被觸發(fā),,PCI ISR確定哪一個NP發(fā)生中斷,,將該NP編號通過消息的方式傳給驅(qū)動任務(wù),驅(qū)動任務(wù)從中斷消息中獲得NP的ID號,、中斷屏蔽寄存器的值和中斷事件寄存器的值,,對中斷屏蔽寄存器和中斷事件寄存器的值進行位操作,對操作結(jié)果進行判斷,,進而確定是否調(diào)用該中斷事件的中斷處理程序,。
(7)初始化芯片上的數(shù)據(jù)通道:復(fù)位芯片上的寄存器并賦給默認(rèn)值;指定硬件搜索引擎?zhèn)€數(shù);設(shè)定統(tǒng)計計數(shù)器的門限值,;設(shè)置外部存儲器值,;啟動通道進入接收中斷狀態(tài)。
(8)加載硬件表結(jié)構(gòu)和微碼:硬件表結(jié)構(gòu)包括二層表,、三層表,、路由表、三層接口表,、VLAN表等,;表結(jié)構(gòu)在微碼中定義,;微碼中定義了數(shù)據(jù)包收發(fā)的方式和相應(yīng)的操作方法,。
?
2.2 數(shù)據(jù)包處理
在中斷處理的基礎(chǔ)上進行數(shù)據(jù)包的接收,如圖3所示,。CPU通過中斷方式接收來自網(wǎng)絡(luò)處理器的數(shù)據(jù)包,。
(1)CPU接收來自網(wǎng)絡(luò)處理器數(shù)據(jù)包中斷后,會在驅(qū)動任務(wù)中調(diào)用響應(yīng)的數(shù)據(jù)包的ISR,,在該ISR中將數(shù)據(jù)包發(fā)給上層協(xié)議,。
(2)按協(xié)議標(biāo)準(zhǔn)對數(shù)據(jù)包格式或內(nèi)容進行修改和轉(zhuǎn)換。
(3)通過驅(qū)動API提供的函數(shù)發(fā)送數(shù)據(jù)包,。
2.3 硬件表操作
硬件表是NP中由微碼定義的表查找結(jié)構(gòu),,由NP完成MAC地址查找、VALN表添加,、路由表搜索等各種表條目的添加和刪除等操作,。
(1)由微碼定義和創(chuàng)建硬件表的種類、長度,、編號等信息,。
(2)由驅(qū)動在芯片初始化過程中加載硬件表結(jié)構(gòu)并啟動微碼。
(3)驅(qū)動程序中要為上層協(xié)議提供硬件表添加,、刪除,、修改、顯示等接口,。
隨著10G以太網(wǎng)技術(shù)的發(fā)展,,已經(jīng)有越來越多的廠家推出了自己的NP產(chǎn)品。高速網(wǎng)絡(luò)處理器已經(jīng)成為當(dāng)前以太網(wǎng)研究中的一個重點,,同時需要對芯片的驅(qū)動程序深入開發(fā),。本文對10G網(wǎng)絡(luò)處理器的驅(qū)動程序設(shè)計進行了分析和研究,提出了驅(qū)動軟件開發(fā)中的一些思路,。由于目前與10G以太網(wǎng)技術(shù)相關(guān)標(biāo)準(zhǔn)和技術(shù)的成熟和完善還需要一定的時間,;各廠家使用不同的軟硬件開發(fā)環(huán)境;存在不同的嵌入式操作系統(tǒng),;以及一些廠家使用專用的代碼開發(fā)和調(diào)試工具等因素,,使NP及其驅(qū)動程序的發(fā)展還需要進一步地提高,。今后的主要工作包括:提高不同廠家的設(shè)備之間互通性和兼容性;加強NP軟件代碼的規(guī)范性和可移植性,;完善NP驅(qū)動軟件的開發(fā)方法,。
10G網(wǎng)絡(luò)處理器作為下一代網(wǎng)絡(luò)的關(guān)鍵,以其多方面的優(yōu)勢,,可以較好地滿足未來高速網(wǎng)絡(luò)技術(shù)發(fā)展的需求,,具有非常廣泛的發(fā)展空間。
參考文獻
1 IEEE 802.3ae-2002. IEEE Standard for Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications-Media Access Control (MAC) Parameters. Physical Layer and Management Parameters for 10 Gb/s Operation
2 IEEE 802.3-2002 Edition. IEEE Standard for Information technology--Telecommunications and information exchange between systems--Local and metropolitan area networks--Specific requirements--Part 3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications
3 IEEE 802.3-2002 Edition. IEEE Standard for Information technology--Telecommunications and information exchange between systems--Local and metropolitan area networks--Specific requirements--Part 3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications. By EZchip Technologies Ltd., 2003.
4 陳一帥,,趙永祥.網(wǎng)絡(luò)處理器及應(yīng)用.網(wǎng)絡(luò)世界, 2000;7