隨著電子服務(例如,搜索服務、電子郵件服務、社交網絡服務、云計算服務等)繼續擴展,電子服務的提供者操作設備的網絡以提供電子服務。網絡的提供者或管理者通過連續更新網絡內的互連的設備來維持網絡。然而,在實現跨多個設備的網絡更新時經常發生網絡服務中斷和/或故障,這至少是因為網絡更新不能適應與其利用單個設備應用和完成更新所花費的時間量相關的運行時間差異。例如,由于第一設備的硬件資源上的當前負載,對第一設備的更新可能花費比預期的更長的時間量(例如,多于平均時間量)。在另一示例中,對第一設備的更新可能根本無法完成。因此,對第二設備的更新可能受到對第一設備的不成功或延遲的更新的影響,并因此,網絡可能經歷服務中斷或故障。技術實現要素:本文中所描述的技術和/或系統被配置為確定更新操作的集合以使網絡從觀察網絡狀態過渡到目標網絡狀態,并且基于被定義用于在過渡期間確保網絡的可靠性的約束來生成用于動態地調度更新操作的集合的更新依賴圖。技術和/或系統基于反饋動態地調度更新操作的集合。例如,反饋可以包括先前調度的更新操作已經被延遲、失敗或成功完成的指示。在各種實施例中,更新依賴圖可以包括多個排序,按照該多個排序能夠調度更新操作的集合。比如,第一排序可以與更新操作的第一子集相關聯,并且第二排序可以與更新操作的第二子集相關聯。至少一個更新操作可以被包括在更新操作的第一子集和更新操作的第二子集兩者中,使得其可以基于第一排序或第二排序被動態地調度。換句話說,至少一個更新操作可以是子更新操作,該子更新操作取決于多個父更新操作中的一個父更新操作、例如被包括在第一排序中的第一父更新操作或者被包括在第二排序中的第二父更新操作的成功完成。提供本
發明內容部分以便以簡化的形式介紹將在以下詳細描述部分中進一步描述的一些概念。本
發明內容部分并非意圖標識要求保護的主題的關鍵特征或必要特征,也并非意圖用于限制要求保護的主題的范圍。附圖說明參考附圖呈現詳細描述。在附圖中,附圖標記的最左邊的數字標識附圖標記首次出現的附圖。不同附圖中相同附圖標記的使用表示相似或相同的項目。圖1圖示根據各種實施例的示出被配置為動態地調度網絡上的網絡更新的各個更新操作的網絡更新服務的示例圖。圖2圖示根據各種實施例的示出描述被配置為實現網絡更新服務的一個或多個設備的各部件的環境的示例圖。圖3圖示根據各種實施例的示出使網絡的至少部分從觀察網絡狀態過渡到目標網絡狀態所進行的變化的示例圖。圖4圖示根據各種實施例的示出基于圖3的變化生成的更新依賴圖的示例圖。圖5圖示根據各種實施例的生成更新依賴圖以使網絡的狀態從觀察網絡狀態過渡到目標網絡狀態的示例過程。圖6圖示根據各種實施例的使用更新依賴圖來動態地調度包括網絡更新的單獨的更新操作的示例過程。圖7圖示根據各種實施例的示出針對轉發業務的網絡的一部分從觀察網絡狀態到目標網絡狀態的狀態過渡的示例圖。圖8圖示根據各種實施例的示出基于圖7的狀態過渡生成的更新依賴圖的示例圖。圖9圖示根據各種實施例的示出更新依賴圖中的循環依賴的示例圖。圖10圖示根據各種實施例的在更新依賴圖中調度循環依賴的更新操作的示例過程。具體實施方式本文中描述的技術和/或系統實現網絡更新服務,網絡更新服務被配置為生成與使網絡的狀態從觀察網絡狀態過渡(例如,移動)到目標網絡狀態的更新操作相關聯的更新依賴圖。網絡更新服務使用更新依賴圖來動態地調度各個更新操作,從而可以實現網絡更新。網絡更新服務基于被定義用于確保網絡更新的實現可靠(例如,減少發生網絡中斷或網絡故障的機會)的一個或多個約束來生成更新依賴圖。使用更新依賴圖,網絡更新服務可以基于從網絡中的設備接收的反饋來動態地調度包括網絡更新的各個更新操作。換句話說,更新依賴圖可以是引導或導航工具,其由網絡更新服務使用以在運行時間期間基于所接收到的與先前實現的更新操作相關聯的反饋來動態地選擇一個或多個下一或隨后的更新操作。比如,反饋可以指示(i)單獨的更新操作已經失敗并且未被成功地完成,(ii)單獨的更新操作已經被延遲并且尚未被完成(例如,但未失敗),或者(iii)單獨的更新操作已經成功完成。基于接收到的反饋,網絡更新服務可以訪問和使用更新依賴圖來動態地標識和調度下一更新操作。用于更新網絡的第一傳統方法包括“一次性”方法,其確定網絡的觀察狀態與網絡的目標狀態之間的一組差異,并且將這些差異一次全部或者同時全部應用于相關設備(例如,因此術語為“一次性”)。這種用于更新網絡的傳統的一次性方法需要同時成功地完成對網絡中的各個設備的更新。然而,在大多數情況下,設備更新不會同時發生,這至少是因為,由于不同的硬件能力、設備資源上的不同的控制負載、通信延遲(例如,遠程過程調用(RPC)延遲)等,設備實現更新要花費不同的時間量。因此,傳統的“一次性”方法是不可靠或不安全的,這至少是因為對第二設備的更新可能取決于對第一設備成功地完成的更新,以便確保網絡可靠性和安全性。如果對第一設備的更新的實現比對第二設備的更新需要更長時間(即,更新不同時發生),或者如果對第一設備的更新被延遲或失敗,則網絡可以在對第二設備的成功更新被完成的時間與對第一設備的更新被最終完成的稍后時間之間的“瞬時”時間段(例如,五秒的瞬時時間段、十秒的瞬時時間段、三十秒瞬時時間段、一分鐘瞬時時間段等)內操作。瞬時時間段通常導致網絡中斷或故障,例如路由回路、黑洞和/或擁塞。因此,盡管傳統的“一次性”方法試圖有效地或一次性地實現網絡更新,但是不能確保可靠和安全地實現網絡更新。用于更新網絡的第二傳統方法提高了可靠性和安全性,但是效率低。該第二傳統方法是用于更新網絡的多步驟方法,其中網絡更新被劃分為不同的步驟,并且步驟被靜態地排序作為在對網絡的更新開始之前預先確定的固定調度的一部分。例如,在生成固定調度之后,第二傳統方法可以實現網絡更新的第一預定步驟(例如,更新第一設備),等待第一預定步驟被成功完成的指示,然后實現網絡更新的第二預定步驟(例如,更新第二設備),等待第二預定步驟被成功完成的指示,然后實現網絡更新的第三預定步驟,以此類推,直到整個網絡更新完成。雖然第二傳統方法可以提高網絡更新的可靠性和安全性,但是它是低效和慢的,因為固定調度不能適應運行時間條件。例如,如果出現問題并且第一預定步驟的完成不成功或被延遲,則固定調度中的隨后的預定步驟要么不能實現,要么必須等待實現。在一些情況下,延遲或失敗的第一預定步驟可以稱為掉隊(straggler)步驟。或者,與延遲的或失敗的第一預定步驟相關聯的設備可以稱為掉隊設備。在很多情況下,在掉隊步驟和/或掉隊設備趕上(例如,更新最終成功地完成)時,固定調度中的隨后的預定步驟可能是不相關的(例如,舊的更新、無意義的等)。因此,盡管是可靠和安全的,但是對步驟靜態地排序作為固定調度的一部分的傳統方法也是低效的,這至少是因為它不允許固定調度被修改,例如以解決掉隊步驟和/或掉隊器件。本文中所描述的網絡更新服務被配置為實現動態調度方法以實現網絡更新。網絡更新服務生成并且使用更新依賴圖來動態地調度包括網絡更新的各種更新操作。換句話說,網絡更新服務被配置為在網絡更新基于所接收到的與已經調度的更新操作相關聯的反饋已經開始選擇和調度下一更新操作之后(例如,網絡更新運行時間條件)訪問更新依賴圖。不同于與以上討論的“一次性”傳統方法,本文中討論的更新操作并不都是同時被發起的。此外,不同于以上“靜態順序”傳統方法,本文中討論的更新操作不是在網絡更新開始之前預先確定的固定調度的一部分。相反,更新依賴圖可以包括更新操作的各種排序,并且網絡更新服務可以在考慮所接收到的反饋之后基于一個或多個排序動態地調度更新操作。例如,如果沿著第一排序出現問題或路障,并且網絡更新服務例如在運行時間確定作為第一排序的一部分的更新操作被延遲或已經失敗,則網絡更新服務可以使用更新依賴圖來標識第二排序,并且甚至鑒于延遲的或失敗的更新操作來動態地尋找用于繼續網絡更新的可接受的方式。因此,能夠根據在第二排序中定義的依賴性來調度依賴于延遲的或失敗的更新操作并且因此無法經由第一排序被調度的一個或多個要調度的更新操作。網絡更新服務基于從定義的約束產生的依賴性來生成更新依賴圖。在各種實施例中,更新依賴圖的節點對應于更新操作,并且節點之間的邊表示更新操作之間的依賴性(例如,第一更新操作將在第二更新操作之前實現)。在各種實施例中,更新依賴圖的節點對應于網絡元件(例如,設備或通信路徑)的資源可用性,諸如鏈路帶寬可用性和/或存儲器可用性。在各種實現中,網絡更新服務可以基于網絡一致性屬性來定義約束。為了一致,網絡更新必須符合或不違反被建立用于保護網絡免受中斷或故障的屬性。第一示例屬性可以是指示在網絡中通信的分組不應該循環的禁止循環屬性。第二示例屬性可以是指示經由兩個設備之間的鏈路通信的業務不能超過預定和/或最大容量的禁止擁塞屬性。因此,可以基于這些示例屬性來定義約束,并且約束可以對可以實現更新操作的順序施加依賴性。比如,可以定義約束以確保將新的流帶到鏈路的更新操作必須在從鏈路中去除現有流的更新操作之后發生(例如,如果鏈路由于資源容量限制而不能同時支持兩個流)。因此,網絡更新服務被配置為使用更新依賴圖來動態地調度下一更新操作,同時遵守基于定義的約束建立的依賴性。圖1圖示示例圖100,其包括被配置為動態地調度網絡104上的網絡更新的各個更新操作的網絡更新服務102。網絡104可以包括各種設備106和通信路徑108。通信路徑108可以與連接兩個設備的直接鏈路相關聯,或者可以包括連接兩個設備的間接鏈路,在間接鏈路中業務經由位于兩個設備之間的至少一個中間設備來通信。在一個實現中,通信路徑108可以包括通過或針對兩個或更多個設備106建立的通信隧道。在各種實施例中,正在被管理的網絡104可以是大型生產網絡,諸如數據中心網絡(DCN)、因特網服務提供商(ISP)網絡、企業網絡(例如,云服務)或任何可以在實體(例如,操作和維護執行網絡更新服務102的設備的實體)的控制下的其他管理域。設備106可以是物理網絡設備,諸如交換設備(交換機)、路由設備(路由器)、網關設備(網關)、橋接設備(網橋)、集線器設備(網絡集線器)、防火墻設備、網絡地址轉換器設備(NAT)、復用設備(復用器)、無線接入點設備(WAP)、代理服務器設備、文件服務器設備、數據庫服務器設備、存儲設備等。設備106還可以是能夠連接到網絡104的端用戶設備。比如,端用戶設備可以包括移動或便攜式設備,諸如智能電話、蜂窩電話、個人數字助理(PDA)、電子書設備、膝上型計算設備、平板計算設備、個人媒體播放器設備等。或者,端用戶設備可以包括固定設備,諸如臺式計算設備、游戲控制臺設備、數字視頻記錄設備(DVR)、機頂盒設備等。因此,網絡104可以包括數十個,數百個或數千個彼此連接以包括域或管理網絡的設備。當更新網絡104時,網絡更新服務102被配置為確定使網絡的狀態從觀察網絡狀態112過渡到目標網絡狀態114的變化110。如本文中使用的,網絡104的“狀態”取決于網絡104內的各個設備106和/或各個通信路徑108的狀態。在各種實現中,單獨的設備106或單獨的通信路徑108可以具有一個或多個狀態變量,并且在任何給定時間,狀態變量可以是各個值中的任何一個。在各種實施例中,狀態變量被定義為值(例如,可以從觀察值變為期望與觀察值不同的目標值的可控值)可以被讀取和/或寫入的設備106或通信路徑108的分量。因此,變化110可以與將狀態變量從第一值變為第二值相關聯。對狀態變量的變化可以是直接變化,使得第一值變為第二值。或者,對狀態變量的變化可以是間接變化,使得第一值經由既不是第一值也不是第二值的中間值變為第二值。例如,設備106可以包括指示設備106是通電還是斷電的電源狀態變量。因此,功率狀態變量的第一值可以指示設備106被通電,并且功率狀態變量的第二值可以指示設備106被斷電。這些不同的值可以從設備106讀取(例如,觀察到)和/或被寫入設備106。在另一示例中,設備106可以包括路由狀態變量,其指示各個通信路徑中的一個通信路徑,設備106針對該通信路徑要用于傳輸數據(例如,入口交換設備)。因此,路由狀態變量的第一值可以指示設備106要使用第一通信路徑向網絡中的另一設備傳輸數據(例如,業務流),并且路由狀態變量的第二值可以指示設備106要使用不同于第一通信路徑的第二通信路徑向網絡中的其他設備傳輸數據。在各種實施例中,目標網絡狀態114可以基于由各種應用116(1)...116(N)請求和/或建議的狀態變量值變化來生成。應用(例如,116(1)...116(N)中的一個)可以負責管理和控制網絡104的特定的方面或功能,使得網絡104有效且可靠地操作。在各種實施例中,由單獨的應用(例如,116(1)...116(N)中的一個)管理和控制的網絡104的特定的方面或功能可以與網絡104的單個設備106和/或單個通信路徑108或者網絡的設備106的子集或通信路徑108的子集(例如,特定類型的設備,諸如交換設備)相關聯。應用(例如,116(1)...116(N)中的一個)可以被分類為路由管理應用,其管理用于網絡104的設備106(例如,交換設備)和/或通信路徑108的交換機轉發規則。例如,流量工程應用可以是被配置為沿著不同的通信路徑108(例如,通過/針對兩個或更多個設備106建立的通信隧道)引導業務以改善網絡利用率和/或確保性能要求被滿足的路由管理應用。在另一示例中,服務器負載平衡應用可以是跨設備(例如,處理數據請求的一組服務器)劃分(例如,平等地)通信負載(例如,業務)的路由管理應用。應用(例如,116(1)...116(N)中的一個)可以被分類為管理網絡104的設備106和/或通信路徑108的網絡基礎設施的基礎設施管理應用。例如,電力管理應用可以是被配置為在任何給定時間打開或關閉交換設備以便緩解故障或節省能量的基礎設施管理應用。在另一示例中,交換機升級應用可以是負責在交換設備上安裝新的操作系統(即,固件)的基礎設施管理應用。以上描述的應用在本文中被提供為示例應用,并且預期被開發用于控制網絡的一方面或功能的其他應用也可以得益于本文檔中描述的技術和/或系統。在各種實施例中,網絡更新服務102可以通過計算觀察網絡狀態112與目標網絡狀態114之間的差異來確定變化110。所計算的差異可以是一個或多個觀察狀態變量值與要寫入網絡104的一個或多個對應的期望狀態變量值之間的差異。換句話說,假設觀察網絡狀態112和目標網絡狀態114作為輸入,網絡更新服務102可以基于變化110來計算更新操作的集合。因此,網絡更新服務102被配置為基于一個或多個定義的約束120生成更新依賴圖118。比如,網絡更新服務102被配置為基于約束來確定更新操作之間的依賴性,并且生成將更新操作彼此鏈接的一個或多個可接受且可靠的排序。約束120可以由操作網絡更新服務102的實體、被網絡104服務的實體和/或應用116(1)...116(N)之一來定義。如以上討論的,約束120可以鑒于被配置為確保網絡104可靠、安全和有效地操作的屬性和/或策略來定義。例如,一致性相關屬性可以包括但不限于以下中的一項或多項:(i)禁止黑洞屬性,其確保通信單元(例如,數據分組)在設備(例如,交換設備)處不被丟棄;(ii)禁止循環屬性,其確保通信單元在網絡內不被循環;(iii)分組相干屬性,其確保通信單元不基于舊路由指令(例如,作為觀察網絡狀態的一部分)和新路由指令(例如,作為目標網絡狀態的一部分)的混合在網絡中傳輸;(iv)禁止擁塞屬性,其確保網絡內的通信單元的路由不引起擁塞(例如,由于超過帶寬限制,因此鏈路不被擁塞);以及(v)存儲器過載,其確保設備處的可用存儲器資源足以滿足與目標狀態相關聯的存儲器需求。更新依賴圖118由多個節點和邊組成。在各種實施例中,更新依賴圖118的節點可以是操作類型節點。操作節點表示要被調度的更新操作,該更新操作與要被寫入網絡104的一個或多個個變化(例如,由應用提出的新的值)相關聯。例如,操作節點可以與在交換設備處對業務路由狀態變量的變化相關聯(例如,將業務流從第一通信路徑移動到第二通信路徑的業務轉發規則的添加、刪除或修改)。第二類型的節點包括可以與一個或多個設備處的資源可用性相關聯的資源節點。例如,資源節點可以基于當前存儲器負載來指示可用存儲器的量或者基于當前負載來指示可用通信帶寬的量。更新依賴圖118中的兩個操作節點之間的邊表示要實現的兩個更新操作之間的操作依賴性,從而信號傳輸應當在第二更新操作(例如,取決于父更新操作的成功完成的子節點的子更新操作)之前實現第一更新操作(例如,父節點的父更新操作)。更新依賴圖118中的資源節點與操作節點之間的邊表示資源依賴性。比如,在操作節點開始并且結束于或通向資源節點的邊可以具有相關聯的標簽,該相關聯的標簽指示將在成功地完成由邊在此開始的操作節點表示的更新操作之后將被釋放或變得可用的資源的量(例如,可用資源)。在資源節點處開始并且結束于或通向操作節點的邊可以具有相關聯的標簽,該相關聯的標簽指示在可以實現由邊在此結束的操作節點表示的更新操作之前所需的可用資源(例如,消費所需的資源)的量。在各種實施例中,如果沒有定義資源約束(例如,基于禁止擁塞屬性定義的約束),則更新依賴圖118可以僅包括操作節點。在其他實施例中,更新依賴圖118可以包括操作節點和資源節點。一旦生成,更新依賴圖118可以包括可以被遵循以實現網絡更新的多個可接受和可靠的排序。換句話說,可以向網絡更新服務102提供用于導航更新依賴圖118的各種方式。因此,網絡更新服務102能夠動態地(例如,基于運行時間條件)選擇要調度的下一更新操作。例如,如果更新操作的成功完成被延遲或停止,并且沿著第一排序的隨后的更新操作取決于被延遲或停滯的更新操作,則網絡更新服務102可以訪問更新依賴圖118以標識第二排序(例如,圖中的不同的路由或解決方案),其不包括被延遲或停滯的更新操作,但仍然通向隨后的更新操作。因此,網絡更新服務102使用更新依賴圖118動態地尋找繞過被延遲或停滯的更新操作的路徑(例如,替換排序),使得隨后的更新操作仍然可以被調度。因此,本文中所描述的網絡更新服務102不使用固定調度來實現網絡更新。相反,只要網絡更新服務102基于使網絡的狀態從觀察網絡狀態112過渡到目標網絡狀態114的所計算的變化110來維護更新依賴圖118,網絡更新服務102就可以更高效地實現網絡更新,同時還確保網絡更新是安全可靠的。網絡更新服務102被配置為使用更新依賴圖118來基于從網絡104接收的反饋122以動態地調度更新操作。反饋122可以是由網絡104的元件(例如,設備106)提供的顯式反饋,其可以包括以下指示:(i)更新操作已經被成功地完成(例如,按時、在預定時間量內),(ii)更新操作尚未被完成但仍在實現過程中(例如,更新被延遲,將不會在預定或預期的時間量內完成),或者(iii)更新操作已經失敗并且不能被成功地完成。反饋122還可以或者備選地是隱式反饋,使得網絡更新服務102監視各個更新操作的進展并且觀察更新操作已經成功地完成還是未成功地完成或者更新操作是否已經被延遲(例如,不是在預期或預定的時間量內完成)。基于反饋122,網絡更新服務102可以使用更新依賴圖118來選擇下一更新操作,并且動態地調度124下一更新操作,使得網絡更新可以繼續。因此,網絡更新服務102實現更加有效和可靠的方法來更新網絡或網絡的一部分,這至少是因為其確定可以實現網絡更新的多個可靠排序(例如,遵循依賴性)并且其鑒于從網絡接收的反饋122(例如,交換設備當前在實現已經調度的更新操作時被延遲)使用排序動態地選擇要實現的下一操作更新。圖2是示出實現上述網絡更新服務102的示例環境200的圖。在各種實施例中,網絡更新服務102可以經由一個或多個設備202來實現。設備202可以包括固定設備,諸如臺式計算設備、服務器計算設備等。設備202可以備選地包括移動或便攜式設備,諸如膝上型計算設備、平板計算設備、智能電話設備、蜂窩電話設備、個人數字助理(PDA)設備、電子書設備等。設備202包括被配置為實現本文中描述的技術的網絡更新服務102。設備202可以個別地和單獨地包括一個或多個處理器204和存儲器206。處理器204可以是單個處理單元或多個單元,每個單元可以包括多個不同的處理單元。處理器204可以包括微處理器、微型計算機、微控制器、數字信號處理器、中央處理單元(CPU)、圖形處理單元(GPU)、安全處理器等。備選地或附加地,本文中描述的一些或所有技術可以至少部分由一個或多個硬件邏輯部件來執行。例如但不限于,可以使用的說明性類型的硬件邏輯部件包括現場可編程門陣列(FPGA)、專用集成電路(ASIC)、專用標準產品(ASSP)、狀態機、復雜可編程邏輯器件(CPLD)、其他邏輯電路、片上系統(SoC)和/或基于指令執行操作的任何其它設備。在其它能力中,處理器204可以被配置為取回和執行存儲在存儲器206中的計算機可讀指令。存儲器206可以包括計算機可讀介質中的一個或其組合。如本文中使用的,“計算機可讀介質”包括計算機存儲介質和通信介質。計算機存儲介質包括使用用于存儲信息(諸如計算機可讀指令、數據結構、程序模塊或其它數據)的任何方法或技術實現的易失性和非易失性、可移除和不可移除介質。計算機存儲介質包括但不限于相變存儲器(PRAM)、靜態隨機存取存儲器(SRAM)、動態隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程ROM(EEPROM)、閃存或其他存儲器技術、光盤ROM(CD-ROM)、數字通用盤(DVD)或其他光學存儲裝置、磁帶盒、磁帶、磁盤存儲裝置或其它磁性存儲設備或者可以用于存儲信息供設備訪問的任何其他介質。相比較而言,通信介質包括計算機可讀指令、數據結構、程序模塊或調制數據信號(例如,載波)中的其它數據。如本文中定義的,計算機存儲介質不包括通信介質。存儲器206可以包括操作系統,該操作系統被配置為為了其他模塊、部件和設備的利益而管理在設備內并且耦合到該設備的硬件和服務。在一些情況下,網絡更新服務102的至少一部分可以在操作系統內或由操作系統實現。網絡更新服務102包括圖形生成模塊208和調度模塊210中的一個或多個。如本文中使用的,術語“模塊”意圖出于討論目的而表示軟件的示例劃分,而非意圖表示任何類型的要求或所需的方法、方式或組織。因此,雖然討論了各種“模塊”,但是它們的功能和/或類似功能可以不同地布置(例如,組合成更少數量的模塊,分成更大數量的模塊等)。此外,雖然在本文中將某些功能和模塊描述為由跨一個或多個設備的一個或多個處理器上可執行的軟件和/或固件來實現,但在其他實施例中,任何或所有模塊可以全部或部分通過硬件(例如,ASIC、專用處理單元等)來實現以執行所描述的功能。在其他實例中,功能和/或模塊被實現為設備驅動器、固件等的一部分。圖形生成模塊208被配置為確定和/或接收將網絡104的狀態從觀察網絡狀態112移動到目標網絡狀態114的變化110。例如,變化110可以與計算的差異相關聯,并且計算的差異可以包括將狀態變量值從觀察值變為期望值的指令或命令(例如,設備特定的指令或命令)。如以上討論的,變化可以是直接變化或間接變化,并且具體的更新操作可以與更新依賴圖118中的操作節點相關聯。因此,圖形生成模塊108基于變化110生成和維護更新依賴圖118并且將更新依賴圖118存儲在更新依賴圖存儲裝置212中。此外,圖形生成模塊208基于存儲在約束存儲裝置214中的定義的約束120生成更新依賴圖118。如以上討論的,約束120可以由以下中的一項或多項來定義:操作網絡更新服務102的實體、正由網絡104服務的實體(例如,如果不同于操作網絡更新服務102的實體)、或者應用116(1)...116(N)中的一個應用的開發者。調度模塊210被配置為從網絡接收反饋122,并且例如基于運行時間條件經由狀態依賴圖118動態地調度214一個或多個隨后的或下一更新操作。在各種實施例中,調度模塊210可以使用各種調度算法中的任何一種調度算法來動態地調度更新操作。調度算法的使用可以取決于被分配給網絡更新服務102用于實現網絡更新的資源。在一個實現中,調度模塊210可以實現關鍵路徑調度算法以實現網絡更新。根據關鍵路徑調度算法,調度模塊210被配置為計算路徑長度(例如,排序的長度)并且標識最長關鍵路徑。調度模塊210然后被配置為對與作為最長關鍵路徑的一部分的節點相關聯的更新操作的調度進行優先化,使得實現網絡更新的總時間量最小化。也就是說,調度模塊210可以通過動態地調度與最長關鍵路徑上的節點相關聯的更新操作來繼續工作以縮短最長關鍵路徑。本文檔中稍后提供示例關鍵路徑調度算法。此外,還可以使用其他調度算法來使用更新依賴圖以動態地調度網絡更新。在與更新依賴圖中的操作節點相關聯的更新操作成功完成時,調度模塊210可以被配置為從更新依賴圖去除操作節點,這至少是因為它不再與要實現的更新操作相關聯。在各種實施例中,設備202包括一個或多個通信單元216。通信單元216可以被配置為促進到一個或多個網絡(例如,網絡104)、由各種服務或內容提供者操作的應用116(1)...116(N)、和/或其他設備的有線和/或無線連接。因此,通信單元216可以實現各種通信或網絡連接協議中的一個或多個。圖3是圖示要進行以使網絡的至少部分從觀察網絡狀態302過渡到目標網絡狀態304的變化的圖300。圖300示出了設備306(1)...306(5)(例如,在該示例中包括網絡的一部分的一組網絡交換設備)之間的數據業務流。在該示例中,資源約束被定義為將兩個設備之間的每個直接鏈路的通信或業務負載限制到最大或閾值容量(例如,在該示例中為十個單元)。用于通信或業務流的示例單元可以是Gbps(千兆比特每秒)。因此,圖形生成模塊208被配置為生成更新依賴圖,使得可以按照各種順序之一進行改變而沒有違反定義的約束。在圖3的示例中,已經建立了通信隧道,因此,可以通過更新入口交換設備(例如,入口交換設備的狀態變量)來實現將業務流從第一通信路徑移動到第二通信路徑。在觀察網絡狀態302中,第一業務流308(1)示出了表示從設備306(1)經由設備306(4)到設備306(5)的觀察到的業務流的五個單元。第二業務流308(2)示出了表示從設備306(2)經由設備306(1)到設備306(5)的觀察到的流的五個單元。第三業務流308(3)示出了表示從設備306(3)經由設備306(2)到設備306(5)的觀察到的流的十個單元(例如,最大允許容量)。第四交通流308(4)示出了表示從設備306(4)經由設備306(1)到設備306(5)的觀察到的流的五個單元。在目標網絡狀態304中,觀察網絡狀態302的第一業務流308(1)已經被移動到目標第一業務流310(1),該目標第一業務流310(1)示出從設備306(1)直接流向設備306(5)的五個單元。觀察網絡狀態302的第二業務流308(2)已經被移動到目標第二業務流310(2),目標第二業務流310(2)示出了從設備306(2)直接流向設備306(5)的五個單元。觀察網絡狀態302的第三業務流308(3)已經被移動到目標第三業務流310(3),目標第三業務流310(3)示出了從設備306(3)直接流向設備306(5)的十個單元。以及觀察網絡狀態302的第四業務流308(4)已經被移動到目標第四業務流310(4),目標第四業務流310(4)示出了從設備306(4)直接流向設備306(5)的五個單元。由于圖3中的各種交換設備306(1)...306(5)有可能在不同時間應用業務流更新,所以同時向各個交換設備306(1)...306(5)同時發出所有更新操作/命令的一次性方法很可能導致至少一些直接鏈路(例如,超過十個單元容量)上的擁塞。例如,如果在設備306(2)成功地完成將流308(2)移動到目標流310(2)的更新操作之前并且在設備306(4)成功地完成將流308(4)移動到目標流310(4)的更新操作之前,設備306(1)成功地完成了將流308(1)移動到目標流310(1)的更新操作,則設備306(1)和306(5)之間的直接鏈路上的負載或帶寬需求將是十五個單元,并且將超過由資源約束定義的十個單元最大容量。這在網絡內會導致擁塞。為了確保在實現圖3中的變化時不超過鏈路的最大容量(例如,圖3的示例中的十個單元),圖形生成模塊208被配置為生成圖4的示例更新依賴圖400。圖4的更新依賴圖400中的圓形節點表示操作節點。圖4的更新依賴圖400中的矩形節點表示指示可用資源(例如,可用的鏈路帶寬)的資源節點。在操作節點處開始并且結束于或通向資源節點的邊上的標簽指示在與邊在此開始的操作節點相關聯的更新操作成功完成之后被解放或釋放的資源量。在資源節點處開始并且結束于或通向操作節點的邊上的標簽指示執行與邊在此結束的操作節點相關聯的更新操作所需的可用資源(例如,由更新操作消耗的資源)的量。因此,在圖3的觀察網絡狀態302中,設備306(2)與設備306(5)之間的鏈路具有“零”可用帶寬,如經由示例更新依賴圖400的資源節點402所指示的。將觀察到的業務流308(3)移動到目標業務流310(3)(如經由操作節點404指示的)向設備306(2)與設備306(5)之間的鏈路釋放10個單元,并且從操作節點404到資源節點402的邊被標記為指示釋放的資源(例如,十個單元)。此外,操作節點406指示在將觀察到的業務流308(3)移動到目標業務流310(3)之后,將觀察到的業務流308(2)移動到目標流310(2)。從資源節點402到操作節點406的邊被標記為指示需要五個單元來實現操作節點406的更新操作(例如,需要在設備306(2)與設備306(5)之間的五個可用單元)。繼續,資源節點408指示設備306(1)與設備306(5)之間的鏈路在觀察狀態下具有“零”可用帶寬。將觀察到的業務流308(2)移動到目標業務流310(2)(如經由操作節點406指示的)向設備306(1)與設備306(5)之間的鏈路釋放5個單元,并且從操作節點406到資源節點408的邊被標記為指示所釋放的資源。此外,將觀察到的業務流308(4)移動到目標業務流310(4)(如經由操作節點410所指示的)還向設備306(1)與設備306(5)之間的鏈路釋放5個單元,并且從操作節點410到資源節點408的邊被標記為指示所釋放的資源。此外,操作節點412指示,在與操作節點410或406之一相關聯的更新操作成功完成之后,要將觀察到的業務流308(1)移動到目標流310(1)。從資源節點408到操作節點412的邊被標記為指示需要5個單元來實現操作節點412的操作(例如,需要在設備306(1)與設備306(5)之間的5個可用單元)。給定圖4中的更新依賴圖400,調度模塊210可以動態地調度更新操作,同時還確保避免鏈路擁塞。比如,調度模塊210可以確定,將觀察到的業務流308(3)移動到目標業務流310(3)以及將觀察到的業務流308(4)移動到目標業務流310(4)不依賴于其他更新操作。因此,可以立即和/或并行地調度由操作節點404和410表示的更新操作,而不會違反網絡擁塞屬性。在與操作節點404相關聯的操作完成之后,調度模塊210可以調度與操作節點406相關聯的操作。最后,調度模塊210可以在例如基于反饋確定與節點406相關聯的更新操作或與節點410相關聯的更新操作中的任一個更新操作成功完成之后動態地調度與操作節點412相關聯的更新操作。如參考圖3和圖4所描述的示例中所見,調度模塊210可以使用更新依賴圖來基于從網絡接收的反饋并且以各種順序中的任何一個來動態地調度更新操作。例如,調度模塊210可以確定與操作節點410相關聯的更新操作是被停滯或延遲的掉隊更新操作,因此調度模塊210意識到與操作節點412相關聯的更新操作可以替選地在與操作節點406相關聯的更新操作成功完成之后來實現(例如,因為足夠的資源被釋放以滿足所需的資源)。因此,可以在更新操作(例如,父操作節點404和406)的第一排序被成功地完成之后或者在更新操作(例如,父操作節點410)的第二排序被成功地完成之后來實現操作節點412(例如,子節點)。在以上討論的“靜態排序”傳統方法中,操作節點412可能已經是固定調度中的隨后步驟,其必須等待直到與操作節點410相關聯的更新操作被完成。例如,在網絡更新開始之后不能改變的固定調度可以要求:第一,將觀察流308(3)移動到目標流310(3),第二,將觀察流308(2)移動到目標流310(2),第三,將觀察流308(4)移動到目標流310(4),并且然后僅觀察流308(1)可以移動到目標流310(1)。因此,更新依賴圖提供了調度靈活性,使得調度模塊210仍然可以將觀察流308(1)移動到目標流310(1),即使存在與操作節點406或410之一相關聯的故障或延遲,在一些情況下,為了提高網絡更新效率,調度模塊210可以響應于確定操作節點406和410之一比預期更快完成來動態地調度操作節點412。本文中的示例更新依賴圖400僅提供作為示例,并且應當理解,基于(i)為了將網絡的狀態從觀察狀態移動到目標狀態做出的改變的數量和/或(ii)定義的約束的數量,更新依賴圖可以包括更多的節點和依賴關系。圖5、圖6和圖10圖示被單獨描述為邏輯流程圖的示例過程,其表示可以用硬件、軟件、固件或其組合來實現的操作序列。在軟件的上下文中,操作表示在由一個或多個處理器執行時配置計算設備以執行上述操作的計算機可執行指令。通常,計算機可執行指令包括配置計算設備以執行特定功能或實現特定抽象數據類型的例程、程序、對象、組件、數據結構等。在一些實施例中,任何或所有操作可以通過硬件(例如,作為ASIC、專用處理單元等)執行所描述的功能來全部或部分地實現。在一些實例下,功能和/或模塊被實現為操作系統的一部分。在其他實例中,功能和/或模塊被實現為設備驅動器、固件等的一部分。在示例過程中描述操作的順序并不意圖被解釋為限制,并且可以以任何順序和/或并行地組合任何數量的所描述的操作以實現示例過程。圖5圖示確定用于使網絡的狀態從觀察網絡狀態過渡到目標網絡狀態的變化的示例過程500。圖5中的示例操作可以參考圖1到圖4中任一圖圖示的模塊、組件和/或元件來描述。在502,圖形生成模塊208可以確定觀察網絡狀態。例如,觀察網絡狀態可以包括網絡(例如,網絡104)的一個或多個觀察狀態變量值。可以隨時間(例如,根據周期性觀察調度)存儲和/或更新觀察網絡狀態。因此,圖形生成模塊208可以訪問數據存儲裝置以確定觀察網絡狀態,或者圖形生成模塊208可以例如從網絡觀察服務或網絡觀察實體接收觀察網絡狀態。在504,圖形生成模塊208可以確定目標網絡狀態。例如,目標網絡狀態可以包括或者基于對觀察網絡狀態的一個或多個變化來生成。例如,以管理特定網絡功能為任務的應用(例如,應用116(1)...116(N))可以請求或提議對一個或多個狀態變量值的變化。變化可以指示希望使狀態變量值從觀察值過渡(例如,移動)到目標值(例如,直接或間接地)。目標網絡狀態可以隨著時間(例如,根據周期性或連續的網絡更新調度)存儲和/或更新。因此,圖形生成模塊208可以訪問數據存儲裝置以確定目標網絡狀態,或者圖形生成模塊208可以例如從生成目標網絡狀態的服務或實體接收目標網絡狀態。在506,圖形生成模塊208可以確定用于使網絡的狀態從觀察網絡狀態過渡到目標網絡狀態的更新操作(例如,更新操作的集合)。例如,更新操作可以與由應用116(1)...116(N)提議或請求的變化相關聯。更新操作可以包括要發布到網絡中的設備以將一個或多個狀態變量值從觀察值變為目標值的更新指令和/或命令。在508,圖形生成模塊208可以接收或訪問一個或多個約束。如以上討論的,可以定義約束以確保網絡的可靠性。例如,可以定義約束以確保網絡狀態過渡符合一個或多個一致性屬性,如以上討論的。在510,圖形生成模塊208可以基于更新操作和約束生成更新依賴圖。更新依賴圖可以定義可以動態地調度更新操作的各種可接受的順序。排序確保不違反定義的約束,因此網絡狀態轉換是可靠和安全的。此外,由于可以定義各種排序,所以網絡狀態過渡可以更高效,因為如果第一排序停滯(例如,沿著第一排序遇到掉隊設備或掉隊操作),則更新依賴圖提供第二排序,網絡狀態轉換可以按照第二排序繼續。示例過程500可以作為正在進行的網絡管理和維護服務的一部分被繼續實現。因此,觀察網絡狀態和/或目標網絡狀態可以繼續改變,并且因此生成和/或維持更新依賴圖以反映使網絡的狀態從觀察網絡狀態過渡到目標網絡狀態的更新的變化。圖6圖示使用更新依賴圖來動態地調度包括網絡更新的各個更新操作的示例過程600。圖6中的示例操作可以參考圖1到圖5中任一圖圖示的模塊、組件、元件和/或操作來描述。在602,調度模塊210可以確定更新依賴圖內的一個或多個起始節點。起始節點與可以被首先調度以實現網絡更新的更新操作相關聯。在各種實施例中,起始節點可以基于關鍵路徑調度來確定,在關鍵路徑調度中確定通過更新依賴圖的最長路徑。在604,調度模塊210基于起始節點開始調度更新操作。例如,調度模塊210可以根據一個或多個排序開始調度更新操作。在606,調度模塊210接收指示先前調度的更新操作(例如,與起始節點相關聯的更新操作)的成功、不成功(例如,失敗)或延遲完成的反饋。在608,調度模塊210可以訪問更新依賴圖以基于反饋來動態地調度一個或多個隨后的更新操作。例如,如果反饋指示先前調度的更新操作已失敗或被延遲,則調度模塊210可以使用更新依賴圖來選擇不取決于失敗或延遲的更新操作的成功完成的更新操作用于調度。先前調度的更新操作可以是更新依賴圖中的第一排序的一部分,并且所選擇的更新操作可以是更新依賴圖中的第二排序的一部分。調度模塊210繼續迭代地執行操作606和608。例如,調度模塊210繼續迭代地執行操作606和608,直到從觀察網絡狀態到目標網絡狀態的過渡完成。下面提供的討論描述了其中網絡更新服務102與基于隧道的轉發和/或加權成本多路徑(WCMP)轉發相關聯地使網絡從觀察網絡狀態過渡到目標網絡狀態的實現。出于本文中提供的討論的目的,網絡G(例如,網絡104的至少一部分)可以包括一組交換設備S和一組直接鏈路L,其中直接鏈路連接兩個交換設備。流f表示以業務量tf例如經由建立的隧道從入口交換設備si到出口交換設備sj通信的數據。網絡可以使用路徑集合Pf來攜帶業務(例如,也可以被稱為隧道集合)。因此,f的轉發狀態可以被定義為Rf={rf,p|p∈Pf},其中rf,p是路徑p上的f的業務負載。然后可以將網絡狀態NS表示為所有流的組合狀態,使得NS={Rf|f∈F}。可以在入口交換設備處設置相對權重以確定流如何在多個路徑或隧道之間被分割或劃分。作為說明性示例,圖7示出了網絡700的至少一部分,其例如被配置為通信從觀察網絡狀態702過渡到目標網絡狀態704的數據單元(例如,數據分組、Gbps等)。網絡700包括五個交換設備706(1)...706(5)(例如,這些交換設備在本文中也可以被稱為單獨的交換設備s1、s2、s3、s4、s5)。觀察網絡狀態702具有跨過第一路徑p1、708和第二路徑p2、710的流(由虛線表示的流),其中業務的五個數據單元沿著第一路徑p1、708和第二路徑p2、710中的每個路徑流動(例如,在圖7中示出為“5”)。在圖7的示例中,其遵循:業務tf=10,路徑集合Pf={p1=s1s2s3s5,p2=s1s2s5},f的轉發狀態為Rf={rf,p1=5,rf,p2=5}。圖7還圖示網絡700的目標網絡狀態704具有跨相同的第一路徑p1、708和新的第三路徑p3、712的流。目標網絡狀態704不包括來自觀察網絡狀態702的舊的第二路徑p2、710。例如,網絡更新服務102可以與可以在廣域網(WAN)中使用的基于隧道的轉發相關聯地使用前述段落中的表示。例如,網絡更新服務102還可以與可以在數據中心網絡(DCN)中使用的WCMP轉發相關聯地使用前述段落中的表示。在基于隧道的轉發中,流可以通過多個路徑轉發。入口交換設備(例如,圖7中的交換設備706(1)/s1)可以(i)例如基于數據分組報頭將傳入業務匹配到流,以及(ii)基于權重跨越多個路徑劃分傳入業務。在沿著路徑轉發數據分組之前,入口交換設備可以用路徑標識符標記數據分組。隨后的交換設備(例如,沿著第一路徑p1、708的交換設備706(2)/s2和706(3)/s3)可以基于路徑標識符來轉發數據分組,并且出口交換設備(例如,圖7中的交換設備706(5)/s5)可以在數據分組到達之后去除路徑標識符。因此,對于基于隧道的轉發,Pf是路徑(或隧道)的集合,并且路徑的權重是rf,p/tf(例如,對于第一路徑p1、708和第二路徑p2、710中的每個路徑的在圖7中五除以十或者50%的權重)。在WCMP轉發中,在沿著路徑的每一跳處的交換設備可以匹配分組報頭并且在具有設置權重的一個或多個下一跳上劃分流。最短路徑和等成本多路徑(ECMP)轉發是示例類型的WCMP轉發。對于WCMP轉發,網絡更新服務102可以使用如下等式(1)來計算鏈路l上的流的業務速率:然后在交換機si處,可以使用如下等式(2)來確定針對下一跳sj的權重:這里lij是從si到sj的鏈路,Li是從si開始的鏈路集合。例如,在圖7的觀察網絡狀態702中,w1;2=1,w1;4=0,w2;3=0.5,以及w2;5=0.5。如以上討論的,網絡更新服務102可以被配置為接收當前(例如,觀察)網絡狀態NSc,目標網絡狀態NSt以及與一個或多個一致性屬性相關聯的一個或多個約束作為輸入。網絡更新服務102然后可以確定(例如,計算)使網絡的狀態從當前網絡狀態NSc(例如,圖7中的702)過渡到目標狀態NSt(例如,圖7中的704)的更新操作的集合(例如,基于變化110),并且將更新操作彼此鏈接以構建更新依賴圖,使得在實現網絡更新時不違反約束。因此,狀態過渡是可靠且安全的。對于這些示例數據轉發實現,除了操作節點和資源節點之外,圖形生成模塊208還可以被配置為在更新依賴圖中包括路徑節點。路徑節點可以通過對與單獨路徑相關聯的更新操作和/或鏈路容量資源進行分組來進一步組織更新依賴圖。路徑節點可以連接到操作節點和/或資源節點。從操作節點到路徑節點的邊可以是操作依賴性或資源依賴性。作為調度過程的一部分,釋放鏈路資源的路徑節點可以具有相關聯的“已提交”標簽,其指示當網絡從觀察網絡狀態過渡到目標網絡狀態時正在遠離路徑的業務量。在業務被移走之后,提交的標簽可以用于更新可用資源的量。圖8圖示基于圖7所示的狀態過渡被生成用于基于隧道的轉發的示例更新依賴圖800。圖形生成模塊208可以基于被限定用于確保禁止網絡的黑洞的約束來生成更新依賴圖800。在各種實施例中,約束可以指示:(i)應當在入口交換設備將業務應用于新路徑之前完全建立新的路徑,以及(ii)從要在從任何下游交換設備去除路徑之前被刪除的路徑去除所有業務。圖形生成模塊208可以如下基于前面段落中規定的約束來生成更新依賴圖800。對于每個流f,使用NSc和NSt,圖形生成模塊208可以確定要添加和/或要刪除的路徑,并且可以為每個添加和/或刪除的路徑生成路徑節點。然后,圖形生成模塊208可以針對各個跳躍生成操作節點,并且添加(i)從操作節點到路徑節點或(ii)從路徑節點到操作節點的邊,從而指示在交換設備處添加或刪除路徑。圖形生成模塊208可以生成改變路徑權重的操作節點,使得權重對應于在入口交換設備處的NSt中規定的權重。為了確保禁止黑洞,圖形生成模塊208可以從每個路徑節點添加邊,該路徑節點向改變路徑權重的操作節點添加新的隧道。此外,圖形生成模塊208可以將來自改變路徑權重的操作節點的邊添加到刪除舊的路徑的每個路徑節點。如上面關于圖7所討論的,觀察網絡狀態702的第一路徑p1、708和第二路徑p2、710上的路徑權重分別為0.5和0.5。在目標網絡狀態704下,添加路徑(例如,第三路徑p3、712),并且刪除路徑(例如,第二路徑p2、710),并且路徑權重在第一路徑p1、708上變為0.5并且在第三路徑p3、712上變為0.5。為了生成用于該過渡的更新依賴圖800,圖形生成模塊208可以生成路徑節點802,例如,對應于第二路徑p2,710的三角形節點,其是要經由圖7的狀態過渡來刪除的路徑。圖形生成模塊208還可以生成路徑節點804,例如,對應于第三路徑p3,712的三角形節點,其是要經由圖7的狀態過渡來添加的路徑。圖形生成模塊208還可以生成:與以下表1中規定的操作A相關聯的操作節點806、與以下表1中規定的操作B相關聯的操作節點808、與以下表1中規定的操作C相關聯的操作節點810、與以下表1中規定的操作D相關聯的操作節點812、與以下表1中規定的操作E相關聯的操作節點814、與以下表1中規定的操作F相關聯的操作節點816、以及與以下表1中規定的操作G相關聯的操作節點818。表1索引操作A在s1添加p3B在s4添加p3C在s5添加p3D改變s1處的權重E刪除s1處的p2F刪除s2處的p2G刪除s5處的p2如表1所示,圖形生成模塊208生成更新依賴圖800,使得在與操作節點806、808和810相關聯的操作A、B和C成功完成之后完全建立新的路徑p3(例如,路徑節點804)。更新依賴圖800因此指示在s1(例如,交換設備706(1))處的路徑權重可以被切換(例如,經由對應于節點812的操作D),使得在刪除舊的路徑p2之前去除業務(例如,經由分別與操作節點814、816和818相關聯的操作E、F和G)。如在更新依賴圖800中所示,圖形生成模塊208通過添加以下各項來定義依賴性:(i)來自向相應路徑節點804添加路徑的操作節點806、808和810的邊,以及(ii)去往從相應路徑節點802刪除路徑的操作節點814、816和818的邊。圖形生成模塊208還通過將來自路徑節點804的邊添加到權重改變操作節點812并且將來自權重更改操作節點812的邊添加到路徑節點802來定義依賴性。除了上面關于基于隧道的轉發所討論的約束之外,還可以定義資源約束(例如,最大鏈路容量、交換設備的最大存儲容量等)。在各種實施例中,資源約束可以引起圖8中的更新依賴圖800具有資源節點(例如,矩形節點)。圖8中的資源節點被標記為指示當前可用資源量。例如,資源節點820指示在圖7的觀察網絡狀態702下的s1和s4之間的鏈路具有十個可用(例如,空閑)單元。類似地,資源節點822指示在圖7的觀察網絡狀態702下的s4和s5之間的鏈路具有十個可用(例如,空閑)單元。從資源節點820到路徑節點804的邊被標記為指示需要五個單元來添加第三路徑p3712。從資源節點822到路徑節點804的邊也被標記為指示需要五個單元來添加第三路徑p3712。此外,從路徑節點802到資源節點824和資源節點826的邊被標記為在刪除路徑p2時指示五個單元被釋放給(i)在s1與s2之間的鏈路(其在觀察網絡狀態下具有零可用性,如經由資源節點824指示的)以及(ii)s2與s5之間的鏈路(其在觀察網絡狀態下有五個單元可用,如經由資源節點826指示的)。如以上討論的,指示可以被稱為指示移動遠離路徑的業務量的提交標簽。圖形生成模塊208還在從路徑節點804到操作節點812的邊上添加標簽(例如,在s1處改變路徑權重的操作D),以指示經由路徑節點804添加五個單元的業務。此外,從操作節點812到路徑節點802的邊上的標簽指示經由路徑節點802去除五個單元的業務。對于與設備(例如,交換設備)的存儲器相關聯的資源節點,如果相關聯的更新操作在設備處消耗存儲器,則圖形生成模塊208可以將來自資源節點的邊添加到操作節點,并且圖形生成模塊208用指示由更新操作消耗的存儲器量的權重來標記邊。相反,如果相關聯的更新操作在設備處釋放存儲器,則圖形生成模塊208可以將邊從操作節點添加到資源節點,并且圖形生成模塊208利用指示所釋放的存儲器量的權重來標記邊。在WCMP轉發中,圖形生成模塊208可以基于從NSc到NSt的過渡來確定要更新的每個流的權重改變操作。圖形生成模塊208基于與分組一致性網絡一致性屬性相關聯的約束來生成這些權重改變操作之間的依賴邊。示例算法1可以由圖形生成模塊208使用以生成示例更新依賴圖以確保分組一致性(例如,在WCMP網絡中)。在示例算法1中,舊版本號表示可以作為NSc的部分的舊路由規則,并且新版本號表示可以作為NSt的部分的新路由規則。算法1-v0:舊版本號-v1:新版本號使用示例算法1,入口交換設備被配置為用版本號標記每個數據分組,并且下游交換設備基于版本號處理數據分組。這確保了每個數據分組根據舊的路由規則或新的路由規則被路由(即,數據分組不是基于規則的混合來被路由)。示例算法1產生三種類型的操作:第一類型,其中入口交換設備標記具有新版本號的數據分組并且使用新的權重(示例算法1的行3);第二類型,其中下游交換設備具有用于處理具有新版本號和新權重的數據分組的規則(示例算法1的行6);以及第三類型,其中下游交換設備刪除舊版本號的規則(示例算法1的行7)。因此,如果以上規定的第一類型的操作在以上規定的第二類型的操作(示例算法1的行8)之后發生,并且如果以上規定的第三類型的操作在第一類型的操作(示例算法1的行9)之后發生,則確保分組相干性。示例算法1的行5是示例性優化,其指定在舊的路由規則和新的路由規則兩者中的流僅具有一個下一跳的交換設備處可能不需要變化。更新依賴圖在被生成和/或更新以反映與變化110相關聯的更新操作之后,調度模塊210使用更新依賴圖來實現網絡更新(例如,發出用于各種設備執行更新操作的更新指令和/或命令)。更新依賴圖可以提供多個不同的可接受順序,這些順序用于實現網絡更新,使得不違反約束,并且不同的順序可以與不同的完成時間相關聯(例如,按照排序完成更新操作的集合所花費的時間量)。因此,在各種實施例中,調度模塊210被配置為標識更新依賴圖中的可能將花費最長時間量來完成的排序,并且發起對所標識的排序的調度以最小化該最長時間量。這可以被稱為關鍵路徑調度。為了實現關鍵路徑調度,調度模塊210可以使用本文中提供的示例算法2:算法2表2中如下規定示例算法2中的符號和/或變量:表2符號描述Oi操作節點iRj資源節點jRj.freeRj的自由容量Pk路徑節點kPk.committed移動遠離路徑k的業務lij從節點i到節點j的邊權重由于更新依賴圖中的資源節點和/或路徑節點可以用于表達約束,因此在計算關鍵路徑時,調度模塊210向資源節點和/或路徑節點分配權重w=0。相反,調度模塊210向操作節點分配權重w=1,并且如下在等式(3)所示的更新依賴圖中為每個節點i計算關鍵路徑長度CPLi:在各種實施例中,調度模塊210可以實現更新依賴圖中的節點的拓撲排序,并且然后在節點上進行迭代以使用等式(3)以反向拓撲順序計算CPLi。這可以以線性時間有效地實現。因此,可以基于示例算法2來實現更新操作的調度。例如,每當調度模塊210開始調度時,調度模塊210可以首先通過去除更新依賴圖中可以與不再作為瓶頸的資源相關聯的完成的更新操作和/或邊來更新更新依賴圖(示例算法2中的行2)。然后,調度模塊210計算各個節點的CPL(示例算法2中的行3),并且按照CPL的降序對節點進行排序(示例算法2中的行4)。如果操作節點的操作依賴性和/或資源依賴性被滿足(示例算法2中的行6和7),則調度模塊210隨后在操作節點上迭代并且調度操作節點。最后,調度模塊210可以在開始下一循環之前等待一段時間或者等待調度更新操作完成(示例算法2中的行8)。在各種實施例中,調度模塊210對作為有向無環圖(DAG)的更新依賴圖執行關鍵路徑調度,使得其不具有循環依賴性。本文中提供的示例算法3和示例算法4示出了用于調度用于以上討論的基于隧道的轉發的具體實現的更新操作的偽代碼。算法3——CanScheduleOperation(Oi)示例算法3確定更新操作Oi是否準備好被調度,并且還相應地更新資源節點和/或路徑節點的資源級別。如果Oi是路徑(例如,隧道)添加操作,則調度模塊210可以在Oi不具有父節點(示例算法3中的行2和3)或者其父資源節點指示足夠可用(例如,空閑)資源(示例算法3中的行4到8)的情況下調度Oi。如果Oi是路徑刪除操作,則調度模塊210可以在Oi沒有父節點s(示例算法3中的行11和行12)的情況下調度Oi。在各種實施例中,路徑刪除操作不具有作為父節點的資源節點,因為它們釋放資源(例如,存儲器資源、鏈路資源等)。如果Oi是權重改變操作,則調度模塊210在業務增加的路徑上收集空閑容量并且將業務移動到它們(示例算法3中的行14到34)。調度模塊210然后在每個父路徑節點進行迭代并且獲得路徑的可用資源(示例算法3中的行16到27)。這涉及能夠被移動到路徑的業務量。然后,調度模塊210將路徑總計為調度模塊210可以針對該流移動的總業務量(示例算法3中的行26)。最后,調度模塊210對子路徑節點進行迭代(示例算法3中的行30到33),并且減少由Pj表示的路徑上的“Pj.committed”業務(示例算法3中的行31)。算法4——UpdateGraph(G)示例算法4基于在更新網絡的最后一輪中完成的更新操作來更新調度之前的更新依賴圖。比如,調度模塊210接收完成的更新操作并且更新更新依賴圖中的相關節點(示例算法4中的行1到22)。如果操作節點添加路徑,則調度模塊210刪除操作節點及其邊(示例算法4中的行2和行3)。如果操作節點刪除路徑,則規則空間被釋放,并且調度模塊210更新資源節點(示例算法4中的行5和6),并且刪除操作節點(示例算法4中的行7)。如果操作節點改變權重,則調度模塊210對于每個子路徑節點,向鏈路釋放資源(示例算法4中的行11和12),并且如果資源被釋放則刪除邊(示例算法4中的行13和14)。然后,調度模塊210將正在移動離開該路徑Pj.committed的業務量重置為零(示例算法4中的行15)。一旦調度模塊210將業務從該路徑移開,則調度模塊210刪除路徑節點(示例算法4中的行16和17)。類似地,調度模塊210檢查父路徑節點(示例算法4中的行18到20)。如果調度模塊210已將所有業務移動到路徑中,則調度模塊210刪除路徑節點(示例算法4中的行19和行20)。如果父路徑節點被去除,則該流的權重改變已經完成,并且調度模塊210將其從更新依賴圖中去除(示例算法4中的行22)。在利用完成的更新操作更新更新依賴圖之后,調度模塊210檢查資源節點(示例算法4中的行23到26)并且刪除來自未被作為瓶頸的資源(示例算法4中的行24到26)的邊。在各種實施例中,更新依賴圖可以包括循環依賴。例如,由于定義的資源約束,一組節點(例如,具有兩個或更多個操作節點的組)之間的依賴性可能創建圓,因此關鍵路徑可能變為無限。此外,循環依賴性可能導致調度死鎖,調度死鎖停止網絡更新的進展。圖9圖示其中在更新依賴圖中可能發生循環依賴性的示例圖900。也就是說,第一操作節點902在實現時可以向與第一資源節點904相關聯的資源釋放資源,但是可能要求與第二資源節點906相關聯的資源在實現之前具有足夠的可用資源。然而,與第二操作節點908相關聯的更新操作可以要求與第一資源節點904相關聯的資源在被實現之前具有足夠的可用資源,并且上述資源可能不具有足夠的資源可用性,直到與更新操作節點902相關聯的更新操作被完成。此外,與第二資源節點906相關聯的資源可能無法向操作節點902提供可用資源,直到操作節點908被完成。因此,產生循環依賴性。在其中更新依賴圖包括一個或多個循環依賴性的實施例中,調度模塊210可以被配置為(i)確定在更新依賴圖中發生循環依賴,以及(ii)將循環依賴表示為更新依賴圖中的單個邏輯節點910。因此,調度模塊210可以被配置為例如使用上面提供的示例算法2調度邏輯節點910作為DAG的一部分。在一些情況下,邏輯節點910可以被稱為強連接組件(SCC),其是更新依賴圖的子部分,其中每個包括性節點具有到被包括在SCC中的其他節點的路徑。如果SCC在更新依賴圖中被表示為邏輯節點,則調度模塊210可以如以上討論地計算CPL并且實現關鍵路徑調度。在一些情況下,SCC可以與多個循環依賴性相關聯。例如,兩個或更多個循環依賴可以交疊,使得至少一個節點(例如,操作節點)可以是作為兩個或更多個循環依賴性的一部分的交叉節點。因此,調度模塊210可以調度第一循環依賴性的更新操作,然后使用交叉節點用于為至少第二循環依賴性調度更新操作。在各種實施例中,當計算CPL時,調度模塊210可以使用SCC中包括的多個操作節點(例如,圖9中的數量為兩個)作為相應邏輯節點的權重。因此,調度模塊210可以被配置為評估權重,使得優選包括有更大SCC(例如,更多操作節點)的排序。作為示例,調度模塊210可以實現兩個修改以將SCC并入到DAG調度中。首先,算法2的行5處的“針對”循環在虛擬更新依賴圖中的所有節點(例如,具有單獨表示為邏輯節點的一個或多個循環依賴性的更新依賴圖)上迭代。當節點被選擇并且如果它是單個節點時,調度模塊210可以直接調用CanScheduleOperation(Oi)。如果所選節點是邏輯節點(例如,邏輯節點910),則調度模塊210可以在SCC中的操作節點上進行迭代并且相應地調用功能。在一些實現中,調度模塊210可以使用中心性方法來決定迭代的順序。使用中心性方法,調度模塊210標識可以作為多個循環依賴性的一部分的SCC的中央節點(例如,上述的交叉節點),并且調度模塊210可以在更新過程中在早期調度中央節點,使得可以實現來自多個循環依賴性的更新操作,并且可以更有效地調度和/或完成SCC。由調度模塊210實現的第二修改涉及當路徑節點消耗鏈路資源或隧道添加操作消耗交換機資源的情況。這種資源消耗可以經由(i)與消耗資源的路徑節點或隧道添加操作在相同SCC中,或(ii)是獨立節點(不在任何SCC中)的節點來實現。該啟發方法有助于防止通過向SCC外部的節點分配資源而引起的死鎖。因此,利用上述調度算法(例如,算法2),調度模塊210可以解決SCC。然而,在一些情況下,調度模塊210可能仍然遇到死鎖,在這種情況下,SCC中沒有操作能夠進行。這可能是因為(i)調度算法可能無法在各種排序中找到可行解并且可能被卡住,或者(2)即使目標狀態是有效狀態,可行解可能仍然不存在。在各種實現中,調度模塊210可通過減小流率(例如,通過引入速率限制器)來解決死鎖。降低流率釋放允許去除隧道的路徑上的鏈路資源。繼而,交換設備存儲器資源可以被釋放,并且這允許完成先前例如由于不可用的資源而被死鎖的一些操作。作為速率限制器的結果,調度算法210可以部分地實現更新操作,例如使用完全實現更新操作所需的總資源量的一部分。示例算法5示出了用于解決基于隧道的網絡的死鎖的過程。參數k*確定調度模塊210每次速率限制的流的最大數量,并且調度模塊210控制解決死鎖的時間與吞吐量損失量之間的權衡。算法5——速率極限(SCC,k*)調度模塊210迭代SCC中的多達k*個權重改變節點,每個節點對應于流(示例算法5中的行2到8)。迭代的順序可以基于上面討論的中心性方法。對于每個權重改變節點Oi,調度模塊210在子路徑節點Pj上迭代。調度模塊210通過lij(示例算法5中的行5)來減少Pj上的速率,并且因此增加路徑上的鏈路(示例算法5中的行6到7)的空閑資源。然后,調度模塊210從圖中刪除Pj(示例算法5中的行8)。圖10圖示在更新依賴圖中調度循環依賴性的操作更新的示例過程1000。圖10中的示例操作可以參考圖1到圖9的任一個圖中所示的模塊、組件和/或元件來描述。在1002,調度模塊210可以確定在更新依賴圖中的兩個或更多個操作節點之間發生循環依賴性(例如,SCC)。更新依賴圖還可以包括資源節點和/或路徑節點。在1004,調度模塊210將循環依賴性表示為單個邏輯節點(例如,節點910)。通過將循環依賴性表示為單個邏輯節點,則更新依賴圖可以變為DAG。在1006,當調度以實現單個邏輯節點時,調度模塊210從循環依賴性中的操作節點中選擇操作節點(例如,節點902或節點908)作為循環依賴性起始點。根據上面討論的中心性方法,調度模塊210可以被配置為標識并且選擇交叉節點作為循環依賴性起始點。在1008,調度模塊210使用循環依賴性開始點來實現與循環依賴性中的其他操作節點相關聯或者經由交叉節點重疊的多個循環依賴性中的更新操作。示例實現實現A,一種方法包括:用于使網絡的狀態從觀察網絡狀態過渡到目標網絡狀態的更新操作的集合;確定被定義用于在網絡的狀態從觀察網絡狀態到目標網絡狀態的過渡期間確保網絡的可靠性的一個或多個約束;由一個或多個硬件處理器生成并且至少部分基于一個或多個約束來定義更新依賴圖,更新依賴圖定義更新操作的集合的至少一個子集之間的依賴關系,其中更新依賴圖定義能夠響應于來自更新操作的集合的至少兩個父更新操作中的一個父更新操作的成功完成來調度來自更新操作的集合的至少一個子更新操作;調度至少兩個父更新操作中的第一父更新操作;調度至少兩個父更新操作中的第二父更新操作;接收第一父更新操作或第二父更新操作中的一個父更新操作成功完成的指示;以及響應于接收到指示使用更新依賴圖動態地調度至少一個子更新操作。實現B,實現A的方法,其中一個或多個約束中的至少一個約束被定義用于避免通過以特定順序調度更新操作的子集來丟棄數據分組。實現C,實現A或實現B的方法,其中一個或多個約束中的至少一個約束被定義用于避免通過以特定順序調度更新操作的子集來循環數據分組。實現D,實現A到C中的任一項的方法,其中一個或多個約束中的至少一個約束被定義用于避免使用舊路由指令和新路由指令的混合來傳送數據分組。實現E,實現A到D中的任一項的方法,其中一個或多個約束中的至少一個約束是將網絡中的兩個設備之間的單獨鏈路上的負載限制為最大容量的資源約束,其中資源約束被定義用于避免網絡擁塞。實現F,實現A到E中的任一項的方法,其中一個或多個約束中的至少一個約束是將設備的存儲器負載限制為最大容量的存儲器約束。實現G,實現A到F中的任一項的方法,其中該組更新操作的單獨更新操作直接或間接地改變網絡的一個或多個狀態變量值。實現H,實現A到G中的任一項的方法,其中更新依賴圖包括多個節點,并且方法還包括:確定第一父更新操作或第二父更新操作中的至少一個與作為通過更新依賴圖的最長路徑的部分的節點相關聯;以及通過至少部分基于與作為最長路徑的部分的節點的關聯來調度第一父更新操作或第二父更新操作中的至少一個,開始網絡更新以使網絡從觀察網絡狀態過渡到目標網絡狀態。實現I,一個或多個存儲計算機可執行指令的計算機存儲介質,計算機可執行指令在由一個或多個處理器執行時將一個或多個處理器編程用于:確定用于使網絡的狀態從觀察網絡狀態過渡到目標網絡狀態的更新操作的集合;確定被定義用于在網絡的狀態從觀察網絡狀態到目標網絡狀態的過渡期間確保網絡的可靠性的一個或多個約束;至少部分基于一個或多個約束至少生成第一排序和第二排序,更新操作的集合的第一子集能夠以第一排序被調度,并且更新操作的集合的第二子集能夠以第二排序被調度,其中至少一個更新操作被包括在更新操作的第一子集和更新操作的第二子集兩者中;調度更新操作的第一子集的第一排序;接收第一排序的更新操作失敗或延遲的指示;以及動態地調度第二排序使得更新操作的第一子集和更新操作的第二子集兩者中包括的至少一個更新操作經由第二排序被成功地完成。實現J,實現I的一種或多種計算機存儲介質,其中第一排序和第二排序是更新依賴圖中包括一個或多個節點的一部分,所述一個或多個節點指示用于與單個更新操作相關聯的設備或鏈路的可用能力。實現K,實現J的一個或多個計算機存儲介質,其中第一排序和第二排序是更新依賴圖中指示完成單個更新操作所需要的資源量的一部分。實現L,實現J或實現K的一個或多個計算機存儲介質,其中第一排序和第二排序是更新依賴圖中指示在單個更新操作完成之后被釋放的資源量的一部分。實現M,一個或多個設備,包括:一個或多個處理器;一個或多個存儲器;圖形生成模塊,其存儲在一個或多個存儲器上并且由一個或多個處理器來執行,用于維持一個或多個排序,更新操作的集合能夠以一個或多個排序被調度以使網絡的狀態從觀察網絡狀態過渡到目標網絡狀態;以及調度模塊,其存儲在一個或多個存儲器上并且由一個或多個處理器來執行,用于至少部分基于與更新操作的集合中的至少一個先前調度的更新操作相關聯的反饋來動態地選擇更新操作的集合中的一個或多個下一更新操作用于調度。實現N,實現M的一個或多個設備,其中反饋包括至少一個先前調度的更新操作被延遲的指示。實現O,實現M的一個或多個設備,其中反饋包括至少一個先前調度的更新操作已經失敗的指示。實現P,實現M的一個或多個設備,其中反饋包括至少一個先前調度的更新操作已經被成功完成的指示。實現Q,實現M到P中的任一項的一個或多個設備,其中調度模塊在過渡的運行時間實現期間訪問更新依賴圖以動態地選擇一個或多個下一更新操作。實現R,實現Q的一個或多個設備,其中更新依賴圖至少部分基于被定義用于以下各項的一個或多個約束來生成:避免丟棄在作為網絡中的通信路徑的部分的交換設備處的數據分組;避免根據與觀察網絡狀態相關聯的舊的規則以及與目標網絡狀態相關聯的新的規則來路由在作為網絡中的通信路徑的部分的交換設備處的數據分組;避免使數據分組在網絡內循環;避免網絡中的兩個設備之間的一個或多個單獨的鏈路的擁塞;或者避免設備的存儲器過載。實現S,實現Q或實現R的一個或多個設備,其中更新依賴圖包括表示至少兩個循環依賴的強連接的分量,并且調度模塊標識強連接分量的交叉節點以開始屬于強連接分量的更新操作的調度。實現T,實現Q到S中的任一項的一個或多個設備,其中更新依賴圖包括表示一個或多個循環依賴的強連接分量,并且調度模塊部分限制自由消耗以實現強連接的分量的一個或多個更新操作。總結盡管本公開可以使用特定于結構特征和/或方法動作的語言,但是本發明不限于本文中描述的具體特征或動作。相反,具體的特征和動作被公開為實現本發明的說明性形式。當前第1頁1 2 3