本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,尤其涉及一種流表遍歷業(yè)務(wù)的實(shí)現(xiàn)方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)爆炸式發(fā)展,網(wǎng)絡(luò)流量急劇增加,各種新興業(yè)務(wù)層出不窮,通過(guò)建立流表描述每個(gè)數(shù)據(jù)報(bào)文的上下文環(huán)境的數(shù)據(jù)通信設(shè)備會(huì)建立大量會(huì)話表項(xiàng),通常在十兆數(shù)量級(jí)以上,而對(duì)這大量流表如何高效管理成為通信設(shè)備一個(gè)必須要解決的問(wèn)題。
在傳統(tǒng)的解決方案中,通過(guò)cup直接訪問(wèn)存儲(chǔ)流表的存儲(chǔ)設(shè)備,由于cpu處理能力和PCI總線速度的制約,在表項(xiàng)較多時(shí)效率比較低。
因此,如何提供一種可提高效率的流表遍歷業(yè)務(wù)的實(shí)現(xiàn)方法,是本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種流表遍歷業(yè)務(wù)的實(shí)現(xiàn)方法及裝置,以解決現(xiàn)有技術(shù)效率較低的問(wèn)題。
本發(fā)明提供了一種流表遍歷業(yè)務(wù)的實(shí)現(xiàn)方法,其包括:控制模塊獲取流表遍歷業(yè)務(wù)的業(yè)務(wù)參數(shù),并下發(fā)給協(xié)處理模塊;協(xié)處理模塊控制其內(nèi)各網(wǎng)絡(luò)處理器根據(jù)業(yè)務(wù)參數(shù)處理流表遍歷業(yè)務(wù)。
進(jìn)一步的,還包括:控制模塊獲取協(xié)處理模塊的處理結(jié)果。
進(jìn)一步的,控制模塊獲取協(xié)處理模塊的處理結(jié)果包括:協(xié)處理模塊將處理結(jié)果發(fā)送至存儲(chǔ)模塊,控制模塊從存儲(chǔ)模塊獲取處理結(jié)果。
進(jìn)一步的,還包括:控制模塊根據(jù)處理結(jié)果進(jìn)行統(tǒng)計(jì),并向用戶展示統(tǒng)計(jì)結(jié)果。
進(jìn)一步的,協(xié)處理模塊控制其內(nèi)各網(wǎng)絡(luò)處理器根據(jù)業(yè)務(wù)參數(shù)處理流表遍歷業(yè)務(wù)包括:網(wǎng)絡(luò)處理器中的調(diào)度核根據(jù)業(yè)務(wù)參數(shù)將流表調(diào)度給各業(yè)務(wù)核,業(yè)務(wù)核處理為其調(diào)度的流表。
本發(fā)明提供了一種流表遍歷業(yè)務(wù)的實(shí)現(xiàn)裝置,其包括:控制模塊,用于獲取流表遍歷業(yè)務(wù)的業(yè)務(wù)參數(shù),并下發(fā)給協(xié)處理模塊;協(xié)處理模塊,用于控制其內(nèi)各網(wǎng)絡(luò)處理器根據(jù)業(yè)務(wù)參數(shù)處理流表遍歷業(yè)務(wù)。
進(jìn)一步的,控制模塊還用于獲取協(xié)處理模塊的處理結(jié)果。
進(jìn)一步的,還包括存儲(chǔ)模塊,協(xié)處理模塊用于將處理結(jié)果發(fā)送至存儲(chǔ)模塊,控制模塊用于從存儲(chǔ)模塊獲取處理結(jié)果。
進(jìn)一步的,控制模塊還用于根據(jù)處理結(jié)果進(jìn)行統(tǒng)計(jì),并向用戶展示統(tǒng)計(jì)結(jié)果。
進(jìn)一步的,協(xié)處理模塊具體用于控制網(wǎng)絡(luò)處理器中的調(diào)度核根據(jù)業(yè)務(wù)參數(shù)將流表調(diào)度給各業(yè)務(wù)核,業(yè)務(wù)核處理為其調(diào)度的流表。
本發(fā)明的有益效果:
本發(fā)明提供了一種流表遍歷業(yè)務(wù)的實(shí)現(xiàn)方法,采用網(wǎng)絡(luò)處理器執(zhí)行流表遍歷業(yè)務(wù),各種算法可以通過(guò)硬件實(shí)現(xiàn),在實(shí)現(xiàn)復(fù)雜的擁塞管理、隊(duì)列調(diào)度、流分類(lèi)和QoS功能的前提下,還可以達(dá)到極高的查找、轉(zhuǎn)發(fā)性能,實(shí)現(xiàn)“硬轉(zhuǎn)發(fā)”; 相對(duì)于純硬件的芯片,網(wǎng)絡(luò)處理器完全支持編程,編程模式簡(jiǎn)單,一旦有新的技術(shù)或者需求出現(xiàn),可以很方便地通過(guò)微碼編程進(jìn)行實(shí)現(xiàn);此外,網(wǎng)絡(luò)處理器還具有可擴(kuò)展性,多個(gè)網(wǎng)絡(luò)處理器之間可以互連,構(gòu)成網(wǎng)絡(luò)處理器簇,以支持更為大型高速的網(wǎng)絡(luò)處理,可以有效的解決現(xiàn)有解決方案所存在的效率較低問(wèn)題。
附圖說(shuō)明
圖1為本發(fā)明第一實(shí)施例提供的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖;
圖2為本發(fā)明第二實(shí)施例提供的實(shí)現(xiàn)方法的流程圖;
圖3為本發(fā)明第三實(shí)施例提供的實(shí)現(xiàn)方法的流程圖。
具體實(shí)施方式
現(xiàn)通過(guò)具體實(shí)施方式結(jié)合附圖的方式對(duì)本發(fā)明做出進(jìn)一步的詮釋說(shuō)明。
第一實(shí)施例:
圖1為本發(fā)明第一實(shí)施例提供的實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖,由圖1可知,在本實(shí)施例中,本發(fā)明提供的流表遍歷業(yè)務(wù)的實(shí)現(xiàn)裝置1包括:
控制模塊11,用于獲取流表遍歷業(yè)務(wù)的業(yè)務(wù)參數(shù),并下發(fā)給協(xié)處理模塊12;
協(xié)處理模塊12,用于控制其內(nèi)各網(wǎng)絡(luò)處理器根據(jù)業(yè)務(wù)參數(shù)處理流表遍歷業(yè)務(wù)。
在一些實(shí)施例中,上述實(shí)施例中的控制模塊11還用于獲取協(xié)處理模塊12的處理結(jié)果。
在一些實(shí)施例中,如圖1所示,上述實(shí)施例中的實(shí)現(xiàn)裝置1還包括存儲(chǔ)模塊13,協(xié)處理模塊12用于將處理結(jié)果發(fā)送至存儲(chǔ)模塊13,控制模塊11用于從存儲(chǔ)模塊獲取13處理結(jié)果。
在一些實(shí)施例中,上述實(shí)施例中的控制模塊11還用于根據(jù)處理結(jié)果進(jìn)行統(tǒng)計(jì),并向用戶展示統(tǒng)計(jì)結(jié)果。
在一些實(shí)施例中,上述實(shí)施例中的協(xié)處理模塊12具體用于控制網(wǎng)絡(luò)處理器中的調(diào)度核根據(jù)業(yè)務(wù)參數(shù)將流表調(diào)度給各業(yè)務(wù)核,業(yè)務(wù)核處理為其調(diào)度的流表。
第二實(shí)施例:
圖2為本發(fā)明第二實(shí)施例提供的實(shí)現(xiàn)方法的流程圖,由圖2可知,在本實(shí)施例中,本發(fā)明提供的實(shí)現(xiàn)方法包括以下步驟:
S201:控制模塊獲取流表遍歷業(yè)務(wù)的業(yè)務(wù)參數(shù),并下發(fā)給協(xié)處理模塊;
S202:協(xié)處理模塊控制其內(nèi)各網(wǎng)絡(luò)處理器根據(jù)業(yè)務(wù)參數(shù)處理流表遍歷業(yè)務(wù)。
在一些實(shí)施例中,上述實(shí)施例還包括:控制模塊獲取協(xié)處理模塊的處理結(jié)果。
在一些實(shí)施例中,上述實(shí)施例中的控制模塊獲取協(xié)處理模塊的處理結(jié)果包括:協(xié)處理模塊將處理結(jié)果發(fā)送至存儲(chǔ)模塊,控制模塊從存儲(chǔ)模塊獲取處理結(jié)果。
在一些實(shí)施例中,上述實(shí)施例還包括:控制模塊根據(jù)處理結(jié)果進(jìn)行統(tǒng)計(jì),并向用戶展示統(tǒng)計(jì)結(jié)果。
在一些實(shí)施例中,上述實(shí)施例中的協(xié)處理模塊控制其內(nèi)各網(wǎng)絡(luò)處理器根據(jù)業(yè)務(wù)參數(shù)處理流表遍歷業(yè)務(wù)包括:網(wǎng)絡(luò)處理器中的調(diào)度核根據(jù)業(yè)務(wù)參數(shù)將流表 調(diào)度給各業(yè)務(wù)核,業(yè)務(wù)核處理為其調(diào)度的流表。
現(xiàn)結(jié)合具體應(yīng)用實(shí)例對(duì)本發(fā)明做進(jìn)一步的詮釋說(shuō)明。
第三實(shí)施例:
圖3為本發(fā)明第三實(shí)施例提供的實(shí)現(xiàn)方法的流程圖,由圖3可知,在本實(shí)施例中,本發(fā)明提供的實(shí)現(xiàn)方法包括以下步驟:
S301:控制模塊獲取業(yè)務(wù)參數(shù)并下發(fā)給協(xié)處理模塊。
用戶下發(fā)業(yè)務(wù)請(qǐng)求,控制模塊收到用戶下發(fā)的業(yè)務(wù)請(qǐng)求,將獲得的參數(shù)以消息的形式下發(fā)給底層協(xié)處理模塊,同時(shí)監(jiān)聽(tīng)協(xié)處理模塊的處理進(jìn)程。
S302:協(xié)處理模塊處理流表遍歷業(yè)務(wù)。
協(xié)處理模塊的兩個(gè)網(wǎng)絡(luò)處理器分別收到控制模塊下發(fā)的統(tǒng)計(jì)消息,將參數(shù)解析出來(lái)后根據(jù)用戶需求進(jìn)行相應(yīng)的業(yè)務(wù)處理,這里流表業(yè)務(wù)處理,相對(duì)與傳統(tǒng)的CPU直接遍歷,本申請(qǐng)采用多內(nèi)核并行處理,一個(gè)內(nèi)核負(fù)責(zé)做命令調(diào)度,其他內(nèi)核負(fù)責(zé)遍歷流表處理相應(yīng)業(yè)務(wù),而非一個(gè)內(nèi)核遍歷所有流表,而是將整塊內(nèi)核均分給其他業(yè)務(wù)處理內(nèi)核處理以提高效率,最后將結(jié)果或?qū)懭胪庠O(shè)存儲(chǔ)設(shè)備中或直接以消息的形式發(fā)給控制模塊。
在本申請(qǐng)中,將流表遍歷流程放在協(xié)處理模塊處理,設(shè)流表總量為M,設(shè)計(jì)用多個(gè)核來(lái)并行處理整個(gè)流表遍歷流程,其中一個(gè)核用來(lái)做命令調(diào)度,剩下的L個(gè)核用來(lái)做具體業(yè)務(wù)處理,當(dāng)做命令調(diào)度的核收到上層控制模塊下發(fā)的業(yè)務(wù)消息時(shí),先初始化,包括設(shè)置一個(gè)全局的控制變量index_cnt,通過(guò)index_cnt的值可以知道此次業(yè)務(wù)處理進(jìn)度。當(dāng)index_cnt等于L時(shí),通知其他核開(kāi)始遍歷流表,同時(shí)為提高效率,做業(yè)務(wù)處理的核并不是一個(gè)核遍歷所有流表,而是將整塊流表均分為L(zhǎng)塊,這里的平均并不是絕對(duì)平均,而是一個(gè)大概均分,原則 是各個(gè)核負(fù)責(zé)的流表塊之間沒(méi)有重疊,同時(shí)覆蓋所有流表,另外,盡量讓每個(gè)業(yè)務(wù)核處理的業(yè)務(wù)量相當(dāng),以達(dá)到統(tǒng)籌效率最優(yōu)的目的。如圖3所示,假設(shè)有M條流表,a=M/L,這樣第i個(gè)業(yè)務(wù)核只要負(fù)責(zé)第(i-1)*a+1到i*a范圍內(nèi)的流表業(yè)務(wù)就可以了,L個(gè)業(yè)務(wù)核并行處理各自負(fù)責(zé)的流表塊,當(dāng)每個(gè)業(yè)務(wù)核處理完了各自負(fù)責(zé)的流表塊,則將全局的控制變量index_cnt減1,當(dāng)index_cnt減為0時(shí)就代表此整個(gè)業(yè)務(wù)處理完成,這時(shí)調(diào)度核就將所有業(yè)務(wù)核的處理結(jié)果整合,將最后結(jié)果或直接上報(bào)給控制模塊或?qū)懭胪庠O(shè)存儲(chǔ)設(shè)備,如果是寫(xiě)入外設(shè)存儲(chǔ)設(shè)備,則同時(shí)需通知上層控制模塊業(yè)務(wù)已處理完成。
S303:控制模塊統(tǒng)計(jì)處理結(jié)果。
當(dāng)控制模塊監(jiān)聽(tīng)到協(xié)處理模塊已經(jīng)統(tǒng)計(jì)完成時(shí),分別獲取兩個(gè)網(wǎng)絡(luò)處理器的結(jié)果進(jìn)行再加工,將最終結(jié)果反饋給上層用戶。具體的以TOP-N統(tǒng)計(jì)為例進(jìn)行說(shuō)明,TOP-N統(tǒng)計(jì)是基于上述流表遍歷的基礎(chǔ)上的一個(gè)更復(fù)雜的實(shí)施例,本發(fā)明可以快速統(tǒng)計(jì)基于ip地址、協(xié)議等的流量排名信息,分別顯示排行前10位,前20位,前50位。
TOP-N統(tǒng)計(jì)包括以下步驟:
用戶通過(guò)命令行參數(shù)配置將流表業(yè)務(wù)下發(fā)給控制模塊。
當(dāng)控制模塊收到用戶統(tǒng)計(jì)請(qǐng)求時(shí)解析出相關(guān)參數(shù),然后將參數(shù)構(gòu)造成消息,以消息的形式分別下發(fā)給協(xié)處理模塊的兩個(gè)網(wǎng)絡(luò)處理器NP。
每個(gè)NP中由做命令調(diào)度的核獲取上層下發(fā)的TOP-N統(tǒng)計(jì)消息,做初始化流程,將全局變量index_cnt設(shè)為L(zhǎng)(業(yè)務(wù)核的數(shù)目),將整塊流表均分為L(zhǎng)份,業(yè)務(wù)核開(kāi)始遍歷各自負(fù)責(zé)的流表塊,基于每個(gè)流表及下發(fā)參數(shù)做一個(gè)hash鏈表,將所有流表基于下發(fā)參數(shù)做一個(gè)統(tǒng)計(jì)。在創(chuàng)建HASH表前都會(huì)指定HASH表的規(guī) 格,如2的M次方條,根據(jù)從消息中獲取的參數(shù)取出流表中相應(yīng)的流表信息作為關(guān)鍵字做HASH運(yùn)算得到HASH值H,然后,取值H的0-(M-1)比特位作為HASH表項(xiàng)對(duì)應(yīng)的INDEX表索引IDX,如果沒(méi)有匹配的INDEX表項(xiàng),則需要新建一個(gè)INDEX表及相應(yīng)的ENTRY表。如果存在匹配的INDEX表則通過(guò)INDEX表內(nèi)的值映射其對(duì)應(yīng)的ENTRY表,這里,因?yàn)榭赡艽嬖贖ASH沖突,所以取出ENTRY表后,要也查找關(guān)鍵字進(jìn)行精確匹配來(lái)確認(rèn)是否為實(shí)際要索引的表項(xiàng),如果是則將表里的統(tǒng)計(jì)值進(jìn)行累計(jì),如果不是則需要新建一個(gè)ENTRY表,并將其index值保存在前一個(gè)與其hash沖突的ENTRY表中,以建立聯(lián)系。每個(gè)業(yè)務(wù)核處理完各自負(fù)責(zé)的業(yè)務(wù)后就將index_cnt減1,當(dāng)負(fù)責(zé)命令調(diào)度的核監(jiān)測(cè)到index_cnt為0時(shí),代表業(yè)務(wù)核統(tǒng)計(jì)業(yè)務(wù)完成,因?yàn)橥瓿山y(tǒng)計(jì)后HASH表比較大,所以不能將統(tǒng)計(jì)結(jié)果即時(shí)反饋給上層控制模塊,而是將所有的HASH表保存在外設(shè)存儲(chǔ)設(shè)備中,同時(shí)通知上層控制模塊底層統(tǒng)計(jì)業(yè)務(wù)完成。
當(dāng)控制模塊監(jiān)聽(tīng)到兩個(gè)NP統(tǒng)計(jì)完成時(shí),直接從NP下掛下的外設(shè)存儲(chǔ)設(shè)備讀取各自的HASH統(tǒng)計(jì)鏈表。因?yàn)橐獙蓚€(gè)網(wǎng)絡(luò)處理器的統(tǒng)計(jì)結(jié)果整合為一個(gè),所以在實(shí)現(xiàn)的時(shí)候可以整塊一次讀取其中一個(gè)網(wǎng)絡(luò)處理器在外設(shè)存儲(chǔ)設(shè)備里建立的HASH鏈,在此基礎(chǔ)上遍歷另一個(gè)網(wǎng)絡(luò)處理器的HASH統(tǒng)計(jì)鏈,通過(guò)與底層同樣的HASH建立方式或累計(jì)或新建,最終將兩個(gè)網(wǎng)絡(luò)處理器的統(tǒng)計(jì)結(jié)果整合為一個(gè)HASH鏈保存到一塊動(dòng)態(tài)申請(qǐng)的內(nèi)存中。最后遍歷這條HASH鏈,用二分排序法排出前TOP-N的統(tǒng)計(jì)結(jié)果反饋給上層用戶。
綜上可知,通過(guò)本發(fā)明的實(shí)施,至少存在以下有益效果:
采用網(wǎng)絡(luò)處理器執(zhí)行流表遍歷業(yè)務(wù),各種算法可以通過(guò)硬件實(shí)現(xiàn),在實(shí)現(xiàn)復(fù)雜的擁塞管理、隊(duì)列調(diào)度、流分類(lèi)和QoS功能的前提下,還可以達(dá)到極高的查 找、轉(zhuǎn)發(fā)性能,實(shí)現(xiàn)“硬轉(zhuǎn)發(fā)”;相對(duì)于純硬件的芯片,網(wǎng)絡(luò)處理器完全支持編程,編程模式簡(jiǎn)單,一旦有新的技術(shù)或者需求出現(xiàn),可以很方便地通過(guò)微碼編程進(jìn)行實(shí)現(xiàn);此外,網(wǎng)絡(luò)處理器還具有可擴(kuò)展性,多個(gè)網(wǎng)絡(luò)處理器之間可以互連,構(gòu)成網(wǎng)絡(luò)處理器簇,以支持更為大型高速的網(wǎng)絡(luò)處理,可以有效的解決現(xiàn)有解決方案所存在的效率較低問(wèn)題。
以上僅是本發(fā)明的具體實(shí)施方式而已,并非對(duì)本發(fā)明做任何形式上的限制,凡是依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施方式所做的任意簡(jiǎn)單修改、等同變化、結(jié)合或修飾,均仍屬于本發(fā)明技術(shù)方案的保護(hù)范圍。