一種數(shù)據(jù)包處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,更具體地說,涉及一種數(shù)據(jù)包處理方法及裝置。
【背景技術(shù)】
[0002]近些年,隨著云計(jì)算技術(shù)在人們的生活和工作中應(yīng)用越來越廣,計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展也正朝著更有利于云計(jì)算以及更有利于大數(shù)據(jù)時(shí)代信息傳播的方向發(fā)展。近幾年提出的軟件定義網(wǎng)絡(luò)(Software-Defined Network,SDN)技術(shù)成為廣受業(yè)界關(guān)注的網(wǎng)絡(luò)技術(shù)。其核心技術(shù)是0penFlow,0penFlow將網(wǎng)絡(luò)設(shè)備的控制與數(shù)據(jù)分離開來,以實(shí)現(xiàn)對整個網(wǎng)絡(luò)流量的靈活控制。
[0003]其中,每臺OpenFlow交換機(jī)中的處理模塊都是由多級流表構(gòu)成的,不同的流表中存儲有不同的規(guī)則,以對數(shù)據(jù)包進(jìn)行不同的處理,每個進(jìn)入到OpenFlow交換機(jī)中的數(shù)據(jù)包,都需要首先與多級流表中的第一個流表中包含的流表項(xiàng)進(jìn)行匹配,并將按照與數(shù)據(jù)包匹配的流表項(xiàng)進(jìn)行處理后轉(zhuǎn)發(fā)至下一個流表項(xiàng)中,同樣,數(shù)據(jù)包通過上述方式在下一個流表項(xiàng)中被處理,直至輸出。另外,如果在任一流表中與數(shù)據(jù)包匹配的流表項(xiàng)中未指明數(shù)據(jù)包需被轉(zhuǎn)發(fā)至下一個數(shù)據(jù)包,則對數(shù)據(jù)包進(jìn)行處理后直接對數(shù)據(jù)包進(jìn)行輸出。但是,通常情況下,數(shù)據(jù)包在OpenFlow交換機(jī)中的處理模塊中是需要跳轉(zhuǎn)多個流表后完成處理被輸出的,這樣就會增加對于數(shù)據(jù)包的處理時(shí)間,增大數(shù)據(jù)包的處理時(shí)延,從而無法滿足對時(shí)延要求較為嚴(yán)苛的數(shù)據(jù)包對應(yīng)的虛擬機(jī)。
[0004]綜上所述,現(xiàn)有技術(shù)對于數(shù)據(jù)包的處理中存在時(shí)延較大的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種數(shù)據(jù)包處理方法及裝置,以解決現(xiàn)有技術(shù)對于數(shù)據(jù)包的處理中存在的時(shí)延較大的問題。
[0006]為了實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
[0007]一種數(shù)據(jù)包處理方法,包括:
[0008]接收數(shù)據(jù)包;
[0009]如果所述數(shù)據(jù)包是與特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包,則將所述數(shù)據(jù)包同時(shí)與Μ個第一流表中的流表項(xiàng)進(jìn)行匹配,如果所述Μ個第一流表中存在與所述數(shù)據(jù)包匹配的任一流表項(xiàng),則確定該流表項(xiàng)為目標(biāo)流表項(xiàng),依據(jù)所述目標(biāo)流表項(xiàng)對所述數(shù)據(jù)包進(jìn)行處理,并將處理完成的數(shù)據(jù)包進(jìn)行輸出。
[0010]優(yōu)選的,在接收數(shù)據(jù)包之后,還包括:
[0011 ]步驟1:如果所述數(shù)據(jù)包不是與所述特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包,則確定Ν個第二流表中的第一個流表為當(dāng)前流表;
[0012]步驟2:將所述數(shù)據(jù)包與當(dāng)前流表中的流表項(xiàng)進(jìn)行匹配,如果當(dāng)前流表中存在與所述數(shù)據(jù)包匹配的任一流表項(xiàng),則確定該流表項(xiàng)為目標(biāo)流表項(xiàng),依據(jù)所述目標(biāo)流表項(xiàng)對所述數(shù)據(jù)包進(jìn)行處理,如果所述目標(biāo)流表項(xiàng)中包含有需對所述數(shù)據(jù)包進(jìn)行處理的下一第二流表的流表信息,則確定該流表信息對應(yīng)的第二流表為當(dāng)前流表;
[0013]步驟3:返回執(zhí)行步驟2,直至所述目標(biāo)流表項(xiàng)中未包含有需對所述數(shù)據(jù)包進(jìn)行處理的下一第二流表的流表信息為止,將處理完成的數(shù)據(jù)包進(jìn)行輸出。
[0014]優(yōu)選的,還包括:
[0015]如果同時(shí)接收到多個數(shù)據(jù)包,所述多個數(shù)據(jù)包均是與所述特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包或者所述多個數(shù)據(jù)包均不是與所述特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包,則按照所述多個數(shù)據(jù)包中每個數(shù)據(jù)包對應(yīng)的虛擬機(jī)的優(yōu)先級對所述多個數(shù)據(jù)包進(jìn)行處理。
[0016]優(yōu)選的,在接收到多個數(shù)據(jù)包之后,還包括:
[0017]確定與所述多個數(shù)據(jù)包對應(yīng)的虛擬機(jī)的優(yōu)先級,依據(jù)所述優(yōu)先級計(jì)算所述多個數(shù)據(jù)包中每個數(shù)據(jù)包需等待被處理的等待時(shí)間,并將所述等待時(shí)間發(fā)送至對應(yīng)的虛擬機(jī)。
[0018]優(yōu)選的,確定所述數(shù)據(jù)包是否為與所述特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包,包括:
[0019]獲取所述數(shù)據(jù)包中攜帶的源IP或者目的IP,并判斷與所述源IP或者目的IP對應(yīng)的虛擬機(jī)是否為特定虛擬機(jī)。
[0020]優(yōu)選的,將所述數(shù)據(jù)包與任一流表中的流表項(xiàng)進(jìn)行匹配,包括:
[0021 ]如果任一流表中包含多個流表項(xiàng),則按照該流表中多個流表項(xiàng)的優(yōu)先級將所述多個流表項(xiàng)依次與所述數(shù)據(jù)包進(jìn)行匹配。
[0022]優(yōu)選的,還包括:
[0023]如果所述Μ個第一流表中或者所述N個第二流表中不存在與所述數(shù)據(jù)包匹配的流表項(xiàng),則將所述數(shù)據(jù)包發(fā)送至控制器。
[0024]優(yōu)選的,預(yù)先設(shè)置所述Μ個第一流表項(xiàng)的過程包括:
[0025]獲取歷史上與所述特定虛擬機(jī)對應(yīng)的數(shù)據(jù)需被進(jìn)行的處理內(nèi)容,并依據(jù)該處理內(nèi)容確定Μ個第一流表。
[0026]一種數(shù)據(jù)包處理裝置,包括:
[0027]接收模塊,用于接收數(shù)據(jù)包;
[0028]匹配模塊,用于如果所述數(shù)據(jù)包是與特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包,則將所述數(shù)據(jù)包同時(shí)與Μ個第一流表中的流表項(xiàng)進(jìn)行匹配;
[0029]處理模塊,用于如果所述Μ個第一流表中存在與所述數(shù)據(jù)包匹配的任一流表項(xiàng),則確定該流表項(xiàng)為目標(biāo)流表項(xiàng),依據(jù)所述目標(biāo)流表項(xiàng)對所述數(shù)據(jù)包進(jìn)行處理,并將處理完成的數(shù)據(jù)包進(jìn)行輸出。
[0030]優(yōu)選的,還包括:
[0031]設(shè)置模塊,用于獲取歷史上與所述特定虛擬機(jī)對應(yīng)的數(shù)據(jù)需被進(jìn)行的處理內(nèi)容,并依據(jù)該處理內(nèi)容確定Μ個第一流表。
[0032]本發(fā)明提供的一種數(shù)據(jù)包處理方法及裝置,該方法包括:接收數(shù)據(jù)包;如果所述數(shù)據(jù)包是與特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包,則將所述數(shù)據(jù)包同時(shí)與Μ個第一流表中的流表項(xiàng)進(jìn)行匹配,如果所述Μ個第一流表中存在與所述數(shù)據(jù)包匹配的任一流表項(xiàng),則確定該流表項(xiàng)為目標(biāo)流表項(xiàng),依據(jù)所述目標(biāo)流表項(xiàng)對所述數(shù)據(jù)包進(jìn)行處理,并將處理完成的數(shù)據(jù)包進(jìn)行輸出。與現(xiàn)有技術(shù)相比,本申請中對于特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包,將其同時(shí)與Μ個第一流表中的流表項(xiàng)進(jìn)行匹配,并直接按照匹配成功的流表項(xiàng)對數(shù)據(jù)包進(jìn)行處理后輸出,從而避免了【背景技術(shù)】中提到的需要對數(shù)據(jù)包進(jìn)行多級跳轉(zhuǎn)處理的情況發(fā)生,從而大大減少了對于與特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包的處理時(shí)間,減小了數(shù)據(jù)包的處理時(shí)延。
【附圖說明】
[0033]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0034]圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理方法的第一種流程圖;
[0035]圖2為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理方法接收數(shù)據(jù)包之后的第二種流程圖;
[0036]圖3為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理方法的處理流程示意圖;
[0037]圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0038]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0039]請參閱圖1,其示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理方法的流程圖,可以包括以下步驟:
[0040]S11:接收數(shù)據(jù)包。
[0041]需要說明的是,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)包處理方法中每個步驟的主語均可以是OpenFlow交換機(jī)。其中,數(shù)據(jù)包是一種數(shù)據(jù)單位,其攜帶有數(shù)據(jù)。
[0042]S12:如果數(shù)據(jù)包是與特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包,則將數(shù)據(jù)包同時(shí)與Μ個第一流表中的流表項(xiàng)進(jìn)行匹配。
[0043]其中,本實(shí)施例中的特定虛擬機(jī)可以是對時(shí)延要求較為嚴(yán)苛的虛擬機(jī),對于特定虛擬機(jī),其需要在時(shí)延較小的情況下完成對數(shù)據(jù)包的處理。與特定虛擬機(jī)對應(yīng)的數(shù)據(jù)包可以是其他設(shè)備需要傳送至特定虛擬機(jī)的數(shù)據(jù)包,也可以是特定虛擬機(jī)需要傳送至其他虛擬機(jī)的數(shù)據(jù)包。
[0044]Μ的具體取值可以根據(jù)實(shí)際需要進(jìn)行確定,而對于流表項(xiàng)與數(shù)據(jù)包的匹配,具體可以是:數(shù)據(jù)包通常包括包頭,而流表項(xiàng)通常包括包頭域,包頭及包頭域均可以包括入端口、源MAC地址、目的MAC地址、以太網(wǎng)類型、VLAN ID、VLAN優(yōu)先級、源IP地址、目的IP地址、IP協(xié)議、IP T0S位、TCP/UDP源端口及TCP/UDP目的端口等,流表項(xiàng)的包頭域及數(shù)據(jù)包的包頭包含的上述一種或者多種參數(shù)的具體值相同時(shí),則說明流表項(xiàng)與數(shù)據(jù)包匹配。
[0045]如果數(shù)據(jù)包不是與特定虛擬機(jī)