專利名稱:網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法和網(wǎng)絡(luò)處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,特別涉及一種網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法和網(wǎng)絡(luò)處理器。
技術(shù)背景隨著通訊網(wǎng)絡(luò)的不斷發(fā)展,對(duì)網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)能力提出了很大的要求。目前幾乎所用的 位于接入層和匯聚層的網(wǎng)絡(luò)設(shè)備都采用性能強(qiáng)大的專用芯片——NP (Network Processor, 網(wǎng)絡(luò)處理器)作為報(bào)文轉(zhuǎn)發(fā)的核心單元。網(wǎng)絡(luò)處理器與通用CPU (Central Processing Unit, 中央處理器)相比,具有多核心,擁有協(xié)處理單元,編程靈活等特點(diǎn),應(yīng)用于通信領(lǐng)域的各 種任務(wù),比如包處理、協(xié)議分析、路由查找、聲音/數(shù)據(jù)的匯聚、防火墻和QOS (Quality of Service,服務(wù)質(zhì)量)等。在強(qiáng)調(diào)網(wǎng)絡(luò)性能提升的同時(shí),業(yè)界提出了網(wǎng)絡(luò)可運(yùn)營(yíng)、可管理的理念,并不斷深化。兩 報(bào)文的復(fù)制功能是實(shí)現(xiàn)"可管理"理念的一個(gè)重要手段。例如端口鏡像、合法監(jiān)聽(tīng)等功能, 都需要復(fù)制報(bào)文,原始報(bào)文作原有的處理,而復(fù)制出來(lái)的報(bào)文根據(jù)配置轉(zhuǎn)發(fā)到指定的位置。 除了端口鏡像、合法監(jiān)聽(tīng)兩個(gè)應(yīng)用涉及到報(bào)文復(fù)制外,組播等業(yè)務(wù)也存在復(fù)制報(bào)文的需求。網(wǎng)絡(luò)設(shè)備中負(fù)責(zé)報(bào)文復(fù)制的模塊可以是網(wǎng)路處理器,或?qū)S眯酒O旅娣謩e介紹網(wǎng)絡(luò)處 理器和專用芯片復(fù)制報(bào)文的實(shí)現(xiàn)方法1) 網(wǎng)絡(luò)處理器進(jìn)行報(bào)文復(fù)制目前,由網(wǎng)絡(luò)處理器完成報(bào)文的復(fù)制多是采用內(nèi)存搬移(復(fù)制)的方法,該方法中的網(wǎng) 絡(luò)處理器根據(jù)主機(jī)的配置,"截獲"要復(fù)制的報(bào)文后,讀取存儲(chǔ)在外部?jī)?nèi)存(如DRAM (Dynamic Random Access Memory,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器))中原始的報(bào)文,再將報(bào)文回寫(xiě)到 外部?jī)?nèi)存的另一塊空間,并為新的報(bào)文空間創(chuàng)建資源塊,完成報(bào)文的復(fù)制。在此之后的流程, 如路由、報(bào)文的封裝,網(wǎng)絡(luò)處理器都將原始報(bào)文和復(fù)制后的報(bào)文作為兩份獨(dú)立的報(bào)文進(jìn)行處 理。2) 專用芯片進(jìn)行報(bào)文復(fù)制采用專用芯片進(jìn)行報(bào)文復(fù)制時(shí),不需要網(wǎng)絡(luò)處理器進(jìn)行報(bào)文的復(fù)制,網(wǎng)絡(luò)處理器只要在 給需要復(fù)制的報(bào)文打上標(biāo)志,送到NP外部的專用芯片,由外部專用芯片完成報(bào)文的復(fù)制。在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問(wèn)題網(wǎng)絡(luò)處理器在網(wǎng)絡(luò)設(shè)備中負(fù)責(zé)報(bào)文的高速轉(zhuǎn)發(fā),在目前要求達(dá)到10G以上的轉(zhuǎn)發(fā)性能要 求下,對(duì)外部存儲(chǔ)器的訪問(wèn)頻率有嚴(yán)格的限制。頻繁讀寫(xiě)外存會(huì)大大降低網(wǎng)絡(luò)處理器的性能。 對(duì)外部存儲(chǔ)器的訪問(wèn)是網(wǎng)絡(luò)處理器轉(zhuǎn)發(fā)報(bào)文的性能瓶頸;而采用內(nèi)存搬移的方法實(shí)現(xiàn)報(bào)文的 復(fù)制,不可避免的要對(duì)外部低速內(nèi)存進(jìn)行讀寫(xiě)。同時(shí)由于網(wǎng)絡(luò)處理器內(nèi)部寄存器大小的限制, 對(duì)于一個(gè)報(bào)文的復(fù)制通常要進(jìn)行多次的搬移,降低了報(bào)文復(fù)制的性能,也降低了原始報(bào)文和 其他不要求進(jìn)行復(fù)制的報(bào)文的處理性能,進(jìn)而影響網(wǎng)絡(luò)處理器對(duì)所承載各項(xiàng)業(yè)務(wù)的轉(zhuǎn)發(fā)能力;采用外部專用芯片進(jìn)行報(bào)文復(fù)制的方法,增加了硬件的成本;同時(shí),單板復(fù)雜性的增加, 特別是硬件結(jié)構(gòu)的復(fù)雜化,增加了出錯(cuò)的概率和不穩(wěn)定性,進(jìn)而影響了報(bào)文復(fù)制的性能和網(wǎng) 絡(luò)處理器對(duì)所承載各項(xiàng)業(yè)務(wù)的轉(zhuǎn)發(fā)能力。發(fā)明內(nèi)容為了提高報(bào)文復(fù)制的性能和網(wǎng)絡(luò)處理器對(duì)所承載各項(xiàng)業(yè)務(wù)的轉(zhuǎn)發(fā)能力,本發(fā)明實(shí)施例提 供了一種網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法和網(wǎng)絡(luò)處理器。所述技術(shù)方案如下-一種網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法,所述方法包括 接收到報(bào)文后,將所述報(bào)文寫(xiě)入外部存儲(chǔ)器;根據(jù)本地配置的業(yè)務(wù)確認(rèn)所述報(bào)文需要復(fù)制時(shí),生成所述報(bào)文的封裝頭和所述報(bào)文的復(fù) 制報(bào)文的封裝頭;發(fā)送所述報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中的所述報(bào)文的報(bào)文載荷;發(fā)送所述復(fù)制報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中所述報(bào)文的報(bào)文載荷。一種網(wǎng)絡(luò)處理器,所述網(wǎng)絡(luò)處理器包括接收單元,用于接收?qǐng)?bào)文,將所述報(bào)文寫(xiě)入外部存儲(chǔ)器-,處理單元,用于根據(jù)本地配置的業(yè)務(wù)確認(rèn)所述報(bào)文是否需要復(fù)制;發(fā)送單元,用于所述處理單元確認(rèn)所述報(bào)文需要復(fù)制時(shí),生成所述報(bào)文的封裝頭和所述 報(bào)文的復(fù)制報(bào)文的封裝頭;發(fā)送所述報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中的所 述報(bào)文的報(bào)文載荷;以及發(fā)送所述復(fù)制報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中所 述報(bào)文的報(bào)文載荷。本發(fā)明實(shí)施例提供的技術(shù)方案的有益效果是-通過(guò)先發(fā)送原始報(bào)文的封裝頭和報(bào)文載荷,然后發(fā)送復(fù)制報(bào)文的封裝頭和報(bào)文載荷,實(shí) 現(xiàn)了復(fù)制報(bào)文的目的,同時(shí),在處理報(bào)文期間沒(méi)有進(jìn)行內(nèi)存的復(fù)制,也沒(méi)有申請(qǐng)新的資源塊,提高了復(fù)制報(bào)文的性能,也節(jié)省了存儲(chǔ)空間,進(jìn)而增強(qiáng)了網(wǎng)絡(luò)處理器對(duì)所承載各項(xiàng)業(yè)務(wù)的轉(zhuǎn) 發(fā)能力。
圖1是本發(fā)明實(shí)施例1提供的網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法流程圖;圖2是本發(fā)明實(shí)施例1提供的網(wǎng)絡(luò)處理器的結(jié)構(gòu)示意圖;圖3是本發(fā)明實(shí)施例2提供的網(wǎng)絡(luò)處理器的結(jié)構(gòu)示意圖;圖4是本發(fā)明實(shí)施例2提供的網(wǎng)絡(luò)處理器的具體結(jié)構(gòu)示意圖;圖5是本發(fā)明實(shí)施例2提供的另一種網(wǎng)絡(luò)處理器的具體結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn) 一步地詳細(xì)描述。本發(fā)明實(shí)施例通過(guò)一次發(fā)送報(bào)文后,保留外部存儲(chǔ)器中的報(bào)文資源,再次發(fā)送該報(bào)文的 方式實(shí)現(xiàn)了復(fù)制報(bào)文的目的,提高了報(bào)文復(fù)制的性能,以及網(wǎng)絡(luò)處理器對(duì)所承載各項(xiàng)業(yè)務(wù)的 轉(zhuǎn)發(fā)能力。實(shí)施例1參見(jiàn)圖l,本實(shí)施例提供了一種網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法,該方法包括 歩驟101:接收到報(bào)文后,將報(bào)文寫(xiě)入外部存儲(chǔ)器;歩驟102:根據(jù)本地配置的業(yè)務(wù)確認(rèn)報(bào)文需要復(fù)制時(shí),生成該報(bào)文的封裝頭和該報(bào)文的 復(fù)制報(bào)文p封裝頭;其中,封裝頭根據(jù)復(fù)制業(yè)務(wù)的設(shè)計(jì)生成,比如組播復(fù)制時(shí),封裝頭就是各個(gè)組播節(jié)點(diǎn)的MAC (Media Access Control,媒體接入控制)地址和VLAN (Virtual Local Area Network,虛擬局域網(wǎng))信息;步驟103:發(fā)送該報(bào)文的封裝頭,然后讀取并發(fā)送外部存儲(chǔ)器中的該報(bào)文的報(bào)文載荷; 步驟104:發(fā)送復(fù)制報(bào)文的封裝頭,然后讀取并發(fā)送外部存儲(chǔ)器中該報(bào)文的報(bào)文載荷; 其中,步驟103和步驟104的先后順序可以替換,不限于上述順序。外部存儲(chǔ)器是一個(gè) 低速存儲(chǔ)器,例如DRAM。完成報(bào)文的發(fā)送后,釋放外部存儲(chǔ)器中該報(bào)文占用的資源。參見(jiàn)圖2提供的網(wǎng)絡(luò)處理器,包括接收單元、處理單元和發(fā)送單元,以及高速緩存?zhèn)鬟f報(bào)文信息和參數(shù)的內(nèi)部高速緩存,下面以該網(wǎng)絡(luò)處理器為例具體說(shuō)明報(bào)文的處理過(guò)程1) 接收單元接收到報(bào)文后,將報(bào)文寫(xiě)入外部存儲(chǔ)器,并將處理報(bào)文的描述信息寫(xiě)入內(nèi)部 高速緩存;其中,描述信息包括報(bào)文在外存(通常是低速DRAM)中的存儲(chǔ)位置、報(bào)文的大小,偏 移等信息;這些信息在接收單元、處理單元和發(fā)送單元處理報(bào)文的過(guò)程中被不斷收集,存儲(chǔ) 在內(nèi)部高速緩存中,傳遞給后續(xù)單元使用;2) 處理單元根據(jù)本地配置的業(yè)務(wù)判斷該報(bào)文是否需要復(fù)制,如果是,在內(nèi)部高速緩存的 報(bào)文的描述信息中寫(xiě)入復(fù)制標(biāo)識(shí),將該報(bào)文的處理參數(shù)和該報(bào)文的復(fù)制報(bào)文的處理參數(shù)寫(xiě)入 內(nèi)部高速緩存;否則,只將該報(bào)文的處理參數(shù)寫(xiě)入內(nèi)部高速緩存; '其中,處理參數(shù)可以包括要求進(jìn)行處理的業(yè)務(wù)、路由的信息、ACL (Access Control List, 訪問(wèn)控制表)信息、報(bào)文封裝的信息等內(nèi)容。通常情況下(普通的IP轉(zhuǎn)發(fā)),處理單元需要將外部存儲(chǔ)器中原有的報(bào)文頭去掉,去掉 原有的報(bào)k頭只需要通過(guò)設(shè)置發(fā)送控制器的報(bào)文偏移完成,不需要讀寫(xiě)外部存儲(chǔ)器。3) 發(fā)送單元根據(jù)內(nèi)部高速緩存中的報(bào)文描述信息確認(rèn)該報(bào)文是否需要復(fù)制,即描述信息 中如果有復(fù)制標(biāo)識(shí),則該報(bào)文需要復(fù)制,如果描述信息中沒(méi)有復(fù)制標(biāo)識(shí),則該報(bào)文不需要復(fù) 制;4) 如果該報(bào)文需要復(fù)制,發(fā)送單元根據(jù)報(bào)文的描述信息和報(bào)文的處理參數(shù)生成報(bào)文的封 裝頭,根據(jù)復(fù)制報(bào)文的處理參數(shù)生成復(fù)制報(bào)文的封裝頭,接著將該報(bào)文的封裝頭寫(xiě)入發(fā)送緩 存中進(jìn)行發(fā)送,然后通過(guò)設(shè)置寄存器中的參數(shù)讀取并發(fā)送外部存儲(chǔ)器中的該報(bào)文的報(bào)文載荷, 并保留外部存儲(chǔ)器中該報(bào)文占用的資源,接著將復(fù)制報(bào)文的封裝頭寫(xiě)入發(fā)送緩存中進(jìn)行發(fā)送, 然后通過(guò)設(shè)置寄存器中的參數(shù)讀取并發(fā)送外部存儲(chǔ)器中該報(bào)文的報(bào)文載荷;復(fù)制報(bào)文發(fā)送完 成后,釋放該報(bào)文在外部存儲(chǔ)器和內(nèi)部高速緩存中占用的資源;當(dāng)該報(bào)文需要復(fù)制多個(gè)時(shí),發(fā)送單元將會(huì)生成該報(bào)文的多個(gè)復(fù)制報(bào)文的封裝頭;然后逐 次發(fā)送復(fù)制報(bào)文,即先發(fā)送多個(gè)復(fù)制報(bào)文的封裝頭中的第一個(gè)封裝頭,然后讀取并發(fā)送外 部存儲(chǔ)器中該報(bào)文的報(bào)文載荷;接著發(fā)送多個(gè)復(fù)制報(bào)文的封裝頭中的下一個(gè)封裝頭,然后讀 取并發(fā)送外部存儲(chǔ)器中該報(bào)文的報(bào)文載荷;直到多個(gè)復(fù)制報(bào)文的封裝頭全部完成發(fā)送后,再 釋放該報(bào)文在外部存儲(chǔ)器和內(nèi)部高速緩存中占用的資源。5) 如果該報(bào)文不需要復(fù)制,發(fā)送單元根據(jù)報(bào)文的描述信息和報(bào)文的處理參數(shù)生成報(bào)文的 封裝頭,接著將該報(bào)文的封裝頭寫(xiě)入發(fā)送緩存中進(jìn)行發(fā)送,然后通過(guò)設(shè)置寄存器中的參數(shù)讀 取并發(fā)送外部存儲(chǔ)器中的該報(bào)文的報(bào)文載荷,并釋放該報(bào)文在外部存儲(chǔ)器和內(nèi)部高速緩存中占用的資源。上述網(wǎng)絡(luò)處理器對(duì)普通報(bào)文進(jìn)行處理時(shí),通過(guò)內(nèi)部高速緩存存儲(chǔ)并傳遞的是當(dāng)前處理報(bào) 文的描述信息和與之轉(zhuǎn)發(fā)相關(guān)的參數(shù),這些參數(shù)在報(bào)文處理的過(guò)程中不斷收集并逐級(jí)使用, 最終獲取的是報(bào)文新的封裝頭。這個(gè)封裝頭可能是報(bào)文的二層頭,也可能是傳遞給下游器件 使用的內(nèi)部幀頭。將這個(gè)新的封裝頭寫(xiě)入發(fā)送緩存,并通過(guò)對(duì)寄存器的設(shè)置由硬件自動(dòng)完成 報(bào)文頭和報(bào)文載荷的先后發(fā)送,最后回收寄存器等各項(xiàng)資源。由于網(wǎng)絡(luò)處理器在轉(zhuǎn)發(fā)報(bào)文時(shí)90%的處理結(jié)果是對(duì)原有二層信息的替換或添加一些幀頭 信息給下游芯片所用,很少涉及IP頭及其載荷的更改,因此,本實(shí)施例通過(guò)發(fā)送緩存存放二 層頭或幀頭,不需要將二層頭或幀頭回寫(xiě)外部存儲(chǔ)器后再發(fā)送了,硬件根據(jù)配置首先從發(fā)送 緩存中將二層頭或幀頭發(fā)送出去,然后再將外部存儲(chǔ)器中的報(bào)文載荷接在后面發(fā)送,進(jìn)而提 高了報(bào)文發(fā)送時(shí)的性能。同時(shí),本實(shí)施例利用內(nèi)部的高速緩存存放原始報(bào)文和復(fù)制報(bào)文的參數(shù)信息,并在發(fā)送報(bào) 文時(shí)先將原始的封裝頭和報(bào)文載荷發(fā)送出去,然后將復(fù)制報(bào)文的封裝頭和報(bào)文載荷發(fā)送出去, 達(dá)到復(fù)制報(bào)文的目的,本實(shí)施例在處理和發(fā)送報(bào)文的過(guò)程中都避免了對(duì)外部存儲(chǔ)器中保存的 數(shù)據(jù)的讀取和搬移,外部存儲(chǔ)器中不需要額外的存儲(chǔ)空間保存復(fù)制報(bào)文,只需保存一份原始 報(bào)文,增強(qiáng)了網(wǎng)絡(luò)處理器對(duì)所承載各項(xiàng)業(yè)務(wù)的轉(zhuǎn)發(fā)能力。實(shí)施例2參見(jiàn)圖3,本實(shí)施例提供了一種網(wǎng)絡(luò)處理器,該網(wǎng)絡(luò)處理器包括接收單元,用于接收?qǐng)?bào)文,將該報(bào)文寫(xiě)入外部存儲(chǔ)器; 處理單元,用于根據(jù)本地配置的業(yè)務(wù)確認(rèn)該報(bào)文是否需要復(fù)制;發(fā)送單元,用于處理單元確認(rèn)該報(bào)文需要復(fù)制時(shí),生成該報(bào)文的封裝頭和報(bào)文的復(fù)制報(bào) 文的封裝頭;發(fā)送該報(bào)文的封裝頭,然后讀取并發(fā)送外部存儲(chǔ)器中的該報(bào)文的報(bào)文載荷;以 及發(fā)送復(fù)制報(bào)文的封裝頭,然后讀取并發(fā)送外部存儲(chǔ)器中該報(bào)文的報(bào)文載荷。進(jìn)一步地,參見(jiàn)圖4,該網(wǎng)絡(luò)處理器還包括內(nèi)部高速緩存單元,用于緩存接收單元接收到的該報(bào)文的描述信息,以及接收單元和處 理單元對(duì)該報(bào)文進(jìn)行處理后的參數(shù);相應(yīng)地,處理單元還用于確認(rèn)該報(bào)文需要復(fù)制后,在內(nèi)部高速緩存單元的報(bào)文的描述信 息中寫(xiě)入復(fù)制標(biāo)識(shí),將該報(bào)文的處理參數(shù)和該報(bào)文的復(fù)制報(bào)文的處理參數(shù)寫(xiě)入內(nèi)部高速緩存 單元;發(fā)送單元具體包括封裝頭生成子單元,用于根據(jù)內(nèi)部高速緩存單元中的復(fù)制標(biāo)識(shí)確認(rèn)該報(bào)文需要復(fù)制后, 根據(jù)報(bào)文的描述信息和報(bào)文的處理參數(shù)生成該報(bào)文的封裝頭,根據(jù)復(fù)制報(bào)文的處理參數(shù)生成 復(fù)制報(bào)文的封裝頭;發(fā)送子單元,用于發(fā)送封裝頭生成子單元生成的該報(bào)文的封裝頭,然后讀取并發(fā)送外部 存儲(chǔ)器中的報(bào)文的報(bào)文載荷;以及發(fā)送封裝頭生成子單元生成的復(fù)制報(bào)文的封裝頭,然后讀 取并發(fā)送外部存儲(chǔ)器中報(bào)文的報(bào)文載荷,釋放外部存儲(chǔ)器中報(bào)文占用的資源。根據(jù)業(yè)務(wù)情況,如果一個(gè)報(bào)文需要復(fù)制的報(bào)文為多個(gè)時(shí),參見(jiàn)圖5,上述該網(wǎng)絡(luò)處理器 的處理單元具體用于根據(jù)本地配置的業(yè)務(wù)確認(rèn)報(bào)文是否需要復(fù)制,以及確定復(fù)制報(bào)文的個(gè)數(shù);相應(yīng)地,發(fā)送單元包括封裝頭生成子單元,用于處理單元確認(rèn)報(bào)文需要復(fù)制,且需要復(fù)制多個(gè)時(shí),生成該報(bào)文 的封裝頭和該報(bào)文的多個(gè)復(fù)制報(bào)文的封裝頭;原始報(bào)文發(fā)送子單元,用于發(fā)送封裝頭生成子單元生成的該報(bào)文的封裝頭,然后讀取并 發(fā)送外部存儲(chǔ)器中的該報(bào)文的報(bào)文載荷;復(fù)制報(bào)文發(fā)送子單元,用于發(fā)送多個(gè)復(fù)制報(bào)文的封裝頭中的第一個(gè)封裝頭,然后讀取并 發(fā)送外部存儲(chǔ)器中該報(bào)文的報(bào)文載荷;接著發(fā)送多個(gè)復(fù)制報(bào)文的封裝頭中的下一個(gè)封裝頭, 然后讀取并發(fā)送外部存儲(chǔ)器中該報(bào)文的報(bào)文載荷;直到多個(gè)復(fù)制報(bào)文的封裝頭全部完成發(fā)送;資源釋放子單元,用于復(fù)制報(bào)文發(fā)送子單元完成報(bào)文發(fā)送后,釋放外部存儲(chǔ)器中該報(bào)文 占用的資源。本實(shí)施例進(jìn)行報(bào)文復(fù)制時(shí),通過(guò)先發(fā)送原始報(bào)文的封裝頭和報(bào)文載荷,然后發(fā)送復(fù)制報(bào) 文的封裝頭和報(bào)文載荷,實(shí)現(xiàn)了復(fù)制報(bào)文的目的;同時(shí),將原始報(bào)文的處理信息和復(fù)制報(bào)文 的處理信息寫(xiě)入內(nèi)部高速緩存單元進(jìn)行傳遞,訪問(wèn)內(nèi)部高速緩存單元的效率遠(yuǎn)遠(yuǎn)高過(guò)對(duì)外部 存儲(chǔ)器的讀寫(xiě)。本實(shí)施例的網(wǎng)絡(luò)處理器在處理報(bào)文期間沒(méi)有進(jìn)行任何內(nèi)存的復(fù)制,也沒(méi)有申 請(qǐng)新的資源塊,提高了復(fù)制報(bào)文的性能,也節(jié)省了存儲(chǔ)空間;進(jìn)而增強(qiáng)了網(wǎng)絡(luò)處理器對(duì)所承 載各項(xiàng)業(yè)務(wù)的轉(zhuǎn)發(fā)能力。此外,在具體實(shí)現(xiàn)時(shí),本發(fā)明實(shí)施例網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法在執(zhí)行完上述發(fā)送原始 報(bào)文和復(fù)制報(bào)文的歩驟即可實(shí)現(xiàn)復(fù)制報(bào)文的目的,并達(dá)成上述功效,因此上述實(shí)施例中所述 最后一步,即"釋放外部存儲(chǔ)器中該報(bào)文占用的資源",并不是本發(fā)明實(shí)施例方案中所必須執(zhí) 行的一步。相應(yīng)地,如果本發(fā)明實(shí)施例網(wǎng)絡(luò)處理器中沒(méi)有對(duì)應(yīng)的完成上述釋放功能的單元也 可以實(shí)現(xiàn)本發(fā)明目的,并達(dá)成上述功效。部分內(nèi)容可以通過(guò)軟件編程實(shí)現(xiàn),其軟件程序存 儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)例如計(jì)算機(jī)中的硬盤、光盤或軟盤。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之 內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1. 一種網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法,其特征在于,所述方法包括接收到報(bào)文后,將所述報(bào)文寫(xiě)入外部存儲(chǔ)器;根據(jù)本地配置的業(yè)務(wù)確認(rèn)所述報(bào)文需要復(fù)制時(shí),生成所述報(bào)文的封裝頭和所述報(bào)文的復(fù)制報(bào)文的封裝頭;發(fā)送所述報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中的所述報(bào)文的報(bào)文載荷;發(fā)送所述復(fù)制報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中所述報(bào)文的報(bào)文載荷。
2. 如權(quán)利要求l所述的網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法,其特征在于,所述將所述報(bào)文寫(xiě)入 外部存儲(chǔ)器之后還包括接收單元將所述報(bào)文的描述信息寫(xiě)入內(nèi)部高速緩存;相應(yīng)地,所述根據(jù)本地配置的業(yè)務(wù)確認(rèn)所述報(bào)文需要復(fù)制時(shí),生成所述報(bào)文的封裝頭和 所述報(bào)文的復(fù)制報(bào)文的封裝頭包括處理單元確認(rèn)所述報(bào)文需要復(fù)制后,在所述內(nèi)部高速緩存的所述報(bào)文的描述信息中寫(xiě)入 復(fù)制標(biāo)識(shí),將所述報(bào)文的處理參數(shù)和所述報(bào)文的復(fù)制報(bào)文的處理參數(shù)寫(xiě)入所述內(nèi)部高速緩存;發(fā)送單元根據(jù)所述復(fù)制標(biāo)識(shí)確認(rèn)所述報(bào)文需要復(fù)制,根據(jù)所述報(bào)文的描述信息和所述報(bào) 文的處理參數(shù)生成所述報(bào)文的封裝頭,根據(jù)所述復(fù)制報(bào)文的處理參數(shù)生成所述復(fù)制報(bào)文的封 裝頭。
3. 如權(quán)利要求2所述的網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法,其特征在于,所述報(bào)文的描述信息 包括所述報(bào)文在所述外部存儲(chǔ)器中的存儲(chǔ)位置、所述報(bào)文的大小或偏移信息;所述處理參數(shù) 包括路由信息、封裝信息、ACL信息。
4. 如權(quán)利要求l所述的網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法,其特征在于,當(dāng)所述報(bào)文需要復(fù)制 多個(gè)時(shí),所述生成所述報(bào)文的封裝頭和所述報(bào)文的復(fù)制報(bào)文的封裝頭包括生成所述報(bào)文的封裝頭和所述報(bào)文的多個(gè)復(fù)制報(bào)文的封裝頭;相應(yīng)地,所述發(fā)送所述復(fù)制報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中所述報(bào)文 的報(bào)文載荷包括發(fā)送所述多個(gè)復(fù)制報(bào)文的封裝頭中的第一個(gè)封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中 所述報(bào)文的報(bào)文載荷;發(fā)送所述多個(gè)復(fù)制報(bào)文的封裝頭中的下一個(gè)封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中 所述報(bào)文的報(bào)文載荷;直到所述多個(gè)復(fù)制報(bào)文的封裝頭全部完成發(fā)送。
5. 如權(quán)利要求1至4中任意一項(xiàng)所述的網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法,其特征在于,該方 法還包括在發(fā)送完所述報(bào)文和復(fù)制報(bào)文之后,釋放所述外部存儲(chǔ)器中所述報(bào)文占用的資源。
6. —種網(wǎng)絡(luò)處理器,其特征在于,所述網(wǎng)絡(luò)處理器包括 接收單元,用于接收?qǐng)?bào)文,將所述報(bào)文寫(xiě)入外部存儲(chǔ)器; 處理單元,用于根據(jù)本地配置的業(yè)務(wù)確認(rèn)所述報(bào)文是否需要復(fù)制;發(fā)送單元,用于所述處理單元確認(rèn)所述報(bào)文需要復(fù)制時(shí),生成所述報(bào)文的封裝頭和所述 報(bào)文的復(fù)制報(bào)文的封裝頭;發(fā)送所述報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中的所 述報(bào)文的報(bào)文載荷;以及發(fā)送所述復(fù)制報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中所 述報(bào)文的報(bào)文載荷。
7. 如權(quán)利要求6所述的網(wǎng)絡(luò)處理器,其特征在于,所述網(wǎng)絡(luò)處理器還包括內(nèi)部高速緩存單元,用于緩存所述接收單元接收到的報(bào)文的描述信息,以及所述接收單元和所述處理單元對(duì)所述報(bào)文進(jìn)行處理后的參數(shù);相應(yīng)地,所述處理單元還用于確認(rèn)所述報(bào)文需要復(fù)制后,在所述內(nèi)部高速緩存單元的所 述報(bào)文的描述信息中寫(xiě)入復(fù)制標(biāo)識(shí),將所述報(bào)文的處理參數(shù)和所述報(bào)文的復(fù)制報(bào)文的處理參 數(shù)寫(xiě)入所述內(nèi)部高速緩存單元;所述發(fā)送單元具體包括封裝頭生成子單元,用于根據(jù)所述內(nèi)部高速緩存單元中的復(fù)制標(biāo)識(shí)確認(rèn)所述報(bào)文需要復(fù) 制后,根據(jù)所述報(bào)文的描述信息和所述報(bào)文的處理參數(shù)生成所述報(bào)文的封裝頭,根據(jù)所述復(fù)制報(bào)文的處理參數(shù)生成所述復(fù)制報(bào)文的封裝頭;發(fā)送子單元,用于發(fā)送所述封裝頭生成子單元生成的所述報(bào)文的封裝頭,然后讀取并發(fā) 送所述外部存儲(chǔ)器中的所述報(bào)文的報(bào)文載荷;以及發(fā)送所述封裝頭生成子單元生成的所述復(fù) 制報(bào)文的封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中所述報(bào)文的報(bào)文載荷,釋放所述外部存儲(chǔ)器中所述報(bào)文占用的資源。
8.如權(quán)利要求6所述的網(wǎng)絡(luò)處理器,其特征在于,所述處理單元具體用于根據(jù)本地配置 的業(yè)務(wù)確認(rèn)所述報(bào)文是否需要復(fù)制,以及確定復(fù)制報(bào)文的個(gè)數(shù); 相應(yīng)地,所述發(fā)送單元包括封裝頭生成子單元,用于所述處理單元確認(rèn)所述報(bào)文需要復(fù)制,且需要復(fù)制多個(gè)時(shí),生 成所述報(bào)文的封裝頭和所述報(bào)文的多個(gè)復(fù)制報(bào)文的封裝頭;原始報(bào)文發(fā)送子單元,用于發(fā)送所述封裝頭生成子單元生成的所述報(bào)文的封裝頭,然后 讀取并發(fā)送所述外部存儲(chǔ)器中的所述報(bào)文的報(bào)文載荷;復(fù)制報(bào)文發(fā)送子單元,用于發(fā)送所述多個(gè)復(fù)制報(bào)文的封裝頭中的第一個(gè)封裝頭,然后讀 取并發(fā)送所述外部存儲(chǔ)器中所述報(bào)文的報(bào)文載荷;接著發(fā)送所述多個(gè)復(fù)制報(bào)文的封裝頭中的 下一個(gè)封裝頭,然后讀取并發(fā)送所述外部存儲(chǔ)器中所述報(bào)文的報(bào)文載荷;直到所述多個(gè)復(fù)制 報(bào)文的封裝頭全部完成發(fā)送;資源釋放子單元,用于所述復(fù)制報(bào)文發(fā)送子單元完成報(bào)文發(fā)送后,釋放所述外部存儲(chǔ)器 中所述報(bào)文占用的資源。
全文摘要
本發(fā)明公開(kāi)了一種網(wǎng)絡(luò)處理器復(fù)制報(bào)文的方法和網(wǎng)絡(luò)處理器,屬于通信領(lǐng)域。所述方法包括接收到報(bào)文后,將所述報(bào)文寫(xiě)入外部存儲(chǔ)器;確認(rèn)所述報(bào)文需要復(fù)制時(shí),生成所述報(bào)文的封裝頭和所述報(bào)文的復(fù)制報(bào)文的封裝頭;發(fā)送所述報(bào)文的封裝頭,然后讀取并發(fā)送所述報(bào)文的報(bào)文載荷;發(fā)送所述復(fù)制報(bào)文的封裝頭,然后讀取并發(fā)送所述報(bào)文的報(bào)文載荷。所述網(wǎng)絡(luò)處理器包括接收單元、處理單元和發(fā)送單元。本發(fā)明通過(guò)兩次發(fā)送封裝頭和報(bào)文載荷,實(shí)現(xiàn)了復(fù)制報(bào)文的目的,同時(shí),在處理報(bào)文期間沒(méi)有進(jìn)行內(nèi)存的復(fù)制,也沒(méi)有申請(qǐng)新的資源塊,提高了復(fù)制報(bào)文的性能,進(jìn)而增強(qiáng)了網(wǎng)絡(luò)處理器對(duì)所承載各項(xiàng)業(yè)務(wù)的轉(zhuǎn)發(fā)能力。
文檔編號(hào)H04L12/56GK101257457SQ20081010306
公開(kāi)日2008年9月3日 申請(qǐng)日期2008年3月31日 優(yōu)先權(quán)日2008年3月31日
發(fā)明者遙 吳, 周克成, 恒 唐, 徐德軍, 琨 牛, 王孝根, 王火青 申請(qǐng)人:華為技術(shù)有限公司