本發明涉及軟件定義網絡技術領域,特別是涉及一種軟件定義網絡流表更新的方法及裝置。
背景技術:
SDN(Software Defined Network,軟件定義網絡)是一種新型網絡架構,其核心思想是將控制與轉發分離。數據平面內,交換設備根據流表進行高速的數據轉發;控制平面內,網絡控制器負責進行路由計算、流表生成和維護等工作。這種新思路使網絡結構扁平化,集中控制有利于細粒度地處理網絡數據,更加合理地分配網絡資源。SDN旨在實現網絡互聯和網絡行為的定義和開放式的接口,從而支持未來各種新型網絡體系結構和新型業務的創新。與TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協議/因特網互聯協議)體系的細腰構架不同,在SDN網絡中,與將控制功能從傳統的分布式網絡設備中遷移到可控的計算設備中,最終通過開放可編程的軟件模式來實現網絡的自動化控制功能。
在SDN網絡中,與現有互聯網類似,網絡狀態的變化在SDN中也頻繁出現,例如路由切換、流量均衡、網絡設備維護等。這些網絡狀態的變化,需要以更新交換機中的流表項的方法,實現對數據包的不同處理。雖然控制平面能夠將控制邏輯集中部署到整個網絡中,但數據平面轉發設備仍然是分布式系統,控制邏輯的先后配置順序以及控制平面和數據平面之間可能存在的時延將難以保證流表更新的一致性,有可能造成網絡出現斷路、丟包、環路等現象。
所謂的流表更新一致性是指:SDN網絡中的流表從一套舊流表更新為一套新流表,每個數據包在傳輸過程中,或者一直接受舊流表的控制,或者一直接受新流表的控制,不能依次接受舊流表、新流表的控制。
在現有技術中,通過以下方案來實現流表更新過程中的一致性:
首先,對SDN網絡中的交換機進行分類,再將各個初始交換機中受流表更新影響的數據包上傳到網絡控制器;其次,在后繼交換機中寫入待新增流表,等待一個全網端到端的延時后,在后繼交換機中寫入待修改流表并刪除待刪除流表;最后,更新初始交換機中的流表,流表更新過程完成。
然而,當需要更新流表的交換機比較多時,需要上傳到網絡控制器的數據包數量就會非常大,增加網絡控制器的壓力。
技術實現要素:
本發明實施例的目的在于提供一種軟件定義網絡流表更新的方法及裝置,以實現在保持流表更新的一致性的基礎上,降低網絡控制器的負載壓力。具體技術方案如下:
第一方面,本發明實施例提供了一種軟件定義網絡流表更新的方法,應用于網絡控制器,所述方法包括:
獲取需要更新至交換機中的第一流表規則,并根據更新前的第二流表規則和第一流表規則,對網絡拓撲中的交換機進行分類,得到分類后的交換機,分類后的交換機包括:頭交換機、交叉口交換機、新增交換機和不變交換機,其中,頭交換機為按照第一流表規則處理時,需要更新流表的多個交換機中的第一個交換機;交叉口交換機為按照第一流表規則處理時,需要更新流表的多個交換機中、除頭交換機外的交換機;新增交換機為按照第一流表規則處理時,加入第一流表規則中的交換機;不變交換機為按照第一流表規則處理時,不需要更新流表的交換機;
寫入第一流表規則到新增交換機中,并接收新增交換機發送的更新成功的第一報文;
獲取預設的延遲時間,并根據第一報文,發送第一指令至頭交換機,接收頭交換機返回的第二報文,其中,第一指令為使得頭交換機在預設的延遲時間內對經過頭交換機的數據包添加標簽并統計添加標簽的數據包數目的指令,第二報文為攜帶有添加標簽的數據包數目的報文;
在預設的延遲時間之后,發送第二指令至頭交換機,并獲取頭交換機根據第二指令上傳的后續數據包,其中,后續數據包為在預設的延遲時間之后,頭交換機接收到的數據包;
接收攜帶有交叉口交換機轉發添加標簽的數據包的數目的第三報文,在第三報文中的添加標簽的數據包的數目與第二報文中的添加標簽的數據包數目相同時,寫入第一流表規則到交叉口交換機,并接收交叉口交換機發送的更新成功的第四報文;
在接收到所有交叉口交換機發送的第四報文后,寫入第一流表規則到頭交換機,對頭交換機進行更新。
可選的,在所述寫入第一流表規則到新增交換機中,并接收新增交換機發送的更新成功的第一報文之前,本發明實施例的軟件定義網絡流表更新的方法還包括:
統計第一交換機至第二交換機之間數據包轉發的延遲時間,得到預設的延遲時間,其中,第一交換機為網絡拓撲中的第一個交換機,包括:頭交換機、交叉口交換機、不變交換機,第二交換機為網絡拓撲中的最后一個交換機,包括:頭交換機、交叉口交換機、不變交換機。
可選的,所述標簽至少包括:VLAN(Virtual Local Area Network,虛擬局域網)標簽和MPLS(Multi-Protocol Label Switching,多協議標簽交換)標簽。
可選的,在所述接收到所有交叉口交換機發送的第四報文后,寫入第一流表規則到頭交換機之后,本發明實施例的軟件定義網絡流表更新的方法還包括:
接收頭交換機返回的更新成功的第五報文,返回上傳的后續數據包至頭交換機,其中,后續數據包為在預設的延遲時間之后,頭交換機接收到的數據包。
可選的,所述分類后的交換機還包括:
待刪除交換機,其中,待刪除交換機為按照第一流表規則處理時,不需要存在于第一流表規則中的交換機;
相應的,在所述接收頭交換機返回的更新成功的第五報文,返回上傳的后續數據包至頭交換機之后,本發明實施例的軟件定義網絡流表更新的方法還包括:
刪除待刪除交換機中的流表。
另一方面,本發明實施例還提供了一種軟件定義網絡流表更新的裝置,應用于網絡控制器,所述裝置包括:
分類模塊,用于獲取需要更新至交換機中的第一流表規則,并根據更新前的第二流表規則和第一流表規則,對網絡拓撲中的交換機進行分類,得到分類后的交換機,分類后的交換機包括:頭交換機、交叉口交換機、新增交換機和不變交換機,其中,頭交換機為按照第一流表規則處理時,需要更新流表的多個交換機中的第一個交換機;交叉口交換機為按照第一流表規則處理時,需要更新流表的多個交換機中、除頭交換機外的交換機;新增交換機為按照第一流表規則處理時,加入第一流表規則中的交換機;不變交換機為按照第一流表規則處理時,不需要更新流表的交換機;
第一更新模塊,用于寫入第一流表規則到新增交換機中,并接收新增交換機發送的更新成功的第一報文;
第一發送模塊,用于獲取預設的延遲時間,并根據第一報文,發送第一指令至頭交換機,接收頭交換機返回的第二報文,其中,第一指令為使得頭交換機在預設的延遲時間內對經過頭交換機的數據包添加標簽并統計添加標簽的數據包數目的指令,第二報文為攜帶有添加標簽的數據包數目的報文;
數據包緩存模塊,用于在預設的延遲時間之后,發送第二指令至頭交換機,并獲取頭交換機根據第二指令上傳的后續數據包,其中,后續數據包為在預設的延遲時間之后,頭交換機接收到的數據包;
第二更新模塊,用于接收攜帶有交叉口交換機轉發添加標簽的數據包的數目的第三報文,在第三報文中的添加標簽的數據包的數目與第二報文中的添加標簽的數據包數目相同時,寫入第一流表規則到交叉口交換機,并接收交叉口交換機發送的更新成功的第四報文;
第三更新模塊,用于在接收到所有交叉口交換機發送的第四報文后,寫入第一流表規則到頭交換機,對頭交換機進行更新。
可選的,本發明實施例的軟件定義網絡流表更新的裝置還包括:
統計模塊,用于統計第一交換機至第二交換機之間數據包轉發的延遲時間,得到預設的延遲時間,其中,第一交換機為網絡拓撲中的第一個交換機,包括:頭交換機、交叉口交換機、不變交換機,第二交換機為網絡拓撲中的最后一個交換機,包括:頭交換機、交叉口交換機、不變交換機。
可選的,所述標簽至少包括:VLAN(Virtual Local Area Network,虛擬局域網)標簽和MPLS(Multi-Protocol Label Switching,多協議標簽交換)標簽。
可選的,本發明實施例的軟件定義網絡流表更新的裝置還包括:
數據包返回模塊,用于接收頭交換機返回的更新成功的第五報文,返回上傳的后續數據包至頭交換機,其中,后續數據包為在預設的延遲時間之后,頭交換機接收到的數據包。
可選的,所述分類后的交換機還包括:
待刪除交換機,其中,待刪除交換機為按照第一流表規則處理時,不需要存在于第一流表規則中的交換機;
相應的,本發明實施例的軟件定義網絡流表更新的裝置還包括:
刪除模塊,用于刪除待刪除交換機中的流表。
本發明實施例提供的一種軟件定義網絡流表更新的方法及裝置,首先,對網絡拓撲中的交換機進行分類,其次,在更新時等待一個預設的延遲時間,對延遲時間內經過頭交換機的數據包添加標簽,以使得網絡控制器能夠得到在預設的延遲時間內經過頭交換機的數據包的數目,在延遲時間之后,再接收頭交換機上傳的后續數據包,在所有交叉口交換機更新完成后,更新頭交換機。通過本發明實施例提供的軟件定義網絡流表更新的方法及裝置,網絡控制器只需要接收頭交換機上傳的后續數據包,不需要接收網絡拓撲中所有交換機上傳的數據包,降低了網絡控制器的負載壓力。當然,實施本發明的任一產品或方法必不一定需要同時達到以上所述的所有優點。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例的一種軟件定義網絡流表更新的方法的第一種實施方式的流程圖;
圖2為本發明實施例的一種軟件定義網絡流表更新的方法的網絡拓撲示意圖;
圖3為本發明實施例的一種軟件定義網絡流表更新的方法的第二種實施方式的流程圖;
圖4為本發明實施例的一種軟件定義網絡流表更新的方法的第三種實施方式的流程圖;
圖5為本發明實施例的一種軟件定義網絡流表更新的裝置的結構圖;
圖6為本發明實施例的一種軟件定義網絡流表更新的方法應用于14個交換機的網絡拓撲的流表更新時間圖;
圖7為本發明實施例的一種軟件定義網絡流表更新的方法應用于14個交換機的網絡拓撲的網絡控制器負載圖;
圖8為本發明實施例的一種軟件定義網絡流表更新的方法應用于50個交換機的網絡拓撲的流表更新時間圖;
圖9為本發明實施例的一種軟件定義網絡流表更新的方法應用于50個交換機的網絡拓撲的網絡控制器負載圖;
圖10為本發明實施例的一種軟件定義網絡流表更新的方法應用于不同網絡拓撲中的效果對比圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
為了解決現有技術存在的問題,本發明實施例提供了一種軟件定義網絡流表更新的方法及裝置,以實現在保持流表更新一致性的基礎上,降低網絡控制器的負載壓力。
需要說明的是,本發明實施例是按照一條流表規則的轉發路徑進行說明的,并不能用于限定本發明實施例,可以理解的是,一個網絡拓撲中可以有多條流表規則,存在多個轉發路徑,并且該多個轉發路徑相互之間不存在矛盾。
下面,首先對本發明實施例提供的一種軟件定義網絡流表更新的方法進行介紹,如圖1所示,為本發明實施例的一種軟件定義網絡流表更新的方法的第一種實施方式的流程圖,所述的方法可以包括:
S101,獲取需要更新至交換機中的第一流表規則,并根據更新前的第二流表規則和第一流表規則,對網絡拓撲中的交換機進行分類,得到分類后的交換機,分類后的交換機包括:頭交換機、交叉口交換機、新增交換機和不變交換機,其中,頭交換機為按照第一流表規則處理時,需要更新流表的多個交換機中的第一個交換機;交叉口交換機為按照第一流表規則處理時,需要更新流表的多個交換機中、除頭交換機外的交換機;新增交換機為按照第一流表規則處理時,加入第一流表規則中的交換機;不變交換機為按照第一流表規則處理時,不需要更新流表的交換機;
網絡控制器周期性的向網絡拓撲中的各個交換機節點發送LLDP(Link Layer Discovery Protocol,鏈路層發現協議)報文,接收各個交換機節點返回的LLDP報文,并對接收的LLDP進行分析處理,以監測網絡拓撲中鏈路的連接狀態,在有新的交換機加入到該網絡拓撲中時,通過分析該新的交換機發送的LLDP報文,獲取該新的交換機的設備信息,并根據該設備信息將該新的交換機添加到網絡拓撲中,其中,網絡控制器發送和接收LLDP報文的周期是在根據實際應用需要進行設置的,設備信息可以包括該新交換機的交換機節點編號、端口IP地址以及子網掩碼信息。需要說明的是,對接收的LLDP進行分析處理,以監測網絡拓撲中鏈路的連接狀態以及根據該設備信息將該新的交換機添加到網絡拓撲中,屬于現有技術,此處不再贅述。
在網絡控制器接收到攜帶有第一流表規則的更新指令時,根據第一流表規則和第二流表規則以及網絡拓撲生成流表規則,并對網絡拓撲中的交換機進行分類,例如,如圖2所示,為本發明實施例提供的一種軟件定義網絡流表更新的方法的網絡拓撲示意圖,該網絡拓撲包括:網絡控制器200,交換機201、交換機202、交換機203、交換機204、交換機205、交換機206、交換機207、交換機208、交換機209、交換機210、交換機211、交換機212、交換機213、交換機214,其中,交換機208、交換機209、交換機210、交換機212為新加入到網絡拓撲中的交換機。
不難理解的是,流表,是Open Flow對網絡設備的數據轉發功能的一種抽象。流表由多個流表項組成,每一個流表項都對應一個交換機的數據轉發規則,也就是數據的轉發路徑;因此,通常所說的對流表進行更新其實是對流表中的流表項進行更新,其中,Open Flow是一個用于網絡控制器和交換機之間的控制協議。
在數據包按照第二流表規則轉發時,轉發路徑為:
201→202→203→204→205→206→207→211→213→214;
按照第一流表規則轉發時,轉發路徑為:
201→202→208→209→204→205→210→206→207→212→213→214;
因此,根據第一流表規則和第二流表規則以及網絡拓撲,可以將網絡拓撲中的交換機分類為:頭交換機、交叉口交換機、新增交換機和不變交換機;其中,頭交換機為:交換機202,交叉口交換機為:交換機205、交換機207,新增交換機為:交換機208、交換機209、交換機210、交換機212;不變交換機為:交換機201、交換機204、交換機213、交換機214。
通過對網絡拓撲中的交換機進行分類,能夠使得網絡控制器按照本發明實施例提供的軟件定義網絡流表更新的方法對網絡拓撲中的交換機逐步進行更新,從而降低網絡控制器的負載壓力,并且通過分類,得到不變交換機,對不變交換機可以不更新該不變交換機中的流表項,從而縮短流表更新的時間,提高流表更新的效率。
S102,寫入第一流表規則到新增交換機中,并接收新增交換機發送的更新成功的第一報文;
由于新增交換機是在數據包按照第一流表規則處理時,加入第一流表規則中的交換機,因此,在數據包按照第二流表規則進行轉發時,該新增交換機不會影響第二流表規則的轉發路徑,因此,首先將第一流表規則寫入到該新增交換機中,對該新增交換機更新,具體地,是將第一流表規則中與該新增交換機對應的流表項寫入到該新增交換機中。在該新增交換機更新完成后,發送第一報文給網絡控制器,因此,對于網絡控制器來說,是接收該新增交換機發送的更新成功的第一報文。
在步驟S101中,通過分類得到新增交換機為:交換機208、交換機209、交換機210、交換機212,網絡控制器200首先發送與交換機208、交換機209、交換機210、交換機212一一對應的流表項給各個交換機,各個交換機在接收到一一對應的流表項后,開始更新,更新完成后,分別發送第一報文給網絡控制器200,對于網絡控制器200來說,是接收各個新增交換機發送的更新成功的第一報文。
通過首先更新新增交換機,能夠有效防止網絡拓撲中交換機更新完成后發生的轉發邏輯不一致引起的發送環路問題;通過接收該新增交換機發送的第一報文,能夠使得流表更新按照本發明實施例提供的軟件定義網絡流表更新的方法進行更新,保證流表更新的一致性。
S103,獲取預設的延遲時間,并根據第一報文,發送第一指令至頭交換機,接收頭交換機返回的第二報文,其中,第一指令為使得頭交換機在預設的延遲時間內對經過頭交換機的數據包添加標簽并統計添加標簽的數據包數目的指令,第二報文為攜帶有添加標簽的數據包數目的報文;
需要說明的是,該預設的延遲時間可以是在實際使用中,操作人員根據個人經驗預先設置的全網端到端的延遲時間,也可以是網絡控制器根據網絡拓撲預先統計得到的延遲時間,這應當都是被允許的。
網絡控制器在接收到第一報文后,則認為網絡拓撲中的所有新增交換機已經成功更新并且更新完成,然后發送第一指令給頭交換機,命令頭交換機對在延遲時間內經過該頭交換機的所有數據包添加標簽,并且繼續按照第二流表規則進行轉發,在延遲時間結束后,將添加標簽的數據包的數目返回給網絡控制器。
具體地,該標簽可以包括:VLAN(Virtual Local Area Network,虛擬局域網)標簽和MPLS(Multi-Protocol Label Switching,多協議標簽交換)標簽。
需要說明的是,本步驟中對數據包添加VLAN標簽和MPLS標簽屬于現有技術,此處不再贅述,應當理解的是,本步驟中列舉的VLAN標簽和MPLS標簽為優選的標簽,并不能用于限定本發明實施例所使用的標簽,只要是能夠對延遲時間內頭交換機接收的數據包和延遲時間后頭交換機接收的數據包進行區分的標簽都應當屬于本發明實施例的保護范圍。
假設在預設的延遲時間內,經過頭交換機的數據包為20個,則頭交換機202分別對這20個數據包添加標簽,并將添加標簽的數據包的數目返回至頭交換機202,并且按照第二流表規則繼續轉發添加標簽后的20個數據包。
通過對經過該頭交換機的所有數據包添加標簽,并且統計添加標簽的數據包的數目,在后續的步驟中,網絡控制器可以精確控制交叉口交換機進行更新的時間,以縮短網絡拓撲中流表更新的時間。
在本步驟中,在預設的延遲時間內,不需要將頭交換機接收到的數據包上傳到網絡控制器,能夠有效降低網絡控制器的負載壓力。
S104,在預設的延遲時間之后,發送第二指令至頭交換機,并獲取頭交換機根據第二指令上傳的后續數據包,其中,后續數據包為在預設的延遲時間之后,頭交換機接收到的數據包;
在網絡控制器接收到攜帶有添加標簽的數據包數目的第二報文后,則認為頭交換機對預設的延遲時間內的經過該頭交換機的數據包成功添加標簽,在延遲時間之后,發送第二指令給頭交換機,命令頭交換機將后續接收的后續數據包上傳到該網絡控制器,其中,第二指令為命令頭交換機上傳后續數據包至該網絡控制器的指令。
通過命令頭交換機將后續數據包上傳到網絡控制器,能夠使交叉口交換機有充分的時間進行更新,防止網絡拓撲中的交換機對后續數據包轉發時,發生轉發路徑不一致引起的發送環路問題,保證流表更新的一致性。
S105,接收攜帶有交叉口交換機轉發添加標簽的數據包的數目的第三報文,在第三報文中的添加標簽的數據包的數目與第二報文中的添加標簽的數據包數目相同時,寫入第一流表規則到交叉口交換機,并接收交叉口交換機發送的更新成功的第四報文;
在添加標簽的數據包按照第二流表規則轉發到交叉口交換機后,交叉口交換機按照第二流表規則繼續轉發,并且統計轉發的添加標簽的數據包的數目,將轉發的添加標簽的數據包的數目通過第三報文發送到網絡控制器,網絡控制器對第三報文中的添加標簽的數據包的數目、與S103中頭交換機發送的第二報文中添加標簽的數據包的數目進行對比;
在第三報文中的添加標簽的數據包的數目與第二報文中的添加標簽的數據包數目相同時,寫入第一流表規則到交叉口交換機;
在第三報文中的添加標簽的數據包的數目與第二報文中的添加標簽的數據包數目不同時,則繼續接收交叉口交換機發送的攜帶有轉發添加標簽的數據包的數目的報文。
交叉口交換機更新完成后,返回更新成功的第四報文給網絡控制器,對于網絡控制器來說,則是接收交叉口交換機發送的更新完成的第三報文。
例如,在S103中,添加標簽的數據包的數目為20個,在圖2所示的本發明實施例提供的一種軟件定義網絡流表更新的方法的網絡拓撲示意圖中,交叉口交換機包括交換機205和交換機207,因此,交換機205為交叉口交換機205,交換機207為交叉口交換機207。
交叉口交換機205首先依次接收到添加標簽的20個數據包,交叉口交換機205按照第二流表規則繼續依次轉發該添加標簽的20個數據包,在轉發過程中,網絡控制器200可以周期性的發送詢問報文,查詢交叉口交換機205轉發的數據包的數目,并且與S103中的第二報文中的添加標簽的數據包的數目進行對比,以確定是否要發送第一流表規則至交叉口交換機205。
在交叉口交換機205轉發的數據包的數目與第二報文中的添加標簽的數據包的數目相同時,則發送第一流表規則至交叉口交換機205。
需要強調的是,網絡控制器200也可以周期性的接收交叉口交換機205發送的攜帶有轉發添加標簽的數據包的數據的報文,這也是可以的。
網絡控制器200與交叉口交換機207之間的執行過程和網絡控制器200與交叉口交換機205之間的執行過程相似或相同,可以相互借鑒,這里不再贅述。
通過本步驟,網絡拓撲中的各個交叉口交換機在各自轉發完成添加標簽的數據包之后,就可以進行更新,不需要等到所有交叉口交換機轉發完添加標簽的數據包后,再進行更新,可以有效縮短流表更新的時間。
S106,在接收到所有交叉口交換機發送的第四報文后,寫入第一流表規則到頭交換機,對頭交換機進行更新。
需要說明的是,由于頭交換機為按照第一流表規則處理時,需要更新流表的多個交換機中的第一個交換機,所以頭交換機可以是交叉口交換機,也可以是新增交換機。
例如,在圖2所示的本發明實施例提供的一種軟件定義網絡流表更新的方法的網絡拓撲示意圖中,在交叉口交換機205和交叉口交換機207更新完成后,網絡控制器200發送第一流表規則至頭交換機202,對頭交換機202進行更新。
通過本步驟,能夠保證在對頭交換機進行更新時,該網絡拓撲中的其他交換機已全部更新完成,保證流表更新的一致性。
本發明實施例提供的一種軟件定義網絡流表更新的方法,首先,對網絡拓撲中的交換機進行分類,其次,在更新時等待一個預設的延遲時間,對延遲時間內經過頭交換機的數據包添加標簽,以使得交叉口交換機在處理完添加標簽的數據包后便可以開始更新,在延遲時間之后,再接收頭交換機上傳的后續數據包,在所有交叉口交換機更新完成后,更新頭交換機。通過本發明實施例提供的軟件定義網絡流表更新的方法及裝置,網絡控制器只需要接收頭交換機上傳的后續數據包,不需要接收網絡拓撲中所有交換機上傳的數據包,降低了網絡控制器的負載壓力。
在寫入第一流表規則到新增交換機中,并接收新增交換機發送的更新成功的第一報文之前,本發明實施例的軟件定義網絡流表更新的方法還包括:
統計第一交換機至第二交換機之間數據包轉發的延遲時間,得到預設的延遲時間,其中,第一交換機為網絡拓撲中的第一個交換機,包括:頭交換機、交叉口交換機、不變交換機,第二交換機為網絡拓撲中的最后一個交換機,包括:頭交換機、交叉口交換機、不變交換機。
例如,在圖2所示的本發明實施例提供的一種軟件定義網絡流表更新的方法的網絡拓撲示意圖中,第一交換機為頭交換機202,第二交換機為不變交換機213,則預設的延遲時間為頭交換機202按照第二流表規則轉發數據包至不變交換機213之間的延遲時間。
在本步驟中,通過統計第一交換機至第二交換機之間的延遲時間,能夠有效縮短預設的延遲時間,網絡控制器能夠更早的對交叉口交換機和頭交換機進行更新,縮短流表更新的時間。
如圖3所示,為本發明實施例的一種軟件定義網絡流表更新的方法的第二種實施方式的流程圖;在接收到所有交叉口交換機發送的第四報文后,寫入第一流表規則到所述頭交換機之后,本發明實施例的軟件定義網絡流表更新的方法還包括:
S107,接收頭交換機返回的更新成功的第五報文,返回上傳的后續數據包至頭交換機,其中,后續數據包為在預設的延遲時間之后,頭交換機接收到的數據包。
在本步驟中,控制器首先接收頭交換機返回的更新成功的第五報文,再根據第五報文,返回上傳的后續數據包至頭交換機,能夠使得網絡拓撲中,按照第一流表規則轉發數據的交換機的流表都更新完成,從而保證后續數據包按照第一流表規則的轉發路徑進行轉發,保證流表更新的一致性。
如圖4所示,為為本發明實施例的一種軟件定義網絡流表更新的方法的第三種實施方式的流程圖,步驟S101中,分類后的交換機還包括:
待刪除交換機,其中,待刪除交換機為按照第一流表規則處理時,不需要存在于第一流表規則中的交換機;
相應的,在接收頭交換機返回的更新成功的第五報文,返回上傳的后續數據包至頭交換機之后,本發明實施例的軟件定義網絡流表更新的方法還包括:
S108,刪除待刪除交換機中的流表。
通過刪除待刪除交換機中的流表,能夠釋放該交換機中的存儲空間,并且可以使該交換機用于其他網絡拓撲中,提高交換機的利用率。
相應于上述方法實施例,本發明實施例提供了一種軟件定義網絡流表更新的裝置,如圖5所示,為本發明實施例的一種軟件定義網絡流表更新的裝置的結構圖,應用于網絡控制器,該裝置可以包括:
分類模塊501,用于獲取需要更新至交換機中的第一流表規則,并根據更新前的第二流表規則和第一流表規則,對網絡拓撲中的交換機進行分類,得到分類后的交換機,分類后的交換機包括:頭交換機、交叉口交換機、新增交換機和不變交換機,其中,頭交換機為按照第一流表規則處理時,需要更新流表的多個交換機中的第一個交換機;交叉口交換機為按照第一流表規則處理時,需要更新流表的多個交換機中、除頭交換機外的交換機;新增交換機為按照第一流表規則處理時,加入第一流表規則中的交換機;不變交換機為按照第一流表規則處理時,不需要更新流表的交換機;
第一更新模塊502,用于寫入第一流表規則到新增交換機中,并接收新增交換機發送的更新成功的第一報文;
第一發送模塊503,用于獲取預設的延遲時間,并根據第一報文,發送第一指令至頭交換機,接收頭交換機返回的第二報文,其中,第一指令為使得頭交換機在預設的延遲時間內對經過頭交換機的數據包添加標簽并統計添加標簽的數據包數目的指令,第二報文為攜帶有添加標簽的數據包數目的報文;
數據包緩存模塊504,用于在預設的延遲時間之后,發送第二指令至頭交換機,并獲取頭交換機根據第二指令上傳的后續數據包,其中,后續數據包為在預設的延遲時間之后,頭交換機接收到的數據包;
第二更新模塊505,用于接收攜帶有交叉口交換機轉發添加標簽的數據包的數目的第三報文,在第三報文中的添加標簽的數據包的數目與第二報文中的添加標簽的數據包數目相同時,寫入第一流表規則到交叉口交換機,并接收交叉口交換機發送的更新成功的第四報文;
第三更新模塊506,用于在接收到所有交叉口交換機發送的第四報文后,寫入第一流表規則到頭交換機,對頭交換機進行更新。
本發明實施例提供的一種軟件定義網絡流表更新的裝置,首先,對網絡拓撲中的交換機進行分類,其次,在更新時等待一個預設的延遲時間,對延遲時間內經過頭交換機的數據包添加標簽,以使得交叉口交換機在處理完添加標簽的數據包后便可以開始更新,在延遲時間之后,再接收頭交換機上傳的后續數據包,在所有交叉口交換機更新完成后,更新頭交換機。通過本發明實施例提供的軟件定義網絡流表更新的方法及裝置,網絡控制器只需要接收頭交換機上傳的后續數據包,不需要接收網絡拓撲中所有交換機上傳的數據包,降低了網絡控制器的負載壓力。
需要說明的是,本發明實施例的裝置是應用上述軟件定義網絡流表更新的方法的裝置,則上述軟件定義網絡流表更新的方法的所有實施例均適用于該裝置,且均能達到相同或相似的有益效果。
具體地,本發明實施例的軟件定義網絡流表更新的裝置還包括:
統計模塊,用于統計第一交換機至第二交換機之間數據包轉發的延遲時間,得到預設的延遲時間,其中,第一交換機為網絡拓撲中的第一個交換機,包括:頭交換機、交叉口交換機、不變交換機,第二交換機為網絡拓撲中的最后一個交換機,包括:頭交換機、交叉口交換機、不變交換機。
具體地,所述標簽至少包括:VLAN(Virtual Local Area Network,虛擬局域網)標簽和MPLS(Multi-Protocol Label Switching,多協議標簽交換)標簽。
具體地,本發明實施例的軟件定義網絡流表更新的裝置還包括:
數據包返回模塊,用于接收頭交換機返回的更新成功的第五報文,返回上傳的后續數據包至頭交換機,其中,后續數據包為在預設的延遲時間之后,頭交換機接收到的數據包。
具體地,所述分類后的交換機還包括:
待刪除交換機,其中,待刪除交換機為按照第一流表規則處理時,不需要存在于第一流表規則中的交換機;
相應的,本發明實施例的軟件定義網絡流表更新的裝置還包括:
刪除模塊,用于刪除待刪除交換機中的流表。
參見圖6、圖7,圖6為本發明實施例的一種軟件定義網絡流表更新的方法應用于14個交換機的網絡拓撲的流表更新時間圖,圖7為本發明實施例的一種軟件定義網絡流表更新的方法應用于14個交換機的網絡拓撲的網絡控制器負載圖;
在該網絡拓撲中,按第二流表規則轉發數據包的交換機包括:交換機201、交換機202、交換機203、交換機204、交換機205、交換機206、交換機207、交換機211、交換機213、交換機214,按第一流表規則轉發數據包的交換機包括:交換機201、交換機202、交換機208、交換機209、交換機204、交換機205、交換機210、交換機206、交換機207、交換機212、交換機213、交換機214,數據包的到達采用泊松分布,參數從1~10設置,同時各轉發鏈路之間的延遲符合0.01~0.1的均勻隨機分布。
從圖6中可以看出本發明實施例提供的軟件定義網絡流表更新的方法減小了更新時間,圖7中可以看出本發明實施例提供的軟件定義網絡流表更新的方法減少了控制器的負載,提高了網絡更新的性能。
參見圖8、圖9,圖8為本發明實施例的一種軟件定義網絡流表更新的方法應用于50個交換機的網絡拓撲的流表更新時間圖,圖9為本發明實施例的一種軟件定義網絡流表更新的方法應用于50個交換機的網絡拓撲的網絡控制器負載圖;
在該網絡拓撲中,按照第二流表規則轉發數據包的交換機數量為30個,新增交換機數量為20個,采用隨機生成網絡拓撲的方法,并且,隨機生成需要更新的交換機數量與位置,網絡拓撲中總共需要修改流表的交換機數量為39,數據包的到達同樣采用泊松分布,參數從1~10設置,同時各轉發鏈路之間的延遲符合0.01~0.1的均勻隨機分布。
從圖8中可以看出,與現有技術相比,在數據包到達速率遞增的仿真環境中,本發明實施例提供的軟件定義網絡流表更新的方法的流表更新的總耗時都比現有技術的方案的流表更新的總耗時小,因此,采用本發明實施例的軟件定義網絡流表更新的方法減小了更新時間,從圖9中可以看出本發明實施例提供的軟件定義網絡流表更新的方法中網絡控制器接收的數據包的數目總是比現有技術中網絡控制器接收的數據包的數目小,因此,采用本發明實施例的軟件定義網絡流表更新的方法減少了控制器的負載,提高了網絡更新的性能。
綜上所述,從固定拓撲與隨機拓撲中可以看出,控制器的負載情況,主要受報文到達速率的影響,泊松分布的速率越大,控制器的負載就越大,在相同速率與相同拓撲的情況下,本發明實施例提供的軟件定義網絡流表更新的方法能夠有效的降低控制器的負載。而網絡的更新時間受拓撲的影響較大,拓撲越大,網絡的更新時間就越長。
參見圖10,圖10為本發明實施例的一種軟件定義網絡流表更新的方法應用于不同網絡拓撲中的效果對比圖,橫坐標1至10分別代表不同的網絡拓撲,其中,1為網絡拓撲中有10個交換機,2為網絡拓撲中有20個交換機,3為網絡拓撲中有30個交換機,4為網絡拓撲中有40個交換機,5為網絡拓撲中有50個交換機,6為網絡拓撲中有60個交換機,7為網絡拓撲中有70個交換機,8為網絡拓撲中有80個交換機,9為網絡拓撲中有90個交換機,10為網絡拓撲中有100個交換機,
從圖10可以看出,隨著網絡拓撲的增大,網絡的更新時間也不斷增多,本發明實施例提供的軟件定義網絡流表更新的方法的更新時間總是小于現有技術的更新時間,因此,本發明實施例的軟件定義網絡流表更新的方法能夠有效的提高網絡更新的效率。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上所述僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發明的保護范圍內。