本發(fā)明涉及一種通信技術(shù)領(lǐng)域,尤其涉及一種基于Q學習的用于軟件定義網(wǎng)絡(luò)的路徑選擇方法,它可以在已有虛擬網(wǎng)的基礎(chǔ)上,發(fā)現(xiàn)最適合的服務(wù)路徑滿足服務(wù)請求。
背景技術(shù):
近年來,人們對網(wǎng)絡(luò)中所獲取的信息類型要求多元化,對網(wǎng)絡(luò)中獲取的信息質(zhì)量和信息安全的需求也不斷提高。各種網(wǎng)絡(luò)中承載的信息量急劇膨脹,網(wǎng)絡(luò)規(guī)模不斷地擴大,接入到網(wǎng)絡(luò)中的用戶、應(yīng)用和業(yè)務(wù)越來越多。網(wǎng)絡(luò)的建設(shè)、擴展、優(yōu)化以及安全等工作成為網(wǎng)絡(luò)建設(shè)和維護的重要內(nèi)容。然而,面對這些復雜多變的需求,原有的互聯(lián)網(wǎng)架構(gòu)愈來愈顯得捉襟見肘,難以適應(yīng)。在這種背景下,軟件定義網(wǎng)絡(luò)(software defined network,SDN)應(yīng)運而生。軟件定義網(wǎng)絡(luò)是一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),通過將網(wǎng)絡(luò)設(shè)備控制面與數(shù)據(jù)面分離開來,從而實現(xiàn)了網(wǎng)絡(luò)流量的靈活控制,為核心網(wǎng)絡(luò)及應(yīng)用的創(chuàng)新提供了良好的平臺。
軟件定義網(wǎng)絡(luò)由軟件控制和硬件數(shù)據(jù)通道組成。軟件控制包括管理以及路由協(xié)議等。軟件定義網(wǎng)絡(luò)提出了控制層面的抽象,它將網(wǎng)絡(luò)中所有的網(wǎng)絡(luò)設(shè)備視為被管理的資源,在抽象底層網(wǎng)絡(luò)設(shè)備具體細節(jié)的同時為上層應(yīng)用提供了統(tǒng)一的管理視圖和編程接口。這樣,用戶能自行定義和設(shè)計智能化程度和復雜度較高算法來控制網(wǎng)絡(luò)工作,定制開發(fā)各種應(yīng)用程序,通過軟件定義邏輯上的網(wǎng)絡(luò)拓撲,以滿足對網(wǎng)絡(luò)資源的不同需求,而無需關(guān)心底層網(wǎng)絡(luò)的物理拓撲結(jié)構(gòu),為網(wǎng)絡(luò)設(shè)計規(guī)劃與管理提供靈活和便利。
眾所周知,選擇適合的網(wǎng)絡(luò)路徑,可減少對網(wǎng)絡(luò)資源的耗費,快速的完成網(wǎng)絡(luò)服務(wù)。在網(wǎng)絡(luò)中,如何選擇最佳路徑對整個網(wǎng)絡(luò)服務(wù)的系統(tǒng)而言是非常重要的;而另一方面,兩個主要的原因使得在軟件定義網(wǎng)絡(luò)中尋找路徑也非易事:首先,軟件定義網(wǎng)絡(luò)中的服務(wù)請求與網(wǎng)絡(luò)節(jié)點并不一一對應(yīng),因此在尋找路徑的同時還需要將服務(wù)映射到網(wǎng)絡(luò)節(jié)點;其次,網(wǎng)絡(luò)中的設(shè)備和路徑有可能是未知的,也有可能會發(fā)生動態(tài)變化。所以針對軟件定義網(wǎng)絡(luò)的特點,本技術(shù)領(lǐng)域的技術(shù)人員需要一種新的適于軟件定義網(wǎng)絡(luò)的網(wǎng)絡(luò)路徑選擇方法,尋找資源耗費少,路徑短的網(wǎng)絡(luò)路徑。
作為一種具有較高通用性的機器學習框架,強化學習得到了較為廣泛的研究和應(yīng)用。在強化學習框架中,用戶給出問題的目標,智能體控制器(agent)選擇某一個動作,實現(xiàn)與環(huán)境的交互,獲得環(huán)境給出的獎賞作為強化信號,智能體控制器(agent)根據(jù)強化信號和環(huán)境當前狀態(tài)再選擇下一個動作,直到終止。智能體控制器(agent)的目標是在每個狀態(tài)發(fā)現(xiàn)最優(yōu)策略以使期望的獎賞之和最大。Q學習是強化學習的一種經(jīng)典的算法,具有能感知環(huán)境的自治智能體控制器(agent),可以通過不斷地與環(huán)境交互進行動態(tài)學習,選擇能達到其目標的最優(yōu)動作,不必事先了解所要解決問題的所有細節(jié),可以做到“邊學邊做,邊做邊學”。因此,Q學習適合解決帶有動態(tài)性和未知性的網(wǎng)絡(luò)路由選擇問題。
技術(shù)實現(xiàn)要素:
本發(fā)明目的是:一種基于Q學習的用于軟件定義網(wǎng)絡(luò)的路徑選擇方法,利用該方法,尋找路徑短,消耗時間少,占有帶寬資源少,適用于動態(tài)、復雜網(wǎng)絡(luò)的網(wǎng)絡(luò)路徑,該路徑能夠在較少耗費資源的情況下,快速的完成網(wǎng)絡(luò)服務(wù),能適應(yīng)網(wǎng)絡(luò)的動態(tài)變化,而且盡量不影響虛擬網(wǎng)絡(luò)完成其他服務(wù)請求。
本發(fā)明的技術(shù)方案是:一種基于Q學習的用于軟件定義網(wǎng)絡(luò)的路徑選擇方法,由軟件定義網(wǎng)絡(luò)基礎(chǔ)設(shè)施層接收服務(wù)請求,軟件定義網(wǎng)絡(luò)控制器根據(jù)所需服務(wù)組件及組合方式構(gòu)建虛擬網(wǎng)絡(luò),并分配適合的網(wǎng)絡(luò)路徑完成服務(wù)請求,最終達到終端,所述適合的網(wǎng)絡(luò)路徑通過強化學習中的Q學習方式獲取,其方法步驟為:
⑴在已構(gòu)建的虛擬網(wǎng)絡(luò)上設(shè)定若干個服務(wù)節(jié)點P,對應(yīng)每一個服務(wù)節(jié)點分配有相應(yīng)的帶寬資源B;
⑵將接收到的服務(wù)請求分列為可采取的動作a,根據(jù)ε-貪心(ε-greedy)策略嘗試選擇每一條可以到達終端的路徑,即將每一個動作a經(jīng)過相應(yīng)的服務(wù)節(jié)點P后完成服務(wù)請求;
⑶上述每一次嘗試均記錄下來,并且記錄相應(yīng)的消耗時間,以及執(zhí)行完成動作a后,每一服務(wù)節(jié)點P上的剩余帶寬資源B,匯總為Q值表,同時該Q值表內(nèi)的數(shù)據(jù)將被每一次的嘗試數(shù)據(jù)所更新;
⑷根據(jù)Q值表中的記錄數(shù)據(jù),找出路徑短,消耗時間少,占用帶寬資源少的路徑,即為適合的路徑。
上文中,ε-貪心(ε-greedy)策略是強化學習算法中經(jīng)常使用的一種策略,ε-貪心策略:隨機選擇一個實數(shù)ε(0<ε<1)作為探索因子,計算得到所有可行動作的個數(shù)m,每次以概率ε/m在當前可行動作集中隨機選擇一個動作,否則,以概率1-ε選擇,到當前為止情況下,Q值表中最大的Q值所對應(yīng)動作;根據(jù)這一方法,選擇路徑嘗試,盡快找到適合的路徑,即路徑短,消耗時間少,占用帶寬資源少的路徑。由于采用了探索因子ε,因此可以增加新的嘗試和探索,彌補了貪心策略在探索能力上的不足;同時因為ε值較小,選擇其他動作的概率較小,選擇Q值最大對應(yīng)的最優(yōu)動作的概率最大,因此ε-貪心(ε-greedy)策略能保證不會由于增加了探索而對最優(yōu)動作的發(fā)現(xiàn)有太大的負面影響。
上述技術(shù)方案中,所述步驟⑶中,在Q值表中設(shè)置一立即獎賞參數(shù)r,當執(zhí)行動作a消耗時間及占用的帶寬資源B越少,為立即獎賞參數(shù)r加入獎勵值,相反則為立即獎賞參數(shù)r減去懲罰值,根據(jù)立即獎賞參數(shù)r的數(shù)值大小,幫助ε-貪心(ε-greedy)策略選擇最有可能成為適合的路徑進行嘗試。加入立即獎賞參數(shù)r,與ε-貪心(ε-greedy)策略相結(jié)合,通過立即獎賞按照折扣方式累加,獲得累計獎賞Q值,最大化累計獎賞Q值,使得Q值表中的數(shù)據(jù)變化更為明顯,突出適合的路徑的優(yōu)勢,易于選出。
進一步的是,所述當執(zhí)行轉(zhuǎn)發(fā)任務(wù),立即獎賞參數(shù)r=帶寬資源請求-帶寬資源+計算資源請求-計算資源-服務(wù)點間的路徑×路徑長短的權(quán)重n,當無執(zhí)行任務(wù)時,r=計算資源請求。當執(zhí)行服務(wù)路徑倒數(shù)第二步時,如果動作a的下一個執(zhí)行點是某一服務(wù)節(jié)點P而非終端時,r=r-X;否則,如果動作a的下一個執(zhí)行點是終端時,r=r+X。X:任意取一數(shù)值,獎懲是否完成目標。
上述技術(shù)方案中,所述ε-貪心(ε-greedy)策略在與Q值表參數(shù)結(jié)合選擇路徑時,隨機選擇一個實數(shù)ε(0<ε<1)作為探索因子,計算得到所有可行動作的個數(shù)m,然后以ε/m的概率等概率地在可行動作集合中隨機選擇一個可行動作,或者以1-ε的概率選擇,到當前為止情況下,Q值表中最大的Q值所對應(yīng)的動作;所述可行動作為:網(wǎng)絡(luò)可以滿足的動作,包括帶寬可以滿足轉(zhuǎn)發(fā)請求,計算資源可以滿足處理請求;即帶寬資源請求<帶寬資源,計算資源請求<計算資源。
進一步的技術(shù)方案是,所述路徑長短的權(quán)重n是確定路徑長短與資源耗費之間相對于立即獎賞參數(shù)r重要性的系數(shù),當路徑長短對整個立即獎賞參數(shù)r更為重要時,權(quán)重n值較大,相反則較小。
上述技術(shù)方案中,所述步驟⑷中根據(jù)Q值表中數(shù)據(jù)對路徑的選擇方式:本次Q值表與上一次Q值表數(shù)據(jù)相比較,如果相差很小,則認為Q值表中所有的Q值收斂,選擇最大Q值對應(yīng)的具體動作a,選定該動作a對應(yīng)的網(wǎng)絡(luò)轉(zhuǎn)發(fā)路徑以及服務(wù)與路徑的映射關(guān)系,即為所述適合的路徑;否則,繼續(xù)根據(jù)ε-貪心(ε-greedy)策略嘗試選擇每一條可以到達終端的路徑。
上文中,所述本次Q值表與上一次Q值表數(shù)據(jù)相比較,變化不大,是指將本次Q值表中的每一個Q值與上一次Q值表對應(yīng)的Q值相減,如果相減得到的差的絕對值均小于某個預先設(shè)定的,很小的閾值,則認為Q值表中所有的Q值收斂,根據(jù)最大Q選擇相應(yīng)的具體動作a,選定該動作a對應(yīng)的網(wǎng)絡(luò)轉(zhuǎn)發(fā)路徑以及服務(wù)與路徑的映射關(guān)系,即為所述適合的路徑;否則,繼續(xù)將接收到的服務(wù)請求分列為可采取的動作a,根據(jù)ε-貪心(ε-greedy)策略嘗試選擇每一條可以到達終端的路徑,即將每一個動作a經(jīng)過相應(yīng)的服務(wù)節(jié)點P后完成服務(wù)請求。
由于上述技術(shù)方案運用,本發(fā)明與現(xiàn)有技術(shù)相比具有下列優(yōu)點:
1.本發(fā)明基于ε-貪心(ε-greedy)策略,嘗試去發(fā)現(xiàn)每一條路徑,記錄每一次選擇執(zhí)行后虛擬網(wǎng)絡(luò)中服務(wù)節(jié)點的資源消耗,以及時間消耗等參數(shù)值,建立Q值表,作為下一次ε-貪心(ε-greedy)策略選擇路徑的參考,從而可以發(fā)現(xiàn)一條轉(zhuǎn)發(fā)路徑短(消耗時間少),資源耗費少(帶寬占用少)的路徑(即適合的路徑),這就能夠使得虛擬網(wǎng)絡(luò)在不調(diào)整的情況下,能適應(yīng)網(wǎng)絡(luò)的動態(tài)變化,同時盡可能多的滿足其他服務(wù)請求。
2.增加立即獎賞r參數(shù),與強化學習中的Q學習能夠累計獎賞最大的特性結(jié)合,最快找出資源耗費少,路徑短的網(wǎng)絡(luò)路徑,該路徑能夠在較少耗費資源的情況下,快速的完成網(wǎng)絡(luò)服務(wù),而且盡量不影響虛擬網(wǎng)絡(luò)完成其他服務(wù)請求。
3.由于在Q學習方法基礎(chǔ)上采用ε-貪心(ε-greedy)策略,引入了探索因子ε,可以增加新的嘗試和探索,彌補了貪心策略在探索能力上的不足;同時因為ε值較小,選擇其他動作的概率較小,選擇Q值最大對應(yīng)的最優(yōu)動作的概率最大,因此ε-貪心(ε-greedy)策略能保證不會由于增加了探索而對最優(yōu)動作的發(fā)現(xiàn)有太大的負面影響。
附圖說明
圖1是本發(fā)明實施例一中的布局示意圖;
圖2是本發(fā)明實施例一軟件定義網(wǎng)絡(luò)服務(wù)部署圖。
具體實施方式
下面結(jié)合附圖及實施例對本發(fā)明作進一步描述:
實施例一:參見圖1、2所示,一種基于Q學習的用于軟件定義網(wǎng)絡(luò)的路徑選擇方法,由軟件定義網(wǎng)絡(luò)基礎(chǔ)設(shè)施層接收服務(wù)請求,軟件定義網(wǎng)絡(luò)控制器根據(jù)所需服務(wù)組件及組合方式構(gòu)建虛擬網(wǎng)絡(luò),并分配適合的網(wǎng)絡(luò)路徑完成服務(wù)請求,最終達到終端,所述適合的網(wǎng)絡(luò)路徑通過強化學習中的Q學習方式獲取,其方法步驟為:
⑴在已構(gòu)建的虛擬網(wǎng)絡(luò)上設(shè)定若干個服務(wù)節(jié)點P,對應(yīng)每一個服務(wù)節(jié)點分配有相應(yīng)的帶寬資源B;
⑵將接收到的服務(wù)請求分列為可采取的動作a,根據(jù)ε-貪心(ε-greedy)策略嘗試選擇每一條可以到達終端的路徑,即將每一個動作a經(jīng)過相應(yīng)的服務(wù)節(jié)點P后完成服務(wù)請求;
⑶上述每一次嘗試均記錄下來,并且記錄相應(yīng)的消耗時間,以及執(zhí)行完成動作a后,每一服務(wù)節(jié)點P上的剩余帶寬資源B,匯總為Q值表,同時該Q值表內(nèi)的數(shù)據(jù)將被每一次的嘗試數(shù)據(jù)所更新;
⑷根據(jù)Q值表中的記錄數(shù)據(jù),找出路徑短,消耗時間少,占用帶寬資源少的路徑,即為適合的路徑。
所述步驟⑶中,在Q值表中設(shè)置一立即獎賞參數(shù)r,當執(zhí)行動作a消耗時間及占用的帶寬資源B越少,為立即獎賞參數(shù)r加入獎勵值,相反則為立即獎賞參數(shù)r減去懲罰值,根據(jù)立即獎賞參數(shù)r的數(shù)值大小,幫助ε-貪心(ε-greedy)策略選擇最有可能成為適合的路徑進行嘗試。
所述立即獎賞參數(shù)r=帶寬資源請求-帶寬資源+計算資源請求-計算資源-服務(wù)點間的路徑×路徑長短的權(quán)重n,當無執(zhí)行任務(wù)時,r=計算資源請求;當在計劃用時時間內(nèi),動作a的下一個執(zhí)行點是某一服務(wù)節(jié)點P而非終端時,r=r-1000;否則r=r+1000。
所述ε-貪心(ε-greedy)策略在與Q值表參數(shù)結(jié)合選擇路徑時,隨機選擇一個實數(shù)ε(0<ε<1)作為探索因子,計算得到所有可行動作的個數(shù)m,然后以ε/m的概率等概率地在可行動作集合中選擇一個可行動作,或者以1-ε的概率選擇,到當前為止情況下,Q值表中最大的Q值所對應(yīng)的動作;所述可行動作為:網(wǎng)絡(luò)可以滿足的動作,包括帶寬可以滿足轉(zhuǎn)發(fā)請求,計算資源可以滿足處理請求;即帶寬資源請求<帶寬資源,計算資源請求<計算資源。
所述路徑長短的權(quán)重n是確定路徑長短與資源耗費之間相對于立即獎賞參數(shù)r重要性的系數(shù),當路徑長短對整個立即獎賞參數(shù)r更為重要時,權(quán)重n值較大,相反則較小。
所述步驟⑷中根據(jù)Q值表中數(shù)據(jù)對路徑的選擇方式:本次Q值表與上一次Q值表數(shù)據(jù)相比較,如果相差很小,則認為Q值表中所有的Q值收斂,根據(jù)最大Q選擇相應(yīng)的具體動作a,選定該動作a對應(yīng)的網(wǎng)絡(luò)轉(zhuǎn)發(fā)路徑以及服務(wù)與路徑的映射關(guān)系,即為所述適合的路徑;否則,繼續(xù)根據(jù)ε-貪心(ε-greedy)策略嘗試選擇每一條可以到達終端的路徑。
參見圖1所示,具體的方法步驟如下:
(1)初始化Q值表中的Q值(用Q(s,a)標識,表示s狀態(tài)下,采用a動作的Q值),學習步長α,折扣因子γ,探索因子ε,跳數(shù)權(quán)重n,變化閾值ξ;(s:服務(wù)節(jié)點狀態(tài),a:動作,執(zhí)行的操作。)
⑵初始化狀態(tài)s等于Ps,t←0,Q1(s,a)←Q(s,a);(原終端表示服務(wù)請求的發(fā)起點)
⑶選擇動作a,根據(jù)Q值表以及ε-貪心(ε-greedy)策略;
⑷執(zhí)行動作a,得到立即獎賞。當轉(zhuǎn)發(fā)數(shù)據(jù),且下一個執(zhí)行點是某一服務(wù)節(jié)點而非終端時,r←C(vPi)-C(Pj)+B(vPi-1,vPi)-B(Pj-1,Pj)-L(Pj-1,Pj)×n-1000;當轉(zhuǎn)發(fā)數(shù)據(jù),且下一個執(zhí)行點是終端時,r←C(vPi)-C(Pj)+B(vPi-1,vPi)-B(Pj-1,Pj)-L(Pj-1,Pj)×n+1000;當不轉(zhuǎn)發(fā)數(shù)據(jù),且下一個執(zhí)行點是某一服務(wù)節(jié)點而非終端時,r←C(vPi)-1000;當不轉(zhuǎn)發(fā)數(shù)據(jù),且下一個執(zhí)行點是終端時,r←C(vPi)+1000;
⑸更新Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)-Q(s,a)];maxa′Q(s′,a′)是采取了動作a′,得到的所有可能的狀態(tài)s′,選擇其中Q(s′,a′)最大的那個Q值;
⑹s←s',t←t+1,下個狀態(tài)s′,當s不是服務(wù)終端Pd,并且t小于虛擬服務(wù)路徑長度k時,轉(zhuǎn)步驟(3);
⑺當Q值表中所有的Q1(s,a)-Q(s,a)的絕對值均小于ξ時,轉(zhuǎn)向步驟(8);否則,轉(zhuǎn)向步驟(2)。
(8)返回Q值表中最大的Q值對應(yīng)的動作。
狀態(tài)s表示數(shù)據(jù)包所處虛擬網(wǎng)絡(luò)節(jié)點如圖1中的Ps,Pb,Pd等,動作a表示數(shù)據(jù)包根據(jù)服務(wù)請求可以采取的動作,比如在已完成服務(wù)請求vP1的情況下,數(shù)據(jù)包在節(jié)點Pb處可以采取向其他節(jié)點傳輸數(shù)據(jù),也可以在Pb處完成下一個計算請求vP2。這樣強化學習中的Q學習方法就可以發(fā)現(xiàn)一個好的服務(wù)路線,同時發(fā)現(xiàn)一個好的服務(wù)請求到虛擬網(wǎng)絡(luò)的映射。
步驟(3)中,計算得到所有可行動作的個數(shù)m,然后在探索因子ε(0<ε<1)下以ε/m的概率等概率地在可行動作集合中選擇一個可行動作(可行動作:網(wǎng)絡(luò)可以滿足的動作,如帶寬可以滿足轉(zhuǎn)發(fā)請求,計算資源可以滿足處理請求;即帶寬請求B(vPi-1,vPi)<帶寬資源B(Pj-1,Pj),計算資源請求C(vPi)<計算資源C(Pj)),或者以1-ε的概率選擇最大的Q值所對應(yīng)的動作。
步驟(4)中,當采取向其他服務(wù)節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù)的動作時,立即獎賞r=帶寬請求B(vPi-1,vPi)-帶寬資源B(Pj-1,Pj)+計算資源請求C(vPi)-計算資源C(Pj)-兩個服務(wù)節(jié)點之間通信在物理層網(wǎng)路中轉(zhuǎn)發(fā)的跳數(shù)L(Pj-1,Pj)×n(其中n表示路徑長短的權(quán)重,這樣可以在資源耗費和轉(zhuǎn)發(fā)時間上做一個權(quán)衡,服務(wù)vPi映射到節(jié)點Pj);當不轉(zhuǎn)發(fā)數(shù)據(jù)計算數(shù)據(jù)時,r=計算資源請求C(vPi);當轉(zhuǎn)發(fā)數(shù)據(jù),且下一個執(zhí)行點是某一服務(wù)節(jié)點而非終端時,r←C(vPi)-C(Pj)+B(vPi-1,vPi)-B(Pj-1,Pj)-L(Pj-1,Pj)×n-1000;當轉(zhuǎn)發(fā)數(shù)據(jù),且下一個執(zhí)行點是終端時,r←C(vPi)-C(Pj)+B(vPi-1,vPi)-B(Pj-1,Pj)-L(Pj-1,Pj)×n+1000;當不轉(zhuǎn)發(fā)數(shù)據(jù),且下一個執(zhí)行點是某一服務(wù)節(jié)點而非終端時,r←C(vPi)-1000;當不轉(zhuǎn)發(fā)數(shù)據(jù),且下一個執(zhí)行點是終端時,r←C(vPi)+1000。強化學習中的Q學習的目標是最大化累計獎賞r,這樣強化學習中的Q學習找到路徑短的,耗費資源少的服務(wù)路徑。
步驟(5)中,Q值表示長期的累計獎賞,當它很大時,說明在狀態(tài)s的時候應(yīng)該采取a動作,并且該動作可以使得服務(wù)路徑可以很短,而且耗費更少地資源。
步驟(7)中,將這一輪Q值表格中的Q值與上一輪Q值表中的Q值相比,當變化不大時,說明Q值收斂,這樣我們就可以根據(jù)最大Q值選著具體的動作a,這也就確定了網(wǎng)絡(luò)轉(zhuǎn)發(fā)路徑以及服務(wù)與路徑的映射關(guān)系。