專利名稱:一種數(shù)據(jù)包生成器和數(shù)據(jù)包生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)處理技術(shù),更具體地說,涉及一種數(shù)據(jù)包生成器和數(shù) 才居包生成方法。
背景技術(shù):
在網(wǎng)絡(luò)設(shè)備的研發(fā)和生產(chǎn)過程中,經(jīng)常需要對網(wǎng)絡(luò)設(shè)備的性能(例如數(shù)據(jù) 包轉(zhuǎn)發(fā)速度)進行測試。測試過程需要模擬網(wǎng)絡(luò)設(shè)備的日常工作環(huán)境,然后測 試網(wǎng)絡(luò)設(shè)備在模擬環(huán)境下的性能表現(xiàn)。由于網(wǎng)絡(luò)設(shè)備的主要任務(wù)是接收和轉(zhuǎn)發(fā) 數(shù)據(jù)包,因此,在測試過程中,需要使用一種設(shè)備來生成數(shù)據(jù)包,然后將生成 的數(shù)據(jù)包發(fā)送給需要測試的網(wǎng)絡(luò)設(shè)備。這種用于生成數(shù)據(jù)包的設(shè)備就是數(shù)據(jù)包 生成器。
目前市場上的數(shù)據(jù)包生成器大致可分為兩類, 一類是基于普通PC (Personal Computer,個人計算機)的數(shù)據(jù)包生成軟件,如Sniffer軟件;另一 類是基于FPGA (Field Programmable Gate Array,現(xiàn)場可編程門陣列)的數(shù)據(jù) 通信測試儀,如Spirent公司生產(chǎn)的Smartbits系列測試儀。
基于PC的數(shù)據(jù)包生成4允件的性能與PC性能密切相關(guān),由于PC性能往 往不高,因此這類數(shù)據(jù)包生成軟件的性能也較差。此外,目前PC使用的網(wǎng)卡 接口的最高帶寬僅為千兆,這也決定此類軟件無法擔負大型網(wǎng)絡(luò)設(shè)備的測試任 務(wù)。
基于FPGA的數(shù)據(jù)通信測試儀往往價格昂貴,可編程性和可移植性差,這 些缺點都限制了這類數(shù)據(jù)通信測試儀的普及推廣。
因此,需要一種數(shù)據(jù)包生成方案,能夠克服現(xiàn)有基于PC的數(shù)據(jù)包生成軟 件性能差、網(wǎng)絡(luò)接口帶寬低的缺陷,和現(xiàn)有基于FPGA的數(shù)據(jù)通信測試儀價格 昂貴、可編程性和可移植性差的缺陷。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)基于PC的數(shù)據(jù)包生成軟件
性能差、網(wǎng)絡(luò)接口帶寬低的缺陷,和現(xiàn)有基于FPGA的數(shù)據(jù)通信測試儀價格昂 貴、可編程性和可移植性差的缺陷,提供一種數(shù)據(jù)包生成器和數(shù)據(jù)包生成方法。 本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是構(gòu)造一種數(shù)據(jù)包生成器,包
括
輸入接口 ,用于接收并轉(zhuǎn)發(fā)數(shù)據(jù)包配置信息;
網(wǎng)絡(luò)處理器,與輸入接口相連,用于接收轉(zhuǎn)發(fā)來的數(shù)據(jù)包配置信息,生成 數(shù)據(jù)包模板,并以多線程方式對數(shù)據(jù)包模板進行復(fù)制,發(fā)出復(fù)制得到的數(shù)據(jù)包;
網(wǎng)絡(luò)輸出端口,與網(wǎng)絡(luò)處理器相連,用于接收并發(fā)出由網(wǎng)絡(luò)處理器發(fā)來的 數(shù)據(jù)包。
在本發(fā)明所述的數(shù)據(jù)包生成器中,所述網(wǎng)絡(luò)處理器進一步包括 核心處理器,與所述輸入接口相連,用于接收所述數(shù)據(jù)包配置信息,生成
并發(fā)出所述數(shù)據(jù)包模板,并分配發(fā)送任務(wù),發(fā)出發(fā)送任務(wù)信息;
多個發(fā)送《鼓引擎,與核心處理器相連,用于接收各自的數(shù)據(jù)包模板和發(fā)送
任務(wù)信息,并依據(jù)發(fā)送任務(wù)信息對數(shù)據(jù)包模板進行復(fù)制,發(fā)出復(fù)制得到的數(shù)據(jù)
包;
輸出接口,與所述多個發(fā)送微引擎和網(wǎng)絡(luò)輸出端口相連,用于接收多個發(fā) 送微引擎發(fā)出的數(shù)據(jù)包并發(fā)往網(wǎng)絡(luò)輸出端口 。
在本發(fā)明所述的數(shù)據(jù)包生成器中,所述數(shù)據(jù)包配置信息包括數(shù)據(jù)包構(gòu)成信 息和數(shù)據(jù)包數(shù)量信息,所述核心處理器進一步包括
信息提JM莫塊,用于接收數(shù)據(jù)包配置信息,提取數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包 數(shù)量信息,發(fā)出數(shù)據(jù)包構(gòu)成信息,依據(jù)數(shù)據(jù)包數(shù)量信息分配發(fā)送任務(wù),生成并 發(fā)出所述發(fā)送任^f言息;
模板生成模塊,與信息提取模塊相連,用于接收數(shù)據(jù)包構(gòu)成信息,生成并 發(fā)出所述數(shù)據(jù)包模板。
在本發(fā)明所述的數(shù)據(jù)包生成器中,還包括任務(wù)存儲器,其進一步包括
模板存儲器,用于接收并存儲所述數(shù)據(jù)包模板;便箋存儲器,包括
數(shù)量存儲區(qū),用于接收并存儲所述發(fā)送任務(wù)信息;
模板地址存儲區(qū),用于記錄數(shù)據(jù)包模板在模板存儲器中的存儲位置。
在本發(fā)明所述的數(shù)據(jù)包生成器中,還包括 控制微引擎,包括
發(fā)送控制模塊,用于在所述模板地址存儲區(qū)中讀取數(shù)據(jù)包模板的存儲 位置,發(fā)往所述多個發(fā)送微引擎; 每一發(fā)送^f敖引擎進一步包括
數(shù)據(jù)包生成模塊,用于接收數(shù)據(jù)包模板的存儲位置,讀取對應(yīng)的數(shù)據(jù) 包模板并進行復(fù)制,發(fā)出復(fù)制得到的數(shù)據(jù)包;其中,
發(fā)送控制模塊在所述數(shù)量存儲區(qū)中讀取發(fā)送微引擎的發(fā)送任務(wù)信息, 按照該發(fā)送任務(wù)信息控制數(shù)據(jù)包生成模塊對數(shù)據(jù)包模板進行復(fù)制。 本發(fā)明還提供了一種數(shù)據(jù)包生成方法,包括如下步驟
51、 接收數(shù)據(jù)包配置信息;
52、 依據(jù)數(shù)據(jù)包配置信息生成數(shù)據(jù)包模板;
53、 以多線程方式并行復(fù)制數(shù)據(jù)包才莫々反,發(fā)出復(fù)制得到的數(shù)據(jù)包。 在本發(fā)明所述的數(shù)據(jù)包生成方法中,所述數(shù)據(jù)包配置信息包括數(shù)據(jù)包構(gòu)成
信息和數(shù)據(jù)包數(shù)量信息。
在本發(fā)明所述的數(shù)據(jù)包生成方法中,所述步驟S1還包括
S11 、在所述數(shù)據(jù)包配置信息中提取數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù)量信息。
在本發(fā)明所述的數(shù)據(jù)包生成方法中,所述步驟S2進一步包括
521、 依據(jù)所述數(shù)據(jù)包構(gòu)成信息生成所述數(shù)據(jù)包模板;
522、 依據(jù)所述數(shù)據(jù)包數(shù)量信息分配發(fā)送任務(wù),生成發(fā)送任務(wù)信息;
523、 將生成的數(shù)據(jù)包模板和發(fā)送任務(wù)信息發(fā)往多條發(fā)送線程。 在本發(fā)明所述的數(shù)據(jù)包生成方法中,所述步驟S3進一步包括
S31 、所述多條發(fā)送線程依據(jù)發(fā)送任務(wù)信息并行對數(shù)據(jù)包模板進行復(fù)制, 發(fā)出復(fù)制得到的數(shù)據(jù)包。
7實施本發(fā)明的技術(shù)方案,具有以下有益效果借助網(wǎng)絡(luò)處理器的強大處理 能力,本發(fā)明技術(shù)方案提供的數(shù)據(jù)包發(fā)送速率能夠充分滿足現(xiàn)有各類大、中、 小型網(wǎng)絡(luò)設(shè)備的測試需要;通過采用豐富的接口類型,本發(fā)明提供的數(shù)據(jù)包生 成器可實現(xiàn)與現(xiàn)有各類網(wǎng)絡(luò)設(shè)備的輕松互聯(lián);憑借網(wǎng)絡(luò)處理器出色的通用性和 普及率,本發(fā)明提供的數(shù)據(jù)包生成器具有非常靈活的編程性和移植性,且成本 低廉。
下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中 圖1是依據(jù)本發(fā)明一實施例的數(shù)據(jù)包生成器100的結(jié)構(gòu)示意圖; 圖2^」依據(jù)本發(fā)明一實施例的網(wǎng)絡(luò)處理器200的結(jié)構(gòu)示意圖; 圖3是依據(jù)本發(fā)明一實施例的網(wǎng)絡(luò)處理器300的結(jié)構(gòu)示意圖; 圖5是依據(jù)本發(fā)明一實施例的數(shù)據(jù)包生成方法500的流程圖; 圖4是依據(jù)本發(fā)明一實施例的數(shù)據(jù)包生成方法400的流程圖; 圖6是依據(jù)本發(fā)明一實施例的數(shù)據(jù)包生成方法600的流程圖。
具體實施例方式
本發(fā)明提供了 一種基于網(wǎng)絡(luò)處理器的數(shù)據(jù)包生成方案,可借助網(wǎng)絡(luò)處理器 強大的并行處理能力,提供可充分滿足現(xiàn)有各類大中小型網(wǎng)絡(luò)設(shè)備測試需要的 數(shù)據(jù)包發(fā)送速率,且接口更富,可實現(xiàn)與現(xiàn)有各類網(wǎng)絡(luò)設(shè)備的輕松互聯(lián),下面 就結(jié)合附圖和具體實施例來詳細描述本發(fā)明提供的技術(shù)方案。
圖1是依據(jù)本發(fā)明一實施例的數(shù)據(jù)包生成器100的結(jié)構(gòu)示意圖。如圖1 所示,數(shù)據(jù)包生成器100包括順次相連的輸入接口 102、網(wǎng)絡(luò)處理器104和網(wǎng) 絡(luò)輸出端口 106。
輸入接口 102用于^^妄收用戶通過配置界面輸入的數(shù)據(jù)包配置信息108,并 將其發(fā)往網(wǎng)絡(luò)處理器104進行處理。數(shù)據(jù)包配置信息108包括數(shù)據(jù)包構(gòu)成信息 和數(shù)據(jù)包數(shù)量信息。數(shù)據(jù)包構(gòu)成信息用于構(gòu)建數(shù)據(jù)包模板,其可包括用于構(gòu)建 數(shù)據(jù)包的各種數(shù)據(jù)。例如,以O(shè)SI ( Open System Interconnection ,開i文系統(tǒng)互聯(lián))參考模型為例,數(shù)據(jù)包構(gòu)成信息包括應(yīng)用層 會話層所對應(yīng)的數(shù)據(jù)包凈荷 信息、傳輸層對應(yīng)的傳輸控制信息、網(wǎng)絡(luò)層對應(yīng)的邏輯尋址信息(三層協(xié)議信 息)和數(shù)據(jù)鏈路層對應(yīng)的物理尋址信息(二層協(xié)議信息)等。由于網(wǎng)絡(luò)設(shè)備所 執(zhí)行的數(shù)據(jù)轉(zhuǎn)發(fā)操作所使用的尋址信息往往僅為網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層對應(yīng)的
協(xié)議信息,因此可將數(shù)據(jù)包構(gòu)成信息簡化為僅包含數(shù)據(jù)包凈荷信息、三層協(xié)議 信息和二層協(xié)議信息。
數(shù)據(jù)包凈荷信息定義了數(shù)據(jù)包凈荷的生成規(guī)則,例如可采用全0、全l、
遞增(例如依次寫0x00至0xff到數(shù)據(jù)包凈荷)、遞減(例如寫0xff至0x00到 數(shù)據(jù)包凈荷)、A5 (寫0xa5到數(shù)據(jù)包凈荷)等方式來構(gòu)建數(shù)據(jù)包凈荷。
三層協(xié)議信息定義了三層協(xié)i義類型(如IP (Internet Protocol,網(wǎng)際協(xié)議) 協(xié)議、IPX (Internetwork Packet Exchange,網(wǎng)際數(shù)據(jù)包交換)協(xié)議等)、版本、 服務(wù)類型、三層尋址信息以及計算得到的校-驗和等信息,例如以IP協(xié)議為例, 該三層協(xié)議信息包含源IP地址、目的IP地址等信息。
二層協(xié)議信息定義了二層尋址信息、計算得到的校驗和等信息,例如以 Ehernet II幀為例,該二層訪、議4言息包含源MAC (Media Access Contorl,介質(zhì) 訪問控制)地址、目的MAC地址等信息。
應(yīng)注意,數(shù)據(jù)包構(gòu)成信息的內(nèi)容可根據(jù)具體實現(xiàn)(例如根據(jù)所要生成的數(shù) 據(jù)包的類型)來隨意設(shè)定,本發(fā)明的范圍不應(yīng)理解為僅限于上文的舉例描述。
數(shù)據(jù)包數(shù)量信息中記錄有需要生成的數(shù)據(jù)包的數(shù)量。
網(wǎng)絡(luò)處理器104是數(shù)據(jù)包生成器100的核心部件,其接收輸入接口 102 轉(zhuǎn)發(fā)的數(shù)據(jù)包配置信息108,提取其中的數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù)量信息。 隨后,網(wǎng)絡(luò)處理器104依據(jù)數(shù)據(jù)包構(gòu)成信息生成數(shù)據(jù)包模板,并按照數(shù)據(jù)包數(shù) 量信息以多線程方式對數(shù)據(jù)包模板進行復(fù)制從而并行生成所需的數(shù)據(jù)包110, 再發(fā)往網(wǎng)絡(luò)輸出端口 106。
網(wǎng)絡(luò)輸出端口 106包含支持各種速率(例如但不限于千兆、OC48、 OC192 等)的各種類型的網(wǎng)絡(luò)接口 (例如以太網(wǎng)),'用于發(fā)送生成的數(shù)據(jù)包110。
網(wǎng)絡(luò)處理器是本發(fā)明數(shù)據(jù)包生成器的核心部件,其采用多核結(jié)構(gòu),可通過 多線程方式并行完成數(shù)據(jù)包的生成及發(fā)送,下面就結(jié)合圖2對其結(jié)構(gòu)進行詳細描述。
圖2是依據(jù)本發(fā)明一實施例的網(wǎng)絡(luò)處理器200的結(jié)構(gòu)示意圖。如圖2所示, 網(wǎng)絡(luò)處理器200包括核心處理器202、多個發(fā)送樣吏引擎204和輸出接口 206。 多個微引擎204分別與核心處理器202和輸出接口 206相連。
核心處理器202與輸入接口例如但不限于圖1中的輸入4妄口 102相連,用 于接收輸入接口收到并轉(zhuǎn)發(fā)的數(shù)據(jù)包配置信息208。數(shù)據(jù)包配置信息208與圖 1中的數(shù)據(jù)包配置信息108基本相同,此處不再贅述。核心處理器202從數(shù)據(jù) 包配置信息208中提取數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù)量信息,并依據(jù)數(shù)據(jù)包構(gòu)成 信息生成數(shù)據(jù)包模板。同時,核心處理器202依據(jù)數(shù)據(jù)包數(shù)量信息分配發(fā)送任 務(wù),即確定每個發(fā)送微引擎204需要發(fā)送的數(shù)據(jù)包數(shù)量。在此之后,核心處理 器202將生成的數(shù)據(jù)包模板發(fā)往參與發(fā)送的各個發(fā)送微引擎204,同時向各個 發(fā)送微引擎204發(fā)出發(fā)送任務(wù)信息。
作為可選的,還可為參與發(fā)送的各個發(fā)送微引擎204單獨設(shè)置數(shù)據(jù)包配置 信息208。在這種情況下,核心處理器202分別/人每一數(shù)據(jù)包配置信息208中 提取數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù)量信息,生成對應(yīng)的數(shù)據(jù)包模板,然后將生成 的數(shù)據(jù)包模板和提取的數(shù)據(jù)包數(shù)量信息一同發(fā)往對應(yīng)的發(fā)送微引擎204。
發(fā)送微引擎204用于接收核心處理器202發(fā)出的數(shù)據(jù)包才莫板和自身需要發(fā) 送的數(shù)據(jù)包數(shù)量,并依據(jù)需要發(fā)送的數(shù)據(jù)包數(shù)量對收到的數(shù)據(jù)包模板進行復(fù) 制,生成多個數(shù)據(jù)包210,并發(fā)往輸出接口 206。由此可見,數(shù)據(jù)包的生成速 率與發(fā)送孩i引擎204的數(shù)量密切相關(guān),因此,在具體實現(xiàn)過程中,可根據(jù)所需 要的數(shù)據(jù)包生成速率增加發(fā)送微引擎204的數(shù)量。
輸出接口 206連接網(wǎng)絡(luò)輸出端口,例如但不限于圖1中的網(wǎng)絡(luò)輸出端口 110,用于將收到的數(shù)據(jù)包210發(fā)往所連接的網(wǎng)絡(luò)輸出端口。如上文所述,網(wǎng) 絡(luò)輸出端口包含支持各種速率(例如但不限于千兆、OC48、 OC192等)的各 種網(wǎng)絡(luò)接口,而不同速率的網(wǎng)絡(luò)輸出端口對應(yīng)不同的數(shù)據(jù)包格式(例如以太網(wǎng) 包頭(如MAC幀頭)對應(yīng)千兆接口 , POS (Packet Over SONET,同步光纖網(wǎng) 接口 )包頭對應(yīng)OC48、 OC192接口等)。輸出接口 206用于依據(jù)數(shù)據(jù)包210 的格式,將其發(fā)往網(wǎng)絡(luò)輸出端口中對應(yīng)的端口。在具體實現(xiàn)過程中,可根據(jù)具體需要(例如需要實現(xiàn)的發(fā)送速率),從現(xiàn) 有的各種網(wǎng)絡(luò)處理器中選擇適當?shù)木W(wǎng)絡(luò)處理器,然后在該網(wǎng)絡(luò)處理器的^出上 添加對應(yīng)的模塊,來實現(xiàn)本發(fā)明的技術(shù)方案。例如,可選擇英特爾公司制造的
網(wǎng)絡(luò)處理器IXP2800作為基礎(chǔ)來實現(xiàn)本發(fā)明的技術(shù)方案,以實現(xiàn)最高達10Gbps 的數(shù)據(jù)包發(fā)送速率。IXP2800包含Xscale核心處理器(下文簡稱核心處理器)、 多級存儲器、多個微引擎(標準配置為16個)和SPI接口。其中,多級存儲 器包括Scratchpad存儲器(下文簡稱便箋存儲器)和DDR (Double Data Rate, 雙倍數(shù)據(jù)率)存儲器(下文簡稱模板存儲器)。在運行過程中,核心處理器與 多個微引擎之間通過便箋存儲器進行通信,而多個微引擎之間則通過Next Neighbor Ring相互通信。為便于理解,在下面的描述中,將便箋存儲器和DDR 存^f諸器統(tǒng)稱為任務(wù)存儲器。下面就以英特爾公司制造的網(wǎng)絡(luò)處理器IXP2800 為例對本發(fā)明的技術(shù)方案進行描述。
圖3是依據(jù)本發(fā)明一實施例的網(wǎng)絡(luò)處理器300的結(jié)構(gòu)示意圖。網(wǎng)絡(luò)處理器 300由英特爾公司制造的網(wǎng)絡(luò)處理器IXP2800改進而成。如圖3所示,網(wǎng)絡(luò)處 理器300包括核心處理器(Xscale核心處理器)302、任務(wù)存儲器304、多個 微引擎306/308和輸出端口 (SPI接口)310。其中,任務(wù)存儲器304進一步包 括1更箋存儲器(Scratchpad存儲器)3042和模板存儲器3044,便箋存儲器3042 又可進一步細分為數(shù)量存儲區(qū)30422和模板地址存儲區(qū)30424、多個微引擎 306/308又可進一步定義為控制孩i引擎306、多個發(fā)送孩i引擎308。
核心處理器302與輸入接口例如但不限于圖1中的輸入接口 102相連,用 于接收輸入接口收到并轉(zhuǎn)發(fā)的數(shù)據(jù)包配置信息312。數(shù)據(jù)包配置信息312與圖 1中描述的數(shù)據(jù)包配置信息108基本相同,此處不再贅述。為實現(xiàn)本發(fā)明的技 術(shù)方案,在IXP2800的Xscale核心處理器中添加了信息提取才莫塊3022和模板 生成才莫塊3024。
信息提取模塊3022用于從數(shù)據(jù)包配置信息312中提取數(shù)據(jù)包構(gòu)成信息和 數(shù)據(jù)包數(shù)量信息,然后將數(shù)據(jù)包構(gòu)成信息發(fā)往模板生成模塊3024。隨后,信 息提取模塊3022依據(jù)數(shù)據(jù)包數(shù)量信息分配發(fā)送任務(wù),即確定每個發(fā)送微引擎 308需要發(fā)送的數(shù)據(jù)包的數(shù)量,然后將其寫入便箋存儲器3042的數(shù)量存儲區(qū)30422中(發(fā)出發(fā)送任務(wù)信息)。數(shù)量存儲區(qū)30422按照發(fā)送微引擎308的數(shù) 量進一步劃分為多個子存儲區(qū),每個子存儲區(qū)存儲對應(yīng)的發(fā)送微引擎308所需 發(fā)送的數(shù)據(jù)包數(shù)量。在具體實現(xiàn)過程中,在便箋存儲器3042中,數(shù)量存儲區(qū) 30422可對應(yīng)地址范圍Ox3e00,并才艮據(jù)子存儲區(qū)的數(shù)量進一步確定每個子存儲 區(qū)的地址范圍。對于每個,若其地址上的數(shù)據(jù)為O則表示不發(fā)送數(shù)據(jù)包,若為 Oxffffffff則表示連續(xù)發(fā)送數(shù)據(jù)包,若為其他數(shù)字則表示需要發(fā)送的數(shù)據(jù)包數(shù) 量。特別的,當用戶通過配置界面發(fā)出停止發(fā)送命令時,可通過在子存儲區(qū)地 址上寫入數(shù)據(jù)O來實現(xiàn)。
模板生成模塊3024與信息提取模塊3022相連,用于接收信息提取模塊 3022發(fā)來的數(shù)據(jù)包構(gòu)成信息,依據(jù)此信息生成數(shù)據(jù)包模板,并將其寫入模板 存儲器3044中(發(fā)出數(shù)據(jù)包模板),并將其在模板存儲器3044中的存儲位置 寫入便箋存儲器304的模板地址存儲區(qū)30424中。模板地址存儲區(qū)30424按照 發(fā)送微引擎308的數(shù)量進一步劃分為多個子存儲區(qū),每個子存儲區(qū)存儲對應(yīng)的 發(fā)送微引擎308所需發(fā)送的數(shù)據(jù)包模板在模板存儲器3044中的存儲位置。在 具體實現(xiàn)過程中,在便箋存儲器3042中,模板地址存儲區(qū)30424可對應(yīng)地址 范圍0x3el0 ~ 0x3e90 (對應(yīng)僅使用8個發(fā)送微引擎308的情況),其中Ox3el0 對應(yīng)第一個發(fā)送微引擎308所對應(yīng)的數(shù)據(jù)包模板在模板存儲器3044中的存儲 位置(bufferindex),其他地址以此類推。
作為可選的,還可為參與發(fā)送的各個發(fā)送微引擎308單獨設(shè)置數(shù)據(jù)包配置 信息312。在這種情況下,信息提卑^莫塊3022分別從每一數(shù)據(jù)包配置信息312 中提取數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù)量信息,并將數(shù)據(jù)包構(gòu)成信息依次發(fā)往模板 生成模塊3024生成數(shù)據(jù)包模板。同時,信息提取模塊3022將提取的各個數(shù)據(jù) 包數(shù)量信息分別寫入便箋存儲器3042的數(shù)量存儲區(qū)30422中。模板生成模塊 3024生成的各個數(shù)據(jù)包模板將寫入模板存儲器3044中,并將其在模板存儲器 3044中的存儲位置寫入便奚存儲器3042的模板地址存儲區(qū)30424中。
控制微引擎306通過在IXP2800的微引擎中添加發(fā)送控制模塊3062改進 而成。發(fā)送控制模塊3062用于在便箋存儲器3042的模板地址存儲區(qū)30424 中讀取各個數(shù)據(jù)包模板的存儲位置,然后通過Next Neighbor Ring將讀取的存儲位置發(fā)送給對應(yīng)的各個發(fā)送微引擎308,以此來通知各個發(fā)送微引擎308從 模板存儲器3044中讀取數(shù)據(jù)包模板。
此外,發(fā)送控制模塊3062還用于在便箋存儲器3042的數(shù)量存儲區(qū)30422 中讀取各個發(fā)送微引擎308的發(fā)送任務(wù)信息,即需要發(fā)送的數(shù)據(jù)包數(shù)量。當發(fā) 現(xiàn)發(fā)送^(鼓引擎308需要發(fā)送的數(shù)據(jù)包數(shù)量大于0時,就通知對應(yīng)的發(fā)送微引擎 308對其讀取的數(shù)據(jù)包模板進行復(fù)制,然后發(fā)出復(fù)制得到的數(shù)據(jù)包。此后,發(fā) 送控制模塊3062將該發(fā)送微引擎308需要發(fā)送的數(shù)據(jù)包數(shù)量更新為原數(shù)量減 1,然后重復(fù)上述過程,直到該發(fā)送微引擎308需要發(fā)送的數(shù)據(jù)包數(shù)量為0。
發(fā)送微引擎308通過IXP2800的微引擎中添加數(shù)據(jù)包生成模塊3082改進 而成。數(shù)據(jù)包生成模塊3082用于接收控制微引擎306發(fā)來的數(shù)據(jù)包模板的存 儲位置,在模板存儲器3044中讀取對應(yīng)的數(shù)據(jù)包模板。隨后,數(shù)據(jù)包生成模 塊3082接收控制微引擎306發(fā)出的復(fù)制發(fā)送通知,對數(shù)據(jù)包模板進行復(fù)制并 發(fā)送。
輸出端口 310與圖2中描述的輸出端口 206基本相同,用于發(fā)送各個發(fā)送 微引擎308生成的數(shù)據(jù)包314,此處不再贅述。
在具體實現(xiàn)過程中,便箋存儲器可以由Scratchpad存儲器來實現(xiàn)。 scratchpad是芯片內(nèi)置的存儲區(qū),訪問速度很快,僅次于寄存器。而控制微引 擎和發(fā)送微引擎之間的通信接口是鄰居寄存器,鄰居寄存器因為是寄存器,所 以讀寫速度非常快。在IXP2800阿絡(luò)處理器中,每個孩i引擎設(shè)有128個鄰居 寄存器。鄰居寄存器中的內(nèi)容可以被下一個微引擎讀取。例如微引擎0中的 程序?qū)?shù)據(jù)寫入一個鄰居寄存器,微引擎l就可以從鄰居寄存器中讀取數(shù)據(jù)。 以此類推,除第一個和最后一個微引擎沒有前面的和后面的鄰居外,其余的《款 引擎都可以通過鄰居寄存器讀前一個微引擎的數(shù)據(jù),或?qū)?shù)據(jù)寫入鄰居寄存器 來實現(xiàn)與下一個微引擎的通信。當128個鄰居寄存器設(shè)置為Next Neighbour Ring時,整個128個寄存器成為一個先進先出的隊列。以0、 l號微引擎為例, 0號微引擎往Next Neighbour Ring隊列中寫入一個數(shù)據(jù),1號微引擎就能收到 這個數(shù)據(jù)。入隊、出隊、隊列狀態(tài)判斷等都有相應(yīng)的內(nèi)部指令和寄存器來實現(xiàn)。 英特爾公司生產(chǎn)的網(wǎng)絡(luò)處理器如IXP2800網(wǎng)絡(luò)處理器的相關(guān)內(nèi)容在《Intel
13Building block ref Manual》中做了詳細描述,本文引用其中的全部內(nèi)容。
應(yīng)注意,圖3中的網(wǎng)絡(luò)處理器300是由英特爾公司制造的網(wǎng)絡(luò)處理器 IXP2800改進而成的。改進之處在于添加了一些模塊如信息提取模塊3022, 以實現(xiàn)本發(fā)明的技術(shù)方案。在具體實現(xiàn)過程中,添力口的模塊可通過硬件方式實 現(xiàn),也可通過軟件方式實現(xiàn)(例如對IXP2800進行編程),還可通過軟件和硬 件結(jié)合(固件)的方式來實現(xiàn)。此外,凡是采用多核結(jié)構(gòu)并包含適當容量的存 儲器的網(wǎng)絡(luò)處理器,均可用于實現(xiàn)本發(fā)明的技術(shù)方案,因此本發(fā)明技術(shù)方案的 范圍不受特定網(wǎng)絡(luò)處理器類型的限制。特別的,當結(jié)合使用C語言和microcode (微代碼)來實現(xiàn)本發(fā)明時,各個模塊之間的耦合度低,可以方便靈活的進行 ^修改,擴充新功能。
本發(fā)明還提供了 一種基于上述數(shù)據(jù)包生成器的數(shù)據(jù)包生成方法,下面就結(jié) 合以下附圖和具體實施例來進行詳細描述。
圖4是依據(jù)本發(fā)明一實施例的數(shù)據(jù)包生成方法400的流程圖。如圖4所示, 方法400開始于步驟402。
隨后,在下一步驟404,接收數(shù)據(jù)包配置信息。有關(guān)數(shù)據(jù)包配置信息的內(nèi) 容已經(jīng)在前文做了詳細描述,此處不再贅述。
隨后,在下一步驟406,依據(jù)數(shù)據(jù)包配置信息生成數(shù)據(jù)包模板。 隨后,在下一步驟408,以多線程方式并行生成數(shù)據(jù)包并發(fā)出。在本步驟 中,按照數(shù)據(jù)包配置信息以多線程方式并行的對數(shù)據(jù)包模板進行復(fù)制(復(fù)制的 次數(shù)包含在數(shù)據(jù)包配置信息中),得到多個數(shù)據(jù)包,然后發(fā)出復(fù)制得到的數(shù)據(jù) 包。
最后,方法400結(jié)束于步驟410。
本發(fā)明的核心思想是首先生成數(shù)據(jù)包模板,然后同時通過多條線程來并行 完成數(shù)據(jù)包模板的復(fù)制和發(fā)送任務(wù),下面就結(jié)合圖5對這一核心思想進行描 述。
圖5是依據(jù)本發(fā)明一實施例的數(shù)據(jù)包生成方法500的流程圖。如圖5所示, 方法500開始于步驟502。
隨后,在下一步驟504,接收數(shù)據(jù)包配置信息。有關(guān)數(shù)據(jù)包配置信息的內(nèi)容已經(jīng)在前文做了詳細描述,此處不再贅述。
隨后,在下一步驟506,從數(shù)據(jù)包配置信息中提取數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)
包數(shù)量信息。有關(guān)數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù)量信息的內(nèi)容已經(jīng)在前文做了詳 細描述,此處不再贅述。
隨后,在下一步驟508,依據(jù)提取的數(shù)據(jù)包構(gòu)成信息生成數(shù)據(jù)包模板,并 按照數(shù)據(jù)包數(shù)量信息為參與發(fā)送的線程分配發(fā)送任務(wù),生成發(fā)送任務(wù)信息。
隨后,在下一步驟510,將生成的數(shù)據(jù)包模板和發(fā)送任務(wù)信息發(fā)往對應(yīng)的 發(fā)送線程。如上文所述,還可為參與發(fā)送的各個發(fā)送線程單獨設(shè)置數(shù)據(jù)包配置 信息。在這種情況下,首先分別從每一數(shù)據(jù)包配置信息中提取數(shù)據(jù)包構(gòu)成信息 和數(shù)據(jù)包數(shù)量信息,生成對應(yīng)的數(shù)據(jù)包模板,然后將生成的數(shù)據(jù)包模板和提取 的數(shù)據(jù)包數(shù)量信息一 同發(fā)往對應(yīng)的發(fā)送線程。
隨后,在下一步驟512,各線程按照各自的發(fā)送任務(wù)信息并行的對數(shù)據(jù)包 模板進行復(fù)制,然后發(fā)出復(fù)制得到的數(shù)據(jù)包。
最后,方法500結(jié)束于步驟514。
上述方法可通過網(wǎng)絡(luò)處理器來執(zhí)行,由網(wǎng)絡(luò)處理器中的多個處理器分擔數(shù) 據(jù)包模板的生成和復(fù)制發(fā)送任務(wù)。下面就參考英特爾公司的IXP2800網(wǎng)絡(luò)處 理器來描述上述方法的執(zhí)行過程。
圖6是依據(jù)本發(fā)明一實施例的數(shù)據(jù)包生成方法600的流程圖。方法600 由英特爾公司的IXP2800網(wǎng)絡(luò)處理器執(zhí)行。有關(guān)該網(wǎng)^^處理器的內(nèi)容已在前 文^故了詳細描述,此處不再贅述。如圖6所示,方法600開始于步-驟602。
隨后,在下一步驟604,核心處理器接收數(shù)據(jù)包配置信息,提取數(shù)據(jù)包構(gòu) 成信息和數(shù)據(jù)包數(shù)量信息。有關(guān)數(shù)據(jù)包配置信息、數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù) 量信息的內(nèi)容已經(jīng)在前文做了詳細描述,此處不再贅述。
隨后,在下一步驟606,核心處理器依據(jù)數(shù)據(jù)包構(gòu)成信息生成數(shù)據(jù)包模板, 并依據(jù)數(shù)據(jù)包數(shù)量信息分配發(fā)送任務(wù),生成發(fā)送任務(wù)信息。
隨后,在下一步驟608,核心處理器將數(shù)據(jù)包模板存儲在模板存儲器中, 并將其在模板存儲器中的存儲位置寫入便箋存儲器,同時在便箋存儲器中寫入 發(fā)送任^f言息。
15隨后,在下一步驟610,控制微引擎讀取數(shù)據(jù)包模板的存儲位置,發(fā)往多 個發(fā)送微引擎。
隨后,在下一步驟612,多個發(fā)送微引擎依據(jù)數(shù)據(jù)包模板的存儲位置讀取
數(shù)據(jù)包模板。
隨后,在下一步驟614,控制微引擎按照發(fā)送任務(wù)信息控制多個發(fā)送微引 擎并行復(fù)制數(shù)據(jù)包模板,發(fā)送復(fù)制得到的數(shù)據(jù)包。其中發(fā)送微引擎即對應(yīng)上文 所述的發(fā)送線程。
最后,方法600結(jié)束于步f《616。
權(quán)利要求
1、一種數(shù)據(jù)包生成器,其特征在于,包括輸入接口,用于接收并轉(zhuǎn)發(fā)數(shù)據(jù)包配置信息;網(wǎng)絡(luò)處理器,與輸入接口相連,用于接收轉(zhuǎn)發(fā)來的數(shù)據(jù)包配置信息,生成數(shù)據(jù)包模板,并以多線程方式對數(shù)據(jù)包模板進行復(fù)制,發(fā)出復(fù)制得到的數(shù)據(jù)包;網(wǎng)絡(luò)輸出端口,與網(wǎng)絡(luò)處理器相連,用于接收并發(fā)出由網(wǎng)絡(luò)處理器發(fā)來的數(shù)據(jù)包。
2、 根據(jù)權(quán)利要求1所述的數(shù)據(jù)包生成器,其特征在于,所述網(wǎng)絡(luò)處理器 進一步包括核心處理器,與所述輸入接口相連,用于接收所述數(shù)據(jù)包配置信息,生成 并發(fā)出所述數(shù)據(jù)包模板,并分配發(fā)送任務(wù),發(fā)出發(fā)送任務(wù)信息;多個發(fā)送微引擎,與核心處理器相連,用于接收各自的數(shù)據(jù)包模板和發(fā)送 任務(wù)信息,并依據(jù)發(fā)送任務(wù)信息對數(shù)據(jù)包模板進行復(fù)制,發(fā)出復(fù)制得到的數(shù)據(jù) 包;輸出接口,與所述多個發(fā)送微引擎和網(wǎng)絡(luò)輸出端口相連,用于接收多個發(fā) 送微引擎發(fā)出的數(shù)據(jù)包并發(fā)往網(wǎng)絡(luò)輸出端口 。
3、 根據(jù)權(quán)利要求2所述的數(shù)據(jù)包生成器,其特征在于,所述數(shù)據(jù)包配置 信息包括數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù)量信息,所述核心處理器進一步包括信息提^Mt塊,用于接收數(shù)據(jù)包配置信息,提取數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包 數(shù)量信息,發(fā)出數(shù)據(jù)包構(gòu)成信息,依據(jù)數(shù)據(jù)包數(shù)量信息分配發(fā)送任務(wù),生成并 發(fā)出所述發(fā)送任務(wù)信息;模板生成模塊,與信息提取模塊相連,用于接收數(shù)據(jù)包構(gòu)成信息,生成并 發(fā)出所述數(shù)據(jù)包模板。
4、 根據(jù)權(quán)利要求3所述的數(shù)據(jù)包生成器,其特征在于,還包括任務(wù)存儲 器,其進一步包括模板存儲器,用于接收并存儲所述數(shù)據(jù)包模板; 便箋存儲器,包括-.數(shù)量存儲區(qū),用于接收并存儲所述發(fā)送任務(wù)信息;模板地址存儲區(qū),用于記錄數(shù)據(jù)包模板在模板存儲器中的存儲位置。
5、 根據(jù)權(quán)利要求4所述的數(shù)據(jù)包生成器,其特征在于,還包括 控制微引擎,包括發(fā)送控制模塊,用于在所述模板地址存儲區(qū)中讀取數(shù)據(jù)包模板的存儲 位置,發(fā)往所述多個發(fā)送微引擎; 每一發(fā)送微引擎進一步包括數(shù)據(jù)包生成模塊,用于接收數(shù)據(jù)包模板的存儲位置,讀取對應(yīng)的數(shù)據(jù) 包模板并進行復(fù)制,發(fā)出復(fù)制得到的數(shù)據(jù)包;其中,發(fā)送控制模塊在所述數(shù)量存儲區(qū)中讀取發(fā)送微引擎的發(fā)送任務(wù)信息, 按照該發(fā)送任務(wù)信息控制數(shù)據(jù)包生成模塊對數(shù)據(jù)包模板進行復(fù)制。
6、 一種數(shù)據(jù)包生成方法,其特征在于,包括如下步驟51、 接收數(shù)據(jù)包配置信息;52、 依據(jù)數(shù)據(jù)包配置信息生成數(shù)據(jù)包模板;53、 以多線程方式并行復(fù)制數(shù)據(jù)包才莫板,發(fā)出復(fù)制得到的數(shù)據(jù)包。
7、 根據(jù)權(quán)利要求6所述的數(shù)據(jù)包生成方法,其特征在于,所述數(shù)據(jù)包配 置信息包括數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù)量信息。
8、 根據(jù)權(quán)利要求7所述的數(shù)據(jù)包生成方法,其特征在于,所述步驟Sl 還包括S11 、在所述數(shù)據(jù)包配置信息中提取數(shù)據(jù)包構(gòu)成信息和數(shù)據(jù)包數(shù)量信息。
9、 根據(jù)權(quán)利要求8所述的數(shù)據(jù)包生成方法,其特征在于,所述步驟S2 進一步包括521、 依據(jù)所述數(shù)據(jù)包構(gòu)成信息生成所述數(shù)據(jù)包模板;522、 依據(jù)所述數(shù)據(jù)包數(shù)量信息分配發(fā)送任務(wù),生成發(fā)送任務(wù)信息; S23 、將生成的數(shù)據(jù)包模板和發(fā)送任務(wù)信息發(fā)往多條發(fā)送線程。
10、 根據(jù)權(quán)利要求9所述的數(shù)據(jù)包生成方法,其特征在于,所述步驟S3 進一步包括S31 、所述多條發(fā)送線程依據(jù)發(fā)送任務(wù)信息并行對數(shù)據(jù)包模板進行復(fù)制, 發(fā)出復(fù)制得到的數(shù)據(jù)包。
全文摘要
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)處理技術(shù),針對現(xiàn)有技術(shù)基于PC的數(shù)據(jù)包生成軟件性能差等缺陷,提供一種數(shù)據(jù)包生成器和數(shù)據(jù)包生成方法。數(shù)據(jù)包生成器包括輸入接口,用于接收并轉(zhuǎn)發(fā)數(shù)據(jù)包配置信息;網(wǎng)絡(luò)處理器,與輸入接口相連,用于接收轉(zhuǎn)發(fā)來的數(shù)據(jù)包配置信息,生成數(shù)據(jù)包模板,并以多線程方式對數(shù)據(jù)包模板進行復(fù)制,發(fā)出復(fù)制得到的數(shù)據(jù)包;網(wǎng)絡(luò)輸出端口,與網(wǎng)絡(luò)處理器相連,用于接收并發(fā)出由網(wǎng)絡(luò)處理器發(fā)來的數(shù)據(jù)包。本發(fā)明還提供了一種基于上述數(shù)據(jù)包生成器的數(shù)據(jù)包生成方法。借助網(wǎng)絡(luò)處理器的強大處理能力,本發(fā)明可滿足各種發(fā)送速率要求需要,且可與現(xiàn)有各類網(wǎng)絡(luò)設(shè)備輕松互聯(lián);同時具有非常靈活的編程性和移植性,且成本低廉。
文檔編號H04L12/26GK101562544SQ20081006680
公開日2009年10月21日 申請日期2008年4月17日 優(yōu)先權(quán)日2008年4月17日
發(fā)明者張義軍, 彭國震, 范世杰 申請人:浩通科技(深圳)有限公司