用于在軟件定義網(wǎng)絡(luò)中使應(yīng)用程序集群的方法和控制器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及用于在軟件定義網(wǎng)絡(luò)(software-defined network,SDN)中使應(yīng)用程序集群的一種方法和一種控制器。所述控制器具體來說是SDN控制器。本發(fā)明進(jìn)一步涉及一種用于集群的SDN應(yīng)用程序。具體來說,本發(fā)明提供一種用于連接和協(xié)調(diào)SDN控制器和至少一個(gè)應(yīng)用程序的集群機(jī)制的方法。
【背景技術(shù)】
[0002]在現(xiàn)有技術(shù)水平中,SDN是新興的網(wǎng)絡(luò)技術(shù),所述技術(shù)能夠通過將數(shù)據(jù)面從控制面解耦來簡化通信網(wǎng)絡(luò)。由此,通常通過SDN控制器提供控制面功能。SDN應(yīng)用程序可以用SDN控制器進(jìn)行注冊,并且可以在SDN控制器上運(yùn)行。SDN控制器可以進(jìn)一步提供多個(gè)SDN應(yīng)用程序的服務(wù)鏈,所述服務(wù)鏈接著依次在網(wǎng)絡(luò)流量上,即,在至少一個(gè)數(shù)據(jù)流上運(yùn)作。在基本SDN實(shí)施方案中,存在僅單個(gè)SDN控制器,所述SDN控制器具有注冊到其上并且在其上運(yùn)行的一個(gè)或多個(gè)SDN應(yīng)用程序。SDN控制器使用北向接口(north bound interface,NBI)連接到一個(gè)或多個(gè)SDN應(yīng)用程序。
[0003]然而,基本SDN實(shí)施方案在其需要擴(kuò)展時(shí)造成問題。舉例來說,SDN控制器可能需要被分布為多個(gè)控制器實(shí)例的集群?;蛘?,計(jì)算上密集的SDN應(yīng)用程序需要被分布為多個(gè)應(yīng)用程序?qū)嵗募骸.?dāng)前,現(xiàn)有技術(shù)水平提供SDN控制器和SDN應(yīng)用程序的分布機(jī)制,所述機(jī)制從彼此斷開連接,并且不以任何方式進(jìn)行協(xié)調(diào)。
[0004]圖la示出在現(xiàn)有技術(shù)水平中使用的第一典型方案,其中SDN控制器集群成多個(gè)控制器實(shí)例。然而,SDN應(yīng)用程序不與所述SDN控制器集群。因此,多個(gè)SDN應(yīng)用程序中的每一個(gè)最多可以在不同控制器實(shí)例上運(yùn)行。此方案尤其使多個(gè)應(yīng)用程序的服務(wù)鏈接極其復(fù)雜ο
[0005]圖lb示出在現(xiàn)有技術(shù)水平中使用的第二典型方案,其中SDN應(yīng)用程序集群成多個(gè)應(yīng)用程序?qū)嵗?。然而,SDN應(yīng)用程序必須仍使用專用的方法,并且必須仍連接到SDN控制器的單個(gè)控制器實(shí)例。
[0006]在現(xiàn)有技術(shù)水平中使用的上述方案的問題是控制器不針對應(yīng)用程序高可用性提供基礎(chǔ)設(shè)施。高可用性是系統(tǒng)設(shè)計(jì)方法和相關(guān)聯(lián)的服務(wù)實(shí)施方案,所述高可用性意圖確保特定水平的操作性能。具體來說,術(shù)語“可用性”是指用戶通過通過網(wǎng)絡(luò)獲得服務(wù)或者接入網(wǎng)絡(luò)的能力。如果網(wǎng)絡(luò)是不可接入的或者不可獲得服務(wù),那么應(yīng)用程序?qū)τ谟脩羰遣豢捎玫?。對于高可用性,網(wǎng)絡(luò),并且具體地說網(wǎng)絡(luò)的應(yīng)用程序,需要始終可用。
【發(fā)明內(nèi)容】
[0007]鑒于以上缺點(diǎn)和問題,本發(fā)明旨在改進(jìn)現(xiàn)有技術(shù)水平。具體來說,本發(fā)明的目的是為在SDN中的SDN控制器上運(yùn)行的應(yīng)用程序提供分布和高可用性基礎(chǔ)設(shè)施。具體來說,本發(fā)明旨在提高SDN中的應(yīng)用程序的可用性以及這些應(yīng)用程序的操作性能。本發(fā)明還具有提高SDN控制器的性能的目標(biāo)。同時(shí),本發(fā)明意圖將SDN的復(fù)雜度保持在最小。
[0008]本發(fā)明的上述目的通過所附獨(dú)立權(quán)利要求中提供的方案得以實(shí)現(xiàn)。本發(fā)明的核心理念是提供一種方案以連接SDN控制器和至少一個(gè)SDN應(yīng)用程序的分布(集群)機(jī)制并且將SDN控制器的分布(集群)機(jī)制協(xié)調(diào)成不同控制器實(shí)例且將至少一個(gè)SDN應(yīng)用程序的的分布(集群)機(jī)制協(xié)調(diào)成不同應(yīng)用程序?qū)嵗?。在相?yīng)從屬權(quán)利要求中進(jìn)一步定義本發(fā)明的有利的實(shí)施方案。根據(jù)所要求的方法、所要求的SDN控制器以及所要求的SDN應(yīng)用程序,可以大幅度改進(jìn)SDN的作為整體的性能和可用性以及在SDN上提供的服務(wù)。
[0009]本發(fā)明的第一方面提供一種用于在軟件定義網(wǎng)絡(luò)SDN中使應(yīng)用程序集群的方法,所述方法包括在SDN控制器中創(chuàng)建集群基礎(chǔ)設(shè)施,其中所述集群基礎(chǔ)設(shè)施是用于在SDN控制器的不同控制器實(shí)例之間共享和同步信息的模塊;在至少一個(gè)應(yīng)用程序與SDN控制器之間創(chuàng)建至少一個(gè)集群應(yīng)用編程接口,即集群API ;使用至少一個(gè)應(yīng)用程序API用不同控制器實(shí)例來注冊至少一個(gè)應(yīng)用程序的不同應(yīng)用程序?qū)嵗?;使用集群基礎(chǔ)設(shè)施來同步所有應(yīng)用程序?qū)嵗?br>[0010]通過本發(fā)明的方法,SDN控制器的和至少一個(gè)應(yīng)用程序的分布機(jī)制得以連接并協(xié)調(diào)。具體來說使用SDN控制器的集群基礎(chǔ)設(shè)施使得所述至少一個(gè)應(yīng)用程序能夠集群和分布。換句話說,應(yīng)用程序和SDN控制器兩者可以同時(shí)集群,并且集群后的應(yīng)用程序?qū)嵗坏萌窟B接到同一控制器實(shí)例,但是可以分布在不同控制器實(shí)例上以用于其到SDN控制器的注冊。因此,明顯降低服務(wù)鏈接的復(fù)雜度。
[0011]SDN控制器和至少一個(gè)應(yīng)用程序兩者可以舉例來說用任何界定的M:N的比率彼此獨(dú)立地向內(nèi)擴(kuò)展和/或向外擴(kuò)展,其中Μ和N是1或更大的自然數(shù)。向內(nèi)擴(kuò)展或向外擴(kuò)展對應(yīng)地可以包括在不同控制器實(shí)例上運(yùn)行的不同應(yīng)用程序?qū)嵗淖詣?dòng)負(fù)載均衡。借助于本發(fā)明的方法,提供用于應(yīng)用程序高可用性的基礎(chǔ)設(shè)施。
[0012]用本發(fā)明的方法進(jìn)一步可能的是多個(gè)應(yīng)用程序各自用不同控制器實(shí)例來注冊其不同應(yīng)用程序?qū)嵗T诖饲闆r下,每個(gè)應(yīng)用程序可以用不同的方式跨不同控制器實(shí)例分布。SDN控制器可以自動(dòng)地均衡在其不同控制器實(shí)例上的每個(gè)應(yīng)用程序的負(fù)載和/或可以自動(dòng)地均衡跨其不同控制器實(shí)例的多個(gè)應(yīng)用程序的整體負(fù)載。
[0013]在根據(jù)第一方面的方法的第一實(shí)施形式中,所述方法進(jìn)一步包括在SDN控制器中創(chuàng)建狀態(tài)表,其中使用集群基礎(chǔ)設(shè)施跨所有控制器實(shí)例共享所述狀態(tài)表;通過至少一個(gè)應(yīng)用程序?qū)⑵鋺?yīng)用程序狀態(tài)存儲于狀態(tài)表中;使用存儲于狀態(tài)表中的應(yīng)用程序狀態(tài)來同步所有應(yīng)用程序?qū)嵗?br>[0014]應(yīng)用程序狀態(tài)可以具有不同結(jié)構(gòu)和型式,并且可以包含但不限于例如以下信息:狀態(tài)機(jī)信息、流程表信息、緩沖區(qū)內(nèi)容等。應(yīng)用程序?qū)嵗梢怨蚕碓诠蚕頎顟B(tài)表中的所有應(yīng)用程序狀態(tài)并且因此其自身是完全無狀態(tài)的,或可以通過共享狀態(tài)表共享狀態(tài)的僅一部分并且因此是部分無狀態(tài)的。
[0015]在本發(fā)明中,至少一個(gè)應(yīng)用程序的狀態(tài)因此從至少一個(gè)應(yīng)用程序移動(dòng)到SDN控制器,由此使得SDN控制器能夠以簡單且高效的方式在其控制器實(shí)例上分布多個(gè)應(yīng)用程序?qū)嵗⑶夷軌騼?yōu)化多個(gè)應(yīng)用程序?qū)嵗谄淇刂破鲗?shí)例上的分布,例如,關(guān)于負(fù)載均衡。狀態(tài)表還使得SDN控制器能夠執(zhí)行個(gè)別應(yīng)用程序?qū)嵗母咝?,因此保證相應(yīng)的應(yīng)用程序的最優(yōu)性能。狀態(tài)表還可以允許不同應(yīng)用程序彼此共享舉例來說關(guān)于它們的狀態(tài)的信息,以便避免在不同應(yīng)用程序之間的干擾和/或支持使用協(xié)同作用。當(dāng)多個(gè)應(yīng)用程序由SDN控制器以服務(wù)鏈形式鏈接在一起時(shí),在不同應(yīng)用程序之間的信息共享是特別有利的。在服務(wù)鏈中,應(yīng)用程序可以在數(shù)據(jù)流上依次或并行運(yùn)作。
[0016]在根據(jù)第一方面的第一實(shí)施形式的方法的第二實(shí)施形式中,狀態(tài)表是高速數(shù)據(jù)存儲區(qū)和/或非結(jié)構(gòu)化數(shù)據(jù)存儲區(qū)。
[0017]具體來說,數(shù)據(jù)存儲區(qū)優(yōu)選地是不僅是結(jié)構(gòu)化查詢語言(Not only StructuredQuery Language, NoSQL)數(shù)據(jù)存儲區(qū),例如,鍵值存儲區(qū)。
[0018]在根據(jù)第一方面的第一實(shí)施形式的方法的第三實(shí)施形式中,狀態(tài)表是通過至少一個(gè)應(yīng)用程序構(gòu)造的數(shù)據(jù)存儲區(qū)。
[0019]在根據(jù)由此第一方面或根據(jù)第一方面的前述實(shí)施形式中的任一個(gè)的方法的第四實(shí)施形式中,狀態(tài)表通過至少一個(gè)集群API顯露給至少一個(gè)應(yīng)用程序。
[0020]至少一個(gè)集群API為各種應(yīng)用程序提供標(biāo)準(zhǔn)化接口。因此大幅度簡化應(yīng)用程序開發(fā)。至少一個(gè)集群API進(jìn)一步使得至少一個(gè)應(yīng)用程序和SDN控制器能夠?qū)?yīng)地發(fā)現(xiàn)彼此的分布的實(shí)例