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