一種報(bào)文復(fù)制方法和裝置制造方法
【專利摘要】本發(fā)明實(shí)施方式提出一種報(bào)文復(fù)制方法和裝置。方法包括:基于出接口的類型確定報(bào)文封裝格式,并在與所述出接口對應(yīng)的緩存中保存對應(yīng)于所述報(bào)文封裝格式的報(bào)文頭;獲取原始報(bào)文的載荷地址;基于所述原始報(bào)文的載荷地址以及所述緩存的地址,在所述出接口發(fā)送對應(yīng)于所述報(bào)文封裝格式的報(bào)文。本發(fā)明實(shí)施方式無需復(fù)制完整的載荷,而是利用復(fù)制報(bào)文的載荷相同的原理實(shí)現(xiàn)報(bào)文復(fù)制,可以顯著提高報(bào)文復(fù)制能力并節(jié)約系統(tǒng)資源。
【專利說明】種報(bào)文復(fù)制方法和裝置
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明實(shí)施方式屬于通信【技術(shù)領(lǐng)域】,特別是-種報(bào)文復(fù)制方法和裝置。
【背景技術(shù)】
[0002]帶大量虛擬接口和物理接口的網(wǎng)絡(luò)設(shè)備往往存在廣播、組播報(bào)文復(fù)制性能的問 題。例如,無線控制器支持?jǐn)?shù)量眾多的接入點(diǎn)(AP),每個(gè)AP又有大量虛擬BSS接口,因此無 線控制器內(nèi)部維護(hù)了數(shù)量龐大的虛擬BSS接口集合。舉例,支持2048個(gè)AP的無線控制器, 其內(nèi)部往往需要維護(hù)超過6萬個(gè)虛擬接口。在極端情況下,如果這些虛擬接口均在同一個(gè) 虛擬局域網(wǎng)(VLAN)內(nèi),那么一個(gè)廣播報(bào)文,在無線控制器內(nèi)部需要復(fù)制6萬多份,這就對無 線控制器的報(bào)文復(fù)制能力提出了很高的要求。如果設(shè)備的廣播復(fù)制能力比較弱,那么設(shè)備 就會(huì)消耗大量時(shí)間處理廣播報(bào)文,使得正常單播報(bào)文都得不到及時(shí)處理。
[0003]在現(xiàn)有技術(shù)中,網(wǎng)絡(luò)設(shè)備利用多核硬件多線程CPU遍歷所有待復(fù)制報(bào)文的接口, 逐接口復(fù)制報(bào)文載荷,再根據(jù)對應(yīng)接口類型封裝相應(yīng)報(bào)文頭后再發(fā)送報(bào)文,依次循環(huán)至到 所有接口遍歷完成。
[0004]然而,這種報(bào)文復(fù)制方式中,需要為每個(gè)接口分別復(fù)制整個(gè)報(bào)文載荷,因此報(bào)文復(fù) 制效率很低,而且還會(huì)占用大量資源。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實(shí)施方式提出一種報(bào)文復(fù)制方法和裝置,以提高報(bào)文復(fù)制效率。 [0006] 本發(fā)明實(shí)施方式的技術(shù)方案如下:
[0007]本發(fā)明實(shí)施方式一方面提出一種報(bào)文復(fù)制方法,該方法包括:
[000S] 基于出接口的類型確定報(bào)文封裝格式,并在與所述出接口對應(yīng)的緩存中保存對應(yīng) 于所述報(bào)文封裝格式的報(bào)文頭;
[0009] 獲取原始報(bào)文的載荷地址;
[0010]基于所述原始報(bào)文的載荷地址以及所述緩存的地址,在所述出接口發(fā)送對應(yīng)于所 述報(bào)文封裝格式的報(bào)文。
[0011] 優(yōu)選地,所述在出接口發(fā)送對應(yīng)于所述報(bào)文封裝格式的報(bào)文包括:在所述出接口 以單報(bào)文多地址方式發(fā)送對應(yīng)于所述報(bào)文封裝格式的報(bào)文;
[0012] 該方法還包括:
[0013]當(dāng)所述出接口發(fā)送報(bào)文完畢后,釋放所述與出接口對應(yīng)的緩存。
[0014] 優(yōu)選地,進(jìn)一步包括:
[0015] 基于出接口的數(shù)目確定報(bào)文復(fù)制份數(shù),并設(shè)置初始值為所述報(bào)文復(fù)制份數(shù)的引用 計(jì)數(shù)器;
[0016] 每個(gè)出接口在完成報(bào)文發(fā)送后分別將所述引用計(jì)數(shù)器減1 ;
[0017] 當(dāng)所述引用計(jì)數(shù)器為零時(shí),釋放所述原始報(bào)文的存儲(chǔ)空間。
[0018] 優(yōu)選地,所述獲取原始報(bào)文的載荷地址包括:
[0019] 基于接收所述原始報(bào)文的入接口的類型確定原始報(bào)文格式;
[0020] 根據(jù)所述原始報(bào)文格式確定原始報(bào)文的報(bào)文頭長度;
[0021] 將所述原始報(bào)文的報(bào)文頭起始位置向后偏移所述報(bào)文頭長度的位置,確定為所述 原始報(bào)文的載荷地址。
[0022] 優(yōu)選地,所述報(bào)文封裝格式包括:電氣和電子工程師協(xié)會(huì)(IEEE) 802. 3格式、控 制的無線接入點(diǎn)和配置協(xié)議(CAPWAP)格式、通用路由封裝(GRE)格式或第二層隧道協(xié)議 (L2TP)格式。
[0023] 本發(fā)明實(shí)施方式的另一方面提出一種報(bào)文復(fù)制裝置,包括:
[0024] 報(bào)文頭緩存模塊,用于基于出接口的類型確定報(bào)文封裝格式,并在與所述出接口 對應(yīng)的緩存中保存對應(yīng)于所述報(bào)文封裝格式的報(bào)文頭;
[0025] 載荷地址獲取模塊,用于獲取原始報(bào)文的載荷地址;
[0026] 報(bào)文發(fā)送模塊,用于基于所述原始報(bào)文的載荷地址以及所述緩存的地址,在所述 出接口發(fā)送對應(yīng)于所述報(bào)文封裝格式的報(bào)文。
[0027] 優(yōu)選地,報(bào)文發(fā)送模塊,用于在所述出接口以單報(bào)文多地址方式發(fā)送對應(yīng)于所述 報(bào)文封裝格式的報(bào)文;該裝置還包括:
[0028]緩存釋放模塊,用于當(dāng)所述出接口發(fā)送報(bào)文完畢后釋放所述與出接口對應(yīng)的緩 存。
[0029] 優(yōu)選地,進(jìn)一步包括:
[0030] 計(jì)數(shù)器設(shè)置模塊,用于基于出接口的數(shù)目確定報(bào)文復(fù)制份數(shù),并設(shè)置初始值為所 述報(bào)文復(fù)制份數(shù)的引用計(jì)數(shù)器,其中每個(gè)出接口在完成報(bào)文發(fā)送之后分別將所述引用計(jì)數(shù) 器減1 ;
[0031] 原始報(bào)文釋放模塊,用于當(dāng)所述引用計(jì)數(shù)器為零時(shí),釋放所述原始報(bào)文的存儲(chǔ)空 間。
[0032] 優(yōu)選地,載荷地址獲取模塊,用于基于接收所述原始報(bào)文的入接口的類型確定原 始報(bào)文格式;根據(jù)所述原始報(bào)文格式確定報(bào)文頭;將所述原始報(bào)文的報(bào)文頭起始位置向后 偏移所述報(bào)文頭長度的位置,確定為所述原始報(bào)文的載荷地址。
[0033] 優(yōu)選地,所述報(bào)文封裝格式包括:IEEE 802. 3格式、控制的無線接入點(diǎn)和配置協(xié) 議CAPWAP格式、通用路由封裝GRE格式或第二層隧道協(xié)議L2TP格式。
[0034] 在本發(fā)明的技術(shù)方案中,基于出接口的類型確定報(bào)文封裝格式,并在與出接口對 應(yīng)的緩存中保存對應(yīng)于報(bào)文封裝格式的報(bào)文頭;獲取原始報(bào)文的載荷地址;基于原始報(bào)文 的載荷地址以及緩存的地址,在出接口發(fā)送對應(yīng)于報(bào)文封裝格式的報(bào)文。由此可見,應(yīng)用本 發(fā)明實(shí)施方式之后,各個(gè)出接口復(fù)制報(bào)文時(shí)無需復(fù)制完整的報(bào)文載荷,而是利用復(fù)制報(bào)文 的載荷相同的原理,獲取原始報(bào)文的載荷地址并封裝必要的簡短報(bào)文頭以實(shí)現(xiàn)報(bào)文復(fù)制, 從而提高報(bào)文復(fù)制能力并節(jié)約系統(tǒng)資源。
[0035]而且,本發(fā)明實(shí)施方式通過對引用計(jì)數(shù)器進(jìn)行計(jì)數(shù),在所有出接口完成報(bào)文復(fù)制 之后,網(wǎng)絡(luò)設(shè)備可以正常釋放原始報(bào)文,從而可以進(jìn)一步節(jié)約系統(tǒng)資源。
【專利附圖】
【附圖說明】
[0036]圖1為根據(jù)本發(fā)明的報(bào)文復(fù)制方法的示范性流程圖;
[0037]圖2為根據(jù)本發(fā)明緩存與出接口的對應(yīng)關(guān)系示意圖;
[0038] 圖3為入接口為物理以太接口時(shí),獲取載荷地址的示意圖;
[0039] 圖4為入接口為虛擬BSS接口時(shí),獲取載荷地址的示意圖;
[0040]圖5為根據(jù)本發(fā)明的報(bào)文復(fù)制裝置的示范性結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0041]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步 的詳細(xì)描述。
[0042]在本發(fā)明實(shí)施方式中,各個(gè)出接口復(fù)制報(bào)文時(shí)無需復(fù)制完整的載荷,而是利用復(fù) 制報(bào)文的載荷相同的原理,獲取原始報(bào)文的載荷地址并封裝必要的簡短報(bào)文頭以實(shí)現(xiàn)報(bào)文 復(fù)制,從而提高報(bào)文復(fù)制能力并節(jié)約系統(tǒng)資源。
[0043] 圖1為根據(jù)本發(fā)明的報(bào)文復(fù)制方法的示范性流程圖。
[0044] 如圖1所示,該方法包括:
[0045] 步驟101 :基于出接口的類型確定報(bào)文封裝格式,并在與出接口對應(yīng)的緩存中保 存對應(yīng)于報(bào)文封裝格式的報(bào)文頭。
[0046] 網(wǎng)絡(luò)設(shè)備通常具有多個(gè)分別用于發(fā)送復(fù)制報(bào)文的出接口,每個(gè)出接口都具有相應(yīng) 的報(bào)文封裝格式,其中出接口既可以是虛擬接口,也可以是物理接口。
[0047] 比如:物理接口支持的報(bào)文封裝格式為IEEE 802. 3格式,這意味著物理接口可以 發(fā)送IEEE 8〇2· 3格式的報(bào)文;虛擬BSS接口支持的報(bào)文封裝格式為控制的無線接入點(diǎn)和配 置協(xié)議(CAPWAP)格式,這意味著虛擬BSS接口可以發(fā)送CAPWAP格式的報(bào)文;GRE接口支持 的報(bào)文封裝格式為GRE格式,這意味著虛擬GRE接口可以發(fā)送GRE格式的報(bào)文;L2TP接口 支持的報(bào)文封裝格式為L2TP格式,這意味著虛擬BSS接口可以發(fā)送L2TP格式的報(bào)文。 [0048] 分別為每個(gè)出接口設(shè)置用于保存對應(yīng)于出接口所支持報(bào)文封裝格式的報(bào)文頭的 緩存。
[0049] 圖2為根據(jù)本發(fā)明緩存與出接口的對應(yīng)關(guān)系示意圖。
[0050] 如圖2所示,網(wǎng)絡(luò)設(shè)備具有N個(gè)出接口,分別為每個(gè)出接口設(shè)置有緩存,在各個(gè)緩 存中分別保存相對應(yīng)出接口所支持的報(bào)文封裝格式的報(bào)文頭。
[0051] 比如,假定第一出接口為物理接口,則在與第一出接口相對應(yīng)的第一緩存中保存 第一出接口的IEEE 802. 3格式的報(bào)文頭;第二出接口為虛擬BSS接口,則在與第二出接口 相對應(yīng)的第二緩存中保存第二出接口的CAPWAP格式的報(bào)文頭。
[0052] 可以使用內(nèi)存緩存(memory cache)機(jī)制維護(hù)各個(gè)緩存,從而提高緩存的申請和釋 放性能。內(nèi)存緩存是linux內(nèi)核中普遍用到的技術(shù)。在第一次申請調(diào)用緩存時(shí),可以使用 系統(tǒng)提供的malloc函數(shù)調(diào)用緩存。在釋放緩存時(shí)不直接調(diào)用f ree函數(shù),而是將緩存放入 free鏈中。這樣,當(dāng)下次再申請緩存時(shí),可以直接從free鏈中調(diào)取緩存,從而無需再次調(diào)用 開銷很大的malloc函數(shù)。
[0053] 以上詳細(xì)描述了出接口和報(bào)文封裝格式的典型實(shí)例,而且還描述了緩存維護(hù)方 式。本領(lǐng)域技術(shù)人員可以意識(shí)到,這種描述僅是示范性的,并不對本發(fā)明的保護(hù)范圍構(gòu)成限 定。
[0054] 步驟102 :獲取原始報(bào)文的載荷地址。
[0055] 原始報(bào)文即為其載荷需要被各個(gè)出接口發(fā)送的待復(fù)制報(bào)文。網(wǎng)絡(luò)設(shè)備可以通過自 身的入接口接收待復(fù)制報(bào)文,并在網(wǎng)絡(luò)設(shè)備中存儲(chǔ)待復(fù)制報(bào)文。網(wǎng)絡(luò)設(shè)備還可以通過預(yù)定 的報(bào)文封裝協(xié)議自行生成待復(fù)制報(bào)文,同樣也在網(wǎng)絡(luò)設(shè)備中存儲(chǔ)待復(fù)制報(bào)文。 '
[0056] 待復(fù)制報(bào)文包括報(bào)文頭和載荷。當(dāng)通過網(wǎng)絡(luò)設(shè)備的入接口接收待復(fù)制報(bào)文時(shí),報(bào) 文頭與入接口的類型相對應(yīng)。當(dāng)網(wǎng)絡(luò)設(shè)備通過預(yù)定的報(bào)文封裝協(xié)議自行生成待復(fù)制報(bào)文 時(shí),報(bào)文頭與該預(yù)定的報(bào)文封裝協(xié)議相對應(yīng)。確定待復(fù)制報(bào)文的報(bào)文頭之后,可以確定出原 始報(bào)文的載荷在網(wǎng)絡(luò)設(shè)備中的存儲(chǔ)地址,即原始報(bào)文的載荷地址。
[0057] 在一個(gè)實(shí)施方式中,當(dāng)通過網(wǎng)絡(luò)設(shè)備的入接口接收待復(fù)制報(bào)文時(shí),首先基于接收 原始報(bào)文的入接口的類型確定原始報(bào)文格式;再根據(jù)原始報(bào)文格式確定該原始報(bào)文的報(bào)文 頭長度;將原始報(bào)文的報(bào)文頭起始位置向后偏移報(bào)文頭長度的位置,確定為原始報(bào)文的載 荷地址。
[0058]例如,如果接收原始報(bào)文的入接口為物理接口,那么原始報(bào)文格式即為IEEE 802. 3報(bào)文格式。根據(jù)IEEE 802· 3報(bào)文格式規(guī)范可知,報(bào)文頭長度為以太(ΕΤΗ)頭,此時(shí)原 始報(bào)文的載荷地址(為載荷的起始地址)為原始報(bào)文的報(bào)文頭起始地址向后偏移以太頭長 度。
[0059]圖3為入接口為物理以太接口時(shí),獲取載荷地址的示意圖。
[0060] 由圖3可見,當(dāng)入接口為物理以太接口時(shí),原始報(bào)文包括報(bào)文頭和載荷,其中報(bào)文 頭為以太頭。此時(shí)載荷的地址即為原始報(bào)文的報(bào)文頭向后偏移以太頭長度處。
[0061] 類似地,如果接收原始報(bào)文的入接口為虛擬BSS接口,那么原始報(bào)文格式即為 CAPWAP報(bào)文格式。根據(jù)CAPWAP報(bào)文格式規(guī)范可知,報(bào)文頭包括以太(ΕΤΗ)頭、IP頭、UDP 頭和CAPWAP頭,此時(shí)原始報(bào)文的載荷地址(同樣為載荷的起始地址)為原始報(bào)文的報(bào)文頭 向后偏移報(bào)文頭長度,即向后偏移以太頭、IP頭、UDP頭和CAPWAP頭的長度之和。
[0062] 圖4為入接口為虛擬BSS接口時(shí),獲取載荷地址的示意圖。
[0063] 由圖4可見,當(dāng)入接口為虛擬BSS接口時(shí),原始報(bào)文包括報(bào)文頭和載荷,其中報(bào)文 頭依次包括:以太頭、IP頭、UDP頭和CAPWAP頭。此時(shí)原始報(bào)文的載荷地址即為原始報(bào)文的 報(bào)文頭向后偏移報(bào)文頭長度處,即向后偏移以太頭、IP頭、UDP頭和CAPWAP頭的長度之和。 [0064]以上以入接口為物理接口或虛擬BSS接口為實(shí)例對獲取原始報(bào)文的載荷地址的 方式進(jìn)行了詳細(xì)說明。本領(lǐng)域技術(shù)人員可以意識(shí)到,這種描述是示范性的,并不用于對本發(fā) 明的保護(hù)范圍進(jìn)行限定。類似地,如果從其它類型的入接口接收原始報(bào)文,則需要偏移其對 應(yīng)接口的報(bào)文頭長度來確定原始報(bào)文的載荷地址。
[0065]在另一個(gè)實(shí)施方式中,當(dāng)網(wǎng)絡(luò)設(shè)備通過預(yù)定的報(bào)文封裝協(xié)議自行生成待復(fù)制報(bào)文 時(shí),首先基于報(bào)文封裝協(xié)議確定該原始報(bào)文的報(bào)文頭長度;再將原始報(bào)文的報(bào)文頭起始位 置向后偏移報(bào)文頭長度的位置,確定為原始報(bào)文的載荷地址。
[0066] 當(dāng)獲取了原始報(bào)文的載荷地址之后,各個(gè)出接口可以基于該載荷地址獲取相同的 載荷內(nèi)容,而不需要逐接口復(fù)制載荷。
[0067] 步驟103 :基于原始報(bào)文的載荷地址以及緩存的地址,在出接口發(fā)送對應(yīng)于所述 報(bào)文封裝格式的報(bào)文。
[0068] 各個(gè)出接口基于原始報(bào)文載荷地址以及各自緩存的地址,分別發(fā)送對應(yīng)于各自出 接口類型的報(bào)文。出接口可以通過單報(bào)文多地址方式發(fā)送對應(yīng)于報(bào)文封裝格式的報(bào)文。具 體地,出接口通過原始報(bào)文的載荷地址獲取原始報(bào)文的載荷,通過緩存地址獲取對應(yīng)于出 接口類型的報(bào)文頭,并通過單報(bào)文多地址方式將這兩塊內(nèi)存地址的內(nèi)容拼接在一起組成一 個(gè)完整報(bào)文發(fā)送。
[0069] 由此可見,應(yīng)用本發(fā)明之后,報(bào)文復(fù)制過程中不需要拷貝載荷,只涉及簡短的報(bào)文 頭的封裝。因此,相比傳統(tǒng)的整報(bào)文復(fù)制的方法,性能顯著提升。
[0070] 基于示范性測試運(yùn)行本發(fā)明,報(bào)文復(fù)制性能提升明顯,大約為現(xiàn)有技術(shù)的10倍以 上。而且,本發(fā)明的性能提升程度與報(bào)文載荷長度相關(guān),當(dāng)報(bào)文載荷長度越長時(shí),本發(fā)明的 報(bào)文復(fù)制性能提升越明顯。
[0071] 在一個(gè)實(shí)施方式中,各個(gè)出接口并行發(fā)送報(bào)文,而且當(dāng)每個(gè)出接口發(fā)送報(bào)文完畢 后,釋放與該出接口對應(yīng)的緩存。這樣,本發(fā)明可以及時(shí)釋放出接口所占用的緩存,從而節(jié) 約系統(tǒng)資源。
[0072] 在一個(gè)實(shí)施方式中,該方法進(jìn)一步包括:
[0073] 基于出接口的數(shù)目確定報(bào)文復(fù)制份數(shù),并設(shè)置初始值為報(bào)文復(fù)制份數(shù)的引用計(jì)數(shù) 器;每個(gè)出接口在完成報(bào)文發(fā)送后分別將引用計(jì)數(shù)器減1 ;當(dāng)引用計(jì)數(shù)器為零時(shí),釋放原始 報(bào)文的存儲(chǔ)空間。這樣,本發(fā)明可以及時(shí)釋放原始報(bào)文的存儲(chǔ)空間,從而節(jié)約系統(tǒng)資源。 [00 74] 舉例,目前需要復(fù)制報(bào)文的應(yīng)用場景,至少包括如下:
[0075] (1)、VLAN內(nèi)復(fù)制:包括廣播報(bào)文、沒有開啟IGMP或IGMP snooping等組播協(xié)議時(shí) 的組播報(bào)文以及未知單播報(bào)文。
[0076] (2)、組播復(fù)制:根據(jù)組播表項(xiàng)中的接口列表發(fā)送報(bào)文。
[0077]可以將本發(fā)明應(yīng)用到上述應(yīng)用場景中,由于本發(fā)明的報(bào)文復(fù)制過程中不存在載荷 拷貝,只涉及簡短的報(bào)文頭封裝。因此,相比傳統(tǒng)的報(bào)文復(fù)制的方法,性能顯著提升。
[0078] 下面以組播復(fù)制為例,對本發(fā)明的實(shí)施方式進(jìn)行說明。
[0079]第一步:根據(jù)VLAN表或組播表,預(yù)先計(jì)算報(bào)文復(fù)制份數(shù),其中報(bào)文復(fù)制份數(shù)通常 是該VLAN或組播表項(xiàng)的出接口數(shù)目。
[0080] 第二步:計(jì)算原始報(bào)文的載荷地址,并為此載荷地址設(shè)置引用計(jì)數(shù)器,該引用計(jì)數(shù) 器的初始值即為報(bào)文復(fù)制份數(shù);
[0081] 第三步:分別為每個(gè)出接口分配一塊緩存,根據(jù)出接口類型不同,在對應(yīng)的緩存 中封裝報(bào)文頭。例如,如果出接口為物理接口,則在對應(yīng)于該物理接口的緩存中封裝 IEEE 8〇2· 3報(bào)文頭;如果出接口為虛擬BSS接口,則在對應(yīng)于該虛擬BSS接口的緩存中封裝 CAPWAP報(bào)文頭,等等。
[0082]第四步:將原始報(bào)文的載荷地址和緩存地址發(fā)送給與緩存相對應(yīng)的出接口。出接 口的硬件可以通過單報(bào)文多地址方式發(fā)送由原始報(bào)文的載荷地址和緩存地址所組合的報(bào) 文,其中各個(gè)出接口并行發(fā)送報(bào)文。
[0083]第五步:每個(gè)出接口發(fā)送完成報(bào)文后,釋放對應(yīng)于出接口的緩存空間,并將報(bào)文載 荷的引用計(jì)數(shù)器減1。
[0084]第六步:當(dāng)報(bào)文載荷的引用計(jì)數(shù)器值為0時(shí),表示所有出接口的報(bào)文復(fù)制工作完 成,此時(shí)釋放原始報(bào)文存儲(chǔ)空間。
[0085]基于上述詳細(xì)分析,本發(fā)明還提出了一種報(bào)文復(fù)制裝置。
[0086]圖5為根據(jù)本發(fā)明的報(bào)文復(fù)制裝置的示范性結(jié)構(gòu)圖。
[0087]如圖5巧示,該裝置50。包括:
[0088]>報(bào)文頭緩存模塊5〇1,用于基于出接口的類型確定報(bào)文封裝格式,并在與出接口對 應(yīng)的緩存中保存對應(yīng)于報(bào)文封裝格式的報(bào)文頭; _9]載荷地址獲取模塊卿,用于獲取原始報(bào)文的載荷地址;
[0090]報(bào)文發(fā)送模塊503,用于基于原始報(bào)文的載荷地址以及緩存的地址,在出接口發(fā)送 對應(yīng)于所述報(bào)文封裝格式的報(bào)文。
[0091]在一個(gè)實(shí)施方式中,報(bào)文發(fā)送模塊503,用于在出接口以單報(bào)文多地址方式發(fā)送對 應(yīng)于報(bào)文封裝格式的報(bào)文;該裝置5〇〇還包括:
[0092]緩存釋放模塊504,用于當(dāng)出接口發(fā)送報(bào)文完畢后釋放與出接口對應(yīng)的緩存。 [0093]在一個(gè)實(shí)施方式中,該裝置500進(jìn)一步包括:
[0094]計(jì)數(shù)器設(shè)置模塊505,用于基于出接口的數(shù)目確定報(bào)文復(fù)制份數(shù),并設(shè)置初始值 為報(bào)文復(fù)制份數(shù)的引用計(jì)數(shù)器,其中每個(gè)出接口在完成報(bào)文發(fā)送之后分別將引用計(jì)數(shù)器減 1 ;
[0095]原始報(bào)文釋放模塊506,用于當(dāng)引用計(jì)數(shù)器為零時(shí),釋放原始報(bào)文的存儲(chǔ)空間。 [00%]在一個(gè)實(shí)施方式中,載荷地址獲取模塊502,用于基于接收原始報(bào)文的入接口的類 型確定原始報(bào)文格式;根據(jù)原始報(bào)文格式確定報(bào)文頭;將原始報(bào)文的報(bào)文頭起始位置向后 偏移報(bào)文頭長度的位置,確定為原始報(bào)文的載荷地址。
[0097]在一個(gè)實(shí)施方式中,報(bào)文封裝格式包括:IEEE 802. 3格式、控制的無線接入點(diǎn)和 配置協(xié)議CAPWAP格式、通用路由封裝GRE格式或第二層隧道協(xié)議L2TP格式,等等。
[0098] 可以將裝置500應(yīng)用到各種需要復(fù)制報(bào)文的網(wǎng)絡(luò)設(shè)備中,這些網(wǎng)絡(luò)設(shè)備包括并不 局限于:諸如個(gè)人電腦或網(wǎng)絡(luò)設(shè)備的計(jì)算機(jī)、集線器、交換機(jī)、網(wǎng)橋、路由器、網(wǎng)關(guān)、網(wǎng)絡(luò)接口 卡(NIC)、無線控制器,等等。
[0099]以上詳細(xì)羅列了本發(fā)明實(shí)施方式可適用的網(wǎng)絡(luò)設(shè)備,本領(lǐng)域技術(shù)人員可以意識(shí) 至IJ,這種羅列僅是示范性的,并不用于對本發(fā)明實(shí)施方式的保護(hù)范圍構(gòu)成限定。
[0100] 綜上所述,本發(fā)明實(shí)施方式基于出接口的類型確定報(bào)文封裝格式,并在與所述出 接口對應(yīng)的緩存中保存對應(yīng)于所述報(bào)文封裝格式的報(bào)文頭;獲取原始報(bào)文的載荷地址;基 于所述原始報(bào)文的載荷地址以及所述緩存的地址,在所述出接口發(fā)送對應(yīng)于所述報(bào)文封裝 格式的報(bào)文。由此可見,應(yīng)用本發(fā)明實(shí)施方式之后,各個(gè)出接口復(fù)制報(bào)文時(shí)無需復(fù)制完整的 載荷,而是利用復(fù)制報(bào)文的載荷相同的原理,通過獲取原始報(bào)文的載荷地址并封裝必要的 簡短報(bào)文頭,實(shí)現(xiàn)報(bào)文復(fù)制,從而提高報(bào)文復(fù)制能力并節(jié)約系統(tǒng)資源。
[0101] 而且,本發(fā)明實(shí)施方式通過引用計(jì)數(shù)器,使得原始報(bào)文在復(fù)制完成之后可以正常 釋放,從而可以進(jìn)一步節(jié)約系統(tǒng)資源。
[0102] 以上所述,僅為本發(fā)明的較佳實(shí)施方式而已,并非用于限定本發(fā)明的保護(hù)范圍。凡 在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保 護(hù)范圍之內(nèi)。
【權(quán)利要求】
1. 一種報(bào)文復(fù)制方法,其特征在于,該方法包括: 基于出接口的類型確定報(bào)文封裝格式,并在與所述出接口對應(yīng)的緩存中保存對應(yīng)于所 述報(bào)文封裝格式的報(bào)文頭; 獲取原始報(bào)文的載荷地址; 基于所述原始報(bào)文的載荷地址以及所述緩存的地址,在所述出接口發(fā)送對應(yīng)于所述報(bào) 文封裝格式的報(bào)文。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在出接口發(fā)送對應(yīng)于所述報(bào)文封裝 格式的報(bào)文包括:在所述出接口以單報(bào)文多地址方式發(fā)送對應(yīng)于所述報(bào)文封裝格式的報(bào) 文; 該方法還包括: 當(dāng)所述出接口發(fā)送報(bào)文完畢后,釋放所述與出接口對應(yīng)的緩存。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括: 基于出接口的數(shù)目確定報(bào)文復(fù)制份數(shù),并設(shè)置初始值為所述報(bào)文復(fù)制份數(shù)的引用計(jì)數(shù) 器; 每個(gè)出接口在完成報(bào)文發(fā)送后分別將所述引用計(jì)數(shù)器減1 ; 當(dāng)所述引用計(jì)數(shù)器為零時(shí),釋放所述原始報(bào)文的存儲(chǔ)空間。
4. 根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法,其特征在于,所述獲取原始報(bào)文的載荷地 址包括: 基于接收所述原始報(bào)文的入接口的類型確定原始報(bào)文格式; 根據(jù)所述原始報(bào)文格式確定原始報(bào)文的報(bào)文頭長度; 將所述原始報(bào)文的報(bào)文頭起始位置向后偏移所述報(bào)文頭長度的位置,確定為所述原始 報(bào)文的載荷地址。
5. 根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法,其特征在于,所述報(bào)文封裝格式包括:電氣 和電子工程師協(xié)會(huì)IEEE 802. 3格式、控制的無線接入點(diǎn)和配置協(xié)議CAPWAP格式、通用路由 封裝GRE格式或第二層隧道協(xié)議L2TP格式。
6. -種報(bào)文復(fù)制裝置,其特征在于,包括: 報(bào)文頭緩存模塊,用于基于出接口的類型確定報(bào)文封裝格式,并在與所述出接口對應(yīng) 的緩存中保存對應(yīng)于所述報(bào)文封裝格式的報(bào)文頭; 載荷地址獲取模塊,用于獲取原始報(bào)文的載荷地址; 報(bào)文發(fā)送模塊,用于基于所述原始報(bào)文的載荷地址以及所述緩存的地址,在所述出接 口發(fā)送對應(yīng)于所述報(bào)文封裝格式的報(bào)文。
7. 根據(jù)權(quán)利要求6所述的報(bào)文復(fù)制裝置,其特征在于, 報(bào)文發(fā)送模塊,用于在所述出接口以單報(bào)文多地址方式發(fā)送對應(yīng)于所述報(bào)文封裝格式 的報(bào)文;該裝置還包括: 緩存釋放模塊,用于當(dāng)所述出接口發(fā)送報(bào)文完畢后釋放所述與出接口對應(yīng)的緩存。
8. 根據(jù)權(quán)利要求6所述的報(bào)文復(fù)制裝置,其特征在于,還包括: 計(jì)數(shù)器設(shè)置模塊,用于基于出接口的數(shù)目確定報(bào)文復(fù)制份數(shù),并設(shè)置初始值為所述報(bào) 文復(fù)制份數(shù)的引用計(jì)數(shù)器,其中每個(gè)出接口在完成報(bào)文發(fā)送之后分別將所述引用計(jì)數(shù)器減 1 ; 原始報(bào)文釋放模塊,用于當(dāng)所述引用計(jì)數(shù)器為零時(shí),釋放所述原始報(bào)文的存儲(chǔ)空間。
9·根據(jù)權(quán)利要求6-8中任一項(xiàng)所述的報(bào)文復(fù)制裝置,其特征在于, 載荷地址獲取模塊,用于基于接收所述原始報(bào)文的入接口的類型確定原始報(bào)文格式; 根據(jù)所述原始報(bào)文格式確定報(bào)文頭;將所述原始報(bào)文的報(bào)文頭起始位置向后偏移所述報(bào)文 頭長度的位置,確定為所述原始報(bào)文的載荷地址。
10.根據(jù)權(quán)利要求6-8中任一項(xiàng)所述的報(bào)文復(fù)制裝置,其特征在于,所述報(bào)文封裝格式 包括:IEEE 802. 3格式、控制的無線接入點(diǎn)和配置協(xié)議CAPWAP格式、通用路由封裝GRE格 式或第二層隧道協(xié)議L2TP格式。
【文檔編號】H04L12/801GK104219158SQ201410445607
【公開日】2014年12月17日 申請日期:2014年9月3日 優(yōu)先權(quán)日:2014年9月3日
【發(fā)明者】郭瑋維, 劉雅彬 申請人:杭州華三通信技術(shù)有限公司