專利名稱:一種數(shù)據(jù)包接收處理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到數(shù)據(jù)通信領(lǐng)域。具體而言,是一種數(shù)據(jù)包接收處理方法和裝置。
背景技術(shù):
高速數(shù)據(jù)業(yè)務(wù)要求系統(tǒng)的處理時(shí)延越小越好。當(dāng)數(shù)據(jù)包進(jìn)入數(shù)據(jù)業(yè)務(wù)系統(tǒng)時(shí),一 般需要經(jīng)過接收、流分類和存儲三個(gè)操作。在此過程中,數(shù)據(jù)包的接收和存儲操作所花費(fèi) 的時(shí)間和存儲空間資源都與數(shù)據(jù)包的長度成正比關(guān)系。按照傳統(tǒng)的方法,每一步操作的開 始需要等待上一步操作的完成,對于長度很長的數(shù)據(jù)包,如9600byte,在時(shí)間上和器件片內(nèi) RAM資源上都是很大的開銷,甚至成為系統(tǒng)的瓶頸。當(dāng)系統(tǒng)采用傳統(tǒng)的處理方式時(shí),一個(gè)數(shù)據(jù)包的接收過程所花費(fèi)的時(shí)間為數(shù)據(jù)包接 收的時(shí)間tl,數(shù)據(jù)包流分類操作的時(shí)間t2,和數(shù)據(jù)包存入緩存的時(shí)間t3三者之和,其中數(shù)據(jù)包接收的時(shí)間tl :tl = len/vl,其中,Ien為數(shù)據(jù)包的包長,vl為該數(shù)據(jù)包的 輸入端口速率;數(shù)據(jù)包流分類操作的時(shí)間t2可以看作與數(shù)據(jù)包的長度無關(guān),為一個(gè)固定值;數(shù)據(jù)包存入緩存的時(shí)間t3 :t3 = len/v2,其中,Ien為數(shù)據(jù)包的包長,v2為系統(tǒng)緩 存的存儲速率。因此整個(gè)過程所耗費(fèi)的時(shí)間為tl+t2+t3 = Ien/vl+t2+len/v20對于一個(gè)固定的 系統(tǒng)來說,vl, v2為固定值,所以決定整個(gè)過程所耗費(fèi)時(shí)間是數(shù)據(jù)包的長度len。當(dāng)系統(tǒng)支持的最大包長為9600byte,數(shù)據(jù)包輸入端口為Kibps,系統(tǒng)緩存的存 儲速率為20(ibpS時(shí),從開始接收到緩存完畢的最大時(shí)延為9600X8/(109)+9600X8/ (2 X IOici)+t2,艮口 8. 064X10_5+t2(s)。另外,對于數(shù)據(jù)包的接收,數(shù)據(jù)端口需要的器件片內(nèi)RAM資源,應(yīng)該至少支持兩個(gè) 最大包長的數(shù)據(jù)整包的空間,即9600X8X2 = 153. 61Λ,如果系統(tǒng)輸入的端口數(shù)目不止一 個(gè)的情況下,隨著端口的數(shù)目的增加,這個(gè)資源的開銷會逐漸變得不可接受。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種數(shù)據(jù)包接收處理方法和裝置,減小數(shù)據(jù)處理 時(shí)延。為了解決上述問題,本發(fā)明提供了一種數(shù)據(jù)包接收處理裝置,包括輸入控制模塊、 報(bào)文處理模塊和包管理模塊,其中所述輸入控制模塊用于接收數(shù)據(jù)包,在接收數(shù)據(jù)包的過程中,提取流分類操作信 息,按預(yù)設(shè)大小對數(shù)據(jù)包進(jìn)行切片,每接收到一個(gè)數(shù)據(jù)切片將其發(fā)送給所述包管理模塊,當(dāng) 數(shù)據(jù)包接收完畢后,將所述流分類操作信息發(fā)送給所述報(bào)文處理模塊;以及,接收所述數(shù)據(jù) 包的流分類操作結(jié)果,將所述流分類操作結(jié)果發(fā)送給包管理模塊;所述報(bào)文處理模塊用于根據(jù)所述流分類操作信息對所述數(shù)據(jù)包進(jìn)行流分類操 作,將得到的流分類操作結(jié)果發(fā)送給所述輸入控制模塊;
所述包管理模塊用于接收到所述輸入控制模塊發(fā)送的所述數(shù)據(jù)包的數(shù)據(jù)切片 時(shí),存儲到該數(shù)據(jù)包對應(yīng)的存儲空間;以及,接收到所述數(shù)據(jù)包的流分類操作結(jié)果后,提取 相關(guān)信息發(fā)起后續(xù)操作。進(jìn)一步的,上述裝置還可具有以下特點(diǎn),所述預(yù)設(shè)大小為系統(tǒng)緩存操作的最小單 元或最小單元的倍數(shù)。進(jìn)一步的,上述裝置還可具有以下特點(diǎn),所述輸入控制模塊還用于將所述數(shù)據(jù)切 片發(fā)送給所述包管理模塊,和,將所述流分類操作信息發(fā)送給所述報(bào)文處理模塊,和,將所 述流分類操作結(jié)果發(fā)送給包管理模塊時(shí),攜帶所述數(shù)據(jù)包的輸入端口的端口標(biāo)識信息;所述報(bào)文處理模塊還用于,接收所述流分類操作信息和端口標(biāo)識信息時(shí),保存所 述端口標(biāo)識信息,發(fā)送所述流分類操作結(jié)果給所述輸入控制模塊時(shí),攜帶所述端口標(biāo)識信 息;所述包管理模塊還用于接收到所述數(shù)據(jù)切片及端口標(biāo)識信息,或接收到所述流 分類操作結(jié)果及端口標(biāo)識信息時(shí),根據(jù)所述端口標(biāo)識信息將所述數(shù)據(jù)切片或流分類操作結(jié) 果發(fā)送到對應(yīng)的數(shù)據(jù)端口處理。進(jìn)一步的,上述裝置還可具有以下特點(diǎn),所述流分類操作結(jié)果包括報(bào)文修改信息 和報(bào)文描述符信息;所述包管理模塊還用于將所述數(shù)據(jù)包的報(bào)文修改信息存儲在所述數(shù)據(jù)包對應(yīng)的 存儲空間,所述提取相關(guān)信息包括提取所述數(shù)據(jù)包的報(bào)文描述符信息。進(jìn)一步的,上述裝置還可具有以下特點(diǎn),所述輸入控制模塊還用于在接收數(shù)據(jù)包 的過程中,保存所述數(shù)據(jù)包前N字節(jié)數(shù)據(jù),從所述數(shù)據(jù)包的N個(gè)字節(jié)之后開始進(jìn)行切片,所 述N為所述預(yù)設(shè)大小與所述報(bào)文修改信息差值;在收到所述數(shù)據(jù)包的流分類操作結(jié)果后, 將所述前N字節(jié)數(shù)據(jù)與所述數(shù)據(jù)包的報(bào)文修改信息組成包首切片發(fā)送給所述包管理模塊;所述包管理模塊還用于將所述數(shù)據(jù)包的數(shù)據(jù)切片進(jìn)行存儲時(shí),保留所述數(shù)據(jù)包 對應(yīng)的存儲空間的首個(gè)存儲塊;以及,接收到所述數(shù)據(jù)包的包首切片時(shí),將其存儲在所述數(shù) 據(jù)包對應(yīng)的存儲空間的首個(gè)存儲塊。進(jìn)一步的,上述裝置還可具有以下特點(diǎn),所述輸入控制模塊還用于在接收完一個(gè) 數(shù)據(jù)包后,等待并接收所述數(shù)據(jù)包的流分類操作結(jié)果過程中,進(jìn)行下一數(shù)據(jù)包的接收操作, 并發(fā)送所述下一數(shù)據(jù)包的數(shù)據(jù)切片至包管理模塊;所述包管理模塊還用于在接收完所述數(shù)據(jù)包的數(shù)據(jù)切片,等待所述數(shù)據(jù)包的流 分類操作結(jié)果的過程中,接收到所述數(shù)據(jù)包的下一數(shù)據(jù)包的數(shù)據(jù)切片時(shí),將其存儲到所述 下一數(shù)據(jù)包對應(yīng)的存儲空間。本發(fā)明還提供一種數(shù)據(jù)包接收處理方法,包括接收數(shù)據(jù)包,在接收數(shù)據(jù)包的過程中,提取流分類操作信息,按預(yù)設(shè)大小對數(shù)據(jù)包 進(jìn)行切片得到數(shù)據(jù)切片,每接收到一個(gè)數(shù)據(jù)切片則存儲到該數(shù)據(jù)包對應(yīng)的存儲空間;當(dāng)所述數(shù)據(jù)包接收完畢后,根據(jù)所述流分類操作信息對所述數(shù)據(jù)包進(jìn)行流分類操 作,得到流分類操作結(jié)果后,提取相關(guān)信息發(fā)起后續(xù)操作。進(jìn)一步的,上述方法還可具有以下特點(diǎn),所述預(yù)設(shè)大小為系統(tǒng)緩存操作的最小單 元或最小單元的倍數(shù)。進(jìn)一步的,上述方法還可具有以下特點(diǎn),所述方法還包括
當(dāng)處理多個(gè)輸入端口的數(shù)據(jù)包時(shí),使用端口標(biāo)識信息區(qū)分不同輸入端口的數(shù)據(jù)包 的數(shù)據(jù)切片、流分類操作信息和流分類操作結(jié)果。進(jìn)一步的,上述方法還可具有以下特點(diǎn),所述流分類操作結(jié)果包括報(bào)文修改信息 和報(bào)文描述符信息;所述提取相關(guān)信息包括提取所述數(shù)據(jù)包的報(bào)文描述符信息;所述方法還包括,將所述數(shù)據(jù)包的報(bào)文修改信息存儲在所述數(shù)據(jù)包對應(yīng)的存儲空 間。進(jìn)一步的,上述方法還可具有以下特點(diǎn),所述方法還包括在接收數(shù)據(jù)包的過程 中,保存所述數(shù)據(jù)包前N字節(jié)數(shù)據(jù),從所述數(shù)據(jù)包的N個(gè)字節(jié)之后開始進(jìn)行切片,所述N為 所述預(yù)設(shè)大小與所述報(bào)文修改信息差值;將所述數(shù)據(jù)包的數(shù)據(jù)切片進(jìn)行存儲時(shí),保留所述 數(shù)據(jù)包對應(yīng)的存儲空間的首個(gè)存儲塊;在得到所述數(shù)據(jù)包的流分類操作結(jié)果后,將所述前N字節(jié)數(shù)據(jù)與所述數(shù)據(jù)包的報(bào) 文修改信息組成包首切片存儲在所述數(shù)據(jù)包對應(yīng)的存儲空間的首個(gè)存儲塊。進(jìn)一步的,上述方法還可具有以下特點(diǎn),所述方法還包括,在接收完一個(gè)數(shù)據(jù)包 后,等待并接收所述數(shù)據(jù)包的流分類操作結(jié)果過程中,進(jìn)行下一數(shù)據(jù)包的接收、切片以及數(shù) 據(jù)切片存儲操作。采用本發(fā)明所述的方法,與現(xiàn)有方案相比,由于數(shù)據(jù)包不需要等待接收完畢,就可 以進(jìn)行存儲操作,在一定程度上將存儲時(shí)間和接收時(shí)間復(fù)用。因此,整個(gè)過程所花費(fèi)的時(shí) 間,就大致為數(shù)據(jù)包接收的時(shí)間和一個(gè)數(shù)據(jù)切片的存儲時(shí)間。對于長包來說,基本上省去了 數(shù)據(jù)包的存儲時(shí)間,因此,能夠顯著減少長包的處理的時(shí)間,降低系統(tǒng)的延時(shí)。同時(shí),由于不需要完整的接收一個(gè)數(shù)據(jù)包后再發(fā)起存儲操作,而是僅僅需要能夠 支持?jǐn)?shù)據(jù)緩存操作的數(shù)據(jù)大小就可以完成從接收到緩存的操作,因此,器件片內(nèi)RAM資源 的開銷,由兩個(gè)最長包的空間顯著減少為兩個(gè)數(shù)據(jù)切片。另外,本發(fā)明將流分類操作的部分結(jié)果報(bào)文修改信息在不超過外部存儲空間處理 能力的情況下,與報(bào)文數(shù)據(jù)實(shí)體一起存入外部存儲空間中,然后直接傳輸給輸出模塊,不經(jīng) 過隊(duì)列管理部分,減少了隊(duì)列管理存儲的負(fù)擔(dān)。
圖1是本發(fā)明系統(tǒng)框圖;圖2是本發(fā)明IPC與PP的接口示意圖;
圖3是本發(fā)明IPC與PMG的接口示意圖;圖4是本發(fā)明IPC的處理示意圖;圖5是本發(fā)明PMG的處理流程圖。
具體實(shí)施例方式由于流分類操作需要整個(gè)數(shù)據(jù)包的校驗(yàn)信息,必須等到數(shù)據(jù)包的末尾進(jìn)入系統(tǒng)才 能啟動,所以數(shù)據(jù)包的接收和流分類操作的時(shí)間是不可節(jié)省的,可以改變的就是數(shù)據(jù)包存 入緩存這個(gè)操作。本發(fā)明的核心思想是提供一種數(shù)據(jù)包接收處理方法,讓數(shù)據(jù)包存儲操作和數(shù)據(jù) 包接收操作同時(shí)開始,讓數(shù)據(jù)包存入緩存的操作不必等到接收操作和流分類操作完成之后再進(jìn)行,從而節(jié)約了數(shù)據(jù)包存儲操作的時(shí)間,減小了系統(tǒng)的處理時(shí)延和資源消耗。本發(fā)明提供一種數(shù)據(jù)包接收處理裝置,如圖1所示,包括輸入控制模塊(IPC)、報(bào) 文處理模塊(PP)和包管理模塊(PMG)三個(gè)部分,其中所述IPC用于接收數(shù)據(jù)包,在接收數(shù)據(jù)包的過程中,提取流分類操作信息,按預(yù) 設(shè)大小對數(shù)據(jù)包進(jìn)行切片,每接收到一個(gè)數(shù)據(jù)切片將其發(fā)送給所述PMG,當(dāng)數(shù)據(jù)包接收完畢 后,將所述流分類操作信息發(fā)送給所述PP ;以及,接收所述數(shù)據(jù)包的流分類操作結(jié)果,將所 述流分類操作結(jié)果發(fā)送給PMG ;所述PP用于根據(jù)所述流分類操作信息對所述數(shù)據(jù)包進(jìn)行流分類操作,將得到的 流分類操作結(jié)果發(fā)送給所述IPC ;所述PMG用于接收到所述輸入控制模塊發(fā)送的所述數(shù)據(jù)包的數(shù)據(jù)切片時(shí),存儲 到該數(shù)據(jù)包對應(yīng)的存儲空間;以及,接收到所述數(shù)據(jù)包的流分類操作結(jié)果后,提取相關(guān)信息 發(fā)起后續(xù)操作。數(shù)據(jù)包可存儲在DDR(Double Data Rate,雙倍速率同步動態(tài)隨機(jī)存儲器); 中,并在DDR中完成數(shù)據(jù)包的重組。所述IPC還用于將所述數(shù)據(jù)切片發(fā)送給所述PMG,和,將所述流分類操作信息發(fā) 送給所述PP,和,將所述流分類操作結(jié)果發(fā)送給PMG時(shí),攜帶所述數(shù)據(jù)包的輸入端口的端口 標(biāo)識信息;所述PP還用于,接收所述流分類操作信息和端口標(biāo)識信息時(shí),保存所述端口標(biāo)識 信息,發(fā)送所述流分類操作結(jié)果給所述IPC時(shí),攜帶所述端口標(biāo)識信息;所述PMG還用于接收到所述數(shù)據(jù)切片及端口標(biāo)識信息,或接收到所述流分類操 作結(jié)果及端口標(biāo)識信息時(shí),根據(jù)所述端口標(biāo)識信息將所述數(shù)據(jù)切片或流分類操作結(jié)果發(fā)送 到對應(yīng)的數(shù)據(jù)端口處理。其中,所述PMG還用于將所述數(shù)據(jù)包的報(bào)文修改信息存儲在所述數(shù)據(jù)包對應(yīng)的 存儲空間,所述提取相關(guān)信息包括提取所述數(shù)據(jù)包的報(bào)文描述符信息。其中,所述輸入控制模塊還用于在接收數(shù)據(jù)包的過程中,保存所述數(shù)據(jù)包前N字 節(jié)數(shù)據(jù),從所述數(shù)據(jù)包的N個(gè)字節(jié)之后開始進(jìn)行切片,所述N為所述預(yù)設(shè)大小與所述報(bào)文修 改信息差值;在收到所述數(shù)據(jù)包的流分類操作結(jié)果后,將所述前N字節(jié)數(shù)據(jù)與所述數(shù)據(jù)包 的報(bào)文修改信息組成包首切片發(fā)送給所述包管理模塊;所述包管理模塊還用于將所述數(shù)據(jù)包的數(shù)據(jù)切片進(jìn)行存儲時(shí),保留所述數(shù)據(jù)包 對應(yīng)的存儲空間的首個(gè)存儲塊;以及,接收到所述數(shù)據(jù)包的包首切片時(shí),將其存儲在所述數(shù) 據(jù)包對應(yīng)的存儲空間的首個(gè)存儲塊。所述端口標(biāo)識信息為端口號。IPC與PP的接口如圖2所示。IPC至PP的接口包括有效信號,流分類操作信息、 端口號;PP至IPC的接口包括流分類操作結(jié)果、端口號和有效信號接口。有效信號接口用 于傳輸使能控制信號,端口號接口用于傳輸端口標(biāo)識信息,流分類操作信息接口用于傳輸 流分類操作信息,流分類操作結(jié)果接口用于傳輸流分類操作信息。IPC與PMG的接口如圖3所示,包括有效信號、數(shù)據(jù)通道、起始信號、結(jié)束信號、流分 類標(biāo)識和報(bào)文描述符信息接口,其中,有效信號接口用于傳輸使能控制信號,數(shù)據(jù)通道用于 傳輸數(shù)據(jù)切片和包首切片(具體含義見實(shí)施例),起始信號接口用于傳輸數(shù)據(jù)包的起始信 號,結(jié)束信號接口用于傳輸數(shù)據(jù)包的結(jié)束信號,流分類標(biāo)識接口用于標(biāo)識是否有流分類操作結(jié)果,報(bào)文描述符信息接口用于傳輸報(bào)文描述符信息。IPC處的操作流程如下步驟101,IPC接收輸入端口的數(shù)據(jù),按預(yù)設(shè)大小,將數(shù)據(jù)包進(jìn)行切片,并根據(jù)PP的 要求提取流分類操作所需要的信息,簡稱流分類操作信息;其中,所述預(yù)設(shè)大小為系統(tǒng)緩存操作的最小單元或其整數(shù)倍。步驟102,IPC每接收到一個(gè)數(shù)據(jù)切片,就將該數(shù)據(jù)切片和端口號發(fā)送至PMG進(jìn)行 緩存;步驟103,當(dāng)數(shù)據(jù)包接收完畢后,將數(shù)據(jù)包的流分類操作信息和端口號發(fā)送至PP ;步驟104,IPC等待并接收PP傳回的該數(shù)據(jù)包流分類操作結(jié)果,并且傳送給PMG, 完成該數(shù)據(jù)包的傳輸;在IPC等待PP傳回的該數(shù)據(jù)包流分類操作結(jié)果的過程中,可以進(jìn)行 后續(xù)數(shù)據(jù)包的接收和緩存操作。PP處的操作流程如下步驟201,PP接收IPC傳送給來的數(shù)據(jù)包的流分類操作信息和該數(shù)據(jù)包的端口 號;步驟202,PP根據(jù)流分類操作信息進(jìn)行數(shù)據(jù)包的流分類操作;其中,PP需要保證數(shù)據(jù)包進(jìn)行流分類操作的順序(先進(jìn)先出)。步驟203,PP將流分類操作的結(jié)果與該數(shù)據(jù)包對應(yīng)的端口信息發(fā)送回IPC ;PMG處的操作如下步驟301,PMG接收到IPC發(fā)送的數(shù)據(jù)包的起始信號,申請存儲空間;步驟302,依次存儲IPC發(fā)送過來的數(shù)據(jù)切片直至接收到數(shù)據(jù)包的結(jié)束信號;步驟303,PMG進(jìn)行后續(xù)數(shù)據(jù)包的存儲操作(重復(fù)步驟301和步驟302),并同時(shí)監(jiān) 控?cái)?shù)據(jù)包的流分類操作結(jié)果;步驟304,如果接收到數(shù)據(jù)包的流分類操作結(jié)果,將數(shù)據(jù)包的報(bào)文修改信息存儲到 該數(shù)據(jù)包對應(yīng)的存儲空間,并提取相應(yīng)的信息發(fā)起下一步操作。所述相應(yīng)的信息包括數(shù)據(jù)包的報(bào)文描述符信息。整個(gè)過程中,數(shù)據(jù)包存入緩存的數(shù)據(jù)實(shí)際上被分為了數(shù)據(jù)包的實(shí)體和數(shù)據(jù)包的流 分類操作結(jié)果兩部分,數(shù)據(jù)包的實(shí)體部分的存儲與數(shù)據(jù)包接收是同時(shí)進(jìn)行的,而數(shù)據(jù)包的 類分類操作結(jié)果的存儲是在數(shù)據(jù)包接收結(jié)束后,等待流分類操作結(jié)果傳回IPC才能進(jìn)行。本發(fā)明不僅適用于單端口輸入的系統(tǒng),同樣適用于多端口輸入的系統(tǒng),只需要增 加端口標(biāo)識信息,就能將各個(gè)端口號之間的數(shù)據(jù)進(jìn)行分離,而每個(gè)端口的處理方式與單端 口的處理方式一致。單端口情況下,各模塊之間傳輸信息(數(shù)據(jù)切片,流分類操作信息、流 分類操作信息)時(shí),不須攜帶端口標(biāo)識信息。為了更清楚地說明本發(fā)明的技術(shù)方案,下面將介紹一種實(shí)現(xiàn)該方案的具體過程, 但不作為對本發(fā)明的限定。假定,在IPC側(cè)有20個(gè)Kibps的數(shù)據(jù)端口 ;PP的處理需要的數(shù)據(jù)為數(shù)據(jù)包的前 128byte和數(shù)據(jù)包的CRC校驗(yàn)信息,PP返回48byte報(bào)文修改信息添加在數(shù)據(jù)報(bào)文的前面, 支持后面的報(bào)文修改,另傳輸66bit報(bào)文描述符信息提供給后續(xù)報(bào)文調(diào)度操作;DDR控制器 每次存儲操作的數(shù)據(jù)大小為64byte (512bit),因此,可以選擇IPC至PMG處的數(shù)據(jù)位寬為 64byte(512bit),數(shù)據(jù)切片的大小為64byte (512bit) ;DDR中以2048byte為最小的空間單
8元;系統(tǒng)支持的數(shù)據(jù)包長度為64btye-9600byte。IPC的處理流程如圖4所示,單個(gè)端口處理數(shù)據(jù)包的具體步驟如下IPC接收到數(shù)據(jù)包的起始數(shù)據(jù)后,將數(shù)據(jù)包的前16byte數(shù)據(jù)存入預(yù)設(shè)的 FIFO (First Input First Output,先入先出),該 FIFO 稱為頭切片 FIFO ;由于報(bào)文修改信息為48byte,不足一次緩存操作的大小,因此需要16byte的數(shù)據(jù) 一起組成數(shù)據(jù)切片,進(jìn)行緩存操作。由于報(bào)文修改信息應(yīng)該存放在報(bào)文數(shù)據(jù)的前面(便于 報(bào)文修改操作),因此將報(bào)文的前16byte預(yù)先截取出來緩存起來,等待報(bào)文修改信息傳回 給IPC時(shí),組裝成包首切片,傳送給PMG進(jìn)行緩存,傳遞該包首切片同時(shí)還會傳送該數(shù)據(jù)包 對應(yīng)的報(bào)文描述信息。當(dāng)然,也可以不預(yù)存16byte的數(shù)據(jù),直接將報(bào)文修改信息組成包首 切片發(fā)送給PMG進(jìn)行緩存。IPC提取數(shù)據(jù)包前128byte,存入固定的存儲空間(用端口號進(jìn)行區(qū)分),等待數(shù)據(jù) 包接收完畢后,與CRC校驗(yàn)結(jié)果傳輸給PP,發(fā)起流分類操作;IPC從數(shù)據(jù)包的17byte起,按64byte為單位進(jìn)行數(shù)據(jù)切片傳輸,按順序發(fā)送至 PMG,對第一個(gè)數(shù)據(jù)切片加上SOP信號,作為新包的起始,對數(shù)據(jù)包的最后一個(gè)切片加上EOP 信號,表明數(shù)據(jù)包的實(shí)體信息接收完畢;監(jiān)控?cái)?shù)據(jù)包的流分類操作結(jié)果,并將接收到的流分類操作結(jié)果與頭切片F(xiàn)IFO中 的第一個(gè)數(shù)據(jù)組裝成數(shù)據(jù)包首切片,并將對應(yīng)66bit的報(bào)文描述符信息,一起傳遞給PMG進(jìn) 行存儲和發(fā)起下一步操作。流分類操作結(jié)果,被區(qū)分為兩部分1、報(bào)文修改信息,該部分不需要傳遞給系統(tǒng)的 隊(duì)列管理部分,直接與報(bào)文一起存在外部緩存中(DDR中),以減輕隊(duì)列管理的存儲負(fù)擔(dān),在 數(shù)據(jù)包出隊(duì)時(shí)直接傳遞給系統(tǒng)的輸出模塊進(jìn)行報(bào)文修改;2、報(bào)文描述符信息(66bit),隊(duì) 列管理處理時(shí)需要的信息。IPC接收到流分類操作結(jié)果,主要進(jìn)行下面的操作IPC至PMG有兩個(gè)數(shù)據(jù)通道, 一個(gè)是數(shù)據(jù)通道,傳送報(bào)文的數(shù)據(jù)和報(bào)文修改信息,然后由PMG緩存至DDR中,一個(gè)是報(bào)文 描述符信息,經(jīng)PMG后,加上報(bào)文對應(yīng)的PMAU標(biāo)識(報(bào)文的DDR存儲空間信息),一起傳遞 后面隊(duì)列管理。其中,報(bào)文修改信息GSbyte)和預(yù)留的報(bào)文前16byte數(shù)據(jù),組成一個(gè)數(shù)據(jù) 切片(報(bào)文的包首切片)進(jìn)行傳輸,在傳輸這個(gè)切片的同時(shí),同步的在報(bào)文描述符符信息通 道,將該數(shù)據(jù)包的報(bào)文描述符信息傳遞給PMG。PP在此過程中,處理流程的具體步驟如下接收IPC發(fā)送來的數(shù)據(jù)包的流分類操作信息和端口號;依次按順序?qū)?shù)據(jù)包進(jìn)行流分類操作;將該數(shù)據(jù)包的流分類操作結(jié)果與該數(shù)據(jù)包的端口進(jìn)行同步匹配,然后將流分類操 作結(jié)果和端口號傳送回IPC。PMG的處理流程如圖5所示,具體步驟如下PMG接收到某一個(gè)數(shù)據(jù)切片后,通過數(shù)據(jù)切片的端口號,將數(shù)據(jù)切片發(fā)送到相應(yīng)的 數(shù)據(jù)端口 ;PMG識別數(shù)據(jù)切片的類型1、帶SOP的起始切片;2、帶EOP的結(jié)束切片;3、帶報(bào)文 修改信息和描述符信息的包首切片;4、不帶有以上信息的普通數(shù)據(jù)切片;PMG接收到帶有SOP的起始切片,申請一個(gè)數(shù)據(jù)存儲空間單元去緩存該數(shù)據(jù)包,并且將該數(shù)據(jù)存儲空間單元的第一個(gè)地址,預(yù)留給包首切片,從第二個(gè)地址開始存儲起始切 片的數(shù)據(jù);數(shù)據(jù)切片存儲完成后,記錄下該端口下一次存入數(shù)據(jù)的地址(當(dāng)前地址加1);將 該數(shù)據(jù)包存儲空間的首地址放在一個(gè)FIFO (包首切片地址FIFO)中,提供給后面存儲包首 切片使用;PMG接收到不帶有任何控制信息的普通數(shù)據(jù)切片,根據(jù)數(shù)據(jù)切片的端口信息提示 的地址,存入DDR中;存儲完成后,記錄下該端口下一次存入數(shù)據(jù)的地址(當(dāng)前地址加1); 如果當(dāng)前地址空間存儲滿而數(shù)據(jù)包還未存儲完成,申請新的地址空間繼續(xù)存儲;申請的地 址空間用鏈表的形式進(jìn)行管理并將第一個(gè)節(jié)點(diǎn)對應(yīng)的地址作為整個(gè)包的標(biāo)識以提供后面 使用;PMG接收到帶有EOP的起始切片,將該數(shù)據(jù)包標(biāo)志記錄,以表明該數(shù)據(jù)包的包實(shí)體 已經(jīng)存儲完畢,可以接收下一個(gè)數(shù)據(jù)包的信息;具體的,當(dāng)PMG存儲EOP后,會將該數(shù)據(jù)包 的存儲空間的首地址存入一個(gè)特定FIFO,每個(gè)端口有一個(gè)FIFO,用于記錄所有報(bào)文對應(yīng)存 儲空間的首地址,PMG接收到該端口的一個(gè)報(bào)文的包首切片,就從對應(yīng)的FIFO取出一個(gè)地 址,將該包首切片存入該地址,這就是報(bào)文緩存完成的標(biāo)志,然后會將該地址信息(作為報(bào) 文的標(biāo)識)和對應(yīng)的報(bào)文描述符信息一起完后傳遞給后續(xù)的隊(duì)列管理模塊,進(jìn)行下一步操 作。PMG接收到帶有報(bào)文修改信息和報(bào)文描述符信息的包首切片,同時(shí)提取包首切片 地址FIFO的第一個(gè)地址,將包首切片存入該地址中,這樣就完成了數(shù)據(jù)的重組;同時(shí)提取 相應(yīng)的數(shù)據(jù)包的信息(數(shù)據(jù)包存儲的首地址和數(shù)據(jù)包描述符信息等),發(fā)起接下來的操作。本實(shí)施例中,由于數(shù)據(jù)切片的大小是系統(tǒng)操作的最小單元,每個(gè)數(shù)據(jù)切片占用一 個(gè)數(shù)據(jù)存儲空間單元,當(dāng)數(shù)據(jù)切片的大小是系統(tǒng)操作的最小單元的整數(shù)倍時(shí),每個(gè)數(shù)據(jù)切 片占用多個(gè)數(shù)據(jù)存儲空間單元,稱為一個(gè)存儲塊,此時(shí),保留首個(gè)存儲塊用于存儲包首切 片,從第二存儲塊開始存儲數(shù)據(jù)包實(shí)體的數(shù)據(jù)切片。如果報(bào)文修改信息的大小超過一個(gè)存 儲塊的存儲空間,則預(yù)留該數(shù)據(jù)包對應(yīng)的存儲空間的前多個(gè)存儲塊,用于存儲報(bào)文修改信 肩、ο由于整個(gè)過程中,操作的最小單元是以64byte為單位的數(shù)據(jù)切片,因此,各個(gè)端 口只要以數(shù)據(jù)切片為單位進(jìn)行輪詢傳輸,對每個(gè)數(shù)據(jù)切片附加的端口信息就可以輕松區(qū) 分;端口內(nèi)數(shù)據(jù)包的區(qū)分,主要根據(jù)數(shù)據(jù)包控制信息和數(shù)據(jù)包本身的先后順序;在PMG中, 各端口的寫入地址情況,需要分開管理,根據(jù)控制信息,按照前面提到的存儲操作流程進(jìn)行 操作,就可以在DDR空間內(nèi),完成數(shù)據(jù)包的重組。本發(fā)明還提供一種數(shù)據(jù)包接收處理方法,包括接收數(shù)據(jù)包,在接收數(shù)據(jù)包的過程中,提取流分類操作信息,按預(yù)設(shè)大小對數(shù)據(jù)包 進(jìn)行切片得到數(shù)據(jù)切片,每接收到一個(gè)數(shù)據(jù)切片則存儲到該數(shù)據(jù)包對應(yīng)的存儲空間;當(dāng)所述數(shù)據(jù)包接收完畢后,根據(jù)所述流分類操作信息對所述數(shù)據(jù)包進(jìn)行流分類操 作,得到流分類操作結(jié)果后,提取相關(guān)信息發(fā)起后續(xù)操作。其中,所述預(yù)設(shè)大小為系統(tǒng)緩存操作的最小單元或最小單元的倍數(shù)。其中,當(dāng)處理多個(gè)輸入端口的數(shù)據(jù)包時(shí),使用端口標(biāo)識信息區(qū)分不同輸入端口的 數(shù)據(jù)包的數(shù)據(jù)切片、流分類操作信息和流分類操作結(jié)果。其中,所述流分類操作結(jié)果包括報(bào)文修改信息和報(bào)文描述符信息;所述提取相關(guān)信息包括提取所述數(shù)據(jù)包的報(bào)文描述符信息;所述方法還包括,將所述數(shù)據(jù)包的報(bào)文修改 信息存儲在所述數(shù)據(jù)包對應(yīng)的存儲空間。所述方法還包括在接收數(shù)據(jù)包的過程中,保存所述數(shù)據(jù)包前N字節(jié)數(shù)據(jù),從所述 數(shù)據(jù)包的N個(gè)字節(jié)之后開始進(jìn)行切片,所述N為所述預(yù)設(shè)大小與所述報(bào)文修改信息差值;將 所述數(shù)據(jù)包的數(shù)據(jù)切片進(jìn)行存儲時(shí),保留所述數(shù)據(jù)包對應(yīng)的存儲空間的首個(gè)存儲塊;在得 到所述數(shù)據(jù)包的流分類操作結(jié)果后,將所述前N字節(jié)數(shù)據(jù)與所述數(shù)據(jù)包的報(bào)文修改信息組 成包首切片存儲在所述數(shù)據(jù)包對應(yīng)的存儲空間的首個(gè)存儲塊。所述方法還包括,在接收完一個(gè)數(shù)據(jù)包后,等待并接收所述數(shù)據(jù)包的流分類操作 結(jié)果過程中,進(jìn)行下一數(shù)據(jù)包的接收、切片以及數(shù)據(jù)切片存儲操作。本發(fā)明提供的數(shù)據(jù)包接收處理方法,讓數(shù)據(jù)包存儲操作和數(shù)據(jù)包接收操作同時(shí)開 始,讓數(shù)據(jù)包存入緩存的操作不必等到接收操作和流分類操作完成之后再進(jìn)行,從而節(jié)約 了數(shù)據(jù)包存儲操作的時(shí)間,減小了系統(tǒng)的處理時(shí)延和資源消耗。另外,本發(fā)明還可減小數(shù)據(jù)包接收和存儲過程的去器件片內(nèi)RAM資源開銷。由于 流分類操作只需要數(shù)據(jù)包的包頭(即數(shù)據(jù)包中固定長度的數(shù)據(jù))和數(shù)據(jù)包接收時(shí)的CRC校 驗(yàn)的結(jié)果,因此需要的緩存不是很大。器件片內(nèi)RAM資源的最大的消耗,是在數(shù)據(jù)包的接 收-緩存的流程上。如果采用現(xiàn)有方案,在數(shù)據(jù)包采用接收完畢再發(fā)起緩存操作,那么系統(tǒng) 至少需要兩個(gè)長包的器件片內(nèi)RAM資源來完成此流程。采用本發(fā)明方案時(shí),接收-緩存同 時(shí)進(jìn)行,即數(shù)據(jù)包只要接收到足夠做一次緩存操作的數(shù)據(jù),就進(jìn)行數(shù)據(jù)包的緩存處理,將此 流程的器件片內(nèi)RAM資源降低為兩次緩存操作的數(shù)據(jù)的大小。另外,本發(fā)明將流分類結(jié)果中不需要經(jīng)過隊(duì)列管理的部分-報(bào)文修改信息,與報(bào) 文實(shí)體一起存入外部空間,雖然增加了外部空間的負(fù)擔(dān),但是減小了隊(duì)列管理的存儲負(fù)擔(dān)。 相對來說,報(bào)文管理模塊(PMG)的能力要強(qiáng)于隊(duì)列管理模塊,且成本相對較低。
權(quán)利要求
1.一種數(shù)據(jù)包接收處理裝置,其特征在于,包括輸入控制模塊、報(bào)文處理模塊和包管理 模塊,其中所述輸入控制模塊用于接收數(shù)據(jù)包,在接收數(shù)據(jù)包的過程中,提取流分類操作信息, 按預(yù)設(shè)大小對數(shù)據(jù)包進(jìn)行切片,每接收到一個(gè)數(shù)據(jù)切片將其發(fā)送給所述包管理模塊,當(dāng)數(shù) 據(jù)包接收完畢后,將所述流分類操作信息發(fā)送給所述報(bào)文處理模塊;以及,接收所述數(shù)據(jù)包 的流分類操作結(jié)果,將所述流分類操作結(jié)果發(fā)送給包管理模塊;所述報(bào)文處理模塊用于根據(jù)所述流分類操作信息對所述數(shù)據(jù)包進(jìn)行流分類操作,將 得到的流分類操作結(jié)果發(fā)送給所述輸入控制模塊;所述包管理模塊用于接收到所述輸入控制模塊發(fā)送的所述數(shù)據(jù)包的數(shù)據(jù)切片時(shí),存 儲到該數(shù)據(jù)包對應(yīng)的存儲空間;以及,接收到所述數(shù)據(jù)包的流分類操作結(jié)果后,提取相關(guān)信 息發(fā)起后續(xù)操作。
2.如權(quán)利要求1所述的裝置,其特征在于,所述預(yù)設(shè)大小為系統(tǒng)緩存操作的最小單元 或最小單元的倍數(shù)。
3.如權(quán)利要求1所述的裝置,其特征在于,所述輸入控制模塊還用于將所述數(shù)據(jù)切片發(fā)送給所述包管理模塊,和,將所述流分類 操作信息發(fā)送給所述報(bào)文處理模塊,和,將所述流分類操作結(jié)果發(fā)送給包管理模塊時(shí),攜帶 所述數(shù)據(jù)包的輸入端口的端口標(biāo)識信息;所述報(bào)文處理模塊還用于,接收所述流分類操作信息和端口標(biāo)識信息時(shí),保存所述端 口標(biāo)識信息,發(fā)送所述流分類操作結(jié)果給所述輸入控制模塊時(shí),攜帶所述端口標(biāo)識信息;所述包管理模塊還用于接收到所述數(shù)據(jù)切片及端口標(biāo)識信息,或接收到所述流分類 操作結(jié)果及端口標(biāo)識信息時(shí),根據(jù)所述端口標(biāo)識信息將所述數(shù)據(jù)切片或流分類操作結(jié)果發(fā) 送到對應(yīng)的數(shù)據(jù)端口處理。
4.如權(quán)利要求1所述的裝置,其特征在于,所述流分類操作結(jié)果包括報(bào)文修改信息和 報(bào)文描述符信息;所述包管理模塊還用于將所述數(shù)據(jù)包的報(bào)文修改信息存儲在所述數(shù)據(jù)包對應(yīng)的存儲 空間,所述提取相關(guān)信息包括提取所述數(shù)據(jù)包的報(bào)文描述符信息。
5.如權(quán)利要求4所述的裝置,其特征在于,所述輸入控制模塊還用于在接收數(shù)據(jù)包的過程中,保存所述數(shù)據(jù)包前N字節(jié)數(shù)據(jù),從 所述數(shù)據(jù)包的N個(gè)字節(jié)之后開始進(jìn)行切片,所述N為所述預(yù)設(shè)大小與所述報(bào)文修改信息差 值;在收到所述數(shù)據(jù)包的流分類操作結(jié)果后,將所述前N字節(jié)數(shù)據(jù)與所述數(shù)據(jù)包的報(bào)文修 改信息組成包首切片發(fā)送給所述包管理模塊;所述包管理模塊還用于將所述數(shù)據(jù)包的數(shù)據(jù)切片進(jìn)行存儲時(shí),保留所述數(shù)據(jù)包對應(yīng) 的存儲空間的首個(gè)存儲塊;以及,接收到所述數(shù)據(jù)包的包首切片時(shí),將其存儲在所述數(shù)據(jù)包 對應(yīng)的存儲空間的首個(gè)存儲塊。
6.如權(quán)利要求1至5任一所述的裝置,其特征在于,所述輸入控制模塊還用于在接收完一個(gè)數(shù)據(jù)包后,等待并接收所述數(shù)據(jù)包的流分類 操作結(jié)果過程中,進(jìn)行下一數(shù)據(jù)包的接收操作,并發(fā)送所述下一數(shù)據(jù)包的數(shù)據(jù)切片至包管 理模塊;所述包管理模塊還用于在接收完所述數(shù)據(jù)包的數(shù)據(jù)切片,等待所述數(shù)據(jù)包的流分類操作結(jié)果的過程中,接收到所述數(shù)據(jù)包的下一數(shù)據(jù)包的數(shù)據(jù)切片時(shí),將其存儲到所述下一 數(shù)據(jù)包對應(yīng)的存儲空間。
7.一種數(shù)據(jù)包接收處理方法,其特征在于,包括接收數(shù)據(jù)包,在接收數(shù)據(jù)包的過程中,提取流分類操作信息,按預(yù)設(shè)大小對數(shù)據(jù)包進(jìn)行 切片得到數(shù)據(jù)切片,每接收到一個(gè)數(shù)據(jù)切片則存儲到該數(shù)據(jù)包對應(yīng)的存儲空間;當(dāng)所述數(shù)據(jù)包接收完畢后,根據(jù)所述流分類操作信息對所述數(shù)據(jù)包進(jìn)行流分類操作, 得到流分類操作結(jié)果后,提取相關(guān)信息發(fā)起后續(xù)操作。
8.如權(quán)利要求7所述的方法,其特征在于,所述預(yù)設(shè)大小為系統(tǒng)緩存操作的最小單元 或最小單元的倍數(shù)。
9.如權(quán)利要求7所述的方法,其特征在于,所述方法還包括當(dāng)處理多個(gè)輸入端口的數(shù)據(jù)包時(shí),使用端口標(biāo)識信息區(qū)分不同輸入端口的數(shù)據(jù)包的數(shù) 據(jù)切片、流分類操作信息和流分類操作結(jié)果。
10.如權(quán)利要求7所述的方法,其特征在于,所述流分類操作結(jié)果包括報(bào)文修改信息和報(bào)文描述符信息;所述提取相關(guān)信息包括提 取所述數(shù)據(jù)包的報(bào)文描述符信息;所述方法還包括,將所述數(shù)據(jù)包的報(bào)文修改信息存儲在所述數(shù)據(jù)包對應(yīng)的存儲空間。
11.如權(quán)利要求10所述的方法,其特征在于,所述方法還包括在接收數(shù)據(jù)包的過程中,保存所述數(shù)據(jù)包前N字節(jié)數(shù)據(jù),從所述數(shù)據(jù) 包的N個(gè)字節(jié)之后開始進(jìn)行切片,所述N為所述預(yù)設(shè)大小與所述報(bào)文修改信息差值;將所述 數(shù)據(jù)包的數(shù)據(jù)切片進(jìn)行存儲時(shí),保留所述數(shù)據(jù)包對應(yīng)的存儲空間的首個(gè)存儲塊;在得到所述數(shù)據(jù)包的流分類操作結(jié)果后,將所述前N字節(jié)數(shù)據(jù)與所述數(shù)據(jù)包的報(bào)文修 改信息組成包首切片存儲在所述數(shù)據(jù)包對應(yīng)的存儲空間的首個(gè)存儲塊。
12.如權(quán)利要求7至11任一所述的方法,其特征在于,所述方法還包括,在接收完一個(gè)數(shù)據(jù)包后,等待并接收所述數(shù)據(jù)包的流分類操作結(jié)果 過程中,進(jìn)行下一數(shù)據(jù)包的接收、切片以及數(shù)據(jù)切片存儲操作。
全文摘要
本發(fā)明提供一種數(shù)據(jù)包接收處理方法,包括接收數(shù)據(jù)包,在接收數(shù)據(jù)包的過程中,提取流分類操作信息,按預(yù)設(shè)大小對數(shù)據(jù)包進(jìn)行切片得到數(shù)據(jù)切片,每接收到一個(gè)數(shù)據(jù)切片則存儲到該數(shù)據(jù)包對應(yīng)的存儲空間;當(dāng)所述數(shù)據(jù)包接收完畢后,根據(jù)所述流分類操作信息對所述數(shù)據(jù)包進(jìn)行流分類操作,得到流分類操作結(jié)果后,提取相關(guān)信息發(fā)起后續(xù)操作。本發(fā)明還提供一種數(shù)據(jù)包接收處理裝置。采用本發(fā)明所述的方法,能夠顯著減少長包的處理的時(shí)間,降低系統(tǒng)的延時(shí)。
文檔編號H04L12/56GK102104548SQ201110050489
公開日2011年6月22日 申請日期2011年3月2日 優(yōu)先權(quán)日2011年3月2日
發(fā)明者冉毅 申請人:中興通訊股份有限公司