開放流報文轉發方法及裝置制造方法
【專利摘要】本發明實施例公開了一種開放流報文轉發方法及裝置,在轉發設備和SDN控制器之間建立OpenFlow會話時,SDN控制器首先確定處理OpenFlow協議報文的目標服務器,然后,向網關設備下發轉發控制參數。網關設備根據轉發控制參數生成相應的流表。當網關設備接收到OpenFlow協議報文時,根據流表直接將所述OpenFlow協議報文轉發給相應的目標服務器。由上述內容可知,由于SDN控制器將其根據負載均衡算法計算所得到的目標服務器的MAC地址發送給網關設備,并指示網關設備將OpenFlow協議報文直接發送給目標服務器,無需由SDN控制器內的其它服務器中轉給目標服務器。因此,節省SDN控制器內服務器之間傳輸數據占用的帶寬,以及服務器之間通信所使用的CPU資源,同時,也提高OpenFlow協議報文的處理效率。
【專利說明】開放流報文轉發方法及裝置
【技術領域】
[0001]本發明涉及通信【技術領域】,特別是涉及一種開放流報文轉發方法及裝置。
【背景技術】
[0002]SDN(Software Defined Network,軟件定義網絡)是一種新型網絡創新架構,一般采用控制和轉發分離的架構,通過集中式SDN控制器(SDN Controller)來控制和管理底層物理網絡,Controller和每個轉發設備之間通過開放流OpenFlow協議進行通信。基于SDN的網絡構架如圖1所示,SDN controller位于應用層和基礎物理網絡之間,其中基礎物理網絡包括多個轉發設備(圖1中的I?5), SDN controller和轉發設備之間采用OpenFlow協議。SDN controller通過一個IP地址與轉發設備之間建立OpenFlow會話。
[0003]為了支持對大規模網絡的控制,SDN cont1ller—般運行于服務器集群上,即運行于多個虛擬機(Vitual Machine, VM)或物理服務器上,參見圖2, SDN controller運行于多個物理服務器(服務器I?服務器η)上,SDN controller可以根據服務器集群的負載情況,將OpenFlow會話分布在不同的物理服務器上,并且能夠進行動態調整。例如,轉發設備11 (其中,圖2中11?14均表不轉發設備)的OpenFlow會話原來由服務器2處理,當服務器I的CPU占用率比較高的時候,可以將該OpenFlow會話調整到服務器3上處理。SDN controller有IP地址和與該IP地址對應的MAC (Media Access Control,介質訪問控制)地址,當SDN controller收到目的IP地址為自身IP地址的ARP (Address Resolut1nProtocol,地址解析協議)Request報文時,會向ARP request報文的請求者回應與自身IP地址對應的MAC地址,該MAC地址對應服務器集群中的一個物理服務器的網卡MAC地址,例如對應服務器I的網卡MAC地址。其中,SDN controller的IP地址和該服務器I的網卡的MAC地址的對應關系保存在網關GW2的ARP表項中。轉發設備和SDN controller建立OpenFlow會話時,所有的OpenFlow協議報文都發送給服務器I (SDN controller的IP地址對應的物理服務器),由服務器I進行報文解析,并根據SDN controller內部的負載均衡算法,將OpenFlow協議報文中轉到相應的物理服務器進行處理。例如,圖2中轉發設備I與SDN controller之間建立OpenFlow會話,轉發設備I發送的OpenFlow協議報文經過網關GW1、網關GW2發送給服務器1,由服務器I根據負載均衡算法計算出處理該OpenFlow協議報文的物理服務器為服務器n,則服務器I再將轉發設備I的OpenFlow協議報文中轉到服務器η進行處理。
[0004]由上述的內容可知,現有技術中,所有轉發設備的OpenFlow協議報文都經過SDNcont1ller中的一個物理服務器(或VM)進行中轉,加重了該物理服務器(或VM)的數據處理負擔。而且,OpenFlow協議報文需要在SDN controller內部的物理服務器(或VM)之間進行中轉,浪費了服務器之間的帶寬和服務器的CPU資源。
【發明內容】
[0005]本發明實施例中提供了一種開放流報文轉發方法及裝置,以實現OpenFlow協議報文直接由網關設備轉發給目標服務器,節省SDN控制器內服務器之間傳輸數據占用的帶寬,同時,提高OpenFlow協議報文的處理效率。
[0006]為了實現上述發明目的,本發明實施例公開了如下技術方案:
[0007]第一方面,本發明實施例提供一種開放流報文轉發方法,包括:軟件定義網絡SDN控制器根據負載均衡算法,確定用于處理開放流OpenFlow協議報文的目標服務器;所述SDN控制器向自身連接的網關設備下發轉發控制參數,所述轉發控制參數包括所述目標服務器的媒體接入控制MAC地址,以使所述網關設備根據所述轉發控制參數生成流表,并依據所述流表將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器。
[0008]結合第一方面,在第一方面的第一種可能的實現方式中,所述轉發控制參數還包括源IP地址,所述源IP地址為與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址。
[0009]結合第一方面或第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,所述轉發控制參數還包括所述網關設備上連接所述目標服務器的物理端口,以使所述網關設備通過所述物理端口將OpenFlow協議報文轉發給所述目標服務器。
[0010]結合第一方面的第一種可能的實現方式,在第一方面的第三種可能的實現方式中,所述方法還包括:
[0011]所述SDN控制器根據負載均衡算法,重新確定處理所述OpenFlow會話的新目標服務器;
[0012]所述SDN控制器向所述網關設備下發流表修改指示信息;
[0013]所述流表修改指示信息至少包括所述源IP地址、目的IP地址、目的端口號和所述新目標服務器對應的MAC地址,所述流表修改指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址;
[0014]或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所示目的端口號、所述新目標服務器對應的MAC地址和所述網關設備上連接所述目標服務器的物理端口,所述流表修改指示信息指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器對應的MAC地址和物理端口 ;
[0015]其中,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFLow協議的TCP端口號。
[0016]結合第一方面的第一種可能的實現方式,在第一方面的第四種可能的實現方式中,所述方法還包括:
[0017]當檢測到所述的OpenFlow會話終止時,所述SDN控制器向所述網關設備下發流表刪除指示信息,所述流表刪除指示信息至少包括所述源IP地址、目的IP地址和目的端口號,所述流表刪除指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找到待刪除流表,并刪除所述待刪除流表;
[0018]其中,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號。
[0019]第二方面,本發明實施例提供一種開放流報文轉發方法,包括:
[0020]網關設備接收軟件定義網絡SDN控制器下發的轉發控制參數,所述轉發控制參數至少包括處理OpenFlow協議報文的目標服務器的媒體接入控制MAC地址,所述目標服務器由所述SDN控制器根據負載均衡算法計算得到;
[0021]所述網關設備根據所述轉發控制參數生成流表,所述流表用于指示所述網關設備將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器;
[0022]當所述網關設備接收到OpenFlow協議報文時,根據所述流表將所述OpenFlow協議報文轉發給所述目標服務器。
[0023]結合第二方面,在第二方面的第一種可能的實現方式中,所述流表包括匹配項和動作項,所述匹配項包括源IP地址、目的IP地址和目的端口號,所述動作項包括物理端口、虛擬局域網VLAN和MAC地址;
[0024]所述網關設備根據所述轉發控制參數生成流表,包括:
[0025]所述網關設備將所述源IP地址設置為通配符,或者,當所述轉發控制參數還包括源IP地址時,所述網關設備將所述流表的源IP地址設置為所述轉發控制參數所包括的源IP地址,其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址;
[0026]所述網關設備將所述流表中的目的IP地址設置為所述SDN控制器的IP地址,將所述目的端口號設置為OpenFlow協議的TCP端口號;
[0027]所述網關設備將所述MAC地址設置為所述目標服務器的MAC地址,將VLAN設置為所述SDN控制器與所述網關設備之間通信的VLAN ;
[0028]以及,所述網關設備將所述物理端口設置為獲得的所述網關設備上連接所述目標服務器的物理端口。
[0029]結合第二方面,在第二方面的第二種可能的實現方式中,所述方法還包括:
[0030]所述網關設備接收所述SDN控制器下發的流表修改指示信息;
[0031]所述流表修改指示信息至少包括源IP地址、目的IP地址、目的端口號和新目標服務器對應的MAC地址,所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址;
[0032]或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所述目的端口號、所述新目標服務器對應的MAC地址,以及,所述網關設備上連接所述目標服務器的物理端口 ;所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,所述網關設備將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器的MAC地址和物理端口 ;
[0033]其中,所述源IP地址是與所述SDN控制器建立OpenFlow會話的轉發設備的IP地址,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號;所述新目標服務器由所述SDN控制器根據負載均衡算法重新計算得到。
[0034]結合第二方面的第一種可能的實現方式,在第二方面的第三種可能的實現方式中,所述方法還包括:
[0035]所述網關設備接收所述SDN控制器下發的流表刪除指示信息,所述流表刪除指示信息至少包括源IP地址、目的IP地址和目的端口號;
[0036]所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待刪除流表,并刪除所述待刪除流表;
[0037]其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow會話的轉發設備的IP地址,所述流表刪除指示信息由所述SDN控制器檢測到所述轉發設備的OpenFlow會話終止時產生。
[0038]第三方面,本發明實施例提供一種軟件定義網絡SDN控制器,包括:
[0039]確定單元,用于根據負載均衡算法,確定用于處理開放流OpenFlow協議報文的目標服務器;
[0040]發送單元,用于向自身連接的網關設備下發轉發控制參數,所述轉發控制參數包括所述目標服務器的媒體接入控制MAC地址,以使所述網關設備根據所述轉發控制參數生成流表,并依據所述流表將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器。
[0041]結合第三方面,在第三方面的第一種可能的實現方式中,所述轉發控制參數還包括源IP地址,所述源IP地址為與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址。
[0042]結合第三方面或第三方面的第一種可能的實現方式,在第三方面的第二種可能的實現方式中,所述轉發控制參數還包括所述網關設備上連接所述目標服務器的物理端口,以使所述網關設備通過所述物理端口將OpenFlow協議報文轉發給所述目標服務器。
[0043]結合第三方面,在第三方面的第三種可能的實現方式中,所述確定單元,還用于根據負載均衡算法,重新確定處理所述OpenFlow會話的新目標服務器;
[0044]所述發送單元,還用于向所述網關設備下發流表修改指示信息;
[0045]所述流表修改指示信息至少包括所述源IP地址、目的IP地址、目的端口號和所述新目標服務器對應的MAC地址,所述流表修改指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址;
[0046]或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所示目的端口號、所述新目標服務器對應的MAC地址和所述網關設備上連接所述目標服務器的物理端口,所述流表修改指示信息指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器對應的MAC地址和物理端口 ;
[0047]其中,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFLow協議的TCP端口號。
[0048]結合第三方面,在第三方面的第四種可能的實現方式中,所述發送單元,還用于當檢測到所述的OpenFlow會話終止時,向所述網關設備下發流表刪除指示信息;
[0049]其中,所述流表刪除指示信息至少包括所述源IP地址、目的IP地址和目的端口號,所述流表刪除指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找到待刪除流表,并刪除所述待刪除流表;
[0050]所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號。
[0051]第四方面,本發明實施例提供一種網關設備,包括:
[0052]接收單元,用于接收軟件定義網絡SDN控制器下發的轉發控制參數,所述轉發控制參數至少包括處理OpenFlow協議報文的目標服務器的媒體接入控制MAC地址,所述目標服務器由所述SDN控制器根據負載均衡算法計算得到;
[0053]流表生成單元,用于根據所述轉發控制參數生成流表,所述流表用于指示所述網關設備將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器;
[0054]發送單元,用于當所述網關設備接收到OpenFlow協議報文時,根據所述流表將所述OpenFlow協議報文轉發給所述目標服務器。
[0055]結合第四方面,在第四方面的第一種可能的實現方式中,所述流表包括匹配項和動作項,所述匹配項包括源IP地址、目的IP地址和目的端口號,所述動作項包括物理端口、虛擬局域網VLAN和MAC地址;
[0056]所述流表生成單元具體用于:
[0057]將所述源IP地址設置為通配符,或者,當所述轉發控制參數還包括源IP地址時,將所述源IP地址設置為所述轉發控制參數所包括的源IP地址,其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址;
[0058]將所述流表中的目的IP地址設置為所述SDN控制器的IP地址,將所述目的端口號設置為OpenFlow協議的TCP端口號;
[0059]將所述MAC地址設置為所述目標服務器的MAC地址,將VLAN設置為所述SDN控制器與所述網關設備之間通信的VLAN ;
[0060]以及,將所述物理端口設置為獲得的所述網關設備上連接所述目標服務器的物理端口。
[0061]結合第四方面,在第四方面的第二種可能的實現方式中,所述裝置還包括:修改單元;
[0062]所述接收單元還用于,接收所述SDN控制器下發的流表修改指示信息;
[0063]其中,所述流表修改指示信息至少包括源IP地址、目的IP地址、目的端口號和新目標服務器對應的MAC地址;所述修改單元,用于根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址;
[0064]或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所述目的端口號、所述新目標服務器對應的MAC地址,以及,所述網關設備上連接所述目標服務器的物理端口 ;所述修改單元,用于根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器的MAC地址和物理端口 ;
[0065]其中,所述源IP地址是與所述SDN控制器建立OpenFlow會話的轉發設備的IP地址,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號;所述新目標服務器由所述SDN控制器根據負載均衡算法重新計算得到。
[0066]結合第四方面的第一種可能的實現方式,在第四方面的第三種可能的實現方式中,所述裝置還包括刪除單元:
[0067]所述接收單元,還用于接收所述SDN控制器下發的流表刪除指示信息,所述流表刪除指示信息至少包括源IP地址、目的IP地址和目的端口號;
[0068]所述刪除單元,用于根據所述源IP地址、所述目的IP地址和所述目的端口號查找待刪除流表,并刪除所述待刪除流表;
[0069]其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow會話的轉發設備的IP地址,所述流表刪除指示信息由所述SDN控制器檢測到所述轉發設備的OpenFlow會話終止時產生。
[0070]由以上技術方案可見,本發明實施例提供的開放流報文轉發方法及裝置,在轉發設備和SDN控制器之間建立OpenFlow會話時,SDN控制器首先確定處理OpenFlow協議報文的目標服務器,然后,向網關設備下發轉發控制參數。網關設備根據所述轉發控制參數生成相應的流表。當網關設備接收到OpenFlow協議報文時,根據所述流表直接將所述OpenFlow協議報文轉發給相應的目標服務器。由上述內容可知,由于SDN控制器將其根據負載均衡算法計算所得到的目標服務器的MAC地址發送給網關設備并指示網關設備將OpenFlow協議報文直接發送給目標服務器,因此無需由SDN控制器內的其它服務器中轉給目標服務器,因此,節省SDN控制器內服務器之間傳輸數據占用的帶寬,以及服務器之間通信所使用的CPU資源,同時,也提高OpenFlow協議報文的處理效率。
【專利附圖】
【附圖說明】
[0071]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領域普通技術人員而言,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0072]圖1為一種SDN網絡構架示意圖;
[0073]圖2為另一種SDN網絡構架示意圖;
[0074]圖3為本發明實施例一種開放流報文轉發方法的流程示意圖;
[0075]圖4為本發明實施例另一種開放流報文轉發方法的流程示意圖;
[0076]圖5為本發明實施例又一種開放流報文轉發方法的流程示意圖;
[0077]圖6為本發明實施例一種開放流報文轉發方法的流程示意圖;
[0078]圖7為本發明實施例另一種開放流報文轉發方法的流程示意圖;
[0079]圖8為本發明實施例另一種開放流報文轉發方法的流程示意圖;
[0080]圖9為本發明實施例另一種開放流報文轉發方法的信令示意圖;
[0081]圖10為本發明實施例一種開放流報文轉發裝置的結構示意圖;
[0082]圖11為本發明實施例另一種開放流報文轉發裝置的結構示意圖;
[0083]圖12為本發明實施例一種開放流報文轉發裝置的結構示意圖;
[0084]圖13為本發明實施例另一種開放流報文轉發裝置的結構示意圖;
[0085]圖14為本發明實施例又一種開放流報文轉發裝置的結構示意圖;
[0086]圖15為本發明實施例再一種開放流報文轉發裝置的結構示意圖。
【具體實施方式】
[0087]為了使本【技術領域】的人員更好地理解本發明中的技術方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。
[0088]圖3示出了本發明實施例一種開放流報文轉發方法的流程示意圖,該方法應用于SDN控制器中,如圖3所示,所述方法包括以下步驟:
[0089]S110, SDN控制器根據負載均衡算法,確定用于處理OpenFlow協議報文的目標服務器。
[0090]當SDN控制器接收到轉發設備發送的建立OpenFlow會話的請求消息時,首先根據自身的負載均衡算法,計算出處理該OpenFlow會話的服務器。可以采用現有的Static算法、Random 算法、Round robin 算法、Hash 算法、CARP 算法、Consistent hash 算法等負載均衡算法,此處不再贅述。
[0091]S120,SDN控制器向自身連接的網關設備下發轉發控制參數,所述轉發控制參數包括所述目標服務器的MAC(Media Access Control,媒體接入控制)地址,以使網關設備根據所述轉發控制參數生成流表,并依據所述流表將所述OpenFlow協議報文轉發給所述MAC地址所對應的所述目標服務器。
[0092]SDN控制器計算出處理所述OpenFlow會話的服務器后,通過網關設備的開放的API (Applicat1n Programming Interface,應用程序編程接口)接口向網關設備動態下發所述轉發控制參數。
[0093]舉例說明,SDN控制器下發所述轉發控制參數可以通過下發流表的方式實現,SDN控制器下發的流表包括匹配項和動作項,所述匹配項包括源IP地址、目的IP地址、目標端口號;所述動作項包括物理端口、VLAN和MAC地址。
[0094]可選地,匹配項中的源IP地址無需動態下發給網關設備,此種情況下由網關設備將生成的流表中的源IP地址的值設置為通配符。所述目的IP地址和目的端口號也可以由網關設備靜態配置;動作項中的MAC地址需要動態下發給網關設備。VLAN和物理端口可以由網關設備靜態配置,不需要SDN控制器動態下發給網關設備。
[0095]可選地,SDN控制器下發的流表中的源IP地址可以是與SDN控制器建立OpenFlow會話的轉發設備的IP地址,此種情況下,需要將所述源IP地址動態下發給網關設備;當網關設備的多個物理端口分別連接不同的服務器是,所述物理端口需要動態下發給網關設備;所述目的IP地址、目的端口號和VLAN可以由網關設備靜態配置。
[0096]網關設備通過開放流接口接收到所述轉發控制參數后,根據轉發控制參數生成流表項。
[0097]網關設備生成的流表中的每個流表項是一個轉發規則。所述流表項包括:源IP地址、目的IP地址、目的端口號、物理端口、VLAN(Virtual Local Area Network,虛擬局域網)和MAC地址,其中,源IP地址、目的IP地址和目的端口號是匹配項,物理端口、VlAN和MAC地址是動作項。
[0098]在本申請的一個實施例中,所述流表中的源IP地址可以設置為通配符;所述MAC地址設置為所述轉發控制參數包括的目標服務器的MAC地址。所述目的IP地址設置為SDN控制器的IP地址;所述目的端口號設置為OpenFlow協議的端口號6653 ;所述物理端口設置為網關設備上連接所述目標服務器的物理端口 ;VLAN設置為所述網關設備與SDN控制器之間通信的VLAN。
[0099]需要說明的是,當網關設備的一個物理端口同時對應SDN控制器中多個服務器時,此種情況下連接服務器的物理端口一般是固定的;同時,SDN控制器和網關設備之間通信的VLAN,一般也是固定值,因此,物理端口和VLAN由網關設備靜態配置即可,不需要SDN控制器動態下發。
[0100]進一步地,OpenFlow協議的TCP端口固定為6653 ;SDN控制器的IP地址一般是統一的IP地址,因此,目的端口號和目的IP地址也可以由網關設備靜態配置,不需要SDN控制器動態下發。
[0101]在本申請的另一個實施例中,所述轉發控制參數還可以包括源IP地址,所述源IP地址為與所述SDN控制器建立OpenFlow會話的轉發設備的IP地址。此種情況下,網關設備生成的流表項中的源IP地址設置為所述轉發控制參數包括的所述轉發設備的IP地址,其它項與上述內容相同,此處不再贅述。
[0102]在本申請的又一個實施例中,假設網關設備的一個物理端口對應連接SDN控制器內的一個服務器,換言之,SDN控制器內的多個服務器分別與網關設備的多個物理端口連接。此種情況下,SDN控制器下發的所述轉發控制參數,還應該包括網關設備上連接所述目標服務器的物理端口,告知網關設備連接所述目標服務器的物理端口是哪個,并通過該物理端口將所述OpenFlow協議報文轉發給所述目標服務器。
[0103]網關設備接收到OpenFlow協議報文后,根據流表中的匹配項查找對應的流表,然后,根據流表中的動作項,將所述目標服務器的MAC地址和VLAN封裝成以太幀的幀頭。其中,將所述目標服務器的MAC地址作為幀頭的目的MAC地址,所述VLAN作為幀頭的VLAN,通過所述物理端口將封裝后的以太幀轉發給所述目標服務器。
[0104]本實施例提供的開放流報文轉發方法,在SDN控制器接收到OpenFlow會話建立請求時,SDN控制器首先根據負載均衡算法確定處理OpenFlow協議報文的目標服務器。然后,SDN控制器向網關設備下發轉發所述OpenFlow協議報文的轉發控制參數。網關設備根據所述轉發控制參數生成相應的流表。當網關設備接收到OpenFlow協議報文后,根據流表直接將所述OpenFlow協議報文轉發給處理目標服務器。這樣,OpenFlow協議報文無需由SDN控制器內的一個服務器中轉給目標服務器,因此,節省了 SDN控制器內服務器之間傳輸數據占用的帶寬,以及服務器之間通信所使用的CPU資源,同時,也提高了 OpenFlow協議報文的處理效率。
[0105]如果SDN控制器需要調整服務器內的負載,例如,某個服務器的負載過重、而其它的服務器負載較輕時需要調整服務器內的負載分布。調整處理OpenFlow協議報文的服務器后,對應的需要通知網關設備。
[0106]請參見圖4,示出了本發明實施例另一種開放流報文轉發方法的流程示意圖,該方法應用于SDN控制器中,本實施例在圖3所示實施例的基礎上增加步驟S130?S140,其中,SllO?S120與圖3相同,此處不再贅述。
[0107]S130, SDN控制器根據負載均衡算法,重新確定所述OpenFlow協議報文對應的新目標服務器。
[0108]假設,SDN控制器檢測到目標服務器的負載過重時,根據負載均衡算法重新計算出處理所述OpenFlow協議報文的新目標服務器。
[0109]S140, SDN控制器向所述網關設備下發流表修改指示信息。
[0110]當源IP地址的值是與SDN控制器建立OpenFlow會話的設備對應的IP地址時,所述流表修改指示信息包括:所述源IP地址、目的IP地址、目的端口號和所述新目標服務器對應的MAC地址;所述。所述流表修改指示信息用于指示所述網關設備根據所述源IP地址、目的IP地址和目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址。
[0111]當源IP地址的值是通配符時,所述流表修改指示信息可以不包括源IP地址,此時流表修改指示信息包括所述目的IP地址、所述目的端口號和所述新目標服務器對應的MAC地址,網關設備根據所述目的IP地址和所述目的端口號查找待修改流表,并將待修改流表中的MAC地址修改為新目標服務器的MAC地址。
[0112]所述流表修改指示信息可以通過網關設備的開放的API接口發送給網關設備。網關設備根據流表修改指示信息在本地查找待修改流表后,將所述待修改流表中的MAC地址修改為新目標服務器對應的MAC地址。
[0113]在本申請的另一個實施例中,SDN控制器內的多個服務器分別連接網關設備的不同的物理端口,這種情況下,如果修改目標服務器,SDN控制器需要告知網關設備新目標服務器的MAC地址和連接網關設備的物理端口,即SDN控制器下發的流表修改指示信息包括:源IP地址、目的IP地址、目的端口號、所述新目標服務器對應的MAC地址和物理端口。此種情況下,網關設備需要修改所述待修改流表中服務器對應的MAC地址,還需要將流表中的物理端口修改為所述新目標服務器對應的物理端口。
[0114]當源IP地址的值是通配符時,所述流表修改指示信息可以不包括源IP地址,此時流表修改指示信息包括:所述目的IP地址、所述目的端口號、所述新目標服務器對應的MAC地址和物理端口,則網關設備根據所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器對應的MAC地址和物理端口。
[0115]當網關設備接收到轉發設備發送的OpenFlow協議報文后,根據流表中的匹配項查找對應的流表,然后根據查找到的流表中的動作項將所述OpenFlow協議報文直接轉發給所述新目標服務器。
[0116]本實施例提供的開放流報文轉發方法,SDN控制器調整轉發設備對應的目標服務器后,向網關設備下發流表修改指示信息,網關設備根據所述流表修改指示信息將所述轉發設備對應的流表中的MAC地址和物理端口修改為新目標服務器對應的MAC地址和物理端口。即SDN控制器通過網關設備上的API接口動態修改網關設備上的相應的流表,從而使網關設備根據修改后的流表將OpenFlow協議報文轉發給新目標服務器。
[0117]當設備與SDN控制器之間的OpenFlow會話終止,例如,OpenFlow會話結束、超時,或所述設備退出網絡后,SDN控制器可以通知網關設備刪除所述設備對應的流表,從而節省網關設備上存儲流表的存儲空間。
[0118]請參見圖5,在圖3所示實施例的基礎上增加步驟S150,其中SllO?S120與圖3相同,此處不再贅述。
[0119]S150, SDN控制器檢測到所述轉發設備的OpenFlow會話終止時,向所述網關設備下發流表刪除指示信息。
[0120]該流表刪除指示信息可以通過網關設備的開放流動態接口發送給網關設備。
[0121]所述流表刪除指示信息至少包括源IP地址、目的IP地址和目的端口號;所述源IP地址是與所述SDN控制器建立OpenFLow會話轉發設備的IP地址;所述目的IP地址是所述SDN控制器的IP地址;所述目的端口號是OpenFlow協議的TCP端口號6653。所述流表刪除指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找到待刪除流表,并刪除所述待刪除流表。
[0122]網關設備根據所述流表刪除指示信息中的所述源IP地址、所述目的IP地址和所述目的端口號查找待刪除流表,如果網關設備查找到本地存在所述待刪除流表,則刪除該待刪除流表,避免網關設備中存儲大量OpenFlow會話已終止的流表存儲在網關設備中,浪費網關設備內的存儲空間。
[0123]在本申請的另一個實施例中,如果網關設備生成的流表項中的源IP地址為通配符,則根據所述目的IP地址和所述目的端口號查找待刪除流表,并刪除所述待刪除流表。
[0124]相應于上述的應用于SDN控制器的方法實施例,本發明還提供了應用于網關設備的方法實施例。
[0125]圖6是本發明一種開放流報文轉發方法的流程示意圖,該方法應用于網關設備中,如圖6所示,所述方法包括以下步驟:
[0126]S210,網關設備接收SDN控制器下發的轉發控制參數。所述轉發控制參數至少包括目標服務器的MAC地址。所述目標服務器用于處理轉發設備發送的OpenFlow協議報文,且由SDN控制器根據負載均衡算法計算得到。
[0127]S220,網關設備根據所述轉發控制參數生成流表。所述流表用于指示所述網關設備將所述OpenFlow協議報文轉發給所述MAC地址對應的目標服務器。
[0128]網關設備生成的所述流表的每個流表項包括:源IP地址、目的IP地址、目標端口號、物理端口、VLAN和MAC地址,其中,源IP地址、目的IP地址和目的端口號是匹配項,物理端口、VlAN和MAC地址是動作項。
[0129]在本申請的一個實施例中,所述轉發控制參數包括目標服務器的MAC地址。此種情況下,所述網關設備生成的流表中匹配項的源IP地址設置為通配符。所述目的IP地址設置為所述SDN控制器的IP地址;所述目的端口號是OpenFlow協議端口號為6653 ;所述物理端口設置為所述網關設備上連接所述目標服務器的物理端口 ;VLAN為網關設備與SDN控制器之間通信的VLAN ;所述MAC地址設置為所述轉發控制參數包括的所述目標服務器的MAC地址。
[0130]此種情況下,網關設備接收到OpenFlow協議報文后,根據流表中的匹配項查找對應的流表項,根據流表中的動作項將所述OpenFlow協議報文直接發送給所述MAC地址對應的所述目標服務器。動作項的具體含義請參見前述的相關內容。
[0131 ] 需要說明的是,物理端口和VLAN可以由網關設備靜態配置,不需要SDN控制器動態下發。
[0132]進一步地,OpenFlow協議的TCP端口固定為6653 ;SDN控制器的IP地址一般是統一的IP地址,因此,目的端口號和目的IP地址也可以由網關設備靜態配置。
[0133]在本申請的另一個實施例中,所述轉發控制參數的匹配項還包括源IP地址,所述源IP地址為與所述SDN控制器建立OpenFLow會話的轉發設備的IP地址。此種情況下,網關設備生成的流表項中的源IP地址設置為所述轉發控制參數包括的所述源IP地址,其它項與上述內容相同,此處不再贅述。
[0134]S230,當網關設備接收到所述OpenFlow協議報文時,根據所述流表將所述OpenFlow協議報文轉發給所述目標服務器。
[0135]網關設備接收到OpenFlow協議報文后,根據OpenFlow協議報文中的源IP地址、目的IP地址和目的端口號查找流表項,根據所述流表項中的動作項將所述OpenFlow協議報文直接發送給所述目標服務器。
[0136]本實施例提供的開放流報文轉發方法,在SDN控制器接收到OpenFlow會話請求后,SDN控制器根據負載均衡算法計算處理轉發設備發送的OpenFlow協議報文的目標服務器,并向網關設備下發轉發控制參數。網關設備根據轉發控制參數生成相應的流表。當網關設備接收到所述OpenFlow協議報文時,查找所述流表,將所述OpenFlow協議報文轉發給目標服務器。由于SDN控制器將其根據負載均衡算法計算所得到的目標服務器的MAC地址發送給網關設備并指示網關設備將OpenFlow協議報文轉發給目標服務器,因此,無需SDN控制器內的其它服務器中轉給目標服務器,從而節省了 SDN控制器內服務器之間傳輸數據占用的帶寬,以及服務器之間通信所使用的CPU資源,同時,也提高了 OpenFlow協議報文的處理效率。
[0137]圖7是本發明實施例另一種開放流報文轉發方法的流程示意圖,該方法應用于網關設備中,在圖6所示實施例的基礎上,還包括步驟S240?S250,其中,S210?S230與圖3中相同,此處不再贅述。
[0138]S240,網關設備接收所述SDN控制器下發的流表修改指示信息。
[0139]所述流表修改指示信息至少包括源IP地址、目的IP地址、目的端口號和處理所述OpenFLow協議報文的新目標服務器對應的MAC地址;其中,所述源IP地址是與所述SDN控制器建立OpenFlow會話的轉發設備對應的IP地址,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號6653 ;所述新目標服務器由所述SDN控制器根據負載均衡算法重新計算得到。
[0140]當SDN控制器檢測到目標服務器的負載過重,根據負載均衡算法重新確定處理所述轉發設備發送的OpenFlow協議報文的新目標服務器,并告知網關設備所述新目標服務器的相關信息。當SDN控制器內的多個服務器連接網關設備的同一物理端口時,網關設備在修改流表項時,只需修改目標服務器的MAC地址。(例如,所述新目標服務器的MAC地址;或者,所述新目標服務器對應的MAC地址和物理端口)。
[0141]S250,網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找到待修改流表,并將所述待修改流表中的目標服務器對應的MAC地址修改為所述新目標服務器的MAC地址。
[0142]當SDN控制器內的多個服務器分別連接網關設備的不同物理端口時,網關設備在修改流表項時,需要修改MAC地址和物理端口,詳細過程請參見前述實施例中的相關內容,此處不再贅述。
[0143]當所述網關設備接收到所述轉發設備發送的OpenFlow協議報文時,根據修改后的流表將所述OpenFlow協議報文發送給所述新目標服務器。
[0144]本實施例提供的開放流報文轉發方法,SDN控制器調整OpenFlow協議報文對應的目標服務器后,向網關設備下發流表修改指示信息,網關設備根據所述流表修改指示信息將所述流表中的MAC地址(或MAC地址和物理端口 )修改為新目標服務器的MAC地址或(MAC地址和和物理端口)。即SDN控制器通過網關設備上的開放的API接口動態修改網關設備上的相應的流表,從而使網關設備根據修改后的流表將OpenFlow協議報文轉發給所述新目標服務器。
[0145]圖8是本發明實施例又一種開放流報文轉發方法的流程示意圖,該方法應用于網關設備中,在圖6所示實施例的基礎上,還可以包括步驟S260?S270,其中步驟S210?S230請參見圖6對應實施例的相關描述,此處不再贅述。
[0146]S260,網關設備接收SDN控制器下發的流變刪除指示信息。所述流表刪除指示信息至少包括所述源的IP地址、目的IP地址和目的端口號。所述源IP地址是與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的IP地址。所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號。所述流表刪除指示信息由所述SDN控制器檢測到所述轉發設備的OpenFlow會話終止時產生。
[0147]S270,網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找到待刪除流表,并刪除所述待刪除流表。
[0148]如果網關設備查找到本地存在所述待刪除流表,則刪除所述待刪除流表。避免網關設備中存儲大量OpenFlow會話已終止的轉發設備的流表存儲在網關設備中,浪費網關設備內存儲空間。
[0149]下面以一個具體實例介紹OpenFlow協議報文轉發過程,如圖9所示,示出了本發明實施例一種轉發設備與SDN控制器之間的OpenFlow協議報文轉發的信令示意圖。如圖9所示,該方法包括以下步驟:
[0150]S310,轉發設備向網關設備發送請求與SDN控制器之間建立OpenFlow會話的TCPSYN報文。
[0151]轉發設備首先獲取SDN控制器的IP地址,然后向該IP地址發起建立OpenFlow會話,首先是建立TCP (Transmiss1n Control Protocol傳輸控制協議)連接,包括TCP協議三次握手。TCP SYN(Synchronous,同步)報文是建立TCP連接時使用的握手信號。
[0152]S320,網關設備接收到所述TCP SYN報文后,將所述TCP SYN報文發送給SDN控制器。
[0153]本實施例中的SDN控制器可以是SDN控制器的主服務器。
[0154]網關設備在與SDN控制器通信之前,通過ARP (Address Resolut1n Protocol,地址解析協議)獲取SDN控制器的IP地址對應的MAC地址。網關設備接收到TCP SYN報文后,根據SDN控制器中主服務器的MAC地址將TCP SYN報文進行二層封裝,發送給所述主服務器。
[0155]S330, SDN控制器根據負載均衡算法確定用于處理所述轉發設備發送的OpenFlow協議報文的目標服務器。本實施例中的目標服務器為圖9中的目標服務器I。
[0156]SDN控制器接收到TCP SYN報文后,獲取轉發設備的IP地址。然后,根據負載均衡算法計算處理該轉發設備發送的OpenFlow協議報文的目標服務器。
[0157]S340, SDN控制器向網關設備發送轉發控制參數。
[0158]所述轉發控制參數包括所述目標服務器的MAC地址,或者,包括所述目標服務器對應的MAC地址和物理端口。
[0159]SDN控制器可以通過網關設備上的開放的API接口向網關設備發送轉發控制參數。
[0160]S350,網關設備根據所述轉發控制參數生成相應的流表。
[0161]所述流表的每個流表項包括:源IP地址、目的IP地址、目的端口號、物理端口、VLAN和MAC地址。所述流表項的各個字段內的具體值可以參見前述的實施例,此處不再贅述。
[0162]S360, SDN控制器將TCP SYN報文轉發給所述目標服務器。
[0163]S370,所述目標服務器通過所述網關設備向所述轉發設備返回TCP SYN+ACK報文。
[0164]S380,轉發設備接收到所述TCP SYN+ACK報文后,向網關設備返回TCP ACK報文。
[0165]S390,網關設備接收到轉發設備返回的TCP ACK報文后,根據轉發設備的流表,將TCP ACK報文直接轉發給目標服務器。
[0166]至此,轉發設備與SDN控制器之間的TCP會話握手成功,后續,轉發設備和SDN控制器之間可以進行OpenFlow通信。
[0167]S3100,轉發設備向網關設備發送OpenFlow協議報文。
[0168]S3110,網關設備查找相應的流表,根據所述流表將接收到的OpenFlow協議報文直接轉發給所述目標服務器。
[0169]S3120,SDN控制器根據負載均衡算法重新確定轉發設備對應的新目標服務器。本實施例中,所述新目標服務器為圖9中的目標服務器2。
[0170]S3130,SDN控制器向網關設備發送流表修改指示信息。所述流表修改指示信息至少包括所述源IP地址、目的IP地址、目的端口號、所述新目標服務器對應的MAC地址和物理端口。
[0171]S3140,網關設備根據所述流表修改指示信息將相應的流表中的MAC地址和物理端口修改為新目標服務器對應的MAC地址和物理端口。
[0172]S3150,網關設備根據修改后的流表,將接收到的OpenFlow協議報文轉發給新目標服務器。
[0173]S3160,SDN控制器檢測到轉發設備的OpenFlow會話終止時,向網關設備發送流表刪除指示信息。
[0174]所述流表刪除指示信息包括源IP地址、目的IP地址和目的端口號,所述源IP地址為所述轉發設備的IP地址。所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議端口號,以使網關設備根據源IP地址、目的IP地址和目的端口號查找相應的流表。
[0175]S3170,網關設備根據流表刪除指示信息刪除相應的流表。
[0176]通過以上的方法實施例的描述,所屬領域的技術人員可以清楚地了解到本發明可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:只讀存儲器(ROM)、隨機存取存儲器(RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0177]與本發明提供的開放流報文轉發方法實施例相對應,本發明還提供了 SDN控制器的實施例。
[0178]參見圖10,為本發明實施例提供的一種SDN控制器,如圖10所示,所述SDN控制器包括:確定單元110和發送單元120。
[0179]確定單元110,用于根據負載均衡算法,確定用于處理開放流OpenFlow協議報文的目標服務器。
[0180]發送單元120,用于向自身連接的網關設備下發轉發控制參數,所述轉發控制參數包括所述目標服務器的介質訪問控制MAC地址,以使所述網關設備根據所述轉發控制參數生成流表,并依據所述流表將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器。
[0181]在本發明的另一個實施例中,所述轉發控制參數還包括源IP地址,所述源IP地址為與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址。
[0182]在本發明的又一個實施例中,所述轉發控制參數還包括所述網關設備上連接所述目標服務器的物理端口,以使所述網關設備通過所述物理端口將OpenFlow協議報文轉發給所述目標服務器。
[0183]當SDN控制器內的服務器負載過重、而其它的服務器負載較輕時需要調整服務器內的負載分布。調整處理OpenFlow協議報文的服務器后,對應的需要通知網關設備。
[0184]此時,所述確定單元110,還用于根據負載均衡算法,重新確定處理所述OpenFlow會話的新目標服務器。
[0185]所述發送單元120,還用于向所述網關設備下發流表修改指示信息。
[0186]所述流表修改指示信息至少包括所述源IP地址、目的IP地址、目的端口號和所述新目標服務器對應的MAC地址,所述流表修改指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址;
[0187]或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所示目的端口號、所述新目標服務器對應的MAC地址和所述網關設備上連接所述目標服務器的物理端口,所述流表修改指示信息指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器對應的MAC地址和物理端口 ;
[0188]其中,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFLow協議的TCP端口號。
[0189]當設備與SDN控制器之間的OpenFlow會話終止,例如,OpenFlow會話結束、超時,或所述設備退出網絡后,SDN控制器可以通知網關設備刪除所述設備對應的流表,從而節省網關設備上存儲流表的存儲空間。
[0190]此時,所述發送單元120,還用于當檢測到所述的OpenFlow會話終止時,向所述網關設備下發流表刪除指示信息。
[0191]其中,所述流表刪除指示信息至少包括所述源IP地址、目的IP地址和目的端口號,所述流表刪除指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找到待刪除流表,并刪除所述待刪除流表;所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號。
[0192]本實施例提供的SDN控制器,首先由確定單元根據負載均衡算法確定處理OpenFlow協議報文的目標服務器。由發送單元向網關設備下發轉發所述OpenFlow協議報文的轉發控制參數。網關設備根據所述轉發控制參數生成相應的流表。當網關設備接收到所述轉發設備發送的OpenFlow協議報文后,根據所述轉發設備對應的流表直接將所述OpenFlow協議報文轉發給處理該OpenFlow協議報文的目標服務器,這樣,OpenFlow協議報文無需由SDN控制器內的一個服務器中轉給目標服務器,因此,節省了 SDN控制器內服務器之間傳輸數據占用的帶寬,以及服務器之間通信所使用的CPU資源,同時,也提高了OpenFlow協議報文的處理效率。
[0193]請參見圖11,示出了本發明實施例另一種SDN控制器,如圖11所示,該SDN控制器包括:總線210 ;以及連接到總線210的處理器220、存儲器230和接口 240 ;其中,存儲器230用于存儲指令,處理器220用于執行該指令用于根據負載均衡算法,確定用于處理開放流OpenFlow協議報文的目標服務器;所述轉發控制參數包括所述目標服務器的介質訪問控制MAC地址,以使所述網關設備根據所述轉發控制參數生成流表,并依據所述流表將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器。
[0194]在本發明的另一個實施例中,可選地,所述轉發控制參數還包括源IP地址,所述源IP地址為與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址。
[0195]在本發明的又一個實施例中,可選地,所述轉發控制參數還包括所述網關設備上連接所述目標服務器的物理端口,以使所述網關設備通過所述物理端口將OpenFlow協議報文轉發給所述目標服務器。
[0196]當SDN控制器內的服務器負載過重、而其它的服務器負載較輕時需要調整服務器內的負載分布。調整處理OpenFlow協議報文的服務器后,對應的需要通知網關設備。
[0197]可選地,所述處理器220執行指令還用于:根據負載均衡算法,重新確定處理所述OpenFlow會話的新目標服務器。
[0198]所述接口 240用于向所述網關設備下發流表修改指示信息。
[0199]所述流表修改指示信息至少包括所述源IP地址、目的IP地址、目的端口號和所述新目標服務器對應的MAC地址,所述流表修改指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址;
[0200]或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所示目的端口號、所述新目標服務器對應的MAC地址和所述網關設備上連接所述目標服務器的物理端口,所述流表修改指示信息指示所述網關設備根據所述源IP地址、所述目的IP地址,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器對應的MAC地址和物理端口。
[0201 ] 其中,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFLow協議的TCP端口號。
[0202]當設備與SDN控制器之間的OpenFlow會話終止,例如,OpenFlow會話結束、超時,或所述設備退出網絡后,SDN控制器可以通知網關設備刪除所述設備對應的流表,從而節省網關設備上存儲流表的存儲空間。
[0203]所述處理器220執行該指令還用于:檢測所述OpenFlow會話是否終止,如果終止,則通過接口 240向所述網關設備下發流表刪除指示信息。
[0204]其中,所述流表刪除指示信息至少包括所述源IP地址、目的IP地址和目的端口號,所述流表刪除指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找到待刪除流表,并刪除所述待刪除流表;所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號。
[0205]相應于上述的應用于網關設備的開放流報文轉發方法實施例,本發明還提供了網關設備實施例。
[0206]請參見圖12,示出了本發明實施例一種網關設備,如圖12所示,該裝置包括:接收單元310、流表生成單元320和發送單元330。
[0207]接收單元310,用于接收SDN控制器下發的轉發控制參數,所述轉發控制參數至少包括處理OpenFlow協議報文的目標服務器的MAC地址,所述目標服務器由所述SDN控制器根據負載均衡算法計算得到;
[0208]流表生成單元320,用于根據所述轉發控制參數生成流表,所述流表用于指示所述網關設備將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器。
[0209]所述流表包括匹配項和動作項,所述匹配項包括源IP地址、目的IP地址和目的端口號,所述動作項包括物理端口、虛擬局域網VLAN和MAC地址;
[0210]在本發明的一個實施例中,所述流表生成單元320具體用于:
[0211]當所述轉發控制參數還包括源IP地址時,將所述源IP地址設置為所述轉發控制參數所包括的、與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址;或者,將所述源IP地址設置為通配符;
[0212]將所述流表中的目的IP地址設置為所述SDN控制器的IP地址,將所述目的端口號設置為OpenFlow協議的TCP端口號;
[0213]將所述MAC地址設置為所述目標服務器的MAC地址,將VLAN設置為所述SDN控制器與所述網關設備之間通信的VLAN ;
[0214]以及,將所述物理端口設置為獲得的所述網關設備上連接所述目標服務器的物理端口。
[0215]所述發送單元330,用于當所述網關設備接收到OpenFlow協議報文時,根據所述流表將所述OpenFlow協議報文轉發給所述目標服務器。
[0216]請參見圖13,示出了本發明實施例的另一種網關設備,如圖13所示,該裝置在圖12所示的基礎上還包括:修改單元340。
[0217]所述接收單元310,還用于接收所述SDN控制器下發的流表修改指示信息;
[0218]其中,所述流表修改指示信息至少包括源IP地址、目的IP地址、目的端口號和新目標服務器對應的MAC地址;所述修改單元340,用于根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址。
[0219]或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所述目的端口號、所述新目標服務器對應的MAC地址,以及,所述網關設備上連接所述目標服務器的物理端口 ;所述修改單元340,用于根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器的MAC地址和物理端口。
[0220]其中,所述源IP地址是與所述SDN控制器建立OpenFlow會話的轉發設備的IP地址,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號;所述新目標服務器由所述SDN控制器根據負載均衡算法重新計算得到。
[0221]請參見圖14,示出了本發明實施例的又一種網關設備,該裝置在圖12所示的實施例的基礎上還包括刪除單元350。
[0222]所述接收單元310,還用于接收所述SDN控制器下發的流表刪除指示信息,所述流表刪除指示信息至少包括源IP地址、目的IP地址和目的端口號。
[0223]所述刪除單元350,用于根據所述源IP地址、所述目的IP地址和所述目的端口號查找待刪除流表,并刪除所述待刪除流表。
[0224]其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow會話的轉發設備的IP地址,所述流表刪除指示信息由所述SDN控制器檢測到所述轉發設備的OpenFlow會話終止時產生。
[0225]請參見圖15,示出了本發明實施例再一種網關設備,如圖15所示,所述網關設備包括:總線410 ;以及連接到總線410的處理器420、存儲器430和接口 440 ;其中,存儲器430用于存儲指令,處理器220用于執行該指令用于根據負載均衡算法,確定用于處理開放流OpenFlow協議報文的目標服務器。
[0226]接口 440用于:接收SDN控制器下發的轉發控制參數,所述轉發控制參數至少包括處理OpenFlow協議報文的目標服務器的MAC地址,所述目標服務器由所述SDN控制器根據負載均衡算法計算得到。
[0227]所述處理器420執行該指令還用于:根據所述轉發控制參數生成流表,所述流表用于指示所述網關設備將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器。
[0228]所述流表包括匹配項和動作項,所述匹配項包括源IP地址、目的IP地址和目的端口號,所述動作項包括物理端口、虛擬局域網VLAN和MAC地址;
[0229]在本發明的一個實施例中,所述處理器420執行該指令用于根據所述轉發控制參數生成流表,包括:
[0230]當所述流表修改指示信息包括源IP地址時,將所述源IP地址設置為所述轉發控制參數所包括的所述源IP地址,其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址。
[0231]或者,將流表中的源IP地址的值設置為通配符。
[0232]將所述流表中的目的IP地址設置為所述SDN控制器的IP地址,將所述目的端口號設置為OpenFlow協議的TCP端口號;
[0233]將所述MAC地址設置為所述目標服務器的MAC地址,將VLAN設置為所述SDN控制器與所述網關設備之間通信的VLAN ;
[0234]以及,將所述物理端口設置為獲得的所述網關設備上連接所述目標服務器的物理端口。
[0235]接口 440還用于:當所述網關設備接收到OpenFlow協議報文時,根據所述流表將所述OpenFlow協議報文轉發給所述目標服務器。
[0236]在本發明的另一個實施例中,所述接口 440還用于:接收所述SDN控制器下發的流表修改指示信息;
[0237]如果所述流表修改指示信息至少包括源IP地址、目的IP地址、目的端口號和新目標服務器對應的MAC地址。所述處理器420執行指令還用于,根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址。
[0238]如果所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所述目的端口號、所述新目標服務器對應的MAC地址,以及,所述網關設備上連接所述目標服務器的物理端口。所述處理器420執行指令還用于,根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器的MAC地址和物理端口。
[0239]其中,所述源IP地址是與所述SDN控制器建立OpenFlow會話的轉發設備的IP地址,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號;所述新目標服務器由所述SDN控制器根據負載均衡算法重新計算得到。
[0240]在本發明的又一個實施例中,所述接口 440還用于,接收所述SDN控制器下發的流表刪除指示信息,所述流表刪除指示信息至少包括源IP地址、目的IP地址和目的端口號。
[0241]所述處理器420執行指令還用于,根據所述源IP地址、所述目的IP地址和所述目的端口號查找待刪除流表,并刪除所述待刪除流表。
[0242]其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow會話的轉發設備的IP地址,所述流表刪除指示信息由所述SDN控制器檢測到所述轉發設備的OpenFlow會話終止時產生。
[0243]本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置或系統實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。以上所描述的裝置及系統實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解并實施。
[0244]本發明可以在由計算機執行的計算機可執行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、對象、組件、數據結構等等。也可以在分布式計算環境中實踐本發明,在這些分布式計算環境中,由通過通信網絡而被連接的遠程處理設備來執行任務。在分布式計算環境中,程序模塊可以位于包括存儲設備在內的本地和遠程計算機存儲介質中。
[0245]需要說明的是,在本文中,諸如“第一”和“第二”等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
[0246]以上所述僅是本發明的【具體實施方式】,應當指出,對于本【技術領域】的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。
【權利要求】
1.一種開放流報文轉發方法,其特征在于,包括: 軟件定義網絡SDN控制器根據負載均衡算法,確定用于處理開放流OpenFlow協議報文的目標服務器; 所述SDN控制器向自身連接的網關設備下發轉發控制參數,所述轉發控制參數包括所述目標服務器的媒體接入控制MAC地址,以使所述網關設備根據所述轉發控制參數生成流表,并依據所述流表將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器。
2.根據權利要求1所述的方法,其特征在于:所述轉發控制參數還包括源IP地址,所述源IP地址為與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址。
3.根據權利要求1或2所述的方法,其特征在于,所述轉發控制參數還包括所述網關設備上連接所述目標服務器的物理端口,以使所述網關設備通過所述物理端口將OpenFlow協議報文轉發給所述目標服務器。
4.根據權利要求2所述的方法,其特征在于,所述方法還包括: 所述SDN控制器根據負載均衡算法,重新確定處理所述OpenFlow會話的新目標服務器; 所述SDN控制器向所述網關設備下發流表修改指示信息; 所述流表修改指示信息至少包括所述源IP地址、目的IP地址、目的端口號和所述新目標服務器對應的MAC地址,所述流表修改指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址; 或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所示目的端口號、所述新目標服務器對應的MAC地址和所述網關設備上連接所述目標服務器的物理端口,所述流表修改指示信息指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器對應的MAC地址和物理端口 ; 其中,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFLow協議的傳輸控制協議TCP端口號。
5.根據權利要求2所述的方法,其特征在于,所述方法還包括: 當檢測到所述的OpenFlow會話終止時,所述SDN控制器向所述網關設備下發流表刪除指示信息,所述流表刪除指示信息至少包括所述源IP地址、目的IP地址和目的端口號,所述流表刪除指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找到待刪除流表,并刪除所述待刪除流表; 其中,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號。
6.一種開放流報文轉發方法,其特征在于,包括: 網關設備接收軟件定義網絡SDN控制器下發的轉發控制參數,所述轉發控制參數至少包括處理OpenFlow協議報文的目標服務器的媒體接入控制MAC地址,所述目標服務器由所述SDN控制器根據負載均衡算法計算得到; 所述網關設備根據所述轉發控制參數生成流表,所述流表用于指示所述網關設備將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器; 當所述網關設備接收到OpenFlow協議報文時,根據所述流表將所述OpenFlow協議報文轉發給所述目標服務器。
7.根據權利要求6所述的方法,其特征在于,所述流表包括匹配項和動作項,所述匹配項包括源IP地址、目的IP地址和目的端口號,所述動作項包括物理端口、虛擬局域網VLAN和MAC地址; 所述網關設備根據所述轉發控制參數生成流表,包括: 所述網關設備將所述源IP地址設置為通配符,或者,當所述轉發控制參數還包括源IP地址時,所述網關設備將所述流表的源IP地址設置為所述轉發控制參數所包括的源IP地址,其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址; 所述網關設備將所述流表中的目的IP地址設置為所述SDN控制器的IP地址,將所述目的端口號設置為OpenFlow協議的傳輸控制協議TCP端口號; 所述網關設備將所述MAC地址設置為所述目標服務器的MAC地址,將VLAN設置為所述SDN控制器與所述網關設備之間通信的VLAN ; 以及,所述網關設備將所述物理端口設置為獲得的所述網關設備上連接所述目標服務器的物理端口。
8.根據權利要求6所述的方法,其特征在于,所述方法還包括: 所述網關設備接收所述SDN控制器下發的流表修改指示信息; 所述流表修改指示信息至少包括源IP地址、目的IP地址、目的端口號和新目標服務器對應的MAC地址,所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址;或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所述目的端口號、所述新目標服務器對應的MAC地址,以及,所述網關設備上連接所述目標服務器的物理端口 ;所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,所述網關設備將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器的MAC地址和物理端口 ; 其中,所述源IP地址是與所述SDN控制器建立OpenFlow會話的轉發設備的IP地址,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號;所述新目標服務器由所述SDN控制器根據負載均衡算法重新計算得到。
9.根據權利要求7所述的方法,其特征在于,所述方法還包括: 所述網關設備接收所述SDN控制器下發的流表刪除指示信息,所述流表刪除指示信息至少包括源IP地址、目的IP地址和目的端口號; 所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待刪除流表,并刪除所述待刪除流表; 其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow會話的轉發設備的IP地址,所述流表刪除指示信息由所述SDN控制器檢測到所述轉發設備的OpenFlow會話終止時產生。
10.一種軟件定義網絡SDN控制器,其特征在于,包括: 確定單元,用于根據負載均衡算法,確定用于處理開放流OpenFlow協議報文的目標服務器; 發送單元,用于向自身連接的網關設備下發轉發控制參數,所述轉發控制參數包括所述目標服務器的媒體接入控制MAC地址,以使所述網關設備根據所述轉發控制參數生成流表,并依據所述流表將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器。
11.根據權利要求10所述的SDN控制器,其特征在于:所述轉發控制參數還包括源IP地址,所述源IP地址為與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址。
12.根據權利要求10或11所述的SDN控制器,其特征在于,所述轉發控制參數還包括所述網關設備上連接所述目標服務器的物理端口,以使所述網關設備通過所述物理端口將OpenFlow協議報文轉發給所述目標服務器。
13.根據權利要求10所述的SDN控制器,其特征在于: 所述確定單元,還用于根據負載均衡算法,重新確定處理所述OpenFlow會話的新目標服務器; 所述發送單元,還用于向所述網關設備下發流表修改指示信息; 所述流表修改指示信息至少包括所述源IP地址、目的IP地址、目的端口號和所述新目標服務器對應的MAC地址,所述流表修改指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址; 或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所示目的端口號、所述新目標服務器對應的MAC地址和所述網關設備上連接所述目標服務器的物理端口,所述流表修改指示信息指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器對應的MAC地址和物理端口 ; 其中,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFLow協議的傳輸控制協議TCP端口號。
14.根據權利要求10所述的SDN控制器,其特征在于: 所述發送單元,還用于當檢測到所述的OpenFlow會話終止時,向所述網關設備下發流表刪除指示信息; 其中,所述流表刪除指示信息至少包括所述源IP地址、目的IP地址和目的端口號,所述流表刪除指示信息用于指示所述網關設備根據所述源IP地址、所述目的IP地址和所述目的端口號查找到待刪除流表,并刪除所述待刪除流表; 所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號。
15.—種網關設備,其特征在于,包括: 接收單元,用于接收軟件定義網絡SDN控制器下發的轉發控制參數,所述轉發控制參數至少包括處理OpenFlow協議報文的目標服務器的媒體接入控制MAC地址,所述目標服務器由所述SDN控制器根據負載均衡算法計算得到; 流表生成單元,用于根據所述轉發控制參數生成流表,所述流表用于指示所述網關設備將所述OpenFlow協議報文轉發給所述MAC地址對應的所述目標服務器; 發送單元,用于當所述網關設備接收到OpenFlow協議報文時,根據所述流表將所述OpenFlow協議報文轉發給所述目標服務器。
16.根據權利要求15所述的網關設備,其特征在于,所述流表包括匹配項和動作項,所述匹配項包括源IP地址、目的IP地址和目的端口號,所述動作項包括物理端口、虛擬局域網VLAN和MAC地址; 所述流表生成單元具體用于: 將所述源IP地址設置為通配符,或者,當所述轉發控制參數還包括源IP地址時,將所述源IP地址設置為所述轉發控制參數所包括的源IP地址,其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow協議報文對應的OpenFlow會話的轉發設備的IP地址;將所述流表中的目的IP地址設置為所述SDN控制器的IP地址,將所述目的端口號設置為OpenFlow協議的傳輸控制協議TCP端口號; 將所述MAC地址設置為所述目標服務器的MAC地址,將VLAN設置為所述SDN控制器與所述網關設備之間通信的VLAN ; 以及,將所述物理端口設置為獲得的所述網關設備上連接所述目標服務器的物理端□。
17.根據權利要求15所述的網關設備,其特征在于,所述裝置還包括:修改單元; 所述接收單元還用于,接收所述SDN控制器下發的流表修改指示信息; 其中,所述流表修改指示信息至少包括源IP地址、目的IP地址、目的端口號和新目標服務器對應的MAC地址;所述修改單元,用于根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址修改為所述新目標服務器的MAC地址; 或者,所述流表修改指示信息至少包括所述源IP地址、所述目的IP地址、所述目的端口號、所述新目標服務器對應的MAC地址,以及,所述網關設備上連接所述目標服務器的物理端口 ;所述修改單元,用于根據所述源IP地址、所述目的IP地址和所述目的端口號查找待修改流表,并將所述待修改流表中的MAC地址和物理端口修改為所述新目標服務器的MAC地址和物理端口 ; 其中,所述源IP地址是與所述SDN控制器建立OpenFlow會話的轉發設備的IP地址,所述目的IP地址是所述SDN控制器的IP地址,所述目的端口號是OpenFlow協議的TCP端口號;所述新目標服務器由所述SDN控制器根據負載均衡算法重新計算得到。
18.根據權利要求16所述的網關設備,其特征在于,所述裝置還包括刪除單元: 所述接收單元,還用于接收所述SDN控制器下發的流表刪除指示信息,所述流表刪除指示信息至少包括源IP地址、目的IP地址和目的端口號; 所述刪除單元,用于根據所述源IP地址、所述目的IP地址和所述目的端口號查找待刪除流表,并刪除所述待刪除流表; 其中,所述源IP地址是與所述SDN控制器建立所述OpenFlow會話的轉發設備的IP地址,所述流表刪除指示信息由所述SDN控制器檢測到所述轉發設備的OpenFlow會話終止時
yο ?~ I
【文檔編號】H04L29/08GK104168202SQ201410423977
【公開日】2014年11月26日 申請日期:2014年8月26日 優先權日:2014年8月26日
【發明者】倪輝, 郝衛國, 閆長江, 熊怡 申請人:華為技術有限公司