專利名稱:多播報(bào)文復(fù)制方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊領(lǐng)域,特別是涉及一種多播報(bào)文復(fù)制方法及裝置。
背景技術(shù):
在數(shù)據(jù)通信領(lǐng)域,隨著網(wǎng) 絡(luò)協(xié)定電視(Internet Protocol Television,簡稱為IPTV)、視頻會(huì)議、網(wǎng)絡(luò)電臺(tái)的興起,越來越多的廠商和業(yè)務(wù)開始支持多播(組播)報(bào)文的應(yīng)用。多播是實(shí)現(xiàn)網(wǎng)絡(luò)中單點(diǎn)到多點(diǎn)的數(shù)據(jù)傳輸方式,能夠節(jié)約網(wǎng)絡(luò)帶寬,降低網(wǎng)絡(luò)負(fù)載,提高網(wǎng)絡(luò)的傳輸效率。在現(xiàn)有的路由器和交換機(jī)的交換系統(tǒng)中,多播報(bào)文的復(fù)制由上行側(cè)和下行側(cè)來共同完成。上行側(cè)是實(shí)現(xiàn)不同線卡間的復(fù)制,由交換網(wǎng)實(shí)現(xiàn),復(fù)制的數(shù)量有限;而下行側(cè)是在實(shí)現(xiàn)線卡內(nèi)進(jìn)行復(fù)制,需要進(jìn)行大數(shù)據(jù)量的復(fù)制。在下行側(cè)線卡中進(jìn)行多播復(fù)制的時(shí)候,若采用傳統(tǒng)的方式,將報(bào)文復(fù)制完成后直接在輸出端口中進(jìn)行排隊(duì),會(huì)耗費(fèi)大量的存儲(chǔ)資源,不利于進(jìn)行大數(shù)據(jù)量的復(fù)制。同時(shí)其結(jié)構(gòu)也不利于端口數(shù)的擴(kuò)展,端口間的復(fù)制也會(huì)互相干擾。
發(fā)明內(nèi)容
本發(fā)明提供一種多播報(bào)文復(fù)制方法及裝置,以解決現(xiàn)有技術(shù)中在下行側(cè)線卡中進(jìn)行多播復(fù)制時(shí),會(huì)耗費(fèi)大量的存儲(chǔ)資源的問題。本發(fā)明提供一種多播報(bào)文復(fù)制方法,包括步驟1,將接收到的報(bào)文存儲(chǔ)到報(bào)文緩存模塊中,端口間復(fù)制模塊獲取報(bào)文的緩存地址、報(bào)文的端口間復(fù)制信息、以及報(bào)文的端口內(nèi)復(fù)制信息,根據(jù)端口間復(fù)制信息對緩存地址進(jìn)行復(fù)制,并將復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息發(fā)送到端口隊(duì)列模塊進(jìn)行保存;步驟2,端口調(diào)度模塊對端口隊(duì)列模塊的緩存地址進(jìn)行調(diào)度,端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址;步驟3,報(bào)文緩存模塊根據(jù)端口隊(duì)列模塊輸出的緩存地址讀取相應(yīng)的報(bào)文并輸出。優(yōu)選地,端口間復(fù)制模塊獲取報(bào)文的緩存地址、報(bào)文的端口間復(fù)制信息、以及報(bào)文的端口內(nèi)復(fù)制信息具體包括端口間復(fù)制模塊從報(bào)文緩存模塊中獲取報(bào)文的緩存地址以及報(bào)文的多播標(biāo)識ID ;根據(jù)多播ID從預(yù)先設(shè)置的多播復(fù)制表中獲取端口間復(fù)制信息和端口內(nèi)復(fù)制信息,其中,多播復(fù)制表中包含各多播ID對應(yīng)的端口間復(fù)制信息和端口內(nèi)復(fù)制信息,端口間復(fù)制信息包括各個(gè)緩存地址需要復(fù)制到的端口 ;端口內(nèi)復(fù)制信息包括每個(gè)端口內(nèi)根據(jù)每個(gè)緩存地址需要復(fù)制報(bào)文的份數(shù)。優(yōu)選地,端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址具體包括步驟21,端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,輸出當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址,并更新端口隊(duì)列模塊中相應(yīng)的端口內(nèi)復(fù)制信息;步驟22,端口隊(duì)列模塊根據(jù)端口內(nèi)復(fù)制信息判斷與該緩存地址對應(yīng)的端口內(nèi)需要復(fù)制的報(bào)文是否復(fù)制完成,如果否,則繼續(xù)對當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,直到當(dāng)前需要復(fù)制的報(bào)文復(fù)制完成;如果是,則轉(zhuǎn)步驟23 ;步驟23,端口隊(duì)列模塊如果判斷當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成,執(zhí)行步驟21-23,直到所有端口的報(bào)文都復(fù)制完成。優(yōu)選地,端口隊(duì)列模塊中設(shè)置有與各個(gè)端口相對應(yīng)的相互獨(dú)立的端口隊(duì)列,端口隊(duì)列模塊采用鏈表結(jié)構(gòu)保存相應(yīng)端口隊(duì)列接收到的緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),端口隊(duì)列模塊包括隊(duì)列首、隊(duì)列體、以及隊(duì)列尾,其中,隊(duì)列首存儲(chǔ)各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),隊(duì)首指針用于存儲(chǔ)下個(gè)緩存地 址在本端口隊(duì)列中的地址,隊(duì)列體存儲(chǔ)了除當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)之外,各個(gè)端口隊(duì)列接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),隊(duì)列尾中保存了各個(gè)端口隊(duì)列的隊(duì)尾指針,隊(duì)尾指針指示了各個(gè)端口隊(duì)列中將接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到相應(yīng)隊(duì)列體的寫入地址。優(yōu)選地,將復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息發(fā)送到端口隊(duì)列模塊進(jìn)行保存具體包括端口隊(duì)列模塊首先將各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到隊(duì)列首,將各個(gè)端口隊(duì)列的隊(duì)尾指針寫入隊(duì)列尾,并根據(jù)隊(duì)尾指針指示的寫入地址將各個(gè)端口隊(duì)列的接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到隊(duì)列體中。優(yōu)選地,端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,輸出當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址,并更新端口隊(duì)列模塊中相應(yīng)的端口內(nèi)復(fù)制信息具體包括端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,從隊(duì)列首中讀取端口隊(duì)列中存儲(chǔ)的當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,該緩存地址每出隊(duì)一次,更新該緩存地址需要復(fù)制報(bào)文的份數(shù),在根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)確定當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成的情況下,根據(jù)端口隊(duì)列的隊(duì)首指針從隊(duì)列體中讀取下一個(gè)緩存地址以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),并寫入隊(duì)列首的端口隊(duì)列中。優(yōu)選地,上述方法還包括緩存地址回收模塊通過端口間復(fù)制模塊獲取各緩存地址對應(yīng)的報(bào)文總復(fù)制份數(shù),緩存地址每出隊(duì)一次,更新已復(fù)制完的報(bào)文份數(shù);緩存地址回收模塊將報(bào)文總復(fù)制份數(shù)與已復(fù)制完的報(bào)文份數(shù)進(jìn)行對比,如果相等,則對已復(fù)制完的報(bào)文所對應(yīng)的緩存地址進(jìn)行回收,通知報(bào)文緩存模塊已回收的緩存地址,并將已復(fù)制完的報(bào)文份數(shù)清O。本發(fā)明還提供了一種多播報(bào)文復(fù)制裝置,包括報(bào)文緩存模塊,用于存儲(chǔ)接收到的報(bào)文,根據(jù)端口隊(duì)列模塊輸出的緩存地址讀取相應(yīng)的報(bào)文并輸出;端口間復(fù)制模塊,用于獲取報(bào)文的緩存地址、報(bào)文的端口間復(fù)制信息、以及報(bào)文的端口內(nèi)復(fù)制信息,并根據(jù)端口間復(fù)制信息對緩存地址進(jìn)行復(fù)制,并將復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息發(fā)送到端口隊(duì)列模塊;端口隊(duì)列模塊,用于保存接收到的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息,并在端口調(diào)度模塊的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址;端口調(diào)度模塊,用于對端口隊(duì)列模塊的緩存地址進(jìn)行調(diào)度。優(yōu)選地,端口間復(fù)制模塊具體用于從報(bào)文緩存模塊中獲取報(bào)文的緩存地址以及報(bào)文的多播標(biāo)識ID ;根據(jù)多播ID從預(yù)先設(shè)置的多播復(fù)制表中獲取端口間復(fù)制信息和端口內(nèi)復(fù)制信息,其中,多播復(fù)制表中包含各多播ID對應(yīng)的端口間復(fù)制信息和端口內(nèi)復(fù)制信息,端口間復(fù)制信息包括各個(gè)緩存地址需要復(fù)制到的端口 ;端口內(nèi)復(fù)制信息包括每個(gè)端口內(nèi)根據(jù)每個(gè)緩存地址需要復(fù)制報(bào)文的份數(shù)。優(yōu)選地,端口隊(duì)列模塊具體用于輸出子模塊,用于在端口調(diào)度模塊的調(diào)度下,輸出當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址,并更新端口隊(duì)列模塊中相應(yīng)的端口內(nèi)復(fù)制信息;判斷子模塊,用于根據(jù)復(fù)制信息判斷與該緩存地址對應(yīng)的端口需要復(fù)制的報(bào)文是否復(fù)制完成,如果否,則繼續(xù)調(diào)用所述輸出子模塊對 當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,直到當(dāng)前需要復(fù)制的報(bào)文復(fù)制完成;如果判斷是,則調(diào)用輸出子模塊和判斷子模塊,直到所有端口的報(bào)文都復(fù)制完成。優(yōu)選地,端口隊(duì)列模塊中設(shè)置有與各個(gè)端口相對應(yīng)的相互獨(dú)立的端口隊(duì)列,端口隊(duì)列模塊采用鏈表結(jié)構(gòu)保存相應(yīng)端口隊(duì)列接收到的緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),端口隊(duì)列模塊包括隊(duì)列首、隊(duì)列體、以及隊(duì)列尾,其中,隊(duì)列首存儲(chǔ)各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),隊(duì)首指針用于存儲(chǔ)下個(gè)緩存地址在本端口隊(duì)列中的地址,隊(duì)列體存儲(chǔ)了除當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)之外,各個(gè)端口隊(duì)列接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),隊(duì)列尾中保存了各個(gè)端口隊(duì)列的隊(duì)尾指針,隊(duì)尾指針指示了各個(gè)端口隊(duì)列中將接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到相應(yīng)隊(duì)列體的寫入地址。優(yōu)選地,端口隊(duì)列模塊具體包括保存子模塊,用于首先將各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到隊(duì)列首,將各個(gè)端口隊(duì)列的隊(duì)尾指針寫入隊(duì)列尾,并根據(jù)隊(duì)尾指針指示的寫入地址將各個(gè)端口隊(duì)列的接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到隊(duì)列體中。優(yōu)選地,輸出子模塊具體用于在端口調(diào)度模塊的調(diào)度下,從隊(duì)列首中讀取端口隊(duì)列中存儲(chǔ)的當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,該緩存地址每出隊(duì)一次,更新該緩存地址需要復(fù)制報(bào)文的份數(shù),在根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)確定當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成的情況下,根據(jù)端口隊(duì)列的隊(duì)首指針從隊(duì)列體中讀取下一個(gè)緩存地址以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),并寫入隊(duì)列首的端口隊(duì)列中。優(yōu)選地,上述裝置還包括緩存地址回收模塊,用于通過端口間復(fù)制模塊獲取各緩存地址對應(yīng)的報(bào)文總復(fù)制份數(shù),緩存地址每出隊(duì)一次,更新已復(fù)制完的報(bào)文份數(shù);將報(bào)文總復(fù)制份數(shù)與已復(fù)制完的報(bào)文份數(shù)進(jìn)行對比,如果相等,則對已復(fù)制完的報(bào)文所對應(yīng)的緩存地址進(jìn)行回收,通知報(bào)文緩存模塊已回收的緩存地址,并將已復(fù)制完的報(bào)文份數(shù)清O。本發(fā)明有益效果如下通過采用兩級復(fù)制的方式,第一級先進(jìn)行端口間的復(fù)制,第二級再進(jìn)行端口內(nèi)的復(fù)制,解決了現(xiàn)有技術(shù)中在下行側(cè)線卡中進(jìn)行多播復(fù)制時(shí),會(huì)耗費(fèi)大量的存儲(chǔ)資源的問題,能夠?qū)崿F(xiàn)多播報(bào)文的大數(shù)據(jù)量的復(fù)制,方便地實(shí)現(xiàn)端口數(shù)的擴(kuò)展和復(fù)制份數(shù)的增減。
圖I是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置的結(jié)構(gòu)示意圖2是本發(fā)明實(shí)施例的多播復(fù)制表的結(jié)構(gòu)示意圖;圖3是本發(fā)明實(shí)施例的端口隊(duì)列模塊的結(jié)構(gòu)示意圖;圖4是本發(fā)明實(shí)施例的緩存地址回收模塊內(nèi)部結(jié)構(gòu)示意圖;圖5是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置的詳細(xì)結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置詳細(xì)處理的流程圖;圖7是本發(fā)明實(shí)施例的緩存地址回收的流程圖; 圖8是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制方法的流程圖。
具體實(shí)施例方式為了解決現(xiàn)有技術(shù)中在下行側(cè)線卡中進(jìn)行多播復(fù)制時(shí),會(huì)耗費(fèi)大量的存儲(chǔ)資源的問題,本發(fā)明提供了一種多播報(bào)文復(fù)制方法及裝置,以下結(jié)合附圖以及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。裝置實(shí)施例根據(jù)本發(fā)明的實(shí)施例,提供了一種多播報(bào)文復(fù)制裝置,圖I是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置的結(jié)構(gòu)示意圖,如圖I所示,根據(jù)本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置包括報(bào)文緩存模塊10、端口間復(fù)制模塊12、端口隊(duì)列模塊14、以及端口調(diào)度模塊16,以下對本發(fā)明實(shí)施例的各個(gè)模塊進(jìn)行詳細(xì)的說明。報(bào)文緩存模塊10,用于存儲(chǔ)接收到的報(bào)文,并根據(jù)端口隊(duì)列模塊14輸出的緩存地址讀取報(bào)文輸出;具體地,在實(shí)際應(yīng)用中,報(bào)文緩存模塊10內(nèi)部包含大容量的RAM (random accessmemory,隨機(jī)存儲(chǔ)器)。在報(bào)文輸入時(shí)用于存儲(chǔ)輸入報(bào)文的實(shí)體;在報(bào)文輸出時(shí)根據(jù)緩存地址來讀取RAM進(jìn)行報(bào)文的輸出。端口間復(fù)制模塊12,用于獲取報(bào)文的緩存地址、報(bào)文的端口間復(fù)制信息、以及報(bào)文的端口內(nèi)復(fù)制信息,并根據(jù)端口間復(fù)制信息對緩存地址進(jìn)行復(fù)制(即,端口間復(fù)制),并將復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息發(fā)送到端口隊(duì)列模塊14 ;上述端口間復(fù)制是完成報(bào)文的第一級復(fù)制,即對輸入的報(bào)文進(jìn)行端口間的復(fù)制,并將報(bào)文對應(yīng)的緩存地址輸出給端口隊(duì)列。端口間復(fù)制模塊12具體用于從報(bào)文緩存模塊10中獲取報(bào)文的緩存地址以及報(bào)文的多播ID (IDentity,身份標(biāo)識號碼);根據(jù)多播ID從預(yù)先設(shè)置的多播復(fù)制表中獲取端口間復(fù)制信息和端口內(nèi)復(fù)制信息,其中,多播復(fù)制表中包含各多播ID對應(yīng)的端口間復(fù)制信息和端口內(nèi)復(fù)制信息,端口間復(fù)制信息包括各個(gè)緩存地址需要復(fù)制到的端口 ;端口內(nèi)復(fù)制信息包括每個(gè)端口內(nèi)根據(jù)每個(gè)緩存地址需要復(fù)制報(bào)文的份數(shù)。圖2是本發(fā)明實(shí)施例的多播復(fù)制表的結(jié)構(gòu)示意圖,如圖2所示,多播復(fù)制表由多個(gè)表項(xiàng)組成,每個(gè)表項(xiàng)對應(yīng)于一個(gè)多播ID(MG_ID)。在每個(gè)MG_ID表項(xiàng)內(nèi)部,根據(jù)端口數(shù)分為若干份,每一份表示一個(gè)端口內(nèi)對應(yīng)的復(fù)制份數(shù)。若復(fù)制份數(shù)為0,則代表該端口不需要復(fù)制。端口間復(fù)制模塊12可根據(jù)MG_ID來查詢到需要將報(bào)文的緩存地址復(fù)制到哪些端口,每個(gè)端口內(nèi)需要復(fù)制多少份。若將所有端口的復(fù)制份數(shù)(MG_ID)相加,可得到總復(fù)制份數(shù)。端口隊(duì)列模塊14,用于保存接收到的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息,并在端口調(diào)度模塊16的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址;端口隊(duì)列模塊14需要進(jìn)行報(bào)文的第二級復(fù)制,對端口間復(fù)制完成的緩存地址再進(jìn)行一次端口內(nèi)的報(bào)文復(fù)制。端口隊(duì)列模塊14內(nèi)部根據(jù)端口來進(jìn)行排隊(duì),各端口隊(duì)列互相獨(dú)立。 優(yōu)選地,端口隊(duì)列模塊14具體包括輸出子模塊,用于在端 口調(diào)度模塊16的調(diào)度下,輸出當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址,并更新端口隊(duì)列模塊14中相應(yīng)的端口內(nèi)復(fù)制信息;判斷子模塊,用于對與該緩存地址相應(yīng)的端口內(nèi)復(fù)制信息進(jìn)行判斷,如果當(dāng)前需要復(fù)制的報(bào)文未復(fù)制完成,則繼續(xù)調(diào)用輸出子模塊對當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,直到當(dāng)前需要復(fù)制的報(bào)文復(fù)制完成;如果判斷當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成,則調(diào)用輸出子模塊和判斷子模塊進(jìn)行下一個(gè)端口的端口內(nèi)復(fù)制,直到所有端口的報(bào)文都復(fù)制完成。具體地,端口隊(duì)列模塊14中設(shè)置有與各個(gè)端口相對應(yīng)的相互獨(dú)立的端口隊(duì)列,端口隊(duì)列模塊14采用鏈表結(jié)構(gòu)保存相應(yīng)端口隊(duì)列接收到的緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),端口隊(duì)列模塊14包括隊(duì)列首、隊(duì)列體、以及隊(duì)列尾,其中,隊(duì)列首存儲(chǔ)各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),隊(duì)首指針用于存儲(chǔ)下個(gè)緩存地址在本端口隊(duì)列中的地址。隊(duì)列體存儲(chǔ)了除當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)之夕卜,各個(gè)端口隊(duì)列接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)。隊(duì)列尾中保存了各個(gè)端口隊(duì)列的隊(duì)尾指針,隊(duì)尾指針指示了各個(gè)端口隊(duì)列中將接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到相應(yīng)隊(duì)列體的寫入地址。優(yōu)選地,基于上述描述,端口隊(duì)列模塊14還包括保存子模塊,用于首先將各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到隊(duì)列首,將各個(gè)端口隊(duì)列的隊(duì)尾指針寫入隊(duì)列尾,并根據(jù)隊(duì)尾指針指示的寫入地址將各個(gè)端口隊(duì)列的接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到隊(duì)列體中。上述輸出子模塊具體用于在端口調(diào)度模塊16的調(diào)度下,從隊(duì)列首中讀取端口隊(duì)列中存儲(chǔ)的當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,該緩存地址每出隊(duì)一次,更新該緩存地址需要復(fù)制報(bào)文的份數(shù),在根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)確定當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成的情況下,根據(jù)端口隊(duì)列的隊(duì)首指針從隊(duì)列體中讀取下一個(gè)緩存地址以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),并寫入隊(duì)列首的端口隊(duì)列中。圖3是本發(fā)明實(shí)施例的端口隊(duì)列模塊14的結(jié)構(gòu)示意圖,如圖3所示,端口隊(duì)列模塊14采用鏈表結(jié)構(gòu)來存儲(chǔ)各端口隊(duì)列,相比FIFO結(jié)構(gòu)要節(jié)省存儲(chǔ)資源。端口隊(duì)列模塊14整體結(jié)構(gòu)上由隊(duì)列尾、隊(duì)列體和隊(duì)列首三部分組成。其中隊(duì)列首存儲(chǔ)各端口隊(duì)列的隊(duì)首指針、報(bào)文對應(yīng)的緩存地址和報(bào)文復(fù)制份數(shù)。指針用來存儲(chǔ)該隊(duì)列中下個(gè)數(shù)據(jù)在端口隊(duì)列的地址,用于將隊(duì)列中的數(shù)據(jù)鏈接在一起;緩存地址為報(bào)文數(shù)據(jù)在報(bào)文緩存模塊10中的地址;復(fù)制份數(shù)為該報(bào)文在端口內(nèi)需要復(fù)制的總份數(shù)。隊(duì)列體存儲(chǔ)的內(nèi)容和隊(duì)列首類似,而隊(duì)列尾僅存儲(chǔ)了指針。
在隊(duì)列入隊(duì)的時(shí)候,先寫隊(duì)列首;當(dāng)隊(duì)列首寫完之后,再通過隊(duì)列尾中的指針來實(shí)現(xiàn)隊(duì)列體中的寫入。在隊(duì)列出隊(duì)的時(shí)候,都是從隊(duì)列首中讀取緩存地址進(jìn)行輸出。每出隊(duì)一次,復(fù)制份數(shù)減1,直到減為0,代表報(bào)文在該端口內(nèi)復(fù)制完成。只有當(dāng)復(fù)制份數(shù)減到O之后,才從隊(duì)列體中讀取下一個(gè)數(shù)據(jù)并回寫到隊(duì)列首中,完成隊(duì)列的更新操作。在復(fù)制完成之前,一直都采用隊(duì)列首中的當(dāng)前報(bào)文進(jìn)行輸出,實(shí)現(xiàn)報(bào)文的端口內(nèi)復(fù)制。端口調(diào)度模塊16,用于對端口隊(duì)列模塊14的緩存地址進(jìn)行調(diào)度。具體地,端口調(diào)度模塊16完成端口隊(duì)列的調(diào)度,從各端口隊(duì)列中選出一個(gè)報(bào)文進(jìn)行調(diào)度輸出。 優(yōu)選地,在本發(fā)明實(shí)施例中,為了能夠使緩存地址進(jìn)行快速的回收,上述裝置還包括緩存地址回收模塊,用于通過端口間復(fù)制模塊12獲取各緩存地址對應(yīng)的報(bào)文總復(fù)制份 數(shù),緩存地址每出隊(duì)一次,更新已復(fù)制完的報(bào)文份數(shù);將報(bào)文總復(fù)制份數(shù)與已復(fù)制完的報(bào)文份數(shù)進(jìn)行對比,如果相等,則對已復(fù)制完的報(bào)文所對應(yīng)的緩存地址進(jìn)行回收,通知報(bào)文緩存模塊10已回收的緩存地址,并將已復(fù)制完的報(bào)文份數(shù)清O。如上所述,緩存地址回收模塊內(nèi)部存儲(chǔ)了各緩存地址對應(yīng)的總復(fù)制份數(shù)和已出隊(duì)復(fù)制份數(shù),根據(jù)報(bào)文的復(fù)制完成情況來釋放緩存地址,實(shí)現(xiàn)地址回收。圖4是本發(fā)明實(shí)施例的緩存地址回收模塊內(nèi)部結(jié)構(gòu)示意圖,如圖4所示,在緩存地址回收模塊中,存儲(chǔ)份數(shù)的RAM有兩塊總份數(shù)RAM和已出隊(duì)份數(shù)RAM。這兩個(gè)RAM的地址深度和報(bào)文緩存模塊10對應(yīng)的地址深度一樣??偡輸?shù)RAM存儲(chǔ)該緩存地址對應(yīng)的總復(fù)制份數(shù)信息,通過端口間復(fù)制模塊12獲得。當(dāng)端口間復(fù)制模塊12查詢多播復(fù)制表時(shí),將該報(bào)文MG ID對應(yīng)的各個(gè)端口的復(fù)制份數(shù)相加,得到端口間+端口內(nèi)的總復(fù)制份數(shù)。已出隊(duì)份數(shù)RAM存儲(chǔ)該緩存地址對應(yīng)的已出隊(duì)復(fù)制份數(shù)信息,其初始值為O。在總份數(shù)復(fù)制未完成之前,當(dāng)端口調(diào)度模塊16輸出了一個(gè)緩存地址,則在已出隊(duì)份數(shù)RAM中相應(yīng)緩存地址對應(yīng)的已出隊(duì)份數(shù)就加I ;只有總份數(shù)復(fù)制完成之后,則數(shù)值清O。份數(shù)比較用來比對總份數(shù)RAM和已出隊(duì)份數(shù)的RAM,只有二者相等才代表端口間+端口內(nèi)的復(fù)制都已結(jié)束。以下結(jié)合附圖,對本發(fā)明實(shí)施例的上述技術(shù)方案進(jìn)行詳細(xì)說明。圖5是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置的詳細(xì)結(jié)構(gòu)示意圖,如圖5所示,根據(jù)本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置包括多播復(fù)制表101、端口間復(fù)制模塊102、報(bào)文緩存模塊103、端口隊(duì)列模塊104、端口調(diào)度模塊105、緩存地址回收模塊106。圖6是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置詳細(xì)處理的流程圖,如圖6所示,基于如圖5所示的多播報(bào)文復(fù)制裝置包括如下處理步驟601,多播報(bào)文復(fù)制裝置接收輸入的報(bào)文。報(bào)文實(shí)體存儲(chǔ)到報(bào)文緩存模塊103中,報(bào)文的MG_ID傳輸給端口間復(fù)制模塊102。步驟602,端口間復(fù)制模塊102從報(bào)文緩存模塊103中獲取報(bào)文實(shí)體對應(yīng)的緩存的地址。步驟603,端口間復(fù)制模塊102根據(jù)MG_ID來查詢多播復(fù)制表101,獲取該報(bào)文的端口間和端口內(nèi)的復(fù)制信息。步驟604,端口間復(fù)制模塊102將報(bào)文對應(yīng)的緩存地址進(jìn)行端口間的復(fù)制,并將復(fù)制好的數(shù)據(jù)和第二級復(fù)制所需的復(fù)制份數(shù)依照端口編號的順序依次傳遞給端口隊(duì)列模塊104。步驟605,端口隊(duì)列模塊104將接收到的緩存地址按照先后順序進(jìn)行排隊(duì),并存儲(chǔ)好每個(gè)報(bào)文在端口內(nèi)復(fù)制的份數(shù)。步驟606,由端口調(diào)度模塊105在端口間進(jìn)行調(diào)度輸出。步驟607,報(bào)文緩存模塊103通過端口調(diào)度模塊105送出的緩存地址來讀取報(bào)文實(shí)體,并進(jìn)行輸出。步驟608,對端口隊(duì)列模塊104內(nèi)的 報(bào)文剩余復(fù)制份數(shù)進(jìn)行判斷,若剩余復(fù)制份數(shù)大于1,則重復(fù)執(zhí)行步驟606和607,繼續(xù)對當(dāng)前報(bào)文進(jìn)行調(diào)度輸出;直到剩余復(fù)制份數(shù)為O,代表復(fù)制完成,執(zhí)彳了步驟609。步驟609,待端口隊(duì)列模塊104內(nèi)各端口的報(bào)文都復(fù)制完,則整個(gè)復(fù)制結(jié)束。圖7是本發(fā)明實(shí)施例的緩存地址回收的流程圖,如圖7所示,結(jié)合圖5,具體包括如下處理步驟701,通過端口間復(fù)制模塊102獲取總份數(shù)信息,將總份數(shù)寫入總份數(shù)RAM中。步驟702,在端口調(diào)度模塊105進(jìn)行報(bào)文出隊(duì)后,從總復(fù)制份數(shù)RAM和已出隊(duì)復(fù)制份數(shù)RAM中讀取當(dāng)前緩存地址對應(yīng)的份數(shù)信息。步驟703,將讀出的已出隊(duì)復(fù)制份數(shù)加I。步驟704,將累加后的出隊(duì)復(fù)制份數(shù)和總復(fù)制份數(shù)進(jìn)行比較,若二者相等,則代表可以對該緩存地址進(jìn)行回收,執(zhí)行步驟706 ;若已出隊(duì)復(fù)制份數(shù)小于總復(fù)制份數(shù),則代表回收還未完成,執(zhí)行步驟705。步驟705,在回收未完成階段,將累加后的出隊(duì)份數(shù)回寫到已出隊(duì)份數(shù)RAM中去。后續(xù)重復(fù)執(zhí)行步驟702和703,繼續(xù)進(jìn)行調(diào)度出隊(duì)和份數(shù)累加。步驟706,在回收完成之后,輸出回收指示給報(bào)文緩存模塊103,同時(shí)將已出隊(duì)份數(shù)RAM中的份數(shù)值清O。步驟707,整個(gè)緩存地址回收過程結(jié)束。綜上所述,本發(fā)明實(shí)施例采用兩級復(fù)制的方式,能夠?qū)崿F(xiàn)多播報(bào)文的大數(shù)據(jù)量的復(fù)制。本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置的復(fù)制結(jié)構(gòu)清晰,第一級先進(jìn)行端口間的復(fù)制,第二級再進(jìn)行端口內(nèi)的復(fù)制,能夠方便地實(shí)現(xiàn)端口數(shù)的擴(kuò)展和復(fù)制份數(shù)的增減。此外,在端口隊(duì)列的管理上,采用鏈表方式來實(shí)現(xiàn),節(jié)省了存儲(chǔ)資源。同時(shí)每個(gè)端口上采用同一報(bào)文多次出隊(duì)的方式來實(shí)現(xiàn)復(fù)制,進(jìn)一步簡化了隊(duì)列資源的使用。在緩存資源的回收上,采用2個(gè)RAM來分別存儲(chǔ)總復(fù)制份數(shù)和已出隊(duì)復(fù)制份數(shù),有效地解決了緩存地址的回收問題。方法實(shí)施例基于上述方法實(shí)施例中的多播報(bào)文復(fù)制裝置,根據(jù)本發(fā)明的實(shí)施例,提供了一種多播報(bào)文復(fù)制方法,圖8是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制方法的流程圖,如圖8所示,根據(jù)本發(fā)明實(shí)施例的多播報(bào)文復(fù)制方法包括如下處理步驟801,將接收到的報(bào)文存儲(chǔ)到報(bào)文緩存模塊中,端口間復(fù)制模塊獲取報(bào)文的緩存地址、報(bào)文的端口間復(fù)制信息、以及報(bào)文的端口內(nèi)復(fù)制信息,根據(jù)端口間復(fù)制信息對緩存地址進(jìn)行復(fù)制(即,端口間復(fù)制),并將復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息發(fā)送到端口隊(duì)列模塊進(jìn)行保存;
上述端口間復(fù)制是完成報(bào)文的第一級復(fù)制,即對輸入的報(bào)文進(jìn)行端口間的復(fù)制,并將報(bào)文對應(yīng)的緩存地址輸出給端口隊(duì)列。具體地,在步驟801中,端口間復(fù)制模塊獲取報(bào)文的緩存地址、報(bào)文的端口間復(fù)制信息、以及報(bào)文的端口內(nèi)復(fù)制信息具體包括1、端口間復(fù)制模塊從報(bào)文緩存模塊中獲取報(bào)文的緩存地址以及報(bào)文的多播標(biāo)識ID ;2、根據(jù)多播ID從預(yù)先設(shè)置的多播復(fù)制表中獲取端口間復(fù)制信息和端口內(nèi)復(fù)制信息,其中,多播復(fù)制表中包含各多播ID對應(yīng)的端口間復(fù)制信息和端口內(nèi)復(fù)制信息,端口間復(fù)制信息包括各個(gè)緩存地址需要復(fù)制到的端口 ;端口內(nèi)復(fù)制信息包括每個(gè)端口內(nèi)根據(jù)每個(gè)緩存地址需要復(fù)制報(bào)文的份數(shù)。圖2是本發(fā)明實(shí)施例的多播復(fù)制表的結(jié)構(gòu)示意圖,如圖2所示,多播復(fù)制表由多個(gè)表項(xiàng)組成,每個(gè)表項(xiàng)對應(yīng)于一個(gè)多播ID(MG_ID)。在每個(gè)MG_ID表項(xiàng)內(nèi)部,根據(jù)端口數(shù)分為若干份,每一份表示一個(gè)端口內(nèi)對應(yīng)的復(fù)制份數(shù)。若復(fù)制份數(shù)為0,則代表該端口不需要復(fù) 制。端口間復(fù)制模塊12可根據(jù)MG_ID來查詢到需要將報(bào)文的緩存地址復(fù)制到哪些端口,每個(gè)端口內(nèi)需要復(fù)制多少份。若將所有端口的復(fù)制份數(shù)(MG_ID)的所有值相加,可得到總復(fù)制份數(shù)。步驟802,端口調(diào)度模塊對端口隊(duì)列模塊的緩存地址進(jìn)行調(diào)度,端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址;端口隊(duì)列模塊需要進(jìn)行報(bào)文的第二級復(fù)制,對端口間復(fù)制完成的緩存地址再進(jìn)行一次端口內(nèi)的報(bào)文復(fù)制。端口隊(duì)列模塊內(nèi)部根據(jù)端口來進(jìn)行排隊(duì),各端口隊(duì)列互相獨(dú)立。在步驟802中,端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址具體包括步驟8021,端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,輸出當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址,并更新端口隊(duì)列模塊中相應(yīng)的端口內(nèi)復(fù)制信息;步驟8022,端口隊(duì)列模塊對與該緩存地址相應(yīng)的端口內(nèi)復(fù)制信息進(jìn)行判斷,如果當(dāng)前需要復(fù)制的報(bào)文未復(fù)制完成,則繼續(xù)對當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,直到當(dāng)前需要復(fù)制的報(bào)文復(fù)制完成;步驟8023,端口隊(duì)列模塊如果判斷當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成,執(zhí)行步驟8021-8023,進(jìn)行下一個(gè)端口的端口內(nèi)復(fù)制,直到所有端口的報(bào)文都復(fù)制完成。具體地,端口隊(duì)列模塊中設(shè)置有與各個(gè)端口相對應(yīng)的相互獨(dú)立的端口隊(duì)列,端口隊(duì)列模塊采用鏈表結(jié)構(gòu)保存相應(yīng)端口隊(duì)列接收到的緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),端口隊(duì)列模塊包括隊(duì)列首、隊(duì)列體、以及隊(duì)列尾,其中,隊(duì)列首存儲(chǔ)各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),隊(duì)首指針用于存儲(chǔ)下個(gè)緩存地址在本端口隊(duì)列中的地址,隊(duì)列體存儲(chǔ)了除當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)之外,各個(gè)端口隊(duì)列接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),隊(duì)列尾中保存了各個(gè)端口隊(duì)列的隊(duì)尾指針,隊(duì)尾指針指示了各個(gè)端口隊(duì)列中將接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到相應(yīng)隊(duì)列體的寫入地址。因此,端口隊(duì)列模塊在存儲(chǔ)復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息時(shí),端口隊(duì)列模塊首先將各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到隊(duì)列首,將各個(gè)端口隊(duì)列的隊(duì)尾指針寫入隊(duì)列尾,并根據(jù)隊(duì)尾指針指示的寫入地址將各個(gè)端口隊(duì)列的接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到隊(duì)列體中。端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,輸出當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址,并更新端口隊(duì)列模塊中相應(yīng)的端口內(nèi)復(fù)制信息具體包括端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,從隊(duì)列首中讀取端口隊(duì)列中存儲(chǔ)的當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,該緩存地址每出隊(duì)一次,更新該緩存地址需要復(fù)制報(bào)文的份數(shù),在根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)確定當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成的情況下,根據(jù)端口隊(duì)列的隊(duì)首指針從隊(duì)列體中讀取下一個(gè)緩存地址以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),并寫入隊(duì)列首的端口隊(duì)列中。圖3是本發(fā)明實(shí)施例的端口隊(duì)列模塊的 結(jié)構(gòu)示意圖,如圖3所示,端口隊(duì)列模塊14采用鏈表結(jié)構(gòu)來存儲(chǔ)各端口隊(duì)列,相比FIFO結(jié)構(gòu)要節(jié)省存儲(chǔ)資源。端口隊(duì)列模塊14整體結(jié)構(gòu)上由隊(duì)列尾、隊(duì)列體和隊(duì)列首三部分組成。其中隊(duì)列首存儲(chǔ)各端口隊(duì)列的隊(duì)首指針、報(bào)文對應(yīng)的緩存地址和報(bào)文復(fù)制份數(shù)。指針用來存儲(chǔ)該隊(duì)列中下個(gè)數(shù)據(jù)在端口隊(duì)列的地址,用于將隊(duì)列中的數(shù)據(jù)鏈接在一起;緩存地址為報(bào)文數(shù)據(jù)在報(bào)文緩存模塊10中的地址;復(fù)制份數(shù)為該報(bào)文在端口內(nèi)需要復(fù)制的總份數(shù)。隊(duì)列體存儲(chǔ)的內(nèi)容和隊(duì)列首類似,而隊(duì)列尾僅存儲(chǔ)了指針。在隊(duì)列入隊(duì)的時(shí)候,先寫隊(duì)列首;當(dāng)隊(duì)列首寫完之后,再通過隊(duì)列尾中的指針來實(shí)現(xiàn)隊(duì)列體中的寫入。在隊(duì)列出隊(duì)的時(shí)候,都是從隊(duì)列首中讀取緩存地址進(jìn)行輸出。每出隊(duì)一次,復(fù)制份數(shù)減1,直到減為0,代表報(bào)文在該端口內(nèi)復(fù)制完成。只有當(dāng)復(fù)制份數(shù)減到O之后,才從隊(duì)列體中讀取下一個(gè)數(shù)據(jù)并回寫到隊(duì)列首中,完成隊(duì)列的更新操作。在復(fù)制完成之前,一直都采用隊(duì)列首中的當(dāng)前報(bào)文進(jìn)行輸出,實(shí)現(xiàn)報(bào)文的端口內(nèi)復(fù)制。步驟803,報(bào)文緩存模塊根據(jù)端口隊(duì)列模塊輸出的緩存地址讀取相應(yīng)的報(bào)文并輸出。具體地,端口調(diào)度模塊完成端口隊(duì)列的調(diào)度,從各端口隊(duì)列中選出一個(gè)報(bào)文進(jìn)行調(diào)度輸出。優(yōu)選地,根據(jù)本發(fā)明實(shí)施例的多播報(bào)文復(fù)制方法還包括緩存地址回收模塊通過端口間復(fù)制模塊獲取各緩存地址對應(yīng)的報(bào)文總復(fù)制份數(shù),緩存地址每出隊(duì)一次,更新已復(fù)制完的報(bào)文份數(shù);緩存地址回收模塊將報(bào)文總復(fù)制份數(shù)與已復(fù)制完的報(bào)文份數(shù)進(jìn)行對比,如果相等,則對已復(fù)制完的報(bào)文所對應(yīng)的緩存地址進(jìn)行回收,通知報(bào)文緩存模塊已回收的緩存地址,并將已復(fù)制完的報(bào)文份數(shù)清O。如上所述,緩存地址回收模塊內(nèi)部存儲(chǔ)了各緩存地址對應(yīng)的總復(fù)制份數(shù)和已出隊(duì)復(fù)制份數(shù),根據(jù)報(bào)文的復(fù)制完成情況來釋放緩存地址,實(shí)現(xiàn)地址回收。圖4是本發(fā)明實(shí)施例的緩存地址回收模塊內(nèi)部結(jié)構(gòu)示意圖,如圖4所示,在緩存地址回收模塊中,存儲(chǔ)份數(shù)的RAM有兩塊總份數(shù)RAM和已出隊(duì)份數(shù)RAM。這兩個(gè)RAM的地址深度和報(bào)文緩存模塊10對應(yīng)的地址深度一樣??偡輸?shù)RAM存儲(chǔ)該緩存地址對應(yīng)的總復(fù)制份數(shù)信息,通過端口間復(fù)制模塊12獲得。當(dāng)端口間復(fù)制模塊12查詢多播復(fù)制表時(shí),將該報(bào)文MG_ID對應(yīng)的各個(gè)端口的復(fù)制份數(shù)相加,得到端口間+端口內(nèi)的總復(fù)制份數(shù)。
已出隊(duì)份數(shù)RAM存儲(chǔ)該緩存地址對應(yīng)的已出隊(duì)復(fù)制份數(shù)信息,其初始值為O。在總份數(shù)復(fù)制未完成之前,當(dāng)端口調(diào)度模塊16輸出了一個(gè)緩存地址,則在已出隊(duì)份數(shù)RAM中相應(yīng)緩存地址對應(yīng)的已出隊(duì)份數(shù)就加I ;只有總份數(shù)復(fù)制完成之后,則數(shù)值清O。份數(shù)比較用來比對總份數(shù)RAM和已出隊(duì)份數(shù)的RAM,只有二者相等才代表端口間+端口內(nèi)的復(fù)制都已結(jié)束。以下結(jié)合附圖,對本發(fā)明實(shí)施例的上述技術(shù)方案進(jìn)行詳細(xì)說明。圖5是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置的詳細(xì)結(jié)構(gòu)示意圖,如圖5所示,根據(jù)本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置包括多播復(fù)制表101、端口間復(fù)制102、報(bào)文緩存模塊
103、端口隊(duì)列模塊104、端口調(diào)度模塊105、緩存地址回收模塊106。 圖6是本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置詳細(xì)處理的流程圖,如圖6所示,基于如圖5所示的多播報(bào)文復(fù)制裝置包括如下處理步驟601,多播報(bào)文復(fù)制裝置接收輸入的報(bào)文。報(bào)文實(shí)體存儲(chǔ)到報(bào)文緩存模塊103中,報(bào)文的MG_ID傳輸給端口間復(fù)制模塊102。步驟602,端口間復(fù)制模塊102從報(bào)文緩存模塊103中獲取報(bào)文實(shí)體對應(yīng)的緩存的地址。步驟603,端口間復(fù)制模塊102根據(jù)MG_ID來查詢多播復(fù)制表101,獲取該報(bào)文的端口間和端口內(nèi)的復(fù)制信息。步驟604,端口間復(fù)制模塊102將報(bào)文對應(yīng)的緩存地址進(jìn)行端口間的復(fù)制,并將復(fù)制好的數(shù)據(jù)和第二級復(fù)制所需的復(fù)制份數(shù)依照端口編號的順序依次傳遞給端口隊(duì)列模塊
104。步驟605,端口隊(duì)列模塊104將接收到的緩存地址按照先后順序進(jìn)行排隊(duì),并存儲(chǔ)好每個(gè)報(bào)文在端口內(nèi)復(fù)制的份數(shù)。步驟606,由端口調(diào)度模塊105在端口間進(jìn)行調(diào)度輸出。步驟607,報(bào)文緩存模塊103通過端口調(diào)度模塊105送出的緩存地址來讀取報(bào)文實(shí)體,并進(jìn)行輸出。步驟608,對端口隊(duì)列模塊104內(nèi)的報(bào)文剩余復(fù)制份數(shù)進(jìn)行判斷,若剩余復(fù)制份數(shù)大于1,則重復(fù)執(zhí)行步驟606和607,繼續(xù)對當(dāng)前報(bào)文進(jìn)行調(diào)度輸出;直到剩余復(fù)制份數(shù)為O,代表復(fù)制完成,執(zhí)彳了步驟609。步驟609,待端口隊(duì)列模塊104內(nèi)各端口的報(bào)文都復(fù)制完,則整個(gè)復(fù)制結(jié)束。圖7是本發(fā)明實(shí)施例的緩存地址回收的流程圖,如圖7所示,結(jié)合圖5,具體包括如下處理步驟701,通過端口間復(fù)制模塊102獲取總份數(shù)信息,將總份數(shù)寫入總份數(shù)RAM中。步驟702,在端口調(diào)度模塊105進(jìn)行報(bào)文出隊(duì)后,從總復(fù)制份數(shù)RAM和已出隊(duì)復(fù)制份數(shù)RAM中讀取當(dāng)前緩存地址對應(yīng)的份數(shù)信息。步驟703,將讀出的已出隊(duì)復(fù)制份數(shù)加I。步驟704,將累加后的出隊(duì)復(fù)制份數(shù)和總復(fù)制份數(shù)進(jìn)行比較,若二者相等,則代表可以對該緩存地址進(jìn)行回收,執(zhí)行步驟706 ;若已出隊(duì)復(fù)制份數(shù)小于總復(fù)制份數(shù),則代表回收還未完成,執(zhí)行步驟705。步驟705,在回收未完成階段,將累加后的出隊(duì)份數(shù)回寫到已出隊(duì)份數(shù)RAM中去。后續(xù)重復(fù)執(zhí)行步驟702和703,繼續(xù)進(jìn)行調(diào)度出隊(duì)和份數(shù)累加。步驟706,在回收完成之后,輸出回收指示給報(bào)文緩存模塊103,同時(shí)將已出隊(duì)份數(shù)RAM中的份數(shù)值清O。步驟707,整個(gè)緩存地址回收過程結(jié)束。綜上所述,本發(fā)明實(shí)施例采用兩級復(fù)制的方式,能夠?qū)崿F(xiàn)多播報(bào)文的大數(shù)據(jù)量的復(fù)制。本發(fā)明實(shí)施例的多播報(bào)文復(fù)制裝置的復(fù)制結(jié)構(gòu)清晰,第一級先進(jìn)行端口間的復(fù)制,第二級再進(jìn)行端口內(nèi)的復(fù)制,能夠方便地實(shí)現(xiàn)端口數(shù)的擴(kuò)展和復(fù)制份數(shù)的增減。此外,在端口隊(duì)列的管理上,采用鏈表方式來實(shí)現(xiàn),節(jié)省了存儲(chǔ)資 源。同時(shí)每個(gè)端口上采用同一報(bào)文多次出隊(duì)的方式來實(shí)現(xiàn)復(fù)制,進(jìn)一步簡化了隊(duì)列資源的使用。在緩存資源的回收上,采用2個(gè)RAM來分別存儲(chǔ)總復(fù)制份數(shù)和已出隊(duì)復(fù)制份數(shù),有效地解決了緩存地址的回收問題。盡管為示例目的,已經(jīng)公開了本發(fā)明的優(yōu)選實(shí)施例,本領(lǐng)域的技術(shù)人員將意識到各種改進(jìn)、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當(dāng)不限于上述實(shí)施例。應(yīng)當(dāng)注意的是,在本發(fā)明的控制器的各個(gè)部件中,根據(jù)其要實(shí)現(xiàn)的功能而對其中的部件進(jìn)行了邏輯劃分,但是,本發(fā)明不受限于此,可以根據(jù)需要對各個(gè)部件進(jìn)行重新劃分或者組合,例如,可以將一些部件組合為單個(gè)部件,或者可以將一些部件進(jìn)一步分解為更多的子部件。本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP )來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的控制器中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
權(quán)利要求
1.一種多播報(bào)文復(fù)制方法,其特征在于,包括 步驟I,將接收到的報(bào)文存儲(chǔ)到報(bào)文緩存模塊中,所述端口間復(fù)制模塊獲取所述報(bào)文的緩存地址、所述報(bào)文的端口間復(fù)制信息、以及所述報(bào)文的端口內(nèi)復(fù)制信息,根據(jù)所述端口間復(fù)制信息對所述緩存地址進(jìn)行復(fù)制,并將復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息發(fā)送到端口隊(duì)列模塊進(jìn)行保存; 步驟2,端口調(diào)度模塊對所述端口隊(duì)列模塊的緩存地址進(jìn)行調(diào)度,所述端口隊(duì)列模塊在所述端口調(diào)度模塊的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址; 步驟3,所述報(bào)文緩存模塊根據(jù)所述端口隊(duì)列模塊輸出的所述緩存地址讀取相應(yīng)的報(bào)文并輸出。
2.如權(quán)利要求I所述的方法,其特征在于,所述端口間復(fù)制模塊獲取所述報(bào)文的緩存地址、所述報(bào)文的端口間復(fù)制信息、以及所述報(bào)文的端口內(nèi)復(fù)制信息具體包括 所述端口間復(fù)制模塊從所述報(bào)文緩存模塊中獲取所述報(bào)文的緩存地址以及所述報(bào)文的多播標(biāo)識ID ; 根據(jù)所述多播標(biāo)識ID從預(yù)先設(shè)置的多播復(fù)制表中獲取所述端口間復(fù)制信息和所述端口內(nèi)復(fù)制信息,其中,所述多播復(fù)制表中包含各多播ID對應(yīng)的端口間復(fù)制信息和端口內(nèi)復(fù)制信息,所述端口間復(fù)制信息包括各個(gè)緩存地址需要復(fù)制到的端口 ;所述端口內(nèi)復(fù)制信息包括每個(gè)端口內(nèi)根據(jù)每個(gè)緩存地址需要復(fù)制報(bào)文的份數(shù)。
3.如權(quán)利要求I或2所述的方法,其特征在于,所述端口隊(duì)列模塊在所述端口調(diào)度模塊的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址具體包括 步驟21,所述端口隊(duì)列模塊在所述端口調(diào)度模塊的調(diào)度下,輸出當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址,并更新所述端口隊(duì)列模塊中相應(yīng)的端口內(nèi)復(fù)制信息; 步驟22,所述端口隊(duì)列模塊根據(jù)端口內(nèi)復(fù)制信息判斷與該緩存地址對應(yīng)的端口內(nèi)需要復(fù)制的報(bào)文是否復(fù)制完成,如果否,則繼續(xù)對當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,直到當(dāng)前需要復(fù)制的報(bào)文復(fù)制完成;如果是,則轉(zhuǎn)步驟23 ; 步驟23,所述端口隊(duì)列模塊如果判斷當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成,執(zhí)行步驟21-23,直到所有端口的報(bào)文都復(fù)制完成。
4.如權(quán)利要求3所述的方法,其特征在于,所述端口隊(duì)列模塊中設(shè)置有與各個(gè)端口相對應(yīng)的相互獨(dú)立的端口隊(duì)列,所述端口隊(duì)列模塊采用鏈表結(jié)構(gòu)保存相應(yīng)端口隊(duì)列接收到的緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),所述端口隊(duì)列模塊包括隊(duì)列首、隊(duì)列體、以及隊(duì)列尾;其中,所述隊(duì)列首存儲(chǔ)各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),所述隊(duì)首指針用于存儲(chǔ)下個(gè)緩存地址在本端口隊(duì)列中的地址;所述隊(duì)列體存儲(chǔ)了除當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)之外,各個(gè)端口隊(duì)列接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù);所述隊(duì)列尾中保存了各個(gè)端口隊(duì)列的隊(duì)尾指針,所述隊(duì)尾指針指示了各個(gè)端口隊(duì)列中將所述接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到相應(yīng)隊(duì)列體的寫入地址。
5.如權(quán)利要求4所述的方法,其特征在于,將復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息發(fā)送到端口隊(duì)列模塊進(jìn)行保存具體包括 所述端口隊(duì)列模塊首先將各個(gè)端口隊(duì)列的所述隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到所述隊(duì)列首,將各個(gè)端口隊(duì)列的隊(duì)尾指針寫入所述隊(duì)列尾,并根據(jù)所述隊(duì)尾指針指示的寫入地址將各個(gè)端口隊(duì)列的所述接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到所述隊(duì)列體中。
6.如權(quán)利要求5所述的方法,其特征在于,所述端口隊(duì)列模塊在所述端口調(diào)度模塊的調(diào)度下,輸出當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址,并更新所述端口隊(duì)列模塊中相應(yīng)的端口內(nèi)復(fù)制信息具體包括 所述端口隊(duì)列模塊在所述端口調(diào)度模塊的調(diào)度下,從隊(duì)列首中讀取端口隊(duì)列中存儲(chǔ)的當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,該緩存地址每出隊(duì)一次,更新該緩存地址需要復(fù)制報(bào)文的份數(shù),在根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)確定當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成的情況下,根據(jù)所述端口隊(duì)列的隊(duì)首指針從所述隊(duì)列體中讀取下一個(gè)緩存地址以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),并寫入所述隊(duì)列首的所述端口隊(duì)列中。
7.如權(quán)利要求I或2所述的方法,其特征在于,所述方法還包括 緩存地址回收模塊通過端口間復(fù)制模塊獲取各緩存地址對應(yīng)的報(bào)文總復(fù)制份數(shù),緩存地址每出隊(duì)一次,更新已復(fù)制完的報(bào)文份數(shù); 所述緩存地址回收模塊將所述報(bào)文總復(fù)制份數(shù)與所述已復(fù)制完的報(bào)文份數(shù)進(jìn)行對比,如果相等,則對已復(fù)制完的報(bào)文所對應(yīng)的緩存地址進(jìn)行回收,通知所述報(bào)文緩存模塊已回收的緩存地址,并將已復(fù)制完的報(bào)文份數(shù)清O。
8.一種多播報(bào)文復(fù)制裝置,其特征在于,包括 報(bào)文緩存模塊,用于存儲(chǔ)接收到的報(bào)文,根據(jù)端口隊(duì)列模塊輸出的緩存地址讀取相應(yīng)的報(bào)文并輸出; 所述端口間復(fù)制模塊,用于獲取所述報(bào)文的緩存地址、所述報(bào)文的端口間復(fù)制信息、以及所述報(bào)文的端口內(nèi)復(fù)制信息,并根據(jù)所述端口間復(fù)制信息對所述緩存地址進(jìn)行復(fù)制,并將復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息發(fā)送到端口隊(duì)列模塊; 所述端口隊(duì)列模塊,用于保存接收到的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息,并在端口調(diào)度模塊的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址; 所述端口調(diào)度模塊,用于對所述端口隊(duì)列模塊的緩存地址進(jìn)行調(diào)度。
9.如權(quán)利要求8所述的裝置,其特征在于,所述端口間復(fù)制模塊具體用于從所述報(bào)文緩存模塊中獲取所述報(bào)文的緩存地址以及所述報(bào)文的多播標(biāo)識ID ;根據(jù)所述多播ID從預(yù)先設(shè)置的多播復(fù)制表中獲取所述端口間復(fù)制信息和所述端口內(nèi)復(fù)制信息,其中,所述多播復(fù)制表中包含各多播ID對應(yīng)的端口間復(fù)制信息和端口內(nèi)復(fù)制信息,所述端口間復(fù)制信息包括各個(gè)緩存地址需要復(fù)制到的端口 ;所述端口內(nèi)復(fù)制信息包括每個(gè)端口內(nèi)根據(jù)每個(gè)緩存地址需要復(fù)制報(bào)文的份數(shù)。
10.如權(quán)利要求8或9所述的裝置,其特征在于,所述端口隊(duì)列模塊具體包括 輸出子模塊,用于在所述端口調(diào)度模塊的調(diào)度下,輸出當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址,并更新所述端口隊(duì)列模塊中相應(yīng)的端口內(nèi)復(fù)制信息; 判斷子模塊,用于根據(jù)復(fù)制信息判斷與該緩存地址對應(yīng)的端口需要復(fù)制的報(bào)文是否復(fù)制完成,如果否,則繼續(xù)調(diào)用所述輸出子模塊對當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,直到當(dāng)前需要復(fù)制的報(bào)文復(fù)制完成;如果判斷是,則調(diào)用所述輸出子模塊和所述判斷子模塊,直到所有端口的報(bào)文都復(fù)制完成。
11.如權(quán)利要求10所述的裝置,其特征在于,所述端口隊(duì)列模塊中設(shè)置有與各個(gè)端口相對應(yīng)的相互獨(dú)立的端口隊(duì)列,所述端口隊(duì)列模塊采用鏈表結(jié)構(gòu)保存相應(yīng)端口隊(duì)列接收到的緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),所述端口隊(duì)列模塊包括隊(duì)列首、隊(duì)列體、以及隊(duì)列尾;其中,所述隊(duì)列首存儲(chǔ)各個(gè)端口隊(duì)列的隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),所述隊(duì)首指針用于存儲(chǔ)下個(gè)緩存地址在本端口隊(duì)列中的地址;所述隊(duì)列體存儲(chǔ)了除當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)之外,各個(gè)端口隊(duì)列接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù);所述隊(duì)列尾中保存了各個(gè)端口隊(duì)列的隊(duì)尾指針,所述隊(duì)尾指針指示了各個(gè)端口隊(duì)列中將所述接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到相應(yīng)隊(duì)列體的寫入地址。
12.如權(quán)利要求11所述的裝置,其特征在于,所述端口隊(duì)列模塊具體包括 保存子模塊,用于首先將各個(gè)端口隊(duì)列的所述隊(duì)首指針、當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址、以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到所述隊(duì)列首,將各個(gè)端口隊(duì)列的隊(duì)尾指針寫入所述隊(duì)列尾,并根據(jù)所述隊(duì)尾指針指示的寫入地址將各個(gè)端口隊(duì)列的所述接收到的其他緩存地址和根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)寫入到所述隊(duì)列體中。
13.如權(quán)利要求12所述的裝置,其特征在于,所述輸出子模塊具體用于 在所述端口調(diào)度模塊的調(diào)度下,從隊(duì)列首中讀取端口隊(duì)列中存儲(chǔ)的當(dāng)前需要復(fù)制的報(bào)文所對應(yīng)的緩存地址進(jìn)行輸出,該緩存地址每出隊(duì)一次,更新該緩存地址需要復(fù)制報(bào)文的份數(shù),在根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù)確定當(dāng)前需要復(fù)制的報(bào)文已復(fù)制完成的情況下,根據(jù)所述端口隊(duì)列的隊(duì)首指針從所述隊(duì)列體中讀取下一個(gè)緩存地址以及根據(jù)該緩存地址需要復(fù)制報(bào)文的份數(shù),并寫入所述隊(duì)列首的所述端口隊(duì)列中。
14.如權(quán)利要求8或9所述的裝置,其特征在于,所述裝置還包括 緩存地址回收模塊,用于通過端口間復(fù)制模塊獲取各緩存地址對應(yīng)的報(bào)文總復(fù)制份數(shù),緩存地址每出隊(duì)一次,更新已復(fù)制完的報(bào)文份數(shù);將所述報(bào)文總復(fù)制份數(shù)與所述已復(fù)制完的報(bào)文份數(shù)進(jìn)行對比,如果相等,則對已復(fù)制完的報(bào)文所對應(yīng)的緩存地址進(jìn)行回收,通知所述報(bào)文緩存模塊已回收的緩存地址,并將已復(fù)制完的報(bào)文份數(shù)清O。
全文摘要
本發(fā)明公開了一種多播報(bào)文復(fù)制方法及裝置,該方法包括步驟1,將接收到的報(bào)文存儲(chǔ)到報(bào)文緩存模塊中,端口間復(fù)制模塊獲取報(bào)文的緩存地址、報(bào)文的端口間復(fù)制信息、以及報(bào)文的端口內(nèi)復(fù)制信息,根據(jù)端口間復(fù)制信息對緩存地址進(jìn)行復(fù)制,并將復(fù)制后的緩存地址和相應(yīng)的端口內(nèi)復(fù)制信息發(fā)送到端口隊(duì)列模塊進(jìn)行保存;步驟2,端口調(diào)度模塊對端口隊(duì)列模塊的緩存地址進(jìn)行調(diào)度,端口隊(duì)列模塊在端口調(diào)度模塊的調(diào)度下,根據(jù)存儲(chǔ)的相應(yīng)的端口內(nèi)復(fù)制信息輸出需要進(jìn)行報(bào)文復(fù)制的緩存地址;步驟3,報(bào)文緩存模塊根據(jù)端口隊(duì)列模塊輸出的緩存地址讀取相應(yīng)的報(bào)文并輸出。借助于本發(fā)明的技術(shù)方案,實(shí)現(xiàn)多播報(bào)文的大數(shù)據(jù)量的復(fù)制。
文檔編號H04L12/56GK102821045SQ201210274379
公開日2012年12月12日 申請日期2012年8月3日 優(yōu)先權(quán)日2012年8月3日
發(fā)明者歐陽帆, 陳昌勝, 劉建立, 吳邊, 劉衡祁, 吳風(fēng)波 申請人:中興通訊股份有限公司