一種網(wǎng)絡(luò)故障處理方法和處理系統(tǒng)的制作方法【專利摘要】一種網(wǎng)絡(luò)故障處理方法和處理系統(tǒng),所述方法包括以下步驟:A、根據(jù)網(wǎng)絡(luò)拓撲和策略需求構(gòu)建備份路徑;B、根據(jù)網(wǎng)絡(luò)中交換機的可用資源(TCAM)情況合理分配備份流表,使得每個流的故障需求都能夠得到滿足。所述處理系統(tǒng)包括交換機和控制器,控制器包括網(wǎng)絡(luò)狀態(tài)獲取模塊、備份路徑生成模塊、備份流表分配模塊、備份流表下發(fā)模塊、故障響應(yīng)模塊和備份路徑更新模塊。本發(fā)明的網(wǎng)絡(luò)故障處理方法和處理系統(tǒng)將故障保護和故障恢復(fù)結(jié)合起來,能夠進行細粒度的網(wǎng)絡(luò)資源分配,從流的級別保證服務(wù)質(zhì)量,在處理故障的同時保證網(wǎng)絡(luò)策略的正確執(zhí)行?!緦@f明】-種網(wǎng)絡(luò)故障處理方法和處理系統(tǒng)
技術(shù)領(lǐng)域:
[0001]本發(fā)明設(shè)及計算機網(wǎng)絡(luò)領(lǐng)域,特別是設(shè)及一種網(wǎng)絡(luò)故障處理方法和處理系統(tǒng)?!?br>背景技術(shù):
】[0002]自20世紀70年代誕生W來,計算機網(wǎng)絡(luò)經(jīng)歷了飛速的發(fā)展。Internet的成功普及使得網(wǎng)絡(luò)的應(yīng)用范圍從傳統(tǒng)的軍事、科研等領(lǐng)域走向生活的方方面面。隨著信息時代的到來,網(wǎng)絡(luò)的作用逐漸突起,網(wǎng)絡(luò)的可靠性與穩(wěn)定變得尤為重要。調(diào)查發(fā)現(xiàn),可達性、吞吐量及延遲是目前網(wǎng)絡(luò)的主要癥結(jié)。而造成運些癥結(jié)的主要原因就是鏈路故障。另外,不同應(yīng)用化mai1,Video等)對網(wǎng)絡(luò)的需求并不相同,所W提出一種有效應(yīng)對鏈路故障的解決方案變得十分緊迫。[0003]當前網(wǎng)絡(luò)正在進行著與個人PC(PersonalComputer)相同的演變:從軟硬件一體化逐漸發(fā)展到軟件與硬件相互分離。事實證明,早期的軟硬件一體化有利于網(wǎng)絡(luò)的快速構(gòu)建與大規(guī)模應(yīng)用,但是隨著網(wǎng)絡(luò)的規(guī)模的逐漸擴大,運種一體化模式限制了網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)管理的靈活性變得越來越重要。SDN(SoftwareDefinedNetworking)應(yīng)運而生,它通過將控制平面(ControlPlane)和轉(zhuǎn)發(fā)平面(ForwardingPlane)分離和對轉(zhuǎn)發(fā)平面的集中控制來簡化網(wǎng)絡(luò)管理,使得網(wǎng)絡(luò)管理的靈活性大大增強。[0004]相對于傳統(tǒng)網(wǎng)絡(luò),SDN網(wǎng)絡(luò)的特點如下:[0005]1)SDN是一種新的網(wǎng)絡(luò)管理范式,它將控制平面從傳統(tǒng)的路由器中抽離,使得復(fù)雜的"路由器"變成了簡單的"交換機"。即,它通過將數(shù)據(jù)面板和控制面板解禪來降低交換機的復(fù)雜度,使得在實時網(wǎng)絡(luò)中測試新開發(fā)的協(xié)議成為可能。[0006]2)在SDN網(wǎng)絡(luò)中,主要的"智能部件"都集中在控制器中,底層的交換機變得十分簡單??刂破髫撠煂崿F(xiàn)傳統(tǒng)網(wǎng)絡(luò)的各種協(xié)議功能(OSPF,BGP,化DP,VLAN等),通過南向標準協(xié)議(如化enFlow)與底層的交換機通訊,將生成的流表下發(fā)到交換機之中;底層的交換機負責執(zhí)行轉(zhuǎn)發(fā)功能,當它收到數(shù)據(jù)包之后,它將查詢流表,匹配數(shù)據(jù)包的頭部,根據(jù)匹配的結(jié)果執(zhí)行相應(yīng)的轉(zhuǎn)發(fā)操作;如果沒有相應(yīng)的匹配項,那么它就將運個數(shù)據(jù)包傳遞給控制器進行處理。[0007]3)SD閑是供了更豐富的匹配字段,包括入端口號,TCP源/目的端口號,ARP操作碼等41個字段,而不局限于傳統(tǒng)的MAC地址和IP地址等少量二層/=層字段,從而能夠?qū)崿F(xiàn)更細粒度的網(wǎng)絡(luò)流量管理與控制。[000引4)在SDN環(huán)境下,網(wǎng)絡(luò)管理員(NetworkOperator)能夠有一個全局的網(wǎng)絡(luò)管理視圖,從而便于資源的統(tǒng)一管理與調(diào)度。在傳統(tǒng)網(wǎng)絡(luò)中,復(fù)雜分布式算法的交互與通訊使得資源的全局調(diào)度與分配變得十分困難。[0009]5)化enFlow的目標是提供一個管理轉(zhuǎn)發(fā)硬件的開放的標準接口,運個轉(zhuǎn)發(fā)硬件可W是一個路由器或者交換機。運種想法的基礎(chǔ)是現(xiàn)代的路由器(或者交換機)都有FIB(forwardinginformationtable),FIB一般使用TCAM(TernaryContentAddressableMemory)構(gòu)成的。OpenFlow提供一個協(xié)議,通過添加、修改、刪除Flowrtable的表項來對FIB編程。OpenFlow中的Flow化ble是對路由器中FIB的一個抽象。在化enFloW網(wǎng)絡(luò)中,所有的邏輯都是在叫做化enFlow控制器的中屯、系統(tǒng)中執(zhí)行的,化enFlow控制器使用化enFlow協(xié)議來管理OpenFlow交換機。[0010]但是在SDN大規(guī)模部署過程中,尤其是在向運營商級別網(wǎng)絡(luò)部署的時候,SDN網(wǎng)絡(luò)的可靠性受到嚴峻考驗,目前還沒有高效的機制能夠使其達到運營商級別網(wǎng)絡(luò)的50ms恢復(fù)時間的QoS要求。[0011]網(wǎng)絡(luò)的性能主要通過丟包率、延遲、吞吐量和可用性來度量。在發(fā)生故障(光纖被挖斷、路由器崩潰等)的情況下,網(wǎng)絡(luò)的性能將會大大降低。根據(jù)GianlucaIannaccone等人收集的數(shù)據(jù),鏈路(接口)故障經(jīng)常發(fā)生,它們會遍布在幾天內(nèi),甚至一整天內(nèi)。據(jù)推斷,10%的故障可能由于光纖被挖斷而造成;50%的故障可能由于鏈路不明原因的短暫故障而造成。另外,鏈路故障發(fā)生頻繁,幾乎所有鏈路故障的時間間隔都在100分鐘W內(nèi),運將嚴重影響網(wǎng)絡(luò)的服務(wù)質(zhì)量。由此可見,即使在現(xiàn)代網(wǎng)絡(luò)中,網(wǎng)絡(luò)故障還是頻繁發(fā)生,成為導致網(wǎng)絡(luò)性能降級的主要因素。[0012]-般來講,運營商網(wǎng)絡(luò)嚴格限制故障恢復(fù)的時間延遲不能超過50ms。但是,不同的應(yīng)用程序有不同的故障恢復(fù)需求。例如:一些多媒體應(yīng)用程序(如網(wǎng)絡(luò)電話、視頻會議和在線游戲等)和一些新興服務(wù)(如數(shù)據(jù)中屯、中的高性能計算,光纖網(wǎng)絡(luò)的存儲服務(wù)和交易算法等)都是延遲敏感的,一點點的端到端延遲將會導致用戶體驗的極度下降,巨大的經(jīng)濟損失,甚至不可挽回的災(zāi)難;但是也有一些服務(wù)不是延遲敏感的(如Email等),適度的延遲對它們來說是可W容忍的。另外,即使網(wǎng)絡(luò)發(fā)生了故障,網(wǎng)絡(luò)的一些策略(Policy)(如防火墻策略、訪問控制等)也必須執(zhí)行。例如,無論何時,http流量都必須經(jīng)過一個防火墻(Firewalls);所有的流都必須避免一些可疑的攻擊者,即黑名單機制。[0013]整體上,目前應(yīng)對網(wǎng)絡(luò)故障的方案分為故障保護和故障恢復(fù)兩種。[0014]1)故障保護。故障保護依賴于提前計算的備份路徑和預(yù)分配的資源來對故障部件進行繞行。在故障保護中,備份路徑時提前計算好的,相應(yīng)的備份流表項也會提前在交換機上面分配好。在正常情況下,數(shù)據(jù)包沿著正常鏈路進行轉(zhuǎn)發(fā);當故障發(fā)生時,檢測到故障的交換機迅速將數(shù)據(jù)包切換到備份鏈路進行轉(zhuǎn)發(fā),運種切換進行的十分迅速,從而保證的極短的故障恢復(fù)時間。[0015]2)故障恢復(fù)。故障恢復(fù)依賴動態(tài)重路由來規(guī)避故障部件。在故障恢復(fù)中,備份路徑可能是提前計算好的,也可能是當網(wǎng)絡(luò)發(fā)生故障時動態(tài)計算的,但是相應(yīng)的備份流表項一定是在發(fā)生故障之后才進行分配的。當交換機檢測到故障之后,它會向控制器報告相應(yīng)的故障,根據(jù)控制器的響應(yīng)建立備份路徑,實現(xiàn)故障保護。相比于故障保護,故障恢復(fù)最大的特點在于動態(tài)性,運種動態(tài)性賦予了故障恢復(fù)更強的靈活性,同時也使得它的恢復(fù)延遲較大,較難滿足一些程序的故障恢復(fù)延遲需求。[0016]由此可見,故障保護是服務(wù)優(yōu)先型,通過占有大量的資源來保證對網(wǎng)絡(luò)故障的快速應(yīng)對;故障恢復(fù)方案是資源優(yōu)先型,它W犧牲故障恢復(fù)的時間來換取更少的資源需求。然而,它們都沒有考慮到不同應(yīng)用的故障恢復(fù)需求,沒有提供區(qū)分服務(wù),從而導致網(wǎng)絡(luò)資源的低效利用?!?br/>發(fā)明內(nèi)容】[0017]本發(fā)明的主要目的在于克服現(xiàn)有技術(shù)的不足,提供一種網(wǎng)絡(luò)故障處理方法和處理系統(tǒng),將故障保護和故障恢復(fù)結(jié)合起來,能夠進行細粒度的網(wǎng)絡(luò)資源分配,從流的級別保證服務(wù)質(zhì)量,在處理故障的同時保證網(wǎng)絡(luò)策略的正確執(zhí)行。[0018]為實現(xiàn)上述目的,本發(fā)明采用W下技術(shù)方案:[0019]-種網(wǎng)絡(luò)故障處理方法,所述網(wǎng)絡(luò)包括交換機和控制器,交換機和控制器之間通過化enFlow協(xié)議標準進行交互,控制器能夠獲取網(wǎng)絡(luò)的全局拓撲,采用帶外控制方式和交換機進行通訊,交換機負責正常數(shù)據(jù)包的轉(zhuǎn)發(fā)和故障檢測,控制器負責備份路徑的構(gòu)建、備份流表項的分配和流表的下發(fā);[0020]所述方法包括W下步驟:[0021]A、根據(jù)網(wǎng)絡(luò)拓撲和策略需求構(gòu)建備份路徑;[0022]其中對于每條流,針對正常轉(zhuǎn)發(fā)路徑上面的每條鏈路,備份路徑由對應(yīng)的安全點唯一確定,所述安全點是滿足W下條件的點:[0023]a.從故障上游節(jié)點到安全點之間的路徑不經(jīng)過故障鏈路;[0024]b.從安全點到目的地的正常轉(zhuǎn)發(fā)路徑不經(jīng)過故障鏈路;[0025]C.連接上面的兩段鏈路形成的備份路徑滿足流的服務(wù)鏈需求;[0026]B、根據(jù)網(wǎng)絡(luò)中交換機的可用資源(TCAM)情況合理分配備份流表,使得每個流的故障需求都能夠得到滿足。[0027]進一步地:[0028]所述備份路徑包括W下=部分:(1)從流的起點到故障點之間的路徑,運部分路徑和流的正常轉(zhuǎn)發(fā)路徑相重疊;(2)從故障點到安全點之間的路徑,運部分路徑根據(jù)遍歷算法得到,需要額外的備份流表;(3)從安全點到流終點的路徑,運部分路徑和正常轉(zhuǎn)發(fā)路徑重疊;[0029]對于網(wǎng)絡(luò)中的流,其針對某條鏈路的備份路徑滿足W下條件:[0030]a.備份路徑不經(jīng)過特定的故障鏈路;[0031]b.備份路徑上面的服務(wù)鏈和原始服務(wù)鏈相互兼容。[0032]備份路徑滿足W下條件:對于任意給定的網(wǎng)絡(luò)流:f^,對于其正常轉(zhuǎn)發(fā)路徑if上面的每一條鏈路ei,為其構(gòu)造一條相應(yīng)的備份路徑,使得運條備份路徑不經(jīng)過鏈路ei,并且路徑上面的middlebox所構(gòu)成的服務(wù)鏈滿足原始流的服務(wù)鏈需求。[0033]步驟A中,構(gòu)建備份路徑的算法包括:W廣度優(yōu)先捜索的方式遍歷網(wǎng)絡(luò)拓撲來尋找安全點,從上游檢測到故障的節(jié)點開始,依次遍歷網(wǎng)絡(luò)中每一個節(jié)點并假設(shè)該節(jié)點為安全點,用該安全點來構(gòu)建備份路徑;然后,用流的故障需求和服務(wù)鏈需求來驗證運條備份路徑是否合法:如果運條備份路徑是合法的,則判斷當前的節(jié)點就是要找的安全點,保存相應(yīng)的備份路徑;如果運條路徑不滿足需求,則就退出當前驗證過程,遍歷下一個節(jié)點;[0034]優(yōu)選地,在有多個合法的安全點存在的情況下,選擇第一個合法的安全點。[0035]步驟B中,所述合理分配備份流表滿足W下條件:對于給定的交換機可利用資源Ov,網(wǎng)絡(luò)流的延遲需求,備分流表的分配方案使得分配給每個交換機的備份流表項數(shù)目不超過交換機的可用資源數(shù)目,并且保證每個流的延遲需求能夠得到滿足。[0036]按照W下規(guī)則分配備份流表=(I)TCAM容量越大的交換機放置越多的備份流表項;(2)延遲需求越高的流的備份流表項越被優(yōu)先放置到相應(yīng)的交換機中;(3)遍歷路徑越短的流的備份流表項越被優(yōu)先放置到相應(yīng)的交換機中。[0037]步驟B中,分配備份流表的算法包括:依次將最應(yīng)該放到交換機中的備份流表放到交換機中,直到所有網(wǎng)絡(luò)流都滿足它們的故障需求為止;其中對于每一個備份流表,都有把它放置在控制器上面和分配給相應(yīng)的交換機兩種可能,所有運些可能構(gòu)成了一個樹形解空間,按照廣度優(yōu)先的策略來遍歷運個解空間,通過減枝,直到找到近似最優(yōu)解;[0038]優(yōu)選地:采用廣度優(yōu)先捜索遍歷可行域;當找到一個可行解之后,不再捜索層次更深的可行域。[0039]步驟B中,分配備份流表的算法包括:[0040]將所有的備份流表項分配給相應(yīng)的交換機;[0041]對于每一個過載的交換機,將一部分備份流表轉(zhuǎn)移到控制器,直到交換機不再過載為止;[0042]遍歷所有的交換機,將更多的備份流表搬到控制器上面。[0043]一種用于實施所述的網(wǎng)絡(luò)故障處理方法的網(wǎng)絡(luò)故障處理系統(tǒng),包括交換機和控制器,交換機和控制器之間通過化enFlow協(xié)議標準進行交互,控制器能夠獲取網(wǎng)絡(luò)的全局拓撲,采用帶外控制方式和交換機進行通訊,交換機負責正常數(shù)據(jù)包的轉(zhuǎn)發(fā)和故障檢測,控制器負責備份路徑的構(gòu)建、備份流表項的分配和流表的下發(fā),所述控制器包括:[0044]網(wǎng)絡(luò)狀態(tài)獲取模塊,用于獲取W下=種網(wǎng)絡(luò)狀態(tài):(a)網(wǎng)絡(luò)拓撲;(b)網(wǎng)絡(luò)端口狀態(tài);(C)數(shù)據(jù)包的I'able-miss;[0045]備份路徑生成模塊,用于從網(wǎng)絡(luò)狀態(tài)獲取模塊獲取網(wǎng)絡(luò)的拓撲信息和端口狀態(tài),并W流的故障需求和網(wǎng)絡(luò)的服務(wù)鏈需求作為輸入,運行備份路徑構(gòu)建算法,構(gòu)建出所有的備份路徑,構(gòu)建完成之后,將運些生成的備份路徑交由備份流表分配模塊進行處理;[0046]備份流表分配模塊,用于從備份路徑生成模塊獲取網(wǎng)絡(luò)中所有的備份路徑,W流的時間延遲需求為輸入,運行算法進行備份流表的分配,分配算法運行結(jié)束后,將分配結(jié)果提交給備份流表下發(fā)模塊進行處理。[0047]備份流表下發(fā)模塊,用于從備份流表分配模塊獲取備份流表的分配結(jié)果,對于分配給下層交換機的備份流表,即故障保護部分,備份流表下發(fā)模塊立刻生成相應(yīng)的〇FP_TABLE_M0D流表修改消息,將它們插入到相應(yīng)的交換機中;對于放置在控制器上面的備份流表,即故障恢復(fù)部分,備份流表下發(fā)模塊更新本地數(shù)據(jù)庫,將它們存儲在本地;[0048]故障響應(yīng)模塊,用于負責協(xié)調(diào)全局的其他模塊,故障響應(yīng)模塊從網(wǎng)絡(luò)管理員獲取網(wǎng)絡(luò)已知的狀態(tài)信息和流的需求輸入,從網(wǎng)絡(luò)狀態(tài)獲取模塊處獲取網(wǎng)絡(luò)的拓撲等信息,調(diào)用備份路徑生成模塊生成備份路徑,調(diào)用備份流表分配模塊計算分配結(jié)果,調(diào)用備份流表下發(fā)模塊將相應(yīng)的備份流表下發(fā)給相應(yīng)的交換機,根據(jù)備份路徑更新模塊的請求定期更新;[0049]備份路徑更新模塊,用于更新備份路徑,當備份路徑更新模塊認定當前網(wǎng)絡(luò)的狀態(tài)已經(jīng)較上一個狀態(tài)發(fā)生質(zhì)的變化的時候,它將通知備份路徑生成模塊重新獲取網(wǎng)絡(luò)狀態(tài)和輸入需求,并重新構(gòu)建備份路徑。[0050]進一步地,當網(wǎng)絡(luò)新增加一個邊或者節(jié)點時,備份路徑更新模塊并不進行實時更新,僅記錄下相應(yīng)的狀態(tài)變化,在全局定期更新時,運些累積的狀態(tài)變化被考慮;當網(wǎng)絡(luò)刪除一個邊或者節(jié)點時,備份路徑更新模塊立刻將用到運個組件的備份路徑標記為不可用,并重新計算相應(yīng)的備份路徑。[0051]本發(fā)明的有益效果:[0052]相對于傳統(tǒng)的故障保護方案和故障恢復(fù)方案,本發(fā)明的方案W更小的粒度來分配網(wǎng)絡(luò)資源,從流的級別來提供故障處理服務(wù),使得網(wǎng)絡(luò)資源的利用率有了極大地提高,網(wǎng)絡(luò)的靈活性得意體現(xiàn),網(wǎng)絡(luò)的管理變得更加簡單。針對相同的網(wǎng)絡(luò)和相同故障需求,本發(fā)明的方案節(jié)約了一個數(shù)量級的網(wǎng)絡(luò)資源,運對于緩解當前網(wǎng)絡(luò)TCAM資源緊缺的情況具有重要意義?!靖綀D說明】[0053]圖1示出本發(fā)明實施例構(gòu)建備份路徑的原理圖,其中流的服務(wù)鏈需求是必須經(jīng)過C,但是不能經(jīng)過e;f/b/c/d是合法的安全點。[0054]圖2示出本發(fā)明實施例備份路徑構(gòu)建算法圖。[0055]圖3示出本發(fā)明實施例ADD算法捜索空間圖,其中箭頭方向表示流行因子不斷降低。[0056]圖4示出本發(fā)明實施例A孤算法框架圖。[0057]圖5示出本發(fā)明實施例SUB算法框架圖。[0058]圖6示出本發(fā)明實施例SUB消除過載的交換機的流程圖。[0059]圖7示出本發(fā)明實施例SUB將更多的備份流表搬到控制器的流程圖。[0060]圖8示出本發(fā)明實施例網(wǎng)絡(luò)故障處理系統(tǒng)的模塊框圖?!揪唧w實施方式】[0061]W下對本發(fā)明的實施方式作詳細說明。應(yīng)該強調(diào)的是,下述說明僅僅是示例性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。[0062]參閱圖1至圖7,在一種實施例中,本發(fā)明實施例的網(wǎng)絡(luò)故障處理方法主要包括兩個方面,一是根據(jù)網(wǎng)絡(luò)的拓撲和策略需求構(gòu)建備份路徑,二是根據(jù)網(wǎng)絡(luò)中交換機的可用資源(TCAM)情況合理分配備份流表,使得每個流的故障需求都能夠得到滿足?,F(xiàn)詳細敘述如下。[0063]網(wǎng)絡(luò)模型[0064]本發(fā)明基于軟件定義網(wǎng)絡(luò),交換機和控制器之間通過化enFlow協(xié)議標準進行交互,控制器采用帶外控制方式和交換機進行通訊。交換機負責正常數(shù)據(jù)包的轉(zhuǎn)發(fā)和故障檢,控制器負責備份路徑的構(gòu)建、備份流表項的分配和流表的下發(fā)。在此模型中,認為控制器可W通過化DP等協(xié)議獲取網(wǎng)絡(luò)的全局拓撲,網(wǎng)絡(luò)中交換機的可用資源情況已知,流的故障需求已知。[0065]安全點[0066]基于上面的網(wǎng)絡(luò)模型,我們定義安全點的概念如下:[0067]在網(wǎng)絡(luò)拓撲中,滿足下面S個條件的點叫做安全點:[0068](1)從故障上游節(jié)點到安全點之間的路徑不經(jīng)過故障鏈路;[0069](2)從安全點到目的地的正常轉(zhuǎn)發(fā)路徑不經(jīng)過故障鏈路;[0070](3)連接上面的兩段鏈路形成的備份路徑滿足流的服務(wù)鏈需求;[0071]運樣,對于每條流,針對正常轉(zhuǎn)發(fā)路徑上面的每條鏈路,一個安全點就唯一確定了一條備份路徑。[0072]備份路徑[0073]如上所述,我們的備份路徑由=部分構(gòu)成:(1)從流的起點到故障點之間的路徑,運部分路徑和流的正常轉(zhuǎn)發(fā)路徑相重疊,不需要額外的備份流表;(2)從故障點到安全點之間的路徑,運部分路徑根據(jù)2.2.2的遍歷算法得到,需要通過隧道等機制來實現(xiàn),需要額外的備份流表;(3)從安全點到流終點的路徑,運部分路徑和正常轉(zhuǎn)發(fā)路徑重疊,不要額外的處理;[0074]構(gòu)建備份路徑[0075]對于網(wǎng)絡(luò)中的流,其針對某條鏈路的備份路徑應(yīng)該滿足W下條件:[0076](1)備份路徑不經(jīng)過特定的故障鏈路;[0077](2)備份路徑上面的服務(wù)鏈和原始服務(wù)鏈相互兼容;[0078]具體來講,對于任意給定的網(wǎng)絡(luò)流ff,對于其正常轉(zhuǎn)發(fā)路徑P/上面的每一條鏈路ei,我們都應(yīng)該為其構(gòu)造一條相應(yīng)的備份路徑,使得運條備份路徑不經(jīng)過鏈路61,并且路徑上面的middlebox所構(gòu)成的服務(wù)鏈滿足原始流的服務(wù)鏈需求。[0079]構(gòu)建備份路徑的算法流程[0080]見圖2,根據(jù)前面的定義,一條合法的備份路徑由安全點來唯一確定,因此,只要找到合法的安全點就成功構(gòu)建出了相應(yīng)的備份路徑。[0081]我們W廣度優(yōu)先捜索的方式遍歷網(wǎng)絡(luò)拓撲來尋找安全點。從上游檢測到故障的節(jié)點開始,我們依次遍歷網(wǎng)絡(luò)中每一個節(jié)點并假設(shè)該節(jié)點為安全定,用運個"安全點"來構(gòu)建備份路徑。然后,我們用流的故障需求和服務(wù)鏈需求來驗證運條備份路徑是否合法:如果運條備份路徑是合法的,那么當前的節(jié)點就是要找的安全點,保存相應(yīng)的備份路徑,算法退出;如果運條路徑不滿足需求,那么就退出當前驗證過程,遍歷下一個節(jié)點。[0082]在圖1所示的網(wǎng)絡(luò)拓撲和流的需求中,針對故障鏈路(a,b),算法從節(jié)點a開始尋找安全點。此例中,流的服務(wù)鏈需求指定所有的數(shù)據(jù)包必須經(jīng)過節(jié)點C,并且不能經(jīng)過節(jié)點e。因此,e不是一個合法的安全點;g也不是一個合法的安全點,因為從g到目的節(jié)點的正常轉(zhuǎn)發(fā)路徑經(jīng)過了鏈路(a,b);節(jié)點f是一個合法的安全點,相應(yīng)的備份路徑能夠滿足流的需求。值得注意的是,可能有多個合法的安全點存在,如b,c和d。在運種情況下,我們總是選擇第一個合法的安全點,因為我們采用廣度優(yōu)先捜索的方式來尋找安全點,先找到的安全點離故障點更近,從而需要更少的備份流表項。[0083]分配備份流表項[0084]在前面,我們構(gòu)建出了所有的備份路徑,但是受限于網(wǎng)絡(luò)的可用資源情況,將運些備份路徑對應(yīng)的備份流表項全部下發(fā)到下面的交換機是不可能的。因此,我們根據(jù)網(wǎng)絡(luò)中的可用資源情況,在滿足流的故障修復(fù)時間需求的情況下,將運些備份流表中的一部分下發(fā)到下面的交換機上面。[0085]具體來講,對于給定的交換機可利用資源Ov,網(wǎng)絡(luò)流fgd的延遲需求,備分流表的分配方案應(yīng)該使得分配給每個交換機的備份流表項數(shù)目不超過交換機的可用資源數(shù)目,即:[0086][0087]并且保證每個流的延遲需求能夠滿足,即:[008引[0089][0090][0091]旨在使得總體的網(wǎng)絡(luò)資源消耗最少。[0092]事實上,上面描述的備份流表分配問題是一個典型的NPC問題,當網(wǎng)絡(luò)拓撲規(guī)模比較大、網(wǎng)絡(luò)中的應(yīng)用比較多少的時候,上述問題很難在合理的時間內(nèi)求得最優(yōu)解。為了能夠在較短時間內(nèi)求得近似最有解,我們?yōu)槊恳粋€備份流表定義流行因子(popularfactor)如下:[0093][0094]直觀的講,(I)TCAM容量大的交換機應(yīng)該放置更多的備份流表項;(2)延遲需求高的流的備份流表項應(yīng)該被優(yōu)先放置;(3)遍歷路徑短的流的備份流表項應(yīng)該被優(yōu)先放置。[0095]即流行因子越大,相應(yīng)的備份流表項就越應(yīng)該被插入到相應(yīng)的交換機中。即,流行因子越大,相應(yīng)的備份流表項越有理由被分配給下面的交換機而不是放置在控制器上面。[0096]A孤算法[0097]本實施例的啟發(fā)式算法ADD基于分支和定界(B&B,BranchandBound),分支和定界算法是目前解決NP難問題最廣泛使用的啟發(fā)式算法,其求得的解是近似最優(yōu)解。正如算法名字(ADD)所示,運個算法就是依次將最應(yīng)該放到交換機上面的備份流表放到交換機上面,直到所有網(wǎng)絡(luò)流都滿足它們的故障需求為止。對于每一個備份流表,都有把它放置在控制器上面和分配給相應(yīng)的交換機兩種可能,所有運些可能構(gòu)成了一個巨大的樹形解空間,ADD算法就是按照廣度優(yōu)先的策略來遍歷運個解空間,合理減枝,直到找到近似最優(yōu)解,其解空間捜索過程如圖3所示。[0098]基于目標函數(shù)所有系數(shù)都為1的特點,我們對原始算法進行了兩步關(guān)鍵優(yōu)化:[0099](1)采用廣度優(yōu)先捜索遍歷可行域;[0100](2)當找到一個可行解之后,不再捜索層次更深的可行域。[0101]從而,使得算法的收斂時間更短。[0102]SUB算法[0103]正如名字所示,本實施例的SUB算法基于一種"減"的思想,它先將所有的備份流表項都分配給相應(yīng)的交換機,然后再盡量將更多的流表"搬"到控制器來減輕交換機的負擔。具體來講,SUB算法主要基于W下幾步:[0104](1)將所有的備份流表項分配給相應(yīng)的交換機controller,并對每個交換機上面的備份流表項按照流行因子排序;[0105](2)對于每一個過載的交換機按照圖6的流程將一部分備份流表"搬"到控制器,直到交換機不再過載為止;[0106](3)遍歷所有的交換機,按照圖7的流程試圖將更多的備份流表搬到控制器上面。[0107]SUB算法和ADD算法基于不同的啟發(fā)式策略,具有不同的啟發(fā)結(jié)果和運行開銷。很明顯,ADD算法的時間復(fù)雜度更高,它遍歷了更多的解空間,因此求出的結(jié)果更優(yōu);SUB算法提前進行了大量減枝,使得其運行時間大大減少,但卻影響了其解的質(zhì)量。因此,運兩種算法各有優(yōu)勢,A孤算法適用于小型拓撲,SUB算法適用于資源較充裕的大型網(wǎng)絡(luò)拓撲。[0108]根據(jù)本發(fā)明實施例的網(wǎng)絡(luò)故障處理方法,只需要對控制器進行修改升級,對于SDN網(wǎng)絡(luò)中的交換機不需要任何改動。[0109]在本發(fā)明網(wǎng)絡(luò)故障處理系統(tǒng)的一種實施例中,網(wǎng)絡(luò)故障處理系統(tǒng)包括連接于網(wǎng)絡(luò)中的交換機和控制器,控制器包括網(wǎng)絡(luò)狀態(tài)獲取模塊、備份路徑生成模塊、備份流表分配模塊、備份流表下發(fā)模塊、故障響應(yīng)模塊、備份路徑更新模塊。下面具體介紹每一個模塊的功能和實現(xiàn):[0110]網(wǎng)絡(luò)狀態(tài)獲取模塊[0111]交換機通過化Ilo消息主動與控制器建立連接,而后交換機和控制器的所有交互消息都是通過運個連接來完成的。此模塊主要獲取W下=種網(wǎng)絡(luò)狀態(tài):(a)網(wǎng)絡(luò)拓撲;(b)網(wǎng)絡(luò)端口狀態(tài);(C)數(shù)據(jù)包的化ble-miss。下面將分別進行說明:[0112](a)網(wǎng)絡(luò)拓撲。LLDP是鏈路層發(fā)現(xiàn)協(xié)議,用于通告自身的存在。網(wǎng)絡(luò)狀態(tài)獲取模塊可W收集底層交換機的LLDP消息,進行分析整合,從而獲得整個網(wǎng)絡(luò)的拓撲信息;[0113](b)網(wǎng)絡(luò)端口狀態(tài)。根據(jù)化enFlow協(xié)議,當交換機的端口被增加、修改或者刪除的時候,交換機會向控制器發(fā)送〇FPT_PORT_STATUS消息。當發(fā)生鏈路故障或者端口故障時,相應(yīng)的交換機就會觸發(fā)內(nèi)部的狀態(tài)改變,從而向控制器發(fā)送0FPT_P0RT_STATUS消息,運時,網(wǎng)絡(luò)狀態(tài)獲取模塊需要根據(jù)運個消息和網(wǎng)絡(luò)的初始拓撲狀態(tài)來維護網(wǎng)絡(luò)的端口狀態(tài)信息;[0114](C)數(shù)據(jù)包的化ble-miss。當數(shù)據(jù)包沿著備份路徑轉(zhuǎn)發(fā)時,可能在某個交換機上面并沒有相應(yīng)的轉(zhuǎn)發(fā)流表項,運個時候就會觸發(fā)交換機的Table-miss,它會向控制器發(fā)送化cket-out消息,網(wǎng)絡(luò)狀態(tài)獲取模塊需要根據(jù)此化cket-out消息來獲取底層交換機的Table-miss狀態(tài);[0115]備份路徑生成模塊[0116]該模塊需要與網(wǎng)絡(luò)狀態(tài)獲取模塊、備份流表分配模塊和備份路徑更新模塊進行交互。簡體來講,備份路徑生成模塊從網(wǎng)絡(luò)狀態(tài)獲取模塊獲取網(wǎng)絡(luò)的拓撲信息和端口狀態(tài),并W流的故障需求和網(wǎng)絡(luò)的服務(wù)鏈需求作為輸入,運行備份路徑構(gòu)建算法,構(gòu)建出所有的備份路徑。構(gòu)建完成之后,它將運些生成的備份路徑交由備份流表分配模塊進行處理。[0117]隨著網(wǎng)絡(luò)的運行,網(wǎng)絡(luò)的狀態(tài)變化不斷累積,當備份路徑更新模塊認定當前網(wǎng)絡(luò)的狀態(tài)已經(jīng)較上一個狀態(tài)發(fā)生質(zhì)的變化的時候,它將通知備份路徑生成模塊重新獲取網(wǎng)絡(luò)狀態(tài)和輸入需求,并重新構(gòu)建備份路徑。[0118]備份流表分配模塊[0119]備份流表分配模塊需要與備份路徑生成模塊,備份流表下發(fā)模塊進行交互。該模塊從備份路徑生成模塊獲取網(wǎng)絡(luò)中所有的備份路徑,W流的時間延遲需求為輸入,根據(jù)網(wǎng)絡(luò)管理員的選擇運行ADD算法或者SUB算法進行備份流表的分配。分配算法運行結(jié)束后,它將分配結(jié)果提交給備份流表下發(fā)模塊進行處理。[0120]備份流表下發(fā)模塊[0121]備份流表下發(fā)模塊需要和備份流表分配模塊和故障響應(yīng)模塊進行交互。我們的方案是故障保護與故障恢復(fù)的結(jié)合體。該模塊從備份流表分配模塊獲取備份流表的分配結(jié)果。對于那些分配給下層交換機的備份流表,即故障保護部分,該模塊立刻生成相應(yīng)的〇FP_TABLE_M0D流表修改消息,將它們插入到相應(yīng)的交換機中去;對于那些放置在控制器上面的備份流表,即故障恢復(fù)部分,該模塊將更新本地數(shù)據(jù)庫,將它們存儲在本地,當相應(yīng)的故障發(fā)生時,因為運些備份流表沒有被下發(fā)出去,控制器會收到受影響數(shù)據(jù)包的化cket-in消息,網(wǎng)絡(luò)狀態(tài)獲取模塊會識別運些消息,并將識別結(jié)果提交給故障響應(yīng)模塊,故障響應(yīng)模塊會從備份流表下發(fā)模塊請求相應(yīng)的備份流表,然后將它們下發(fā)下去。[0122]故障響應(yīng)模塊[0123]此模塊是本發(fā)明的主要模塊,負責協(xié)調(diào)全局的其他模塊。它和網(wǎng)絡(luò)狀態(tài)獲取模塊、備份路徑生成模塊、備份流表分配模塊、備份流表下發(fā)模塊、備份路徑更新模塊等所有其他模塊進行交互,相應(yīng)的結(jié)構(gòu)圖如圖8所示。它從網(wǎng)絡(luò)管理員獲取網(wǎng)絡(luò)已知的狀態(tài)信息和流的需求等輸入,從網(wǎng)絡(luò)狀態(tài)獲取模塊處獲取網(wǎng)絡(luò)的拓撲等信息,調(diào)用備份路徑生成模塊生成備份路徑,調(diào)用備份流表分配模塊計算分配結(jié)果,調(diào)用備份流表下發(fā)模塊將相應(yīng)的備份流表下發(fā)給相應(yīng)的交換機,根據(jù)備份路徑更新模塊的請求定期更新。[0124]備份路徑更新模塊[0125]網(wǎng)絡(luò)的狀態(tài)是不斷變化的,為了保證正確性,故障處理方案必須能夠適應(yīng)運種變化。本方案采用"懶更新"的策略,即當網(wǎng)絡(luò)新增加一個組件(邊或者節(jié)點)時,備份路徑更新模塊并不進行實時更新,它只是記錄下相應(yīng)的狀態(tài)變化,在全局定期更新時(建議IOmin),運些累積的狀態(tài)變化被考慮進去;當網(wǎng)絡(luò)刪除一個組件時,備份路徑更新模塊立刻將用到運個組件的備份路徑標記為不可用,并重新計算相應(yīng)的備份路徑。運種"懶更新"可能會導致次優(yōu)的結(jié)果,但是它保證了轉(zhuǎn)發(fā)行為的正確性。實踐證明,運種更新策略能夠滿足大多數(shù)網(wǎng)絡(luò)的性能要求。[0126]W上內(nèi)容是結(jié)合具體/優(yōu)選的實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于運些說明。對于本發(fā)明所屬
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,其還可W對運些已描述的實施方式做出若干替代或變型,而運些替代或變型方式都應(yīng)當視為屬于本發(fā)明的保護范圍?!局鳈?quán)項】1.一種網(wǎng)絡(luò)故障處理方法,其特征在于,所述網(wǎng)絡(luò)包括交換機和控制器,交換機和控制器之間通過化enFlow協(xié)議標準進行交互,控制器能夠獲取網(wǎng)絡(luò)的全局拓撲,采用帶外控制方式和交換機進行通訊,交換機負責正常數(shù)據(jù)包的轉(zhuǎn)發(fā)和故障檢測,控制器負責備份路徑的構(gòu)建、備份流表項的分配和流表的下發(fā);所述方法包括W下步驟:A、根據(jù)網(wǎng)絡(luò)拓撲和策略需求構(gòu)建備份路徑;其中對于每條流,針對正常轉(zhuǎn)發(fā)路徑上面的每條鏈路,備份路徑由對應(yīng)的安全點唯一確定,所述安全點是滿足W下條件的點:a.從故障上游節(jié)點到安全點之間的路徑不經(jīng)過故障鏈路;b.從安全點到目的地的正常轉(zhuǎn)發(fā)路徑不經(jīng)過故障鏈路;C.連接上面的兩段路徑形成的備份路徑滿足流的服務(wù)鏈需求;B、根據(jù)網(wǎng)絡(luò)中交換機的可用資源(TCAM)情況合理分配備份流表,使得每個流的故障需求都能夠得到滿足。2.如權(quán)利要求1所述的網(wǎng)絡(luò)故障處理方法,其特征在于,所述備份路徑包括W下Ξ部分:(1)從流的起點到故障點之間的路徑,運部分路徑和流的正常轉(zhuǎn)發(fā)路徑相重疊;(2)從故障點到安全點之間的路徑,運部分路徑根據(jù)遍歷算法得到,需要額外的備份流表;(3)從安全點到流終點的路徑,運部分路徑和正常轉(zhuǎn)發(fā)路徑重疊;對于網(wǎng)絡(luò)中的流,其針對某條鏈路的備份路徑滿足W下條件:a.備份路徑不經(jīng)過特定的故障鏈路;b.備份路徑上面的服務(wù)鏈和原始服務(wù)鏈相互兼容。3.如權(quán)利要求2所述的網(wǎng)絡(luò)故障處理方法,其特征在于,備份路徑滿足W下條件:對于任意給定的網(wǎng)絡(luò)流,對于其正常轉(zhuǎn)發(fā)路徑巧*上面的每一條鏈路ei,為其構(gòu)造一條相應(yīng)的備份路徑,使得運條備份路徑不經(jīng)過鏈路ei,并且路徑上面的middlebox所構(gòu)成的服務(wù)鏈滿足原始流的服務(wù)鏈需求。4.如權(quán)利要求2或3所述的網(wǎng)絡(luò)故障處理方法,其特征在于,步驟A中,構(gòu)建備份路徑的算法包括:W廣度優(yōu)先捜索的方式遍歷網(wǎng)絡(luò)拓撲來尋找安全點,從上游檢測到故障的節(jié)點開始,依次遍歷網(wǎng)絡(luò)中每一個節(jié)點并假設(shè)該節(jié)點為安全點,用該安全點來構(gòu)建備份路徑;然后,用流的故障需求和服務(wù)鏈需求來驗證運條備份路徑是否合法:如果運條備份路徑是合法的,則判斷當前的節(jié)點就是要找的安全點,保存相應(yīng)的備份路徑;如果運條路徑不滿足需求,則就退出當前驗證過程,遍歷下一個節(jié)點;優(yōu)選地,在有多個合法的安全點存在的情況下,選擇第一個合法的安全點。5.如權(quán)利要求1至4任一項所述的網(wǎng)絡(luò)故障處理方法,其特征在于,步驟B中,所述合理分配備份流表滿足W下條件:對于給定的交換機可利用資源〇v,網(wǎng)絡(luò)流//的延遲需求,備分流表的分配方案使得分配給每個交換機的備份流表項數(shù)目不超過交換機的可用資源數(shù)目,并且保證每個流的延遲需求能夠得到滿足。6.如權(quán)利要求5所述的網(wǎng)絡(luò)故障處理方法,其特征在于,按照W下規(guī)則分配備份流表:(l)TCAM容量越大的交換機放置越多的備份流表項;(2)延遲需求越高的流的備份流表項越被優(yōu)先放置到相應(yīng)的交換機中;(3)遍歷路徑越短的流的備份流表項越被優(yōu)先放置到相應(yīng)的交換機中。7.如權(quán)利要求6所述的網(wǎng)絡(luò)故障處理方法,其特征在于,步驟B中,分配備份流表的算法包括:依次將最應(yīng)該放到交換機中的備份流表放到交換機中,直到所有網(wǎng)絡(luò)流都滿足它們的故障需求為止;其中對于每一個備份流表,都有把它放置在控制器上面和分配給相應(yīng)的交換機兩種可能,所有運些可能構(gòu)成了一個樹形解空間,按照廣度優(yōu)先的策略來遍歷運個解空間,通過減枝,直到找到近似最優(yōu)解;優(yōu)選地:采用廣度優(yōu)先捜索遍歷可行域;當找到一個可行解之后,不再捜索層次更深的可行域。8.如權(quán)利要求6所述的網(wǎng)絡(luò)故障處理方法,其特征在于,步驟B中,分配備份流表的算法包括:將所有的備份流表項分配給相應(yīng)的交換機;對于每一個過載的交換機,將一部分備份流表轉(zhuǎn)移到控制器,直到交換機不再過載為止;遍歷所有的交換機,將更多的備份流表搬到控制器上面。9.一種用于實施如權(quán)利要求1至8任一項所述的網(wǎng)絡(luò)故障處理方法的網(wǎng)絡(luò)故障處理系統(tǒng),其特征在于,包括交換機和控制器,交換機和控制器之間通過化enFlow協(xié)議標準進行交互,控制器能夠獲取網(wǎng)絡(luò)的全局拓撲,采用帶外控制方式和交換機進行通訊,交換機負責正常數(shù)據(jù)包的轉(zhuǎn)發(fā)和故障檢測,控制器負責備份路徑的構(gòu)建、備份流表項的分配和流表的下發(fā),所述控制器包括:網(wǎng)絡(luò)狀態(tài)獲取模塊,用于獲取W下Ξ種網(wǎng)絡(luò)狀態(tài):(a)網(wǎng)絡(luò)拓撲;(b)網(wǎng)絡(luò)端口狀態(tài);(C)數(shù)據(jù)包的hble-miss;備份路徑生成模塊,用于從網(wǎng)絡(luò)狀態(tài)獲取模塊獲取網(wǎng)絡(luò)的拓撲信息和端口狀態(tài),并W流的故障需求和網(wǎng)絡(luò)的服務(wù)鏈需求作為輸入,運行備份路徑構(gòu)建算法,構(gòu)建出所有的備份路徑,構(gòu)建完成之后,將運些生成的備份路徑交由備份流表分配模塊進行處理;備份流表分配模塊,用于從備份路徑生成模塊獲取網(wǎng)絡(luò)中所有的備份路徑,W流的時間延遲需求為輸入,運行算法進行備份流表的分配,分配算法運行結(jié)束后,將分配結(jié)果提交給備份流表下發(fā)模塊進行處理。備份流表下發(fā)模塊,用于從備份流表分配模塊獲取備份流表的分配結(jié)果,對于分配給下層交換機的備份流表,即故障保護部分,備份流表下發(fā)模塊立刻生成相應(yīng)的〇FP_TABLE_MOD流表修改消息,將它們插入到相應(yīng)的交換機中;對于放置在控制器上面的備份流表,即故障恢復(fù)部分,備份流表下發(fā)模塊更新本地數(shù)據(jù)庫,將它們存儲在本地;故障響應(yīng)模塊,用于負責協(xié)調(diào)全局的其他模塊,故障響應(yīng)模塊從網(wǎng)絡(luò)管理員獲取網(wǎng)絡(luò)已知的狀態(tài)信息和流的需求輸入,從網(wǎng)絡(luò)狀態(tài)獲取模塊處獲取網(wǎng)絡(luò)的拓撲等信息,調(diào)用備份路徑生成模塊生成備份路徑,調(diào)用備份流表分配模塊計算分配結(jié)果,調(diào)用備份流表下發(fā)模塊將相應(yīng)的備份流表下發(fā)給相應(yīng)的交換機,根據(jù)備份路徑更新模塊的請求定期更新;備份路徑更新模塊,用于更新備份路徑,當備份路徑更新模塊認定當前網(wǎng)絡(luò)的狀態(tài)已經(jīng)較上一個狀態(tài)發(fā)生質(zhì)的變化的時候,它將通知備份路徑生成模塊重新獲取網(wǎng)絡(luò)狀態(tài)和輸入需求,并重新構(gòu)建備份路徑。10.如權(quán)利要求9所述的網(wǎng)絡(luò)故障處理系統(tǒng),其特征在于,當網(wǎng)絡(luò)新增加一個邊或者節(jié)點時,備份路徑更新模塊并不進行實時更新,僅記錄下相應(yīng)的狀態(tài)變化,在全局定期更新時,運些累積的狀態(tài)變化被考慮;當網(wǎng)絡(luò)刪除一個邊或者節(jié)點時,備份路徑更新模塊立刻將用到運個組件的備份路徑標記為不可用,并重新計算相應(yīng)的備份路徑?!疚臋n編號】H04L12/707GK105978741SQ201610566566【公開日】2016年9月28日【申請日】2016年7月15日【發(fā)明人】李清,李亨通,肖喜,江勇【申請人】清華大學深圳研究生院