本發(fā)明屬于路由控制技術(shù)領(lǐng)域,尤其涉及一種基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法。
背景技術(shù):
路由和交換之間的主要區(qū)別就是交換發(fā)生在OSI參考模型第二層(數(shù)據(jù)鏈路層),而路由發(fā)生在第三層,即網(wǎng)絡(luò)層。這一區(qū)別決定了路由和交換在移動信息的過程中需使用不同的控制信息,所以兩者實現(xiàn)各自功能的方式是不同的。當(dāng)數(shù)據(jù)從一個子網(wǎng)傳輸?shù)搅硪粋€子網(wǎng)時,可通過路由來完成。因此,路由具有判斷網(wǎng)絡(luò)地址和選擇路徑還有轉(zhuǎn)發(fā)的功能,它能在多網(wǎng)絡(luò)互聯(lián)環(huán)境中,建立靈活的連接,可用完全不同的數(shù)據(jù)分組和介質(zhì)訪問方法連接各種子網(wǎng),它不關(guān)心各子網(wǎng)使用的硬件設(shè)備,但要求運行與網(wǎng)絡(luò)層協(xié)議相一致的軟件。在當(dāng)前我國網(wǎng)絡(luò)基礎(chǔ)建設(shè)和信息建設(shè)方興未艾之際,探討路由在互連網(wǎng)絡(luò)中的作用、地位及其發(fā)展方向,對于國內(nèi)的網(wǎng)絡(luò)技術(shù)研究、網(wǎng)絡(luò)建設(shè),以及明確網(wǎng)絡(luò)市場上對于路由和網(wǎng)絡(luò)互連的各種似是而非的概念,都有重要的意義。根據(jù)傳統(tǒng)網(wǎng)絡(luò)路由選路算法是全局的還是局部的,選路算法可以分為:全局選路算法:用完整的,全局性的網(wǎng)絡(luò)信息來計算從源到目的的最低費用路徑。這種算法通常稱為鏈路狀態(tài)算法即LS算法,因為該算法必須知道網(wǎng)絡(luò)中每條鏈路的費用。分布式選路算法:以迭代的、分布式的方式計算出最低費用路徑。沒有節(jié)點擁有關(guān)于所有網(wǎng)絡(luò)鏈路費用的完整信息,而每個節(jié)點僅有與其直接相連鏈路的費用信息即可開始工作。然后通過迭代計算過程并與相鄰節(jié)點交換信息,一個節(jié)點逐漸計算出到達目的節(jié)點或者一組目的節(jié)點的最低費用路徑。在傳統(tǒng)的網(wǎng)絡(luò)設(shè)備中,控制平面和數(shù)據(jù)平面在物理位置上是緊密耦合的,這樣的耦合有利于兩個平面 之間數(shù)據(jù)的快速交互,從而實現(xiàn)網(wǎng)絡(luò)設(shè)備性能的提升。然而,這種分布式的網(wǎng)絡(luò)控制方式也帶來了一些問題,例如,管理非常困難,只能逐個配置,熱河錯誤都可能導(dǎo)致管理行為失效,并且難以故障定位與排查;另外,靈活性也不夠,當(dāng)網(wǎng)絡(luò)設(shè)備需求的功能越來越復(fù)雜時,在分布式平面上進行新功能部署的難度非常大,尤其對于類似數(shù)據(jù)中心這種變化較快、管理靈活的應(yīng)用場景,當(dāng)前數(shù)據(jù)控制耦合的技術(shù)模式就凸顯出其缺點。
目前,同一時間從同一個路由器發(fā)出的、到達相同目的地址的分組,必然經(jīng)歷相同的路線,所以就會造成帶寬的浪費、損失不必要的數(shù)據(jù)等弊端。其次,在傳統(tǒng)網(wǎng)絡(luò)路由選路算法中,全局選路算法和分布式選路算法也不是沒有缺陷的,同樣存在著一些弊端,例如:每個分組交換機都參與計算,但計算內(nèi)容相同,造成了大量的冗余計算,還有就是兩種算法采用迭代計算,時間復(fù)雜度為O(n^2),更新慢。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法,旨在解決目前同一時間從同一個路由器發(fā)出的、到達相同目的地址的分組方法存在造成帶寬的浪費、損失不必要數(shù)據(jù),造成大量的冗余計算,更新慢的問題。
本發(fā)明是這樣實現(xiàn)的,一種基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法,所述基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法包括以下步驟:
根據(jù)網(wǎng)絡(luò)信息通過SPFA算法計算最優(yōu)路徑;
從所有交換機中篩選出最優(yōu)路徑經(jīng)過的交換機id;
解析該路徑的起始IP地址;
刪除所有經(jīng)過的交換機中符合該起始IP的流表;
獲取鏈路信息,并根據(jù)鏈路信息以及最優(yōu)路徑轉(zhuǎn)發(fā)順序創(chuàng)建每個該交換機中需要下發(fā)的流表并下發(fā)。
本發(fā)明的另一目的在于提供一種所述基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法的基于SDN的分布式服務(wù)器負(fù)載均衡方法,=所述基于SDN的分布式服務(wù)器負(fù)載均衡方法包括以下步驟:
(1)用戶對服務(wù)器的訪問請求通過SDN網(wǎng)絡(luò)的接入口進入到SDN網(wǎng)絡(luò)中;
(2)用戶請求到達的SDN網(wǎng)絡(luò)設(shè)備上部署匹配該請求的路由規(guī)則時,則SDN網(wǎng)絡(luò)設(shè)備執(zhí)行匹配對應(yīng)的網(wǎng)絡(luò)操作集;否則,SDN網(wǎng)絡(luò)設(shè)備將訪問請求傳遞給SDN控制器,由控制器根據(jù)負(fù)載均衡算法決策網(wǎng)絡(luò)操作規(guī)則,并將網(wǎng)絡(luò)操作規(guī)則部署到相應(yīng)SDN網(wǎng)絡(luò)設(shè)備上由相應(yīng)SDN網(wǎng)絡(luò)設(shè)備執(zhí)行;
(3)服務(wù)器對最終到達的訪問請求進行處理,并反饋請求結(jié)果;
(4)SDN網(wǎng)絡(luò)設(shè)備接收到服務(wù)器的反饋結(jié)果后,如果反饋結(jié)果到達的SDN網(wǎng)絡(luò)設(shè)備上已經(jīng)部署了匹配該反饋結(jié)果的路由規(guī)則時,則SDN網(wǎng)絡(luò)設(shè)備執(zhí)行匹配對應(yīng)的網(wǎng)絡(luò)操作集;否則,SDN網(wǎng)絡(luò)設(shè)備將反饋結(jié)果傳遞給SDN控制器,由控制器根據(jù)負(fù)載均衡算法決策網(wǎng)絡(luò)操作規(guī)則,并將網(wǎng)絡(luò)操作規(guī)則部署到相應(yīng)SDN網(wǎng)絡(luò)設(shè)備上由相應(yīng)SDN網(wǎng)絡(luò)設(shè)備執(zhí)行;
(5)SPFA算法實現(xiàn),建立一個隊列,初始時隊列里只有起始點,再建立一個表格記錄起始點到所有點的最短路徑;然后執(zhí)行松弛操作,用隊列里有的點作為起始點去刷新到所有點的最短路徑,如果刷新成功并且被刷新點不在隊列中則把該點加入到隊列最后,重復(fù)執(zhí)行直到隊列為空。
進一步,所述SPFA算法包括:某個點進入隊列的次數(shù)超過N次則存在負(fù)環(huán);在執(zhí)行算法前做一次拓?fù)渑判?,以判斷是否存在?fù)權(quán)回路;用數(shù)組d記錄每個結(jié)點的最短路徑估計值,而且用鄰接表來存儲圖;采取動態(tài)逼近法:設(shè)立先進先出的隊列用來保存待優(yōu)化的結(jié)點,優(yōu)化時每次取出隊首結(jié)點u,并且用u點當(dāng)前的最短路徑估計值對離開u點所指向的結(jié)點v進行松弛操作,如果v點的最短路徑估計值有所調(diào)整,且v點不在當(dāng)前的隊列中,就將v點放入隊尾;不斷從隊列中取出結(jié)點來進行松弛操作,直至隊列空為止。
進一步,采用網(wǎng)絡(luò)拓?fù)鋫髦祦肀O(jiān)測流量,具體包括以下步驟:
通過REST API獲取當(dāng)前時刻中所有交換機中所儲存的流表;
對于每一個交換機中的流表進行記錄;
經(jīng)過500ms延時后再次獲取所有流表;
對于兩次獲取中同一個id的流表計算其count字段的差值;
如果第二次獲取時存在第一次不存在的流表,則直接使用其count值作為該條流的壓力值;
如果第二次獲取后不存在與第一次中某條流表相匹配的流表則忽略該條流表;
計算差值若為0則忽略該條流表;
對每個交換機上的流表進行端口分類;
將每個交換機中所有正在通過數(shù)據(jù)的流表的差值相加看作該交換機的壓力數(shù)值;
對于一條鏈路來講兩頭的端口的壓力值得平均值設(shè)為該條鏈路的權(quán)值以此生成帶有權(quán)值的圖。
本發(fā)明的另一目的在于提供一種所述基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法的動態(tài)路由控制系統(tǒng),所述動態(tài)路由控制系統(tǒng)包括:
信息獲取模塊,用于通過Java向Floodlight REST API發(fā)送POST、DELETE請求用來獲取、刪除符合要求的信息;
信息發(fā)送模塊,用于通過封裝JSON數(shù)據(jù)發(fā)送給REST API用來向信息控制器發(fā)送所需信息;
信息解析模塊,用于通過解析返回的JSON數(shù)據(jù)獲取鏈路信息、設(shè)備信息以及流表信息;
生成模塊,用于通過所獲得信息生成有向加權(quán)的圖;
計算模塊,用于根據(jù)圖運算SPFA算法計算最優(yōu)路徑;
下發(fā)模塊,用于通過獲取的設(shè)備信息及最優(yōu)路徑生成雙向流表進行下發(fā)。
本發(fā)明的另一目的在于提供一種應(yīng)用所述基于SPFA算法計算轉(zhuǎn)發(fā)路徑的 動態(tài)路由控制方法的局域網(wǎng)路由控制方法。
本發(fā)明的另一目的在于提供一種應(yīng)用所述基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法的局域間路由控制方法。
本發(fā)明的另一目的在于提供一種應(yīng)用所述基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法的跨網(wǎng)段路由控制方法。
本發(fā)明的另一目的在于提供一種應(yīng)用所述基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法的分布式網(wǎng)絡(luò)控制方法。
本發(fā)明提供的基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法,公開了一種基于SDN的分布式服務(wù)器負(fù)載均衡方法,利用軟件定義網(wǎng)絡(luò)(SDN)控制面與轉(zhuǎn)發(fā)面相分離的架構(gòu)優(yōu)勢,用戶訪問請求到達SDN網(wǎng)絡(luò)的某個設(shè)備上,由SDN控制器根據(jù)網(wǎng)絡(luò)運行狀態(tài),動態(tài)地將用戶請求調(diào)度至合適的服務(wù)器,實現(xiàn)了服務(wù)器的負(fù)載均衡。該方法能夠提供從接入、轉(zhuǎn)發(fā)到服務(wù)的全方位容錯,充分發(fā)掘服務(wù)器集群的總負(fù)載能力,提高整個系統(tǒng)運行的擴展性和可靠性。
本發(fā)明運用不僅僅局限在局域內(nèi),而是進行域間的路由,從而進一步實現(xiàn)跨網(wǎng)段的路由;可以利用在更多的路由選擇中,使得域間的鏈路浪費大大減小,并更具有智能型;在可靠性、安全性、出錯處理需求上下一步也會進行更加具體有效的優(yōu)化;使得健壯性和可用性更強,并且增加其自檢能力,完成系統(tǒng)定期自檢,并報告潛在問題,有利于開發(fā)者從長遠(yuǎn)的角度了解項目的情況,并對項目進行長遠(yuǎn)的維護和進一步的開發(fā),將打開一個SDN領(lǐng)域路由優(yōu)化的新紀(jì)元。
附圖說明
圖1是本發(fā)明實施例提供的基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法流程圖。
圖2是本發(fā)明實施例提供的采用網(wǎng)絡(luò)拓?fù)鋫髦祦肀O(jiān)測流量流程圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
下面結(jié)合附圖對本發(fā)明的應(yīng)用原理作詳細(xì)的描述。
如圖1所示,本發(fā)明實施例的基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制方法包括以下步驟:
S101:根據(jù)網(wǎng)絡(luò)信息通過SPFA算法計算最優(yōu)路徑;
S:02:從所有交換機中篩選出最優(yōu)路徑經(jīng)過的交換機id;
S103:解析該路徑的起始IP地址;
S104:刪除所有經(jīng)過的交換機中符合該起始IP的流表;
S105:獲取鏈路信息,并根據(jù)鏈路信息以及最優(yōu)路徑轉(zhuǎn)發(fā)順序創(chuàng)建每個該交換機中需要下發(fā)的流表并下發(fā)。
系統(tǒng)實現(xiàn),核心代碼實現(xiàn)
本發(fā)明實施例的基于SPFA算法計算轉(zhuǎn)發(fā)路徑的動態(tài)路由控制系統(tǒng)包括:
信息獲取模塊,用于通過Java向Floodlight REST API發(fā)送POST、DELETE請求用來獲取、刪除符合要求的信息。
信息發(fā)送模塊,用于通過封裝JSON數(shù)據(jù)發(fā)送給REST API用來向信息控制器發(fā)送所需信息。
信息解析模塊,用于通過解析返回的JSON數(shù)據(jù)獲取鏈路信息、設(shè)備信息以及流表信息。
生成模塊,用于通過所獲得信息生成有向加權(quán)的圖。
計算模塊,用于根據(jù)圖運算SPFA算法計算最優(yōu)路徑。
下發(fā)模塊,用于通過獲取的設(shè)備信息及最優(yōu)路徑生成雙向流表進行下發(fā)。
本發(fā)明提供了一種基于SDN的分布式服務(wù)器負(fù)載均衡方法,所述方法包括以下步驟:
(1)用戶對服務(wù)器的訪問請求通過SDN網(wǎng)絡(luò)的接入口進入到SDN網(wǎng)絡(luò)中;
(2)如果用戶請求到達的SDN網(wǎng)絡(luò)設(shè)備上已經(jīng)部署了匹配該請求的路由規(guī)則時,則SDN網(wǎng)絡(luò)設(shè)備執(zhí)行匹配對應(yīng)的網(wǎng)絡(luò)操作集;否則,SDN網(wǎng)絡(luò)設(shè)備將訪問請求傳遞給SDN控制器,由控制器根據(jù)負(fù)載均衡算法決策網(wǎng)絡(luò)操作規(guī)則,并將網(wǎng)絡(luò)操作規(guī)則部署到相應(yīng)SDN網(wǎng)絡(luò)設(shè)備上由相應(yīng)SDN網(wǎng)絡(luò)設(shè)備執(zhí)行;
(3)服務(wù)器對最終到達的訪問請求進行處理,并反饋請求結(jié)果;
(4)SDN網(wǎng)絡(luò)設(shè)備接收到服務(wù)器的反饋結(jié)果后,如果反饋結(jié)果到達的SDN網(wǎng)絡(luò)設(shè)備上已經(jīng)部署了匹配該反饋結(jié)果的路由規(guī)則時,則SDN網(wǎng)絡(luò)設(shè)備執(zhí)行匹配對應(yīng)的網(wǎng)絡(luò)操作集;否則,SDN網(wǎng)絡(luò)設(shè)備將反饋結(jié)果傳遞給SDN控制器,由控制器根據(jù)負(fù)載均衡算法決策網(wǎng)絡(luò)操作規(guī)則,并將網(wǎng)絡(luò)操作規(guī)則部署到相應(yīng)SDN網(wǎng)絡(luò)設(shè)備上由相應(yīng)SDN網(wǎng)絡(luò)設(shè)備執(zhí)行;
(5)SPFA算法實現(xiàn)
建立一個隊列,初始時隊列里只有起始點,再建立一個表格記錄起始點到所有點的最短路徑(該表格的初始值要賦為極大值,該點到他本身的路徑賦為0)。然后執(zhí)行松弛操作,用隊列里有的點作為起始點去刷新到所有點的最短路徑,如果刷新成功并且被刷新點不在隊列中則把該點加入到隊列最后。重復(fù)執(zhí)行直到隊列為空。
本發(fā)明實施例的SPFA算法包括:
如果某個點進入隊列的次數(shù)超過N次則存在負(fù)環(huán)(SPFA無法處理帶負(fù)環(huán)的圖)。在執(zhí)行該算法前做一次拓?fù)渑判?,以判斷是否存在?fù)權(quán)回路。用數(shù)組d記錄每個結(jié)點的最短路徑估計值,而且用鄰接表來存儲圖。采取動態(tài)逼近法:設(shè)立一個先進先出的隊列用來保存待優(yōu)化的結(jié)點,優(yōu)化時每次取出隊首結(jié)點u,并且用u點當(dāng)前的最短路徑估計值對離開u點所指向的結(jié)點v進行松弛操作,如果v點的最短路徑估計值有所調(diào)整,且v點不在當(dāng)前的隊列中,就將v點放入隊尾。這樣不斷從隊列中取出結(jié)點來進行松弛操作,直至隊列空為止。
如圖2所示,本發(fā)明實施例采用網(wǎng)絡(luò)拓?fù)鋫髦祦肀O(jiān)測流量,具體包括以下步驟:
通過REST API獲取當(dāng)前時刻中所有交換機中所儲存的流表。
對于每一個交換機中的流表進行記錄。
經(jīng)過500ms延時后再次獲取所有流表。
對于兩次獲取中同一個id的流表計算其count字段的差值。
如果第二次獲取時存在第一次不存在的流表,則直接使用其count值作為該條流的壓力值。
如果第二次獲取后不存在與第一次中某條流表相匹配的流表則忽略該條流表。
計算差值若為0則忽略該條流表。
對每個交換機上的流表進行端口分類。
將每個交換機中所有正在通過數(shù)據(jù)的流表的差值相加看作該交換機的壓力數(shù)值。
對于一條鏈路來講兩頭的端口的壓力值得平均值設(shè)為該條鏈路的權(quán)值以此生成帶有權(quán)值的圖。
通過對動態(tài)路由器的性能、可靠性等方面的測試,并在實際的環(huán)境中,驗證了功能的正確性,并實現(xiàn)了路徑的動態(tài)路由,使得傳輸?shù)臄?shù)據(jù)在鏈路中的傳出呈現(xiàn)出均衡的狀態(tài),通過測試,證明了該軟件具有可用性和實用價值。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。