《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 10G網(wǎng)絡(luò)處理器驅(qū)動(dòng)軟件的設(shè)計(jì)與實(shí)現(xiàn)

10G網(wǎng)絡(luò)處理器驅(qū)動(dòng)軟件的設(shè)計(jì)與實(shí)現(xiàn)

2008-09-08
作者:李希鵬1,2,劉乃安1,宋國棟2

  摘 要: 在對(duì)10G" title="10G">10G城域網(wǎng)技術(shù)研究的基礎(chǔ)上,提出了10G網(wǎng)絡(luò)處理器" title="網(wǎng)絡(luò)處理器">網(wǎng)絡(luò)處理器的驅(qū)動(dòng)程序設(shè)計(jì)中的一些思路并對(duì)此展開一定的分析和研究。
  關(guān)鍵詞: 10G以太網(wǎng) 網(wǎng)絡(luò)處理器 驅(qū)動(dòng) 應(yīng)用程序接口 中斷服務(wù)程序


  網(wǎng)絡(luò)技術(shù)的高速發(fā)展使下一代網(wǎng)絡(luò)技術(shù)不斷迎接新的挑戰(zhàn)。網(wǎng)絡(luò)處理核心從傳統(tǒng)的基于GPP(General Purpose Processor)的設(shè)計(jì)到基于ASIC(Application Specific Integrated Circuit)的設(shè)計(jì)再到基于網(wǎng)絡(luò)處理器NP(Network Processor)的設(shè)計(jì),不斷向著高性能和高靈活性的方向發(fā)展。隨著城域網(wǎng)技術(shù)的發(fā)展,近年來許多廠家推出了10G的以太網(wǎng)設(shè)備。10G網(wǎng)絡(luò)處理器是實(shí)現(xiàn)10G以太網(wǎng)交換技術(shù)的關(guān)鍵點(diǎn),10G網(wǎng)絡(luò)處理器的開發(fā)成為目前城域網(wǎng)建設(shè)中的一個(gè)重要環(huán)節(jié)。
  本文介紹了10G的網(wǎng)絡(luò)處理器及其驅(qū)動(dòng)程序,并對(duì)驅(qū)動(dòng)程序的開發(fā)方法進(jìn)行了研究和探討。
1 網(wǎng)絡(luò)處理器和驅(qū)動(dòng)程序
  網(wǎng)絡(luò)處理器是一種可編程器件,它特定地應(yīng)用于通信領(lǐng)域的多種任務(wù),例如數(shù)據(jù)包處理、協(xié)議分析、路由查找、數(shù)據(jù)的匯聚、防火墻、QoS等。網(wǎng)絡(luò)處理器具有多協(xié)議支持、優(yōu)化的體系結(jié)構(gòu)、專用的硬件設(shè)計(jì)和高速的數(shù)據(jù)轉(zhuǎn)發(fā)處理、高性能、高可靠性、豐富的流分類、擁塞管理、隊(duì)列調(diào)度、靈活的軟件開發(fā)和升級(jí)、靈活擴(kuò)展和組合等特點(diǎn)。
  網(wǎng)絡(luò)處理器器件內(nèi)部由若干個(gè)微碼處理器和若干硬件協(xié)議處理器組成,多個(gè)微碼處理器在網(wǎng)絡(luò)處理器內(nèi)部并行處理,通過預(yù)先編制的微碼來控制處理數(shù)據(jù)包的操作。而對(duì)于一些復(fù)雜的標(biāo)準(zhǔn)操作(如內(nèi)存操作、路由表" title="路由表">路由表查找算法、QoS的擁塞控制算法、流量調(diào)度算法等)則采用硬件協(xié)議處理器進(jìn)一步提高處理性能,從而實(shí)現(xiàn)業(yè)務(wù)的高靈活性與高性能的有機(jī)結(jié)合。
  目前的網(wǎng)絡(luò)處理器系列有:面向網(wǎng)絡(luò)接入終端的設(shè)備;支持企業(yè)、電信市場(chǎng)接入和邊緣應(yīng)用的設(shè)備(支持2.5Gbps數(shù)據(jù)傳輸率);支持網(wǎng)絡(luò)核心應(yīng)用的設(shè)備(支持10Gbps數(shù)據(jù)傳輸率)等。
  網(wǎng)絡(luò)處理器的驅(qū)動(dòng)程序在系統(tǒng)中位于底層BSP(Board Support Packet)和上層軟件之間,如圖1所示。驅(qū)動(dòng)程序是建立起上下層軟件之間通信的一個(gè)橋梁,為上下層軟件提供相應(yīng)的接口,能夠把上層的命令解釋為底層軟硬件可以識(shí)別的代碼寫入芯片的寄存器中,包括兩個(gè)功能模塊:底層驅(qū)動(dòng)模塊" title="驅(qū)動(dòng)模塊">驅(qū)動(dòng)模塊和業(yè)務(wù)驅(qū)動(dòng)模塊。底層驅(qū)動(dòng)模塊提供NP芯片初始化、配置、裝載微碼、建立維護(hù)NP查找結(jié)構(gòu)、中斷處理、NP內(nèi)部表項(xiàng)維護(hù)、 NP實(shí)時(shí)檢測(cè)等功能;業(yè)務(wù)驅(qū)動(dòng)模塊為上層應(yīng)用提供數(shù)據(jù)包發(fā)送和接收、路由表操作、ARP表操作、VLAN操作、端口表操作、MAC表操作等功能。


2 驅(qū)動(dòng)程序開發(fā)方法研究
  網(wǎng)絡(luò)處理器的芯片廠家需要提供相應(yīng)的驅(qū)動(dòng)開發(fā)軟件包,開發(fā)包中主要包括封裝了特定代碼的庫文件和說明文檔,這些庫文件在系統(tǒng)編譯時(shí)進(jìn)行鏈接。開發(fā)人員通過調(diào)用驅(qū)動(dòng)開發(fā)包中的API(Application Programming Interface)來完成對(duì)芯片的一系列操作。
2.1 芯片的初始化
  包括正確地初始化網(wǎng)絡(luò)處理器芯片,使芯片能正常工作。網(wǎng)絡(luò)處理器芯片作為PCI設(shè)備掛在CPU的PCI總線上,它通過PCI總線識(shí)別,系統(tǒng)為其分配相應(yīng)的PCI地址和中斷號(hào)。CPU通過網(wǎng)絡(luò)處理器的PCI地址對(duì)NP內(nèi)部的寄存器進(jìn)行訪問。
  NP初始化步驟:
  (1)調(diào)用識(shí)別函數(shù)識(shí)別NP:如果與廠商號(hào)相符,則說明NP已經(jīng)被識(shí)別。
  (2)配置NP的PCI設(shè)備:為 NP分配內(nèi)存地址;為 NP配置中斷號(hào)。
  (3)注冊(cè)PCI中斷處理程序" title="中斷處理程序">中斷處理程序:安裝芯片的中斷處理程序;將NP的PCI中斷處理程序與中斷號(hào)關(guān)聯(lián)。通常該中斷處理程序內(nèi)部會(huì)調(diào)用一個(gè)全局的函數(shù)指針,開發(fā)者可以對(duì)其賦值,使能NP的PCI中斷。
  (4)中斷事件處理方式:通常網(wǎng)絡(luò)處理器或交換芯片都定義有多種中斷事件,這些中斷事件由中斷事件狀態(tài)寄存器和中斷屏蔽寄存器進(jìn)行控制。NP會(huì)定義若干種中斷事件,每種中斷用一個(gè)二進(jìn)制位表示,該二進(jìn)制位的取值決定中斷事件的中斷狀態(tài)(如:1表示有中斷,0表示無中斷)。中斷屏蔽寄存器則決定是否對(duì)中斷進(jìn)行處理。
  (5)NP的中斷事件類型:
  數(shù)據(jù)幀中斷:當(dāng)NP需要向CPU發(fā)數(shù)據(jù)包時(shí),就產(chǎn)生此中斷,以通知主控系統(tǒng)有相關(guān)的數(shù)據(jù)幀和該數(shù)據(jù)幀的指針需要處理;
  查找中斷:當(dāng)NP的硬件表進(jìn)行更新時(shí),會(huì)產(chǎn)生此中斷。例如,NP的MAC地址學(xué)習(xí)機(jī)制和地址老化機(jī)制更新MAC表后,會(huì)將更新結(jié)果通過消息的形式上報(bào)給主控系統(tǒng);
  統(tǒng)計(jì)中斷:當(dāng)NP的統(tǒng)計(jì)隊(duì)列有消息時(shí),產(chǎn)生此中斷,通知主控系統(tǒng)某個(gè)統(tǒng)計(jì)計(jì)數(shù)器已經(jīng)到達(dá)閾值。
  (6)中斷處理流程如圖2所示。當(dāng)主機(jī)接收到一個(gè)NP發(fā)生的PCI中斷時(shí),NP的PCI ISR被觸發(fā),PCI ISR確定哪一個(gè)NP發(fā)生中斷,將該NP編號(hào)通過消息的方式傳給驅(qū)動(dòng)任務(wù),驅(qū)動(dòng)任務(wù)從中斷消息中獲得NP的ID號(hào)、中斷屏蔽寄存器的值和中斷事件寄存器的值,對(duì)中斷屏蔽寄存器和中斷事件寄存器的值進(jìn)行位操作,對(duì)操作結(jié)果進(jìn)行判斷,進(jìn)而確定是否調(diào)用該中斷事件的中斷處理程序。
  (7)初始化芯片上的數(shù)據(jù)通道:復(fù)位芯片上的寄存器并賦給默認(rèn)值;指定硬件搜索引擎?zhèn)€數(shù);設(shè)定統(tǒng)計(jì)計(jì)數(shù)器的門限值;設(shè)置外部存儲(chǔ)器值;啟動(dòng)通道進(jìn)入接收中斷狀態(tài)。
  (8)加載硬件表結(jié)構(gòu)和微碼:硬件表結(jié)構(gòu)包括二層表、三層表、路由表、三層接口表、VLAN表等;表結(jié)構(gòu)在微碼中定義;微碼中定義了數(shù)據(jù)包收發(fā)的方式和相應(yīng)的操作方法。

?


2.2 數(shù)據(jù)包處理
  在中斷處理的基礎(chǔ)上進(jìn)行數(shù)據(jù)包的接收,如圖3所示。CPU通過中斷方式接收來自網(wǎng)絡(luò)處理器的數(shù)據(jù)包。
  (1)CPU接收來自網(wǎng)絡(luò)處理器數(shù)據(jù)包中斷后,會(huì)在驅(qū)動(dòng)任務(wù)中調(diào)用響應(yīng)的數(shù)據(jù)包的ISR,在該ISR中將數(shù)據(jù)包發(fā)給上層協(xié)議。
  (2)按協(xié)議標(biāo)準(zhǔn)對(duì)數(shù)據(jù)包格式或內(nèi)容進(jìn)行修改和轉(zhuǎn)換。
  (3)通過驅(qū)動(dòng)API提供的函數(shù)發(fā)送數(shù)據(jù)包。
2.3 硬件表操作
  硬件表是NP中由微碼定義的表查找結(jié)構(gòu),由NP完成MAC地址查找、VALN表添加、路由表搜索等各種表?xiàng)l目的添加和刪除等操作。
  (1)由微碼定義和創(chuàng)建硬件表的種類、長度、編號(hào)等信息。
  (2)由驅(qū)動(dòng)在芯片初始化過程中加載硬件表結(jié)構(gòu)并啟動(dòng)微碼。
  (3)驅(qū)動(dòng)程序中要為上層協(xié)議提供硬件表添加、刪除、修改、顯示等接口。
  隨著10G以太網(wǎng)技術(shù)的發(fā)展,已經(jīng)有越來越多的廠家推出了自己的NP產(chǎn)品。高速網(wǎng)絡(luò)處理器已經(jīng)成為當(dāng)前以太網(wǎng)研究中的一個(gè)重點(diǎn),同時(shí)需要對(duì)芯片的驅(qū)動(dòng)程序深入開發(fā)。本文對(duì)10G網(wǎng)絡(luò)處理器的驅(qū)動(dòng)程序設(shè)計(jì)進(jìn)行了分析和研究,提出了驅(qū)動(dòng)軟件開發(fā)中的一些思路。由于目前與10G以太網(wǎng)技術(shù)相關(guān)標(biāo)準(zhǔn)和技術(shù)的成熟和完善還需要一定的時(shí)間;各廠家使用不同的軟硬件開發(fā)環(huán)境;存在不同的嵌入式操作系統(tǒng);以及一些廠家使用專用的代碼開發(fā)和調(diào)試工具等因素,使NP及其驅(qū)動(dòng)程序的發(fā)展還需要進(jìn)一步地提高。今后的主要工作包括:提高不同廠家的設(shè)備之間互通性和兼容性;加強(qiáng)NP軟件代碼的規(guī)范性和可移植性;完善NP驅(qū)動(dòng)軟件的開發(fā)方法。
  10G網(wǎng)絡(luò)處理器作為下一代網(wǎng)絡(luò)的關(guān)鍵,以其多方面的優(yōu)勢(shì),可以較好地滿足未來高速網(wǎng)絡(luò)技術(shù)發(fā)展的需求,具有非常廣泛的發(fā)展空間。
參考文獻(xiàn)
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

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。