)隸屬于同一邊緣層交換機的流,即發(fā)送端和接收端通過同一邊緣層交換機相連。
[0081]以所經(jīng)過的鏈路數(shù)量為單位,上述三類流對應(yīng)的路徑長度分別為6、4和2。其中第三類流的路徑只有一條,因此這些流的分組只會通過一條路徑進行傳輸,其路由的處理方式與傳統(tǒng)路由沒有區(qū)別。對于跨集群的流和跨邊緣層交換機的流,其可選的路徑數(shù)量分別是K2/4和K/2。在本發(fā)明的實施例中,主要描述對跨集群的流和跨邊緣層交換機的流的實施方式。
[0082]首先,根據(jù)Fat-Tree網(wǎng)絡(luò)拓撲的規(guī)則,流的發(fā)送端和接收端確定后,其可選的路徑可以很容易地計算出來。在本發(fā)明的一個實施例中,參照圖2所示,顯示的是一個K =4的Fat-Tree網(wǎng)絡(luò)。假設(shè)一條流的發(fā)送端是服務(wù)器SI,接收端是服務(wù)器S13。因為兩者處于不同的集群,因此該條流是跨集群的流。其中,這條流可用的路徑數(shù)量=K2/4 = 4條。根據(jù)Fat-Tree拓撲規(guī)則,可以很容易地計算出這4條路徑(如圖中帶箭頭線條所示),即SI —E1 —Al —Cl—A7 —E7 —S13,S1 —El—A2 —C3 —A8 —E7 —S13, SI—El—Al —C2 —A7 — E7 — S13,和SI — El — A2 — C4 — A8 — E7 — S13。為了將流量均勻地分配到這些可選路徑上,PSR采用了輪詢的方式,將報文依次分配給可用路徑。需要說明的是,圖中,交換機El?E8為邊緣層交換機,交換機Al?A8為聚集層交換機,交換機Cl?C4為核心層交換機,SI?S16為服務(wù)器,O?3為交換機轉(zhuǎn)發(fā)端口的索引值。
[0083]進一步地,在本發(fā)明的實施例中,為了使分組按照選定的路徑進行路由,本發(fā)明實施例使用了源路由技術(shù),即將路由信息寫入報文頭部。由圖1所示,當分組從低層次交換機向高層次交換機路由(上行路由,圖中以實線表示,箭頭表示數(shù)據(jù)傳播方向)時才會面臨路徑選擇,而且下一跳可以通過本地轉(zhuǎn)發(fā)端口唯一標識。以交換機El為例,當分組到達El后,可以通過兩個下一跳進行路由,即Al或A2,其對應(yīng)的本地轉(zhuǎn)發(fā)端口的索引值分別為2或3。而當分組從高層次交換機向低層次交換機路由(下行路由,圖中以虛線表示,箭頭表示數(shù)據(jù)傳播方向)時路徑是唯一確定的。
[0084]因此,在具體實施時,PSR使用本地轉(zhuǎn)發(fā)端口的索引來標識路由信息。因為只有上行路由時才會面臨路由選擇,而下行路由時路徑是唯一確定的,所以PSR在源路由中寫入的路由信息最多兩跳:針對跨集群的流,需要兩跳路由信息,即上行路由時經(jīng)過的邊緣層交換機和聚集層交換機的本地轉(zhuǎn)發(fā)端口索引;針對跨邊緣層交換機的流,只需要一跳路由信息,即上行路由時經(jīng)過的邊緣層交換機的本地轉(zhuǎn)發(fā)端口索引。對于每一個端口的索引值,PSR使用一個字節(jié)來記錄。邊緣層交換機和聚集層交換機對應(yīng)的轉(zhuǎn)發(fā)端口索引值存放在IP頭部的可選字段中對應(yīng)的固定位置。
[0085]PSR的路由分為兩部分。一部分是源路由,發(fā)生在上行路由階段。途經(jīng)的交換機將分析接收到的分組IP頭部的可選字段信息,并根據(jù)交換機類型(邊緣層交換機,或者聚集層交換機)去相應(yīng)位置讀取轉(zhuǎn)發(fā)端口,并從相應(yīng)的端口轉(zhuǎn)發(fā)數(shù)據(jù)。另一部分是基于IP地址的路由,發(fā)生在下行路由階段。途經(jīng)的交換機根據(jù)目的IP地址實施路由。
[0086]為了實現(xiàn)兩級路由,一種實現(xiàn)是為支持OpenFlow的交換機配置兩級流表。參照圖3所示,為兩級流表處理的流程圖,其中,邊緣層交換機中第一級和第二級流表分別由圖4和圖5所示。實現(xiàn)中使用TOS字段的值標識報文使用源路由還是IP路由:“111111”表示使用源路由,“000000”表示使用IP路由。所有報文最初始的TOS字段值均為“111111”。所有分組先匹配第一級流表,如果第一級流表匹配成功,表明使用源路由,報文沿匹配成功的端口進行轉(zhuǎn)發(fā)。否則報文的TOS字段被重寫為“000000”、并被送至第二級流表進行匹配,執(zhí)行IP路由。聚集層交換機的兩級流表與圖3和圖4所示的流表類似,唯一的區(qū)別是在第一級流表中對字段Fwd.Port2進行匹配。
[0087]雖然使用源路由機制將分組以輪詢的方式分配給可用的傳輸路徑能夠保證均勻分配網(wǎng)絡(luò)流量,確保網(wǎng)絡(luò)中無熱點。但來自一條流的所有分組通過不同路徑傳輸,仍然不可避免會引發(fā)分組的亂序,造成不必要的快速重傳。因此,在具體實施時,本發(fā)明實施例將TCP的快速重傳門限從3提升至10,避免不必要的快速重傳。
[0088]在本發(fā)明的一個具體實施例中,本發(fā)明實施例建立了一個Fat-Tree拓撲,每臺交換機的端口數(shù)量為24。鏈路帶寬均為lGbps,傳輸時延設(shè)為25微秒。并且,在該拓撲上進行了實驗,采用了 Permutat1n流量模式,在該流量模式下,每臺服務(wù)器僅是一條流的發(fā)送端或接收端,并且每臺服務(wù)器發(fā)送1MB數(shù)據(jù)。本發(fā)明實施例分別使用PSR、RPS、Hedera和ECMP使用上述流量模式完成實驗。實驗結(jié)果顯示,PSR比RPS、Hedera和ECMP的性能分別提升了 47.47%、75.21和76.48。因此,實驗結(jié)果表明PSR能夠比現(xiàn)有方案更有效地利用網(wǎng)絡(luò)帶寬,提升網(wǎng)絡(luò)吞吐量。
[0089]根據(jù)本發(fā)明實施例提出的基于包粒度的數(shù)據(jù)中心網(wǎng)絡(luò)源路由方法,通過構(gòu)建數(shù)據(jù)中心網(wǎng)絡(luò)拓撲,并且配置服務(wù)器的操作系統(tǒng)中TCP的快速重傳門限值,以及獲取流的發(fā)送端和接收端,實現(xiàn)通過Fat-Tree網(wǎng)絡(luò)內(nèi)所有流的發(fā)送端的數(shù)據(jù)發(fā)送和所有交換機的數(shù)據(jù)轉(zhuǎn)發(fā),利用數(shù)據(jù)中心網(wǎng)絡(luò)拓撲特點,僅引入較小的分組開銷實現(xiàn)源路由,并且能夠均勻地分配流量,無需修改服務(wù)器和交換機硬件,以及充分地利用數(shù)據(jù)中心網(wǎng)絡(luò)中豐富的鏈路資源,提尚網(wǎng)絡(luò)吞吐量。
[0090]其次參照附圖描述根據(jù)本發(fā)明實施例提出的基于包粒度的數(shù)據(jù)中心網(wǎng)絡(luò)源路由裝置。參照圖6所示,該裝置10包括:構(gòu)建模塊100、配置模塊200、獲取模塊300和轉(zhuǎn)發(fā)模塊 400。
[0091]其中,構(gòu)建模塊100用于根據(jù)Fat-Tree網(wǎng)絡(luò)構(gòu)建數(shù)據(jù)中心網(wǎng)絡(luò)拓撲,數(shù)據(jù)中心網(wǎng)絡(luò)拓撲包括多臺服務(wù)器、多臺邊緣層交換機、多臺聚集層交換機和多臺核心層交換機,其中,多臺邊緣層交換機、多臺聚集層交換機和多臺核心層交換機均采用同構(gòu)交換機,每臺服務(wù)器與多臺邊緣層交換機中一臺邊緣層交換機相連,并且多臺邊緣層交換機、多臺聚集層交換機和多臺核心層交換機的層次逐步提升。配置模塊200用于配置多臺服務(wù)器的操作系統(tǒng)中TCP的快速重傳門限值為10。獲取模塊300用于獲取流的發(fā)送端和接收端,發(fā)送端通過所有可用路徑向接收端發(fā)送數(shù)據(jù)。轉(zhuǎn)發(fā)模塊400用于通過Fat-Tree網(wǎng)絡(luò)內(nèi)交換機進行數(shù)據(jù)轉(zhuǎn)發(fā)。
[0092]在本發(fā)明的一個實施例中,多臺服務(wù)器、多臺邊緣層交換機和多臺聚集層交換機被劃分為K個集群,每個集群中服務(wù)器、邊緣層交換機和聚集層交換機的數(shù)量分別是K2/4、K/2和K/2,在每一個集群中,每一臺邊緣層交換機使用K/2個端口與K/2臺服務(wù)器相連,另K/2個端口與該集群中的K/2臺聚集層交換機相連;所有聚集層交換機剩下的K/2個端口與K2/4臺核心層交換機相連,以確保每臺核心層交換機與每個集群有且只有一個連接。
[0093]具體地,首先構(gòu)造一個基于Fat-Tree的數(shù)據(jù)中心網(wǎng)絡(luò)拓撲,包含:多臺服務(wù)器、多臺交換機,其中:
[0094]整個網(wǎng)絡(luò)采用同構(gòu)交換機,每個交換機的端口數(shù)量為K。整個網(wǎng)絡(luò)中包含5K2/4臺交換機。這些交換機分為三類,分別是邊緣層交換機、聚集層交換機和核心層交換機。邊緣層交換機和聚集層交換機的數(shù)量均為K2/2,核心層交換機的數(shù)量為K2/4。邊緣層交換機、聚集層交換機和核心層交換機的層次級別是逐步提升的;
[0095]整個網(wǎng)絡(luò)服務(wù)器的數(shù)量是K3/4 ;
[0096]服務(wù)器、邊緣層交換機和聚集層交換機被劃分為K個集群。每個集群中服務(wù)器、邊緣層交換機和聚集層交換機的數(shù)量分別是K2/4、K/2和K/2。在每一個集群中,每一臺邊緣層交換機使用K/2個端口與K/2臺服務(wù)器相連,另K/2個端口與該集群中的K/2臺聚集層交換機相連;
[0097]所有聚集層交換機剩下的K/2個端口與K2/4臺核心層交換機相連,確保每臺核心層交換機與每個集群有且只有一個連接。
[0098]其中,在本發(fā)明的一個實施例中,采用輪詢方式將報文依次分配給可用路徑,并通過源路由將路由信息寫入報文頭部。
[0099]在本發(fā)明的實施例中,每一條流的發(fā)送端借助源路由機制,將該條流所有的分組以輪詢的方式均勻地分配給所有的可選路徑,從而高效地利用網(wǎng)絡(luò)資源和提升網(wǎng)絡(luò)吞吐量的雙重優(yōu)點。
[0100]具體地,在本發(fā)明的一個實施例中,發(fā)送端用于:計算該條流可以使用的路徑集合(用數(shù)組Paths[]表示),并獲得可用路徑的數(shù)量PathNum = sizeof (Paths);初始化當前選擇路徑的索引i