一種控制器的自動發現和配置方法和設備的制作方法【專利摘要】本發明實施例公開了一種控制器的自動發現和配置方法和設備,通過應用本發明實施例所提出的技術方案,在交換機上使能一種自動發現控制器的能力,通過向自動發現的控制器發送免費ARP報文的方式,同步自身與該控制器上的ARP表項,并根據該表項建立Openflow會話,控制器通過該Openflow會話自動向交換機下發該交換機所應歸屬的主控制器和備控制器的信息,從而,可以實現交換機對于新增控制器的自動發現功能,并且,可以由控制器按照負載均分等原則調整交換機所應歸屬的主控制器和備控制器,實現交換機所歸屬備份組的自動配置功能。【專利說明】一種控制器的自動發現和配置方法和設備【
技術領域:
】[0001]本發明涉及通信【
技術領域:
】,特別涉及一種控制器的自動發現和配置方法和設備。【
背景技術:
】[0002]OpenFlow是SDN(SoftwareDefinedNetwork,軟件定義網絡)架構中定義的一個控制器與轉發層之間的通信接口標準。OpenFlow允許直接訪問和操作網絡設備的轉發平面,這些網絡設備可能是物理上的,也可能是虛擬的。[0003]OpenFlow的思想是分離控制平面和數據平面,二者之間使用標準的協議通信;數據平面采用基于流的方式進行轉發。[0004]OpenFlow網絡由OpenFlowSwitch(OpenFlow網絡設備)和OpenFlowController(OpenFlow控制器)通過OpenFlowChannel(OpenFlow通道)組成的,如圖1所示,為現有技術中OpenFlow網絡的結構示意圖。[0005]OpenFlow控制器是控制中心,根據用戶的配置或者動態運行的協議生成流表發送到OpenFlow設備。控制器上可能運行實驗程序,或者第三方開發的軟件等等。[0006]OpenFlow網絡設備接收OpenFlow控制器設置的流表,并根據流表進行報文處理,向OpenFlow控制器上報設備的狀態和事件如接口UP/D0WN。在OpenFlow網絡設備和OpenFlow控制器之間通過OpenFlow通道(基于TCP或者SSL)進行通信。[0007]由于OpenFlow可以基于流對網絡進行編程,因此,基于OpenFlow的SDN架構能夠提供相當精細力度的控制,實現網絡在應用、用戶和會話級別上變更的實時響應。而當前基于IP的路由方式是不能提供這種級別上的控制的。[0008]如圖2所不,為現有技術中OpenFlow轉發流程的不意圖。報文在進入設備后從最小的FlowTable開始查表,可以進行多個流表的查詢,一旦在某個流表匹配到后,會更新此報文的動作集Act1nSet,動作集即動作的集合,初始為空,對報文的操作都放在這個集合里。完成最后一個流表的處理后,動作集內的所有動作會被執行,此時報文的內容會被修改,然后從指定出接口轉發出去。[0009]目前,Openflow網絡中的交換機跟SDNController建立連接,需要在交換機上進行Controller地址的配置,配置完成之后,會觸發交換機和Controller之間建立TCP的連接,TCP建立完成之后,才會建立Openflow實例的會話。[0010]如圖3所示,為現有技術中一個Cont1ller的控制器集群的示意圖,里面有4臺設備。[0011]如圖4所示,為圖3中所示的Controller的控制器集群的具體結構示意圖,可以看出,4臺設備分配成了2個備份組。[0012]如圖5所示,為圖4中所示的Controller的控制器集群中的備份組的詳細信息的示意圖。[0013]其中,Controller控制的一臺設備上面的Openflow的配置[0014][XXX-of-1nst-1]disthis#openflowinstanceIdefaulttable-misspermitflow-tablemac-1p0classificat1nglobalcontroller0addressip192.168.212.100controllerIaddressip192.168.212.101#return[XXX-of-1nst-1]disopenflowinstanceIcontrollerInstanceIcontrollerinformat1n:Reconnectinterval:60(s)Echointerval;5(s)[0015]ControllerID:0ControllerIPaddress:192.168.212.100Controllerport:6633Controllerrole:SlaveConnecttype:TCPConnectstate:EstablishedPacketssent:5636Packetsreceived:5936SSLpolicy:--VRFname:-ControllerID:1ControllerIPaddress;192.168.212.101Controllerport:6633ControHerrole;MasterConnecttype:TCPConnectstate:EstablishedPacketssent:484Packetsreceived;777SSLpolicy:--VRFname:--[0016]在實現本發明的過程中,發明人發現現有技術至少存在以下問題:[0017]目前SDNController為了提高可靠性,采用集群的方式,當集群數目過多的時候,就目前的方式需要在所有的交換機上都進行Cont1ller的地址的配置,當集群中加入新的Controller,還是需要在交換機上進行ControllerIP地址的控制。而且設備上面的地址配置連接的2個Cont1ller必須是同一個備份組,如果配置錯誤了就會導致出現問題。當Controller的備份組出現配置變化的時候,設備上面的配置要相應的進行配置改變,這樣極大的增加了用戶的使用難度。【
發明內容】[0018]本發明實施例提供一種控制器的自動發現和配置方法和設備,解決現有的控制器信息需要在交換機上逐一配置而導致的配置過程繁瑣,更新困難的問題。[0019]為達到上述目的,本發明實施例一方面提供了一種SDN控制器的自動發現和配置方法,所述方法包括:[0020]在交換機的直連接口配置了IP地址之后,所述交換機通過所述直連接口向自動發現的控制器發送免費ARP報文;[0021]在所述自動發現的控制器確定當前本地映射表中沒有所述免費ARP報文所對應的ARP表項時,所述交換機接收所述自動發現的控制器返回的ARP協議報文,并學習所述ARP協議報文所對應的ARP表項;[0022]如果所述交換機當前不存在Openflow會話,所述交換機根據學習到的所述ARP表項,與所述自動發現的控制器建立Openflow會話;[0023]所述交換機通過所述Openflow會話接收所述自動發現的控制器所配置的備份組信息,所述備份組信息為所述自動發現的控制器根據所述交換機的信息所確定的所述交換機所歸屬的主控制器和備控制器的信息;[0024]所述交換機與所述備份組信息所對應的控制器建立連接,并結束與所述自動發現的控制器之間的Openflow會話。[0025]另一方面,本發明實施例還提供了一種交換機,包括:[0026]發送模塊,用于在所述交換機的直連接口配置了IP地址之后,通過所述直連接口向自動發現的控制器發送免費ARP報文;[0027]學習模塊,用于在所述自動發現的控制器確定當前本地映射表中沒有所述免費ARP報文所對應的ARP表項時,接收所述自動發現的控制器返回的ARP協議報文,并學習所述ARP協議報文所對應的ARP表項;[0028]判斷模塊,用于在所述學習模塊學習到新的ARP表項后,判斷所述交換機當前是否存在Openflow會話;[0029]會話建立模塊,用于在所述判斷模塊判斷所述交換機當前不存在Openflow會話時,根據所述學習模塊學習到的所述ARP表項,與所述自動發現的控制器建立Openflow會話;[0030]接收模塊,用于通過所述會話建立模塊所建立的Openflow會話接收所述自動發現的控制器所配置的備份組信息,所述備份組信息為所述自動發現的控制器根據所述交換機的信息所確定的所述交換機所歸屬的主控制器和備控制器的信息;[0031]連接建立模塊,用于根據所述接收模塊所接收到的備份組信息,與對應的控制器建立連接,并結束所述會話建立模塊所建立的與所述自動發現的控制器之間的Openflow會話。[0032]另一方面,本發明實施例還提供了一種控制器,包括:[0033]接收模塊,用于接收交換機發送的免費ARP報文;[0034]判斷模塊,用于判斷當前本地映射表中是否存在所述免費ARP報文所對應的ARP表項,如果存在,則結束當前操作;[0035]處理模塊,用于在所述判斷模塊的判斷結果為存在時結束當前操作,或在所述判斷模塊的判斷結果為不存在時,將所述免費ARP報文所對應的ARP表項添加到本地映射表中;[0036]發送模塊,用于在所述處理模塊添加了新的ARP表項后,向發送所述免費ARP報文的交換機發送與所述ARP表項相對應的ARP協議報文。[0037]與現有技術相比,本發明實施例所提出的技術方案具有以下優點:[0038]通過應用本發明實施例所提出的技術方案,在交換機上使能一種自動發現控制器的能力,通過向自動發現的控制器發送免費ARP報文的方式,同步自身與該控制器上的ARP表項,并根據該表項建立Openflow會話,控制器通過該Openflow會話自動向交換機下發該交換機所應歸屬的主控制器和備控制器的信息,從而,可以實現交換機對于新增控制器的自動發現功能,并且,可以由控制器按照負載均分等原則調整交換機所應歸屬的主控制器和備控制器,實現交換機所歸屬備份組的自動配置功能。【專利附圖】【附圖說明】[0039]圖1為現有技術中OpenFlow網絡的結構示意圖;[0040]圖2為現有技術中OpenFlow轉發流程的示意圖;[0041]圖3為現有技術中一個Controller的控制器集群的示意圖;[0042]圖4為圖3中所示的Controller的控制器集群的具體結構示意圖;[0043]圖5為圖4中所示的Controller的控制器集群中的備份組的詳細信息的示意圖;[0044]圖6為本發明實施例所提出的一種控制器的自動發現和配置方法的流程示意圖;[0045]圖7為本發明實施例所提出的一種交換機與自動發現的控制器之間進行ARP表項同步的流程示意圖;[0046]圖8為本發明實施例所提出的一種交換機與自動發現的控制器之間進行Openflow會話建立的流程示意圖;[0047]圖9為本發明實施例所提出的一種交換機的結構示意圖;[0048]圖10為本發明實施例所提出的一種控制器的結構示意圖。【具體實施方式】[0049]如【
背景技術:
】所述,現有的控制其配置方案過程繁瑣,更新不便,為了解決這樣的問題,本發明提出了一種控制器的自動發現和配置方法,在交換機上使能一種自動發現控制器的能力,通過向自動發現的控制器發送免費ARP報文的方式,同步自身與該控制器上的ARP表項,并根據該表項建立Openflow會話,控制器通過該Openflow會話自動向交換機下發該交換機所應歸屬的主控制器和備控制器的信息,實現交換機對于新增控制器的自動發現功能,以及控制器的自動分配功能。[0050]如圖6所示,為本發明實施例所提出的一種控制器的自動發現和配置方法的流程示意圖,該方法具體包括以下步驟:[0051]步驟S601、在交換機的直連接口配置了IP地址之后,所述交換機通過所述直連接口向自動發現的控制器發送免費ARP報文。[0052]具體的,本方案可以實現在現有SDN組網中,在交換機配置Openflow的時候,配置Controller自動發現功能,具體的處理方式是新增加一條命令controllerIaddressautodiscovery,用來支持可以自動發現Controller并下發配置的能力。當然,這樣的操作需要在本步驟中所提及的交換機的直連接口配置IP地址之前。[0053]在Openflow的視圖下:[0054]openflowinstance100[0055]defaulttable-misspermit[0056]flow-tablemac-1pI[0057]controllerIaddressautodiscovery。[0058]需要進一步說明的是,在所述交換機通過所述直連接口向自動發現的控制器發送免費ARP報文之后,在控制器側,需要進行以下的處理:[0059]所述自動發現的控制器判斷當前本地映射表中是否存在所述免費ARP報文所對應的ARP表項。[0060]如果存在,則結束當前操作。[0061]如果不存在,則將所述免費ARP報文所對應的ARP表項添加到本地映射表中,并向所述交換機發送與所述ARP表項相對應的ARP協議報文,然后執行步驟S602。[0062]步驟S602、所述交換機接收所述自動發現的控制器返回的ARP協議報文,并學習所述ARP協議報文所對應的ARP表項。[0063]所述交換機學習所述ARP協議報文所對應的ARP表項之后,遍歷本地當前狀態,判斷當前是否已經存在Openflow會話。[0064]如果存在,則結束當前操作,即不用觸發進行TCP連接的創建,從而,可以保證在交換機中,只要有一個Openflow會話建立成功,后續學習到ARP表項的時候,就不會再去觸發建立TCP連接。[0065]如果不存在,則執行步驟S603。[0066]其中,當所述交換機中的多個直連端口都在同時嘗試進行TCP連接的建立時,如果其中的任何一個TCP連接建立成功,則所述交換機結束其他直連端口的嘗試建立TCP連接的過程。[0067]如果所述交換機當前不存在Openflow會話,則執行步驟S603。[0068]步驟S603、所述交換機根據學習到的所述ARP表項,與所述自動發現的控制器建立Openflow會話。[0069]則根據學習到的所述ARP表項嘗試與所述自動發現的控制器建立TCP連接,并在所述TCP連接建立成功后觸發Openflow會話。[0070]步驟S604、所述交換機通過所述Openflow會話接收所述自動發現的控制器所配置的備份組信息。[0071]具體的,所述備份組信息為所述自動發現的控制器根據所述交換機的信息所確定的所述交換機所歸屬的主控制器和備控制器的信息。[0072]具體的配置信息的確定過程如下:[0073]所述自動發現的控制器根據所述交換機的DPID,利用哈希算法確定所述交換機所歸屬的主控制器和備控制器,并使用netconfig協議向所述交換機下發包含所述主控制器和備控制器的信息的備份組信息。[0074]在具體的應用場景中,一旦交換機和ControlIer建立好I個連接之后,Controller根據設備的DPID利用哈希算法計算出這臺設備屬于哪個主備組(這個哈希算法用戶可以自己定義,用來對設備控制進行負載分擔),然后使用netconfig協議對設備自動下發連接。[0075]具體的,這個主備組的配置示例如下:[0076]controllerOaddressip192.168.212.100[0077]controllerIaddressip192.168.212.101[0078]步驟S605、所述交換機與所述備份組信息所對應的控制器建立連接,并結束與所述自動發現的控制器之間的Openflow會話。[0079]等設備和這個備份組真正建立好連接之后,斷開之前與自動發現的控制器之間的那個連接,后面就使用這個備份組來對交換機進行控制。[0080]與現有技術相比,本發明實施例所提出的技術方案具有以下優點:[0081]通過應用本發明實施例所提出的技術方案,在交換機上使能一種自動發現控制器的能力,通過向自動發現的控制器發送免費ARP報文的方式,同步自身與該控制器上的ARP表項,并根據該表項建立Openflow會話,控制器通過該Openflow會話自動向交換機下發該交換機所應歸屬的主控制器和備控制器的信息,從而,可以實現交換機對于新增控制器的自動發現功能,并且,可以由控制器按照負載均分等原則調整交換機所應歸屬的主控制器和備控制器,實現交換機所歸屬備份組的自動配置功能。[0082]為了進一步闡述本發明的技術思想,現結合具體的應用場景,對本發明的技術方案進行說明。[0083]首先,在對于自動發現的控制器進行會話匹配的過程中,本法發明實施例采用了建立Openflow會話的方式,OpenFlow會話通過用戶定義的流表(FlowTable)來匹配和處理報文。所有流表項都被組織在不同的FlowTable中,在同一個FlowTable中按流表項的優先級進行先后匹配。一個OpenFlow網絡設備可以包含一個或者多個FlowTable。[0084]在Controller下發流表時,協議報文結構如表1所示:[0085]表1流表結構[0086]【權利要求】1.一種控制器的自動發現和配置方法,其特征在于,所述方法包括:在交換機的直連接口配置了IP地址之后,所述交換機通過所述直連接口向自動發現的控制器發送免費ARP報文;在所述自動發現的控制器確定當前本地映射表中沒有所述免費ARP報文所對應的ARP表項時,所述交換機接收所述自動發現的控制器返回的ARP協議報文,并學習所述ARP協議報文所對應的ARP表項;如果所述交換機當前不存在Openflow會話,所述交換機根據學習到的所述ARP表項,與所述自動發現的控制器建立Openflow會話;所述交換機通過所述Openflow會話接收所述自動發現的控制器所配置的備份組信息,所述備份組信息為所述自動發現的控制器根據所述交換機的信息所確定的所述交換機所歸屬的主控制器和備控制器的信息;所述交換機與所述備份組信息所對應的控制器建立連接,并結束與所述自動發現的控制器之間的Openflow會話。2.如權利要求1所述的方法,其特征在于,在交換機的直連接口配置了IP地址之前,還包括:在所述交換機中增加一條命令controllerIaddressautodiscovery,用來支持可以自動發現控制器并下發配置的能力。3.如權利要求1所述的方法,其特征在于,所述交換機通過所述直連接口向自動發現的控制器發送免費ARP報文之后,還包括:所述自動發現的控制器判斷當前本地映射表中是否存在所述免費ARP報文所對應的ARP表項;如果存在,則結束當前操作;如果不存在,則將所述免費ARP報文所對應的ARP表項添加到本地映射表中,并向所述交換機發送與所述ARP表項相對應的ARP協議報文。4.如權利要求1所述的方法,其特征在于,如果所述交換機當前不存在Openflow會話,所述交換機根據學習到的所述ARP表項,與所述自動發現的控制器建立Openflow會話,具體包括:所述交換機學習所述ARP協議報文所對應的ARP表項之后,遍歷本地當前狀態,判斷當前是否已經存在Openflow會話;如果存在,則結束當前操作;如果不存在,則根據學習到的所述ARP表項嘗試與所述自動發現的控制器建立TCP連接,并在所述TCP連接建立成功后觸發Openflow會話;其中,當所述交換機中的多個直連端口都在同時嘗試進行TCP連接的建立時,如果其中的任何一個TCP連接建立成功,則所述交換機結束其他直連端口的嘗試建立TCP連接的過程。5.如權利要求1所述的方法,其特征在于,所述備份組信息為所述自動發現的控制器根據所述交換機的信息所確定的所述交換機所歸屬的主控制器和備控制器的信息,具體為:所述自動發現的控制器根據所述交換機的DPID,利用哈希算法確定所述交換機所歸屬的主控制器和備控制器,并使用netconfig協議向所述交換機下發包含所述主控制器和備控制器的信息的備份組信息。6.一種交換機,其特征在于,包括:發送模塊,用于在所述交換機的直連接口配置了IP地址之后,通過所述直連接口向自動發現的控制器發送免費ARP報文;學習模塊,用于在所述自動發現的控制器確定當前本地映射表中沒有所述免費ARP報文所對應的ARP表項時,接收所述自動發現的控制器返回的ARP協議報文,并學習所述ARP協議報文所對應的ARP表項;判斷模塊,用于在所述學習模塊學習到新的ARP表項后,判斷所述交換機當前是否存在Openflow會話;會話建立模塊,用于在所述判斷模塊判斷所述交換機當前不存在Openflow會話時,根據所述學習模塊學習到的所述ARP表項,與所述自動發現的控制器建立Openflow會話;接收模塊,用于通過所述會話建立模塊所建立的Openflow會話接收所述自動發現的控制器所配置的備份組信息,所述備份組信息為所述自動發現的控制器根據所述交換機的信息所確定的所述交換機所歸屬的主控制器和備控制器的信息;連接建立模塊,用于根據所述接收模塊所接收到的備份組信息,與對應的控制器建立連接,并結束所述會話建立模塊所建立的與所述自動發現的控制器之間的Openflow會話。7.如權利要求6所述的交換機,其特征在于,所述交換機通過增加一條命令controllerIaddressautodiscovery,來支持可以自動發現控制器并下發配置的能力。8.如權利要求6所述的交換機,其特征在于,所述判斷模塊,具體用于在所述學習模塊學習到所述ARP協議報文所對應的ARP表項之后,遍歷本地當前狀態,判斷當前是否已經存在Openflow會話;所述會話建立模塊,用于在所述判斷模塊的判斷結果為存在時結束當前操作,或在所述判斷模塊的判斷結果為不存在時,根據學習到的所述ARP表項嘗試與所述自動發現的控制器建立TCP連接,并在所述TCP連接建立成功后觸發Openflow會話;其中,當所述交換機中的多個直連端口都在同時嘗試進行TCP連接的建立時,如果其中的任何一個TCP連接建立成功,則所述會話建立模塊結束其他直連端口的嘗試建立TCP連接的過程。9.一種控制器,其特征在于,包括:接收模塊,用于接收交換機發送的免費ARP報文;判斷模塊,用于判斷當前本地映射表中是否存在所述免費ARP報文所對應的ARP表項,如果存在,則結束當前操作;處理模塊,用于在所述判斷模塊的判斷結果為存在時結束當前操作,或在所述判斷模塊的判斷結果為不存在時,將所述免費ARP報文所對應的ARP表項添加到本地映射表中;發送模塊,用于在所述處理模塊添加了新的ARP表項后,向發送所述免費ARP報文的交換機發送與所述ARP表項相對應的ARP協議報文。10.如權利要求9所述的控制器,其特征在于,還包括:確定模塊,用于在所述交換機與所述控制器建立Openflow會話之后,根據所述交換機的DPID,利用哈希算法確定所述交換機所歸屬的主控制器和備控制器;所述發送模塊,還用于使用netconfig協議向所述交換機下發包含所述確定模塊所確定的所述主控制器和備控制器的信息的備份組信息。【文檔編號】H04L29/08GK104202364SQ201410403927【公開日】2014年12月10日申請日期:2014年8月15日優先權日:2014年8月15日【發明者】黃李偉,王海申請人:杭州華三通信技術有限公司