一種數(shù)據(jù)包處理方法及設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及網(wǎng)絡(luò)通信領(lǐng)域,特別是涉及一種數(shù)據(jù)包處理方法及設(shè)備。
【背景技術(shù)】
[0002]OpenFlow技術(shù)由斯坦福大學(xué)提出,旨在基于現(xiàn)有TCP/IP技術(shù)條件,以創(chuàng)新的網(wǎng)絡(luò)互聯(lián)理念解決當(dāng)前網(wǎng)絡(luò)面對新業(yè)務(wù)產(chǎn)生的種種瓶頸。它的核心思想就是將原本完全由交換機(jī)/路由器控制的數(shù)據(jù)包轉(zhuǎn)發(fā)過程,轉(zhuǎn)化為OpenFlow交換機(jī)和控制器分別完成的獨(dú)立過程。
[0003]OpenFlow交換機(jī)在OpenFlow網(wǎng)絡(luò)中執(zhí)行來自控制器的命令,將接收到的數(shù)據(jù)包與OpenFlow交換機(jī)中的流表進(jìn)行流表匹配。OpenFlow交換機(jī)將匹配成功的數(shù)據(jù)包轉(zhuǎn)發(fā)至相應(yīng)端口,將未匹配成功的數(shù)據(jù)包轉(zhuǎn)發(fā)給控制器,由控制器決定該數(shù)據(jù)包的轉(zhuǎn)發(fā)動作。
[0004]發(fā)明人經(jīng)過研究發(fā)現(xiàn),OpenFlow交換機(jī)在將所述大量未匹配成功的數(shù)據(jù)包轉(zhuǎn)發(fā)給控制器的過程中,當(dāng)未匹配成功的數(shù)據(jù)包數(shù)量過多,轉(zhuǎn)發(fā)負(fù)載超過OpenFlow交換機(jī)的轉(zhuǎn)發(fā)能力時,OpenFlow交換機(jī)會無效部分未匹配成功的數(shù)據(jù)包,而被無效的數(shù)據(jù)包中可能會包含比較重要的數(shù)據(jù)包,從而導(dǎo)致重要的數(shù)據(jù)包被丟棄。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實(shí)施例的目的在于提供一種數(shù)據(jù)包處理方法及設(shè)備,以解決當(dāng)未匹配成功的數(shù)據(jù)包數(shù)量過多,轉(zhuǎn)發(fā)負(fù)載超過OpenFlow交換機(jī)的轉(zhuǎn)發(fā)能力時,丟棄重要數(shù)據(jù)包的問題。
[0006]根據(jù)本發(fā)明實(shí)施例的第一方面,提供一種數(shù)據(jù)包處理方法,包括:
[0007]將接收到的數(shù)據(jù)包在流表中進(jìn)行流表匹配,確定所述接收到的數(shù)據(jù)包為新建數(shù)據(jù)包,所述新建數(shù)據(jù)包為需要上報(bào)控制器確定處理方式的數(shù)據(jù)包;
[0008]確定所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級;
[0009]將所述新建數(shù)據(jù)包按所述目標(biāo)優(yōu)先級向所述控制器進(jìn)行上報(bào)。
[0010]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,向所述控制器上報(bào)的信息中包括所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級信息,以便所述控制器根據(jù)所述目標(biāo)優(yōu)先級對收到的所述新建數(shù)據(jù)包進(jìn)行處理。
[0011]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述確定所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級,包括:
[0012]若在所述流表中查找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,執(zhí)行所述流表項(xiàng)中的優(yōu)先級更新指令,依據(jù)所述優(yōu)先級更新指令對所述新建數(shù)據(jù)包的優(yōu)先級進(jìn)行更新,確定所述更新后的優(yōu)先級為所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級;
[0013]若在所述流表中未找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,確定所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級為初始優(yōu)先級。
[0014]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述將接收到的數(shù)據(jù)包進(jìn)行流表匹配之前,所述方法還包括:
[0015]為所述接收到的數(shù)據(jù)包設(shè)置所述初始優(yōu)先級。
[0016]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述流表為多級流表,則所述若在所述流表中查找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,執(zhí)行所述流表項(xiàng)中的優(yōu)先級更新指令,依據(jù)所述優(yōu)先級更新指令對所述新建數(shù)據(jù)包的優(yōu)先級進(jìn)行更新,具體為:
[0017]若在所述多級流表中的當(dāng)前流表中查找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,執(zhí)行所述流表項(xiàng)中的優(yōu)先級更新指令,依據(jù)所述優(yōu)先級更新指令對所述新建數(shù)據(jù)包的優(yōu)先級進(jìn)行更新;
[0018]所述若在所述流表中未找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,確定所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級為初始優(yōu)先級,具體為:
[0019]若在所述多級流表中的當(dāng)前流表中未找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,確定所述當(dāng)前流表是否為所述多級流表中的首個流表,若所述當(dāng)前流表為所述多級流表中的首個流表,則將所述新建數(shù)據(jù)包的初始優(yōu)先級作為目標(biāo)優(yōu)先級;
[0020]若所述當(dāng)前流表為所述多級流表中的非首個流表,則將所述當(dāng)前流表的前一級流表為所述新建數(shù)據(jù)包確定的優(yōu)先級作為目標(biāo)優(yōu)先級。
[0021]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0022]接收所述控制器下發(fā)的流表處理命令,所述流表處理命令中包含所述優(yōu)先級更新指令;
[0023]根據(jù)所述流表處理命令,在所述流表中建立所述流表項(xiàng),所述流表項(xiàng)的指令集為所述優(yōu)先級更新指令。
[0024]結(jié)合第一方面,在第六種可能的實(shí)現(xiàn)方式中,所述將所述新建數(shù)據(jù)包按所述目標(biāo)優(yōu)先級向所述控制器進(jìn)行上報(bào)包括:
[0025]對所述新建數(shù)據(jù)包的信息及所述新建數(shù)據(jù)包對應(yīng)的目標(biāo)優(yōu)先級進(jìn)行封裝,獲得數(shù)據(jù)包消息;
[0026]將所述數(shù)據(jù)包消息按所述目標(biāo)優(yōu)先級向所述控制器進(jìn)行上報(bào)。
[0027]根據(jù)本發(fā)明實(shí)施例的第二方面,提供一種數(shù)據(jù)包處理設(shè)備,包括:
[0028]匹配單元,用于將接收到的數(shù)據(jù)包在流表中進(jìn)行流表匹配,確定所述接收到的數(shù)據(jù)包為新建數(shù)據(jù)包,所述新建數(shù)據(jù)包為需要上報(bào)控制器確定處理方式的數(shù)據(jù)包;
[0029]確定單元,與所述匹配單元相連接,用于確定所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級;
[0030]上報(bào)單元,用于將所述新建數(shù)據(jù)包按所述目標(biāo)優(yōu)先級向所述控制器進(jìn)行上報(bào)。
[0031]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述上報(bào)單元向所述控制器上報(bào)的信息中包括所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級信息,以便所述控制器根據(jù)所述目標(biāo)優(yōu)先級對收到的所述新建數(shù)據(jù)包進(jìn)行處理。
[0032]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,所述確定單元包括:
[0033]第一確定子單元,用于若在所述流表中查找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,執(zhí)行所述流表項(xiàng)中的優(yōu)先級更新指令,依據(jù)所述優(yōu)先級更新指令對所述新建數(shù)據(jù)包的優(yōu)先級進(jìn)行更新,確定所述更新后的優(yōu)先級為所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級;
[0034]第二確定子單元,用于若在所述流表中未找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,確定所述新建數(shù)據(jù)包的目標(biāo)優(yōu)先級為初始優(yōu)先級。
[0035]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,其特征在于,還包括:
[0036]設(shè)置單元,與所述匹配單元相連接,用于為所述接收到的數(shù)據(jù)包設(shè)置所述初始優(yōu)先級。
[0037]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述流表為多級流表,則
[0038]所述第一確定子單元,具體用于若在所述多級流表中的當(dāng)前流表中查找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,執(zhí)行所述流表項(xiàng)中的優(yōu)先級更新指令,依據(jù)所述優(yōu)先級更新指令對所述新建數(shù)據(jù)包的優(yōu)先級進(jìn)行更新;
[0039]所述第二確定子單元,具體用于:若在所述多級流表中的當(dāng)前流表中未找到與所述新建數(shù)據(jù)包相匹配的流表項(xiàng)時,確定所述當(dāng)前流表是否為所述多級流表中的首個流表,若所述當(dāng)前流表為所述多級流表中的首個流表,則將所述新建數(shù)據(jù)包的初始優(yōu)先級作為目標(biāo)優(yōu)先級;若所述當(dāng)前流表為所述多級流表中的非首個流表,則將所述當(dāng)前流表的前一級流表為所述新建數(shù)據(jù)包確定的優(yōu)先級作為目標(biāo)優(yōu)先級。
[0040]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,還包括:
[0041]接收單元,用于接收所述控制器下發(fā)的流表處理命令,所述流表處理命令中包含所述優(yōu)先級更新指令;
[0042]建立單元,與所述接收單元相連接,用于根據(jù)所述流表處理命令,在所述流表中建立所述流表項(xiàng),所述流表項(xiàng)的指令集為所述優(yōu)先級更新指令。
[0043]結(jié)合第二方面,在第六種可能的實(shí)現(xiàn)方式中,所述上報(bào)單元包括:
[0044]封裝子單元,用于對所述新建數(shù)據(jù)包的信息及所述新建數(shù)據(jù)包對應(yīng)的目標(biāo)優(yōu)先級進(jìn)行封裝,獲得數(shù)據(jù)包消息;
[0045]上報(bào)子單元,與所述封裝子單元相連接,用于將所述數(shù)據(jù)包消息按所述目標(biāo)優(yōu)先級向所述控制器進(jìn)行上報(bào)。
[0046]由以上本發(fā)明實(shí)施例提供的技術(shù)方案可見,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理方法,在數(shù)據(jù)包進(jìn)行流表匹配的過程確定最終新建數(shù)據(jù)包的目標(biāo)優(yōu)先級,并依據(jù)所述目標(biāo)優(yōu)先級將所述數(shù)據(jù)包轉(zhuǎn)發(fā)至控制器中。本發(fā)明實(shí)施例提供的數(shù)據(jù)包處理方法,確定了進(jìn)入OpenFlow交換機(jī)中的數(shù)據(jù)包的優(yōu)先級,對于未匹配成功的數(shù)據(jù)包,依據(jù)其優(yōu)先級的高低,將優(yōu)先級高的優(yōu)先進(jìn)行轉(zhuǎn)發(fā),保證了優(yōu)先級高的數(shù)據(jù)包不被丟棄。
【附圖說明】
[0047]為了更清楚地說明本申請實(shí)施例中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0048]圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理方法的方法流程圖;
[0049]圖2為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理方法的又一方法流程圖;
[0050]圖3為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理方法的又一方法流程圖;
[0051]圖4為本發(fā)明實(shí)施例提供