一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法及裝置,方法包括:控制器接收交換機發(fā)送的數(shù)據(jù)包,將數(shù)據(jù)包的特征字段與流表中的字段進行匹配,并根據(jù)預設的動作優(yōu)先順序將數(shù)據(jù)包的動作記錄在流表的動作集中;若數(shù)據(jù)包的特征字段與流表中的字段匹配成功,則根據(jù)動作集中的動作順序,對數(shù)據(jù)包執(zhí)行對應操作;若對應動作為預處理轉發(fā),則判斷數(shù)據(jù)包的時隙字段與流表中的傳輸時隙值是否匹配,若匹配,則將數(shù)據(jù)包轉發(fā),若不匹配,則將數(shù)據(jù)包緩存至下一個時隙進行轉發(fā)。本發(fā)明簡化了部署,增強了網(wǎng)絡的可擴展性,解決了在策略方法實施過程中造成的數(shù)據(jù)流丟包以及接收端可能產(chǎn)生的數(shù)據(jù)包亂序問題。
【專利說明】
一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法及裝置
技術領域
[0001]本發(fā)明涉及數(shù)據(jù)中心網(wǎng)絡流量技術領域,具體涉及一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法及裝置。
【背景技術】
[0002]數(shù)據(jù)中心網(wǎng)絡的流量工程是當今網(wǎng)絡研究的一個重要方向,由于數(shù)據(jù)中心網(wǎng)絡歸屬單一運營商所有,便于流量工程的統(tǒng)一部署,天然符合軟件定義網(wǎng)絡(Software DefinedNetWOrk,SDN)所需要的集中控制要求。同時,數(shù)據(jù)中心網(wǎng)絡通常具有對稱的拓撲結構使得節(jié)點對之間存在大量的冗余鏈路,采用多路徑傳輸可改善單路徑路由由于“選路”集中而造成的擁塞問題,同時能做到故障鏈路的快速切換,增強可靠性,并能聚合鏈路帶寬,充分利用這些冗余鏈路進行流量均衡是目前數(shù)據(jù)中心網(wǎng)絡流量工程的主要方法。
[0003]目前的研究工作中,一種是基于數(shù)據(jù)流粒度的流量均衡策略,采用靜態(tài)的等價路由(Equal-Cost Multipath Routing,ECMP)機制在上行鏈路中增加隨機選擇核心節(jié)點的步驟,但是當鏈路中出現(xiàn)大流的時候,會造成鏈路資源分配不公平。通過采用一種啟發(fā)式路由算法(Global First Fit,GFF)引入了鏈路狀態(tài)監(jiān)測機制可以克服ECMP的不足,但是卻不可避免的會在大流的迀移過程中產(chǎn)生丟包并且可能造成接收端數(shù)據(jù)包亂序;另一種是基于數(shù)據(jù)包粒度的流量均衡策略,F(xiàn)astpass除了設計新的通信協(xié)議外,還對數(shù)據(jù)源端的傳輸控制協(xié)議進行了修改,同時還需要增大接收端的緩存來處理接收端亂序的數(shù)據(jù)包,實現(xiàn)起來較為復雜,對傳輸協(xié)議或者體系結構改動較多,這些都增加了部署的復雜性,可擴展性不高。
[0004]因此,當前研究工作中面臨的主要挑戰(zhàn)是如何設計一種數(shù)據(jù)中心網(wǎng)絡流量均衡方法,既能簡化部署、增強可擴展性,又能解決在策略方法實施過程中造成的數(shù)據(jù)流丟包以及接收端可能產(chǎn)生的數(shù)據(jù)包亂序問題。
【發(fā)明內(nèi)容】
[0005]由于當前的數(shù)據(jù)中心網(wǎng)絡流量均衡方法部署繁瑣、可擴展性差,且無法解決在策略方法實施過程中造成的數(shù)據(jù)流丟包以及接收端可能產(chǎn)生的數(shù)據(jù)包亂序的問題,本發(fā)明提出一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法及裝置。
[0006]第一方面,本發(fā)明提出一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法,包括:
[0007]控制器接收交換機發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的特征字段與流表中的字段進行匹配,并根據(jù)預設的動作優(yōu)先順序將所述數(shù)據(jù)包的動作記錄在流表的動作集中;
[0008]若所述數(shù)據(jù)包的特征字段與所述流表中的字段匹配成功,則根據(jù)動作集中的動作順序,對所述數(shù)據(jù)包執(zhí)行對應操作;
[0009]若所述對應動作為預處理轉發(fā),則判斷所述數(shù)據(jù)包的時隙字段與所述流表中的傳輸時隙值是否匹配,若匹配,則將所述數(shù)據(jù)包轉發(fā),若不匹配,則將所述數(shù)據(jù)包緩存至下一個時隙進行轉發(fā),以均衡面向軟件定義的數(shù)據(jù)中心網(wǎng)絡的流量;
[0010]其中,所述數(shù)據(jù)包的動作包括處理、預處理轉發(fā)、轉發(fā)和丟棄。
[0011]優(yōu)選地,若所述數(shù)據(jù)包的特征字段與交換機中流表的字段匹配失敗,則根據(jù)預設的靜態(tài)流表中的動作集對所述數(shù)據(jù)包執(zhí)行對應操作。
[0012]優(yōu)選地,所述控制器接收交換機發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的特征字段與流表中的字段進行匹配,并根據(jù)預設的動作優(yōu)先順序將所述數(shù)據(jù)包的動作記錄在流表的動作集中之前,還包括:
[0013]若當前發(fā)送周期中單條流鏈路帶寬占用率超過帶寬閾值,則確定當前流為大流,并將所述大流添加至大流集合中;
[0014]若所述大流經(jīng)過的鏈路負載超過負載閾值,則從與所述大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。
[0015]優(yōu)選地,所述若當前發(fā)送周期中單條流鏈路帶寬占用率超過帶寬閾值,則當前流為大流,并將所述大流添加至大流集合中之后,還包括:
[0016]若當前大流在上一個發(fā)送周期經(jīng)過的鏈路負載超過所述負載閾值,則從與當前大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。
[0017]優(yōu)選地,所述當所述大流經(jīng)過的鏈路負載超過負載閾值,則從與所述大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換之后,還包括:
[0018]根據(jù)路徑的傳輸時延計算傳輸時隙值,并根據(jù)所述傳輸時隙值更新所述流表。
[0019]第二方面,本發(fā)明還提出一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡裝置,包括:
[0020]字段匹配模塊,用于接收交換機發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的特征字段與流表中的字段進行匹配,并根據(jù)預設的動作優(yōu)先順序將所述數(shù)據(jù)包的動作記錄在流表的動作集中;
[0021]第一動作執(zhí)行模塊,用于當所述數(shù)據(jù)包的特征字段與所述流表中的字段匹配成功時,根據(jù)動作集中的動作順序,對所述數(shù)據(jù)包執(zhí)行對應操作;
[0022]預處理轉發(fā)模塊,用于當所述對應動作為預處理轉發(fā)時,判斷所述數(shù)據(jù)包的時隙字段與所述流表中的傳輸時隙值是否匹配,若匹配,則將所述數(shù)據(jù)包轉發(fā),若不匹配,則將所述數(shù)據(jù)包緩存至下一個時隙進行轉發(fā),以均衡面向軟件定義的數(shù)據(jù)中心網(wǎng)絡的流量;
[0023]其中,所述數(shù)據(jù)包的動作包括處理、預處理轉發(fā)、轉發(fā)和丟棄。
[0024]優(yōu)選地,還包括:
[0025]第二動作執(zhí)行模塊,用于當所述數(shù)據(jù)包的特征字段與交換機中流表的字段匹配失敗時,根據(jù)預設的靜態(tài)流表中的動作集對所述數(shù)據(jù)包執(zhí)行對應操作。
[0026]優(yōu)選地,還包括:
[0027]大流判斷模塊,用于當當前發(fā)送周期中單條流鏈路帶寬占用率超過帶寬閾值時,確定當前流為大流,并將所述大流添加至大流集合中;
[0028]第一路徑選擇模塊,用于當所述大流經(jīng)過的鏈路負載超過負載閾值時,從與所述大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。
[0029]優(yōu)選地,還包括:
[0030]第二路徑選擇模塊,用于當當前大流在上一個發(fā)送周期經(jīng)過的鏈路負載超過所述負載閾值時,從與當前大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。
[0031]優(yōu)選地,還包括:
[0032]時隙值更新模塊,用于根據(jù)路徑的傳輸時延計算傳輸時隙值,并根據(jù)所述傳輸時隙值更新所述流表。
[0033]由上述技術方案可知,本發(fā)明通過控制器將數(shù)據(jù)包的動作記錄在動作集中,并根據(jù)動作集中的動作順序執(zhí)行對應操作,簡化了部署,同時增強了網(wǎng)絡的可擴展性;通過判斷數(shù)據(jù)包的時隙字段與流表中的傳輸時隙值是否匹配,若匹配,則將所述數(shù)據(jù)包轉發(fā),若不匹配,則將所述數(shù)據(jù)包緩存至下一個時隙進行轉發(fā),解決了在策略方法實施過程中造成的數(shù)據(jù)流丟包以及接收端可能產(chǎn)生的數(shù)據(jù)包亂序問題。
【附圖說明】
[0034]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些圖獲得其他的附圖。
[0035]圖1為本發(fā)明一實施例提供的一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法的流程示意圖;
[0036]圖2為本發(fā)明一實施例提供的一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡的系統(tǒng)結構圖;
[0037]圖3為本發(fā)明另一實施例提供的一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法的流程圖;
[0038]圖4為本發(fā)明另一實施例提供的一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法的觸發(fā)與取消流程圖;
[0039]圖5為本發(fā)明一實施例提供的一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡裝置的結構示意圖。
【具體實施方式】
[0040]下面結合附圖,對發(fā)明的【具體實施方式】作進一步描述。以下實施例僅用于更加清楚地說明本發(fā)明的技術方案,而不能以此來限制本發(fā)明的保護范圍。
[0041]首先針對實施例采用Fat-tree網(wǎng)絡拓撲,對于拓撲中的交換機需要利用控制器下發(fā)靜態(tài)流表進行設置,為了更清楚地描述本發(fā)明的工作流程,對涉及到的概念定義如下:
[0042]O-D(Origin-Destinat1n)對:指某條流的源端和目的端主機所直接連接的兩臺邊緣層交換機,實驗中的O-D對分別屬于不同POD(Performance Optimizat1nDatacenter)。
[0043]中間交換機:指匯聚層和核心層交換機。
[0044]交換機路徑:指當某個數(shù)據(jù)包從交換機O-D對的一端到另一端過程中經(jīng)過的邊緣交換機和中間交換機所組成的路徑。
[0045]靜態(tài)路徑:指對于每一個O-D對,都事先指定的一條固定的傳輸路徑。當FLAT未被觸發(fā)時,O-D之間的數(shù)據(jù)流將沿著該路徑傳輸,其中,F(xiàn)LAT表示本發(fā)明提供的面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法。
[0046]FLAT路徑:指對于每一個O-D對,都事先指定的k/2條(k為Fat-tree拓撲的參數(shù))固定的、不相交的交換機路徑。當FLAT在某個O-D對上被觸發(fā)時,只從這k/2條固定路徑中選擇當前時隙的發(fā)送路徑。對于某個O-D對,其靜態(tài)路徑是包含在FLAT路徑中的。
[0047]靜態(tài)路徑和FLAT路徑的流表設置:對于中間交換機,所有的FLAT路徑信息都將以靜態(tài)流表項的形式存儲在流表中。對于邊緣交換機,則只預先存儲所有靜態(tài)路徑對應的流表。當FLAT未被觸發(fā)時,數(shù)據(jù)包可以沿著預設的靜態(tài)路徑完成轉發(fā),而FLAT啟動后,則由控制器向邊緣交換機下發(fā)優(yōu)先級更高的FLAT流表實現(xiàn)路徑切換。
[0048]其次,在FLAT的工作過程中,還涉及到對路徑和鏈路數(shù)據(jù)的探測過程,相關的概念及要點解釋如下:
[0049]全局路徑時延探測:為了在FLAT觸發(fā)時的第一個時隙之前評估各條FLAT傳輸路徑的優(yōu)劣并計算傳輸時隙值,我們需要在每個O-D對之間的4條(可提前設定傳輸路徑數(shù)量)預設路徑上發(fā)送探測包來獲取路徑時延值。這種探測稱為全局路徑探測,這些探測包被稱為全局路徑探測包。需要注意的是這一過程將一直持續(xù),不論是否有路徑觸發(fā)FLAT策略。探測包的發(fā)送間隔必須要適當,如果太長得到的數(shù)據(jù)時效性就不強,太短則會增大數(shù)據(jù)鏈路和交換機到控制器通信鏈路的時延。
[0050]FLAT路徑時延探測:對某條大流對應的所有FLAT路徑進行的時延測量,目的和全局探測相似。由于這種開銷相對較小,且需要對大流檢測的時效性更強,所以這種探測比全局探測的時間間隔要短。
[0051 ]鏈路負載探測:FLAT啟動條件是大流造成了某條鏈路負載超過閾值;當FLAT啟動后,需要根據(jù)路徑的負載情況來選擇最優(yōu)路徑,因此需要對大流的所有FLAT路徑上的所有鏈路負載進行測量,這稱為單一路徑鏈路探測(簡稱鏈路探測)。它不需要在鏈路上下發(fā)探測包,只需要定時向控制器上傳端口統(tǒng)計數(shù)據(jù),但只在指定的路徑上生效。通常它與FLAT時延探測有同樣的周期。
[0052]FLAT探測周期:指FLAT時延探測和鏈路探測的周期,它同時也決定了FLAT獲取數(shù)據(jù)、決策和判定的最短時間周期,在下文中也被簡稱為周期。
[0053]圖1示出了本發(fā)明一實施例提供的一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法的流程示意圖,包括:
[0054]S1、控制器接收交換機發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的特征字段與流表中的字段進行匹配,并根據(jù)預設的動作優(yōu)先順序將所述數(shù)據(jù)包的動作記錄在流表的動作集中;
[0055]S2、若所述數(shù)據(jù)包的特征字段與所述流表中的字段匹配成功,則根據(jù)動作集中的動作順序,對所述數(shù)據(jù)包執(zhí)行對應操作;
[0056]S3、若所述對應動作為預處理轉發(fā),則判斷所述數(shù)據(jù)包的時隙字段與所述流表中的傳輸時隙值是否匹配,若匹配,則將所述數(shù)據(jù)包轉發(fā),若不匹配,則將所述數(shù)據(jù)包緩存至下一個時隙進行轉發(fā),以均衡面向軟件定義的數(shù)據(jù)中心網(wǎng)絡的流量;
[0057]其中,所述數(shù)據(jù)包的動作包括處理、預處理轉發(fā)、轉發(fā)和丟棄。
[0058]本實施例通過控制器將數(shù)據(jù)包的動作記錄在動作集中,并根據(jù)動作集中的動作順序執(zhí)行對應操作,簡化了部署,同時增強了網(wǎng)絡的可擴展性;通過判斷數(shù)據(jù)包的時隙字段與流表中的傳輸時隙值是否匹配,若匹配,則將所述數(shù)據(jù)包轉發(fā),若不匹配,則將所述數(shù)據(jù)包緩存至下一個時隙進行轉發(fā),解決了在策略方法實施過程中造成的數(shù)據(jù)流丟包以及接收端可能產(chǎn)生的數(shù)據(jù)包亂序問題。
[0059]進一步地,S3之后,還包括:
[0060]S4、若所述數(shù)據(jù)包的特征字段與交換機中流表的字段匹配失敗,則根據(jù)預設的靜態(tài)流表中的動作集對所述數(shù)據(jù)包執(zhí)行對應操作。
[0061]通過設置靜態(tài)流表,來實現(xiàn)所述數(shù)據(jù)包的特征字段與交換機中流表的字段匹配失敗時,每一對邊緣交換機之間的一條路由。
[0062]具體地,SI之前,還包括:
[0063]SO1、若當前發(fā)送周期中單條流鏈路帶寬占用率超過帶寬閾值,則確定當前流為大流,并將所述大流添加至大流集合中;
[0064]S02、若所述大流經(jīng)過的鏈路負載超過負載閾值,則從與所述大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。
[0065]通過判斷大流經(jīng)過的鏈路負載超過負載閾值并執(zhí)行相應操作,能夠避免出現(xiàn)傳統(tǒng)方法中鏈路負載過大造成的數(shù)據(jù)流丟包和數(shù)據(jù)包亂序情況。
[0066]進一步地,SOl之后,還包括:
[0067]S012、若當前大流在上一個發(fā)送周期經(jīng)過的鏈路負載超過所述負載閾值,則從與當前大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。
[0068]為了避免當前大流在上一個發(fā)送周期經(jīng)過的鏈路負載超過所述負載閾值,而當前周期經(jīng)過的鏈路負載未超過所述負載閾值,因此造成的路由震蕩問題以及降低執(zhí)行效果的問題。
[0069]更進一步地,S02之后,還包括:
[0070]S03、根據(jù)路徑的傳輸時延計算傳輸時隙值,并根據(jù)所述傳輸時隙值更新所述流表。
[0071]通過更新流表中的傳輸時隙值,使得傳輸時隙值更加符合網(wǎng)絡當前的運行情況,進一步均衡網(wǎng)絡流量。
[0072]為了更詳細說明本實施例提供的面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法,首先對本實施例提供的面向軟件定義的數(shù)據(jù)中心網(wǎng)絡進行介紹:
[0073]—個面向軟件定義的數(shù)據(jù)中心網(wǎng)絡包含:服務器、接入層交換機、核心層交換機以及控制器,其中控制器與所有交換機相連,交換機支持OpenFlow(OF)協(xié)議;
[0074]如圖2所示,控制器作為應用層平臺,集成四個模塊化組件來實現(xiàn)整個控制器平臺的功能包含:拓撲信息收集模塊、路徑信息統(tǒng)計模塊、路徑計算模塊、流表更新模塊;
[0075]拓撲信息收集模塊通過向鄰近的交換機收集更新信息來發(fā)現(xiàn)網(wǎng)絡拓撲。交換機可更新的信息包括發(fā)現(xiàn)鄰居消息和每個鄰居互聯(lián)的鏈路狀態(tài)消息,通過與交換機信息的交互決定當前網(wǎng)絡拓撲圖,并向路徑計算模塊提供信息??刂破髌脚_與交換機之間的通信協(xié)議都采用OF協(xié)議,每個交換機都運行OF協(xié)議代理軟件,負責接收數(shù)據(jù)包轉發(fā)更新的消息并重新編寫基于交換機硬件的轉發(fā)表;
[0076]路徑信息統(tǒng)計模塊通過主動查詢和被動接收相結合的方式實現(xiàn)兩個功能:一是通過定期查詢相關OF交換機來收集每個端口的流量統(tǒng)計信息;二是通過構造探測包獲取并更新傳輸路徑的時延信息,以上信息都將保存到數(shù)據(jù)統(tǒng)計表中。其中,流量統(tǒng)計信息包括控制器收到FlowRemoved消息后,根據(jù)流表計數(shù)器來統(tǒng)計交換機每個端口發(fā)送和接收的字節(jié)數(shù)量,為鏈路剩余容量的計算提供依據(jù);
[0077]路徑計算模塊運行本發(fā)明的核心算法FLAT,首先通過拓撲信息收集模塊提供的網(wǎng)絡拓撲來計算任一節(jié)點對之間可用的路徑,考慮到控制器的計算開銷以及交換機硬件條件的限制(例如,TCAM容量和成本),可以對選擇多路徑傳輸?shù)臄?shù)量進行限制(例如,不超過三條);其次,根據(jù)路徑信息統(tǒng)計模塊提供的數(shù)據(jù)可以對選擇的鏈路進行剩余容量計算以及傳輸時隙的計算,并選擇負載最輕的鏈路進行數(shù)據(jù)流轉發(fā);最后,將路徑計算的結果轉換為路由轉發(fā)規(guī)則下發(fā)到交換機;
[0078]流表更新模塊將驅動OF交換機依據(jù)控制器下發(fā)的路由轉發(fā)規(guī)則進行流表的安裝、更新以及刪除操作。
[0079]本實施例提供的數(shù)據(jù)中心網(wǎng)絡在數(shù)據(jù)流調(diào)度的過程中不會造成接收端數(shù)據(jù)包亂序的問題;控制器平臺采用主被動結合測量的方式獲取流量信息與傳輸路徑的時延信息,保證了算法的準確度;在滿足細粒度流量均衡的同時不會對目前數(shù)據(jù)中心網(wǎng)絡中普遍使用的TCP通信協(xié)議做任何改動,易于部署,具有可擴展性。
[0080]下面結合圖2-4,對本實施例提供的方法作進一步的闡述。
[0081]圖2是本發(fā)明基于FLAT算法實施流量均衡方法的原型系統(tǒng)。如圖2所示,控制器作為應用層平臺,集成四個模塊化組件分別為:拓撲信息收集模塊、路徑信息統(tǒng)計模塊、路徑計算模塊和流表更新模塊,共同實現(xiàn)整個控制器平臺的功能;其中,路徑計算模塊運行本實施例的核心方法FLAT。
[0082]控制平臺的工作流程如下:首先,拓撲信息收集模塊通過向鄰近的交換機收集更新信息來發(fā)現(xiàn)網(wǎng)絡拓撲,F(xiàn)LAT則通過該模塊提供的網(wǎng)絡拓撲來計算任一節(jié)點對之間可用的路徑;下一步,F(xiàn)LAT將根據(jù)路徑信息統(tǒng)計模塊提供的數(shù)據(jù)對選擇的鏈路進行剩余容量計算以及傳輸時隙的計算,并選擇負載最輕的鏈路進行數(shù)據(jù)流轉發(fā);最后,F(xiàn)LAT將路徑計算的結果轉換為路由轉發(fā)規(guī)則下發(fā)到交換機實現(xiàn)數(shù)據(jù)包轉發(fā)。
[0083]圖3是FLAT工作流程,具體包括以下步驟:
[0084]S201、數(shù)據(jù)包到達Openf low交換機;
[0085]S202、交換機根據(jù)數(shù)據(jù)包的某些特征字段(如源IP、目的IP、MAC地址等)與流表中的entry進行匹配。如果匹配失敗,則執(zhí)行S203;如果匹配成功,則跳轉執(zhí)行S204;
[0086]S203、默認情況下,匹配不成功時會出現(xiàn)packet-1n事件。但在實驗數(shù)據(jù)中心網(wǎng)絡中,所有交換機都以較低優(yōu)先級預置了靜態(tài)流表,來實現(xiàn)未觸發(fā)FLAT時每一對邊緣交換機之間的一條路由。因此如果匹配失敗,則說明靜態(tài)流表失效,應當返回錯誤,并嘗試重新下發(fā)靜態(tài)流表,之后跳轉執(zhí)行S202重新嘗試匹配流表;
[0087]S204、在Openf 1wl.3標準中,一個數(shù)據(jù)包在匹配流表時,會按照預定的優(yōu)先級順序將所有entry動作都記錄在動作集中,匹配完之后按順序執(zhí)行。通常轉發(fā)、丟棄被作為一個數(shù)據(jù)包最終的動作而執(zhí)行,因此除了轉發(fā)和丟棄之外的其他動作都會被排在二者之前來完成。而FLAT可以看做是一種被修改過的轉發(fā)動作,因此也會排在其他動作之后;當執(zhí)行完其他動作后,剩余的動作應當是FLAT,轉發(fā)或丟棄;
[0088]S205、如果當前動作是FLAT,則執(zhí)行S206;如果不是,則跳轉執(zhí)行S207;
[0089]S206、判斷當前時隙,該流是否需要緩存。如果不需要緩存,則執(zhí)行S207;如果需要緩存,則跳轉執(zhí)行S208;
[0090]S207、執(zhí)行FLAT策略下的轉發(fā)動作(來自S206),或者執(zhí)行來自S205非FLAT動作之外的轉發(fā)或者丟棄操作,以上動作完成后,跳轉執(zhí)行S209;
[0091 ] S208、緩存當前包到隊列,直到當前傳輸時隙結束后再根據(jù)FLAT策略進行轉發(fā);
[0092]S209、該數(shù)據(jù)包處理完畢,結束流程;如果有下一個數(shù)據(jù)包到達,跳轉執(zhí)行S202。
[0093]圖4是FLAT觸發(fā)與取消工作流程圖,具體包括以下步驟:
[0094]S301、設置全局探測包、鏈路探測包的發(fā)送周期;
[0095]S302、開始進行全局探測,同時記錄測量結果;
[0096]S303、判斷網(wǎng)絡中是否有大流產(chǎn)生;判斷大流的依據(jù)是源端主機某條流鏈路帶寬占用率超過設定閾值(一般是10%)。如果有大流產(chǎn)生,則添加到大流集合F中并執(zhí)行S304;否則,跳轉執(zhí)行S313;
[0097]S304、對集合內(nèi)所有大流對應的鏈路進行鏈路負載探測,一方面可以探知大流經(jīng)過的某個鏈路是否超過閾值;另一方面為FLAT觸發(fā)后的路徑計算提供信息;
[0098]S305、判斷當前大流是否在上一個探測周期執(zhí)行過FLAT,如果沒有,則執(zhí)行S306;否則跳轉執(zhí)行S307,對當前大流判斷在上一周期是否執(zhí)行過FLAT的原因在于:如果該大流在這一周期未能觸發(fā)FLAT,那么回到原路徑可能再次觸發(fā)FLAT從而產(chǎn)生路由震蕩,降低FLAT策略的執(zhí)行效果,因此,對上一周期執(zhí)行過FLAT的大流繼續(xù)執(zhí)行,直到它不再是大流或者終止傳輸;
[0099]S306、如果大流經(jīng)過的某個鏈路負載超過閾值,那么執(zhí)行S307;否則就檢查下一條大流,并跳轉執(zhí)行S312;
[0100]S307、FLAT算法觸發(fā)并根據(jù)當前的測量結果,從大流源端直連的邊緣層交換機預置的4條傳輸路徑中,選擇時延最小的2條路徑作為FLAT的傳輸路徑。在FLAT流表的有效期內(nèi),當前大流的數(shù)據(jù)包將按照轉發(fā)策略在這兩條路徑上切換。需要注意的是,運行FLAT的第一個時隙,交換機需要先緩存該流的第一個流片(FLAT—個時隙所傳輸?shù)臄?shù)據(jù)包),防止數(shù)據(jù)包到達接收端產(chǎn)生亂序;
[0101]S308、FLAT根據(jù)當前記錄的測量結果計算出傳輸時隙值。時隙值的計算簡要描述如下:當預置的4條傳輸路徑之間的時延差值小于10ys時,取時隙值為10ys;當時延差值在100-500ys時,取時隙值為500ys ;當時延差值大于500ys時,以實際差值作為時隙值;
[0102]S309、控制器下發(fā)FLAT流表的優(yōu)先級設置要高于交換機中預置的靜態(tài)流表優(yōu)先級,同時在流表中封裝傳輸時隙值、傳輸路徑所對應的轉發(fā)端口以及流表的生存時間(TTL,Time To Live),TTL值為鏈路探測周期值;
[0103]S310、控制器將FLAT流表下發(fā)到與大流源端直連的邊緣層交換機。由于每一個OD對可選擇4條傳輸路徑,并且已經(jīng)通過靜態(tài)流表的方式下發(fā)到所有傳輸路徑上的交換機,因此,數(shù)據(jù)流依據(jù)FLAT流表在多條路徑之間切換時數(shù)據(jù)包一定可以到達目的地址,并且FLAT流表只需下發(fā)到邊緣層交換機,通過這樣的設計能極大地降低交換機與控制器之間的通信開銷;
[0104]S311、如果當前大流在下個周期仍然存在,那么它將需要時效性更強的路徑時延信息來計算出新的FLAT時隙大小,因此需要在本周期再次測量所有FLAT路徑時延;
[0105]S312、開始檢查下一條大流,跳轉執(zhí)行S305;如果集合F內(nèi)所有大流已檢查完畢,則執(zhí)行S313;
[0106]S313、當前周期對大流的探測和決策已經(jīng)全部完成,也可能當前周期沒有探測到大流(來自S303),如果收到程序終止指令,那么就在這時結束程序;如果繼續(xù)運行,則執(zhí)行S314;
[0107]S314、等待當前周期結束后,再次進入下一個周期并跳轉執(zhí)行S303;
[0108]通過大量的仿真實驗,發(fā)現(xiàn)本實施例提供的方法與其他幾種多路徑傳輸方法相比(例如,ECMP、GFF),吞吐量提高了 13 %?45 %,同時接收端幾乎沒有亂序的數(shù)據(jù)包出現(xiàn),與采用單路徑傳輸效果等同,但是吞吐量與之相比卻能最大提高到83%。從實驗結果可以說明本實施例達到了預期目的。
[0109]圖5示出了本實施例提供的一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡裝置的結構示意圖,包括:
[0110]字段匹配模塊11,用于接收交換機發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的特征字段與流表中的字段進行匹配,并根據(jù)預設的動作優(yōu)先順序將所述數(shù)據(jù)包的動作記錄在流表的動作集中;
[0111]第一動作執(zhí)行模塊12,用于當所述數(shù)據(jù)包的特征字段與所述流表中的字段匹配成功時,根據(jù)動作集中的動作順序,對所述數(shù)據(jù)包執(zhí)行對應操作;
[0112]預處理轉發(fā)模塊13,用于當所述對應動作為預處理轉發(fā)時,判斷所述數(shù)據(jù)包的時隙字段與所述流表中的傳輸時隙值是否匹配,若匹配,則將所述數(shù)據(jù)包轉發(fā),若不匹配,則將所述數(shù)據(jù)包緩存至下一個時隙進行轉發(fā),以均衡面向軟件定義的數(shù)據(jù)中心網(wǎng)絡的流量;
[0113]其中,所述數(shù)據(jù)包的動作包括處理、預處理轉發(fā)、轉發(fā)和丟棄。
[0114]本實施例通過控制器將數(shù)據(jù)包的動作記錄在動作集中,并根據(jù)動作集中的動作順序執(zhí)行對應操作,簡化了部署,同時增強了網(wǎng)絡的可擴展性;通過判斷數(shù)據(jù)包的時隙字段與流表中的傳輸時隙值是否匹配,若匹配,則將所述數(shù)據(jù)包轉發(fā),若不匹配,則將所述數(shù)據(jù)包緩存至下一個時隙進行轉發(fā),解決了在策略方法實施過程中造成的數(shù)據(jù)流丟包以及接收端可能產(chǎn)生的數(shù)據(jù)包亂序問題。
[0115]可選地,所述裝置還包括:
[0116]第二動作執(zhí)行模塊,用于當所述數(shù)據(jù)包的特征字段與交換機中流表的字段匹配失敗時,根據(jù)預設的靜態(tài)流表中的動作集對所述數(shù)據(jù)包執(zhí)行對應操作。
[0117]進一步地,所述裝置還包括:
[0118]大流判斷模塊,用于當當前發(fā)送周期中單條流鏈路帶寬占用率超過帶寬閾值時,確定當前流為大流,并將所述大流添加至大流集合中;
[0119]第一路徑選擇模塊,用于當所述大流經(jīng)過的鏈路負載超過負載閾值時,從與所述大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。
[0120]進一步地,所述裝置還包括:
[0121]第二路徑選擇模塊,用于當當前大流在上一個發(fā)送周期經(jīng)過的鏈路負載超過所述負載閾值時,從與當前大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。
[0122]更進一步地,所述裝置還包括:
[0123]時隙值更新模塊,用于根據(jù)路徑的傳輸時延計算傳輸時隙值,并根據(jù)所述傳輸時隙值更新所述流表。
[0124]本實施例所述的面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡裝置可以用于執(zhí)行上述方法實施例,其原理和技術效果類似,此處不再贅述。
[0125]本發(fā)明的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
【主權項】
1.一種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡方法,其特征在于,包括: 控制器接收交換機發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的特征字段與流表中的字段進行匹配,并根據(jù)預設的動作優(yōu)先順序將所述數(shù)據(jù)包的動作記錄在流表的動作集中; 若所述數(shù)據(jù)包的特征字段與所述流表中的字段匹配成功,則根據(jù)動作集中的動作順序,對所述數(shù)據(jù)包執(zhí)行對應操作; 若所述對應動作為預處理轉發(fā),則判斷所述數(shù)據(jù)包的時隙字段與所述流表中的傳輸時隙值是否匹配,若匹配,則將所述數(shù)據(jù)包轉發(fā),若不匹配,則將所述數(shù)據(jù)包緩存至下一個時隙進行轉發(fā),以均衡面向軟件定義的數(shù)據(jù)中心網(wǎng)絡的流量; 其中,所述數(shù)據(jù)包的動作包括處理、預處理轉發(fā)、轉發(fā)和丟棄。2.根據(jù)權利要求1所述的方法,其特征在于,若所述數(shù)據(jù)包的特征字段與交換機中流表的字段匹配失敗,則根據(jù)預設的靜態(tài)流表中的動作集對所述數(shù)據(jù)包執(zhí)行對應操作。3.根據(jù)權利要求1所述的方法,其特征在于,所述控制器接收交換機發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的特征字段與流表中的字段進行匹配,并根據(jù)預設的動作優(yōu)先順序將所述數(shù)據(jù)包的動作記錄在流表的動作集中之前,還包括: 若當前發(fā)送周期中單條流鏈路帶寬占用率超過帶寬閾值,則確定當前流為大流,并將所述大流添加至大流集合中; 若所述大流經(jīng)過的鏈路負載超過負載閾值,則從與所述大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。4.根據(jù)權利要求3所述的方法,其特征在于,所述若當前發(fā)送周期中單條流鏈路帶寬占用率超過帶寬閾值,則當前流為大流,并將所述大流添加至大流集合中之后,還包括: 若當前大流在上一個發(fā)送周期經(jīng)過的鏈路負載超過所述負載閾值,則從與當前大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。5.根據(jù)權利要求3所述的方法,其特征在于,所述當所述大流經(jīng)過的鏈路負載超過負載閾值,則從與所述大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換之后,還包括: 根據(jù)路徑的傳輸時延計算傳輸時隙值,并根據(jù)所述傳輸時隙值更新所述流表。6.—種面向軟件定義的數(shù)據(jù)中心網(wǎng)絡流量均衡裝置,其特征在于,包括: 字段匹配模塊,用于接收交換機發(fā)送的數(shù)據(jù)包,將所述數(shù)據(jù)包的特征字段與流表中的字段進行匹配,并根據(jù)預設的動作優(yōu)先順序將所述數(shù)據(jù)包的動作記錄在流表的動作集中;第一動作執(zhí)行模塊,用于當所述數(shù)據(jù)包的特征字段與所述流表中的字段匹配成功時,根據(jù)動作集中的動作順序,對所述數(shù)據(jù)包執(zhí)行對應操作; 預處理轉發(fā)模塊,用于當所述對應動作為預處理轉發(fā)時,判斷所述數(shù)據(jù)包的時隙字段與所述流表中的傳輸時隙值是否匹配,若匹配,則將所述數(shù)據(jù)包轉發(fā),若不匹配,則將所述數(shù)據(jù)包緩存至下一個時隙進行轉發(fā),以均衡面向軟件定義的數(shù)據(jù)中心網(wǎng)絡的流量; 其中,所述數(shù)據(jù)包的動作包括處理、預處理轉發(fā)、轉發(fā)和丟棄。7.根據(jù)權利要求6所述的裝置,其特征在于,還包括: 第二動作執(zhí)行模塊,用于當所述數(shù)據(jù)包的特征字段與交換機中流表的字段匹配失敗時,根據(jù)預設的靜態(tài)流表中的動作集對所述數(shù)據(jù)包執(zhí)行對應操作。8.根據(jù)權利要求7所述的裝置,其特征在于,還包括: 大流判斷模塊,用于當當前發(fā)送周期中單條流鏈路帶寬占用率超過帶寬閾值時,確定當前流為大流,并將所述大流添加至大流集合中; 第一路徑選擇模塊,用于當所述大流經(jīng)過的鏈路負載超過負載閾值時,從與所述大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。9.根據(jù)權利要求8所述的裝置,其特征在于,還包括: 第二路徑選擇模塊,用于當當前大流在上一個發(fā)送周期經(jīng)過的鏈路負載超過所述負載閾值時,從與當前大流的源端直連的邊緣層交換機預設的路徑中選擇時延最小的兩條路徑,以供數(shù)據(jù)包轉發(fā)時在所述兩條路徑中切換。10.根據(jù)權利要求9所述的裝置,其特征在于,還包括: 時隙值更新模塊,用于根據(jù)路徑的傳輸時延計算傳輸時隙值,并根據(jù)所述傳輸時隙值更新所述流表。
【文檔編號】H04L12/803GK105915467SQ201610326176
【公開日】2016年8月31日
【申請日】2016年5月17日
【發(fā)明人】楊洋, 楊家海, 溫皓森, 王會
【申請人】清華大學, 中國人民解放軍西安通信學院