本發明涉及信息
技術領域:
,并且具體地,涉及處理數據報文的方法、裝置及系統。
背景技術:
:開放流(OpenFlow)技術旨在基于現有TCP/IP技術條件,以創新的網絡互聯理念解決當前網絡面對新業務產生的瓶頸。其核心思想就是將原本完全由交換機/路由器控制的數據包轉發過程,轉化為由OpenFlow交換機(OpenFlowSwitch)和Openflow控制器(Controller)分別完成的獨立過程。因此OpenFlow網絡中的設備能夠分布部署、集中管控,使得網絡變為用戶可定義的形態。雖然在OpenFlow網絡中,用戶可以決定如何路由數據包或者如何進行訪問控制等,但是由于對分組數據報文的操作仍然是局限于現有具體協議格式,因此用戶只能針對規定的協議格式進行自定義操作。而目前OpenFlow規范中所能支持的協議格式是有限的,導致應用場景也很有限。如果為了實現新增的協議需求,則需要針對具體的新增協議對OpenFlow規范繼續擴展,這樣會造成擴展項變得復雜。技術實現要素:本發明實施例提供處理數據報文的方法、裝置及系統,能夠實現對數據報文靈活的自定義處理。第一方面,提供了一種處理數據報文的方法,包括:將數據報文與流表項的匹配域信息進行匹配;所述流表項包括所述匹配域信息和操作域信息;其中,所述操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定所述數據報文的第一比特域,或者,所述匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域;如果所述數據報文與所述匹配域信息匹配成功,則根據所述操作域信息,對所述數據報文進行操作。在第一方面的第一種可能實現的方式中,當所述操作域信息包括所述操作類型和所述第一比特域指示信息時,所述根據所述操作域信息,對所述數據報文進行操作,包括:根據所述第一比特域指示信息確定所述數據報文的第一比特域;根據所述操作類型,對所述第一比特域進行操作。結合第一方面,或第一方面的第一種可能實現的方式,在第二種可能實現的方式中,當所述匹配域信息包括所述第二比特域指示信息和所述匹配值時,所述將數據報文與流表項的匹配域信息進行匹配,包括:根據所述第二比特域指示信息,確定所述數據報文的第二比特域;根據所述匹配值,對所述第二比特域進行匹配。第二方面,提供了一種處理數據報文的裝置,包括:匹配單元,用于將數據報文與流表項的匹配域信息進行匹配;所述流表項包括所述匹配域信息和操作域信息;其中,所述操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定所述數據報文的第一比特域,或者,所述匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域;操作單元,用于如果所述數據報文與所述匹配域信息匹配成功,則根據所述操作域信息,對所述數據報文進行操作。在第二方面的第一種可能實現的方式中,當所述操作域信息包括所述操作類型和所述第一比特域指示信息時,所述操作單元具體用于,如果所述數據報文與所述匹配域信息匹配成功,則根據所述第一比特域指示信息確定所述數據報文的第一比特域,根據所述操作類型,對所述第一比特域進行操作。結合第二方面或者第二方面的第一種可能實現的方式,在第二方面的第二種可能實現的方式中,當所述匹配域信息包括所述第二比特域指示信息和所述匹配值時,所述匹配單元具體用于,根據所述第二比特域指示信息,確定所述數據報文的第二比特域;根據所述匹配值,對所述第二比特域進行匹配。第三方面,提供了一種處理數據報文的方法,包括:生成流表項添加指示消息,所述流表項添加指示信息包括匹配域信息和操作域信息;其中,所述操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定數據報文的第一比特域,或者,所述匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域;發送所述流表項添加指示消息至交換設備,以使所述交換設備根據所述流表項添加指示消息生成流表項,并根據所述流表項對所述數據報文進行處理。在第三方面的第一種可能實現的方式中,該方法還包括發送特性請求消息至所述交換設備,所述特性請求消息用于詢問是否支持所述匹配域信息或者所述操作域信息;接收所述交換設備發送的特性響應消息,所述特性響應消息用于指示支持所述匹配域信息或者所述操作域信息。第四方面,提供了一種處理數據報文的裝置,包括:生成單元,用于生成流表項添加指示消息,所述流表項添加指示信息包括匹配域信息和操作域信息;其中,所述操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定數據報文的第一比特域,或者,所述匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域;發送單元,用于發送所述流表項添加指示消息至交換設備,以使所述交換設備根據所述流表項添加指示消息生成流表項,并根據所述流表項對所述數據報文進行處理。在第四方面的第一種可能的實現方式中,所述發送單元,還用于發送特性請求消息至所述交換設備,所述特性請求消息用于詢問是否支持所述匹配域信息或者所述操作域信息;所述裝置還包括接收單元,用于接收所述交換設備發送的特性響應消息,所述特性響應消息用于指示支持所述匹配域信息或者所述操作域信息。第五方面,提供一種處理數據報文的系統,包括第二方面提供的處理數據報文的裝置和第四方面提供的處理數據報文的裝置。在上述方案中,通過根據偏移量和字段長度能夠靈活確定數據報文的特定比特域,并對該特定比特域進行匹配或者操作,因此能夠實現對數據報文靈活的自定義處理,從而使對數據報文的處理不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展,使對數據報文的處理更具通用性。附圖說明為了更清楚地說明本發明實施例的技術方案,下面將對本發明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1是可應用本發明實施例的網絡架構的一個例子的示意圖;圖2是根據本發明實施例的處理數據報文的方法的示意性流程圖;圖3是根據本發明實施例的處理數據報文的方法的示意性流程圖;圖4是根據本發明實施例的處理數據報文的方法的過程的示意性流程圖;圖5是根據本發明實施例的對數據報文進行匹配的過程的一個例子的示意圖;圖6是根據本發明實施例的處理數據報文的方法的過程的一個例子的示意性流程圖;圖7是根據本發明實施例的處理數據報文的方法的過程的另一例子的示意圖;圖8是根據本發明實施例的處理數據報文的方法的過程的另一例子的示意圖;圖9是根據本發明實施例的處理數據報文的方法的過程的另一例子的示意圖;圖10是根據本發明實施例的處理數據報文的方法的過程的另一例子的示意圖;圖11是根據本發明實施例的流表的布置方式的一個例子的示意圖;圖12是根據本發明一個實施例的處理數據報文的裝置的示意框圖;圖13是根據本發明另一實施例的處理數據報文的裝置的示意框圖;圖14是根據本發明另一實施例的處理數據報文的系統的示意框圖;圖15是根據本發明另一實施例的處理數據報文的裝置的一種硬件實現的結構示意圖;圖16是根據本發明另一實施例的處理數據報文的裝置的一種硬件實現的結構示意圖。具體實施方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明的一部分實施例,而不是全部實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都應屬于本發明保護的范圍。圖1是可應用本發明實施例的網絡架構的一個例子的示意圖。應注意,圖1的例子只是為了幫助本領域技術人員更好地理解本發明實施例,而非限制本發明實施例的范圍。在圖1中,以OpenFlow網絡的架構為例進行說明。如圖1所示,一個Openflow交換機包括一個或多個實現分組報文匹配和轉發功能的流表(Flowtable)以及一個連接外部Openflow控制器的安全通道(Securechannel)。Openflow交換機的安全通道與Openflow控制器之間通過Openflow協議消息進行交互,實現對交換機內部的流表操作。每個流表中包括一個或多個流表項(Flowentry)。Openflow控制器通過Openflow協議消息可以添加、更新或刪除流表中的流表項。每個流表項包括匹配域信息和對應的操作域信息,其中操作域信息也可稱為動作(Actions)域信息或者指令(Instructions)域信息。交換機從輸入端口接收到數據報文后從第一個流表開始進行匹配,然后跳轉到下一個流表繼續匹配。這種順次級聯的流表稱為流管線(Pipeline)。交換機將接收到的報文與流表中各流表項的匹配域信息進行比對,如果流表中存在與接收到的報文匹配的流表項,則執行流表項中操作域信息中對應的操作。流表項中的操作域包括兩類信息,第一類是將匹配的報文跳轉到下一個流表實現進一步處理,同時還可傳遞相應的元數據;第二類是實現對數據報文的修改和轉發到輸出端口。OpenFlow交換設備可以是支持OpenFlow技術的具有交換功能的設備,可以是OpenFlow交換機,本發明實施例對此不作限制。以下實施例中OpenFlow交換設備可簡稱交換設備。OpenFlow控制設備可以是支持OpenFlow技術的具有控制功能的設備,可以是OpenFlow控制器,本發明實施例對此不作限制。以下實施例中OpenFlow控制設備簡稱控制設備。應注意,本發明實施例中,雖然以OpenFlow網絡為例進行說明,但本發明實施例還可以應用于其它類似于OpenFlow網絡的控制面與轉發面分離的網絡架構中。本發明實施例對此不作限定。圖2是根據本發明實施例的處理數據報文的方法的示意性流程圖。圖2的方法由交換設備執行,例如,支持OpenFlow技術的交換機。210,將數據報文與流表項的匹配域信息進行匹配。所述流表項包括所述匹配域信息和操作域信息。可選地,所述操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定所述數據報文的第一比特域。當所述操作域信息包括第一比特域指示信息的時候,可以根據第一比特域指示信息的第一偏移量確定數據報文的某個特定比特域在該數據報文中的起始位置,根據第一字段長度可以確定該特定比特域的長度,從而可以獲取該特定比特域,進而可以根據操作類型,對該特定比特域進行相應的操作。因此能夠自由獲取數據報文中的特定比特域進行相應的操作,而不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展。可選地,第一比特域指示信息還包括第一掩碼,在根據第一偏移量和第一字段長度獲得該特定比特域后,還可以根據第一掩碼,獲得該比特域中一個或多個比特位,即該比特域中至少一個比特位,進而可以根據操作類型,對獲得的一個或多個比特位進行相應的操作。因此,可以在自由獲取數據報文的特定比特域的基礎上,自由獲取該特定比特域中一個或多個特定的比特位進行相應的操作,增加了對數據報文自定義處理的自由度和通用性。可選地,所述匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域。如果第二比特域的取值與匹配值相等,則第二比特域與匹配值匹配成功,也就是數據報文與流表項匹配成功。匹配值與第二比特域指示信息是相對應的。當所述匹配域信息包括所述第二比特域指示信息的時候,可以根據第二偏移量確定數據報文的某個特定比特域在所述數據報文的起始位置,根據第二字段長度,可以確定該特定比特域的長度,從而可以獲取該特定比特域,進而根據匹配值,對該比特域進行匹配。因此能夠自由獲取數據報文中的特定比特域進行匹配,而不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展。可選地,第二比特域指示信息還包括第二掩碼,在根據第二偏移量和第二字段長度獲得該特定比特域后,還可以根據第二掩碼,獲得該比特域中一個或多個比特位,即該比特域中至少一個比特位,進而可以根據匹配值,對獲得的一個或多個比特位進行匹配。因此,可以在自由獲取數據報文的特定比特域的基礎上,自由獲取該特定比特域中一個或多個特定的比特位進行匹配,增加了對數據報文自定義處理的自由度和通用性。應注意,本發明實施例中,數據報文可以是指分組數據報文。220,如果所述數據報文與所述匹配域信息匹配成功,則根據所述操作域信息,對所述數據報文進行操作。可選地,當所述操作域信息包括所述操作類型和所述第一比特域指示信息時,所述根據所述操作域信息,對所述數據報文進行操作,可以包括:根據所述第一比特域指示信息確定所述數據報文的第一比特域,根據所述操作類型,對所述第一比特域進行操作。可選地,當所述第一比特域指示信息還包括第一掩碼時,對所述數據報文進行操作,可以包括:根據所述第一比特域指示信息確定所述數據報文的第一比特域,根據所述第一掩碼,獲得所述第一比特域的至少一個比特位,根據所述操作類型,對所述第一比特域的至少一個比特位進行操作。可選地,當所述操作域信息包括所述操作類型和所述第一比特域指示信息時,若所述操作域信息還包括操作數時,所述根據所述操作類型,對所述第一比特域進行操作,可以包括:根據所述操作類型,對所述第一比特域和所述操作數進行操作。類似的,所述根據所述操作類型,對所述第一比特域的至少一個比特位進行操作,可以包括:根據所述操作類型,對所述第一比特域的至少一個比特位和所述操作數進行操作。本發明實施例中,交換設備可以具有轉發面功能,不具有控制面功能。控制面功能可以由外部的控制設備完成。這樣,控制設備可以解析協議格式的上下文信息以及數據報文的協議格式,并將對數據報文的處理映射為流表項中的匹配域信息和/或操作域信息,使得轉發面的處理與具體協議格式無關。本發明實施例中,由于流表項中的操作域信息包括第一比特域指示信息,而第一比特域指示信息包括第一偏移量和第一字段長度,因此交換設備根據第一比特域指示信息可以任意地確定數據報文中的第一比特域,并對第一比特域進行操作,而無需解析數據報文的具體協議格式。同理,交換設備根據第二比特域指示信息可以任意地確定數據報文中的第二比特域,并對第二比特域進行匹配,而無需解析數據報文的具體協議格式。此外,即使該數據報文的協議格式在現有規范中并不存在,交換設備也無需針對數據報文的具體協議格式在現有規范中進行擴展,因此能夠實現用戶靈活的自定義的流操作,并能夠避免對于不斷出現的新增協議需要進行的標準化擴展。因此本發明實施例中對數據報文的處理方法更為通用,應用場景也更為廣泛。相比較而言,由于現有OpenFlow規范中支持的協議格式的種類是有限的,如果需要對新增的協議格式的數據報文進行處理,則只能針對該新增的協議格式對現有規范繼續擴展,造成了擴展項的臃腫。本發明實施例中,通過采用偏移量和字段長度能夠實現對數據報文特定比特域的靈活定位,實現對數據報文靈活的自定義處理,從而使對數據報文的處理不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展,使對數據報文的處理更具通用性。另外,當匹配域信息為現有OpenFlow技術定義的內容時,在步驟210中,交換設備對數據報文與流表項的匹配域信息進行匹配,還可以按照現有技術中交換設備對數據報文與流表項的匹配域信息進行匹配的過程執行。本發明實施例對此不作限定。另外,當操作域信息為現有OpenFlow技術定義的內容時,在步驟220中,交換設備根據操作域信息,對數據報文進行操作,還可以按照現有技術中交換設備對數據報文根據操作域信息對數據報文進行操作的過程執行。本發明實施例對此不作限定。應注意,本發明實施例中,上述的偏移量(Offset)可以是從交換設備的輸入端口接收到的分組幀起始位置算起,單位可以是8位字節(byte)。上述的字段長度可以表示偏移量之后連續字段的字節數。偏移量和字段長度可以共同指定數據報文中一個長度確定的連續的字節段。上述的掩碼(Mask)可以表示由偏移量和字段長度共同指定的字段內的比特掩碼。掩碼的長度可以與字段長度相同。可選地,作為另一實施例,上述操作類型可以包括彈出操作類型、壓入操作類型、設置操作類型、長度計算操作類型、校驗和計算操作類型、校驗和驗證操作類型、遞增操作類型、遞減操作類型或復制操作類型。可選地,作為另一實施例,在步驟210之前,交換設備可以接收控制設備發送的流表項添加指示消息,流表項添加指示消息可以包括匹配域信息和操作域信息。交換設備可以根據接收到的匹配域信息和操作域信息,生成流表項。本領域普通技術人員應知,流表項也可以預先配置在交換設備上。可選地,作為另一實施例,在步驟210之前,交換設備可以接收控制設備發送的流表項修改指示消息,流表項修改指示消息可以包括匹配域信息和新的操作域信息。交換設備可以根據匹配域信息和新的操作域信息,對流表項進行修改。可選地,作為另一實施例,在步驟210之前,交換設備可以接收控制設備發送的特性請求消息,特性請求消息可以用于詢問交換設備是否支持通用流處理能力,即是否支持上述的匹配域信息或者上述的操作域信息。交換設備可以向控制設備發送特性響應消息,特性響應消息可以用于指示支持通用流處理能力,即支持上述的匹配域信息或者上述的操作域信息。應注意,本發明實施例中,“通用流處理”可以是指交換設備對數據報文的處理不局限于數據報文的具體協議格式,也就是說,交換設備無需解析數據報文的具體協議相關的上下文信息和數據報文的格式,就可以完成對數據報文的處理。可選地,作為另一實施例,上述流表項與現有技術中的流表項可以共存于同一個流表中。或者上述流表項可以單獨存放于一個流表中。作為一種可選的實現方式,上述流表項可以是對現有流表項的擴展,例如可以在現有的普通流表的流表項中增加上述操作域信息和/或匹配域信息。上述流表項也可以在交換設備中新增加的流表中單獨存放。本發明實施例中,為了區別于其它現有的普通流表,該新增加的流表可以稱為通用流表(GenericFlowTable)。通用流表可以穿插在現有的流管線(FlowPipeline)中,流管線中的其它普通流表可以跳轉到通用流表,通用流表也可以跳轉回流管線中的其它普通流表。圖3是根據本發明實施例的處理數據報文的方法的示意性流程圖。圖3的方法由控制設備執行,例如,支持OpenFlow技術的控制器。310,生成流表項添加指示消息其中,流表項添加指示信息包括匹配域信息和操作域信息。可選地,操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定數據報文的第一比特域。示例性的,操作域信息還可以包括操作數。示例性的,第一比特域指示信息還可以包括第一掩碼。示例性的,所述操作類型包括彈出操作類型、壓入操作類型、設置操作類型、長度計算操作類型、校驗和計算操作類型、校驗和驗證操作類型、遞增操作類型、遞減操作類型或復制操作類型。可選地,所述匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域。示例性的,第二比特域指示信息還可以包括第二掩碼。320,發送該流表項添加指示消息至交換設備。當交換設備收到該流表項添加指示信息后,可以根據該流表項添加指示消息,即根據該流表項添加指示消息攜帶的匹配域信息和操作域信息來生成流表項,并根據生成后的流表項對數據報文進行處理。可選地,若需要更新交換設備中的流表項,在步驟310中,控制設備可以生成流表項修改指示消息,該流表項修改指示消息也包括上述匹配域信息和操作域信息。相應地,在步驟320中,控制設備可以發送生成的流表項修改指示消息至交換設備。交換設備在收到該流表項修改指示消息后,可以根據該流表項修改指示消息中的匹配域信息,找到對應的流表項,然后將該對應的流表項的操作域信息修改為攜帶在該流表項修改指示消息中的操作域信息,這樣交換設備可以根據更新后的流表項對數據報文進行處理。可選地,當操作域信息包括操作類型和第一比特域指示信息,或者匹配域信息包括第二比特域指示信息和匹配值時,控制設備可以發送特性請求消息至交換設備,該特性請求消息用以詢問交換設備是否支持所述比特域指示信息或者所述匹配域信息。對應地,在發送特性請求消息至交換設備后,控制設備接收交換設備返回的特性響應消息,該特性響應消息可以指示支持所述匹配域信息或者所述操作域信息,也可以指示不支持所述匹配域信息或者所述操作域信息。通過詢問交換設備是否支持所述匹配域信息或者所述操作域信息,可以避免發送所述匹配域信息或者所述操作域信息至不支持所述匹配域信息或者操作域信息的交換設備,以使所述交換設備錯誤添加或者更新流表項,從而導致不能正確使用流表項處理數據報文。本發明實施例中,通過將攜帶偏移量和字段長度的比特域指示信息發送至交換設備,能夠實現對數據報文特定比特域的靈活定位,實現對數據報文靈活的自定義處理,從而使對數據報文的處理不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展,使對數據報文的處理更具通用性。下面將結合具體例子詳細描述本發明實施例。應注意,這些例子只是為了幫助本領域技術人員更好地理解本發明實施例,而非限制本發明實施例的范圍。本領域技術人員根據所給出的這些例子,顯然可以進行各種等價的修改或變化,這樣的修改或變化也落入本發明實施例的范圍內。圖4是根據本發明實施例的處理數據報文的方法的過程的示意性流程圖。在圖4中,交換設備為交換機,控制設備為控制器。交換機和控制器之間可以進行通信,例如,交換機和控制器之間可以建立傳輸層安全通道(TransportLayerSecurity,TLS),通過TLS進行會話。此外,在圖4中,網絡應用層(NetworkApplication,NetworkApp)與控制器可以集成在一個物理實體中,也可以是分開的,本發明實施例對此不作限定。401,控制器向交換機發送特性請求消息,特性請求消息用于詢問交換機是否支持通用流處理能力。402,交換機向控制器發送特性響應消息,特性響應消息用于指示交換機支持通用流處理能力。本發明實施例所述的是否支持通用流處理能力,是指是否支持通過偏移量和字段長度來定位特定比特域的能力。該能力具體的表現可以有多種形式,例如是否能夠支持如圖2所示實施例中的第一比特域指示信息或者第二比特域指示信息的處理,或者例如是否支持包含第一比特域指示信息的操作域信息或者包含第二比特域指示信息的匹配域信息,本發明實施例對此不作限定。例如,交換機可以在特性響應消息中攜帶通用流處理能力標志位,通過標志位向控制器通知是否支持通用流處理能力。403,網絡應用層向控制器發送流表項添加或修改指示消息,該流表項添加或修改指示消息用于指示需要對交換機中的流表項執行的操作。例如,網絡應用層可以根據業務邏輯,將對交換機的操作映射為對流表項的操作。對流表項的操作可以包括添加流表項或修改流表項等。例如,網絡應用層可以向控制器發送流表項添加指示消息,也可以調用修改流表API(ApplicationProgrammingInterface,應用程序編程接口),流表項添加指示消息中可以攜帶匹配域信息和操作域信息。網絡應用層可以向控制器發送流表項修改指示消息,流表項修改指示消息中可以攜帶匹配域信息和新的操作域信息。此外,網絡應用層也可以通過流表項刪除指示消息指示刪除流表項。404,控制器向交換機發送流表項添加或修改指示消息。流表項添加指示消息中可以攜帶網絡應用層下發的匹配域信息和操作域信息。流表項修改指示消息中可以攜帶網絡應用層下發的匹配域信息和新的操作域信息。此外,控制器也可以根據網絡應用層下發的流表項刪除指示消息,向交換機發送流表項刪除指示消息。405,交換機根據控制器發送的流表項添加或修改指示消息,對流表項進行操作。例如,交換機可以根據流表項添加指示消息中攜帶的匹配域信息和操作域信息,生成流表項。交換機也可以根據流表項修改指示消息中攜帶的匹配域信息和新的操作域信息,對流表項進行操作。例如,可以將與流表項修改指示消息中攜帶的匹配域信息對應的流表項中的操作域信息更新為新的操作域信息。406,交換機向控制器發送流表項添加或修改響應消息。交換機通過流表項添加或修改響應消息向控制器通知已完成對流表項的操作。407,控制器向網絡應用層發送流表項添加或修改響應消息。控制器通過流表項添加或修改響應消息向網絡應用層通知交換機已完成對流表項的操作。401~407示例性的介紹了控制器對于交換機上流表項的添加、更新的操作的方法。其中,控制器發送流表項添加或修改指示消息也可以由其他條件觸發,本發明實施例對此不作限定。下面將介紹交換機如何根據流表項對數據報文進行處理。408,交換機從其它外部網元接收數據報文。409,交換機將數據報文與流表項進行匹配。上述流表項可以包括匹配域信息,匹配域信息可以包括第二比特域指示信息和匹配值,第二比特域指示信息可以包括第二偏移量和第二字段長度,第二比特域指示信息可以用于指定數據報文的第二比特域。交換機可以根據第二比特域指示信息,確定數據報文中的第二比特域。例如,交換機可以根據第二偏移量和第二字段長度,確定第二比特域。此外,第二比特域指示信息還可包括第二掩碼。那么交換機還可以根據第二偏移量、第二字段長度和第二掩碼,確定第二比特域中特定的比特位。為了表述方便,下面將第二比特域中的特定的比特位,也統稱為第二比特域。在確定第二比特域之后,交換機可以根據匹配值對第二比特域進行匹配。具體地,如果第二比特域的取值與匹配值相等,則第二比特域與匹配值匹配成功,也就是數據報文與流表項匹配成功。匹配域中,匹配值與第二比特域指示信息是相對應的。在上述的匹配過程中,交換機無需解析數據報文的協議格式,就能夠執行對數據報文與流表項的匹配。因此上述的匹配域信息也可以稱為通用匹配域(GenericMatchField)信息。圖5是根據本發明實施例的對數據報文進行匹配的過程的一個例子的示意圖。下面將結合具體的例子詳細描述匹配域信息。應注意,這些例子只是為了幫助本領域技術人員更好地理解本發明實施例,而非限制本發明實施例的范圍。本實施例借用現有OpenFlow協議中的匹配域信息格式定義本發明提出的通用匹配域信息。現有OpenFlow匹配域信息的內容可采用OXM(OpenFlowExtensibleMatch)TLV(Type-Length-Value,類型-長度-內容)結構體進行描述。每個OXMTLV可以是5-259字節長,頭部可以占4字節。OXMTLV結構體的頭部格式的一個例子見表1。表1OXMTLV結構體舉例OXM_TYPE中的OXM_CLASS和OXM_FIELD,表示流表項中的匹配域信息對應的匹配項名稱,如以太網目的地址(ETH_DST)。OXM_VALUE為OXM內容,記錄OXM_TYPE對應的匹配值。OXM_TYPE中的OXM_HASMASK表明確定的第二比特域是否需要進一步通過掩碼匹配OXM_VALUE內的部分比特位。如果OXM_HASMASK=0,則表明OXM_VALUE所有比特位作為匹配值使用;如果OXM_HASMASK=1,則表明OXM_VALUE中對應掩碼部分的比特位作為匹配值使用,并且OXM_VALUE后面緊跟與其值等字節長度的掩碼的值。本發明實施例中,匹配域信息也可以采用OXM結構體的格式,為了區別于現有OpenFlow規范中的OXM,將本發明實施例的匹配域信息采用的OXM結構體稱為通用OXM結構體。其中在OXM_CLASS中可以引入新定義的成員類,比如OFPXMC_HW_0,表明該擴展由某個ONF(OpenNetworkingFoundation,開放網絡基金)成員定義。在OXM_FIELD中引入新的匹配的域的類型,比如OXM_OF_GENERIC_FIELD,表明該OXM為通用匹配類型。OXM_VALUE不再是一個單純的數值,而是包括第二偏移量、第二字段長度、第二掩碼和匹配值。在下面的表2中,以Offset、Size、Mask和Data分別表示第二偏移量、第二字段長度、第二掩碼和匹配值。這4個參數可以是按規定的順序排列,也可將每個參數定義為一個獨立的子TLV結構,其中Type為參數類型,比如為第二偏移量、第二字段長度、第二掩碼或匹配值。Length表示參數字節長度,Value表示參數具體數值。另外,如果需要匹配多個比特域,則可以在流表項中添加多個通用OXM。表2匹配域信息的格式的一個例子下面以匹配數據報文中IP(InternetProtocol,網絡協議)目的地址(DestinationAddress,DA)為例,說明如何使用本發明實施例定義的通用OXM來描述一個匹配的比特域。如表3的左側所示,左側為采用OpenFlow標準OXM描述的用于匹配IP目的地址的匹配域信息,OXM_CLASS表明以下OXM為OpenFlow標準協議定義,OXM_FIELD指定當前匹配的比特域的類別為IPv4目的地址,OXM_HASMASK為1表明需要掩碼,VALUE為具體的經過掩碼后的IPv4地址數值。表3的右側為采用本發明實施例中定義的通用OXM描述的匹配IP目的地址的方式。其中,OXM_CLASS表明OXM為ONF組織成員擴展定義,OXM_FIELD標識為通用匹配域類別,OXM_HASMASK為0表明不需要掩碼,Value為采用第二偏移量、第二字段長度、第二掩碼和匹配值描述的IPv4目的地址在數據報文中的位置和數值大小。從表3可以看出,本發明實施例中的匹配域信息更為通用。表3OpenFlow協議中的匹配域信息與本發明實施例的匹配域信息的比較此外,交換機將數據報文與流表項進行匹配的過程,還可以按照現有技術中交換機對數據報文與流表項進行匹配的過程執行。本發明實施例對此不作限定。410,如果數據報文與流表項匹配成功,則交換機根據流表項對數據報文進行操作。流表項可以包括操作域信息,操作域信息可以包括操作類型和第一比特域指示信息,第一比特域指示信息可以包括第一偏移量和第一字段長度,第一比特域指示信息可以用于指定數據報文的第一比特域。具體地,如果數據報文與流表項匹配成功,則交換機可以根據第一比特域指示信息,確定數據報文中的第一比特域。例如,交換機可以根據第一偏移量和第一字段長度,確定第一比特域。此外,第一比特域指示信息還可以包括第一掩碼。這樣,交換機還可以根據第一偏移量、第一字段長度和第一掩碼,確定第一比特域的特定比特位。為了表述方便,下面將第一比特域的特定比特位也統稱為第一比特域。在確定第一比特域后,交換機可以根據操作類型,對數據報文中的第一比特域進行操作。具體地,操作域中還可以包括操作類型對應的操作數。這樣,交換機可以根據操作類型,對數據報文的第一比特域和操作數進行操作。可選地,操作類型可以包括彈出操作類型、壓入操作類型、設置操作類型、長度計算操作類型、校驗和計算操作類型、校驗和驗證操作類型、遞增操作類型、遞減操作類型或復制操作類型。應注意,本發明實施例中的操作類型并不限于上述列舉的操作類型,還可以包括其它操作類型,本發明實施例對此不作限定。上述列舉的操作類型的具體表示方式和描述可以參見表4。在表4中,第一偏移量可以包括Top-offset和/或Bottom-offset。其中,Top-Offset可以是從交換機的輸入端口接收到的分組幀的起始位置算起,Bottom-Offset可以是從分組幀的末尾位置算起。Top-Offset和Bottom-Offset可以共同指定一個連續的字節段。此外,在表4中,以Size表示第一字段長度,第一字段長度可以包括Size1和Size2。以Data或Step表示操作數,以Mask表示第一掩碼。表4操作域信息中操作類型與相應的第一比特域指示信息的表示方式和描述上述的操作域信息也可以采用TLV結構。上述的操作類型的類型(TYPE)的定義的一個例子可參照表5。表5操作域信息中操作類型的類型值的一個例子下面參照表6至表14描述上面的各個操作類型以及各操作類型對應的第一比特域指示信息的結構體的例子。表6彈出操作類型與相應的第一比特域指示信息的結構體的例子表7壓入操作類型與相應的第一比特域指示信息的結構體的例子表8設置操作類型與相應的第一比特域指示信息的結構體的例子表9長度計算操作類型與相應的第一比特域指示信息的結構體的例子表10校驗和計算操作類型與相應的第一比特域指示信息的結構體的例子表11校驗和驗證操作類型與相應的第一比特域指示信息的結構體的例子表12遞增操作類型與相應的第一比特域指示信息的結構體的例子表13遞減操作類型與相應的第一比特域指示信息的結構體的例子表14復制操作類型與相應的第一比特域指示信息的結構體的例子應理解,上述表6至表14中,第一偏移量可以包括Top-offset和/或Bottom-offset,也可以包括Top-offset1、Top-offset2和Bottom-offset1。此外,以Size表示第一字段長度,第一字段長度可以包括Size1和Size2。Data或Step表示操作數,Mask表示第一掩碼。表6至表14中,操作類型及相應的第一比特域指示信息的結構體中的Value部分涉及的每種參數(如Top-offset、Bottom-offset、Size、Mask、Data、Step)也可以采用單獨的TLV結構體描述,其中Type為參數類型,比如Offset、Size、Mask、Data或Step,Length為參數字節長度,Value為參數具體數值。應注意,上面的表4至表14的例子只是為了幫助本領域技術人員更好地理解本發明實施例,而非限制本發明實施例的范圍。本領域技術人員根據所給出的這些例子,顯然可以進行各種等價的修改或變化,這樣的修改或變化也落入本發明實施例的范圍內。在上述的操作過程中,交換機無需解析數據報文的協議格式,就能夠執行對數據報文的操作。因此上述的操作域信息也可以稱為通用操作域(GenericActionField)信息。此外,在步驟410中,交換機對數據報文的操作也可以按照現有技術中的操作方式進行操作,本發明實施例對此不作限定。還應注意,在圖4中,步驟401至402以及步驟403至407不是在每次進行數據報文處理前都需要執行,例如,可以在開機時執行一次,或者步驟403至407在需要對流表項配置時執行。這樣在后續的數據報文處理過程中,就不需要執行步驟401至402或者步驟403至407。這樣,交換機在接收到數據報文后,可以直接執行步驟409和410。應理解,上述各過程的序號的大小并不意味著執行順序的先后,各過程的執行順序應以其功能和內在邏輯確定,而不應對本發明實施例的實施過程構成任何限定。本發明實施例中,通過根據操作域信息中包括第一偏移量和第一字段長度的第一比特域指示信息確定數據報文的第一比特域,并根據操作域信息中的操作類型對第一比特域進行操作,使得對數據報文的操作不再局限于特定的協議格式,從而能夠避免對于新增協議需要進行的標準化擴展,因此能夠實現用戶完全自定義的流操作。此外,本發明實施例中,通過根據匹配域信息中包括第二偏移量和第二字段長度的第二比特域指示信息確定數據報文的第二比特域,并根據匹配值對第二比特域進行匹配,使得對數據報文的匹配不再局限于特定的協議格式,從而能夠避免對于新增協議需要進行的標準化擴展,因此能夠實現用戶完全自定義的流操作。現有OpenFlow規范中的協議格式的種類有限,導致應用場景也有限。例如,現有OpenFlow規范并不支持豐富的隧道封裝和解封裝的處理。目前只能處理VLAN(VirtualLocalAreaNetwork,虛擬局域網)、MPLS(Multi-ProtocolLabelSwitching,多協議標簽交換)的彈出(pop)和壓入(push)操作,而對于PPPoE,L3隧道封裝和解封裝缺乏必要的處理機制。下面將以GTP(GPRS(GeneralPacketRadioService,通用分組無線服務)TunnelingProtocol,GPRS隧道協議)協議為例,詳細說明基于本發明實施例的方法建立GTP隧道的過程。應注意,圖6至圖10的例子只是為了幫助本領域技術人員更好地理解本發明實施例,而非限制本發明實施例的范圍。圖6是根據本發明實施例的處理數據報文的方法的過程的一個例子的示意性流程圖。示例性的,這里的控制設備為控制器,交換設備為交換機。601,控制器接收GTP-C(GTP-Control)請求消息。例如,控制器接收建立會話請求(CreateSessionRequest)消息。該消息可以來自其他外部網元,也可能來自本網元其他邏輯實體。本發明實施例對此不作限定。602,控制器建立GTP會話信息。例如,控制器可以建立GTP-U用戶面上下文信息,比如可以包括用戶ID)、承載TEID(TunnelEndpointIdentifier,隧道端點標識)、QoS(QualityofService,服務質量)參數或計費參數等。603,控制器返回GTP-C建立響應消息。604,控制器將GTP會話上下文信息映射為交換機中流表項的匹配域信息和操作域信息。可選地,匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域。其中,第二比特域指示信息還可以包括第二掩碼。可選地,操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定所述數據報文的第一比特域。其中,第二比特域指示信息還可以包括第一掩碼。匹配域信息和操作域信息的舉例可以參考圖2或者圖4中的描述,此處不作贅述。605,控制器向交換機發送流表項添加指示消息,該流表項添加指示消息攜帶匹配域信息和操作域信息。606,交換機根據流表項添加指示消息攜帶的匹配域信息和操作域信息,生成流表項。607,交換機向控制器發送流表項添加響應消息。608,交換機從其它外部網元接收上行GTP-U數據報文。交換機可以從其它外部網元接收上行GTP-U數據報文。609,交換機根據流表項的匹配域信息對步驟608中的數據報文進行匹配,在匹配成功后,根據操作域信息對數據報文執行GTP-U解封裝操作。610,交換機將步驟609中解封裝得到的IP數據報文進行轉發。611,交換機從其它網元接收下行IP數據報文。612,交換機根據流表項中的匹配域信息和操作域信息,對數據報文執行GTP-U封裝操作。613,交換機將步驟612中封裝得到的GTP-U數據報文進行操作。本實施例中,根據匹配域信息對數據報文的匹配,以及根據操作域信息對數據報文進行處理的示例,請參見圖2或者圖4中的描述,此處不作贅述。在圖6中,在GTP-C信令階段,控制器根據GTP-C請求消息建立GTP會話上下文信息,并將后續GTP-U的解封裝或封裝操作映射為流表項的匹配域信息和操作域信息。交換機根據匹配域信息和操作域信息生成流表項,就可以對后續的GTP-U數據報文通過第一比特域指示信息或者第二比特域指示信息確定對應的比特域,直接進行處理和轉發,而不必對數據報文的協議格式進行解析。本發明實施例中,通過根據控制器發送的匹配域信息和操作域信息生成流表項,使得交換機可以對GTP-U數據報文直接進行隧道封裝或解封裝處理,而無需對數據報文的協議格式進行解析,能夠實現用戶靈活的自定義的流操作。圖7是根據本發明實施例的處理數據報文的方法的過程的另一例子的示意圖。示例性的,本實施例中的交換設備為交換機,控制設備為控制器。701,交換機從其它網元接收首個上行GTP-U數據報文。此處假設交換機之前沒有接收過上行GTP-U數據報文。702,交換機通過PKT-IN(Packet-in,數據報文輸入)消息向控制器發送步驟701中的首個上行GTP-U數據報文。由于初始時交換機中沒有建立處理該數據報文相應的流表項,交換機可以通過PKT-IN消息將首個上行GTP-U數據報文轉發給控制器。703,控制器對首個上行GTP-U數據報文進行解析,確定需要對該數據報文進行GTP解封裝操作,則將解封裝處理映射為流表項的匹配域信息和操作域信息。704,控制器向交換機發送流表項添加指示消息,該流表項添加指示消息攜帶步驟703的匹配域信息和操作域信息。可選地,匹配域信息包括包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域。其中,第二比特域指示信息還可以包括第二掩碼。可選地,操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定所述數據報文的第一比特域。其中,第二比特域指示信息還可以包括第一掩碼。匹配域信息和操作域信息的舉例可以參考圖2或者圖4中的描述,此處不作贅述。705,交換機根據步驟704的匹配域信息和操作域信息,生成流表項。706,交換機向控制器發送流表項添加響應消息。707,控制器通過PKT-OUT(Packet-out,數據報文輸出)消息向交換機返回首個上行GTP-U數據報文。708,交換機根據流表項的匹配域信息對首個上行GTP-U數據報文進行匹配,在匹配成功后,根據操作域信息對首個上行GTP-U數據報文進行解封裝操作。709,交換機將解封裝得到的首個上行IP數據報文進行轉發。710,交換機從其它網友接收后續的上行GTP-U數據報文。711,交換機根據流表項的匹配域信息對后續的上行GTP-U數據報文進行匹配,在匹配成功后,根據操作域信息對后續的上行GTP-U數據報文進行解封裝操作。712,交換機將解封裝得到的后續的IP數據報文進行轉發。713,交換機從其它外部網元接收首個下行IP數據報文。714,交換機通過PKT-IN(Packet-in)消息向控制器發送步驟713中的首個下行IP數據報文。由于初始時交換機中沒有建立對該數據報文處理的相應的流表項,交換機可以通過PKT-IN消息將首個下行IP數據報文轉發給控制器。715,控制器對首個IP數據報文進行解析,確定需要對該數據報文進行GTP-U封裝處理,將封裝處理映射為流表項的匹配域信息和操作域信息。716,控制器向交換機發送流表項添加指示消息,該流表項添加指示消息攜帶匹配域信息和操作域信息。717,交換機根據流表項的匹配域信息和操作域信息,生成流表項。718,交換機向控制器發送流表項添加響應消息。719,控制器通過PKT-OUT消息向交換機返回首個下行IP數據報文。720,交換機根據流表項的匹配域信息對首個下行IP數據報文進行匹配,在匹配成功后,根據操作域信息對首個下行IP數據報文進行封裝操作。721,交換機對封裝得到的首個GTP-U數據報文進行轉發。722,交換機從其它外部網元接收后續的下行IP數據報文。723,交換機根據流表項的匹配域信息對后續的下行IP數據報文進行匹配,在匹配成功后,根據操作域信息對后續的下行IP數據報文進行封裝操作。724,交換機對封裝得到的后續的下行GTP-U數據報文進行轉發。本實施例中,根據匹配域信息對數據報文的匹配,以及根據操作域信息對數據報文進行處理的示例,請參見圖2或者圖4中的描述,此處不作贅述。在圖7中,在GTP-C信令階段不進行流表項的建立。在有GTP-U數據報文到達時,首個數據報文先轉發到控制器,由控制器解析數據報文,并將GTP-U解封裝或封裝處理映射為流表項的匹配域信息和操作域信息。交換機根據匹配域信息和操作域信息生成流表項,就可以根據第一比特域指示信息或者第二比特域指示信息直接確定后續的GTP-U數據報文的特定比特域,并進行處理和轉發,無需進行數據報文的協議格式的解析。本發明實施例中,通過根據控制器發送的匹配域信息和操作域信息生成流表項,使得交換機可以對GTP-U數據報文直接進行隧道封裝或解封裝處理,而無需對數據報文的協議格式進行解析,能夠實現用戶靈活的自定義的對數據報文的處理。圖8是根據本發明實施例的處理數據報文的方法的過程的另一例子的示意圖。示例性的,本實施例中的交換設備為交換機,控制設備為控制器。在圖8中,以GTP協議為例,描述在交換機建立了流表項后,當交換機收到IP數據報文后如何根據流表項進行GTP隧道封裝處理。其中,匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域。交換機可以對由匹配域信息中的第二比特域指示信息確定的、與IP源地址(SourceAddress,SA)對應的第二比特域進行匹配,即交換機根據指示IPSA的OXM中的第二比特域指示信息,確定IP數據報文中的IPSA所在的比特域,并比較該比特域的值是否與OXM中的匹配值相等。如果該比特域的值與OXM中的匹配值相等,則匹配成功后,交換機可以執行流表項中的操作域信息中的操作類型。控制設備經過之前的GTP會話建立操作或對首個GTP-U數據報文的解析,可以確定需要對該數據報文進行GTP封裝。交換機已經根據之前的控制器發送的流表項添加指示消息,建立了流表項。流表項中的操作域信息可以包括封裝處理對應的多組操作類型及操作類型對應的第一比特域指示信息,其中GTP封裝頭可以包括外部IP頭、UDP(UserDatagramProtocol,用戶數據報協議)頭和GTP頭,外部IP頭為隧道的源端點地址和目的端點地址,GTP封裝頭中還可以包括分配的TEID。封裝處理可以包括以下幾組操作類型和操作類型對應的第一比特域指示信息:(1)根據遞減操作類型以及對應的第一比特域指示信息,即Decrement(Top-offset,Size,Mask,Step),對IP數據報文中TTL(TimeToLive,生存時間)對應的比特域進行減1操作。(2)根據校驗計算操作類型以及對應的第一比特域指示信息,即Calculate-Checksum(Top-offset1,Bottom-offset1,Top-offset2,Size2),更新內層IP數據報文頭的校驗和。(3)根據壓入操作類型以及對應的第一比特域指示信息,即push(Top-offset,Size,Data),使用IP-UDP-GTP頭對IP數據報文進行封裝。(4)根據3次長度計算操作類型以及對應的第一比特域指示信息,即3次Calculate-Length(Top-offset1,Bottom-offset1,Top-offset2,Size2),分別更新GTP、UDP和外部IP頭中對應的Length(長度)字段的長度。(5)根據2次校驗計算操作類型以及對應的第一比特域指示信息,即2次Calculate-Checksum(Top-offset1,Size1/Bottom-offset1,Top-offset2,Size2),分別更新UDP和外部IP頭中對應的checksum(校驗和)字段的數值。本發明實施例中,通過根據控制器發送的匹配域信息和操作域信息生成流表項,使得交換機可以對GTP-U數據報文直接確定特定的比特域并進行處理,而無需對數據報文的協議格式進行解析,能夠實現用戶靈活的自定義的對數據報文的處理。圖9是根據本發明實施例的處理數據報文的方法的過程的另一例子的示意圖。本實施例中,交換設備為交換機,控制設備為控制器。圖9中,以GTP協議為例,描述在交換機建立了流表項后,當交換機收到GTP-U數據報文后如何按照流表項進行GTP隧道解封裝處理。該流表項的匹配域中包含兩組第二比特域指示信息及匹配值。交換機可以對由匹配域中的第一組中的第二比特域指示信息確定的、與IPDA對應的比特域進行匹配,并對由匹配域中的第二組中的第二比特域指示信息確定的、與UDP端口號2152對應的比特域進行匹配。即交換機可以根據指示IPDA的OXM中的第一組中的第二比特域指示信息,確定GTP-U數據報文中的IPDA所在的比特域,并比較該比特域的值是否與該OXM中第一組中的匹配值相等。同時,交換機可以根據指示UDP端口的OXM中第二組的第二比特域指示信息,確定GTP-U數據報文中的UDP端口所在的比特域,并比較該比特域的值是否與該OXM中第二組的匹配值相等。如果兩個比特域都匹配成功,則交換設備可以根據流表項中的操作域信息進行GTP解封裝。控制器經過之前的GTP-C會話建立操作或對首個GTP-U數據報文的解析處理,可以確定需要對數據報文執行GTP解封裝。交換機已經根據之前的控制器發送的流表項添加指示消息,建立了流表項。流表項中的操作域信息可以包括解封裝處理對應的多組操作類型及操作類型對應的第一比特域指示信息。其中GTP封裝頭可以包括外部IP頭、UDP頭和GTP頭。解封裝處理可以包括以下幾組操作類型以及操作類型對應的第一比特域指示信息:(1)根據2次校驗驗證操作類型以及對應的第一比特域指示信息,即2次Verify-Checksum(Top-offset1,Size1/Bottom-offset1,Top-offset2,Size2)分別驗證外部IP頭和UDP頭的校驗和。(2)根據彈出操作類型以及對應的第一比特域指示信息,即Pop(Top-offset,Size),彈出IP-UDP-GTP頭,從而對IP數據報文進行解封裝。(3)根據遞減操作類型以及對應的第一比特域指示信息,即Decrement(Top-offset,Size,Mask,Step),對IP數據報文中TTL對應的比特域進行減1操作。(4)根據校驗計算操作類型以及對應的第一比特域指示信息,即Calculate-Checksum(Top-offset1,Size1/Bottom-offset1,Top-offset2,Size2),更新內層IP頭的校驗和。本發明實施例中,通過根據控制器發送的匹配域信息和操作域信息生成流表項,使得交換機可以根據第一比特域指示信息和第二比特域指示信息對GTP-U數據報文直接進行隧道解封裝處理,而無需對數據報文的協議格式進行解析,能夠實現用戶靈活的自定義的流操作。圖10是根據本發明實施例的處理數據報文的方法的過程的另一例子的示意圖。本實施例中,交換設備為交換機,控制設備為控制器。在圖10中,以GTP協議為例,描述在交換機建立了流表項后,當交換機接收到GTP-U數據報文后,如何根據流表項進行GTP隧道解封裝和再封裝處理。該處理過程不需要先彈出原有隧道報文頭,再壓入新的隧道報文頭,只需修改外部IP地址和隧道ID等信息。本實施例中的流表項的匹配域包括兩組第二比特域指示信息和匹配值。交換機可以對由匹配域中第一組的第二比特域指示信息確定的、與IPDA對應的比特域進行匹配,并對由匹配域中第二組的第二比特域指示信息確定的、與UDP端口號2152對應的比特域進行匹配。即交換機可以根據指示IPDA的OXM中第一組的第二比特域指示信息,確定GTP-U數據報文中的IPDA所在的比特域,并比較該比特域的值是否與該OXM中第一組的匹配值相等。同時,交換設備可以根據指示UDP端口的OXM中第二組的第二比特域指示,確定GTP-U數據報文中的UDP端口所在的比特域,并比較該比特域的值是否與該OXM中第二組的匹配值相等。如果兩個比特域都匹配成功,則交換設備可以根據流表項中的操作域信息對隧道頭域信息進行修改。控制器經過之前的GTP-C會話建立操作或對首個GTP-U數據報文的解析處理,可以確定需要對數據報文進行GTP解封裝和重新再封裝。交換機已經根據之前的控制器發送的流表項添加指示消息,建立了流表項。流表項中的操作域信息可以包括解封裝和重新再封裝處理對應的多組操作類型及操作類型對應的第一比特域指示信息。其中GTP封裝頭可以包括外部IP頭、UDP頭和GTP頭。解封裝和重新再封裝處理可以包括以下幾組操作類型和操作類型對應的第一比特域指示信息:(1)根據2次校驗驗證操作類型以及對應的第一比特域指示信息,即2次Verify-Checksum(Top-offset1,Size1/Bottom-offset1,Top-offset2,Size2),分別驗證外部IP頭和UDP頭的校驗和。(2)根據設置操作類型以及對應的第一比特域指示信息,即Set-value(Top-offset,Size,Mask,Data),將GTP頭中的原有TEID1修改為新的TEID2。(3)根據設置操作類型以及對應的第一比特域指示信息,即Set-value(Top-offset,Size,Mask,Data),更新外部IP頭中源地址和目的地址。(4)根據2次校驗計算操作類型和對應的第一比特域指示信息,即2此Calculate-Checksum(Top-offset1,Size1/Bottom-offset1,Top-offset2,Size2),分別更新內層UDP頭的校驗和和內層IP頭的校驗和。本發明實施例中,通過根據控制器發送的匹配域信息和操作域信息生成流表項,使得交換機可以根據第一比特域指示信息和第二比特域指示信息對GTP-U數據報文直接進行隧道解封裝再封裝處理,而無需對數據報文的協議格式進行解析,能夠實現用戶靈活的自定義的流操作。本發明實施例中,上述流表項可以是對現有流表項的擴展,例如可以在現有的普通流表的流表項中增加上述操作域信息和/匹配域信息。上述流表項也可以在交換機中新增加的流表中單獨存放。下面將結合具體例子詳細描述本發明實施例中流表的布置方式。圖11是根據本發明實施例的流表的布置方式的一個例子的示意圖。如圖11所示,本發明實施例的流表項可以在新增加的流表中單獨存放,為了區別于其它現有的普通流表(如圖1中所示的流表),該新增加的流表可以稱為通用流表。其它普通流表可以保持不變。通用流表可以穿插在現有的流管線中,流管線中的其它普通流表可以跳轉到通用流表,通用流表也可以跳轉回流管線中的其它普通流表。通用流表的流表項與普通流表中的流表項采用相同的結構,但在匹配域信息中可以包括本發明實施例中的OXM,操作域信息中可以包括本發明實施例中的操作類型以及對應的第一比特域指示信息。因此,本發明實施例中,通過增加通用流表存放包括匹配域信息和操作域信息的流表項,無需擴展原有的普通流表中的流表項,處理更為便捷。圖12是根據本發明一個實施例的處理數據報文的裝置的示意框圖。圖12的裝置1200的一個例子是交換設備,例如OpenFlow交換機。裝置1200包括匹配單元1210和操作單元1220。匹配單元1210用于將數據報文與流表項的匹配域信息進行匹配;所述流表項包括所述匹配域信息和操作域信息;其中,所述操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定所述數據報文的第一比特域,或者,所述匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域;操作單元1220,用于如果所述數據報文與所述匹配域信息匹配成功,則根據所述操作域信息,對所述數據報文進行操作。可選地,當所述操作域信息包括所述操作類型和所述第一比特域指示信息時,操作單元1220具體用于,如果所述數據報文與所述匹配域信息匹配成功,則根據所述第一比特域指示信息確定所述數據報文的第一比特域,根據所述操作類型,對所述第一比特域進行操作。可選地,當所述操作域信息包括所述操作類型和所述第一比特域指示信息時,所述第一比特域指示信息還包括第一掩碼,對應地,操作單元1220具體用于,如果所述數據報文與所述匹配域信息匹配成功,則根據所述第一比特域指示信息確定所述數據報文的第一比特域,根據所述第一掩碼,獲得所述第一比特域的至少一個比特位,根據所述操作類型,對所述第一比特域的至少一個比特位進行操作。可選地,當所述操作域信息包括所述操作類型和所述第一比特域指示信息時,若所述操作域信息還包括操作數時,操作單元1220具體用于,如果所述數據報文與所述匹配域信息匹配成功,則根據所述第一比特域指示信息確定所述數據報文的第一比特域,根據所述操作類型,對所述第一比特域和所述操作數進行操作。可選地,當所述匹配域信息包括所述第二比特域指示信息和所述匹配值時,匹配單元1210具體用于,根據所述第二比特域指示信息,確定所述數據報文的第二比特域;根據所述匹配值,對所述第二比特域進行匹配。可選地,當所述匹配域信息包括所述第二比特域指示信息和所述匹配值時,若所述第二比特域指示信息還包括第二掩碼,匹配單元1210具體用于根據所述第二比特域指示信息,確定所述數據報文的第二比特域,根據所述第二掩碼,獲得所述第二比特域的至少一個比特位,所述根據所述匹配值,對所述第二比特域的所述至少一個比特位進行匹配。示例性的,所述操作類型包括彈出操作類型、壓入操作類型、設置操作類型、長度計算操作類型、校驗和計算操作類型、校驗和驗證操作類型、遞增操作類型、遞減操作類型或復制操作類型。裝置1200的其它功能和操作可參照上面圖2至圖11的方法實施例中涉及交換設備的過程,為了避免重復,此處不再贅述。本發明實施例中,通過根據操作域信息中包括第一偏移量和第一字段長度的第一比特域指示信息確定數據報文的第一比特域,并根據操作域信息中的操作類型對第一比特域進行操作,使得對數據報文的操作不再局限于特定的協議格式。同理,交換設備根據第二比特域指示信息可以任意地確定數據報文中的第二比特域,并對第二比特域進行匹配,而無需解析數據報文的具體協議格式。所以通過圖12所示的裝置能夠避免對于新增協議需要進行的標準化擴展,因此能夠實現用戶靈活的自定義的流操作。作為本發明另一個實施例,裝置1200還可以包括接收單元1230和生成單元1240。接收單元1230用于接收控制設備發送的流表項添加指示消息,所述流表項添加指示消息包括所述匹配域信息和所述操作域信息;生成單元用于根據所述匹配域信息和所述操作域信息,生成所述流表項。可選地,接收單元1230還用于接收控制設備發送的流表項修改指示消息,所述流表項修改指示消息包括所述匹配域信息和新的操作域信息;對應地,裝置1200還包括修改單元1240,用于根據所述匹配域信息和所述新的操作域信息,對所述流表項進行修改。可選地,接收單元1230還用于接收控制設備發送的特性請求消息,所述特性請求消息用于詢問是否支持所述操作域信息或者所述匹配域信息;對應地,裝置1200還包括發送單元1250,用于向所述控制設備發送特性響應消息,所述特性響應消息用于指示支持所述操作域信息或者所述匹配域信息。可選地,裝置1200可以為交換設備。示例性的,交換設備可以為交換機。裝置1200的其它功能和操作可參照上面圖2至圖11的方法實施例中涉及交換設備的過程,為了避免重復,此處不再贅述。本發明實施例中,通過采用偏移量和字段長度能夠實現對數據報文特定比特域的靈活定位,實現對數據報文靈活的自定義處理,從而使對數據報文的處理不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展,使對數據報文的處理更具通用性。圖13是本發明另一實施例提供的一種處理數據報文的裝置的示意框圖。如圖13所示,該裝置1300包括生成單元1310和發送單元1320。生成單元1310,用于生成流表項添加指示消息,所述流表項添加指示信息包括匹配域信息和操作域信息;其中,所述操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定數據報文的第一比特域,或者,所述匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域;發送單元1320,用于發送所述流表項添加指示消息至交換設備,以使所述交換設備根據所述流表項添加指示消息生成流表項,并根據所述流表項對所述數據報文進行處理。可選地,生成單元1310還用于生成流表項修改指示消息,所述流表項修改指示消息包括所述匹配域信息和新的操作域信息;對應地,發送單元1320還用于,發送所述流表項修改指示消息至所述交換設備,以使所述交換設備根據所述匹配域信息和所述新的操作域信息,對與所述匹配域信息對應的流表項進行修改。可選地,發送單元1320還用于,發送特性請求消息至所述交換設備,所述特性請求消息用于詢問是否支持所述匹配域信息或者所述操作域信息;對應地,裝置1300還包括接收單元1330,用于接收所述交換設備發送的特性響應消息,所述特性響應消息用于指示支持所述匹配域信息或者所述操作域信息。可選地,裝置1300可以為控制設備,示例性的,可以為控制器。本實施例的裝置1300工作方式可以參考圖3~圖11中控制設備的工作方式,此處不作贅述。本發明實施例中的裝置可以通過將攜帶偏移量和字段長度的比特域指示信息發送至交換設備,能夠實現對數據報文特定比特域的靈活定位,實現對數據報文靈活的自定義處理,從而使對數據報文的處理不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展,使對數據報文的處理更具通用性。本發明另一實施例還提供一種處理數據報文的系統,如圖14所示,該系統包括交換設備1410和控制設備1420。示例性的,交換設備1410可以為圖12所示的裝置,控制設備可以為圖13所示的裝置。本系統的工作方式可以參考圖2~圖11所示實施例中的工作方式,此處不作贅述。本發明實施例中,通過根據偏移量和字段長度能夠靈活確定數據報文的特定比特域,并對該特定比特域進行匹配或者操作,因此能夠實現對數據報文靈活的自定義處理,從而使對數據報文的處理不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展,使對數據報文的處理更具通用性。本發明另一實施例還提供一種流表項,包括匹配域信息和操作域信息。其中,其中,所述操作域信息包括操作類型和第一比特域指示信息,所述第一比特域指示信息包括第一偏移量和第一字段長度,所述第一比特域指示信息用于指定所述數據報文的第一比特域,或者,所述匹配域信息包括第二比特域指示信息和匹配值,所述第二比特域指示信息包括第二偏移量和第二字段長度,所述第二比特域指示信息用于指定所述數據報文的第二比特域。可選地,所述第一比特域指示信息還包括第一掩碼。可選地,所述第二比特域指示信息還包括第二掩碼。可選地,所述操作域信息還包括操作數。可選地,所述操作類型包括彈出操作類型、壓入操作類型、設置操作類型、長度計算操作類型、校驗和計算操作類型、校驗和驗證操作類型、遞增操作類型、遞減操作類型或復制操作類型。通過本發明實施例提供的流表項,可以靈活確定數據報文的特定比特域,并對該特定比特域進行匹配或者操作,因此能夠實現對數據報文靈活的自定義處理,從而使對數據報文的處理不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展,使對數據報文的處理更具通用性。本發明另一實施例還提供一種處理數據報文的計算機程序產品。該計算機程序產品包括能夠被計算機執行的程序代碼,該程序代碼用來執行如圖2所示的處理數據報文的方法。如圖15所示,本發明實施例提供一種處理數據報文的裝置的其中一種硬件實現。該裝置可以是交換設備,示例性的,可以是支持OpenFlow技術的交換機。該裝置包括處理器、存儲器、第一網絡接口,第二網絡接口和第三網絡接口。其中第一網絡接口,第二網絡接口,第三網絡接口,處理器和存儲器之間通過總線互聯。第一網絡接口可以與控制設備連接,進行交互,示例性的,該控制設備可以是支持OpenFlow技術的控制器。第二網絡接口作為該裝置的輸入端口,可以用于接收數據報文。第三網絡接口作為該裝置的輸出端口,可以用于發送經過處理器處理的數據報文。示例性的,每個網絡接口可以包含多個輸入和輸出端口。第一、第二和第三網絡接口可以是相互獨立的網絡接口,也可相互合并為一個網絡接口;存儲器可以為半導體存儲單元,可以直接被處理器訪問。其中,存儲器用于存儲計算機可執行的程序代碼,該程序代碼用來執行如圖2所示的處理數據報文的方法,以及用于存儲本發明實施例提供的流表項。處理器,用于根據存儲器存儲的計算機可執行的程序代碼,執行如圖2所示的處理數據報文的方法,對接收到的數據報文進行處理。示例性的,通過第一網絡接口,可以接收控制設備發送的流表項添加指示消息,該流表項添加指示消息中可以包括生成本發明實施例提供的流表項的匹配域信息和操作域信息,處理器可以根據流表項添加指示消息中攜帶的所述匹配域信息和所述操作域信息生成本發明實施例提供的流表項,并存儲在存儲器中。示例性的,通過第一網絡接口,還可以接收控制設備發送的流表項修改指示消息,與流表項添加指示消息類似,流表項修改指示消息中可以包括本發明實施例提供的流表項的匹配域信息和操作域信息,處理器可以根據所述匹配域信息找到存儲器中對應的流表項,并將該流表項中的操作域信息更新為流表項修改指示消息中攜帶的操作域信息。示例性的,通過第一網絡接口,還可以接收控制設備發送的特性請求消息,特性請求消息可以用于詢問交換設備是否支持通用流處理能力,即是否支持本發明實施例提供的流表項的匹配域信息或者操作域信息。對應的,通過第一網絡接口可以向控制設備發送特性響應消息,特性響應消息可以用于指示支持通用流處理能力,即支持本發明實施例提供的流表項的匹配域信息或者操作域信息。通過本實施例提供的處理數據報文的裝置的硬件實現,采用偏移量和字段長度實現對數據報文特定比特域的靈活定位,進而可以實現對數據報文靈活的自定義處理,從而使對數據報文的處理不再局限于特定的協議格式,避免對于新增協議需要進行的標準化擴展,使對數據報文的處理更具通用性。如圖16所示,本發明實施例提供一種處理數據報文的裝置的其中一種硬件實現。該裝置可以是控制設備,示例性的,可以是支持OpenFlow技術的控制器。該裝置包括存儲器、處理器和控制器。存儲器、處理器和控制器通過總線進行互通。網絡接口可以連接交換設備,與交換設備進行交互。存儲器可以是半導體器件,可以直接被處理器訪問。其中,存儲器用于存儲計算機可執行的程序代碼,該程序代碼用來執行如圖3所示的處理數據報文的方法。處理器,用于根據存儲器存儲的計算機可執行的程序代碼,執行如圖3所示的處理數據報文的方法。其中流表項添加指示消息、流表項修改指示消息或者特性請求消息由處理器通過網絡接口向交換設備進行發送。通過將包含本發明實施例提供的流表項的匹配域信息和操作域信息發送至交換設備,可以使交換設備生成本發明實施例提供的流表項,從而實現對數據報文特定比特域的靈活定位,進而可以實現對數據報文靈活的自定義處理,避免對于新增協議需要進行的標準化擴展,使對數據報文的處理更具通用性。本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結合來實現。這些功能究竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的范圍。所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。在本申請所提供的幾個實施例中,應該理解到,所揭露的系統、裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。所述功能如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,RandomAccessMemory)、磁碟或者光盤等各種可以存儲程序代碼的介質。以上所述,僅為本發明的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本
技術領域:
的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以所述權利要求的保護范圍為準。當前第1頁1 2 3