隨著電子服務(例如,搜索服務、電子郵件服務、社交聯網服務、云計算服務,等等)繼續擴展,電子服務的提供商操作設備的網絡以提供電子服務。然而,由于個體網絡內的大量互連且依賴的設備,常常使提供商難以通過高效的且可靠的方式連續地操作網絡。例如,網絡內的交換機設備可能負責將消息從源設備傳遞到目的地設備并且可能不能夠在給定時刻傳遞消息,這是因為在該給定時刻,消息要經由交換機設備被傳遞時,維護并更新交換機設備的應用可能已經禁用了交換機設備的功能中的至少一些功能,例如使得它能夠接收固件更新。因此,網絡可能經歷可能影響網絡的效率和可靠性的中斷。
此外,多個應用可能試圖同時控制網絡設備的狀態,從而導致狀態沖突。例如,第一應用可能試圖通過交換機設備路由業務,同時第二應用試圖關閉交換機設備使得它能夠接收更新。
技術實現要素:
在此所描述的技術和/或系統實現了網絡管理服務,該網絡管理服務被配置為讀取和寫入針對各個應用(例如網絡管理應用)的網絡的狀態,使得應用能夠獨立地操作。網絡管理服務被配置為讀取觀測網絡狀態(例如,針對網絡的個體狀態變量的值),并且向應用提供觀測網絡狀態。隨后,網絡管理服務從應用接收建議網絡狀態,其中每個建議網絡狀態提議對狀態變量的期望值(例如,觀測值或當前值)的至少一個改變。網絡管理服務然后被配置為使用狀態依賴關系圖來確定在建議網絡狀態之間是否存在狀態沖突并且定義策略是否被建議網絡狀態違反。最后,網絡管理服務被配置為通過將遵守定義策略的非沖突的建議網絡狀態合并來生成目標網絡狀態,并且基于所生成的目標網絡狀態來更新(例如寫入)網絡狀態(例如,將網絡從觀測網絡狀態或當前網絡狀態改變到目標網絡狀態)。
提供本發明內容從而以簡化的形式介紹下面在具體實現中進一步描述的概念的選擇。本發明內容不旨在標識所要求保護的主題的關鍵特征或必要特征,也不旨在用于限制所要求保護的主題的范圍。
附圖說明
參考附圖呈現了具體實現。在附圖中,參考數字的最左邊的(一個或多個)數字標識該參考數字首次出現的附圖。在不同的附圖中對相同的參考數字的使用指示相似或相同的項。
圖1圖示了根據各個實施例的網絡管理服務的示例示圖,該網絡管理服務讀取網絡的觀測狀態、將觀測狀態提供給各個應用并且基于從各個應用接收到的建議狀態來確定針對網絡的目標狀態。
圖2圖示了根據各個實施例的單個設備內的、跨多個設備的并且針對通信路徑的示例狀態變量依賴關系。
圖3圖示了根據各個實施例的描述被配置為實現網絡管理設備的一個或多個設備的組件的示例環境。
圖4圖示了根據各個實施例的讀取觀測網絡狀態并且寫入目標網絡狀態的網絡管理服務的示例示圖。
圖5圖示了根據各個實施例的生成用于在檢測針對網絡的狀態沖突中使用的狀態依賴關系圖并且定義用于操作網絡的策略的示例過程。
圖6圖示了根據各個實施例的基于建議網絡狀態到目標網絡狀態中的合并來更新觀測網絡狀態或當前網絡狀態的示例過程。
圖7圖示了根據各個實施例的繼續生成并更新目標網絡狀態的示例過程。
具體實現
在此所描述的技術和/或系統實現了監視和管理網絡的網絡管理服務。網絡可以包括被配置為執行各種功能的各種類型的設備。網絡還可以包括在各設備之間的各種通信路徑。在此所描述的網絡管理服務使得應用(例如網絡管理應用)能夠獨立地操作。網絡管理服務被配置為讀取觀測網絡狀態并將觀測網絡狀態提供到應用。網絡管理服務還被配置為使用狀態依賴關系圖來確定在從應用接收到的建議網絡狀態之間是否存在狀態沖突。此外,網絡管理服務被配置為確定定義策略是否被建議網絡狀態違反。最后,網絡管理服務被配置為通過將遵守定義策略的非沖突的建議網絡狀態合并來生成目標網絡狀態,并且基于所生成的目標網絡狀態來更新(例如寫入)網絡狀態。因此,在此所描述的網絡管理服務使得網絡能夠安全地且高效地連續操作,這至少是因為避免了狀態沖突并且檢查了建議網絡狀態改變以確保它們遵守所定義的網絡策略。
如本文中所使用的,網絡的“狀態”依賴于網絡內的個體設備和/或個體通信路徑的狀態。因此,在此所描述的網絡管理服務被配置為觀測(例如讀取)、存儲并聚集網絡內的個體設備和/或個體通信路徑的狀態,使得能夠確定更廣泛的網絡的狀態。在各種實現中,個體設備或個體通信路徑可以具有一個或多個狀態變量,并且在任何給定時間,狀態變量可以是各個值中的任何一個值。
狀態變量被定義為可以具有能夠被讀取和/或寫入的值的設備或通信路徑的任何組件。例如,狀態變量可以為針對其能夠讀取觀測值并且能夠寫入目標值的設備的可控制組件。狀態變量可以為針對其能夠讀取觀測值但是不能夠寫入目標值的設備的不可控制組件(例如,應用可能想要獲知不可控制的或“只讀”的狀態變量的值以建議針對另一狀態變量的期望值)。狀態變量還可以與網絡的虛擬組件相關聯。
狀態變量還可以被稱為鍵值對,其中(i)鍵唯一地標識狀態變量和/或與狀態變量相關聯的特定設備或通信路徑,并且(ii)值標識針對狀態變量的可能值中的一個值。例如,設備可以包括指示設備是被供電還是被斷電的功率狀態變量。因此,針對功率狀態變量的第一值可以指示設備被供電,并且針對功率狀態變量的第二值可以指示設備被斷電。這些差異值能夠從設備被讀取(例如被觀測到)和/或被寫入到設備(例如,功率是設備的可控制組件使得網絡管理服務能夠將設備在被供電或被斷電之間進行切換)。因此,網絡的狀態是與網絡內的個體設備和/或個體通信路徑相關聯的狀態變量的匯集或聚集(例如,鍵值對的表)。
通常,各個應用單獨地訪問設備并且控制設備的狀態變量。例如,應用通常監視設備的狀態變量,基于監視來確定用于更新設備的時間,登錄到設備以控制狀態變量(例如,將狀態變量從觀測值或當前值改變為期望值)并且然后發出命令以更新設備。可以由負責管理并控制設備和/或設備為其部分的網絡的不同方面或功能的不同的獨立的開發者和/或實體創建和/或操作這些各個應用,使得設備和網絡有效地且可靠地操作(例如,網絡如其應當地執行)。實現對網絡中的設備的更新的應用通常沒有意識到更新由其他應用實現或將要實現在相同的設備上。因此,多個獨立操作的應用常常試圖同時控制相同設備的相同狀態變量。在許多實例中,由第一應用實現第一更新所要求的狀態變量值可能不利地影響由第二應用實現的第二更新。例如,第一更新可能要求狀態變量為第一值,同時第二更新可能要求狀態變量為與第一值不同的第二值。因此,出現狀態沖突并且該狀態沖突可能減弱網絡的效率和可靠性并且還使控制實現更新的應用的開發者和/或實體受挫敗。
作為說明性示例,假定業務工程應用想要創建通過網絡內的交換機設備的通信隧道,同時固件升級應用想要使相同的交換機設備升級。在許多實例中并且取決于哪個應用首先發起對交換機設備的動作,要么(i)業務工程應用未能創建通信隧道,這是因為交換機設備可能已經被關閉(例如,功率狀態變量指示交換機設備被斷電),使得固件升級應用能夠使交換機設備升級,要么(ii)在由固件升級應用使交換機設備斷電使得固件能夠被升級之后或時,已經由業務工程應用建立的通信隧道可能最終丟掉通信業務。
用于解決狀態沖突的傳統方法包括實現一種系統,其中應用與彼此進行協商并且提前關于針對在給定時間的設備的狀態變量的特定值達成一致使得能夠避免狀態沖突。然而,該傳統方法需要在每對應用之間的協調和通信,并且因此應用變得彼此依賴(例如,必須被編程為以共同的語言進行通信的緊耦合的應用)。此外,該傳統方法至少因為要求大量操作開銷而引起開發復雜性和可擴展性挑戰,使得每個應用能夠與許多其他應用進行協商,以關于針對狀態變量的特定值達成一致以避免沖突。例如,想要更新設備的應用可能需要將針對設備的狀態變量的期望值傳遞到數十或數百個其他應用,并且然后在將狀態變量從觀測值或當前值改變為期望實現更新的值之前從數十或數百個其他應用接收批準。
在此所描述的技術和/或系統實現一種共享的網絡管理服務,其實現用于使各個應用獨立地實現對網絡的狀態的改變的協同的且有組織的方法。共享的網絡管理服務承擔解決將狀態沖突遠離應用并確保避免狀態沖突的職責。這允許應用與彼此獨立地進行操作(例如,應用不必與其他應用進行通信和協商)并且解決以上提到的復雜性和可擴展性挑戰。此外,在此所描述的技術和/或系統減少了用于狀態沖突解決和策略檢查的延時。
如在此所討論的,網絡管理服務生成、維護并使用狀態依賴關系圖來檢測狀態沖突。狀態依賴關系圖捕獲和/或表示在各狀態變量之間的網絡特定(例如域特定)依賴關系。可以定義針對與網絡內的相同設備或相同通信路徑相關聯的兩個或更多個狀態變量的依賴關系。或者,可以定義在與第一設備或第一通信路徑相關聯的第一狀態變量和與第二設備或第二通信路徑相關聯的第二狀態變量之間的依賴關系。網絡管理服務訪問狀態依賴關系圖以確定存在狀態沖突(例如,檢測狀態沖突)并解決狀態沖突。
此外,網絡管理服務可以確保網絡在任何給定時間不違反策略(例如,不變量)。例如,策略可以為服務水平協議(SLA)或至少與服務水平協議(SLA)相關聯。服務水平協議可以為被建立并被強制執行以確保網絡以或高于可靠性和/或性能標準進行操作的網絡范圍服務水平協議。例如,服務水平協議可以被定義以確保網絡以或高于最小網絡連接性水平進行操作(例如,網絡中至少百分之九十的交換機設備需要在任何給定時間被供電)。因此,網絡管理服務審查定義策略并確保對網絡的狀態的任何改變(例如,對狀態變量的改變)不引起對定義策略的違反。
圖1圖示了包括管理網絡104的網絡管理服務102的示例示意圖100。網絡104可以包括各種設備106和通信路徑108。通信路徑108可以與將兩個設備進行連接的直接鏈路相關聯,或者可以包括將兩個設備進行連接的間接鏈路,其中業務經由被定位在兩個設備(例如,端點設備)之間的至少一個中間設備被傳遞。在一個實現中,通信路徑108可以包括通過兩個或更多個設備的通信隧道。
在各個實施例中,被管理的網絡104可以為大型生產網絡,例如數據中心網絡(DCN)、因特網服務提供商(ISP)網絡、企業網絡(例如,云服務)或可以在實體(例如,操作并維護執行網絡管理服務102的設備的實體)的控制下的任何其他管理域。設備106可以為物理網絡設備,例如交換設備(交換機)、路由設備(路由器)、網關設備(網關)、橋接設備(網絡橋接器)、集線器設備(網絡集線器)、防火墻設備、網絡地址轉換器設備(NAT)、多路復用設備(多路復用器)、無線接入點設備(WAP)、代理服務器設備、文件服務器設備、數據庫服務器設備、存儲設備,等等。設備106還可以為能夠連接到網絡104的終端用戶設備。例如,終端用戶設備可以包括移動設備或便攜式設備,例如智能電話、蜂窩電話、個人數字助理(PDA)、電子書設備、膝上型計算設備、平板計算設備、個人媒體播放器設備,等等。或者,終端用戶設備可以包括固定設備,例如臺式計算設備、游戲控制臺設備、數字視頻記錄設備(DVR)、機頂盒設備,等等。因此,網絡104可以包括被連接到彼此以包括域或管理網絡的數百或數千設備。
作為網絡104的管理和管束的一部分,網絡管理服務102被配置為監視并存儲觀測網絡狀態110(例如,讀取觀測網絡狀態110)。觀測網絡狀態110包括在給定時間構成網絡104的設備106和/或通信路徑108的狀態變量的值的匯集或聚集(例如,實時值、最近觀測值等)。例如,在給定時間的個體設備106可以被觀測以具有功率狀態變量,其中的第一值指示功率被打開或者第二值指示功率被關閉。
在讀取觀測網絡狀態110(例如,針對狀態變量的觀測值)之后,網絡管理服務102被配置為存儲觀測網絡狀態110和/或將觀測網絡狀態110或觀測網絡狀態110的至少部分(例如,針對指定狀態變量的值)提供(例如傳遞)到各個應用112(1)…112(N)。在一個實現中,應用112(1)…112(N)可以請求和/或訪問觀測網絡狀態110(例如,將觀測網絡狀態110從網絡管理服務102中“拉取”)。在另一實現中,網絡管理服務102可以將觀測網絡狀態110自動提供到應用112(1)…112(N)(例如,將觀測網絡狀態110“推送”到應用112(1)…112(N))。在其中網絡為大型生產網絡的實例中,應用的數量N可以是大的(例如,十個、五十個、一百個、一千個,等等)。
應用(例如,112(1)…112(N)之一)可以負責管理并控制網絡104的特定方面或功能,使得網絡104有效地且可靠地進行操作。因此,應用112(1)…112(N)可以是花費數年來設計、開發和部署在大型生產網絡中的高度復雜的應用。在各個實施例中,由個體應用(例如,112(1)…112(N)之一)管理和控制的網絡104的特定方面或功能可以與單個設備106和/或網絡的單個通信路徑108或者設備106的子集和/或網絡的通信路徑108的子集(例如,特定類型的設備,諸如網絡交換機設備)相關聯。因此,個體應用可以請求或者被提供有針對特定狀態變量的觀測狀態值,其與個體應用被配置為管理并控制的設備106和/或通信路徑108相關聯(例如,個體應用可能不需要理解針對網絡104的所有狀態變量的觀測狀態值)。
應用(例如,112(1)…112(N)之一)可以被分類為管理針對網絡104的設備106和/或通信路徑108的交換轉發規則的路由管理應用。例如,業務工程應用可以是路由管理應用,其被配置為操操縱不同的通信路徑108(例如通過/針對兩個或更多個設備106建立的通信隧道)的業務以改進網絡利用和/或確保滿足性能要求。在另一示例中,服務器負載平衡應用可以是路由管理應用,其等同地將通信負載(例如業務)跨設備(例如,處理針對數據的請求的服務器的組)進行劃分。
應用(例如,112(1)…112(N)之一)可以被分類為基礎設施管理應用,其管理網絡104的設備106和/或通信路徑108的網絡基礎設施。例如,功率管理應用可以是被配置為在任何給定時間打開或關閉交換設備以便緩和故障或節省能量的基礎設施管理應用。在另一示例中,交換機升級應用可以是負責將新的操作系統(即固件)安裝在交換機設備上的基礎設施管理應用。在又一示例中,配置管理應用可以為被配置為管理交換設備配置和通信路徑配置(例如,指定管理層,實現鏈路層發現協議(LLDP)、因特網協議(IP)分配,等等)的基礎設施管理應用。
以上描述的應用在本文中被提供為示例應用,并且可以預見到,被開發為控制網絡的方面或功能的其他應用還可以從本文檔中描述的技術和/或系統獲益。
在將觀測網絡狀態110或針對特定狀態變量的值提供到應用112(1)…112(N)然后,網絡管理服務102從應用112(1)…112(N)接收(一個或多個)建議網絡狀態114。應用(例如,112(1)…112(N)之一)可以期望對觀測網絡狀態110中的一個或多個狀態變量的值的特定改變(例如,以更新設備),并且因此,應用可以生成并傳遞提議特定改變(例如,將狀態變量的觀測值或當前值改變為狀態變量的期望值)的建議網絡狀態114。
網絡管理服務102然后被配置為將(一個或多個)建議網絡狀態114合并并且生成目標網絡狀態116。針對管理的網絡104的目標網絡狀態116基于從各個應用112(1)…112(N)統一接收到的(一個或多個)建議網絡狀態。目標網絡狀態116包括能夠被同時實現的并且不會導致狀態沖突或對定義網絡策略(例如服務水平協議)的違反的、對狀態變量的值的接受改變的組。網絡管理服務102可以訪問并使用以上討論的狀態依賴關系圖以確定在經由建議網絡狀態114提議的兩個或更多個改變之間是否存在沖突。網絡管理服務102還可以訪問定義策略并且確定經由建議網絡狀態114提議的改變是否導致策略違反。因此,網絡管理服務102可能必須在確定存在沖突或違反定義策略時拒絕經由建議網絡狀態114提議的一些改變。換言之,目標網絡狀態116可以不實現經由建議網絡狀態114接收的所有所提議的狀態變量改變。一旦目標網絡狀態116被生成,網絡管理服務102就啟動狀態變量的改變(例如,從先前觀測狀態值或當前值到期望值)。
因此,以上描述的并且在本文中進一步討論的網絡管理服務102被配置為使應用112(1)…112(N)免遭與控制和管理網絡104(例如,一個或多個設備106)相關聯的交互和/或必須理解在狀態變量之間的依賴關系。相反,網絡管理服務102處理交互并理解在狀態變量之間的依賴關系。因此,不要求應用112(1)…112(N)本身來實現讀取和/或寫入狀態變量的設備特定方法和/或協議特定方法。此外,由于網絡管理服務102不會使得應用112(1)…112(N)能夠直接地且單方面地控制被管理的網絡104中的設備106和/或通信路徑108,因此能夠檢測到狀態沖突,由此緩和網絡故障或減弱的網絡性能。
在各個實施例中,網絡管理服務102可以使用應用編程接口(API)與應用112(1)…112(N)對接。
圖2是圖示了針對單個設備的、跨多個設備的并且針對通信路徑的狀態變量依賴關系的示圖200。示圖200圖示了第一設備106(1)和第二設備106(2)以及將網絡104中的第一設備106(1)連接到第二設備106(2)的通信路徑108。如以上所討論的,通信路徑108可以是直接鏈路或間接鏈路。
網絡管理服務102被配置為觀測并存儲針對網絡中的設備106和通信路徑108定義的狀態變量的值(例如,鍵值對的表)。此外,網絡管理服務102當存儲值時可以將觀測值(例如,鍵值對)與指示何時觀測到針對狀態變量的值的時間戳相關聯。
第一設備106(1)可以與狀態變量202(1)…202(M)相關聯。第二設備106(2)可以與狀態變量204(1)…204(L)相關聯。通信路徑108可以與狀態變量206(1)…206(K)相關聯。在各個實施例中,與設備106(1)和106(2)相關聯的狀態變量可以被稱為物理狀態變量,并且與通信路徑108相關聯的狀態變量可以被稱為虛擬狀態變量,這是因為它們可以不是設備106的物理組件。相反,虛擬狀態變量可以為與關聯于設備的物理狀態變量有關的組件。網絡管理服務102可以被配置為基于關系來將虛擬狀態變量轉換為一個或多個物理狀態變量。
針對個體設備106(1)和106(2)的示例狀態變量包括但不限于以下中的一個或多個:設備功率狀態變量(例如,功率單元可達性狀態變量、管理功率狀況狀態變量,等等)、固件設置狀態變量(例如,固件版本狀態變量、啟動鏡像狀態變量,等等)、設備配置狀態變量(例如,管理接口設置狀態變量、布線狀況狀態變量,等等)、路由控制狀態變量(例如,流路由規則狀態變量、鏈路權重分配狀態變量,等等)以及設備計數器狀態變量(例如,CPU利用狀態變量、存儲器利用狀態變量,等等)。針對個體設備106(1)和106(2)的另一示例狀態變量可以與通信接口相關聯,并且可以包括但不限于以下中的一個或多個:接口功率狀態變量(例如,接口管理狀況狀態變量、接口操作狀況狀態變量,等等)、接口配置狀態變量(例如,IP分配狀態變量、啟動狀況狀態變量,等等)以及接口計數器狀態變量(例如,業務負載狀態變量、丟包率狀態變量,等等)。
針對個體通信路徑108的示例狀態變量可以包括但不限于設置和業務狀態變量(例如,標識通信路徑上的交換設備的狀態變量、多協議標簽交換(MPLS)隧道狀態變量,等等)。
由網絡管理服務102生成的狀態依賴關系圖基于在網絡104的狀態變量之間的所定義的依賴關系。因此,由網絡管理服務102用于檢測狀態沖突的狀態依賴關系圖可以定義依賴關系,使得個體狀態變量不能夠同時具有多個值(例如,交換設備不能夠同時被供電和斷電)。例如,當從第一應用接收到的建議網絡狀態請求或提議針對狀態變量的第一值同時從第二應用接收到的建議網絡狀態請求或提議針對相同狀態變量的與第一值不同的第二值時,狀態依賴關系圖可以用于檢測到出現狀態沖突。因此,依賴關系能夠相對于個體狀態變量被定義。
由網絡管理服務102用于檢測狀態沖突的狀態依賴關系圖還可以定義在多個狀態變量(例如,至少兩個狀態變量)之間的關系依賴關系。換言之,狀態變量的值是否是可改變的可以取決于一個或多個其他狀態變量的值。多個狀態變量可以與相同設備或相同通信路徑相關聯。例如,狀態變量202(1)的特定值可能與狀態變量202(2)的特定值沖突,或者狀態變量206(1)的特定值可能與狀態變量206(2)的特定值沖突。在一個示例中,針對設備配置狀態變量的特定值可以取決于固件版本狀態變量的特定值(例如,固件版本可能必須為針對設備配置狀態的特定值的最近升級的操作系統)。
多個狀態變量可以備選地與不同的設備或通信路徑相關聯。例如,圖2圖示了在與設備106(1)相關聯的狀態變量202(2)和與設備106(2)相關聯的狀態變量204(1)之間的所定義的依賴關系208。作為示例,針對設備106(1)的設備配置狀態變量(例如,狀態變量202(2))的特定值可以依賴于設備106(2)的功率狀態變量(例如,狀態變量204(1))值是否指示設備106(2)被供電。
在各個實施例中,網絡管理服務102基于層來構造狀態變量。例如,狀態變量202(1)可以為第一層210的一部分。狀態變量202(2)可以為第二層212的一部分。并且,狀態變量202(M)可以為第M層214的一部分(例如,其中M是整數值)。結構內定義的層可以基于狀態變量的類型或種類。在一個實現中,層210可以包括功率類型或功率種類的狀態變量,層212可以包括設備配置類型或設備配置種類的狀態變量,并且層214可以包括路由控制類型或路由控制種類的狀態變量。
由于應用(例如,應用112(1)…112(N)之一)可以負責控制并管理網絡的特定方面或功能,所以應用可以僅僅對理解并控制與網絡的特定方面或功能相關聯的少量狀態變量感興趣。因此,網絡管理服務102可以根據層來構造或組織狀態變量,使得應用能夠有效地獲得針對特定層內的狀態變量的觀測值。該特定層與應用正在管理和控制的網絡的特定方面或功能相關。繼續在前一段中的示例,功率管理應用可能僅僅想要接收并理解層210中的狀態變量的觀測值(例如,功率類型或功率種類的那些)。或者,業務工程應用可能僅僅想要接收并理解層214中的狀態變量的觀測值(例如,路由控制類型或路由控制種類的那些)。
圖3是示出了實現以上描述的網絡管理服務102的示例環境300的示圖。在各個實施例中,可以經由一個或多個設備302來實現網絡管理服務102。設備302可以包括固定設備,例如臺式計算設備、服務器計算設備,等等。設備302可以備選地包括移動設備或便攜式設備,例如膝上型計算設備、平板計算設備、智能電話設備、蜂窩電話設備、個人數字助理(PDA)設備、電子書設備,等等。
(一個或多個)設備302包括被配置為實現在此所描述的技術的網絡管理服務102。設備302可以個體地且單獨地包括一個或多個處理器304和存儲器306。(一個或多個)處理器304可以是單個處理器單元或多個單元,其中每個單元能夠包括多個不同的處理單元。(一個或多個)處理器304可以包括微處理器、微型計算機、微控制器、數字信號處理器、中央處理單元(CPU)、圖形處理單元(GPU)、安全性處理器,等等。備選地或附加地,能夠至少部分地由一個或多個硬件邏輯組件執行在此所描述的技術中的一些或全部。例如但非限制性的,能夠被使用的說明性類型的硬件邏輯組件包括現場可編程門陣列(FPGA)、專用集成電路(ASIC)、專用標準產品(ASSP)、狀態機、復雜可編程邏輯器件(CPLD)、其他邏輯電路、片上系統(SoC)和/或基于指令來執行操作的任何其他設備。在其他功能之中,(一個或多個)處理器304可以被配置為獲取并執行存儲在存儲器306中的計算機可讀指令。
存儲器306可以包括計算機可讀介質中的一個或組合。如本文中所使用的,“計算機可讀介質”包括計算機存儲介質和通信介質。
計算機存儲介質包括通過用于存儲信息(諸如計算機可讀指令、數據結構、程序模塊或其他數據)的任何方法或技術實現的易失性介質和非易失性介質、可移除介質和不可移除介質。計算機存儲介質包括但不限于相位變化存儲器(PRAM)、靜態隨機訪問存儲器(SRAM)、動態隨機訪問存儲器(DRAM)、其他類型的隨機訪問存儲器(RAM)、只讀存儲器(ROM)、電可擦可編程ROM(EEPROM)、閃存或其他存儲器技術、緊湊盤ROM(CD-ROM)、數字多用盤(DVD)或其他光學存儲、磁帶盒、磁帶、磁盤存儲或其他磁性存儲設備或能夠被用于存儲用于由設備訪問的信息的任何其他介質。
相反,通信介質包括計算機可讀指令、數據結構、程序模塊或諸如載波的經調制的數據信號中的其他數據。如本文中所限定的,計算機存儲介質不包括通信介質。
存儲器306可以包括被配置為管理設備內的并且耦合到設備的硬件和服務以有益于其他模塊、組件和設備的操作系統。在一些實例中,網絡管理服務102的至少一部分可以被實現在操作系統內,或者由操作系統實現。
網絡管理服務102包括監視模塊308、檢查模塊310和更新模塊312中的一個或多個。如本文中所使用的,術語“模塊”旨在表示為了討論的目的的軟件的示例劃分,并且不旨在表示任何類型的要求或所需要的方法、方式或組織。因此,盡管討論各種“模塊”,但是它們的功能和/或類似的功能能夠以不同方式來布置(例如,被組合成更少數量的模塊、被分解成更大數量的模塊,等等)。另外,盡管某些功能和模塊在本文中被描述為由可執行在跨一個或多個設備的一個或多個處理器的軟件和/或固件實現,但是在其他實施例中,模塊中的任何或全部可以整體地或部分地由硬件(例如,ASIC、專門的處理單元,等等)實現以執行所描述的功能。在其他實例中,功能和/或模塊被實現為設備驅動器、固件等的一部分。
監視模塊308被配置為讀取或觀測被管理的網絡104的當前網絡狀態或實際網絡狀態(即,觀測網絡狀態110)。如以上所討論的,觀測網絡狀態110包括在給定時間的針對被管理的網絡104的設備106和通信路徑108的各種狀態變量的值。在讀取狀態變量的值之后,監視模塊308被配置為將觀測值存儲在狀態變量存儲314中。例如,監視模塊308可以根據鍵值對(例如,鍵值對的表)來組織或構造狀態變量存儲314中的觀測值。通過存儲觀測網絡狀態110,針對狀態變量的最近觀測值能夠在觀測值由監視模塊308讀取之后的稍后時間被訪問。在一些實現中,可以根據設備106和/或通信路徑108以及狀態變量的類型或種類(例如,以上所討論的層)來分類鍵值對。
在各種實現中,監視模塊308可以被配置為根據定期排程(例如,每三十秒、每分鐘、每三分鐘、每十分鐘、每三十分鐘、每小時、每天的特定時間,等等)讀取設備106和通信路徑108的最新狀態變量值。在其他實現中,監視模塊308可以被配置為響應于特定事件而讀取設備106和通信路徑108的最新狀態變量值。例如,特定事件可以包括由來自操作網絡管理服務102的實體或由被管理的網絡104服務的實體(例如,企業實體)的代表(例如網絡管理員)發起的特定指令。在另一示例中,特定事件可以是網絡故障或網絡中斷。
在各個實施例中,監視模塊308使用各種協議讀取并收集針對狀態變量的值。例如,由監視模塊308用于讀取值的協議可以取決于設備106(例如,交換設備)的供應商或制造商和/或由設備106支持的物理技術(例如,簡單網絡管理協議(SNMP)、開放流通信協議等)。監視模塊308然后將協議特定數據轉換成要被存儲在狀態變量存儲314中和/或要被提供到應用112(1)…112(N)的狀態變量值。由于監視模塊308可以被配置為實現用于從不同設備(例如,由不同實體制造的設備)讀取狀態變量的值的不同協議,因此監視模塊308能夠使應用112(1)…112(N)免遭不同設備106的異構性質。換言之,監視模塊308可以通過統一格式對狀態變量值進行轉換并且將其永久地存儲,使得應用112(1)…112(N)不必知道或理解用于讀取和寫入狀態變量值的特定基礎設施技術和/或協議。
監視模塊308被進一步配置為將觀測狀態變量值提供到應用112(1)…112(N)。如以上所討論的,觀測狀態變量值的提供可以經由推送技術或拉取技術來實現。此外,應用可能僅僅想要理解,并且因此被提供有與其負責控制和管理的網絡功能或網絡方面有關的特定狀態變量值。因此,監視模塊308可以被配置為將特定狀態變量值提供到特定應用。例如,來自特定應用的拉取請求可以指示一個或多個鍵,該一個或多個鍵單獨地標識設備106的狀態變量或通信路徑108的狀態變量,并且監視模塊308提供針對響應于拉取請求而指示的一個或多個鍵的觀測值。在另一示例中,監視模塊308可以被配置有意識到哪個狀態變量值與特定應用有關的邏輯,并且因此,監視模塊308可以根據排程(例如,定期排程)或響應于特定時間自動將特定狀態變量值推送到特定應用。因此,監視模塊308可以被配置為對應用112(1)…112(N)可用的中間接口,使得應用能夠讀取狀態變量的觀測值。
在接收到觀測網絡狀態110(例如,一個或多個觀測值)之后,應用112(1)…112(N)確定是否提議對觀測值的改變。例如,應用可以確定觀測值需要被改變使得應用能夠更新設備106上的固件。因此,應用112(1)…112(N)被單獨地配置為生成一個或多個建議網絡狀態114并將其返回到網絡管理服務102。在各個實施例中,由應用(例如,應用112(1)…112(N)之一)生成和提供的每個建議網絡狀態114可以提議狀態變量從觀測值到期望值的單個改變。因此,單個應用可以確定需要多個值改變,并且因此,單個應用可以提供多個建議網絡狀態114。在其他實施例中,由應用(例如,應用112(1)…112(N)之一)生成和提供的個體建議網絡狀態114可以提議對多個相應的觀測值的多個改變。
在各個實施例中,檢查模塊310被配置為從應用112(1)…112(N)接收建議網絡狀態114和/或將所提議的改變(例如,狀態變量的期望值)存儲在狀態變量存儲314中,使得檢查模塊310能夠開始確定是否存在狀態沖突或者是否違反定義策略。
在接收到建議網絡狀態114之后,檢查模塊310被配置為生成目標網絡狀態116。檢查模塊310通過檢測并移除建議網絡狀態114之間的沖突來生成目標網絡狀態116。例如,如果在兩個或更多個建議網絡狀態之間檢測到沖突,則檢查模塊310被配置為接受一個建議網絡狀態并拒絕與所接受的建議網絡狀態沖突的至少一個其他建議網絡狀態。作為示例,檢查模塊310可以在第一建議網絡狀態和第二建議網絡狀態(例如,至少兩個建議網絡狀態)提議同時(例如,同時地)將狀態變量改變為不同值時檢測到存在沖突。在另一示例中,檢查模塊310可以在第一建議網絡狀態提議對第一狀態變量的第一期望值并且第二建議網絡狀態表提議對與第一狀態變量不同的第二狀態變量的第二期望值時檢測到存在沖突,其中第一期望值和第二期望值是不兼容的(例如,基于所定義的依賴關系)。
檢查模塊310通過使用例如被存儲在狀態依賴關系圖存儲庫316中的狀態依賴關系圖來確定是否存在沖突。如以上所討論的,狀態依賴關系圖定義狀態變量之間的依賴關系(例如,第一狀態變量的特定值可以取決于第二狀態變量的特定值)。因此,檢查模塊310訪問狀態依賴關系圖以確定是否存在沖突。
在各個實施例中,網絡管理服務102可以基于層(例如,在各層之間)來定義例如狀態依賴關系圖內的依賴關系。例如,參考回到圖2,狀態變量202(1)可以為多層依賴關系層次結構中的頂層210的部分。狀態變量202(2)可以為多層依賴關系層次結構中的中間層212的部分,其中中間層212中的狀態變量取決于頂層210中的一個或多個狀態變量的至少一個值。并且,狀態變量202(M)可以為多層依賴關系層次結構中的底層214的部分,其中底層214中的狀態變量取決于中間層212中的一個或多個狀態變量的至少一個值。在上下文中,應當理解,網絡管理服務102能夠生成狀態依賴關系圖,使得其包括任何數量(例如,兩個、四個、六個、八個,等等)的層。
網絡管理服務102可以使用多層依賴關系層次結構來有效地確定是否存在狀態沖突。例如,如果頂層210中的功率狀態變量指示設備被斷電,則較低層的狀態變量(諸如中間層212(例如,設備配置類型狀態變量)和底層214(例如,路由控制類型狀態變量))中的大多數(即便不是全部)可能是無效的或空的,這至少是因為設備被關閉并且不進行操作,由此消除應用控制和/或管理可能需要功率的較低層狀態變量的可能性。換言之,如果功率狀態變量指示設備的功率被關閉,則檢查模塊可以有效地拒絕與設備的較低層狀態變量相關聯的建議網絡狀態。或者,在一些實例中,可以通知應用功率狀態變量指示設備的功率被關閉,并且因此,應用可以甚至不建議和/或提議對較低層狀態變量的改變,這是因為設備被關閉。
在各個實施例中,檢查模塊310使用示例上次寫入成功機制(還被稱為上次提交)或示例鎖定機制來解決檢測到的沖突(例如,選擇建議網絡狀態以接受)。使用上次寫入成功機制,檢查模塊310被配置為基于例如何時接收到建議網絡狀態的時間來接受對狀態變量的所提議的改變。例如,如果檢查模塊310檢查到在兩個建議網絡狀態之間存在沖突,則檢查模塊310接受或選擇更近(即,較新)接收到的建議網絡狀態,而不是在較新的建議網絡狀態之前被接收到的較老的建議網絡狀態。
使用鎖定機制,檢查模塊310使得應用能夠在提供建議網絡狀態之前排他性地鎖定狀態變量。檢查模塊310還可以使得應用能夠在提供建議網絡狀態之前排他性地鎖定設備106或通信路徑108,該建議網絡狀態可能影響與被鎖定的設備106或被鎖定的通信路徑108相關聯的多個狀態變量。一旦設備、通信路徑和/或狀態變量(例如,經由鎖定特定狀態變量、設備106或通信路徑108的指令)被鎖定,檢查模塊310將不接受來自除了發起鎖定的一個或多個應用(例如,鎖定保持應用)之外的應用的狀態變量改變。換言之,檢查模塊310在建議的應用不是鎖定保持應用的情況下拒絕與鎖相關聯的建議網絡狀態。
在附加的實施例中,檢查模塊310使用基于優先級的機制來解決檢測到的沖突(例如,選擇建議網絡狀態以接受)。例如,檢查模塊310可以確定第一應用負責控制和管理可能比由另一應用控制和管理的不同網絡功能更重要和/或更有價值的網絡功能(例如,網絡的操作在很大程度上取決于網絡功能)。因此,檢查模塊310可以訪問指示一個應用具有超過另一應用的優先級的排序的或加權的應用列表。在一些實現中,優先級可以指示被控制或管理的特定網絡功能具有超過另一網絡功能的優先級。
可以由操作網絡管理服務102的實體、網絡裝備(例如,設備)的制造商或生產商、管理和控制網絡功能或網絡方面的應用(例如,應用112(1)…112(N)之一)的開發者、或由網絡服務的實體中的一個或多個來定義狀態變量和/或在狀態變量之間的依賴關系。因此,被存儲在狀態依賴關系圖存儲庫316中并且可由檢查模塊310訪問的以確定在兩個建議網絡狀態之間是否存在沖突的狀態依賴關系圖可以不斷演變和/或被更新。例如,特定狀態變量可以被新引入到狀態依賴關系圖或從狀態依賴關系圖被移除。或者,在兩個狀態變量之間的依賴關系可以被新引入到狀態依賴關系圖或從狀態依賴關系圖被移除。
檢查模塊310還通過確定定義策略是否被目標網絡狀態116違反或通過將兩個或更多個建議網絡狀態114合并來生成目標網絡狀態116。因此,檢查模塊310被配置為訪問并評價策略存儲庫318以確保目標網絡狀態116不違反任何所定義的策略(例如,免于策略違反)。通過強制執行策略,網絡管理服務102能夠確保緩和或限制由應用(例如,行為不當的應用)造成的網絡故障。例如,在將非沖突的建議網絡狀態合并以生成目標網絡狀態116之后,檢查模塊310可以確定目標網絡狀態116是否違反一個或多個服務水平協議(SLA)。在一個實現中,SLA可以定義確保網絡以以下或高于以下進行操作的策略:(i)最小網絡容量水平和/或(ii)用于確保網絡拓撲結構保持被連接的最小可達性水平,使得托管由網絡提供的服務的設備能夠繼續有效地進行操作(例如,幸免于交換設備的任何單個故障)。
第一示例SLA可以被定義以確保網絡104不被劃分。該示例SLA涉及網絡(例如,DCN)的拓撲結構特性并且可以與架頂(ToR)交換機的連接相關聯。具體地,該示例SLA可能要求任何ToR交換機能夠基于物理網絡拓撲結構到達相同網絡中的任何其他ToR。該示例SLA還可能要求任何ToR交換機能夠連接到其網絡內的邊界路由器,由此指示ToR交換機具有廣域網(WAN)可達性。
第二示例SLA可以被定義以確保兩個設備(例如,ToR交換機)之間的容量。因此,該示例SLA可以確保從網絡內的第一ToR交換機到第二ToR交換機的容量滿足最大業務體積。檢查模塊310可以計算ToR交換機對的當前容量,并且將所計算的當前容量與針對所設計的網絡拓撲結構計算的原始容量進行比較。該示例SLA可以被定義以確保網絡內的ToR交換機對的最小百分比p(例如,百分之九十、百分之九十五,等等)具有至少原始容量的預定閾值t(例如,百分之五十、百分之六十,等等)。參數p和t是可配置的,并且可以由網絡管理服務102、應用(例如,112(1)…112(N)之一)或另一實體設定。例如,參數可以根據平衡因子來設定,平衡因子包括冗余量,網絡可能具有用于容忍容量丟失和/或由網絡托管的服務的業務行為的冗余量。
在各個實施例中,策略可以被實現為在網絡的網絡圖數據結構上的函數。網絡圖數據結構可以包含網絡拓撲結構,并且函數可以返回指示目標網絡狀態116和/或非沖突的合并的建議網絡狀態是否違反定義策略的布爾結果。
與狀態變量和/或依賴關系相似,還可以由操作網絡管理服務102的實體、網絡裝備(例如,設備106)的制造商或生產商、管理和控制網絡功能或網絡方面的應用(例如,應用112(1)…112(N)之一)的開發者、或由網絡服務的實體中的一個或多個來定義策略。因此,被存儲在策略存儲318中并且可由檢查模塊310訪問的、用于確定是否違反策略的策略可以不斷演變和/或被更新。
更新模塊312被配置為根據目標網絡狀態116來更新被管理的網絡。因此,更新模塊312可以確定或計算在觀測網絡狀態110與目標網絡狀態116之間的(一個或多個)差異,并且基于所確定的和/或所計算的差異來生成用于應用到網絡的特定命令(例如,設備特定命令)。例如,更新模塊312可以維持包含針對(例如,基于制造商和/或供應商的)特定類型的交換設備的個體更新動作的命令模板的命令池,其中更新動作可以由各種控制協議(例如,特定供應商API、開放流等)支持。更新模塊312可以被配置為將命令模板定位在命令池中,使得命令能夠被生成以正確地實現對狀態變量的更新。因此,更新模塊312被配置為代表應用112(1)…112(N)發布更新命令,使得應用不必理解更新各種設備的異構性質。換言之,由應用(即,建議網絡狀態114)建議的網絡改變可以是通用的并且不需要指定用于將當前狀態變量值改變為期望狀態變量值的特定硬件命令。
在各個實施例中,更新模塊312可以根據排程并基于目標網絡狀態116來實現改變。例如,更新模塊312可以生成最終目標網絡狀態116并且開始根據定期排程(例如,每分鐘、每三分鐘、每十分鐘、每小時、每三個小時、每天,等等)來實現改變。在各個實施例中,更新模塊312可以不斷地將網絡從當前網絡狀態(例如,觀測網絡狀態110)移動到目標網絡狀態116(例如,直到實現目標網絡狀態116的收斂)。因此,更新模塊312可以繼續基于不斷地演變并且被更新的目標網絡狀態116來更新網絡。
在各個實施例中,設備302包括一個或多個通信單元320。(一個或多個)通信單元320可以被配置為促進到一個或多個網絡(例如,網絡104)、由各種服務或內容提供商操作的應用112(1)…112(N)、和/或其他設備的有線連接和/或無線連接。因此,(一個或多個)通信單元320可以實現各種通信或網絡連接協議中的一個或多個。
圖4圖示了讀取和寫入網絡狀態的網絡管理服務102的示例示圖。例如,在給定時間,監視模塊308讀取并收集狀態變量值以聚集被管理的網絡104的觀測網絡狀態110。觀測網絡狀態110的至少部分(例如,一個或多個特定狀態變量值)被提供到個體應用(例如,應用112(1)…112(N)中的每個應用)。個體應用評價觀測網絡狀態并提交指定對狀態變量的至少一個改變的建議網絡狀態114。例如,應用112(1)可以提交提議改變第一狀態變量的值SV 1(例如,來自圖2的狀態變量202(2))的建議網絡狀態402(1)。應用112(2)可以提交提議改變第二狀態變量的值SV 2(例如,來自圖2的狀態變量202(1))的建議網絡狀態402(2)。應用112(3)也可以提交提議改變第二狀態變量的值SV 2的建議網絡狀態402(3)。并且應用112(N)可以提交提議改變第三狀態變量的值SV 3(例如,來自圖2的狀態變量204(1))的建議網絡狀態402(N)。
如以上所討論的,檢查模塊310被配置為接收建議網絡狀態并確定在建議網絡狀態402(2)與402(3)之間存在沖突,這是因為應用112(2)和112(3)中的每個應用可能正提議狀態變量202(1)被改變為不同值。因此,檢查模塊310可能由于檢測到的沖突而選擇并接受建議網絡狀態402(2)和402(3)中的一個建議網絡狀態,并且相反地,拒絕另一建議網絡狀態。如以上所討論的,選擇可以基于上次寫入成功機制、鎖定機制或基于優先級的機制來做出。因此,圖4示出了檢查模塊310選擇并接受建議網絡狀態402(2),并且將所接受的建議網絡狀態402(2)與包括目標網絡狀態116的其他非沖突的建議網絡狀態合并。相反地,檢查模塊310拒絕建議網絡狀態402(3)。
類似地,檢查模塊310被配置為確定在建議網絡狀態402(1)與402(N)之間存在沖突,這是因為例如,如由圖2中的依賴關系208定義的,由應用112(1)提議的狀態變量202(2)的期望值可能與由應用112(N)提議的狀態變量204(1)的期望值不兼容。因此,檢查模塊310可能由于檢測到的沖突而選擇并接受建議網絡狀態402(1)和402(N)中的一個建議網絡狀態,并且相反地,拒絕另一建議網絡狀態。圖4示出了檢查模塊310選擇并接受建議網絡狀態402(N),并且將所接受的建議網絡狀態402(N)與包括目標網絡狀態116的其他非沖突的建議網絡狀態合并。相反地,檢查模塊310拒絕建議網絡狀態402(1)。
在一些實現中,檢查模塊310被配置為將建議網絡狀態的接受或拒絕傳遞到應用,使得應用意識到它們所提議的改變是否能夠被實現在網絡上。檢查模塊310可以附加地或備選地存儲建議網絡狀態是被接受還是被拒絕的指示,使得應用112(1)…112(N)能夠獲知建議網絡狀態的接受或拒絕和/或對其做出反應。例如,檢查模塊310可以將指示以下的狀態條目存儲在例如狀態變量存儲314中:建議網絡狀態、提交了建議網絡狀態的應用、和/或建議網絡狀態被接受或被拒絕的原因。
更新模塊312然后被配置為確定在觀測網絡狀態與目標網絡狀態116之間的差異并且更新被管理的網絡104,使得狀態從觀測網絡狀態改變為目標網絡狀態116。在各個實施例中,由更新模塊312用于確定差異的觀測網絡狀態是被提供到應用112(1)…112(N)的相同的觀測網絡狀態110。在其中在觀測網絡狀態110被初始地提供到應用112(1)…112(N)之后已經改變網絡的狀態的情況中,由更新模塊312用于確定差異的觀測網絡狀態可以是包括可以與被提供到應用112(1)…112(N)的中包含的那些狀態變量不同的一個或多個狀態變量的最近觀測網絡。換言之,在將觀測網絡狀態110提供到應用112(1)…112(N)之后并且在檢查模塊310正在生成目標網絡狀態116的同時,監視模塊308可能已經讀取了針對一個或多個狀態變量的更新值。
圖5圖示了被描繪為邏輯流程圖的示例過程,其表示能夠采用硬件、軟件、固件或其組合實現的操作的序列。在軟件的背景下,操作表示計算機可執行指令,計算機可執行指令當由一個或多個處理器執行時,將計算設備配置為執行所記載的操作。總體上,計算機可執行指令包括將計算設備配置為執行特定任務或實現特定抽象數據類型的例程、程序、對象、組件、數據結構,等等。在一些實施例中,操作中的任何或全部可以整體地或部分地由硬件(例如,ASIC、專門的處理單元等)實現以執行所描述的功能。在一些實例中,功能和/或模塊被實現為操作系統的部分。在其他實例中,功能和/或模塊被實現為設備驅動器、固件等的一部分。
操作被描述的順序不旨在被理解為限制,并且任何數目的所描述的操作能夠以任何順序和/或并行地組合以實現過程。
圖5圖示了生成針對網絡的狀態依賴關系圖并且定義用于操作網絡的策略的示例過程500。可以參考圖1-4中的任一附圖中所圖示的模塊、組件和/或元件描述圖5中的示例操作。
在502處,網絡管理服務102被配置為定義針對網絡的狀態變量并接收狀態變量定義。可以由管理網絡(例如,應用112(1)…112(N))的應用、由網絡裝備(例如,設備106)的供應商或制造商、和/或由網絡管理服務102定義狀態變量。
在504處,網絡管理服務102被配置為定義狀態變量之間的依賴關系。還可以由管理網絡(例如,應用112(1)…112(N))的應用、由網絡裝備(例如,設備106)的供應商或制造商、和/或由網絡管理服務102定義依賴關系。例如,可能想要建議設備配置狀態變量從第一配置(例如,第一值)改變為第二配置(例如,第二值)的設備配置控制應用可以理解設備的第二配置取決于固件版本狀態變量的特定值(例如,需要設備運行新的操作系統,而非較舊的操作系統)。依賴關系還可以針對個體狀態變量被定義(例如,狀態變量可能不會同時具有兩個不同的值)。
在506處,網絡管理服務102被配置為生成針對網絡的狀態依賴關系圖。基于在操作504中定義的依賴關系來生成狀態依賴關系圖,以確保能夠在更新網絡之前檢測到并解決狀態沖突。因此,網絡的效率和可靠性得到改進,例如至少因為兩個或更多個獨立操作的應用不能夠試圖(i)同時控制(例如,直接寫入)相同的狀態變量(例如,將狀態變量設置為兩個或更多個不同的值)以及(ii)將兩個或更多個狀態變量改變為可能不兼容的和/或損害網絡的值。
在508處,網絡管理服務102被配置為定義用于操作網絡的策略。再次,可以由管理網絡的應用(例如,應用112(1)…112(N))、由網絡裝備(例如,設備106)的供應商或制造商、由網絡管理服務102(例如,管理網絡的實體)、和/或由被網絡服務的實體(例如,公司、教育機構、非盈利組織,等等)定義策略。在各個實施例中,策略可以是被建立以確保網絡(例如,針對客戶)以或高于服務的最低水平進行操作的服務水平協議。
在510處,網絡管理服務102被配置為示意所生成的狀態依賴關系圖和定義策略來管理網絡。例如,所生成的狀態依賴關系圖被用于確保避免在建議網絡狀態之間的狀態沖突,并且定義策略被用于確保網絡性能不會落入服務的最低水平以下。
示例過程500可以被實現為進行中的網絡管理和維護任務的一部分。因此,狀態變量、依賴關系和/或策略可以繼續在一時間段內被定義和被更新,并且進而狀態依賴關系圖也可以被更新。示例過程500還可以被實現為網絡的初始建立(例如,用于執行服務的管理網絡的構建)的一部分。
圖6圖示了基于對建議網絡狀態到目標網絡狀態中的合并來更新當前網絡狀態的示例過程600。可以參考圖1-5中的任一附圖中所圖示的模塊、組件、元件和/或操作來描述圖6中的示例操作。
在602處,監視模塊308讀取觀測網絡狀態110。如以上所討論的,監視模塊308可以讀取針對包括網絡狀態的各種狀態變量的當前值,并且然后將所讀取的值(例如,作為鍵值對)存儲在狀態變量存儲庫314中。
在604處,監視模塊308將觀測網絡狀態110的至少一部分提供給個體應用(例如,應用112(1)…112(N))。例如,監視模塊308可以經由推送技術將一個或多個狀態變量值提供給特定應用,向特定應用提供的狀態變量值與由特定應用管理和控制的網絡功能和/或網絡方面有關。在另一示例中,監視模塊308可以響應于接收到對于一個或多個狀態變量值的請求(例如,拉取請求)而將一個或多個狀態變量值提供到特定應用。
在606處,檢查模塊310從應用接收建議網絡狀態。個體建議網絡狀態提議對觀測網絡狀態110的改變,改變指示狀態變量從觀測值改變為期望值。如以上所討論的,要被改變的觀測值可以是被傳遞到特定應用的觀測值,或者可以是在值在將觀測值提供到特定應用與從特定應用接收建議網絡狀態之間被更新或被改變的情況下由監視模塊308讀取和存儲的更新后的觀測值。
在608處,檢查模塊310使用狀態依賴關系圖將接收到的建議網絡狀態的子集合并到目標網絡狀態中。因此,被合并到目標網絡狀態中的建議網絡狀態避免了狀態沖突并且因此是非沖突的建議網絡狀態。如果檢查模塊310在兩個或更多個建議網絡狀態之間檢測到沖突,則檢查模塊可以選擇并接受一個建議網絡狀態并拒絕其他建議網絡狀態。在各個實施例中,可以基于上次寫入成功機制、鎖定機制或基于優先級的機制來做出選擇。
在各種實現中,檢查模塊310可以基于根據多層層次結構構造的狀態依賴關系圖來確定是否能夠寫入狀態變量和/或是否存在沖突。使用多層層次結構,檢查模塊310能夠在將建議網絡狀態合并時是更有效的。例如,多層狀態依賴關系圖的頂層可以包括設備106的功率狀態變量。如果功率狀態變量具有指示功率被關閉的值,則比功率狀態變量層更低的層中的其他狀態變量可能是無效的或空的,這是因為不存在功率。因此,與這些較低的層相關聯的任何建議網絡狀態可能在功率被關閉時被拒絕。如果功率被恰當地提供到設備106(例如,功率狀態變量具有指示功率被打開的值),則網絡管理服務102能夠然后移動到多層層次結構中的下一層并且控制設備固件狀態變量,使得設備執行特定固件。繼續該示例,設備固件狀態變量可以為用于管理作為多層層次結構中的下一層的部分的設備配置狀態變量的先決條件。一旦設備配置狀態被設定為特定值,網絡管理服務102就能夠管理路由控制狀態變量。因此,檢查模塊310可以基于針對多層狀態依賴關系圖建立的依賴關系的理解來接受和/或拒絕建議網絡狀態。
在610處,檢查模塊310確定目標網絡狀態是否違反定義策略。在各個實施例中,在每次建議網絡狀態被添加到包括已經被合并的非沖突的建議網絡狀態的目標網絡狀態(例如,目標網絡狀態尚未完成并且容易由更新模塊312寫入到網絡)或與包括已經被合并的非沖突的建議網絡狀態的目標網絡狀態合并時,檢查模塊310可以執行該確定。在各個實施例中,檢查模塊310可以在目標網絡狀態完成并且容易由更新模塊312寫入到網絡之后執行該確定。
在612處,在各個實施例中,檢查模塊310可以更新目標網絡狀態,使得其遵守定義策略。例如,如果在操作610處確定違反,則檢查模塊310可以將一個或多個非沖突的建議網絡狀態從目標網絡狀態移除,以解決違反并且確保目標網絡狀態遵守定義策略。
在614處,更新模塊312將網絡的狀態改變為目標網絡狀態(例如,將被傳遞到應用的觀測網絡狀態轉變為目標網絡狀態,將更新后的或最近的觀測網絡狀態改變為目標網絡狀態)。例如,更新模塊312可以確定在當前網絡狀態與目標網絡狀態之間的差異,基于差異來生成命令,并且然后向網絡的設備106發布命令(例如,寫入改變),使得狀態變量能夠從由網絡管理服務觀測到的當前值改變為由應用期望的值。
圖7圖示了繼續生成并更新目標網絡狀態的示例過程700。可以參考圖1-6中的任一附圖中所圖示的模塊、組件、元件和/或操作進行描述圖7中的示例操作。
在702處,檢查模塊310被提供有建議網絡狀態。所提供的建議網絡狀態可以為響應于最近觀測網絡狀態的讀取、存儲和提供而從各個應用接收到的建議網絡狀態中的一個建議網絡狀態。
704內的個體操作中的一個或多個然后被執行以確定所提供的建議網絡狀態是否要被合并到目標網絡狀態中。可以通過訪問狀態依賴關系圖和/或定義策略來執行704中的個體操作。在704(A)處,檢查模塊310確定在所提供的建議網絡狀態與最近觀測網絡狀態之間是否存在狀態沖突。在一些實例中,最近觀測網絡狀態可以為被提供到應用的觀測網絡狀態。在一些實例中,最近觀測網絡狀態可以與被提供到應用的觀測網絡狀態不同。因此,一些狀態變量和/或狀態變量值可能不再是有意義的。
例如,監視模塊308可能已經初始地讀取了設備被供電并將此傳遞到應用。作為響應,應用可以提交提議對針對固件版本狀態變量的值的改變的建議網絡狀態。然而,用于被供電的設備的功率可能已經被關閉使得,因此能夠例如被修復。因此,在提議對針對固件版本狀態變量的值的改變的建議網絡狀態由檢查模塊310接收并處理時,觀測網絡狀態已經改變。由于功率被關閉并且固件版本狀態變量依賴于功率狀態變量,因此固件版本狀態變量是暫時不可控制的狀態變量(例如,直到設備的功率被重新打開)。在該示例中,建議網絡狀態被檢查模塊310拒絕。
在704(B)處,檢查模塊310確定在所提供的建議網絡狀態與目標網絡狀態之間是否存在狀態沖突。在最終目標網絡狀態準備好由更新模塊310寫入到網絡之前,目標網絡狀態可以包括先前已經由檢查模塊310接受并且被合并到目標網絡狀態中的非沖突的建議網絡狀態。因此,檢查模塊310可以執行在所提供的建議網絡狀態與已經被合并到目標網絡狀態中的每個非沖突的建議網絡狀態之間的檢查以檢測狀態沖突。
在704(C)處,檢查模塊310確定將所提供的建議網絡狀態合并到目標網絡狀態中是否導致策略違反。
在決策框706處,檢查模塊310確定是否檢測到來自操作704(A)或操作704(B)的沖突或者是否檢測到來自操作704(C)的策略違反。如果對判斷框706的回答是“否”,則在708處檢查模塊310接受所提供的建議網絡狀態并將所提供的建議網絡狀態合并到目標網絡狀態中。迭代過程然后返回到操作702,其中檢查模塊310被提供有下一建議網絡狀態。
如果對決策框706的回答是“是”,則在710處檢查模塊310拒絕所提供的建議網絡狀態并且不將所提供的建議網絡狀態合并到目標網絡狀態中,使得避免狀態沖突和/或使得目標網絡狀態遵守定義策略。迭代過程然后返回到操作702,其中檢查模塊310被提供有下一建議網絡狀態。
在各個實施例中,代替在710處拒絕所提供的建議網絡狀態,檢查模塊310可以將已經被合并到目標網絡狀態中的沖突的建議網絡狀態從目標網絡狀態移除。然后,即使在檢測到沖突之后,檢查模塊310可以能夠接受所提供的建議網絡狀態并將所提供的建議網絡狀態合并到目標網絡狀態中。在所提供的建議網絡狀態具有超過已經被合并到目標網絡狀態中的沖突的建議網絡狀態的優先級時,這可能發生。
示例實現
實現A,一種方法,包括:向獨立地管理網絡的至少一部分的個體應用提供觀測網絡狀態的一個或多個狀態變量值;從多個應用接收到多個建議網絡狀態,其中個體建議網絡狀態提議對一個或多個狀態變量值的一個或多個改變;將所述多個建議網絡狀態中的至少子集合并到目標網絡狀態中,其中所述多個建議網絡狀態的中所述子集中沒有個體建議網絡狀態與所述多個建議網絡狀態中的所述子集中的另一個體建議網絡狀態沖突;以及由一個或多個硬件處理器至少部分地基于所述目標網絡狀態來改變所述網絡的狀態。
實現B,根據實現A所述的方法,還包括:確定所述目標網絡狀態是否違反針對所述網絡建立的一個或多個定義策略;以及響應于確定所述目標網絡狀態違反針對所述網絡建立的所述一個或多個定義的至少一個定義策略,通過將所述多個建議網絡狀態中的至少一個建議網絡狀態移除來更新所述目標網絡狀態,使得更新后的目標網絡狀態遵守針對所述網絡建立的所述一個或多個定義策略。
實現C,根據實現B所述的方法,其中所述一個或多個定義策略包括至少一個服務水平協議。
實現D,根據實現A到C中的任一項所述的方法,還包括:確定在至少兩個建議網絡狀態之間存在沖突;選擇所述至少兩個建議網絡狀態中的一個建議網絡狀態以接受并且合并到所述目標網絡狀態中;以及拒絕所述至少兩個建議網絡狀態中的至少一個其他建議網絡狀態,使得所述至少一個其他建議網絡狀態不被合并到所述目標網絡狀態中。
實現E,根據實現D所述的方法,其中所述選擇至少部分地基于以下各項中的一項:上次寫入成功選擇機制、鎖定選擇機制或基于優先級的選擇機制。
實現F,根據實現A到E中的任一項所述的方法,其中所述改變包括:確定在所述觀測網絡狀態與所述目標網絡狀態之間的差異;至少部分地基于所述差異來生成用于寫入到所述網絡的一個或多個設備的一個或多個設備特定命令;以及將所述一個或多個設備特定命令寫入到所述一個或多個設備以將所述網絡的所述狀態從所述觀測網絡狀態改變為所述目標網絡狀態。
實現G,根據實現A到E中的任一項所述的方法,其中所述改變包括:確定在更新后的觀測網絡狀態與所述目標網絡狀態之間的差異,所述更新后的觀測網絡狀態比用于向所述個體應用提供的所述一個或多個狀態變量值的所述觀測網絡狀態更最近地被讀取;至少部分地基于所述差異來生成用于寫入到所述網絡的一個或多個設備的一個或多個設備特定命令;以及將所述一個或多個設備特定命令寫入到所述一個或多個設備以將所述網絡的所述狀態從所述更新后的觀測網絡狀態改變為所述目標網絡狀態。
實現H,根據實現A到G中的任一項所述的方法,還包括維持定義第一狀態變量依賴于第二狀態變量的狀態依賴關系圖。
實現I,根據實現A到H中的任一項所述的方法,其中狀態變量是由至少一個應用可控制的所述網絡的組件。
實現J,根據實現A到I中的任一項所述的方法,其中所述一個或多個狀態變量值表示所述網絡的設備的狀態,所述方法還包括:使用設備特定技術從所述設備讀取所述一個或多個狀態變量值;以及以由所述多個應用理解的統一格式存儲所述一個或多個狀態變量值。
實現K,一個或多個計算機存儲介質,存儲計算機可執行指令,所述計算機可執行指令當由一個或多個處理器執行時,將所述一個或多個處理器編程為:確定在至少兩個建議網絡狀態之間是否存在沖突,其中個體建議網絡狀態請求網絡的狀態變量的值被改變為期望值;選擇所述至少兩個建議網絡狀態中的一個建議網絡狀態以接受并且合并到目標網絡狀態中;拒絕所述至少兩個建議網絡狀態中的至少一個其他建議網絡狀態,使得所述至少一個其他建議網絡狀態不被合并到所述目標網絡狀態中;以及至少部分地基于所述目標網絡狀態來改變所述網絡的狀態。
實現L,根據實現K所述的一個或多個計算機存儲介質,其中所述可執行指令還將所述一個或多個處理器編程為:訪問定義所述網絡的狀態變量之間的依賴關系的狀態依賴關系圖;并且使用所述狀態依賴關系圖來檢測所述沖突。
實現M,根據實現L所述的一個或多個計算機存儲介質,其中所接受的建議網絡狀態請求所述網絡的第一狀態變量的值被改變為與所述第一狀態變量相關聯的第一期望值;所拒絕的至少一個建議網絡狀態請求所述網絡的第二狀態變量的值被改變為與所述第二狀態變量相關聯的第二期望值;并且所述狀態依賴關系圖定義所述第一期望值與所述第二期望值不兼容。
實現N,根據實現L或實現M所述的一個或多個計算機存儲介質,其中所述狀態依賴關系圖是多層狀態依賴關系圖,其中每層包括特定類型的狀態變量,并且在所述多層狀態依賴關系圖中的各層之間存在所述依賴關系中的一種或多種依賴關系。
實現O,根據實現K到N中的任一項所述的一個或多個計算機存儲介質,其中所述可執行指令還將所述一個或多個處理器編程為:從所述網絡讀取觀測網絡狀態;向獨立地管理所述網絡的至少一部分的個體應用提供所述觀測網絡狀態;以及從所述多個應用中的至少兩個應用接收所述至少兩個建議網絡狀態。
實現P,根據實現K到O中的任一項所述的一個或多個計算機存儲介質,其中所述可執行指令還將所述一個或多個處理器編程為:確定所述目標網絡狀態是否違反針對所述網絡建立的一個或多個定義策略;并且響應于確定所述目標網絡狀態違反針對所述網絡建立的所述一個或多個定義策略中的至少一個定義策略,從所述目標網絡狀態移除至少一個建議網絡狀態,使得目標網絡狀態遵守針對所述網絡建立的所述一個或多個定義策略。
實現Q,一個或多個設備,包括:一個或多個處理器;一個或多個存儲器;監視模塊,其被存儲在所述一個或多個存儲器上并且由所述一個或多個處理器執行,以讀取網絡的觀測網絡狀態并且將所述觀測網絡狀態提供到獨立地管理所述網絡的至少部分的個體應用;檢查模塊,其被存儲在所述一個或多個存儲器上并且由所述一個或多個處理器執行以通過以下來生成目標網絡狀態:(i)確定在從多個應用接收到的建議網絡狀態之間是否存在一個或多個狀態變量沖突,以及(ii)將非沖突的建議網絡狀態合并到所述目標網絡狀態中,其中個體建議網絡狀態提議對針對所述網絡定義的一個或多個狀態變量的一個或多個值的一個或多個改變;以及更新模塊,其被存儲在所述一個或多個存儲器上并且由所述一個或多個處理器執行以將所述目標網絡狀態寫入到所述網絡。
實現R,根據實現Q所述的一個或多個設備,其中所述檢查模塊訪問狀態依賴關系圖以確定在建議網絡狀態之間是否存在所述一個或多個狀態變量沖突。
實現S,根據實現Q或實現R所述的一個或多個設備,其中所述檢查模塊確定所述目標網絡狀態是否違反針對所述網絡的一個或多個定義策略;并且響應于確定所述目標網絡狀態違反一個或多個定義策略中的至少一個定義策略,所述檢查模塊從所述目標網絡狀態移除至少一個建議網絡狀態,使得目標網絡狀態遵守所述一個或多個定義策略。
實現T,根據實現Q到S中的任一項所述的一個或多個設備,其中所述更新模塊:確定在觀測網絡狀態與所述目標網絡狀態之間的差異;至少部分地基于所述差異來生成用于寫入到所述網絡的一個或多個設備的一個或多個設備特定命令;以及將所述一個或多個設備特定命令寫入到所述一個或多個設備以將所述觀測網絡狀態轉變為所述目標網絡狀態。
結論
雖然本公開內容可以使用特定于結構特征和/或方法動作的語言,但是本發明不限于在此所描述的特定特征或動作。相反,特定特征和動作被公開為實現本發明的說明性形式。