一種組播報(bào)文的轉(zhuǎn)發(fā)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域中的數(shù)據(jù)轉(zhuǎn)發(fā)技術(shù),尤其涉及一種組播報(bào)文的轉(zhuǎn)發(fā)方法及裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)、云計(jì)算、互聯(lián)網(wǎng)協(xié)議(IP, Internet Protocol)組播的快速發(fā)展,高清視頻,實(shí)況在線視頻等越來越多的組播新型應(yīng)用業(yè)務(wù)已經(jīng)逐漸滲透到各個(gè)領(lǐng)域中。而組播數(shù)據(jù)流的轉(zhuǎn)發(fā)依靠協(xié)議層面和轉(zhuǎn)發(fā)層面的共同作用才能完成,在基于組播數(shù)據(jù)流驅(qū)動(dòng)的組播協(xié)議網(wǎng)絡(luò)中,通常需要將組播報(bào)文上送至CPU進(jìn)行處理,但是在實(shí)際組網(wǎng)和測(cè)試過程中,往往會(huì)有批量用戶和組播數(shù)據(jù)流同時(shí)作用。在這種場(chǎng)景下,中央處理器(CPU,CentralProcessing Unit)處理組播報(bào)文的效率顯得至關(guān)重要,否則就會(huì)成為轉(zhuǎn)發(fā)組播報(bào)文的瓶頸。所以,怎樣提高CPU處理組播數(shù)據(jù)流的效率是非常有意義的。
[0003]在現(xiàn)有很多方法中,大部分都只是解決未知組播源攻擊CPU,來提高CPU處理組播報(bào)文效率的問題,并沒有考慮到所有可能存在的組播報(bào)文需要上送時(shí),對(duì)CPU造成沖擊的場(chǎng)景;另外,現(xiàn)有的方法中,多數(shù)是從軟件的角度去處理,而軟件處理方法是在CPU收到組播數(shù)據(jù)包后才開始進(jìn)行處理,并不能從源頭上切斷組播數(shù)據(jù)的重復(fù)上送,所以也會(huì)增加CPU的負(fù)擔(dān),造成CPU資源的浪費(fèi),存在一定的缺陷,影響業(yè)務(wù)質(zhì)量。
【發(fā)明內(nèi)容】
[0004]為解決現(xiàn)有技術(shù)中存在的問題,在本發(fā)明的實(shí)施例中提供一種組播報(bào)文的轉(zhuǎn)發(fā)方法及裝置。
[0005]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0006]本發(fā)明提供了一種組播報(bào)文的轉(zhuǎn)發(fā)方法,該方法包括:
[0007]轉(zhuǎn)發(fā)芯片接收組播報(bào)文,確定所述組播報(bào)文為已知組播報(bào)文后,將已知組播報(bào)文上送至中央處理器CPU并刪除組播轉(zhuǎn)發(fā)表出接口的CPU 口,按照接收的組播路由表更新組播轉(zhuǎn)發(fā)表和組播狀態(tài)表,根據(jù)更新后的組播狀態(tài)表確定組播轉(zhuǎn)發(fā)表收斂為穩(wěn)定狀態(tài)。
[0008]上述方案中,所述將已知組播報(bào)文上送至中央處理器CPU為:根據(jù)組播狀態(tài)表中組播轉(zhuǎn)發(fā)表的優(yōu)先級(jí)將已知組播報(bào)文上送至CPU。
[0009]上述方案中,所述按照接收的組播路由表更新組播轉(zhuǎn)發(fā)表和組播狀態(tài)表為:按照所述組播路由表更新組播轉(zhuǎn)發(fā)表中的源互聯(lián)網(wǎng)協(xié)議(SIP, Source Internet Protocol)地址字段、和/或目的互聯(lián)網(wǎng)協(xié)議(DIP,Destinat1n Internet Protocol)地址字段、和/或入虛擬局域網(wǎng)(VLAN, Virtual Local Area Network)字段、和/或出接口字段,并將組播狀態(tài)表中的狀態(tài)字段由表示組播轉(zhuǎn)發(fā)表未收斂為穩(wěn)定狀態(tài)的值更新為表示組播轉(zhuǎn)發(fā)表收斂為穩(wěn)定狀態(tài)的值,將組播狀態(tài)表中的命中標(biāo)志字段由表示在上送周期內(nèi)組播報(bào)文未成功上送的值更新為表示在上送周期內(nèi)組播報(bào)文已經(jīng)成功上送的值。
[0010]上述方案中,該方法還包括:在更新組播轉(zhuǎn)發(fā)表和組播狀態(tài)表之前,遍歷組播狀態(tài)表中組播轉(zhuǎn)發(fā)表優(yōu)先級(jí)Pr1rity字段的值,在小于所述Pr1rity的值個(gè)定時(shí)器周期內(nèi),對(duì)組播狀態(tài)表不進(jìn)行任何操作,在第Pr1rity的值個(gè)定時(shí)器周期再對(duì)組播狀態(tài)表執(zhí)行更新操作。
[0011]上述方案中,該方法還包括:在第Pr1rity的值個(gè)定時(shí)器周期結(jié)束時(shí),檢測(cè)出組播狀態(tài)表中的狀態(tài)字段的值表示組播轉(zhuǎn)發(fā)表未收斂為穩(wěn)定狀態(tài),則將刪除的CPU 口重新添加到組播轉(zhuǎn)發(fā)表出接口中。
[0012]上述方案中,該方法還包括:當(dāng)轉(zhuǎn)發(fā)芯片接收到的組播報(bào)文為未知組播報(bào)文時(shí),根據(jù)組播協(xié)議解析規(guī)則對(duì)未知組播報(bào)文的組播信息進(jìn)行解析,將解析后的組播信息寫入臨時(shí)組播轉(zhuǎn)發(fā)表,并寫臨時(shí)組播狀態(tài)表中的字段,上送所述未知組播報(bào)文至CPU。
[0013]上述方案中,該方法還包括:轉(zhuǎn)發(fā)芯片根據(jù)CPU中各組播協(xié)議驅(qū)動(dòng)器下發(fā)的組播路由表更新臨時(shí)組播轉(zhuǎn)發(fā)表中的字段和臨時(shí)組播狀態(tài)表中的字段,根據(jù)更新后的臨時(shí)組播狀態(tài)表確定臨時(shí)組播轉(zhuǎn)發(fā)表收斂為穩(wěn)定狀態(tài)。
[0014]上述方案中,該方法還包括:所述臨時(shí)組播狀態(tài)表包括組播轉(zhuǎn)發(fā)表優(yōu)先級(jí)Pr1rity字段,轉(zhuǎn)發(fā)芯片在所述Pr1rity的值個(gè)定時(shí)器周期內(nèi)沒有接收到組播路由表,貝Ij在第Pr1rity的值個(gè)定時(shí)器周期結(jié)束時(shí),檢測(cè)出臨時(shí)組播狀態(tài)表中的狀態(tài)字段的值表示臨時(shí)組播轉(zhuǎn)發(fā)表未收斂為穩(wěn)定狀態(tài),刪除臨時(shí)組播轉(zhuǎn)發(fā)表和臨時(shí)組播狀態(tài)表。
[0015]本發(fā)明還提供了一種組播報(bào)文的轉(zhuǎn)發(fā)裝置,該轉(zhuǎn)發(fā)芯片包括:接收模塊、確定模塊、發(fā)送模塊、刪除模塊、更新模塊;其中,
[0016]所述接收模塊,用于接收組播報(bào)文及組播路由表;
[0017]所述確定模塊,用于確定組播所述組播報(bào)文為已知組播報(bào)文,并根據(jù)更新后的組播狀態(tài)表確定組播轉(zhuǎn)發(fā)表收斂為穩(wěn)定狀態(tài);
[0018]所述發(fā)送模塊,用于將已知組播報(bào)文上送至CPU ;
[0019]所述刪除模塊,用于刪除組播轉(zhuǎn)發(fā)表出接口的CPU 口 ;
[0020]所述更新模塊,用于按照接收的組播路由表更新組播轉(zhuǎn)發(fā)表和組播狀態(tài)表。
[0021]上述方案中,所述發(fā)送模塊,具體用于根據(jù)組播裝態(tài)表中組播轉(zhuǎn)發(fā)表的優(yōu)先級(jí)將已知組播報(bào)文上送至CPU。
[0022]上述方案中,所述更新模塊,具體用于按照所述組播路由表更新組播轉(zhuǎn)發(fā)表中的SIP地址字段、和/或DIP地址字段、和/或入VLAN字段、和/或出接口字段,并將組播狀態(tài)表中的狀態(tài)字段由表示組播轉(zhuǎn)發(fā)表未收斂為穩(wěn)定狀態(tài)的值更新為表示組播轉(zhuǎn)發(fā)表收斂為穩(wěn)定狀態(tài)的值,將組播狀態(tài)表中的命中標(biāo)志字段由表示在上送周期內(nèi)組播報(bào)文未成功上送的值更新為表示在上送周期內(nèi)組播報(bào)文已經(jīng)成功上送的值。
[0023]上述方案中,所述更新模塊,還用于在更新組播轉(zhuǎn)發(fā)表和組播狀態(tài)表之前,遍歷組播狀態(tài)表中組播轉(zhuǎn)發(fā)表優(yōu)先級(jí)Pr1rity字段的值,在小于所述Pr1rity的值個(gè)定時(shí)器周期內(nèi),對(duì)組播狀態(tài)表不進(jìn)行任何操作,在第Pr1rity的值個(gè)定時(shí)器周期再對(duì)組播狀態(tài)表執(zhí)行更新操作。
[0024]上述方案中,該裝置還包括:添加模塊,用于在第Pr1rity的值個(gè)定時(shí)器周期結(jié)束時(shí),檢測(cè)出組播狀態(tài)表中的狀態(tài)字段的值表示組播轉(zhuǎn)發(fā)表未收斂為穩(wěn)定狀態(tài),則將刪除的CPU 口重新添加到組播轉(zhuǎn)發(fā)表出接口中。
[0025]上述方案中,該裝置還包括創(chuàng)建模塊,用于根據(jù)組播協(xié)議解析規(guī)則對(duì)未知組播報(bào)文的組播信息進(jìn)行解析,將解析后的組播信息寫入臨時(shí)組播轉(zhuǎn)發(fā)表,并寫臨時(shí)組播狀態(tài)表中的字段;
[0026]所述發(fā)送模塊,還用于上送所述未知組播報(bào)文至CPU ;
[0027]所述確定模塊,還用于當(dāng)確定接收到的組播報(bào)文為未知組播報(bào)文時(shí),通知?jiǎng)?chuàng)建模塊,并根據(jù)更新后的臨時(shí)組播狀態(tài)表確定臨時(shí)組播轉(zhuǎn)發(fā)表收斂為穩(wěn)定狀態(tài);
[0028]所述更新模塊,還用于根據(jù)CPU中各組播協(xié)議驅(qū)動(dòng)器下發(fā)的組播路由表更新臨時(shí)組播轉(zhuǎn)發(fā)表中的字段和臨時(shí)組播狀態(tài)表中的字段。
[0029]上述方案中,所述臨時(shí)組播狀態(tài)表包括組播轉(zhuǎn)發(fā)表優(yōu)先級(jí)Pr1rity字段;所述刪除模塊,還用于在第Pr1rity的值個(gè)定時(shí)器周期結(jié)束時(shí),檢測(cè)出臨時(shí)組播狀態(tài)表中的狀態(tài)字段的值表示臨時(shí)組播轉(zhuǎn)發(fā)表未收斂為穩(wěn)定狀態(tài),刪除臨時(shí)組播轉(zhuǎn)發(fā)表和臨時(shí)組播狀態(tài)表。
[0030]本發(fā)明實(shí)施例提供的一種組播報(bào)文的轉(zhuǎn)發(fā)方法及裝置,接收組播報(bào)文,確定所述組播報(bào)文為已知組播報(bào)文后,將已知組播報(bào)文上送至CPU并刪除組播轉(zhuǎn)發(fā)表出接口的CPU口,按照接收的組播路由表更新組播轉(zhuǎn)發(fā)表和組播狀態(tài)表,根據(jù)更新后的組播狀態(tài)表確定組播轉(zhuǎn)發(fā)表收斂為穩(wěn)定狀態(tài);如此,能夠在保護(hù)CPU的前提下,更全面的提高CPU處理組播報(bào)文的效率,進(jìn)而加快組播協(xié)議層面的下發(fā)路由效率,及時(shí)轉(zhuǎn)發(fā)組播報(bào)文。
【附圖說明】
[0031]圖1為現(xiàn)有技術(shù)中轉(zhuǎn)發(fā)組播報(bào)文的方法流程示意圖;
[0032]圖2為本發(fā)明實(shí)施例一提供的一種組播報(bào)文的轉(zhuǎn)發(fā)方法的流程示意圖;
[0033]圖3為本發(fā)明實(shí)施例二提供的一種組播報(bào)文的轉(zhuǎn)發(fā)方法的流程示意圖;
[0034]圖4為本發(fā)明實(shí)施例三提供的一種組播報(bào)文的轉(zhuǎn)發(fā)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0035]為了更好的理解本發(fā)明的技術(shù)方案,本發(fā)明先介紹現(xiàn)有技術(shù)中組播報(bào)文上送至CPU并進(jìn)行處理的方法,如圖1所示,該方法主要包括以下幾個(gè)步驟:
[0036]步驟101,接收組播報(bào)文;
[0037]步驟102,判斷所述組播報(bào)文是否存在組播轉(zhuǎn)發(fā)表;如果是,則執(zhí)行步驟103 ;如果否,則執(zhí)行步驟104;
[0038]本步驟中,當(dāng)所述CPU接收到組播報(bào)文時(shí),根據(jù)組播數(shù)據(jù)幀的目的組播地址查找所述組播報(bào)文是否存在組播轉(zhuǎn)發(fā)表。
[0039]步驟103,根據(jù)接收到的帶有上送標(biāo)記的組播路由表對(duì)已知組播報(bào)文進(jìn)行轉(zhuǎn)發(fā),流程結(jié)束;
[00