本發(fā)明涉及數(shù)據(jù)網(wǎng)絡(luò),具體地,涉及一種數(shù)據(jù)流重路由方法和控制器。
背景技術(shù):
:在傳統(tǒng)的交換機或者路由器中,快速的數(shù)據(jù)包轉(zhuǎn)發(fā)(數(shù)據(jù)路徑)和高層的路由決策(控制路徑)是由同一個設(shè)備完成的。因為交換機或者路由器需要具備足夠的功能來獨立完成各項操作,因此網(wǎng)絡(luò)設(shè)備的實現(xiàn)非常復雜。另外,網(wǎng)絡(luò)廠商一般不會開放交換機或者路由器的源碼。當?shù)谌介_發(fā)或者增加新的功能時,系統(tǒng)的封閉性給創(chuàng)新性的想法和新技術(shù)的進入造成了很高的門檻。為了解決這個問題,提出了一種新的網(wǎng)絡(luò)架構(gòu)(稱為OpenFlow)。在OpenFlow網(wǎng)絡(luò)中,交換機的數(shù)據(jù)路徑和控制路徑分開。數(shù)據(jù)路徑部分仍然在交換機上,而高層次的路由決策則由一個單獨的控制器完成。OpenFlow交換機和控制器之間通過OpenFlow協(xié)議通信。OpenFlow為研究人員提供了一種通用的方式來運行實驗,驗證他們的新想法,而無需廠商公開網(wǎng)絡(luò)設(shè)備的內(nèi)部工作機制。OpenFlow網(wǎng)絡(luò)架構(gòu)包含OpenFlow交換機和控制器,兩者之間通過OpenFlow協(xié)議通信。OpenFlow交換機包含一個網(wǎng)絡(luò)數(shù)據(jù)流表(flowtable)和一個安全通道(securechannel)。OpenFlow交換機通過查找網(wǎng)絡(luò)數(shù)據(jù)流表中的內(nèi)容來進行數(shù)據(jù)包的轉(zhuǎn)發(fā)和處理,通過安全通道與控制器通信。流表包含了一系列的流表項(flowentry),流表項一般而言包括三部分內(nèi)容:1)數(shù)據(jù)包頭域,用于匹配數(shù)據(jù)包,包括入端口、源MAC地址、目的MAC地址、源IP地址、目的IP地址等項;2)計數(shù)器;以及3)操作項(action),用于指示數(shù)據(jù)包匹配上之后的操作。圖1示出了一個網(wǎng)絡(luò)拓撲100的示例,網(wǎng)絡(luò)拓撲100中包含交換機S1~S4和主機H1和H2,控制器120和交換機S1~S4通信。在此網(wǎng)絡(luò)拓撲中,主機H1和H2通信。圖2示出了在圖1所示的網(wǎng)絡(luò)拓撲100中主機H1和H2通信時的數(shù)據(jù)包轉(zhuǎn)發(fā)過程。系統(tǒng)啟動時,交換機S1~S4的流表都為空,交換機S1先收到主機H1發(fā)送來的數(shù)據(jù)包(步驟S201),查找自己的流表進行匹配,此時流表為空,沒有匹配上(步驟S202),交換機S1將此數(shù)據(jù)包發(fā)送給控制器120(步驟S203)。控制器120為此數(shù)據(jù)包計算路由,選擇了H1→S1→S2→S3→H2這條路徑(步驟S204),然后發(fā)送命令給交換機S1、S2和S3,讓它們更新流表(步驟S205)。收到指令后,交換機S1、S2和S3都相應(yīng)的添加流表項(步驟S206),新增加的流表項用于對主機H1和H2通信時的數(shù)據(jù)流進行處理。在步驟S207中,控制器120將此數(shù)據(jù)包返回給交換機S1,并且指示其從端口p1轉(zhuǎn)發(fā)。交換機S1依指示將此數(shù)據(jù)包發(fā)送給S2(步驟S208)。交換機S2收到數(shù)據(jù)包之后,查找自己的流表進行匹配,匹配上了新添加的流表項(步驟S209),將數(shù)據(jù)包轉(zhuǎn)發(fā)給交換機S3(步驟S210)。交換機S3查找自己的流表,也匹配上了新添加的流表項(步驟S211),將數(shù)據(jù)包轉(zhuǎn)發(fā)給主機H2(步驟S212)。這是第一個數(shù)據(jù)包的處理過程,對于此數(shù)據(jù)流后續(xù)的數(shù)據(jù)包,交換機S1、S2和S3都會匹配上相應(yīng)的流表項。網(wǎng)絡(luò)中數(shù)據(jù)流重路由是個很常見的需求。比如,在圖1所示的網(wǎng)絡(luò)拓撲示例100中,主機H1和H2通信,控制器120替它們選擇的通信路徑是H1→S1→S2→S3→H2。如果這條路徑上的某個鏈路發(fā)生故障,為了保證主機H1和H2的正常通信,就必須將它們之間的數(shù)據(jù)流重路由到一條新的可達的路徑上。圖3A和圖3B示出了數(shù)據(jù)流重路由的示例。例如,如圖3A所示,在圖1所示的網(wǎng)絡(luò)拓撲100中,主機H1和H2通信的現(xiàn)有路徑是H1→S1→S2→S3→H2(重路由前)。假如交換機S1與S2之間的鏈路出現(xiàn)故障,如圖3B所示,系統(tǒng)會將此流重路由到路徑H1→S1→S4→S3→H2上(重路由后),圖4示出了這一數(shù)據(jù)流重路由過程的時序圖。圖3A和圖3B中還示出了重路由前后,交換機S1~S4的流表中的內(nèi)容改變。參考圖4,控制器120通過周期性的拓撲發(fā)現(xiàn)操作,發(fā)現(xiàn)鏈路故障或交換機故障(步驟S401)。控制器120查找流信息表,找出受到該故障影響的所有流(步驟S402),之后,為受影響的每個流選擇新的路徑,更新流信息表,存儲新選擇的路徑(步驟S403)。針對每條重路由的流,控制器120對此流的現(xiàn)有路徑和新選擇的路徑上的所有交換機發(fā)送指令,指示更新流表(步驟S404)。收到來自控制器120的指令的所有交換機S1~S4根據(jù)該指令,向流表增加新的流表項,或者刪除已有的流表項(步驟S405)。此后,對于被重路由的流的后續(xù)數(shù)據(jù)包,交換機S1~S4根據(jù)新的流表項轉(zhuǎn)發(fā)數(shù)據(jù)包(步驟S406~S412)。在圖3A、圖3B和圖4所示的數(shù)據(jù)流重路由過程中,控制器120需要給路由路徑上的所有交換機S1~S4發(fā)送指令,指示其更新流表。在網(wǎng)絡(luò)規(guī)模和動態(tài)性都很大的情況下,這樣的重路由操作給控制器和網(wǎng)絡(luò)都會帶來很大的負擔。技術(shù)實現(xiàn)要素:本發(fā)明提出了一種數(shù)據(jù)流重路由方法。將本申請人在中國發(fā)明專利申請?zhí)朇N201110077135.4中提出的位置地址或者具有類似特點的其他編址機制用于網(wǎng)絡(luò)編址,位置地址代替MAC地址用于數(shù)據(jù)包在網(wǎng)絡(luò)中的轉(zhuǎn)發(fā),邊緣交換機負責MAC地址和主機位置地址的轉(zhuǎn)換。當系統(tǒng)需要對一個數(shù)據(jù)流進行重路由時,只需要修改邊緣交換機上的地址轉(zhuǎn)換規(guī)則。比如,邊緣交換機上舊的地址轉(zhuǎn)換規(guī)則是:“將目的MAC地址[destMAC]修改為主機H1的位置地址1[loc1(H1)]”,修改后新的轉(zhuǎn)換規(guī)則是:“將目的MAC地址[destMAC]修改為主機H1的位置地址2[loc2(H1)]”。因為作為數(shù)據(jù)包目的地的主機H1的不同位置地址loc1(H1)和loc2(H1)分別代表了不同的路由路徑,因此通過這種方式,就可以實現(xiàn)主機H1和H2之間的數(shù)據(jù)流重路由。根據(jù)本發(fā)明的第一方案,提出了一種數(shù)據(jù)流重路由方法,包括:根據(jù)在網(wǎng)絡(luò)中的位置,為交換機和主機分配位置地址,不同的位置地址代表不同的路由路徑;為每個數(shù)據(jù)流選擇一條路由路徑和相應(yīng)主機的位置地址,將所選擇的路由路徑和相應(yīng)主機的位置地址存儲在流信息表中,將主機的物理地址與主機的位置地址之間的地址轉(zhuǎn)換規(guī)則存儲在與主機相關(guān)的邊緣交換機的流表中;以及當網(wǎng)絡(luò)拓撲發(fā)生改變時,找出受到影響的所有數(shù)據(jù)流,為每個數(shù)據(jù)流選擇新的路由路徑和相應(yīng)主機的位置地址,更新流信息表中的路由路徑和相應(yīng)主機的位置地址,以及更新該數(shù)據(jù)流的邊緣交換機的流表中的地址轉(zhuǎn)換規(guī)則。優(yōu)選地,網(wǎng)絡(luò)拓撲發(fā)生改變包括通過拓撲發(fā)現(xiàn)來確定新增交換機,當新增交換機時,對新增交換機和與新增交換機相關(guān)的交換機和主機分配額外的位置地址,更新位置地址表;以及找出根據(jù)負載均衡的要求需要重路由的所有數(shù)據(jù)流,為每個數(shù)據(jù)流選擇新的路由路徑和相應(yīng)主機的位置地址。優(yōu)選地,至少一臺主機具有兩個位置地址。優(yōu)選地,所述數(shù)據(jù)流重路由方法,還包括:基于所分配的位置地址,為網(wǎng)絡(luò)中的所有交換機計算用于數(shù)據(jù)包轉(zhuǎn)發(fā)的流表,并將計算出的流表安裝到交換機中。優(yōu)選地,網(wǎng)絡(luò)拓撲發(fā)生改變包括通過拓撲發(fā)現(xiàn)來確定發(fā)生鏈路故障或交換機故障。根據(jù)本發(fā)明的第二方案,提出了一種控制器,包括:交換機管理單元,用于根據(jù)在網(wǎng)絡(luò)中的位置,為交換機和主機分配位置地址,產(chǎn)生位置地址表,不同的位置地址代表不同的路由路徑,所述交換機管理單元還用于為每個數(shù)據(jù)流選擇一條路由路徑和相應(yīng)主機的位置地址,將所選擇的路由路徑和相應(yīng)主機的位置地址存儲在流信息表中,并將主機的物理地址與主機的位置地址之間的地址轉(zhuǎn)換規(guī)則通知給與主機相關(guān)的邊緣交換機;拓撲發(fā)現(xiàn)單元,用于通過指示所有交換機發(fā)送鏈路層發(fā)現(xiàn)協(xié)議數(shù)據(jù)包來發(fā)現(xiàn)網(wǎng)絡(luò)拓撲,產(chǎn)生連接關(guān)系表;存儲器,用于存儲連接關(guān)系表、位置地址表和流信息表;以及重路由單元,用于通過檢查連接關(guān)系表發(fā)現(xiàn)網(wǎng)絡(luò)拓撲改變,找出受到影響的所有數(shù)據(jù)流,為每個數(shù)據(jù)流選擇新的路由路徑和相應(yīng)主機的位置地址,更新流信息表中的路由路徑和相應(yīng)主機的位置地址,并將對地址轉(zhuǎn)換規(guī)則的更新通知給該數(shù)據(jù)流的邊緣交換機。優(yōu)選地,所述交換機管理單元還用于在通過檢查連接關(guān)系表發(fā)現(xiàn)新增交換機時,對新增交換機和與新增交換機相關(guān)的交換機和主機分配額外的位置地址,更新位置地址表,以及所述重路由單元還用于在新增交換機時,找出根據(jù)負載均衡的要求需要重路由的所有數(shù)據(jù)流,為每個數(shù)據(jù)流選擇新的路由路徑和相應(yīng)主機的位置地址。優(yōu)選地,所述交換機管理單元為至少一臺主機編址兩個位置地址。優(yōu)選地,所述交換機管理單元還用于基于所分配的位置地址,為網(wǎng)絡(luò)中的所有交換機計算用于數(shù)據(jù)包轉(zhuǎn)發(fā)的流表,并將計算出的流表安裝到交換機中。優(yōu)選地,網(wǎng)絡(luò)拓撲改變包括通過檢查連接關(guān)系表來確定發(fā)生鏈路故障或交換機故障。在現(xiàn)有的數(shù)據(jù)流重路由方法中,控制器需要指示路由路徑上的所有交換機更新流表。而在本發(fā)明提出的新的數(shù)據(jù)流重路由方法中,只需要修改兩個邊緣交換機上的地址轉(zhuǎn)換規(guī)則,而不需要更新路由路徑上的其他交換機的流表。附圖說明通過下面結(jié)合附圖說明本發(fā)明的優(yōu)選實施例,將使本發(fā)明的上述及其它目的、特征和優(yōu)點更加清楚,其中:圖1示出了一個網(wǎng)絡(luò)拓撲100的示例。圖2示出了在圖1所示的網(wǎng)絡(luò)拓撲100中主機H1和H2通信時的數(shù)據(jù)包轉(zhuǎn)發(fā)過程。圖3A和圖3B示出了數(shù)據(jù)流重路由的示例,其中還示出了重路由前后,交換機S1~S4的流表中的內(nèi)容改變。圖4示出了數(shù)據(jù)流重路由過程的時序圖。圖5示出了位置地址的示例。圖6示出了根據(jù)本發(fā)明的交換機8100和控制器8200的示意結(jié)構(gòu)方框圖。圖7示出了交換機S2和S4上所建立的流表的例子。圖8A和圖8B示出了根據(jù)本發(fā)明的數(shù)據(jù)流重路由的示例,其中還示出了重路由前后,交換機S1~S4的流表中的內(nèi)容改變。圖9示出了根據(jù)本發(fā)明的數(shù)據(jù)流重路由過程的時序圖。圖10示出了根據(jù)本發(fā)明的交換機C100和控制器C200的示意結(jié)構(gòu)方框圖。圖11示出了由于網(wǎng)絡(luò)擴容而進行數(shù)據(jù)流重路由的方法流程圖。圖12~圖15示出了網(wǎng)絡(luò)擴容的實例。在本發(fā)明的所有附圖中,相同或相似的結(jié)構(gòu)和步驟均以相同或相似的附圖標記標識。具體實施方式下面參照附圖對本發(fā)明的優(yōu)選實施例進行詳細說明,在描述過程中省略了對于本發(fā)明來說是不必要的細節(jié)和功能,以防止對本發(fā)明的理解造成混淆。本申請人的另一中國發(fā)明專利申請(申請?zhí)朇N201110077135.4)提出了一種用于數(shù)據(jù)中心網(wǎng)絡(luò)的編址方法。網(wǎng)絡(luò)中的主機和交換機被分配一個或者多個位置地址(locator),位置地址是層次化的,編碼了主機和交換機在網(wǎng)絡(luò)拓撲中的位置。當網(wǎng)絡(luò)拓撲提供了冗余的路徑時,給主機和交換機分配多個位置地址。位置地址代替MAC地址存儲在交換機的流表里,用于數(shù)據(jù)包的轉(zhuǎn)發(fā)。多個位置地址描述了多條路徑,在多條路徑中選擇合適的路徑可實現(xiàn)負載均衡。圖5示出了位置地址的示例,網(wǎng)絡(luò)拓撲500與圖1所示的網(wǎng)絡(luò)拓撲100相同。主機H1和H2之間有兩條路徑,因此主機H1和H2也分別被分配了兩個位置地址。圖6示出了根據(jù)本發(fā)明的交換機6100和控制器6200的示意結(jié)構(gòu)方框圖。如圖6所示,交換機6100包括:本地管理單元6110、存儲器6120和數(shù)據(jù)包轉(zhuǎn)發(fā)單元6130。本地管理單元6110負責與控制器6200進行通信,并根據(jù)控制器6200發(fā)送來的指令更新存儲在存儲器6120中的流表612。在需要時(例如,系統(tǒng)啟動時,無匹配表項時,等等),本地管理單元6110可以將數(shù)據(jù)包發(fā)送給控制器6200。另外,根據(jù)控制器6200的指令,本地管理單元6110將數(shù)據(jù)包提供給數(shù)據(jù)包轉(zhuǎn)發(fā)單元6130。存儲器6120存儲流表612。根據(jù)本發(fā)明,非邊緣交換機的流表612僅包含流表項;而邊緣交換機的流表612不僅包含流表項,還包含地址轉(zhuǎn)換規(guī)則表項,根據(jù)地址轉(zhuǎn)換規(guī)則表項所載明的地址轉(zhuǎn)換規(guī)則,實現(xiàn)MAC地址與位置地址之間的轉(zhuǎn)換。數(shù)據(jù)包轉(zhuǎn)發(fā)單元6130根據(jù)流表612中的內(nèi)容或者根據(jù)本地管理單元6110的指令,將數(shù)據(jù)包發(fā)送至相應(yīng)的輸出端口。如圖6所示,控制器6200包括:交換機管理單元6210、拓撲發(fā)現(xiàn)單元6220、存儲器6230和重路由單元6240。交換機管理單元6210負責與交換機6100通信,并實現(xiàn)對交換機6100的管理。例如,對交換機6100的管理包括但不限于:根據(jù)網(wǎng)絡(luò)的拓撲結(jié)構(gòu),為網(wǎng)絡(luò)中的交換機6100和相關(guān)主機分配位置地址,并存儲這些位置地址;基于所分配的位置地址,為網(wǎng)絡(luò)中的所有交換機6100計算流表,并將計算出的流表安裝到交換機6100中;為每個數(shù)據(jù)流選擇一條路由路徑和相應(yīng)主機的位置地址,將所選擇的路由路徑和相應(yīng)主機的位置地址存儲在流信息表6236中;將主機的物理地址(例如MAC地址)與主機的位置地址之間的地址轉(zhuǎn)換規(guī)則通知給與主機相關(guān)的邊緣交換機。拓撲發(fā)現(xiàn)單元6220通過指示所有交換機6100發(fā)送鏈路層發(fā)現(xiàn)協(xié)議(LLDP)數(shù)據(jù)包來發(fā)現(xiàn)網(wǎng)絡(luò)拓撲。例如,當某一交換機6100加入到網(wǎng)絡(luò)中時,該交換機6100會主動跟控制器6200建立連接??刂破?200周期性指示所有交換機6100從它們的所有端口發(fā)出LLDP數(shù)據(jù)包。每個交換機6100接收到LLDP數(shù)據(jù)包之后,將此數(shù)據(jù)包發(fā)送給控制器6200??刂破?200由此得到整個網(wǎng)絡(luò)的拓撲,可以按照[(交換機1,交換機1的端口,交換機2,交換機2的端口),…]的形式將連接關(guān)系表存儲在存儲器6230中(網(wǎng)絡(luò)拓撲6232)。例如,在圖5所示的網(wǎng)絡(luò)拓撲示例中,得到的網(wǎng)絡(luò)拓撲6232(連接關(guān)系表)為:[(S1,p1,S2,p1),(S1,p2,S4,p2),(S2,p2,S3,p3),(S3,p2,S4,p1)]。存儲器6230存儲網(wǎng)絡(luò)拓撲6232(連接關(guān)系表)、位置地址表6234和流信息表6236。網(wǎng)絡(luò)拓撲6232存儲了網(wǎng)絡(luò)的拓撲信息,載明了所有交換機之間的連接關(guān)系。位置地址表6234存儲了網(wǎng)絡(luò)中交換機6100和主機的位置地址,位置地址編碼了網(wǎng)絡(luò)節(jié)點的位置信息,并且用于數(shù)據(jù)包在網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)。流信息表6236存儲網(wǎng)絡(luò)中存活的數(shù)據(jù)流的信息,包括為每條流選擇的路徑,并且包括為每條流選擇的位置地址。重路由單元6240針對網(wǎng)絡(luò)拓撲6232的變化,將數(shù)據(jù)流從原有的路徑重路由到新路徑。根據(jù)本發(fā)明,在重路由時,重路由單元6240僅需修改邊緣交換機上的地址轉(zhuǎn)換規(guī)則表項所載明的地址轉(zhuǎn)換規(guī)則。通過重路由,可以實現(xiàn)網(wǎng)絡(luò)容錯的目的。重路由單元6240通過檢查網(wǎng)絡(luò)拓撲6232(連接關(guān)系表)發(fā)現(xiàn)網(wǎng)絡(luò)拓撲改變,找出受到影響的所有數(shù)據(jù)流,為每個數(shù)據(jù)流選擇新的路由路徑和相應(yīng)主機的位置地址,更新流信息表6236中的路由路徑和相應(yīng)主機的位置地址,并將對地址轉(zhuǎn)換規(guī)則的更新通知給該數(shù)據(jù)流的邊緣交換機。在主機之間的實際通信開始之前,系統(tǒng)需要一個初始化過程。首先,控制器6200中的拓撲發(fā)現(xiàn)單元6220對網(wǎng)絡(luò)進行拓撲發(fā)現(xiàn),得到整個網(wǎng)絡(luò)的拓撲。接著,控制器6200中的交換機管理單元6210根據(jù)網(wǎng)絡(luò)的拓撲結(jié)構(gòu),為網(wǎng)絡(luò)中的交換機6100和主機分配位置地址,并將位置地址存儲到位置地址表6234中。然后,控制器6200中的交換機管理單元6210為網(wǎng)絡(luò)中的所有交換機6100計算流表,這些流表是基于位置地址的,格式為:目的位置地址→輸出端口。例如,圖7示出了交換機S2和S4上所建立的流表的例子??刂破?200中的交換機管理單元6210將計算好的流表安裝到交換機6100的流表中,完成初始化過程。后續(xù)的數(shù)據(jù)包是基于位置地址在網(wǎng)絡(luò)中轉(zhuǎn)發(fā),而不是傳統(tǒng)的MAC地址,邊緣交換機上存儲的地址轉(zhuǎn)換規(guī)則可以實現(xiàn)MAC地址和位置地址之間的轉(zhuǎn)換。控制器6200中的交換機管理單元6210還負責為每個數(shù)據(jù)流選擇一條路由路徑和相應(yīng)主機的位置地址,將所選擇的路由路徑和相應(yīng)主機的位置地址存儲在流信息表6236中。圖8A和圖8B示出了根據(jù)本發(fā)明的數(shù)據(jù)流重路由的示例。例如,如圖8A所示,在圖5所示的網(wǎng)絡(luò)拓撲500中,主機H1和H2通信的現(xiàn)有路徑是H1→S1→S2→S3→H2(重路由前)。假如交換機S1與S2之間的鏈路出現(xiàn)故障,系統(tǒng)會將此流重路由到路徑H1→S1→S4→S3→H2上(重路由后),圖9示出了這一數(shù)據(jù)流重路由過程的時序圖。圖8A和圖8B中還示出了重路由前后,交換機S1~S4的流表中的內(nèi)容改變。參考圖9,拓撲發(fā)現(xiàn)單元6220通過周期性的拓撲發(fā)現(xiàn)操作,更新網(wǎng)絡(luò)拓撲6232。重路由單元6240通過檢查網(wǎng)絡(luò)拓撲6232,發(fā)現(xiàn)鏈路故障或交換機故障(步驟S901)。重路由單元6240查找流信息表6236,找出受到該故障影響的所有流(步驟S902),之后,重路由單元6240為受影響的每個流,選擇新的路由路徑和相應(yīng)主機的新的位置地址,更新流信息表6236,存儲新選擇的路徑和新的位置地址(步驟S903)。針對每條重路由的流,交換機管理單元6210僅需對此流的邊緣交換機S1和S3(入口交換機和出口交換機)發(fā)送指令,指示邊緣交換機S1和S3更新流表612(步驟S904)。收到來自控制器6200的指令的邊緣交換機S1和S3根據(jù)該指令,修改流表中的地址轉(zhuǎn)換規(guī)則表項(步驟S905)。此后,對于被重路由的流的后續(xù)數(shù)據(jù)包,邊緣交換機S1和S3根據(jù)新的地址轉(zhuǎn)換規(guī)則,實現(xiàn)源MAC地址和修改后的源位置地址之間的轉(zhuǎn)換,以及實現(xiàn)目的MAC地址和修改后的目的位置地址之間的轉(zhuǎn)換,并按照新的位置地址查找流表項,轉(zhuǎn)發(fā)數(shù)據(jù)包(步驟S906~S908和S911~S912)。非邊緣交換機S2和S4根據(jù)新位置地址查找流表項,轉(zhuǎn)發(fā)數(shù)據(jù)包(步驟S909~S910)。將圖8B與圖3B所示的情況相比,只有兩個邊緣交換機S1和S3中的地址轉(zhuǎn)換規(guī)則表項發(fā)生了變化。本發(fā)明提出的數(shù)據(jù)流重路由方法還可用于網(wǎng)絡(luò)架構(gòu)的在線擴容,系統(tǒng)自適應(yīng)于新的網(wǎng)絡(luò)拓撲,自動進行數(shù)據(jù)流的負載均衡,而不會造成上層服務(wù)的中斷。圖10示出了根據(jù)本發(fā)明的交換機A100和控制器A200的示意結(jié)構(gòu)方框圖,用于實現(xiàn)網(wǎng)絡(luò)架構(gòu)的在線擴容。在圖10中,出于簡明的目的,與圖6所示相同的單元用相同的附圖標記表示,并省略了對這些單元的詳細描述。如圖10所示,交換機A100包括:本地管理單元6110、存儲器6120、數(shù)據(jù)包轉(zhuǎn)發(fā)單元6130和鏈路信息收集單元A140。鏈路信息收集單元A140收集本交換機A100的所有鏈路的鏈路狀態(tài)信息,包括每條鏈路的流量信息,然后通過本地管理單元6110匯報給控制器A200,鏈路信息收集和匯報可以采用OpenFlow規(guī)范中所定義的標準功能和協(xié)議來實現(xiàn)。如圖10所示,控制器A200包括:交換機管理單元A210、拓撲發(fā)現(xiàn)單元6220、存儲器A230和重路由單元A240。交換機管理單元A210除了具有交換機管理單元6210的功能外,還具有為新的交換機和與新增交換機相關(guān)的交換機和主機分配額外的位置地址的功能,這些位置地址是對現(xiàn)有的網(wǎng)絡(luò)結(jié)點的位置地址的增量編址,增量編址是指不影響現(xiàn)有網(wǎng)絡(luò)節(jié)點的位置地址及流表,僅需要添加新的位置地址和流表項,而不需要修改或者刪除現(xiàn)有的位置地址和流表項。存儲器A230存儲網(wǎng)絡(luò)拓撲6232(連接關(guān)系表)、位置地址表6234、流信息表6236和鏈路信息表A236。鏈路信息表A236存儲了網(wǎng)絡(luò)中每條鏈路的流量信息。重路由單元A240除了具有重路由單元6240的功能外,還能夠在進行網(wǎng)絡(luò)擴容時,基于鏈路信息表A236中所存儲的鏈路信息,將一些數(shù)據(jù)流從負載重的路徑重路由到負載輕的路徑上。圖11示出了由于網(wǎng)絡(luò)擴容而進行數(shù)據(jù)流重路由的方法流程圖。當由于網(wǎng)絡(luò)的一些局部出現(xiàn)擁塞,而在擁塞的地方增加交換機時,拓撲發(fā)現(xiàn)單元6220通過周期性的拓撲發(fā)現(xiàn)操作,更新網(wǎng)絡(luò)拓撲6232。重路由單元A240通過檢查網(wǎng)絡(luò)拓撲6232,發(fā)現(xiàn)新增加的交換機(步驟S1101)。交換機管理單元A210給新的交換機和與新增交換機相關(guān)的交換機和主機分配額外的位置地址,這些位置地址是對現(xiàn)有的網(wǎng)絡(luò)節(jié)點的位置地址的增量編址,更新位置地址表6234(步驟S1102)。然后,交換機管理單元6210計算出新加交換機的流表,以及相關(guān)交換機需要新增加的流表項,并且將這些新的流表項通知給相應(yīng)的交換機(步驟S1103)。重路由單元A240根據(jù)流信息表6236和鏈路信息表A236中的信息,找出根據(jù)負載均衡的要求需要重路由的所有數(shù)據(jù)流(步驟S1104)。重路由單元A240為每條需要重路由的流,選擇新的路由路徑和相應(yīng)主機的新的位置地址,更新流信息表6236,存儲新選擇的路徑和新的位置地址(步驟S1105)。針對每條重路由的流,交換機管理單元6210僅需對此流的邊緣交換機(入口交換機和出口交換機)發(fā)送指令,指示邊緣交換機更新流表612(步驟S1106)。收到來自控制器6200的新增表項指令的交換機根據(jù)該新增表項指令,向流表612中增加新的流表項(步驟S1107)。收到來自控制器6200的修改指令的邊緣交換機根據(jù)該修改指令,修改流表中的地址轉(zhuǎn)換規(guī)則表項(步驟S1108)。此后,對于被重路由的流的后續(xù)數(shù)據(jù)包,邊緣交換機根據(jù)新的地址轉(zhuǎn)換規(guī)則,實現(xiàn)源MAC地址和修改后的源位置地址之間的轉(zhuǎn)換,以及實現(xiàn)目的MAC地址和修改后的目的位置地址之間的轉(zhuǎn)換,并按照新的位置地址查找流表項,轉(zhuǎn)發(fā)數(shù)據(jù)包;非邊緣交換機根據(jù)新位置地址查找流表項,轉(zhuǎn)發(fā)數(shù)據(jù)包(步驟S1109)。圖12示出了網(wǎng)絡(luò)擴容的實例。在原有網(wǎng)絡(luò)拓撲結(jié)構(gòu)中,1臺核心交換機連接了3臺邊緣交換機,進而連接了6臺主機H1~H6。如圖12所示,4條數(shù)據(jù)流F1~F4經(jīng)過同一條鏈路,造成擁塞(橢圓虛線框)??梢孕略鲆慌_核心交換機,對數(shù)據(jù)流F2和F4進行重路由,緩解擁塞。進一步地,可以再新增一臺邊緣交換機,對數(shù)據(jù)流F3進行重路由,進一步緩解擁塞。圖13、圖14、圖15分別給出了這三個階段(原有網(wǎng)絡(luò)拓撲結(jié)構(gòu)、新增一臺核心交換機、再新增一臺邊緣交換機),網(wǎng)絡(luò)節(jié)點的位置地址、交換機流表中的流表項、以及邊緣交換機上的地址轉(zhuǎn)換規(guī)則表項的內(nèi)容改變。以邊緣交換機S3的流表為例,考慮從源主機H4到目的主機H1的數(shù)據(jù)流(S3的流表中的第三行)。在原有網(wǎng)絡(luò)拓撲結(jié)構(gòu)(圖13)中,將源主機H4的MAC地址(源MAC)修改為源主機H4的位置地址1(loc1(H4)),將目的主機H1的MAC地址(目的MAC)修改為目的主機H1的位置地址1(loc1(H1)),之后,從端口p3輸出。在新增一臺核心交換機S5(圖14)后,源主機H4和目的主機H1均被分配了額外的位置地址,即位置地址2。此時,將源主機H4的MAC地址(源MAC)修改為源主機H4的位置地址2(loc2(H4)),將目的主機H1的MAC地址(目的MAC)修改為目的主機H1的位置地址2(loc2(H1)),之后,從端口p4輸出。由此,將該數(shù)據(jù)流路由到新增的核心交換機S5。在進一步增加一臺邊緣交換機S6(圖15)后,源主機H4仍然只具有兩個位置地址(與圖14相同),但目的主機H1被再次分配了兩個額外的位置地址,即位置地址3和位置地址4。此時,將源主機H4的MAC地址(源MAC)修改為源主機H4的位置地址2(loc2(H4)),將目的主機H1的MAC地址(目的MAC)修改為目的主機H1的位置地址4(loc4(H1)),之后,從端口p4輸出。由此,將該數(shù)據(jù)流路由到新增的核心交換機S5,并進而路由到新增的邊緣交換機S6。對于其他交換機的流表,可以得到類似的描述,為了簡明起見,在此不再贅述。這里所公開的本發(fā)明實施例的其他設(shè)置包括執(zhí)行在先概述并隨后詳述的方法實施例的步驟和操作的軟件程序。更具體地,計算機程序產(chǎn)品是如下的一種實施例:具有計算機可讀介質(zhì),計算機可讀介質(zhì)上編碼有計算機程序邏輯,當在計算設(shè)備上執(zhí)行時,計算機程序邏輯提供相關(guān)的操作,從而提供上述數(shù)據(jù)流重路由方案。當在計算系統(tǒng)的至少一個處理器上執(zhí)行時,計算機程序邏輯使得處理器執(zhí)行本發(fā)明實施例所述的操作(方法)。本發(fā)明的這種設(shè)置典型地提供為設(shè)置或編碼在例如光介質(zhì)(例如CD-ROM)、軟盤或硬盤等的計算機可讀介質(zhì)上的軟件、代碼和/或其他數(shù)據(jù)結(jié)構(gòu)、或者諸如一個或多個ROM或RAM或PROM芯片上的固件或微代碼的其他介質(zhì)、或?qū)S眉呻娐?ASIC)、或一個或多個模塊中的可下載的軟件圖像、共享數(shù)據(jù)庫等。軟件或固件或這種配置可安裝在計算設(shè)備上,以使得計算設(shè)備中的一個或多個處理器執(zhí)行本發(fā)明實施例所述的技術(shù)。結(jié)合諸如一組數(shù)據(jù)通信設(shè)備或其他實體中的計算設(shè)備進行操作的軟件過程也可以提供根據(jù)本發(fā)明的節(jié)點和主機。根據(jù)本發(fā)明的節(jié)點和主機也可以分布在多個數(shù)據(jù)通信設(shè)備上的多個軟件過程、或者在一組小型專用計算機上運行的所有軟件過程、或者單個計算機上運行的所有軟件過程之間。應(yīng)該理解,嚴格地講,本發(fā)明的實施例可以實現(xiàn)為數(shù)據(jù)處理設(shè)備上的軟件程序、軟件和硬件、或者單獨的軟件和/或單獨的電路。至此已經(jīng)結(jié)合優(yōu)選實施例對本發(fā)明進行了描述。應(yīng)該理解,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍的情況下,可以進行各種其它的改變、替換和添加。因此,本發(fā)明的范圍不局限于上述特定實施例,而應(yīng)由所附權(quán)利要求所限定。當前第1頁1 2 3