開放流OpenFlow系統(tǒng)中的報文轉發(fā)方法及裝置制造方法【專利摘要】本申請公開了一種開放流OpenFlow系統(tǒng)中的報文轉發(fā)方法及裝置,其中,OpenFlow系統(tǒng)中包括:OpenFlow控制器和OpenFlow交換機,該方法應用于OpenFlow交換機,OpenFlow交換機包括:硬件轉發(fā)芯片和轉發(fā)CPU,硬件轉發(fā)芯片和轉發(fā)CPU通過內聯口相連,該方法包括:接收到OpenFlow控制器發(fā)來的流表項下發(fā)指令,其中,流表項下發(fā)指令中攜帶有需要下發(fā)的流表項;將需要下發(fā)的流表項添加到對應流表中,其中,對應流表在本交換機的硬件轉發(fā)芯片或轉發(fā)CPU中,硬件轉發(fā)芯片中的流表和轉發(fā)CPU中的流表串聯組成多級流表;在接收到報文之后,依次按照多級流表中的每一個流表對該報文進行查表轉發(fā)處理。本申請能夠支持復雜的OpenFlow流表轉發(fā)功能?!緦@f明】開放流OpenFIow系統(tǒng)中的報文轉發(fā)方法及裝置【
技術領域:
】[0001]本申請涉及虛擬化【
技術領域:
】,特別涉及一種開放流OpenFlow系統(tǒng)中的報文轉發(fā)方法及裝置?!?br>背景技術:
】[0002]OpenFlow(開放流)是GENI(全球網絡創(chuàng)新環(huán)境)的一個研究主題,目的是讓科研人員能在現有的商用網絡上進行新的網絡協議的實驗,從而科研機構可以省去搭建實驗網絡的費用,并且實驗數據來自更接近真實網絡的環(huán)境。隨著OpenFlow技術的完善,OpenFlow的應用目標已擴展到了廣域網和數據中心領域。[0003]OpenFlow技術的思想包括:分離控制平面和數據平面,二者之間使用標準的協議通信;數據平面采用基于流的方式進行轉發(fā),非常靈活和通用;層次化的集中控制平面,提供開放的API接口供第三方開發(fā);數據平面和控制平面支持虛擬化。[0004]如圖1所不,OpenFlow網絡(或系統(tǒng))由OpenFlow交換機(OpenFlowSwitch)、OpenFlow控制器(OpenFlowController)、以及安全通道(SecureChannel)組成。下面對相關概念分別進行介紹。[0005]UOpenFlow交換機:接收OpenFlow控制器設置的流表(FlowTable),并根據流表進行報文轉發(fā)和處理;另一方面,也會主動向OpenFlow控制器上報本設備的狀態(tài)和事件,如接口UP(可用)/DOWN(可不用)。[0006]2、0penFlow控制器:是OpenFlow網絡的控制中心,根據用戶的靜態(tài)配置或者動態(tài)運行的協議生成流表并發(fā)送到OpenFlow交換機。OpenFlow控制器一般是運行實驗程序的PC(個人電腦)或者服務器,比較簡單的OpenFlow控制器可能只包含配置界面,用于靜態(tài)地配置OpenFlow網絡及連通性,就像配置靜態(tài)VLAN(VirtualLocalAreaNetwork,虛擬局域網)一樣;復雜一點的OpenFlow控制器可能運行多個算法程序,動態(tài)地計算OpenFlow網絡中各個OpenFlow交換機需要添加或者刪除的流表項。[0007]3、安全通道:0penFlow控制器與OpenFlow交換機之間通過預先配置的安全通道連接,安全通道可以基于SSL(SecureSocketsLayer安全套接層。[0008]4、流表:由匹配規(guī)則(Rule)、動作(Action)和統(tǒng)計(Statistics)三部分組成。流表中包含有多個流表項,每個流表項關聯一個優(yōu)先級。[0009](I)匹配規(guī)則[0010]由OpenFlow協議定義,支持豐富的報文匹配域,且支持IP(InternetProtocol,因特網協議)地址掩碼,包括子網掩碼或者任意掩碼。每一個匹配規(guī)則具有一個優(yōu)先級,報文匹配時需要根據各個匹配規(guī)則的優(yōu)先級順序進行。匹配規(guī)則包括:交換機端口(switchport),VLANID(標識)、源MAC地址、目的MAC地址、以太網類型、源IP地址、目的IP地址、IP協議、TCPP(TransmissionControlProtocol,傳輸控制協議)源端口、TCP目標端口。[0011](2)動作[0012]每一個流表項關聯一個如何處理匹配該流表項的報文的動作序列,該動作序列可以由O個或多個執(zhí)行動作組成,在對報文進行轉發(fā)處理時必須按照各個執(zhí)行動作的順序來處理。如果流表項沒有關聯任何執(zhí)行動作,則丟棄匹配該流表項的報文。OpenFlow交換機不需要支持所有的動作類型,但如果OpenFlow交換機不支持某個動作,則必須向OpenFlow控制器返回錯誤。OpenFlow交換機與OpenFlow控制器建立連接之后,要協商雙方支持的動作類型。動作具體可以是:轉發(fā)報文到一個或多個端口,封裝報文并轉發(fā)給OpenFlow控制器,丟棄報文,發(fā)送到正常的轉發(fā)流程,修改報文內容。[0013](3)統(tǒng)計[0014]支持四種統(tǒng)計計數器,分別是針對per-table(每張表)、per-flow(每個流)、per-port(每個端口)和per-queue(每個隊列)的計數器。計數器用來統(tǒng)計流量的一些信息,例如活動表項、查找次數、發(fā)送包數等。[0015]OpenFlow交換機在接收到一個報文之后,根據該報文的包頭中的多個域的值,在流表中查找匹配表項,如果查找到了匹配表項,則進行計數統(tǒng)計并按照匹配表項中的動作對該報文進行轉發(fā)處理,例如:轉發(fā)到多個端口,或者丟棄;如果沒有查找到匹配表項,則通過安全通道將該報文轉發(fā)到OpenFlow控制器,交由OpenFlow控制器處理。其中,在查找匹配表項時,按照各個流表項的優(yōu)先級順序進行,優(yōu)先級相同時匹配順序不限。上述過程可以稱為對報文進行查表轉發(fā)處理的過程。[0016]例如,OpenFlow控制器通過OpenFlow協議(簡稱OFP)在OpenFlow交換機上創(chuàng)建的一個流表項的內容如下:[0017]匹配規(guī)則是:目的ΙΡ=5.6.7.8,動作是:轉發(fā)至接口portl[0018]則,該OpenFlow交換機在接收到目的IP地址為5.6.7.8的數據流之后,會在流表中匹配到該流表項,然后,按照該流表項中的動作將該報文轉發(fā)至portl。[0019]OpenFlow交換機支持多級流表,多級流表串聯執(zhí)行,即,依次按照多級流表,對報文進行查表轉發(fā)處理。在現有實現中,OpenFlow交換機使用的硬件轉發(fā)芯片的邏輯已經確定,各級流表只能復用硬件轉發(fā)芯片的已經確定邏輯的現有表項資源來實現。各級流表使用了不同的現有表項資源,例如,L2(LeVe12,二層)轉發(fā)表、L3(LeVe13,三層)轉發(fā)表、TCAM(TernaryContentAddressableMemory,三態(tài)內容尋址存儲器),這些現有表項資源作為流表串聯生效。[0020]但是,由于現有表項資源的邏輯已經確定,現有表項資源對OpenFlow功能的支持有限,例如:使用L2轉發(fā)表作為流表時,匹配規(guī)則只支持VLANID和目的MAC地址,流動作只支持指定出接口;使用L3轉發(fā)表作為流表時,匹配規(guī)則只支持目的IP地址,流動作只支持指定出接口、修改目的VLAN和目的MAC地址;使用TCAM作為流表時,流動作不支持修改目的IP地址和修改源IP地址等動作。[0021]由此,使用硬件轉發(fā)芯片的現有表項資源來實現流表,只能支持一些比較簡單的流表,流表的某些功能受限,無法實現復雜的功能。【
發(fā)明內容】[0022]本申請?zhí)峁┝艘环NOpenFlow系統(tǒng)中的報文轉發(fā)方法及裝置,以解決現有技術使用硬件轉發(fā)芯片的現有表項資源來實現流表,只能支持一些比較簡單的流表,流表的某些功能受限的問題。[0023]本申請的技術方案如下:[0024]一方面,提供了一種OpenFlow系統(tǒng)中的報文轉發(fā)方法,OpenFlow系統(tǒng)中包括:OpenFlow控制器和OpenFlow交換機,該方法應用于OpenFlow交換機,OpenFlow交換機包括:硬件轉發(fā)芯片和轉發(fā)CPU,硬件轉發(fā)芯片和轉發(fā)CPU通過內聯口相連,該方法包括:[0025]接收到OpenFlow控制器發(fā)來的流表項下發(fā)指令,其中,流表項下發(fā)指令中攜帶有需要下發(fā)的流表項;[0026]將需要下發(fā)的流表項添加到對應流表中,其中,對應流表在本交換機的硬件轉發(fā)芯片或轉發(fā)中央處理器CPU中,硬件轉發(fā)芯片中的流表和轉發(fā)CPU中的流表串聯組成多級流表;[0027]在接收到報文之后,依次按照多級流表中的每一個流表對該報文進行查表轉發(fā)處理。[0028]另一方面,還提供了一種OpenFlow系統(tǒng)中的報文轉發(fā)裝置,OpenFlow系統(tǒng)中包括:0penFlow控制器和OpenFlow交換機,該裝置應用于OpenFlow交換機,OpenFlow交換機包括:硬件轉發(fā)芯片和轉發(fā)CPU,硬件轉發(fā)芯片和轉發(fā)CPU通過內聯口相連,該裝置包括:[0029]接收模塊,用于接收OpenFlow控制器發(fā)來的流表項下發(fā)指令,其中,流表項下發(fā)指令中攜帶有需要下發(fā)的流表項;[0030]流表項下發(fā)模塊,用于將接收模塊接收到的流表項下發(fā)指令中的需要下發(fā)的流表項添加到對應流表中,其中,對應流表在本交換機的硬件轉發(fā)芯片或轉發(fā)中央處理器CPU中,硬件轉發(fā)芯片中的流表和轉發(fā)CPU中的流表串聯組成多級流表;[0031]轉發(fā)處理模塊,用于在接收到報文之后,依次按照多級流表中的每一個流表對該報文進行查表轉發(fā)處理。[0032]通過本申請的技術方案,OpenFlow交換機的控制平面中增加了一個轉發(fā)CPU,OpenFlow交換機中的多級流表一部分使用硬件轉發(fā)芯片中的現有表項資源來實現,另一部分使用該轉發(fā)CPU中的軟件資源來實現,這樣,硬件轉發(fā)芯片中的現有表項資源不能支持的功能,就可以由轉發(fā)CPU中的軟件資源來實現,從而能夠支持復雜的OpenFlow流表轉發(fā)功能?!緦@綀D】【附圖說明】[0033]圖1是OpenFlow系統(tǒng)的架構示意圖;[0034]圖2是現有技術的OpenFlow交換機及其中的多級流表的示意圖;[0035]圖3是本申請的實施例一的OpenFlow交換機的結構示意圖;[0036]圖4是本申請的實施例一的OpenFlow系統(tǒng)中的報文轉發(fā)方法的流程圖;[0037]圖5是本申請的實施例一的OpenFlow交換機中的多級流表的一種示意圖;[0038]圖6是本申請的實施例一的OpenFlow交換機中的多級流表的另一種示意圖;[0039]圖7是本申請的實施例一的OpenFlow交換機中的多級流表的又一種示意圖;[0040]圖8是本申請的實施例一的OpenFlow交換機中的多級流表的又一種示意圖;[0041]圖9是本申請的實施例二的OpenFlow交換機的功能模塊示意圖。【具體實施方式】[0042]為了解決現有技術使用硬件轉發(fā)芯片的現有表項資源來實現流表,只能支持一些比較簡單的流表,流表的某些功能受限的問題,本申請的以下實施例中提供了一種OpenFlow系統(tǒng)中的報文轉發(fā)方法,以及一種可以應用該方法的裝置。[0043]OpenFlow系統(tǒng)中包括:0penFlow控制器和OpenFlow交換機。在現有技術中,如圖2所示,OpenFlow交換機的控制平面中包括:控制CPU(CentralProcessingUnit,中央處理器),數據平面中包括:硬件轉發(fā)芯片,控制CPU負責OpenFlow協議控制,包括與OpenFlow控制器交互,根據OpenFlow控制器發(fā)來的消息通知硬件轉發(fā)芯片創(chuàng)建流表、向流表下發(fā)流表項。本申請以下實施例中,如圖3所示,在OpenFlow交換機的控制平面中新增了一個轉發(fā)CPU,在實際實施時,該轉發(fā)CPU可以是獨立的物理插卡,也可以是控制CPU中劃分出的獨立轉發(fā)核(多核場景)或獨立轉發(fā)線程,也可以是板載的專用轉發(fā)CPU。轉發(fā)CPU通過內聯口與硬件轉發(fā)芯片互聯。其中,內聯口是設備內部的芯片間互聯的端口,一個芯片可以在報文外部添加額外信息(例如下文中的標簽信息)后通過內聯口發(fā)送給另一個芯片。[0044]實施例一[0045]本申請的實施例一的OpenFlow系統(tǒng)中的報文轉發(fā)方法,由OpenFlow交換機來執(zhí)行。如圖4所示,該方法包括以下步驟:[0046]步驟S102,接收到OpenFlow控制器發(fā)來的流表項下發(fā)指令,其中,流表項下發(fā)指令中攜帶有需要下發(fā)的流表項;[0047]步驟S104,將需要下發(fā)的流表項添加到對應流表中,其中,對應流表在本交換機的硬件轉發(fā)芯片或轉發(fā)CPU中,硬件轉發(fā)芯片中的流表和轉發(fā)CPU中的流表串聯組成多級流表;[0048]在實際實施過程中,在步驟S102中,由控制CPU接收OpenFlow控制器發(fā)來的流表項下發(fā)指令,向硬件轉發(fā)芯片或轉發(fā)CPU中的流表中下發(fā)流表項。[0049]通常情況下,OpenFlow控制器與OpenFlow交換機可以預先進行協商(或約定),協商好每一個表ID所指示的流表的創(chuàng)建位置是硬件轉發(fā)芯片還是轉發(fā)CPU,以及各個表ID所指不的流表之間的串聯順序關系。本申請實施例中,對各個表ID所指的流表的創(chuàng)建位置不做限定,對各個表ID所指示的流表之間的串聯順序關系也不做限定。但是,為減少在步驟S106中報文在硬件轉發(fā)芯片和轉發(fā)CPU之間反復轉發(fā),通常傾向于把一個連續(xù)的表ID范圍段內的流表創(chuàng)建到轉發(fā)CPU中,例如,如圖5所示,這樣,報文只需在硬件轉發(fā)芯片和轉發(fā)CPU之間轉發(fā)2次即可。[0050]OpenFlow交換機可以在接收到流表項下發(fā)指令之前就預先將所有的流表創(chuàng)建完畢,也可以在接收到流表項下發(fā)指令后才創(chuàng)建流表。這樣,流表項下發(fā)指令中還需要攜帶有需要下發(fā)的流表項對應的流表的表ID。[0051]在接收到流表項下發(fā)指令之前就預先將所有的流表創(chuàng)建完畢的情況下,在步驟S104中,只需將接收到的流表項下發(fā)指令中的需要下發(fā)的流表項添加到表ID所指示的流表中即可。在實際實施過程中,控制CPU根據本交換機與OpenFlow控制器的協商結果,確定流表項下發(fā)指令中的表ID所指示的流表的創(chuàng)建位置是硬件轉發(fā)芯片還是轉發(fā)CPU,當確定出是硬件轉發(fā)芯片時,向硬件轉發(fā)芯片中該表ID所指示的流表中下發(fā)流表項,當確定出是轉發(fā)CPU時,向轉發(fā)CPU中該表ID所指示的流表中下發(fā)流表項。[0052]在接收到流表項下發(fā)指令后才創(chuàng)建流表的情況下,在步驟S104中,根據本交換機與OpenFlow控制器的協商結果,確定接收到的流表項下發(fā)指令中的表ID所指示的流表的創(chuàng)建位置,該創(chuàng)建位置是硬件轉發(fā)芯片或轉發(fā)CPU;在確定的創(chuàng)建位置中創(chuàng)建該表ID所指示的流表;將該接收到的流表項下發(fā)指令中的需要下發(fā)的流表項添加到該表ID所指示的流表中。[0053]步驟S106,在接收到報文之后,依次按照該多級流表中的每一個流表對該報文進行查表轉發(fā)處理。[0054]本實施例中,OpenFlow交換機的控制平面中增加了一個轉發(fā)CPU,OpenFlow交換機中的多級流表一部分使用硬件轉發(fā)芯片中的現有表項資源來實現,另一部分使用該轉發(fā)CPU中的軟件資源來實現,這樣,硬件轉發(fā)芯片中的現有表項資源不能支持的功能,就可以由轉發(fā)CPU中的軟件資源來實現,從而能夠支持復雜的OpenFlow流表轉發(fā)功能。[0055]為了不改變硬件轉發(fā)芯片的現有實現,當硬件轉發(fā)芯片中的流表a(表ID為a的流表)串聯的下一個流表是流表b(表ID為b的流表),且流表b位于轉發(fā)CPU中時,流表a不感知轉發(fā)CPU的存在,在步驟S104中,將需要下發(fā)的流表項添加到流表a中時,在需要下發(fā)的流表項中的執(zhí)行動作(Action)中增加預設動作,預設動作是通過內聯口轉發(fā),S卩,控制CPU在向硬件轉發(fā)芯片下發(fā)流表a的流表項時,自動添加一個動作“通過內聯口轉發(fā)”,從而可以將報文轉發(fā)到轉發(fā)CPU。[0056]則,在步驟S106中,依次按照該多級流表中的每一個流表對該報文進行查表轉發(fā)處理的方法包括以下步驟11-12:[0057]步驟11:硬件轉發(fā)芯片按照流表a對報文進行查表轉發(fā)處理,其中,在按照查表得到的匹配表項中的預設動作將報文通過內聯口轉發(fā)給轉發(fā)CPU時,在報文中攜帶硬件轉發(fā)信息,其中,硬件轉發(fā)信息包括:報文入端口、報文處理階段以及報文出端口,報文處理階段是流表a;[0058]其中,查表轉發(fā)處理的過程與現有技術相同,S卩,根據報文的包頭中的多個域的值,在流表中查找匹配表項,如果查找到了匹配表項,則進行計數統(tǒng)計并按照匹配表項中的執(zhí)行動作對該報文進行轉發(fā)處理。[0059]其中,報文入端口即為該報文首次進入本交換機的入端口,報文處理階段用于表示報文處理到哪個流表了,當報文處理階段是表a時,表示報文當前按照表a進行了查表轉發(fā)處理。在實際實施過程中,如果報文在按照流表a之前的流表進行查表轉發(fā)處理時,已經獲得了非內聯口以外的正常轉發(fā)出接口的話,則攜帶的硬件轉發(fā)信息中包括報文出端口,即該正常轉發(fā)出接口,否則,攜帶的硬件轉發(fā)信息中不包括報文出端口。[0060]在實際實施過程中,硬件轉發(fā)信息的攜帶方式,可以是在報文之外添加額外的標簽信息,用于攜帶硬件轉發(fā)信息。即,通過內聯口的物理層報文同時包含原始轉發(fā)報文和上述攜帶了硬件轉發(fā)信息的標簽信息。[0061]步驟12:轉發(fā)CPU通過內聯口接收到攜帶有硬件轉發(fā)信息的報文之后,依次按照轉發(fā)CPU中的流表b及其之后連續(xù)的各個流表中的每一個流表,對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理。[0062]在步驟12中,按照轉發(fā)CPU中的一個流表,對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理時,按照查表得到的匹配表項中的執(zhí)行動作,對攜帶有硬件轉發(fā)信息的報文中的硬件轉發(fā)信息進行修改。也就是說,在轉發(fā)CPU執(zhí)行OpenFlow軟件查表轉發(fā)時,根據轉發(fā)結果可以修改報文和標簽信息,其中不需要修改報文處理階段。[0063]同樣,當轉發(fā)CPU中的流表c(即表ID為c的流表)串聯的下一個流表是流表d(即表ID為d的流表),且流表d位于硬件轉發(fā)芯片中時,流表d不感知轉發(fā)CPU的存在,在步驟S104中,將需要下發(fā)的流表項添加到流表c中時,在需要下發(fā)的流表項中的執(zhí)行動作中增加預設動作,也就是說,控制CPU在向轉發(fā)CPU下發(fā)流表c的流表項時,自動為動作添力口“通過內聯口轉發(fā)”,從而可以將報文轉發(fā)回硬件轉發(fā)芯片。[0064]則,在步驟S106中,依次按照多級流表中的每一個流表對該報文進行查表轉發(fā)處理的方法還包括步驟21-22:[0065]步驟21:轉發(fā)CPU按照流表c對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理,按照查表得到的匹配表項中的預設動作,將處理后的攜帶有硬件轉發(fā)信息的報文通過內聯口轉發(fā)給硬件轉發(fā)芯片;[0066]轉發(fā)CPU在執(zhí)行OpenFlow軟件查表轉發(fā)后,將攜帶有硬件轉發(fā)信息的報文通過內聯口回送硬件轉發(fā)芯片進行后續(xù)轉發(fā),即,回送的報文攜帶有標簽信息。[0067]步驟22:硬件轉發(fā)芯片通過內聯口接收到處理后的攜帶有硬件轉發(fā)信息的報文之后,剝除該報文中的硬件轉發(fā)信息,根據該硬件轉發(fā)信息并按照硬件轉發(fā)芯片中的流表d及其之后連續(xù)的各級流表中的每一個流表,對剝除了硬件轉發(fā)信息后的報文進行查表轉發(fā)處理。[0068]在步驟22中,硬件轉發(fā)芯片從通過內聯口接收到的攜帶有標簽信息的報文中,恢復出硬件轉發(fā)所需的信息,包括:報文入端口、報文處理階段、報文出端口(可選),然后,完成后續(xù)轉發(fā)處理。[0069]在圖5所示的多級流表中,上述流表a是流表i,上述流表b是流表i+Ι,上述流表c是流表j,上述流表d是流表j+Ι。[0070]在圖5中,轉發(fā)CPU中的所有流表是連續(xù)的串聯的,顯然,在實際實施時,轉發(fā)CPU中的所有流表也可以是不連續(xù)的,例如,如圖6所示,這樣,報文需要在硬件轉發(fā)芯片和轉發(fā)CPU之間轉發(fā)三次以上,這種方式雖然處理效率比較低,但是可能在特殊組網場景下被用到。[0071]另外,本實施例中還考慮了一些特殊情況,當多級流表中的第一個流表位于轉發(fā)CPU中時,例如,如圖7所示,此時,在步驟S106中,依次按照多級流表中的每一個流表對該報文進行查表轉發(fā)處理的方法還包括:硬件轉發(fā)芯片在接收到來自本交換機外部的報文之后,在該報文中攜帶硬件轉發(fā)信息,并將該攜帶有硬件轉發(fā)信息的報文通過內聯口發(fā)送給轉發(fā)CPU,其中,硬件轉發(fā)信息中的報文處理階段是空。在實際實施過程中,硬件轉發(fā)芯片的邏輯中需要有固定的動作,對初始入報文上送內聯口。例如,在圖7中,硬件轉發(fā)芯片通過PortA接收到報文后,按照該固定的動作,在該報文中攜帶硬件轉發(fā)信息并轉發(fā)給轉發(fā)CPU,由轉發(fā)CPU進行軟件查表轉發(fā)處理。[0072]還有一種特殊情況是,多級流表中的最后一個流表位于轉發(fā)CPU中,例如,如圖8所示,此時,在步驟S106中,依次按照多級流表中的每一個流表對該報文進行查表轉發(fā)處理的方法還包括:硬件轉發(fā)芯片通過內聯口接收到按照最后一個流表處理后的攜帶有硬件轉發(fā)信息的報文,剝除該報文中的硬件轉發(fā)信息后轉發(fā)出去。即,轉發(fā)CPU回送給硬件轉發(fā)芯片的報文,不再被硬件轉發(fā)芯片中的流表處理而直接轉發(fā)出去。[0073]實施例二[0074]針對上述實施例一中的方法,本申請的實施例二中提供了一種OpenFlow系統(tǒng)中的報文轉發(fā)裝置,該裝置應用于OpenFlow交換機。[0075]如圖8所示,該裝置中包括以下模塊:接收模塊10、流表項下發(fā)模塊20和轉發(fā)處理模塊30,其中,[0076]接收模塊10,用于接收OpenFlow控制器發(fā)來的流表項下發(fā)指令,其中,流表項下發(fā)指令中攜帶有需要下發(fā)的流表項;[0077]流表項下發(fā)模塊20,用于將接收模塊10接收到的流表項下發(fā)指令中的需要下發(fā)的流表項添加到對應流表中,其中,對應流表在本交換機的硬件轉發(fā)芯片或轉發(fā)中央處理器CPU中,硬件轉發(fā)芯片中的流表和轉發(fā)CPU中的流表串聯組成多級流表;[0078]轉發(fā)處理模塊30,用于在接收到報文之后,依次按照多級流表中的每一個流表對該報文進行查表轉發(fā)處理。[0079]其中,流表項下發(fā)指令中還攜帶有需要下發(fā)的流表項對應的流表的表ID,貝U,流表項下發(fā)模塊20具體用于將需要下發(fā)的流表項添加到表ID所指示的流表中。[0080]另外,該裝置中還包括:確定模塊,用于根據本交換機與OpenFlow控制器的協商結果,確定表ID所指示的流表的創(chuàng)建位置,創(chuàng)建位置是硬件轉發(fā)芯片或轉發(fā)CPU;流表創(chuàng)建模塊,用于在確定模塊確定的創(chuàng)建位置中創(chuàng)建表ID所指示的流表。[0081]硬件轉發(fā)芯片與轉發(fā)CPU通過內聯口連接,硬件轉發(fā)芯片中的流表a串聯的下一個流表是流表b,且流表b位于轉發(fā)CPU中,則,流表項下發(fā)模塊具體用于在將需要下發(fā)的流表項添加到流表a中時,在需要下發(fā)的流表項中的執(zhí)行動作Action中增加預設動作,預設動作是通過內聯口轉發(fā);轉發(fā)處理模塊包括:第一處理單元和第二處理單元,其中,[0082]第一處理單元,用于觸發(fā)硬件轉發(fā)芯片按照流表a對報文進行查表轉發(fā)處理,其中,在按照查表得到的匹配表項中的預設動作將報文通過內聯口轉發(fā)給轉發(fā)CPU時,在報文中攜帶硬件轉發(fā)信息,其中,硬件轉發(fā)信息包括:報文入端口、報文處理階段以及報文出端口,報文處理階段是表a;[0083]第二處理單元,用于觸發(fā)轉發(fā)CPU通過內聯口接收到攜帶有硬件轉發(fā)信息的報文之后,依次按照轉發(fā)CPU中的流表b及其之后連續(xù)的各個流表中的每一個流表,對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理。[0084]其中,按照轉發(fā)CPU中的一個流表,對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理時,按照查表得到的匹配表項中的執(zhí)行動作,對攜帶有硬件轉發(fā)信息的報文中的硬件轉發(fā)信息進行修改。[0085]轉發(fā)CPU中的流表c串聯的下一個流表是流表d,且流表d位于硬件轉發(fā)芯片中,則,流表項下發(fā)模塊具體用于在將需要下發(fā)的流表項添加到流表c中時,在需要下發(fā)的流表項中的執(zhí)行動作中增加預設動作;轉發(fā)處理模塊還包括:第三處理單元和第四處理單元,其中,[0086]第三處理單元,用于觸發(fā)轉發(fā)CPU按照流表c對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理,按照查表得到的匹配表項中的預設動作,將處理后的攜帶有硬件轉發(fā)信息的報文通過內聯口轉發(fā)給硬件轉發(fā)芯片;[0087]第四處理單元,用于觸發(fā)硬件轉發(fā)芯片通過內聯口接收到處理后的攜帶有硬件轉發(fā)信息的報文之后,剝除該報文中的硬件轉發(fā)信息,根據該硬件轉發(fā)信息,按照硬件轉發(fā)芯片中的流表d及其之后連續(xù)的各級流表中的每一個流表,對剝除了硬件轉發(fā)信息后的報文進行查表轉發(fā)處理。[0088]當多級流表中的第一個流表位于轉發(fā)CPU中時,轉發(fā)處理模塊還包括:第五處理單元,用于觸發(fā)硬件轉發(fā)芯片在接收到來自本交換機外部的報文之后,在該報文中攜帶硬件轉發(fā)信息,并將該攜帶有硬件轉發(fā)信息的報文通過內聯口發(fā)送給轉發(fā)CPU,其中,硬件轉發(fā)信息中的報文處理階段是空。[0089]當多級流表中的最個一級流表位于轉發(fā)CPU中時,轉發(fā)處理模塊包括:第六處理單元,用于觸發(fā)硬件轉發(fā)芯片通過內聯口接收到按照最后一個流表處理后的攜帶有硬件轉發(fā)信息的報文,剝除該報文中的硬件轉發(fā)信息后轉發(fā)出去。[0090]綜上,本申請以上實施例可以達到以下技術效果:[0091]OpenFlow交換機的控制平面中增加了一個轉發(fā)CPU,OpenFlow交換機中的多級流表一部分使用硬件轉發(fā)芯片中的現有表項資源來實現,另一部分使用該轉發(fā)CPU中的軟件資源來實現,這樣,硬件轉發(fā)芯片中的現有表項資源不能支持的功能,就可以由轉發(fā)CPU中的軟件資源來實現,從而能夠支持復雜的OpenFlow流表轉發(fā)功能。[0092]以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內?!緳嗬蟆?.一種開放流OpenFlow系統(tǒng)中的報文轉發(fā)方法,所述OpenFlow系統(tǒng)中包括:OpenFlow控制器和OpenFlow交換機,所述方法應用于所述OpenFlow交換機,其特征在于,所述OpenFlow交換機包括:硬件轉發(fā)芯片和轉發(fā)中央處理器CPU,所述硬件轉發(fā)芯片和轉發(fā)CPU通過內聯口相連,所述方法包括:接收到OpenFlow控制器發(fā)來的流表項下發(fā)指令,其中,所述流表項下發(fā)指令中攜帶有需要下發(fā)的流表項;將所述需要下發(fā)的流表項添加到對應流表中,其中,所述對應流表在本交換機的硬件轉發(fā)芯片或轉發(fā)CPU中,所述硬件轉發(fā)芯片中的流表和所述轉發(fā)CPU中的流表串聯組成多級流表;在接收到報文之后,依次按照所述多級流表中的每一個流表對該報文進行查表轉發(fā)處理。2.根據權利要求1所述的方法,其特征在于,所述流表項下發(fā)指令中還攜帶有所述需要下發(fā)的流表項對應的流表的表ID,則,將所述需要下發(fā)的流表項添加到對應流表中的方法包括:將所述需要下發(fā)的流表項添加到所述表ID所指示的流表中;在接收到OpenFlow控制器發(fā)來的流表項下發(fā)指令之后,還包括:根據與所述OpenFlow控制器的協商結果,確定所述表ID所指示的流表的創(chuàng)建位置,所述創(chuàng)建位置是所述硬件轉發(fā)芯片或所述轉發(fā)CPU;在確定的創(chuàng)建位置中創(chuàng)建所述表ID所指示的流表。3.根據權利要求2所述的方法,其特征在于,所述硬件轉發(fā)芯片中的流表a串聯的下一個流表是流表b,且流表b位于所述轉發(fā)CPU中,則,將所述需要下發(fā)的流表項添加到所述流表a中時,在所述需要下發(fā)的流表項中的執(zhí)行動作Action中增加預設動作,所述預設動作是通過所述內聯口轉發(fā);所述依次按照所述多級流表中的每一個流表對該報文進行查表轉發(fā)處理的方法包括:所述硬件轉發(fā)芯片按照所述流表a對報文進行查表轉發(fā)處理,其中,在按照查表得到的匹配表項中的所述預設動作將報文通過所述內聯口轉發(fā)給所述轉發(fā)CPU時,在報文中攜帶硬件轉發(fā)信息,其中,所述硬件轉發(fā)信息包括:報文入端口、報文處理階段以及報文出端口,所述報文處理階段是流表a;所述轉發(fā)CPU通過所述內聯口接收到攜帶有硬件轉發(fā)信息的報文之后,依次按照所述轉發(fā)CPU中的所述流表b及其之后連續(xù)的各個流表中的每一個流表,對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理;其中,按照所述轉發(fā)CPU中的一個流表,對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理時,按照查表得到的匹配表項中的執(zhí)行動作,對攜帶有硬件轉發(fā)信息的報文中的硬件轉發(fā)信息進行修改。4.根據權利要求3所述的方法,其特征在于,所述轉發(fā)CPU中的流表c串聯的下一個流表是流表d,且流表d位于所述硬件轉發(fā)芯片中,則,將所述需要下發(fā)的流表項添加到所述流表c中時,在所述需要下發(fā)的流表項中的執(zhí)行動作中增加所述預設動作;所述依次按照所述多級流表中的每一個流表對該報文進行查表轉發(fā)處理的方法還包括:所述轉發(fā)CPU按照所述流表c對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理,按照查表得到的匹配表項中的所述預設動作,將處理后的攜帶有硬件轉發(fā)信息的報文通過所述內聯口轉發(fā)給所述硬件轉發(fā)芯片;所述硬件轉發(fā)芯片通過所述內聯口接收到所述處理后的攜帶有硬件轉發(fā)信息的報文之后,剝除該報文中的硬件轉發(fā)信息,根據該硬件轉發(fā)信息并按照所述硬件轉發(fā)芯片中的所述流表d及其之后連續(xù)的各級流表中的每一個流表,對剝除了硬件轉發(fā)信息后的報文進行查表轉發(fā)處理。5.根據權利要求3所述的方法,其特征在于,當所述多級流表中的第一個流表位于所述轉發(fā)CPU中時,所述依次按照所述多級流表中的每一個流表對該報文進行查表轉發(fā)處理的方法還包括:所述硬件轉發(fā)芯片在接收到來自本交換機外部的報文之后,在該報文中攜帶硬件轉發(fā)信息,并將該攜帶有硬件轉發(fā)信息的報文通過所述內聯口發(fā)送給所述轉發(fā)CPU,其中,所述硬件轉發(fā)信息中的報文處理階段是空;當所述多級流表中的最后一個流表位于所述轉發(fā)CPU中時,所述依次按照所述多級流表中的每一個流表對該報文進行查表轉發(fā)處理的方法還包括:所述硬件轉發(fā)芯片通過所述內聯口接收到按照所述最后一個流表處理后的攜帶有硬件轉發(fā)信息的報文,剝除該報文中的硬件轉發(fā)信息后轉發(fā)出去。6.一種開放流OpenFlow系統(tǒng)中的報文轉發(fā)裝置,所述OpenFlow系統(tǒng)中包括:OpenFlow控制器和OpenFlow交換機,所述裝置應用于所述OpenFlow交換機,其特征在于,所述OpenFlow交換機包括:硬件轉發(fā)芯片和轉發(fā)中央處理器CPU,所述硬件轉發(fā)芯片和轉發(fā)CPU通過內聯口相連,所述裝置包括:接收模塊,用于接收OpenFlow控制器發(fā)來的流表項下發(fā)指令,其中,所述流表項下發(fā)指令中攜帶有需要下發(fā)的流表項;流表項下發(fā)模塊,用于將所述接收模塊接收到的流表項下發(fā)指令中的需要下發(fā)的流表項添加到對應流表中,其中,所述對應流表在本交換機的硬件轉發(fā)芯片或轉發(fā)CPU中,所述硬件轉發(fā)芯片中的流表和所述轉發(fā)CPU中的流表串聯組成多級流表;轉發(fā)處理模塊,用于在接收到報文之后,依次按照所述多級流表中的每一個流表對該報文進行查表轉發(fā)處理。7.根據權利要求6所述的裝置,其特征在于,所述流表項下發(fā)指令中還攜帶有所述需要下發(fā)的流表項對應的流表的表ID,則,所述流表項下發(fā)模塊具體用于將所述需要下發(fā)的流表項添加到所述表ID所指示的流表中。8.根據權利要求7所述的裝置,其特征在于,還包括:確定模塊,用于根據本交換機與所述OpenFlow控制器的協商結果,確定所述表ID所指示的流表的創(chuàng)建位置,所述創(chuàng)建位置是所述硬件轉發(fā)芯片或所述轉發(fā)CPU;流表創(chuàng)建模塊,用于在所述確定模塊確定的創(chuàng)建位置中創(chuàng)建所述表ID所指示的流表。9.根據權利要求7所述的裝置,其特征在于,所述硬件轉發(fā)芯片中的流表a串聯的下一個流表是流表b,且流表b位于所述轉發(fā)CPU中,則,所述流表項下發(fā)模塊具體用于在將所述需要下發(fā)的流表項添加到所述流表a中時,在所述需要下發(fā)的流表項中的執(zhí)行動作Action中增加預設動作,所述預設動作是通過所述內聯口轉發(fā);所述轉發(fā)處理模塊包括:第一處理單元,用于觸發(fā)所述硬件轉發(fā)芯片按照所述流表a對報文進行查表轉發(fā)處理,其中,在按照查表得到的匹配表項中的所述預設動作將報文通過所述內聯口轉發(fā)給所述轉發(fā)CPU時,在報文中攜帶硬件轉發(fā)信息,其中,所述硬件轉發(fā)信息包括:報文入端口、報文處理階段以及報文出端口,所述報文處理階段是流表a;第二處理單元,用于觸發(fā)所述轉發(fā)CPU通過所述內聯口接收到攜帶有硬件轉發(fā)信息的報文之后,依次按照所述轉發(fā)CPU中的所述流表b及其之后連續(xù)的各個流表中的每一個流表,對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理;其中,按照所述轉發(fā)CPU中的一個流表,對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理時,按照查表得到的匹配表項中的執(zhí)行動作,對攜帶有硬件轉發(fā)信息的報文中的硬件轉發(fā)信息進行修改。10.根據權利要求9所述的裝置,其特征在于,所述轉發(fā)CPU中的流表C串聯的下一個流表是流表d,且流表d位于所述硬件轉發(fā)芯片中,則,所述流表項下發(fā)模塊具體用于在將所述需要下發(fā)的流表項添加到所述流表c中時,在所述需要下發(fā)的流表項中的執(zhí)行動作中增加所述預設動作;所述轉發(fā)處理模塊還包括:第三處理單元,用于觸發(fā)所述轉發(fā)CPU按照所述流表c對攜帶有硬件轉發(fā)信息的報文進行查表轉發(fā)處理,按照查表得到的匹配表項中的所述預設動作,將處理后的攜帶有硬件轉發(fā)信息的報文通過所述內聯口轉發(fā)給所述硬件轉發(fā)芯片;第四處理單元,用于觸發(fā)所述硬件轉發(fā)芯片通過所述內聯口接收到所述處理后的攜帶有硬件轉發(fā)信息的報文之后,剝除該報文中的硬件轉發(fā)信息,根據該硬件轉發(fā)信息,按照所述硬件轉發(fā)芯片中的所述流表d及其之后連續(xù)的各級流表中的每一個流表,對剝除了硬件轉發(fā)信息后的報文進行查表轉發(fā)處理。11.根據權利要求9所述的裝置,其特征在于,所述轉發(fā)處理模塊還包括:第五處理單元,用于當所述多級流表中的第一個流表位于所述轉發(fā)CPU中時,觸發(fā)所述硬件轉發(fā)芯片在接收到來自本交換機外部的報文之后,在該報文中攜帶硬件轉發(fā)信息,并將該攜帶有硬件轉發(fā)信息的報文通過所述內聯口發(fā)送給所述轉發(fā)CPU,其中,所述硬件轉發(fā)信息中的報文處理階段是空;第六處理單元,用于當所述多級流表中的最個一級流表位于所述轉發(fā)CPU中時,觸發(fā)所述硬件轉發(fā)芯片通過所述內聯口接收到按照所述最后一個流表處理后的攜帶有硬件轉發(fā)信息的報文,剝除該報文中的硬件轉發(fā)信息后轉發(fā)出去。12.根據權利要求6所述的裝置,其特征在于,所述轉發(fā)CPU為以下之一:獨立的物理插卡、OpenFlow交換機的控制CPU中劃分出的獨立轉發(fā)核、所述控制CPU中劃分出的獨立轉發(fā)線程、板載的專用轉發(fā)CPU。【文檔編號】H04L12/741GK103428094SQ201310347955【公開日】2013年12月4日申請日期:2013年8月12日優(yōu)先權日:2013年8月12日【發(fā)明者】?;垆h申請人:杭州華三通信技術有限公司