用于轉(zhuǎn)換通用流的機箱控制器的制造方法
【專利摘要】描述了一種用于生成用于管理第一和第二管理轉(zhuǎn)發(fā)元件的物理控制平面數(shù)據(jù)的網(wǎng)絡(luò)控制系統(tǒng),第一和第二管理轉(zhuǎn)發(fā)元件實現(xiàn)與第一邏輯數(shù)據(jù)路徑集合相關(guān)聯(lián)的轉(zhuǎn)發(fā)操作。該系統(tǒng)包括用于將第一邏輯數(shù)據(jù)路徑集合的邏輯控制平面數(shù)據(jù)轉(zhuǎn)換為通用物理控制平面(UPCP)數(shù)據(jù)的第一控制器實例。該系統(tǒng)還包括用于將UPCP數(shù)據(jù)轉(zhuǎn)換為第一管理轉(zhuǎn)發(fā)元件而不是第二管理轉(zhuǎn)發(fā)元件的自定義物理控制平面(CPCP)數(shù)據(jù)的第二控制器實例。該系統(tǒng)還包括用于接收由第一控制器實例所生成的UPCP數(shù)據(jù)、將第二控制器實例標識為負責(zé)生成第一管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù)的控制器實例、以及將接收到的UPCP數(shù)據(jù)提供到第二控制器實例的第三控制器實例。
【專利說明】用于轉(zhuǎn)換通用流的機箱控制器
【背景技術(shù)】
[0001]許多當前企業(yè)具有支持各種連接、應(yīng)用和系統(tǒng)的包括交換機、中樞節(jié)點、路由器、服務(wù)器、工作站及其他網(wǎng)絡(luò)設(shè)備的大型并且復(fù)雜的網(wǎng)絡(luò)。計算機聯(lián)網(wǎng)的增加的復(fù)雜化,包括虛擬機遷移、動態(tài)工作負荷、多租期,以及特定于客戶的服務(wù)質(zhì)量和安全配置,要求網(wǎng)絡(luò)控制的更好的范例。網(wǎng)絡(luò)傳統(tǒng)上是通過單個組件的低級別的配置來管理的。網(wǎng)絡(luò)配置常常取決于基礎(chǔ)網(wǎng)絡(luò):例如,利用訪問控制列表(“ACL”)條目阻止用戶的訪問要求知道用戶的當前IP地址。更復(fù)雜的任務(wù)要求更加詳盡的網(wǎng)絡(luò)知識:強制來賓用戶的端口 80流量遍歷HTTP代理要求知道當前網(wǎng)絡(luò)拓撲和每一個來賓的位置。在網(wǎng)絡(luò)交換元件跨多個用戶共享的情況下,此過程增大了困難。
[0002]作為響應(yīng),存在朝著被稱為“軟件定義的聯(lián)網(wǎng)”(SDN)的新的網(wǎng)絡(luò)控制范例的日益增長的移動。在SDN范例中,在網(wǎng)絡(luò)中的一個或多個服務(wù)器上運行的網(wǎng)絡(luò)控制器控制、維護,并實現(xiàn)控制邏輯,該控制邏輯在每個用戶的基礎(chǔ)上管轄共享的網(wǎng)絡(luò)交換元件的轉(zhuǎn)發(fā)行為。做出網(wǎng)絡(luò)管理決策常常要求了解網(wǎng)絡(luò)狀態(tài)。為促進管理決策做出,網(wǎng)絡(luò)控制器創(chuàng)建并維護網(wǎng)絡(luò)狀態(tài)的視圖,并提供應(yīng)用編程接口,管理應(yīng)用可以通過應(yīng)用編程接口訪問網(wǎng)絡(luò)狀態(tài)的視圖。
[0003]維護大型網(wǎng)絡(luò)(包括數(shù)據(jù)中心和企業(yè)網(wǎng)絡(luò)兩者)的一些主要目標是可縮放性、遷移性、以及多租期。為滿足這些目標中的一個所采取的許多方法導(dǎo)致妨礙其他目標中的至少一個。例如,可以輕松地為L2域內(nèi)的虛擬機提供網(wǎng)絡(luò)遷移性,但是L2域不能縮放到大型尺寸。此外,保持用戶的隔離也大大地使遷移性復(fù)雜化。如此,需要可以滿足可縮放性、遷移性以及多租期目標的改善的解決方案。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的一些實施例提供了允許通過一個或多個共享的轉(zhuǎn)發(fā)元件為若干不同的用戶指定若干不同的邏輯數(shù)據(jù)路徑(LDP)集合而不允許不同的用戶控制或者甚至查看彼此的轉(zhuǎn)發(fā)邏輯的網(wǎng)絡(luò)控制系統(tǒng)。這些共享的轉(zhuǎn)發(fā)元件在下面被稱為管理交換元件或管理轉(zhuǎn)發(fā)元件,因為它們是由網(wǎng)絡(luò)控制系統(tǒng)管理的,以便實現(xiàn)LDP集合。
[0005]在一些實施例中,網(wǎng)絡(luò)控制系統(tǒng)包括允許系統(tǒng)從用戶接受LDP集合并配置交換元件以實現(xiàn)這些LDP集合的一個或多個控制器(在下面也被稱為“控制器實例”)。這些控制器允許系統(tǒng)以在共享相同的管理交換元件的同時防止不同的用戶查看或控制彼此的LDP集合和邏輯網(wǎng)絡(luò)的方式虛擬化對共享的交換元件以及由這些共享的交換元件之間的連接所定義的邏輯網(wǎng)絡(luò)的控制。
[0006]在一些實施例中,每一個控制器實例是執(zhí)行一個或多個模塊的設(shè)備(例如,通用計算機),這一個或多個模塊將用戶輸入從邏輯控制平面(LCP)轉(zhuǎn)換為邏輯轉(zhuǎn)發(fā)平面(LFP)數(shù)據(jù),然后將LFP數(shù)據(jù)轉(zhuǎn)換為物理控制平面(PCP)數(shù)據(jù)。在一些實施例中,這些模塊包括控制模塊和虛擬化模塊??刂颇K允許用戶指定并填充邏輯數(shù)據(jù)路徑集合(LDPS),而虛擬化模塊通過將LDPS映射到物理交換基礎(chǔ)結(jié)構(gòu)來實現(xiàn)指定的LDPS。在一些實施例中,控制模塊和虛擬化模塊是兩個單獨的應(yīng)用,而在其他實施例中,它們是同一個應(yīng)用的一部分。
[0007]在一些實施例中,控制器的控制模塊從用戶或另一個源接收描述LDPS的LCP數(shù)據(jù)(例如,描述與邏輯交換元件相關(guān)聯(lián)的連接的數(shù)據(jù))。然后,控制模塊將此數(shù)據(jù)轉(zhuǎn)換為LFP數(shù)據(jù),然后LFP數(shù)據(jù)被提供給虛擬化模塊。然后,虛擬化模塊從LFP數(shù)據(jù)生成PCP數(shù)據(jù)。PCP數(shù)據(jù)被傳播到管理交換元件。在一些實施例中,控制模塊和虛擬化模塊使用nLog引擎從LCP數(shù)據(jù)生成LFP數(shù)據(jù)以及從LFP數(shù)據(jù)生成PCP數(shù)據(jù)。
[0008]一些實施例的網(wǎng)絡(luò)控制系統(tǒng)使用不同的控制器來執(zhí)行不同的任務(wù)。例如,在一些實施例中,網(wǎng)絡(luò)控制系統(tǒng)使用三種類型的控制器。第一控制器類型是應(yīng)用協(xié)議接口(API)控制器。API控制器負責(zé)通過API調(diào)用從用戶接收配置數(shù)據(jù)和用戶查詢并對用戶查詢做出響應(yīng)。API控制器還將接收到的配置數(shù)據(jù)傳播到其他控制器。如此,一些實施例的API控制器充當用戶和網(wǎng)絡(luò)控制系統(tǒng)之間的接口。
[0009]第二類型的控制器是負責(zé)通過計算通用流條目來實現(xiàn)LDP集合的邏輯控制器,其中,通用流條目是實現(xiàn)LDP集合的管理交換元件的流條目的通用表示。在一些實施例中,邏輯控制器不直接與管理交換元件進行交互,而是將通用流條目推送到第三類型的控制器(物理控制器)。
[0010]不同實施例中的物理控制器具有不同的職責(zé)。在一些實施例中,物理控制器從通用流條目生成自定義流條目,并將這些自定義流條目下推送到管理交換元件。在其他實施例中,物理控制器對于特定的管理物理交換元件標識負責(zé)為特定的交換元件生成自定義流條目的第四類型的控制器(機箱控制器),并將物理控制器從邏輯控制器接收到的通用流條目轉(zhuǎn)發(fā)到機箱控制器。然后,機箱控制器從通用流條目生成自定義流條目,并將這些自定義流條目推送到管理交換元件。在另一些其他實施例中,物理控制器為一些管理交換元件生成自定義流條目,同時指示機箱控制器為其他管理交換元件生成這樣的流條目。
[0011]前面的“
【發(fā)明內(nèi)容】
”旨在充當本發(fā)明的一些實施例的簡介。它不是本文中所公開的所有獨創(chuàng)性的主題的介紹或概覽。隨后的“【具體實施方式】”以及在“【具體實施方式】”中參考的附圖將進一步描述在“
【發(fā)明內(nèi)容】
”中所描述的實施例以及其他實施例。相應(yīng)地,為理解由此文檔所描述的所有實施例,需要完整地閱讀“
【發(fā)明內(nèi)容】
”、“【具體實施方式】”以及“附圖”。此外,所要求保護的主題將不受“
【發(fā)明內(nèi)容】
”、“【具體實施方式】”以及“附圖”中的說明性細節(jié)限制,而是將由所附權(quán)利要求書來定義,因為在不偏離主題的精神的情況下,所要求保護的主題可以以其他具體形式來實現(xiàn)。
【專利附圖】
【附圖說明】
[0012]在所附的權(quán)利要求中闡述了本發(fā)明的新穎的特征。然而,為了說明的目的,在下面的附圖中闡述了本發(fā)明的若干實施例。
[0013]圖1示出了本發(fā)明的一些實施例的虛擬化網(wǎng)絡(luò)系統(tǒng)。
[0014]圖2示出了多用戶服務(wù)器托管系統(tǒng)的交換機基礎(chǔ)結(jié)構(gòu)。
[0015]圖3示出了管理邊緣交換元件的網(wǎng)絡(luò)控制器。
[0016]圖4示出了跨一組交換元件實現(xiàn)的多個邏輯交換元件的示例。
[0017]圖5示出了控制管理交換元件的指令通過控制器實例的各種處理層的傳播。
[0018]圖6示出了一些實施例的多實例、分布式網(wǎng)絡(luò)控制系統(tǒng)。[0019]圖7示出了為交換元件指定主控控制器實例的示例。
[0020]圖8示出了多個控制器實例的示例操作。
[0021]圖9在概念上示出了輸入轉(zhuǎn)換應(yīng)用的軟件體系結(jié)構(gòu)。
[0022]圖10示出了本發(fā)明的一些實施例的控制應(yīng)用。
[0023]圖11示出了本發(fā)明的一些實施例的虛擬化應(yīng)用。
[0024]圖12在概念上不出了 RE輸出表中的不同的表。
[0025]圖13示出了本發(fā)明的一些實施例的控制應(yīng)用和虛擬化應(yīng)用的表映射操作的簡化視圖。
[0026]圖14示出了集成的應(yīng)用的示例。
[0027]圖15示出了集成的應(yīng)用的另一示例。
[0028]圖16在概念上示出了網(wǎng)絡(luò)控制系統(tǒng)的示例體系結(jié)構(gòu)。
[0029]圖17在概念上示出了網(wǎng)絡(luò)控制系統(tǒng)的示例體系結(jié)構(gòu)。
[0030]圖18示出了機箱控制應(yīng)用的示例體系結(jié)構(gòu)。
[0031]圖19示出了基于通用物理控制平面數(shù)據(jù)在兩個管理交換元件之間的隧道的示例創(chuàng)建。
[0032]圖20在概念上示出了一些實施例所執(zhí)行的從通用物理控制平面數(shù)據(jù)生成自定義物理控制平面數(shù)據(jù)的處理。
[0033]圖21在概念上示出了一些實施例所執(zhí)行的生成自定義隧道流指令并向管理交換元件發(fā)送自定義指令的處理。
[0034]圖22在概念上以七個不同的階段示出了將通用隧道流指令轉(zhuǎn)換為自定義指令的機箱控制器的示例操作。
[0035]圖23在概念上示出了用來實現(xiàn)本發(fā)明的一些實施例的電子系統(tǒng)。
【具體實施方式】
[0036]在下面的對本發(fā)明的詳細描述中,闡述并描述了很多細節(jié)、示例、以及本發(fā)明的各實施例。然而,對本領(lǐng)域技術(shù)人員來說清楚的是,本發(fā)明不僅限于闡述的實施例,可以在沒有所討論的一些具體細節(jié)和示例的情況下實施本發(fā)明。
[0037]本發(fā)明的一些實施例提供了允許通過一個或多個共享的轉(zhuǎn)發(fā)元件為若干不同的用戶指定若干不同的LDP集合而不允許不同的用戶控制或者甚至查看彼此的轉(zhuǎn)發(fā)邏輯的網(wǎng)絡(luò)控制系統(tǒng)。在一些實施例中,共享的轉(zhuǎn)發(fā)元件可包括虛擬或物理網(wǎng)絡(luò)交換機、軟件交換機(例如,Open vSwitch)、路由器、和/或其他交換設(shè)備,以及在這些交換機、路由器,和/或其他交換設(shè)備之間建立連接的任何其他網(wǎng)絡(luò)元件(諸如負載均衡器等等)。這樣的轉(zhuǎn)發(fā)元件(例如,物理交換機或路由器)在下面也被稱為交換元件。與現(xiàn)成的交換機相比,在一些實施例中,軟件轉(zhuǎn)發(fā)元件是通過將其交換表以及邏輯存儲在獨立設(shè)備(例如,獨立計算機)的存儲器中而形成的交換元件,而在其他實施例中,軟件轉(zhuǎn)發(fā)元件是通過將其交換表以及邏輯存儲在還執(zhí)行系統(tǒng)管理程序和在該系統(tǒng)管理程序上面的一個或多個虛擬機的設(shè)備(例如,計算機)的存儲器中而形成的交換元件。
[0038]這些管理的、共享的交換元件在下面被稱為管理交換元件或管理轉(zhuǎn)發(fā)元件,因為它們是由網(wǎng)絡(luò)控制系統(tǒng)管理的,以便實現(xiàn)LDP集合。在一些實施例中,控制系統(tǒng)通過將PCP數(shù)據(jù)推送到這些交換元件來管理這些交換元件,如下面所進一步描述的。交換元件一般接收數(shù)據(jù)(例如,數(shù)據(jù)包)并對數(shù)據(jù)執(zhí)行一個或多個處理操作,諸如丟棄接收到的數(shù)據(jù)包,將從一個源設(shè)備接收到的數(shù)據(jù)包傳遞到另一個目的地設(shè)備,處理數(shù)據(jù)包、然后將其傳給目的地設(shè)備等等。在一些實施例中,被推送到交換元件的PCP數(shù)據(jù)由交換元件(例如,由交換元件的通用處理器)轉(zhuǎn)換為物理轉(zhuǎn)發(fā)平面數(shù)據(jù),該物理轉(zhuǎn)發(fā)平面數(shù)據(jù)指定交換元件(例如,交換元件的專門的交換電路)如何處理交換元件接收到的數(shù)據(jù)包。
[0039]在一些實施例中,網(wǎng)絡(luò)控制系統(tǒng)包括允許系統(tǒng)從用戶接受LDP集合并配置交換元件以實現(xiàn)這些LDP集合的一個或多個控制器(在下面也被稱為“控制器實例”)。這些控制器允許系統(tǒng)以在共享相同的管理交換元件的同時防止不同的用戶查看或控制彼此的LDP集合和邏輯網(wǎng)絡(luò)的方式虛擬化對共享的交換元件以及由這些共享的交換元件之間的連接所定義的邏輯網(wǎng)絡(luò)的控制。
[0040]在一些實施例中,每一個控制器實例是執(zhí)行一個或多個模塊的設(shè)備(例如,通用計算機),這一個或多個模塊將用戶輸入從LCP轉(zhuǎn)換為LFP,然后將LFP數(shù)據(jù)轉(zhuǎn)換為PCP數(shù)據(jù)。在一些實施例中,這些模塊包括控制模塊和虛擬化模塊。控制模塊允許用戶指定并填充LDPS,而虛擬化模塊通過將LDPS映射到物理交換基礎(chǔ)結(jié)構(gòu)來實現(xiàn)指定的LDPS。在一些實施例中,控制模塊和虛擬化模塊按照被寫入到關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的記錄來表達指定的或映射的數(shù)據(jù)。即,關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)存儲通過控制模塊接收到的邏輯數(shù)據(jù)路徑輸入和邏輯數(shù)據(jù)路徑輸入被虛擬化模塊映射到的物理數(shù)據(jù)。在一些實施例中,控制應(yīng)用和虛擬化應(yīng)用是兩個單獨的應(yīng)用,而在其他實施例中,它們是同一個應(yīng)用的一部分。
[0041]上文描述了網(wǎng)絡(luò)控制系統(tǒng)的若干示例。下面將描述若干比較詳細的實施例。第I部分描述了一些實施例的網(wǎng)絡(luò)控制系統(tǒng)。第II部分描述了由網(wǎng)絡(luò)控制系統(tǒng)執(zhí)行的通用轉(zhuǎn)發(fā)狀態(tài)轉(zhuǎn)換。第III部分描述了用來實現(xiàn)本發(fā)明的一些實施例的電子系統(tǒng)。
[0042]1.網(wǎng)絡(luò)控制系統(tǒng)
[0043]A.用于將流推送到控制層的外層
[0044]圖1示出了本發(fā)明的一些實施例的虛擬化網(wǎng)絡(luò)系統(tǒng)100。此系統(tǒng)允許多個用戶創(chuàng)建并控制網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)交換元件(例如,交換機、虛擬交換機、軟件交換機等等)的共享集合上的多個不同的LDP集合。在允許用戶創(chuàng)建并控制用戶的邏輯數(shù)據(jù)路徑(LDP)集合(即,用戶的交換邏輯)時,系統(tǒng)不允許用戶對另一個用戶的LDP集合進行直接訪問以便查看或修改其他用戶的交換邏輯。然而,系統(tǒng)確實允許不同的用戶通過它們的虛擬化交換邏輯向彼此傳遞數(shù)據(jù)包,如果用戶需要這樣的通信。
[0045]如圖1所示,系統(tǒng)100包括一個或多個交換元件105和網(wǎng)絡(luò)控制器110。交換元件包括構(gòu)成系統(tǒng)100的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)交換元件的N個交換設(shè)備(其中,N是等于I或更大的數(shù)字)。在一些實施例中,網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)交換元件包括虛擬或物理網(wǎng)絡(luò)交換機、軟件交換機(例如,Open vSwitch)、路由器、和/或其他交換設(shè)備,以及在這些交換機、路由器、和/或其他交換設(shè)備之間建立連接的任何其他網(wǎng)絡(luò)元件(諸如負載均衡器等等)。所有這樣的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)交換元件在下面被稱為交換元件或轉(zhuǎn)發(fā)元件。
[0046]虛擬或物理交換設(shè)備105通常包括控制交換邏輯125和轉(zhuǎn)發(fā)交換邏輯130。在一些實施例中,交換機的控制邏輯125指定(I)要應(yīng)用于傳入數(shù)據(jù)包的規(guī)則,(2)要被丟棄的數(shù)據(jù)包,以及(3)將應(yīng)用于傳入數(shù)據(jù)包的數(shù)據(jù)包處理方法。虛擬或物理交換元件105使用控制邏輯125來填充管轄轉(zhuǎn)發(fā)邏輯130的表。轉(zhuǎn)發(fā)邏輯130對傳入數(shù)據(jù)包執(zhí)行查詢操作,并將傳入數(shù)據(jù)包轉(zhuǎn)發(fā)到目的地地址。
[0047]如在圖1中進一步示出的,網(wǎng)絡(luò)控制器110包括控制應(yīng)用115,其中,(例如,由一個或多個管理員或用戶)通過控制應(yīng)用115按照LDP集合為一個或多個用戶指定交換邏輯。網(wǎng)絡(luò)控制器110還包括虛擬化應(yīng)用120,該虛擬化應(yīng)用120將LDP集合轉(zhuǎn)換為控制交換邏輯以便被推送到交換設(shè)備105。在此申請中,對于一些實施例,控制應(yīng)用和虛擬化應(yīng)用被稱為“控制引擎”和“虛擬化引擎”。
[0048]在一些實施例中,虛擬化系統(tǒng)100包括一個以上的網(wǎng)絡(luò)控制器110。網(wǎng)絡(luò)控制器包括邏輯控制器,每一個邏輯控制器負責(zé)為特定LDPS的一組交換設(shè)備指定控制邏輯。網(wǎng)絡(luò)控制器還包括物理控制器,每一個物理控制器將控制邏輯推送到由該物理控制器負責(zé)管理的一組交換元件。換言之,邏輯控制器只為實現(xiàn)特定LDPS的一組交換元件指定控制邏輯,而物理控制器將控制邏輯推送到由物理控制器管理的交換元件,而不管交換元件實現(xiàn)的LDP集合是什么。
[0049]在一些實施例中,網(wǎng)絡(luò)控制器的虛擬化應(yīng)用使用關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)按照數(shù)據(jù)記錄(例如,數(shù)據(jù)元組)存儲由虛擬化應(yīng)用跟蹤的交換機元件狀態(tài)的副本。這些數(shù)據(jù)記錄表示所有物理或虛擬交換元件及其在物理網(wǎng)絡(luò)拓撲內(nèi)的互連以及它們的轉(zhuǎn)發(fā)表的圖。例如,在一些實施例中,網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)內(nèi)的每一個交換元件都由關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的一個或多個數(shù)據(jù)記錄來表示。然而,在其他實施例中,虛擬化應(yīng)用的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)只存儲有關(guān)一些交換元件的狀態(tài)信息。例如,如下面所進一步描述的,在一些實施例中,虛擬化應(yīng)用只跟蹤在網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)邊緣處的交換元件。在另一些其他實施例中,虛擬化應(yīng)用存儲有關(guān)網(wǎng)絡(luò)中的邊緣交換元件以及網(wǎng)絡(luò)中的促進邊緣交換元件之間的通信的一些非邊緣交換元件的狀態(tài)信息。
[0050]在一些實施例中,關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)是虛擬化的網(wǎng)絡(luò)系統(tǒng)100中的控制模型的心臟。根據(jù)一種方法,應(yīng)用通過讀寫關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)來控制網(wǎng)絡(luò)。具體而言,在一些實施例中,應(yīng)用控制邏輯可以(I)讀取與關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的網(wǎng)絡(luò)實體記錄相關(guān)聯(lián)的當前狀態(tài),以及(2)通過對這些記錄進行操作來改變網(wǎng)絡(luò)狀態(tài)。根據(jù)此模型,當虛擬化應(yīng)用120需要修改交換元件105的表(例如,控制平面流表)中的記錄時,虛擬化應(yīng)用120首先寫入表示關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的表的一個或多個記錄。然后,虛擬化應(yīng)用傳播對交換元件的表的該更改。
[0051]在一些實施例中,控制應(yīng)用還使用關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)來存儲每一個用戶指定的LDPS的邏輯配置和邏輯狀態(tài)。在這些實施例中,關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的表示實際交換元件的狀態(tài)的信息只反映存儲在關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的全部信息的子集。
[0052]在一些實施例中,控制應(yīng)用和虛擬化應(yīng)用使用輔助數(shù)據(jù)結(jié)構(gòu)來存儲用戶指定的LDPS的邏輯配置和邏輯狀態(tài)。在這些實施例中,此輔助數(shù)據(jù)結(jié)構(gòu)充當不同的網(wǎng)絡(luò)控制器之間的通信介質(zhì)。例如,當用戶使用不負責(zé)特定LDPS的邏輯控制器來指定該特定LDPS時,邏輯控制器通過這些邏輯控制器的輔助數(shù)據(jù)結(jié)構(gòu),將特定LDPS的邏輯配置傳遞到負責(zé)該特定LDPS的另一個邏輯控制器。在一些實施例中,從用戶接收特定LDPS的邏輯配置的邏輯控制器將配置數(shù)據(jù)傳遞到虛擬化的網(wǎng)絡(luò)系統(tǒng)中的所有其他控制器。如此,在一些實施例中,每個邏輯控制器中的輔助存儲器結(jié)構(gòu)包括所有用戶的所有LDP集合的邏輯配置數(shù)據(jù)。[0053]在一些實施例中,控制器實例的操作系統(tǒng)(未示出)為不同實施例的控制應(yīng)用和虛擬化應(yīng)用和交換元件105提供一組不同的通信構(gòu)造(未示出)。例如,在一些實施例中,操作系統(tǒng)向管理交換元件提供交換元件105和虛擬化應(yīng)用120之間的通信接口(未示出),其中(I)交換元件105為任何一個用戶執(zhí)行物理交換,以及(2)虛擬化應(yīng)用120用于將用戶的交換邏輯推送到交換元件。在這些實施例中的一些中,虛擬化應(yīng)用通過通常已知的交換訪問接口來管理交換元件的控制交換邏輯125,其中,該交換訪問接口指定用于允許外部應(yīng)用(諸如虛擬化應(yīng)用)控制交換元件的控制平面功能的一組API。具體而言,管理交換元件通信接口實現(xiàn)這組API,以便虛擬化應(yīng)用可以使用管理交換元件通信接口將存儲在關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的記錄發(fā)送到交換元件。
[0054]這樣的已知的交換訪問接口的兩個示例是開放流(OpenFlow)接口以及“開放虛擬交換”通信接口,在下面的兩篇文章中分別進行了描述:McKeown,N.(2008).0penFlow:Enabling Innovation in Campus Networks (可以從 http://www.0penflowswitch.0rg//documents/openflow-wp-latest.pdf 中檢索至丨J )以及 Pettit, J.(2010).Virtual Switching in an Era of Advanced Edges (可以從http://openvswitch.0rg/papers/dccaves2010.pdf中檢索到)。這兩篇文章以引用的方式并入本文中。
[0055]應(yīng)當注意,對于上文以及下文所描述的使用關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)存儲數(shù)據(jù)記錄的那些實施例,可以可替選地或結(jié)合地使用可以以面向?qū)ο蟮臄?shù)據(jù)對象的形式存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。這樣的數(shù)據(jù)結(jié)構(gòu)的示例是NIB數(shù)據(jù)結(jié)構(gòu)。在2011年7月6日提交的美國專利申請13/177,529以及13/177,533中描述了使用NIB數(shù)據(jù)結(jié)構(gòu)的多個示例。美國專利申請13/177,529和13/177,533以引用的方式并入本文中。
[0056]圖1通過控制交換邏輯125周圍的暈圈135的描繪在概念上示出了交換訪問API的使用。通過這些API,虛擬化應(yīng)用可以讀寫控制平面流表中的條目。在一些實施例中,虛擬化應(yīng)用與交換元件的控制平面資源(例如,控制平面表)的連接是在帶內(nèi)實現(xiàn)的(即,利用由操作系統(tǒng)控制的網(wǎng)絡(luò)流量),而在其他實施例中,它是在帶外實現(xiàn)的(即,通過單獨的物理網(wǎng)絡(luò))。對于超出集中于故障和與操作系統(tǒng)的基本連接以外的選擇的機制,只有最低要求,如此,當使用單獨的網(wǎng)絡(luò)時,諸如IS-1S或OSPF之類的標準IGP協(xié)議就足夠了。
[0057]當交換元件是物理交換元件(而不是軟件交換元件)時,為了定義交換元件的控制交換邏輯125,一些實施例的虛擬化應(yīng)用使用“開放虛擬交換”協(xié)議創(chuàng)建交換元件的控制平面內(nèi)的一個或多個控制表??刂破矫嫱ǔJ怯山粨Q元件的通用CPU創(chuàng)建和執(zhí)行的。一旦系統(tǒng)創(chuàng)建了控制表,虛擬化應(yīng)用就使用開放流協(xié)議向控制表寫入流條目。物理交換元件的通用CPU使用其內(nèi)部邏輯來轉(zhuǎn)換被寫入到控制表中的條目,以填充交換元件的轉(zhuǎn)發(fā)平面中的一個或多個轉(zhuǎn)發(fā)表。轉(zhuǎn)發(fā)表通常是由交換元件的專門的交換芯片創(chuàng)建和執(zhí)行的。通過轉(zhuǎn)發(fā)表內(nèi)的流條目的執(zhí)行,交換元件的交換芯片可以處理和路由其接收到的數(shù)據(jù)的數(shù)據(jù)包。
[0058]在一些實施例中,除邏輯和物理控制器之外,虛擬化的網(wǎng)絡(luò)系統(tǒng)100還包括機箱控制器。在這些實施例中,機箱控制器實現(xiàn)交換訪問API以管理特定交換元件。即,機箱控制器將控制邏輯推送到特定交換元件。在這些實施例中,物理控制器充當將控制邏輯從邏輯控制器中繼到機箱控制器的聚合點,該機箱控制器連接由物理控制器負責(zé)的交換元件集合。物理控制器將控制邏輯分發(fā)到管理交換元件集合的機箱控制器。在這些實施例中,網(wǎng)絡(luò)控制器的操作系統(tǒng)的管理交換元件通信接口在物理控制器和機箱控制器之間建立通信信道(例如,遠程過程調(diào)用(RPC)信道),使得物理控制器可以將作為數(shù)據(jù)記錄存儲在關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的控制邏輯發(fā)送到機箱控制器。機箱控制器又會使用交換訪問API或其他協(xié)議將控制邏輯推送到交換元件。
[0059]一些實施例的操作系統(tǒng)提供的通信構(gòu)造還包括導(dǎo)出器(未示出),網(wǎng)絡(luò)控制器可以使用導(dǎo)出器將數(shù)據(jù)記錄發(fā)送到另一個網(wǎng)絡(luò)控制器(例如,從一個邏輯控制器到另一個邏輯控制器,從一個物理控制器到另一個物理控制器,從一個邏輯控制器到一個物理控制器,從一個物理控制器到一個邏輯控制器,等等)。具體而言,網(wǎng)絡(luò)控制器的控制應(yīng)用和虛擬化應(yīng)用可以使用導(dǎo)出器,將存儲在關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)記錄導(dǎo)出到一個或多個其他網(wǎng)絡(luò)控制器。在一些實施例中,導(dǎo)出器在兩個網(wǎng)絡(luò)控制器之間建立通信信道(例如,RPC信道),以便一個網(wǎng)絡(luò)控制器可以通過該信道將數(shù)據(jù)記錄發(fā)送到另一個網(wǎng)絡(luò)控制器。
[0060]一些實施例的操作系統(tǒng)還提供導(dǎo)入器,網(wǎng)絡(luò)控制器可以使用導(dǎo)入器從網(wǎng)絡(luò)控制器接收數(shù)據(jù)記錄。一些實施例的導(dǎo)入器充當另一個網(wǎng)絡(luò)控制器的導(dǎo)出器的對應(yīng)物。即,導(dǎo)入器位于在兩個網(wǎng)絡(luò)控制器之間建立的通信信道的接收端。在一些實施例中,網(wǎng)絡(luò)控制器遵循發(fā)布-預(yù)訂模型,其中,接收方控制器預(yù)訂信道以僅從提供接收方控制器感興趣的數(shù)據(jù)的網(wǎng)絡(luò)控制器接收數(shù)據(jù)。
[0061]B.將流推送到邊緣交換元件
[0062]如上文所提及的,在一些實施例中,關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)存儲關(guān)于系統(tǒng)的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)內(nèi)的每一個交換元件的數(shù)據(jù),而在其他實施例中,關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)僅存儲有關(guān)網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的邊緣處的交換元件的狀態(tài)信息。圖2和圖3示出了區(qū)別這兩種不同方法的示例。具體而言,圖2示出了多用戶服務(wù)器托管系統(tǒng)的交換基礎(chǔ)結(jié)構(gòu)。在此系統(tǒng)中,使用六個交換元件來互連兩個用戶A和B的六臺機器。這些交換元件205-220中的四個是與用戶A和B的機器235-260具有直接連接的邊緣交換元件,而交換元件225和230中的兩個是互連邊緣交換元件并彼此連接的內(nèi)部交換元件(即,非邊緣交換元件)。在一些實施例中,上文以及下文所描述的圖中所示出的所有交換元件都可以是軟件交換元件,而在其他實施例中,交換元件是軟件和物理交換元件的混合。例如,在一些實施例中,邊緣交換元件205-220以及非邊緣交換元件225-230是軟件交換元件。此外,本申請中所描述的“機器”還包括虛擬機和諸如計算設(shè)備之類的物理機器。
[0063]圖3示出了管理邊緣交換元件205-220的網(wǎng)絡(luò)控制器300。網(wǎng)絡(luò)控制器300類似于上文參考圖1所描述的網(wǎng)絡(luò)控制器110。如圖3所示,控制器300包括控制應(yīng)用305和虛擬化應(yīng)用310??刂破鲗嵗?00的操作系統(tǒng)維護只包含關(guān)于邊緣交換元件205-220的數(shù)據(jù)記錄的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)(未示出)。另外,在操作系統(tǒng)上運行的應(yīng)用305和310允許用戶A和B針對他們使用的邊緣交換元件修改他們的交換元件配置。然后,如果需要,網(wǎng)絡(luò)控制器300將這些修改傳播到邊緣交換元件。具體而言,在此示例中,兩個邊緣交換元件205和220被用戶A和B的機器使用,而邊緣交換元件210只供用戶A的機器245使用并且邊緣交換元件215只供用戶B的機器250使用。相應(yīng)地,圖3示出了網(wǎng)絡(luò)控制器300修改交換元件205和220中的用戶A和B記錄,但是只更新交換元件210中的用戶A記錄以及只更新交換元件215中的用戶B記錄。
[0064]由于若干原因,一些實施例的控制器300只控制邊緣交換元件(即,只在關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中維護關(guān)于邊緣交換元件的數(shù)據(jù))??刂七吘壗粨Q元件向控制器提供了用于在機器(例如,計算設(shè)備)之間維持隔離(這是需要的)而不是在所有交換元件之間維持隔離(這是不需要的)的足夠的機制。內(nèi)部交換元件在交換元件之間轉(zhuǎn)發(fā)數(shù)據(jù)包。邊緣交換元件在機器和其他網(wǎng)絡(luò)元件(例如,其他交換元件)之間轉(zhuǎn)發(fā)數(shù)據(jù)包。如此,控制器可以簡單地通過控制邊緣交換元件來維持用戶隔離,這是因為邊緣交換元件是將數(shù)據(jù)包轉(zhuǎn)發(fā)到機器的管線中的最后一個交換元件。
[0065]除控制邊緣交換元件之外,一些實施例的網(wǎng)絡(luò)控制器還使用并控制插入在交換網(wǎng)絡(luò)層次結(jié)構(gòu)中的非邊緣交換元件以簡化和/或促進被控制的邊緣交換元件的操作。例如,在一些實施例中,控制器要求其控制的交換元件在分層交換體系結(jié)構(gòu)中被互連,該分層交換體系結(jié)構(gòu)具有若干邊緣交換元件作為葉子節(jié)點以及具有一個或多個非邊緣交換元件作為非葉子節(jié)點。在一些這樣的實施例中,每一個邊緣交換元件都連接到非葉子交換元件中的一個或多個,并使用這樣的非葉子交換元件來促進其與其他邊緣交換元件的通信。
[0066]上面的討論涉及由一些實施例的網(wǎng)絡(luò)控制器對邊緣交換元件和非邊緣交換元件進行的控制。在一些實施例中,邊緣交換元件和非邊緣交換元件(葉子節(jié)點和非葉節(jié)點)可被稱為管理交換元件。這是因為,這些交換元件是由網(wǎng)絡(luò)控制器管理的(而不是網(wǎng)絡(luò)中的不由網(wǎng)絡(luò)控制器管理的非管理交換元件),以便通過管理交換元件實現(xiàn)LDP集合。
[0067]一些實施例的網(wǎng)絡(luò)控制器基于上文所描述的物理數(shù)據(jù)和邏輯數(shù)據(jù),跨管理交換元件實現(xiàn)邏輯交換元件。邏輯交換元件(也被稱為“邏輯轉(zhuǎn)發(fā)元件”)可以被定義為以交換元件可以采用的任意數(shù)量的不同的方式起作用(例如,層2交換、層3路由等等)。網(wǎng)絡(luò)控制器通過對管理交換元件的控制來實現(xiàn)定義的邏輯交換元件。在一些實施例中,網(wǎng)絡(luò)控制器跨管理交換元件實現(xiàn)多個邏輯交換元件。這允許跨管理交換元件實現(xiàn)多個不同的邏輯交換元件,而不考慮網(wǎng)絡(luò)的網(wǎng)絡(luò)拓撲。
[0068]一些實施例的管理交換元件可以被配置成基于不同的路由準則來路由網(wǎng)絡(luò)數(shù)據(jù)。如此,可以控制通過網(wǎng)絡(luò)中的交換元件的網(wǎng)絡(luò)數(shù)據(jù)流,以便跨管理交換元件實現(xiàn)多個邏輯交換元件。
[0069]C.邏輯交換元件和物理交換元件
[0070]圖4示出了跨一組交換元件實現(xiàn)的多個邏輯交換元件的示例。具體而言,圖4在概念上示出了跨管理交換元件410-430實現(xiàn)的邏輯交換元件480和490。如圖4所示,網(wǎng)絡(luò)400包括管理交換元件410-430和機器440-465。如此圖所示出的,機器440、450和460屬于用戶A,而機器445、455和465屬于用戶B。
[0071]一些實施例的管理交換元件410-430在耦合到管理交換元件410-430的網(wǎng)絡(luò)中的網(wǎng)絡(luò)元件之間路由網(wǎng)絡(luò)數(shù)據(jù)(例如,數(shù)據(jù)包、幀等等)。如圖所示,管理交換元件410在機器440、445和交換元件420之間路由網(wǎng)絡(luò)數(shù)據(jù)。類似地,交換元件420在機器450和管理交換元件410、430之間路由網(wǎng)絡(luò)數(shù)據(jù),而交換元件430在機器455-465和交換元件420之間路由網(wǎng)絡(luò)數(shù)據(jù)。
[0072]此外,管理交換元件410-430中的每一個基于交換機的轉(zhuǎn)發(fā)邏輯(在一些實施例中,采用表的形式)來路由網(wǎng)絡(luò)數(shù)據(jù)。在一些實施例中,轉(zhuǎn)發(fā)表根據(jù)路由準則來確定向哪里路由網(wǎng)絡(luò)數(shù)據(jù)(例如,交換機上的端口)。例如,層2交換元件的轉(zhuǎn)發(fā)表可以基于MAC地址(例如,源MAC地址和/或目的地MAC地址)來確定向哪里路由網(wǎng)絡(luò)數(shù)據(jù)。作為另一個示例,層3交換元件的轉(zhuǎn)發(fā)表可以基于IP地址(例如,源IP地址和/或目的地IP地址)來確定向哪里路由網(wǎng)絡(luò)數(shù)據(jù)。許多其他類型的路由準則也是可以的。
[0073]如圖4所示,管理交換元件410-430中的每一個中的轉(zhuǎn)發(fā)表包括若干記錄。在一些實施例中,每一個記錄都指定用于基于路由準則來路由網(wǎng)絡(luò)數(shù)據(jù)的操作。在一些實施例中,記錄可以被稱為流條目,因為記錄通過管理交換元件410-430來控制數(shù)據(jù)“流”。
[0074]圖4還示出了每一個用戶的邏輯網(wǎng)絡(luò)的概念表示。如圖所示,用戶A的邏輯網(wǎng)絡(luò)480包括用戶A的機器440、450和460所耦合到的邏輯交換元件485。用戶B的邏輯網(wǎng)絡(luò)490包括用戶B的機器445、455和465所耦合到的邏輯交換元件495。如此,從用戶A的角度來看,用戶A具有只有用戶A的機器所耦合到的交換元件,而從用戶B的角度來看,用戶B具有只有用戶B的機器所耦合到的交換元件。換言之,對于每一個用戶,用戶具有其自己的只包括該用戶的機器的網(wǎng)絡(luò)。
[0075]下面將描述用于實現(xiàn)源自機器440并發(fā)往機器450以及源自機器440并發(fā)往機器460的網(wǎng)絡(luò)數(shù)據(jù)流的概念流條目。管理交換元件410的轉(zhuǎn)發(fā)表中的流條目“Al到A2”指示管理交換元件410將源自機器410并發(fā)往機器450的網(wǎng)絡(luò)數(shù)據(jù)路由到交換元件420。交換元件420的轉(zhuǎn)發(fā)表中的流條目“Al到A2”指示交換元件420將源自機器410并發(fā)往機器450的網(wǎng)絡(luò)數(shù)據(jù)路由到機器450。因此,當機器440發(fā)送要發(fā)往機器450的網(wǎng)絡(luò)數(shù)據(jù)時,管理交換元件410和420基于交換元件的轉(zhuǎn)發(fā)表中的對應(yīng)的記錄,沿著數(shù)據(jù)路徑470來路由網(wǎng)絡(luò)數(shù)據(jù)。
[0076]此外,管理交換元件410的轉(zhuǎn)發(fā)表中的流條目“Al到A3”還指示管理交換元件440將源自機器440并發(fā)往機器460的網(wǎng)絡(luò)數(shù)據(jù)路由到交換元件420。交換元件420的轉(zhuǎn)發(fā)表中的流條目“Al到A3”指示交換元件420將源自機器440并發(fā)往機器460的網(wǎng)絡(luò)數(shù)據(jù)路由到交換元件430。交換元件430的轉(zhuǎn)發(fā)表中的流條目“Al到A3”指示交換元件430將源自機器440并發(fā)往機器460的網(wǎng)絡(luò)數(shù)據(jù)路由到機器460。如此,當機器440發(fā)送要發(fā)往機器460的網(wǎng)絡(luò)數(shù)據(jù)時,管理交換元件410-430基于交換元件的轉(zhuǎn)發(fā)表中的對應(yīng)的記錄,沿著數(shù)據(jù)路徑470和475來路由網(wǎng)絡(luò)數(shù)據(jù)。
[0077]盡管上文描述了用于路由源自機器440并發(fā)往機器450以及源自機器440并發(fā)往機器460的網(wǎng)絡(luò)數(shù)據(jù)的概念流條目,但是,類似的流條目將被包括用于在用戶A的邏輯網(wǎng)絡(luò)480中的其他機器之間路由網(wǎng)絡(luò)數(shù)據(jù)的管理交換元件410-430的轉(zhuǎn)發(fā)表中。此外,類似的流條目將被包括在用于在用戶B的邏輯網(wǎng)絡(luò)490中的機器之間路由網(wǎng)絡(luò)數(shù)據(jù)的管理交換元件410-430的轉(zhuǎn)發(fā)表中。
[0078]如圖4所示的概念流條目包括管理交換元件的源和目的地信息以弄清楚數(shù)據(jù)包要被發(fā)送到的下一跳交換元件。然而,源信息不必在流條目中,因為一些實施例的管理交換元件可以只使用目的地信息(例如,上下文標識符、目的地地址等等)即可弄清楚下一跳交換元件。
[0079]在一些實施例中,由隧道協(xié)議(例如,無線接入點的控制和配置(CAPWAP)、通用路由封裝(GRE)、GRE因特網(wǎng)協(xié)議安全(IPsec)等等)所提供的隧道可以用來促進跨管理交換元件410-430的邏輯交換元件485和495的實現(xiàn)。通過隧道化,將一個數(shù)據(jù)包作為另一個數(shù)據(jù)包的有效負載,通過交換機和路由器進行傳輸。即,隧道化的數(shù)據(jù)包不必暴露其地址(例如,源和目的地MAC地址),因為該數(shù)據(jù)包是基于對隧道化的數(shù)據(jù)包進行封裝的外數(shù)據(jù)包的標頭中所包括的地址而轉(zhuǎn)發(fā)的。因此,隧道化可以將邏輯地址空間與物理地址空間分離,因為隧道化的數(shù)據(jù)包可以具有在邏輯地址空間中有意義的地址,而外數(shù)據(jù)包是基于物理地址空間中的地址被轉(zhuǎn)發(fā)/路由的。如此,隧道可以被視為連接網(wǎng)絡(luò)中的管理交換元件以便實現(xiàn)邏輯交換元件485和495的“邏輯線路”。
[0080]以上文所描述的各種方式來配置交換元件以跨一組交換元件實現(xiàn)多個邏輯交換元件,從每一個用戶的角度來看,允許多個用戶中的每一個都具有單獨的網(wǎng)絡(luò)和/或交換元件,而事實上用戶共享相同的一組交換元件和/或這一組交換元件之間的連接(例如,隧道、物理線路)中的一些或全部。
[0081]I1.通用轉(zhuǎn)發(fā)狀態(tài)
[0082]A.控制器實例的層
[0083]圖5示出了控制管理交換元件的指令通過本發(fā)明的一些實施例的控制器實例的各種處理層的傳播。此圖示出了控制數(shù)據(jù)管線500,該控制數(shù)據(jù)管線500轉(zhuǎn)換控制平面數(shù)據(jù),并通過相同或不同的控制器實例的四個處理層,將控制平面數(shù)據(jù)傳播到管理交換元件525。這四層是輸入轉(zhuǎn)換層505、控制層510、虛擬化層515,以及自定義層520。
[0084]在一些實施例中,這四層處于相同的控制器實例中。然而,在其他實施例中,存在這些層的其他布置。例如,在其他實施例中,只有控制層和虛擬化層510和515處于相同的控制器實例中,但是傳播自定義物理控制平面(CPCP)數(shù)據(jù)的功能駐留在另一個控制器實例(例如,機箱控制器,未示出)的自定義層中。在這些其他實施例中,將通用物理控制平面(UPCP)數(shù)據(jù)從一個控制器實例的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)(未示出)傳輸?shù)搅硪粋€控制器實例的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu),然后,此另一個控制器實例生成CPCP數(shù)據(jù),并將CPCP數(shù)據(jù)推送到管理交換元件。前一控制器實例可以是生成UPCP數(shù)據(jù)的邏輯控制器,而后一控制器實例可以是將UPCP數(shù)據(jù)自定義為CPCP數(shù)據(jù)的物理控制器或機箱控制器。
[0085]如圖5所示,在一些實施例中,輸入轉(zhuǎn)換層505具有可以用來表達此層的輸出的LCP530。在一些實施例中,應(yīng)用(例如,基于web的應(yīng)用,未示出)被提供給用戶,供用戶提供指定LDP集合的輸入。此應(yīng)用按照API調(diào)用的形式將輸入發(fā)送到輸入轉(zhuǎn)換層505,該輸入轉(zhuǎn)換層505將API調(diào)用轉(zhuǎn)換為可以由控制層510處理的格式的LCP數(shù)據(jù)。例如,輸入被轉(zhuǎn)換成可以饋送給控制層的nLog表映射引擎的一組輸入事件。下面將進一步描述nLog表映射引擎及其操作。
[0086]在一些實施例中,控制層510具有可以用來表達此層的輸入和輸出的LCP530和LFP535。LCP包括允許控制層及其用戶為一個或多個用戶指定LCP內(nèi)的一個或多個LDP集合的較高級別的構(gòu)造的集合。LFP535以可以被虛擬化層515處理的格式來表示用戶的LDP集合。如此,兩個邏輯平面530和535是通??梢栽诘湫偷墓芾斫粨Q元件525中發(fā)現(xiàn)的控制和轉(zhuǎn)發(fā)平面555和560的虛擬化空間類似物,如圖5所示。
[0087]在一些實施例中,控制層510定義和暴露LCP構(gòu)造,其中,層本身或?qū)拥挠脩衾肔CP構(gòu)造來定義LCP內(nèi)的不同的LDP集合。例如,在一些實施例中,LCP數(shù)據(jù)530包括邏輯ACL數(shù)據(jù)等等。此數(shù)據(jù)中的一些(例如,邏輯ACL數(shù)據(jù))可以由用戶指定,而其他這樣的數(shù)據(jù)(例如,邏輯L2或L3記錄)是由控制層所生成的,并且不可以由用戶指定。在一些實施例中,控制層510響應(yīng)于由控制層510檢測到的對關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)的某些更改(指示對管理交換元件和管理數(shù)據(jù)路徑的更改),生成和/或指定這樣的數(shù)據(jù)。
[0088]在一些實施例中,可以初始地指定LCP數(shù)據(jù)(S卩,按照控制平面構(gòu)造表達的LDP集合數(shù)據(jù)),而不考慮來自管理交換元件的當前操作數(shù)據(jù),以及不考慮此控制平面數(shù)據(jù)將被轉(zhuǎn)換為PCP數(shù)據(jù)的方式。例如,LCP數(shù)據(jù)可以指定連接五個計算機的一個邏輯交換元件的控制數(shù)據(jù),盡管此控制平面數(shù)據(jù)以后可以被轉(zhuǎn)換為在五個計算機之間實現(xiàn)期望交換的三個管理交換元件的物理控制數(shù)據(jù)。
[0089]控制層包括用于將LCP內(nèi)的任何LDPS轉(zhuǎn)換為LFP535中的LDPS的一組模塊(未示出)。在一些實施例中,控制層510使用nLog表映射引擎來執(zhí)行此轉(zhuǎn)換。下面進一步描述了控制層510使用nLog表映射引擎來執(zhí)行此轉(zhuǎn)換。控制層還包括用于將LDP集合從控制層510的LFP535推送到虛擬化層515的LFP540的一組模塊(未示出)。
[0090]LFP540包括一個或多個用戶的一個或多個LDP集合。在一些實施例中,LFP540包括一個或多個用戶的一個或多個LDP集合的邏輯轉(zhuǎn)發(fā)數(shù)據(jù)。此數(shù)據(jù)中的一些被控制層推送到LFP540,而其他這樣的數(shù)據(jù)被用于檢測關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的事件的虛擬化層推送到LFP,如下面針對一些實施例進一步描述的。
[0091]除LFP540之外,虛擬化層515還包括UPCP545。UPCP545包括LDP集合的UPCP數(shù)據(jù)。虛擬化層包括用于將LFP540內(nèi)的任何LDP集合轉(zhuǎn)換為UPCP535中的UPCP數(shù)據(jù)的一組模塊(未示出)。在一些實施例中,虛擬化層515使用nLog表映射引擎來執(zhí)行此轉(zhuǎn)換。虛擬化層還包括用于將UPCP數(shù)據(jù)從虛擬化層515的UPCP545推送到自定義層520的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)的一組模塊(未示出)。
[0092]在一些實施例中,被發(fā)送到自定義層515的UPCP數(shù)據(jù)允許管理交換元件525根據(jù)由控制層510所指定的LDP集合來處理數(shù)據(jù)包。然而,與CPCP數(shù)據(jù)相比,UPCP數(shù)據(jù)不是由控制層所指定的邏輯數(shù)據(jù)的完整實現(xiàn),因為在一些實施例中,UPCP數(shù)據(jù)不表示管理交換元件的差異和/或管理交換元件的特定于位置的信息。
[0093]對于每一個管理交換元件,UPCP數(shù)據(jù)必須被轉(zhuǎn)換為CPCP數(shù)據(jù),以便在管理交換元件處完全實現(xiàn)LDP集合。例如,當LDP集合指定橫跨若干管理交換元件的隧道時,UPCP數(shù)據(jù)使用表示隧道的一端的管理交換元件的特定網(wǎng)絡(luò)地址(例如,IP地址)來表示隧道的該端。然而,隧道橫跨的其他管理交換元件中的每一個使用管理交換元件本地的端口號來引用具有特定網(wǎng)絡(luò)地址的末端管理交換元件。即,特定網(wǎng)絡(luò)地址必須被轉(zhuǎn)換為每一個管理交換元件的本地端口號,以便完全實現(xiàn)用于指定管理交換元件處的隧道的LDP集合。
[0094]作為要被轉(zhuǎn)換為CPCP數(shù)據(jù)的中間數(shù)據(jù)的UPCP數(shù)據(jù)使得一些實施例的控制系統(tǒng)能夠縮放,假設(shè)自定義層520正在不同于生成UPCP數(shù)據(jù)的控制實例的另一個控制器實例中運行。這是因為,虛擬化層515不必對于實現(xiàn)LDP集合的每一個管理交換元件,將指定LDP集合的LFP數(shù)據(jù)轉(zhuǎn)換為CPCP數(shù)據(jù)。相反,對于實現(xiàn)LDP集合的所有管理交換元件,虛擬化層515將LFP轉(zhuǎn)換為UPCP數(shù)據(jù)一次。如此,虛擬化應(yīng)用節(jié)約計算資源,否則它將必須消耗計算資源以執(zhí)行LDP集合到CPCP數(shù)據(jù)的轉(zhuǎn)換(轉(zhuǎn)換次數(shù)與實現(xiàn)LDP集合的管理交換元件的數(shù)量一樣多)。
[0095]自定義層520包括可以用來表示此層的輸入和輸出的UPCP546和CPCP550。自定義層包括用于將UPCP546中的UPCP數(shù)據(jù)轉(zhuǎn)換為CPCP550中的CPCP數(shù)據(jù)的一組模塊(未示出)。在一些實施例中,自定義層520使用nLog表映射引擎來執(zhí)行此轉(zhuǎn)換。虛擬化層還包括用于將CPCP數(shù)據(jù)從自定義層520的CPCP550推送到管理交換元件525的一組模塊(未示出)。[0096]被推送到每一管理交換元件的CPCP數(shù)據(jù)是特定于管理交換元件的。CPCP數(shù)據(jù)(盡管數(shù)據(jù)被稱為“物理”數(shù)據(jù))允許管理交換元件在物理和邏輯數(shù)據(jù)處理域執(zhí)行物理交換操作。在一些實施例中,自定義層520運行在針對每一個管理交換元件525的單獨的控制器實例中。
[0097]在一些實施例中,自定義層520不在控制器實例中運行。在這些實施例中,自定義層515駐留在管理交換元件525中。因此,在這些實施例中,虛擬化層515將UPCP數(shù)據(jù)發(fā)送到管理交換元件。每一個管理交換元件都將把UPCP數(shù)據(jù)自定義為特定于管理交換元件的CPCP數(shù)據(jù)。在這些實施例中的一些中,控制器守護程序?qū)⒃诿恳粋€管理交換元件中運行,并將通用數(shù)據(jù)轉(zhuǎn)換為管理交換元件的自定義數(shù)據(jù)。下面將進一步描述控制器守護程序。
[0098]在一些實施例中,被傳播到管理交換元件525的自定義物理控制平面數(shù)據(jù)使得此交換元件能夠基于在邏輯域中定義的邏輯值,對網(wǎng)絡(luò)數(shù)據(jù)(例如,數(shù)據(jù)包)執(zhí)行物理轉(zhuǎn)發(fā)操作。具體而言,在一些實施例中,自定義物理控制平面數(shù)據(jù)指定包括邏輯值的流條目。這些邏輯值包括邏輯地址、邏輯端口號等等,它們用于在邏輯域中轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)。這些流條目還將邏輯值映射到在物理域中定義的物理值,以便管理交換元件可以通過基于邏輯值執(zhí)行物理轉(zhuǎn)發(fā)操作,對網(wǎng)絡(luò)數(shù)據(jù)執(zhí)行邏輯轉(zhuǎn)發(fā)操作。如此,物理控制平面數(shù)據(jù)促進實現(xiàn)跨管理交換元件的邏輯交換元件。在2011年7月6日提交的美國專利申請13/177,535中進一步描述了使用傳播的物理控制平面數(shù)據(jù)在管理交換元件中實現(xiàn)邏輯數(shù)據(jù)處理的若干示例。美國專利申請13/177,535以引用的方式并入本文中。
[0099]由控制數(shù)據(jù)管線500的層處理的控制平面數(shù)據(jù)隨著層越高而變得更全局。即,控制層510中的邏輯控制平面數(shù)據(jù)將橫跨用于實現(xiàn)由邏輯控制平面數(shù)據(jù)所定義的邏輯交換元件的整組管理交換元件。相比之下,自定義層520中的自定義物理控制平面數(shù)據(jù)是本地的,并且特定于用于實現(xiàn)邏輯交換元件的每一個管理交換元件。
[0100]B.多控制器實例
[0101]圖6示出了一些實施例的多實例、分布式網(wǎng)絡(luò)控制系統(tǒng)600。此分布式系統(tǒng)利用三個控制器實例605、610和615,控制多個交換元件690。在一些實施例中,分布式系統(tǒng)600允許不同的控制器實例控制同一個交換元件或不同的交換元件的操作。如圖6所示,每一個實例都包括輸入模塊620、控制模塊625、記錄635、輔助存儲器結(jié)構(gòu)(例如,PTD) 640、控制器間的通信接口 645、管理交換元件通信接口 650。
[0102]控制器實例的輸入模塊620與上文參考圖5所描述的輸入轉(zhuǎn)換層505的類似之處在于,輸入模塊620從用戶獲取輸入,并將輸入轉(zhuǎn)換為控制模塊625可理解和處理的LCP數(shù)據(jù)。如上文所提及的,在一些實施例中,輸入采用API調(diào)用的形式。輸入模塊620將LCP數(shù)據(jù)發(fā)送到控制模塊625。
[0103]控制器實例的控制模塊625與控制層510的類似之處在于,控制模塊625將LCP數(shù)據(jù)轉(zhuǎn)換為LFP數(shù)據(jù),并將LFP數(shù)據(jù)推送到虛擬化模塊630中。另外,控制模塊625判斷接收到的LCP數(shù)據(jù)是否是控制器實例正在管理的LDPS的。如果控制器實例是LCP數(shù)據(jù)的LDPS的主控(即,管理LDPS的邏輯控制器),則控制器實例的虛擬化模塊將進一步處理數(shù)據(jù)。否貝U,一些實施例的控制模塊625將LCP數(shù)據(jù)存儲到輔助存儲器640中。
[0104]控制器實例的虛擬化模塊630與虛擬化層515的類似之處在于,虛擬化模塊630將LFP數(shù)據(jù)轉(zhuǎn)換為UPCP數(shù)據(jù)。然后,一些實施例的虛擬化模塊630通過控制器之間的通信接口 645,將UPCP數(shù)據(jù)發(fā)送到另一控制器實例,或通過管理交換元件通信接口 650發(fā)送到管理交換元件。
[0105]當另一個控制器實例是負責(zé)管理用于實現(xiàn)LDPS的管理交換元件中的至少一個的物理控制器時,虛擬化模塊630將UPCP數(shù)據(jù)發(fā)送到另一實例。這是當控制器實例只是負責(zé)特定LDPS的邏輯控制器而不是負責(zé)用于實現(xiàn)LDPS的管理交換元件的物理控制器或機箱控制器時的情況,其中,虛擬化模塊630在該控制器實例上生成UPCP數(shù)據(jù)。
[0106]當管理交換元件被配置成將UPCP數(shù)據(jù)轉(zhuǎn)換為特定于管理交換元件的CPCP數(shù)據(jù)時,虛擬化模塊630將UPCP數(shù)據(jù)發(fā)送到管理交換元件。在此情況下,控制器實例將不會具有可執(zhí)行從UPCP數(shù)據(jù)到CPCP數(shù)據(jù)的轉(zhuǎn)換的自定義層或模塊。
[0107]在一些實施例中,記錄635是存儲在控制器實例的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的一組記錄。在一些實施例中,輸入模塊、控制模塊、以及虛擬化模塊中的一些或全部使用、更新并管理存儲在關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的記錄。即,這些模塊的輸入和/或輸出存儲在關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中。
[0108]在一些實施例中,系統(tǒng)600在每一個實例的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中維護相同的交換元件數(shù)據(jù)記錄,而在其他實施例中,系統(tǒng)600允許不同實例的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)基于每一個控制器實例正在管理的LDPS來存儲交換元件數(shù)據(jù)記錄的不同集合。
[0109]一些實施例的PTD640是用于存儲用戶指定的網(wǎng)絡(luò)配置數(shù)據(jù)(例如,按照API調(diào)用的形式從輸入轉(zhuǎn)換的LCP數(shù)據(jù))的輔助存儲器結(jié)構(gòu)。在一些實施例中,每一個控制器實例的PTD存儲使用系統(tǒng)600的所有用戶的配置數(shù)據(jù)。在這些實施例中,接收到用戶輸入的控制器實例將配置數(shù)據(jù)傳播到其他控制器實例的PTD,以便每個控制器實例的每個PTD都具有所有用戶的所有配置數(shù)據(jù)。然而,在其他實施例中,控制器實例的PTD只存儲控制器實例正在管理的特定LDPS的配置數(shù)據(jù)。
[0110]通過允許不同的控制器實例存儲相同或重疊的配置數(shù)據(jù)和/或輔助存儲器結(jié)構(gòu)記錄,系統(tǒng)通過防止由于任何網(wǎng)絡(luò)控制器的故障(或關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)實例和/或輔助存儲器結(jié)構(gòu)實例的故障)所導(dǎo)致的數(shù)據(jù)的損失,改善其整體靈活性。例如,跨控制器實例來復(fù)制PTD使得發(fā)生故障的控制器實例能快速地從另一實例重新加載其PTD。
[0111]控制器間的通信接口 645用于(例如,由導(dǎo)出器,未不出)與另一控制器實例建立通信信道(例如,RPC信道)。如圖所示,控制器間的通信接口促進不同的控制器實例605-615之間的數(shù)據(jù)交換。
[0112]如上文所提及的,管理交換元件通信接口 650促進控制器實例和管理交換元件之間的通信。在一些實施例中,管理交換元件通信接口用于將由虛擬化模塊630所生成的UPCP數(shù)據(jù)傳播到能夠?qū)⑼ㄓ脭?shù)據(jù)轉(zhuǎn)換為自定義數(shù)據(jù)的每一個管理交換元件。
[0113]對于分布式控制器實例之間的通信的一些或全部,系統(tǒng)600使用協(xié)調(diào)管理器(CM)6550每一個實例中的CM655允許實例協(xié)調(diào)某些活動與其他實例。不同的實施例使用CM來協(xié)調(diào)實例之間的不同組的活動。這樣的活動的示例包括寫入到關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)、寫入到PTD、控制交換元件、促進與控制器實例的容錯有關(guān)的控制器間的通信等等。此外,CM用來尋找LDPS的主控和管理交換元件的主控。
[0114]如上文所提及的,系統(tǒng)600的不同的控制器實例可以控制同一個交換元件或不同的交換元件的操作。通過在若干實例上分發(fā)對這些操作的控制,系統(tǒng)可以容易地進行擴展以處理額外的交換元件。具體而言,系統(tǒng)可以將對不同的交換元件的管理分發(fā)到不同的控制器實例,以便享受可以通過使用多個控制器實例實現(xiàn)的高效的益處。在這樣的分布式系統(tǒng)中,每一個控制器實例都可以具有減少的處于管理下的交換元件,由此減少了每一個控制器需要執(zhí)行以生成并分發(fā)跨交換元件的流條目所需的計算數(shù)量。在其他實施例中,多個控制器實例的使用使得能夠創(chuàng)建橫向擴展網(wǎng)絡(luò)管理系統(tǒng)。如何最好地在大型網(wǎng)絡(luò)中分發(fā)網(wǎng)絡(luò)流表的計算是CPU密集的任務(wù)。通過在多個控制器實例上拆分處理,系統(tǒng)600可以使用一組更多但是功能不太強大的計算機系統(tǒng)來創(chuàng)建能夠處理大型網(wǎng)絡(luò)的橫向擴展網(wǎng)絡(luò)管理系統(tǒng)。
[0115]為了分發(fā)工作負荷并避免來自不同的控制器實例的沖突操作,一些實施例的系統(tǒng)600指定系統(tǒng)600內(nèi)的一個控制器實例(例如,605)作為LDPS和/或任何給定管理交換元件的主控(即,作為邏輯控制器或物理控制器)。在一些實施例中,每一個主控控制器實例都在其關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中只存儲與主控正在處理的管理交換元件有關(guān)的數(shù)據(jù)。
[0116]如上文所指出的,在一些實施例中,CM促進與控制器實例的容錯有關(guān)的控制器間的通信。例如,CM通過上文所描述的輔助存儲器來實現(xiàn)控制器間的通信??刂葡到y(tǒng)中的控制器實例可能會由于任意數(shù)量的原因而發(fā)生故障(例如,硬件故障、軟件故障、網(wǎng)絡(luò)故障等等)。不同的實施例可以使用不同的技術(shù)來判斷控制器實例是否發(fā)生故障。在一些實施例中,使用一致性協(xié)議來判斷控制系統(tǒng)中的控制器實例是否發(fā)生故障。雖然這些實施例中的一些可以使用Apache Zookeeper來實現(xiàn)一致性協(xié)議,但是其他實施例可以以其他方式實現(xiàn)一致性協(xié)議。
[0117]CM655的一些實施例可以使用定義的超時來判斷控制器實例是否發(fā)生故障。例如,如果控制器實例的CM在時間量(S卩,定義的超時量)內(nèi)沒有對通信做出響應(yīng)(從控制系統(tǒng)中的另一控制器實例的另一 CM發(fā)送的),則判斷非響應(yīng)性的控制器實例發(fā)生故障。在其他實施例中,可以使用其他技術(shù)來判斷控制器實例是否發(fā)生故障。
[0118]當主控控制器實例發(fā)生故障時,需要確定LDP集合和交換元件的新主控。CM655的一些實施例通過執(zhí)行選擇主控控制器實例的主控選擇過程來做出這樣的判斷(例如,用于分割對LDP集合的管理和/或分割對交換元件的管理)。一些實施例的CM655可以執(zhí)行用于為LDP集合和交換元件(其發(fā)生故障的控制器實例是主控)選擇新主控控制器的主控選擇過程。然而,其他實施例的CM655可以執(zhí)行(I)用于為其發(fā)生故障的控制器實例是主控的LDP集合選擇新主控控制器實例的主控選擇過程,以及(2)用于為其發(fā)生故障的控制器實例是主控的交換元件選擇新主控控制器實例的另一主控選擇過程。在這些情況下,CM655可以確定兩個不同的控制器實例作為新的控制器實例:一個用于其發(fā)生故障的控制器實例是主控的LDP集合,另一個用于其發(fā)生故障的控制器實例是主控的交換元件。
[0119]可替選地或結(jié)合地,一些實施例的集群中的控制器運行一致性算法來確定如上文所提及的主導(dǎo)控制器。主導(dǎo)控制器通過為特定工作項目指定主控控制器,分割集群中的每一個控制器實例負責(zé)的任務(wù),而在一些情況下,在主控控制器發(fā)生故障的情況下,熱待機的控制器接管。
[0120]在一些實施例中,當控制器實例被添加到控制系統(tǒng)中時,主控選擇過程進一步用于分割對LDP集合的管理和/或?qū)粨Q元件的管理。具體而言,當控制系統(tǒng)600檢測到控制系統(tǒng)600中的控制器實例的成員資格變化時,CM655的一些實施例執(zhí)行主控選擇過程。例如,當控制系統(tǒng)600檢測到新網(wǎng)絡(luò)控制器被添加到控制系統(tǒng)600時,CM655可以執(zhí)行主控選擇過程,以將對LDP集合的管理和/或?qū)粨Q元件的管理的一部分從現(xiàn)有的控制器實例重新分發(fā)到新控制器實例。然而,在其他實施例中,當控制系統(tǒng)600檢測到新網(wǎng)絡(luò)控制器被添加到控制系統(tǒng)600時,不會發(fā)生將對LDP集合的管理和/或?qū)粨Q元件的管理的一部分從現(xiàn)有的控制器實例重新分發(fā)到新控制器實例。相反,在這些實施例中,當控制系統(tǒng)600檢測到未分配的LDP集合和/或交換元件時,控制系統(tǒng)600將未分配的LDP集合和/或交換元件(例如,新LDP集合和/或交換元件或LDP集合和/或交換元件)從發(fā)生故障的網(wǎng)絡(luò)控制器指定到新控制器實例。
[0121]C.分割對LDP集合和管理交換元件的管理
[0122]圖7示出了為類似于圖6的系統(tǒng)600的分布式系統(tǒng)700中的交換元件(即,物理控制器)指定主控控制器實例的示例。在此示例中,兩個控制器705和710針對兩個不同的用戶A和B,控制三個交換元件S1、S2和S3。通過兩個控制應(yīng)用715和720,兩個用戶指定兩個不同的LDP集合725和730,它們將被控制器的虛擬化應(yīng)用745和750轉(zhuǎn)換成同樣地存儲在兩個控制器實例705和710的兩個關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)755和760中的許多記錄。
[0123]在圖7中所示出的示例中,兩個控制器705和710的兩個控制應(yīng)用715和720都可以修改用戶A和B的交換元件S2的記錄,但是,只有控制器705是此交換元件的主控。此示例示出了兩個不同的情況。第一情況涉及控制器705為用戶B,更新交換元件S2中的記錄S2bl。第二情況涉及在控制應(yīng)用720更新關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)760中的交換元件S2和用戶A的記錄S2al之后,控制器705更新交換元件S2中的記錄S2al。在圖7中所示出的示例中,此更新被從控制器710的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)760路由到控制器705的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)755,隨后被路由到交換元件S2。
[0124]不同的實施例使用不同的技術(shù)來將對控制器實例710的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)760的更改傳播到控制器實例705的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)755。例如,為傳播此更新,在一些實施例中,控制器710的虛擬化應(yīng)用750將一組記錄直接發(fā)送到關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)755 (通過使用控制器間的通信模塊或?qū)С銎?導(dǎo)入器)。作為響應(yīng),虛擬化應(yīng)用745會將對關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)755的更改發(fā)送到交換元件S2。
[0125]代替將關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)更改傳播到另一個控制器實例的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu),一些實施例的系統(tǒng)700使用其他技術(shù)來響應(yīng)于來自控制應(yīng)用720的請求,改變交換元件S2中的記錄S2al。例如,一些實施例的分布式控制系統(tǒng)使用輔助存儲器結(jié)構(gòu)(例如,PTD)作為不同的控制器實例之間的通信信道。在一些實施例中,跨所有實例復(fù)制PTD,并且關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)變化的一些或全部通過PTD存儲器層,從一個控制器實例推送到另一個控制器實例。相應(yīng)地,在圖7中所示出的示例中,可以將對關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)760的更改復(fù)制到控制器710的PTD,從那里,它可以在控制器705的PTD和關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)755中被復(fù)制。
[0126]可以存在對如圖7所示的操作序列的其他變型,因為一些實施例除指定控制器實例作為交換元件的主控之外,還指定一個控制器實例作為LDPS的主控。在一些實施例中,不同的控制器實例可以是交換元件以及關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的該交換元件的對應(yīng)記錄的主控,而其他實施例要求控制器實例是交換元件以及關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的該交換元件的所有記錄的主控。[0127]在系統(tǒng)700允許為交換元件以及關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)記錄指定主控的實施例中,圖7中所示出的示例示出了控制器實例710是關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)記錄S2al的主控,而控制器實例705是交換元件S2的主控的情況。如果除控制器實例705和710以外的控制器實例是關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)記錄S2al的主控,那么來自控制應(yīng)用720的對關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)記錄修改的請求將必須被傳播到該其他控制器實例。然后,該其他控制器實例將修改關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)記錄,然后該修改將導(dǎo)致關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)755和交換元件S2通過可將該修改傳播到控制器實例705的任意數(shù)量的機制來更新它們的記錄。
[0128]在其他實施例中,控制器實例705可以是關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)記錄S2al的主控,或者控制器實例705可以是交換元件S2及其關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)的所有記錄的主控。在這些實施例中,來自控制應(yīng)用720的對關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)記錄修改的請求必須被傳播到控制器實例705,然后該控制器實例705將修改關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)755中的記錄以及交換元件S2。
[0129]如上文所提及的,不同的實施例使用不同的技術(shù)來促進不同的控制器實例之間的通信。另外,不同的實施例以不同的方式來實現(xiàn)控制器實例。例如,在一些實施例中,控制應(yīng)用(例如,圖6和7中的625或715)和虛擬化應(yīng)用(例如,630或745)的堆棧(stack)安裝在單一計算機上并在其中運行。此外,在一些實施例中,多個控制器實例還可以安裝在單一計算機上并且并行地運行。在一些實施例中,控制器實例也可以使其組件的疊層在多個計算機之間分割。例如,在一個實例內(nèi),控制應(yīng)用(例如,625或715)可以位于第一物理或虛擬機上,而虛擬化應(yīng)用(例如,630或745)可以位于第二物理或虛擬機上。
[0130]圖8示出了充當用于分發(fā)輸入的控制器、LDPS的主控控制器(也被稱為邏輯控制器)、以及管理交換元件的主控控制器(也被稱為物理控制器)的若干控制器實例的示例操作。在一些實施例中,不是每一個控制器實例都包括如上文參考圖6所描述的不同的模塊和接口的完全的堆棧。或者,也不是每一個控制器實例都執(zhí)行完全堆棧的每一個功能。例如,圖8中所示出的控制器實例805、810、以及815中沒有一個具有模塊以及接口的完全堆棧。
[0131]此示例中的控制器實例805是用于分發(fā)輸入的控制器實例。即,一些實施例的控制器實例805按照API調(diào)用的形式從用戶獲取輸入。通過API調(diào)用,用戶可以指定對配置特定LDPS (例如,配置要在一組管理交換元件中實現(xiàn)的邏輯交換元件或邏輯路由器)的請求,或指定對信息查詢(例如,用戶的邏輯交換機的邏輯端口的網(wǎng)絡(luò)流量統(tǒng)計信息)的請求。在一些實施例中,控制器實例805的輸入模塊820接收這些API調(diào)用并將它們轉(zhuǎn)換為可以存儲在PTD825中并發(fā)送到另一個控制器實例的形式(例如,數(shù)據(jù)元組或記錄)。
[0132]然后,此示例中的控制器實例805將這些記錄發(fā)送到負責(zé)管理特定LDPS的記錄的另一個控制器實例。在此示例中,控制器實例810負責(zé)LDPS的記錄??刂破鲗嵗?10從控制器實例805的PTD825接收記錄,并將記錄存儲到PTD845中,該PTD845是控制器實例810的輔助存儲器結(jié)構(gòu)。在一些實施例中,不同的控制器實例的PTD可以直接彼此交換信息,并且不必依賴于控制器間的通信接口。
[0133]然后,控制應(yīng)用810檢測這些記錄向PTD的添加,并處理記錄以生成或修改關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)842中的其他記錄。具體而言,控制應(yīng)用生成LFP數(shù)據(jù)。虛擬化應(yīng)用又檢測關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的這些記錄的修改和/或添加,并修改或生成關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的其他記錄。在此示例中,這些其他記錄代表UPCP數(shù)據(jù)。然后,這些記錄通過控制器實例810的控制器間的通信接口 850,被發(fā)送到正在管理實現(xiàn)特定LDPS的交換元件中的至少一個的另一個控制器實例。
[0134]在此示例中,控制器實例815是正在管理交換元件855的控制器實例。交換元件實現(xiàn)特定LDPS的至少一部分??刂破鲗嵗?15通過控制器間的通信接口 865,從控制器實例810接收代表UPCP數(shù)據(jù)的記錄。在一些實施例中,控制器實例815將具有控制應(yīng)用和虛擬化應(yīng)用以執(zhí)行UPCP數(shù)據(jù)到CPCP數(shù)據(jù)的轉(zhuǎn)換。然而,在此示例中,控制器實例815只是標識將向其發(fā)送UPCP數(shù)據(jù)的一組管理交換元件。如此,控制器實例815充當收集發(fā)送到此控制器負責(zé)管理的管理交換元件的數(shù)據(jù)的聚合點。在此示例中,管理交換元件855是由控制器實例815管理的交換元件中的一個。
[0135]D.輸入轉(zhuǎn)換層
[0136]圖9在概念上示出了輸入轉(zhuǎn)換應(yīng)用900的軟件體系結(jié)構(gòu)。一些實施例的輸入轉(zhuǎn)換應(yīng)用充當上文參考圖5所描述的輸入轉(zhuǎn)換層505。具體而言,輸入轉(zhuǎn)換應(yīng)用從允許用戶鍵入輸入值的用戶界面應(yīng)用接收輸入。輸入轉(zhuǎn)換應(yīng)用將輸入轉(zhuǎn)換為請求,并將請求調(diào)度到一個或多個控制器實例,以處理請求。在一些實施例中,輸入轉(zhuǎn)換應(yīng)用與控制應(yīng)用在同一個控制器實例中運行,而在其他實施例中,輸入轉(zhuǎn)換應(yīng)用作為單獨的控制器實例來運行。如此圖所示,輸入轉(zhuǎn)換應(yīng)用包括輸入解析器905、過濾器910、請求生成器915、請求儲存庫920、調(diào)度器925、響應(yīng)管理器930、以及控制器間的通信接口 940。
[0137]在一些實施例中,輸入轉(zhuǎn)換應(yīng)用900支持一組用于指定LDP集合和信息查詢的API調(diào)用。在這些實施例中,實現(xiàn)了允許用戶鍵入輸入值的用戶界面應(yīng)用,以將API調(diào)用形式的輸入發(fā)送到輸入轉(zhuǎn)換應(yīng)用900。因此,這些API調(diào)用指定LDPS (例如,由用戶所指定的邏輯交換元件配置)和/或用戶的信息查詢(例如,用戶的邏輯交換元件的邏輯端口的網(wǎng)絡(luò)流量統(tǒng)計信息)。此外,在一些實施例中,輸入轉(zhuǎn)換應(yīng)用900還從邏輯控制器、物理控制器、和/或另一個控制器實例的另一個輸入轉(zhuǎn)換應(yīng)用獲取輸入。
[0138]一些實施例的輸入解析器905從用戶界面應(yīng)用接收API調(diào)用形式的輸入。在一些實施例中,輸入解析器從API調(diào)用中提取用戶輸入值,并將輸入值傳遞到過濾器910。過濾器910過濾掉不符合某些要求的輸入值。例如,過濾器910過濾掉指定邏輯端口的無效網(wǎng)絡(luò)地址的輸入值。對于包含不符合的輸入值的那些API調(diào)用,響應(yīng)管理器930將指示輸入不符合的響應(yīng)發(fā)送給用戶。
[0139]請求生成器915生成要被發(fā)送到一個或多個控制器實例的請求,控制器實例將處理請求以產(chǎn)生對請求的響應(yīng)。這些請求可以包含供接收控制器實例處理的LDPS數(shù)據(jù)和/或信息查詢。例如,請求可以要求用戶正在管理的邏輯交換元件的邏輯端口的統(tǒng)計信息。對此請求的響應(yīng)將包括由負責(zé)管理與邏輯交換元件相關(guān)聯(lián)的LDPS的控制器實例準備的所請求的統(tǒng)計信息。
[0140]不同的實施例的請求生成器915根據(jù)不同的格式生成請求,這取決于接收并處理請求的控制器實例的實現(xiàn)。例如,一些實施例的請求生成器915所生成的請求采用適用于存儲在接收請求的控制器實例的關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)中的記錄的形式(例如,數(shù)據(jù)元組)。在這些實施例中的一些實施例中,接收方控制器實例使用nLog表映射引擎來處理代表請求的記錄。在其他實施例中,請求采用可以與接收請求的控制器實例的NIB數(shù)據(jù)結(jié)構(gòu)進行交互的面向?qū)ο蟮臄?shù)據(jù)對象的形式。在這些實施例中,接收方控制器實例直接在NIB數(shù)據(jù)結(jié)構(gòu)上處理數(shù)據(jù)對象,而不經(jīng)過nLog表映射引擎。
[0141]一些實施例的請求生成器915將所生成的請求儲存在請求儲存庫920中,以便調(diào)度器925可以將請求發(fā)送到合適的控制器實例。調(diào)度器925標識每一個請求應(yīng)該被發(fā)送到的控制器實例。在一些情況下,調(diào)度器檢查與請求相關(guān)聯(lián)的LDPS并標識作為該LDPS的主控的控制器實例。在一些情況下,當請求具體地涉及交換元件時(例如,當請求是關(guān)于被映射到交換元件的端口的邏輯端口的統(tǒng)計信息時),調(diào)度器標識特定交換元件的主控(即,物理控制器)作為發(fā)送請求的控制器實例。調(diào)度器將請求發(fā)送到所標識的控制器實例。當請求包括信息查詢時,接收控制器實例返回響應(yīng)。
[0142]控制器之間的通信接口 940與上文參考圖6所描述的控制器間的通信接口 645的類似之處在于,控制器間的通信接口 940與另一個控制器實例建立通過其可以發(fā)送請求的通信信道(例如,RPC信道)。一些實施例的通信信道是雙向的,而在其他實施例中,通信信道是單向的。當信道是單向的時,控制器間的通信接口與另一個控制器實例建立多個信道,以便輸入轉(zhuǎn)換應(yīng)用可以通過不同的信道發(fā)送請求和接收響應(yīng)。
[0143]當接收方控制器實例接收到指定信息查詢的請求時,控制器實例處理請求,并產(chǎn)生包含被查詢的信息的響應(yīng)。響應(yīng)管理器930通過由控制器間的通信接口 940建立的信道,從處理請求的控制器實例接收響應(yīng)。在某些情況下,對于發(fā)出的請求,可以有一個以上的響應(yīng)返回。例如,對用戶正在管理的邏輯交換元件的所有邏輯端口的統(tǒng)計信息的請求將從每一個控制器返回響應(yīng)。來自其端口被映射到邏輯端口的多個不同的交換元件的多個物理控制器實例的響應(yīng)可以返回到輸入轉(zhuǎn)換應(yīng)用900,直接返回到輸入轉(zhuǎn)換應(yīng)用900或通過與邏輯開關(guān)相關(guān)聯(lián)的LDPS的主控。在這樣的情況下,一些實施例的響應(yīng)管理器930合并這些響應(yīng),并向用戶界面應(yīng)用發(fā)送單一合并的響應(yīng)。
[0144]如上文所提及的,在控制器實例中運行的控制應(yīng)用通過執(zhí)行轉(zhuǎn)換操作,將代表LCP數(shù)據(jù)的數(shù)據(jù)記錄轉(zhuǎn)換為代表LFP數(shù)據(jù)的數(shù)據(jù)記錄。具體而言,在一些實施例中,控制應(yīng)用利用LDP集合來填充由虛擬化應(yīng)用創(chuàng)建的LDPS表(例如,邏輯轉(zhuǎn)發(fā)表)。
[0145]E.nLog 引擎
[0146]在一些實施例中,控制器實例通過使用nLog表映射引擎(該引擎使用datalog(數(shù)據(jù)日志)表映射技術(shù)的變型)來執(zhí)行其映射操作。Datalog(數(shù)據(jù)日志)用于數(shù)據(jù)庫管理領(lǐng)域,以將一組表映射到另一組表。Datalog(數(shù)據(jù)日志)不是用于在網(wǎng)絡(luò)控制系統(tǒng)的虛擬化應(yīng)用中執(zhí)行表映射操作的合適的工具,因為其當前實現(xiàn)往往很慢。
[0147]相應(yīng)地,一些實施例的nLog引擎被自定義設(shè)計以快速地操作,從而它可以執(zhí)行LDPS數(shù)據(jù)元組到管理交換元件的數(shù)據(jù)元組的實時映射。此自定義設(shè)計基于若干自定義設(shè)計選擇。例如,一些實施例根據(jù)由應(yīng)用開發(fā)人員(例如,由控制應(yīng)用的開發(fā)人員)表達的一組高級別聲明性規(guī)則,編譯nLog表映射引擎。在這些實施例中的一些實施例中,為nLog引擎做出的一個自定義設(shè)計選擇是使應(yīng)用開發(fā)人員只使用“AND(與)”算符來表達聲明性規(guī)貝U。通過防止開發(fā)人員使用其他算符(諸如OR(或)、X0R(異或)等等),這些實施例確保nLog引擎的作為結(jié)果的規(guī)則按照在運行時更快地執(zhí)行的AND (與)操作來表達。
[0148]另一自定義設(shè)計選擇涉及由nLog引擎執(zhí)行的連接操作。連接操作是用于在不同表的記錄之間創(chuàng)建關(guān)聯(lián)的常見的數(shù)據(jù)庫操作。在一些實施例中,nLog引擎將其連接操作限制到內(nèi)連接操作(也被稱為內(nèi)部連接操作),因為執(zhí)行外部連接操作(也被稱為外部連接操作)會費時,所以對于引擎的實時操作是不切實際的。
[0149]再一個自定義設(shè)計選擇是將nLog引擎實現(xiàn)為由多個不同的控制器實例執(zhí)行的分布式表映射引擎。一些實施例通過分割對LDP集合的管理來以分布式方式實現(xiàn)nLog引擎。分割對LDP集合的管理涉及為每一個特定LDPS只指定一個控制器實例,作為負責(zé)指定與該特定LDPS相關(guān)聯(lián)的記錄的實例。例如,當控制系統(tǒng)使用三個交換元件來指定具有兩個不同的控制器實例的五個不同的用戶的五個LDP集合時,一個控制器實例可以是涉及LDP集合中的兩個組的記錄的主控,而另一個控制器實例可以是其他三個LDP集合的記錄的主控。
[0150]在一些實施例中,分割對LDP集合的管理還將每一個LDPS的表映射操作分配到負責(zé)LDPS的控制器實例的nLog引擎。nLog表映射操作跨若干nLog實例的分布降低了每一個nLog實例上的負載,并由此提高每一個nLog實例可以完成其映射操作的速度。此外,此分布還降低執(zhí)行控制器實例的每一個機器上的存儲器大小要求。一些實施例通過將由每一個nLog實例執(zhí)行的第一連接操作基于LDPS參數(shù),跨不同的實例分割nLog表映射操作。此指定確保,當實例啟動一組涉及不由nLog實例管理的LDPS的連接操作時,每一個nLog實例的連接操作失敗并立即結(jié)束。在上文包括的美國專利申請13/177,533中描述了使用nLog引擎的若干示例。
[0151]F.控制層
[0152]圖10示出了本發(fā)明的一些實施例的控制應(yīng)用1000。在一些實施例中,此應(yīng)用1000用作圖6的控制模塊625。此應(yīng)用1000使用nLog表映射引擎來將包含代表LCP數(shù)據(jù)的輸入數(shù)據(jù)元組的輸入表映射到代表LFP數(shù)據(jù)的數(shù)據(jù)元組。此應(yīng)用駐留在從控制應(yīng)用1000接收指定LDP集合的數(shù)據(jù)元組的虛擬化應(yīng)用1005上面。虛擬化應(yīng)用1005將數(shù)據(jù)元組映射到UPCP數(shù)據(jù)。
[0153]更具體而言,控制應(yīng)用1000允許不同的用戶定義不同的LDP集合,LDP集合指定用戶管理的邏輯交換元件的期望配置??刂茟?yīng)用1000通過其映射操作將每一個用戶的每一個LDPS的數(shù)據(jù)轉(zhuǎn)換為指定與LDPS相關(guān)聯(lián)的邏輯交換元件的LFP數(shù)據(jù)的一組數(shù)據(jù)元組。在一些實施例中,控制應(yīng)用與虛擬化應(yīng)用1005在同一個主機上執(zhí)行。在其他實施例中,控制應(yīng)用和虛擬化應(yīng)用不必在同一臺機器上運行。
[0154]如圖10所不,控制應(yīng)用1000包括一組規(guī)則引擎輸入表1010、一組函數(shù)和常量表1015、導(dǎo)入器1020、規(guī)則引擎1025、一組規(guī)則引擎輸出表1045、轉(zhuǎn)換器1050、導(dǎo)出器1055、PTD1060、以及編譯器1035。編譯器1035是應(yīng)用的與應(yīng)用的其他組件在不同的時間實例上操作的一個組件。當開發(fā)人員需要為特定控制應(yīng)用和/或虛擬化的環(huán)境指定規(guī)則引擎時,編譯器操作,而當應(yīng)用與虛擬化應(yīng)用連接以部署由一個或多個用戶所指定的LDP集合時,應(yīng)用的其余模塊在運行時操作。
[0155]在一些實施例中,編譯器1035獲取以聲明性語言指定的聲明性指令1040的相對較小的集合(例如,幾百行),并將它們轉(zhuǎn)換為指定執(zhí)行應(yīng)用的表映射的規(guī)則引擎1025的操作的代碼(即,目標代碼)的大的集合(例如,數(shù)千行)。如此,編譯器大大地簡化控制應(yīng)用開發(fā)人員的定義和更新控制應(yīng)用的過程。這是因為,編譯器允許開發(fā)人員使用高級程序設(shè)計語言,該高級程序設(shè)計語言允許控制應(yīng)用的復(fù)雜映射操作的緊湊定義,并隨后響應(yīng)于任意數(shù)量的變化(例如,由控制應(yīng)用支持的邏輯聯(lián)網(wǎng)功能的變化,對控制應(yīng)用的期望行為的變化等等),更新此映射操作。此外,當開發(fā)人員正在定義映射操作時,編譯器還使開發(fā)人員不必考慮事件到達控制應(yīng)用的順序。
[0156]在一些實施例中,規(guī)則引擎(RE)輸入表1010包括具有邏輯數(shù)據(jù)和/或由用戶和/或控制應(yīng)用所指定的交換配置(例如,訪問控制列表配置、專用虛擬網(wǎng)絡(luò)配置、端口安全配置等等)的表。在一些實施例中,輸入表1010還包括包含來自由網(wǎng)絡(luò)控制系統(tǒng)管理的交換元件的物理數(shù)據(jù)的表。在一些實施例中,這樣的物理數(shù)據(jù)包括關(guān)于管理交換元件的數(shù)據(jù)、以及關(guān)于由網(wǎng)絡(luò)控制系統(tǒng)部署不同用戶的不同LDP集合所使用的網(wǎng)絡(luò)配置的其他數(shù)據(jù)。
[0157]RE輸入表1010部分地利用由用戶所提供的LCP數(shù)據(jù)來填充。RE輸入表1010還包含LFP數(shù)據(jù)和UPCP數(shù)據(jù)。除RE輸入表1010之外,控制應(yīng)用1000還包括其他雜項表1015,其中,規(guī)則引擎1025使用其他雜項表1015來收集用于其表映射操作的輸入。這些表1015包括常量表,常量表存儲規(guī)則引擎1025執(zhí)行其表映射操作所需的常量的定義的值。例如,常量表1015可以包括被定義為值O的常量“零”,被定義為值4000的常量“dispatch_p0rt_no”,以及被定義為值 OxFF:FF:FF:FF:FF:FF 的常量“broadcast_MAC_addr”。
[0158]當規(guī)則引擎1025引用常量時,實際檢索并使用為常量定義的對應(yīng)的值。另外,還可以修改和/或更新為常量表1015中的常量定義的值。如此,常量表1015提供修改為規(guī)則引擎1025引用的常量定義的值的能力,無需重寫或重新編譯指定規(guī)則引擎1025的操作的代碼。表1015還包括存儲函數(shù)的函數(shù)表,規(guī)則引擎1025需要使用這些函數(shù)來計算填充輸出表1045所需的值。
[0159]規(guī)則引擎1025執(zhí)行指定用于將LCP數(shù)據(jù)轉(zhuǎn)換為LFP數(shù)據(jù)的一種方式的表映射操作。每當修改規(guī)則引擎(RE)輸入表中的一個時,規(guī)則引擎執(zhí)行可以導(dǎo)致一個或多個RE輸出表中的一個或多個數(shù)據(jù)元組的修改的一組表映射操作。
[0160]如圖10所示,規(guī)則引擎1025包括事件處理器1022、若干查詢計劃1027、以及表處理器1030。每一個查詢計劃都是指定在發(fā)生對RE輸入表中的一個的修改時要執(zhí)行的一組連接操作的一組規(guī)則。這樣的修改在下面被稱為輸入表事件。在此示例中,每一個查詢計劃都是由編譯器1035從聲明組1040中的一個聲明性規(guī)則所生成的。在一些實施例中,從一個聲明性規(guī)則生成一個以上的查詢計劃。例如,為由一個聲明性規(guī)則連接的每一個表創(chuàng)建查詢計劃。即,當一個聲明性規(guī)則指定要連接四個表時,將從這一個聲明創(chuàng)建四個不同的查詢計劃。在一些實施例中,查詢計劃是使用nLog聲明性語言來定義的。
[0161]規(guī)則引擎1025的事件處理器1022檢測每一個輸入表事件的發(fā)生。不同的實施例的事件處理器以不同的方式檢測輸入表事件的發(fā)生。在一些實施例中,事件處理器向RE輸入表注冊回調(diào),用于通知對RE輸入表的記錄的更改。在這樣的實施例中,當事件處理器1022從RE輸入表接收到其記錄中的一個記錄改變的通知時,它就檢測到輸入表事件。
[0162]響應(yīng)于檢測到的輸入表事件,事件處理器1022(1)為檢測到的表事件,選擇合適的查詢計劃,以及(2)指示表處理器1030執(zhí)行查詢計劃。為執(zhí)行查詢計劃,在一些實施例中,表處理器1030執(zhí)行由查詢計劃所指定的連接操作,以從一個或多個輸入和雜項表1010和1015產(chǎn)生代表一組或多組數(shù)據(jù)值的一個或多個記錄。然后,一些實施例的表處理器1030(1)執(zhí)行選擇操作,以從由連接操作所產(chǎn)生的記錄選擇數(shù)據(jù)值的子集,以及(2)將所選數(shù)據(jù)值的子集寫入到一個或多個RE輸出表1045中。
[0163]在一些實施例中,RE輸出表1045存儲邏輯和物理網(wǎng)絡(luò)元件數(shù)據(jù)屬性兩者。表1045被稱為RE輸出表,因為它們存儲規(guī)則引擎1025的表映射操作的輸出。在一些實施例中,RE輸出表可被分組為多個不同的類別。例如,在一些實施例中,這些表可以是RE輸入表和/或控制應(yīng)用(CA)輸出表。當表中的變化導(dǎo)致規(guī)則引擎檢測到要求執(zhí)行查詢計劃的輸入事件時,表是RE輸入表。RE輸出表1045也可以是生成導(dǎo)致規(guī)則引擎執(zhí)行另一查詢計劃的事件的RE輸入表1010。這樣的事件被稱為內(nèi)部輸入事件,并且它與外部輸入事件完全不同,外部輸入事件是由控制應(yīng)用1000或?qū)肫?020做出的RE輸入表修改所引起的事件。
[0164]當表中的變化導(dǎo)致導(dǎo)出器1055將更改導(dǎo)出到虛擬化應(yīng)用1005時,表是CA輸出表,如下面所進一步描述的。在一些實施例中,RE輸出表1045中的表可以是RE輸入表、CA輸出表,或RE輸入表和CA輸出表兩者。
[0165]導(dǎo)出器1055檢測對RE輸出表1045的CA輸出表的更改。不同的實施例的導(dǎo)出器以不同的方式檢測CA輸出表事件的發(fā)生。在一些實施例中,導(dǎo)出器向CA輸出表注冊回調(diào),用于通知對CA輸出表的記錄的更改。在這樣的實施例中,當導(dǎo)出器1055從CA輸出表接收到其記錄中的一個記錄改變的通知時,它就檢測到輸出表事件。
[0166]響應(yīng)于檢測到的輸出表事件,導(dǎo)出器1055獲取修改過的CA輸出表中的一些或全部修改過的數(shù)據(jù)元組,并將此修改過的數(shù)據(jù)元組傳播到虛擬化應(yīng)用1005的輸入表(未示出)。在一些實施例中,代替導(dǎo)出器1055將數(shù)據(jù)元組推送到虛擬化應(yīng)用,虛擬化應(yīng)用1005從CA輸出表1045將數(shù)據(jù)元組拉到虛擬化應(yīng)用的輸入表。在一些實施例中,控制應(yīng)用1000的CA輸出表1045和虛擬化應(yīng)用1005的輸入表可以是相同的。在另一些其他實施例中控制和虛擬化應(yīng)用使用一組表,以便CA輸出表基本上是虛擬化應(yīng)用(VA)輸入表。
[0167]在一些實施例中,控制應(yīng)用不會在輸出表1045中保留控制應(yīng)用不負責(zé)管理的LDP集合的數(shù)據(jù)。然而,這樣的數(shù)據(jù)將由轉(zhuǎn)換器1050轉(zhuǎn)換為可以存儲在PTD中并被存儲在PTD中的格式??刂茟?yīng)用1000的PTD將此數(shù)據(jù)傳播到其他控制器實例的一個或多個其他控制應(yīng)用實例,以便負責(zé)管理與該數(shù)據(jù)相關(guān)聯(lián)的LDP集合的一些其他控制器實例可以處理該數(shù)據(jù)。
[0168]在一些實施例中,控制應(yīng)用還將存儲在輸出表1045中的數(shù)據(jù)(即,被控制應(yīng)用保留在輸出表中的數(shù)據(jù))帶到PTD,以便確保數(shù)據(jù)的靈活性。這樣的數(shù)據(jù)還由轉(zhuǎn)換器1050轉(zhuǎn)換,存儲在PTD中,并被傳播到其他控制器實例的其他控制應(yīng)用實例。因此,在這些實施例中,控制器實例的PTD具有用于由網(wǎng)絡(luò)控制系統(tǒng)管理的所有LDP集合的所有配置數(shù)據(jù)。即,在一些實施例中,每一個PTD都包含邏輯網(wǎng)絡(luò)的配置的全局視圖。
[0169]導(dǎo)入器1020與輸入數(shù)據(jù)的多個不同的源連接,并使用輸入數(shù)據(jù)來修改或創(chuàng)建輸入表1010。一些實施例的導(dǎo)入器1020通過控制器間的通信接口(未示出)從輸入轉(zhuǎn)換應(yīng)用1070接收輸入數(shù)據(jù)。導(dǎo)入器1020還與PTD1060連接,以便通過PTD從其他控制器實例接收到的數(shù)據(jù)可以被用作修改或創(chuàng)建輸入表1010的輸入數(shù)據(jù)。此外,導(dǎo)入器1020還檢測RE輸入表和RE輸出表1045的RE輸入表與CA輸出表的變化。
[0170]G.虛擬化層
[0171]如上文所提及的,一些實施例的虛擬化應(yīng)用指定網(wǎng)絡(luò)控制系統(tǒng)的不同用戶的不同LDP集合可以通過由網(wǎng)絡(luò)控制系統(tǒng)管理的交換元件來實現(xiàn)的方式。在一些實施例中,虛擬化應(yīng)用通過執(zhí)行轉(zhuǎn)換操作來指定管理交換元件基礎(chǔ)結(jié)構(gòu)內(nèi)的LDP集合的實現(xiàn)。這些轉(zhuǎn)換操作將LDP集合數(shù)據(jù)記錄轉(zhuǎn)換為控制數(shù)據(jù)記錄(例如,UPCP數(shù)據(jù)),該控制數(shù)據(jù)記錄最初存儲在管理交換元件內(nèi),然后被交換元件用來產(chǎn)生用于定義交換元件的轉(zhuǎn)發(fā)行為的轉(zhuǎn)發(fā)平面數(shù)據(jù)(例如,流量條目)。轉(zhuǎn)換操作還產(chǎn)生指定應(yīng)該在管理交換元件內(nèi)以及在管理交換元件之間定義的網(wǎng)絡(luò)構(gòu)造(例如,隧道、隊列、隊列集合等等)的其他數(shù)據(jù)(例如,在表中)。網(wǎng)絡(luò)構(gòu)造還包括管理的軟件交換元件,這些管理的軟件交換元件是動態(tài)地部署的或預(yù)先配置的管理的軟件交換元件,它們是動態(tài)地添加到管理交換元件集合中。
[0172]圖11示出了本發(fā)明的一些實施例的虛擬化應(yīng)用1100。在一些實施例中,此應(yīng)用1100用作圖6的虛擬化模塊630。虛擬化應(yīng)用1100使用nLog表映射引擎來映射包含代表UPCP數(shù)據(jù)的LDPS數(shù)據(jù)元組的輸入表。此應(yīng)用駐留在生成LDPS數(shù)據(jù)元組的控制應(yīng)用1105下面??刂茟?yīng)用1105類似于上文參考圖10所描述的控制應(yīng)用1000。虛擬化應(yīng)用1100類似于虛擬化應(yīng)用1005。
[0173]如圖11所示,虛擬化應(yīng)用1100包括一組規(guī)則引擎輸入表1110、一組函數(shù)和常量表1115、導(dǎo)入器1120、規(guī)則引擎1125、一組規(guī)則引擎輸出表1145、轉(zhuǎn)換器1150、導(dǎo)出器1155、PTD1160、以及編譯器1135。編譯器1135類似于上文參考圖10所描述的編譯器1035。
[0174]為了使虛擬化應(yīng)用1100將LDPS數(shù)據(jù)元組映射到UPCP數(shù)據(jù)元組,在一些實施例中,開發(fā)人員以聲明性語言指定聲明性指令1140,該聲明性指令1140包括用于針對一些管理交換元件將LDPS數(shù)據(jù)元組映射到UPCP數(shù)據(jù)元組的指令。在一些這樣的實施例中,這些交換元件包括將UPCP數(shù)據(jù)轉(zhuǎn)換為CPCP數(shù)據(jù)的UPCP。
[0175]對于其他管理交換元件,虛擬化應(yīng)用1100將LDPS數(shù)據(jù)元組映射到特定于沒有UPCP的每一個管理交換元件的CPCP數(shù)據(jù)元組。在一些實施例中,當虛擬化應(yīng)用1100從另一控制器實例的虛擬化應(yīng)用接收UPCP數(shù)據(jù)時,對于不具有將通用物理控制平面數(shù)據(jù)元組轉(zhuǎn)換為物理數(shù)據(jù)路徑組數(shù)據(jù)元組的UPCP的一些管理交換元件,虛擬化應(yīng)用1100進一步將輸出表1140中的UPCP數(shù)據(jù)元組映射到CPCP數(shù)據(jù)元組。
[0176]在一些實施例中,當具有將UPCP元組轉(zhuǎn)換為特定于管理交換元件的CPCP數(shù)據(jù)的機箱控制器時,虛擬化應(yīng)用1100對于特定管理交換元件,不將輸入UPCP數(shù)據(jù)轉(zhuǎn)換為CPCP數(shù)據(jù)。在這些實施例中,具有虛擬化應(yīng)用1100的控制器實例標識其控制器實例是主控的一組管理交換元件,并將UPCP數(shù)據(jù)分發(fā)到管理交換元件組。
[0177]RE輸入表1110類似于RE輸入表1010。除RE輸入表1110之外,虛擬化應(yīng)用1100還包括其他雜項表1115,其中,規(guī)則引擎1125使用其他雜項表1115來收集用于其表映射操作的輸入。這些表1115類似于表1015。如圖11所示,規(guī)則引擎1125包括事件處理器1122、若干查詢計劃1127、以及表處理器1130,它們與事件處理器1022、查詢計劃1027、以及表處理器1030功能類似。
[0178]在一些實施例中,RE輸出表1145存儲邏輯和物理網(wǎng)絡(luò)元件數(shù)據(jù)屬性兩者。表1145被稱為RE輸出表,因為它們存儲規(guī)則引擎1125的表映射操作的輸出。在一些實施例中,RE輸出表可被分組為若干不同的類別。例如,在一些實施例中,這些表可以是RE輸入表和/或虛擬化應(yīng)用(VA)輸出表。當表中的變化導(dǎo)致規(guī)則引擎檢測到要求執(zhí)行查詢計劃的輸入事件時,表是RE輸入表。RE輸出表1145也可以是在它被規(guī)則引擎修改之后生成導(dǎo)致規(guī)則引擎執(zhí)行另一查詢計劃的事件的RE輸入表1110。這樣的事件被稱為內(nèi)部輸入事件,并且它與外部輸入事件完全不同,外部輸入事件是由控制應(yīng)用1105經(jīng)由導(dǎo)入器1120做出的RE輸入表修改所引起的事件。[0179]當表中的變化導(dǎo)致導(dǎo)出器1155將更改輸出到管理交換元件或其他控制器實例時,表是VA輸出表。如圖12所示,在一些實施例中,RE輸出表1145中的表可以是RE輸入表1110、VA輸出表1205,或RE輸入表1110和VA輸出表兩者。
[0180]導(dǎo)出器1155檢測對RE輸出表1145的VA輸出表1205的更改。不同的實施例的導(dǎo)出器以不同的方式檢測VA輸出表事件的發(fā)生。在一些實施例中,導(dǎo)出器向VA輸出表注冊回調(diào),用于通知對VA輸出表的記錄的更改。在這樣的實施例中,當導(dǎo)出器1155從VA輸出表接收到其記錄中的一個記錄改變的通知時,它就檢測到輸出表事件。
[0181]響應(yīng)于檢測到的輸出表事件,導(dǎo)出器1155獲取修改過的VA輸出表中的每一個修改過的數(shù)據(jù)元組,并將此修改過的數(shù)據(jù)元組傳播到其他控制器實例中的一個或多個(例如,機箱控制器)或一個或多個管理交換元件。在這樣做時,導(dǎo)出器完成LDPS(例如,一個或多個邏輯交換配置)向由記錄所指定的一個或多個管理交換元件的部署。
[0182]由于在一些實施例中,VA輸出表存儲邏輯和物理網(wǎng)絡(luò)元件數(shù)據(jù)屬性兩者,因此在一些實施例中,PTDl 160存儲與輸出表1145中的邏輯和物理網(wǎng)絡(luò)元件數(shù)據(jù)屬性相同的邏輯和物理網(wǎng)絡(luò)元件數(shù)據(jù)屬性、或從其導(dǎo)出的邏輯和物理網(wǎng)絡(luò)元件屬性兩者。然而,在其他實施例中,PTD1160只存儲與輸出表1145中的物理網(wǎng)絡(luò)元件數(shù)據(jù)屬性相同的物理網(wǎng)絡(luò)元件數(shù)據(jù)屬性、或從其導(dǎo)出的物理網(wǎng)絡(luò)元件屬性。
[0183]在一些實施例中,虛擬化應(yīng)用不會在輸出表1145中保留虛擬化應(yīng)用不負責(zé)管理的LDP集合的數(shù)據(jù)。然而,這樣的數(shù)據(jù)將由轉(zhuǎn)換器1150轉(zhuǎn)換為可以存儲在PTD中然后被存儲在PTD中的格式。虛擬化應(yīng)用1100的PTD將此數(shù)據(jù)傳播到其他控制器實例的一個或多個其他虛擬化應(yīng)用實例,以便負責(zé)管理與該數(shù)據(jù)相關(guān)聯(lián)的LDP集合的一些其他虛擬化應(yīng)用實例可以處理該數(shù)據(jù)。
[0184]在一些實施例中,虛擬化應(yīng)用還將存儲在輸出表1145中的數(shù)據(jù)(即,被虛擬化應(yīng)用保留在輸出表中的數(shù)據(jù))帶到PTD,以便確保數(shù)據(jù)的靈活性。這樣的數(shù)據(jù)還由轉(zhuǎn)換器1150轉(zhuǎn)換,存儲在PTD中,并被傳播到其他控制器實例的其他虛擬化應(yīng)用實例。因此,在這些實施例中,控制器實例的PTD具有用于由網(wǎng)絡(luò)控制系統(tǒng)管理的所有LDP集合的所有配置數(shù)據(jù)。即,在一些實施例中,每一個PTD都包含邏輯網(wǎng)絡(luò)的配置的全局視圖。
[0185]導(dǎo)入器1120與輸入數(shù)據(jù)的若干個不同的源連接,并使用輸入數(shù)據(jù)來修改或創(chuàng)建輸入表1110。一些實施例的導(dǎo)入器1120通過控制器間的通信接口(未示出)從輸入轉(zhuǎn)換應(yīng)用1170接收輸入數(shù)據(jù)。導(dǎo)入器1120還與PTDl 160連接,以便通過PTD從其他控制器實例接收到的數(shù)據(jù)可以被用作修改或創(chuàng)建輸入表1110的輸入數(shù)據(jù)。此外,導(dǎo)入器1120還檢測RE輸入表和RE輸出表1145的RE輸入表與VA輸出表的變化。
[0186]H.網(wǎng)絡(luò)控制器
[0187]圖13示出了本發(fā)明的一些實施例的控制和虛擬化應(yīng)用的表映射操作的簡化視圖。如在此圖的上半部所示的,控制應(yīng)用1305將LCP數(shù)據(jù)映射到LFP數(shù)據(jù),然后,一些實施例的虛擬化應(yīng)用1310將LFP數(shù)據(jù)映射到UPCP數(shù)據(jù)或CPCP數(shù)據(jù)。
[0188]此圖的下半部分示出了控制應(yīng)用和虛擬化應(yīng)用的表映射操作。如此半部所示,控制應(yīng)用的輸入表1315存儲LCP數(shù)據(jù)、LFP(LFP)數(shù)據(jù)和UPCP數(shù)據(jù),因為在一些實施例中,所有這些數(shù)據(jù)與常量和函數(shù)表(未示出)中的數(shù)據(jù)的集合被控制應(yīng)用的nLog引擎1320使用,以從輸入LCP數(shù)據(jù)生成LFP數(shù)據(jù)。[0189]此圖示出了,導(dǎo)入器1350從用戶接收LCP數(shù)據(jù)(例如,通過輸入轉(zhuǎn)換應(yīng)用),并利用LCP數(shù)據(jù)更新控制應(yīng)用的輸入表1315。此圖進一步示出了,在一些實施例中,導(dǎo)入器1350檢測或接收PTD1340中的變化(例如,源自其他控制器實例的LCP數(shù)據(jù)更改),并響應(yīng)于這樣的變化,導(dǎo)入器1350可以更新輸入表1315。
[0190]此圖的下半部分還示出了虛擬化應(yīng)用1310的表映射操作。如圖所示,虛擬化應(yīng)用的輸入表1355存儲LFP數(shù)據(jù),因為在一些實施例中,LFP數(shù)據(jù)與常量和函數(shù)表(未示出)中的數(shù)據(jù)一起被虛擬化應(yīng)用的nLog引擎1320使用,以生成UPCP數(shù)據(jù)和/或CPCP數(shù)據(jù)。在一些實施例中,在將所生成的UPCP數(shù)據(jù)推送到將UPCP數(shù)據(jù)轉(zhuǎn)換為特定于管理交換元件的CPCP數(shù)據(jù)的管理交換元件或一個或多個管理交換元件之前,導(dǎo)出器1370將所生成的UPCP數(shù)據(jù)發(fā)送到一個或多個其他控制器實例(例如,機箱控制器),以生成CPCP數(shù)據(jù)。在其他實施例中,導(dǎo)出器1370將所生成的CPCP數(shù)據(jù)發(fā)送到一個或多個管理交換元件,以定義這些管理交換元件的轉(zhuǎn)發(fā)行為。
[0191]在一些實施例中,當存在將UPCP數(shù)據(jù)轉(zhuǎn)換為特定于管理交換元件的CPCP數(shù)據(jù)的機箱控制器時,虛擬化應(yīng)用1310對于特定管理交換元件,不將輸入UPCP數(shù)據(jù)轉(zhuǎn)換為CPCP數(shù)據(jù)。在這些實施例中,具有虛擬化應(yīng)用1310的控制器實例標識其控制器實例是主控的一組管理交換元件,并將UPCP數(shù)據(jù)分發(fā)到管理交換元件組。
[0192]此圖示出了,導(dǎo)入器1375從控制應(yīng)用1305接收LFP數(shù)據(jù),并利用LFP數(shù)據(jù)更新虛擬化應(yīng)用的輸入表1355。此圖進一步示出了,在一些實施例中,導(dǎo)入器1375檢測或接收PTD1340中的變化(例如,源自其他控制器實例的LCP數(shù)據(jù)更改),并響應(yīng)于這樣的變化,導(dǎo)入器1375可以更新輸入表1355。此圖還示出了,導(dǎo)入器1375可以從另一控制器實例接收UPCP數(shù)據(jù)。
[0193]如上文所提及的,導(dǎo)入器推送到控制應(yīng)用或虛擬化應(yīng)用的輸入表的一些邏輯或物理數(shù)據(jù)涉及由其他控制器實例所生成的并傳遞到PTD的數(shù)據(jù)。例如,在一些實施例中,涉及多個LDP集合的關(guān)于邏輯構(gòu)造(例如,邏輯端口、邏輯隊列等等)的邏輯數(shù)據(jù)可能會變化,并且轉(zhuǎn)換器(例如,控制器實例的轉(zhuǎn)換器1380)可以將此變化寫入到輸入表中。當用戶為不負責(zé)LDPS的第一控制器實例上的LDPS提供LCP數(shù)據(jù)時,發(fā)生由多控制器實例環(huán)境中的另一控制器實例產(chǎn)生的這樣的邏輯數(shù)據(jù)的另一示例。此變化被第一控制器實例的轉(zhuǎn)換器添加到第一控制器實例的PTD。然后,通過由PTD執(zhí)行的復(fù)制過程,將此變化跨其他控制器實例的PTD進行傳播。作為LDPS的主控或負責(zé)LDPS的邏輯控制器的第二控制器實例的導(dǎo)入器最終獲取此變化,然后,將變化寫入到應(yīng)用的輸入表中的一個(例如,控制應(yīng)用的輸入表)。相應(yīng)地,在一些情況下導(dǎo)入器將其寫入到輸入表的邏輯數(shù)據(jù)可以源自另一控制器實例的 PTD。
[0194]如上文所提及的,在一些實施例中,控制應(yīng)用1305和虛擬化應(yīng)用1310是在同一個機器或不同的機器上操作的兩個單獨的應(yīng)用。然而,其他實施例將這兩個應(yīng)用實現(xiàn)為一個集成的應(yīng)用的兩個模塊,其中,控制應(yīng)用模塊1305生成LFP中的邏輯數(shù)據(jù),而虛擬化應(yīng)用生成UPCP或CPCP中的物理數(shù)據(jù)。
[0195]還有其他實施例將這兩個應(yīng)用的控制和虛擬化操作集成在一個集成的應(yīng)用內(nèi),而不會將這些操作分離為兩個分離的模塊。圖14示出了這樣的集成的應(yīng)用1400的示例。此應(yīng)用1400使用nLog表映射引擎1410將來自表1415的輸入集的數(shù)據(jù)映射到表1420的輸出集,該表1420的輸出集類似于上文所描述的實施例圖10、11、以及13,可以包括表的輸入集中的一個或多個表。此集成的應(yīng)用中的表的輸入集可以包括需要被映射到LFP數(shù)據(jù)的LCP數(shù)據(jù),或者它可以包括需要被映射到CPCP或UPCP數(shù)據(jù)的LFP數(shù)據(jù)。表的輸入集還可以包括需要被映射到CPCP數(shù)據(jù)的UPCP數(shù)據(jù)。UPCP數(shù)據(jù)被分發(fā)到一組管理交換元件的一組機箱控制器,而不會被映射到CPCP數(shù)據(jù)。映射取決于運行集成的應(yīng)用1400的控制器實例是邏輯控制器還是物理控制器,以及物理控制器的管理交換元件是否是具有用于針對管理交換元件將UPCP數(shù)據(jù)映射到CPCP數(shù)據(jù)的機箱控制器的主控。
[0196]在此集成的控制和虛擬化應(yīng)用1400中,導(dǎo)入器1430從用戶或其他控制器實例獲得輸入數(shù)據(jù)。導(dǎo)入器1430還檢測或接收被復(fù)制到PTD的PTD1440的變化。導(dǎo)出器1425將輸出表記錄導(dǎo)出到其他控制器實例(例如,機箱控制器)。
[0197]當將輸出表記錄發(fā)送到另一控制器實例時,導(dǎo)出器使用控制器間的通信接口(未示出),以便包含在記錄中的數(shù)據(jù)通過通信信道(例如,RPC信道)被發(fā)送到其他控制器實例。當將輸出表記錄發(fā)送到管理交換元件時,導(dǎo)出器使用管理交換元件通信接口(未示出),以便包含在記錄中的數(shù)據(jù)通過兩個信道被發(fā)送到管理交換元件。一個信道是使用用于控制管理交換元件的轉(zhuǎn)發(fā)平面的交換控制協(xié)議(例如,OpenFlow(開放流))建立的,而另一個信道是使用發(fā)送配置數(shù)據(jù)的配置協(xié)議建立的。
[0198]當將輸出表記錄發(fā)送到機箱控制器時,在一些實施例中,導(dǎo)出器1425使用單一通信信道發(fā)送包含在記錄中的數(shù)據(jù)。在這些實施例中,機箱控制器通過此單信道來接受數(shù)據(jù),但是通過兩個信道來與管理交換元件進行通信。下面參考圖18來進一步更詳細地描述機箱控制器。
[0199]圖15示出了這樣的集成的應(yīng)用1500的另一示例。集成的應(yīng)用1500使用網(wǎng)絡(luò)信息庫(NIB)數(shù)據(jù)結(jié)構(gòu)1510來存儲nLog表映射引擎1410的一些輸入和輸出數(shù)據(jù)。如上文所提及的,NIB數(shù)據(jù)結(jié)構(gòu)以面向?qū)ο蟮臄?shù)據(jù)對象的形式來存儲數(shù)據(jù)。在集成的應(yīng)用1500中,輸出表1420是主存儲器結(jié)構(gòu)。PTD1440和NIB1510是輔助存儲器結(jié)構(gòu)。
[0200]集成的應(yīng)用1500使用nLog表映射引擎1410將來自表1415的輸入集的數(shù)據(jù)映射到表1420的輸出集。在一些實施例中,表1420的輸出集中的一些數(shù)據(jù)被導(dǎo)出器1425導(dǎo)出到一個或多個其他控制器實例或一個或多個管理交換元件。這樣的導(dǎo)出的數(shù)據(jù)包括可定義管理交換元件的流行為的UPCP或CPCP數(shù)據(jù)。這些數(shù)據(jù)可以由PTD1440中的轉(zhuǎn)換器1435備份在PTD中,以便確保數(shù)據(jù)靈活性。
[0201]表1420的輸出集中的一些數(shù)據(jù)被NIB發(fā)布器1505發(fā)布到NIB1510。這些數(shù)據(jù)包括用戶使用集成的應(yīng)用1500來管理的邏輯交換元件的配置信息。存儲在NIB1510中的數(shù)據(jù)被協(xié)調(diào)管理器1520復(fù)制到其他控制器實例的其他NIB。
[0202]NIB監(jiān)視器1515從NIB1510接收變化的通知,并針對一些通知(例如,與集成的應(yīng)用是其主控的LDP集合有關(guān)的那些通知),經(jīng)由導(dǎo)入器1430將變化推送到輸入表1415。
[0203]查詢管理器1525使用控制器間的通信接口(未示出)與輸入轉(zhuǎn)換應(yīng)用(未示出)連接,以接收關(guān)于配置數(shù)據(jù)的查詢(例如,信息查詢)。如此圖所示,一些實施例的管理器1525還與NIB1510連接,以便查詢NIB以提供關(guān)于用戶正在管理的邏輯網(wǎng)絡(luò)元件的狀態(tài)信息(例如,邏輯端口統(tǒng)計信息)。然而,在其他實施例中,查詢管理器1525查詢輸出表1420以獲得狀態(tài)息。[0204]在一些實施例中,應(yīng)用1500使用除PTD和NIB以外的輔助存儲器結(jié)構(gòu)(未示出)。這些結(jié)構(gòu)包括持久性非事務(wù)數(shù)據(jù)庫(PNTD)和哈希表。在一些實施例中,這兩種類型的輔助存儲器結(jié)構(gòu)存儲不同類型的數(shù)據(jù),以不同的方式來存儲數(shù)據(jù),和/或提供處理不同類型的查詢的不同的查詢界面。
[0205]PNTD是存儲在磁盤上或其他非易失性存儲器上的持久性數(shù)據(jù)庫。一些實施例使用此數(shù)據(jù)庫來存儲關(guān)于一個或多個交換元件屬性或操作的數(shù)據(jù)(例如,統(tǒng)計信息、計算等等)。例如,在一些實施例中,此數(shù)據(jù)庫用于存儲通過特定交換元件的特定端口路由的數(shù)據(jù)包的數(shù)量。存儲在PNTD中的數(shù)據(jù)的類型的其他示例包括錯誤消息、日志文件、警告消息,以及帳單數(shù)據(jù)。
[0206]在一些實施例中,PNTD具有可以處理數(shù)據(jù)庫查詢的數(shù)據(jù)庫查詢管理器(未示出),但是,由于它不是事務(wù)數(shù)據(jù)庫,因此,此查詢管理器不能處理復(fù)雜的條件事務(wù)性查詢。在一些實施例中,對PNTD的訪問比對PTD的訪問更快,但是比對哈希表的訪問慢。
[0207]與PNTD不同,哈希表不是存儲在磁盤上或其他非易失性存儲器上的數(shù)據(jù)庫。相反,它是存儲在易失性系統(tǒng)存儲器(例如,RAM)中的存儲結(jié)構(gòu)。它使用那些使用哈希索引來快速地標識存儲在表中的記錄的哈希技術(shù)。與哈希表在系統(tǒng)存儲器中的布局相結(jié)合的此結(jié)構(gòu)可使此表被非??斓卦L問。為促進此快速訪問,在一些實施例中使用簡化的查詢界面。例如,在一些實施例中,哈希表只有兩個查詢:為將值寫入到表中的Put (放入)查詢和用于從表中檢索值的Get (獲取)查詢。一些實施例使用哈希表來存儲快速變化的數(shù)據(jù)。這樣的快速變化的數(shù)據(jù)的示例包括網(wǎng)絡(luò)實體狀態(tài)、統(tǒng)計信息、狀態(tài)、正常運行時間、鏈接布局、以及數(shù)據(jù)包處理信息。此外,在一些實施例中,集成的應(yīng)用還使用哈希表來作為被重復(fù)地查詢的信息的緩存,例如將被寫入到多個節(jié)點的流條目。一些實施例在NIB中使用哈希結(jié)構(gòu),以便快速地訪問NIB中的記錄。相應(yīng)地,在這些實施例中的一些中,哈希表是NIB數(shù)據(jù)結(jié)構(gòu)的一部分。
[0208]PTD和PNTD通過在硬盤上保留網(wǎng)絡(luò)數(shù)據(jù)來改善控制器的靈活性。如果控制器系統(tǒng)發(fā)生故障,則網(wǎng)絡(luò)配置數(shù)據(jù)將被保留在PTD中的磁盤上,并且日志文件信息將被保留在PNTD中的磁盤上。
[0209]1.網(wǎng)絡(luò)控制系統(tǒng)層次結(jié)構(gòu)
[0210]圖16在概念上示出了網(wǎng)絡(luò)控制系統(tǒng)1600的示例體系結(jié)構(gòu)。具體而言,此圖示出了由網(wǎng)絡(luò)控制系統(tǒng)的不同元件根據(jù)輸入生成CPCP數(shù)據(jù)。如圖所示,一些實施例的網(wǎng)絡(luò)控制系統(tǒng)1600包括輸入轉(zhuǎn)換控制器1605、邏輯控制器1610、物理控制器1615和1620、以及三個管理交換元件1625-1635。此圖還示出了連接到管理交換元件(在圖中被寫為“M.S.E.”)1625-1635的五個機器1640-1660以在它們之間交換數(shù)據(jù)。此圖所示出的體系結(jié)構(gòu)的細節(jié),諸如層次結(jié)構(gòu)中的每一層中的控制器的數(shù)量、管理交換元件以及機器的數(shù)量,以及控制器、管理交換元件、機器之間的關(guān)系,只是為了說明。那些精通本技術(shù)的普通人員將認識到,對于網(wǎng)絡(luò)控制系統(tǒng)1600,控制器、交換元件、以及機器的許多其他不同的組合也是可以的。
[0211]在一些實施例中,網(wǎng)絡(luò)控制系統(tǒng)中的每一個控制器都具有上文參考圖6所描述的不同的模塊和接口的完全的堆棧。然而,每一控制器不必使用所有的模塊和接口以便執(zhí)行針對控制器給定的功能??商孢x地,在一些實施例中,系統(tǒng)中的控制器只有那些執(zhí)行針對控制器給定的功能所需的模塊和接口。例如,作為LDPS的主控的邏輯控制器1610不包括輸入模塊(例如,輸入轉(zhuǎn)換應(yīng)用),但是包括控制模塊和虛擬化模塊(例如,控制應(yīng)用或虛擬化應(yīng)用,或集成的應(yīng)用)以根據(jù)輸入LCP數(shù)據(jù)生成UPCP數(shù)據(jù)。
[0212]此外,不同的控制器的不同的組合可以在同一機器上運行。例如,輸入轉(zhuǎn)換控制器1605和邏輯控制器1610可以在同一個計算設(shè)備中運行。此外,一個控制器還可以針對不同的LDP集合以不同的方式起作用。例如,單一控制器可以是第一 LDPS的主控并且是實現(xiàn)第
二LDPS的管理交換元件的主控。
[0213]輸入轉(zhuǎn)換控制器1605包括輸入轉(zhuǎn)換應(yīng)用(未示出),該輸入轉(zhuǎn)換應(yīng)用利用從指定特定LDPS的用戶接收到的輸入生成LCP數(shù)據(jù)。輸入轉(zhuǎn)換控制器1605根據(jù)系統(tǒng)1605的配置數(shù)據(jù)標識LDPS的主控。在此示例中,LDPS的主控是邏輯控制器1610。在一些實施例中,一個以上的控制器可以是同一個LDPS的主控。此外,一個邏輯控制器還可以是一個以上的LDP集合的主控。
[0214]邏輯控制器1610負責(zé)特定LDPS。如此,邏輯控制器1610根據(jù)從輸入轉(zhuǎn)換控制器接收到的LCP數(shù)據(jù)來生成UPCP數(shù)據(jù)。具體而言,邏輯控制器1610的控制模塊(未示出)根據(jù)接收到的LCP數(shù)據(jù)來生成LFP數(shù)據(jù),而邏輯控制器1610的虛擬化模塊(未示出)根據(jù)LFP數(shù)據(jù)來生成UPCP數(shù)據(jù)。
[0215]邏輯控制器1610標識作為實現(xiàn)LDPS的管理交換元件的主控的物理控制器。在此示例中,邏輯控制器1610標識物理控制器1615和1620,因為管理交換元件1625-1635在此示例中被配置成實現(xiàn)LDPS。邏輯控制器1610將所生成的UPCP數(shù)據(jù)發(fā)送到物理控制器1615 和 1620。
[0216]物理控制器1615和1620中的每一個可以是一個或多個管理交換元件的主控。在此示例中,物理控制器1615是兩個管理交換元件1625和1630的主控,而物理控制器1620是管理交換元件1635的主控。作為一組管理交換元件的主控,一些實施例的物理控制器從接收到的UPCP數(shù)據(jù)生成特定于每一個管理交換元件的CPCP數(shù)據(jù)。因此,在此示例中,物理控制器1615生成針對管理交換元件1625和1630中的每一個而自定義的PCP數(shù)據(jù)。物理控制器1320生成針對管理交換元件1635而自定義的PCP數(shù)據(jù)。物理控制器將CPCP數(shù)據(jù)發(fā)送到其控制器是主控的管理交換元件。在一些實施例中,多個物理控制器可以是同一個管理交換元件的主控。
[0217]除發(fā)送CPCP數(shù)據(jù)之外,一些實施例的物理控制器還從管理交換元件接收數(shù)據(jù)。例如,物理控制器接收管理交換元件的配置信息(例如,管理交換元件的VIF的標識符)。物理控制器維護配置信息,并且還將信息向上發(fā)送到邏輯控制器,以便邏輯控制器具有用于實現(xiàn)LDP集合(其邏輯控制器是主控)的管理交換元件的配置信息。
[0218]管理交換元件1625-1635中的每一個根據(jù)由管理交換元件接收到的CPCP數(shù)據(jù)生成物理轉(zhuǎn)發(fā)平面數(shù)據(jù)。如上文所提及的,物理轉(zhuǎn)發(fā)平面數(shù)據(jù)定義管理交換元件的轉(zhuǎn)發(fā)行為。換言之,管理交換元件使用CPCP數(shù)據(jù)來填充其轉(zhuǎn)發(fā)表。管理交換元件1625-1635根據(jù)轉(zhuǎn)發(fā)表在機器1640-1660之間轉(zhuǎn)發(fā)數(shù)據(jù)。
[0219]圖17在概念上示出了網(wǎng)絡(luò)控制系統(tǒng)1700的示例體系結(jié)構(gòu)。類似于圖16,此圖示出了由網(wǎng)絡(luò)控制系統(tǒng)的不同元件根據(jù)輸入生成CPCP數(shù)據(jù)。與圖16中的網(wǎng)絡(luò)控制系統(tǒng)1600相比,網(wǎng)絡(luò)控制系統(tǒng)1700包括機箱控制器1725-1735。如圖所示,一些實施例的網(wǎng)絡(luò)控制系統(tǒng)1700包括輸入轉(zhuǎn)換控制器1705、邏輯控制器1610、物理控制器1715和1720、機箱控制器1725-1735、以及三個管理交換元件1740-1750。此圖還示出了連接到管理交換元件1740-1750的五個機器1755-1775以在它們之間交換數(shù)據(jù)。此圖所示出的體系結(jié)構(gòu)的細節(jié),諸如層次結(jié)構(gòu)中的每一層中的控制器的數(shù)量、管理交換元件以及機器的數(shù)量,以及控制器、管理交換元件、機器之間的關(guān)系,只是為了說明。那些精通本技術(shù)的普通人員將認識到,對于網(wǎng)絡(luò)控制系統(tǒng)1700,控制器、交換元件、以及機器的許多其他不同的組合也是可以的。
[0220]輸入轉(zhuǎn)換控制器1705與輸入轉(zhuǎn)換控制器1605的類似之處在于,輸入轉(zhuǎn)換控制器1705包括根據(jù)從指定特定LDPS的用戶接收到的輸入來生成LCP數(shù)據(jù)的輸入轉(zhuǎn)換應(yīng)用。輸入轉(zhuǎn)換控制器1705根據(jù)系統(tǒng)1705的配置數(shù)據(jù)1705標識LDPS的主控。在此示例中,LDPS的主控是邏輯控制器1710。
[0221]邏輯控制器1710與邏輯控制器1610的類似之處在于,邏輯控制器1710根據(jù)從輸入轉(zhuǎn)換控制器1705接收到的LCP數(shù)據(jù)來生成UPCP數(shù)據(jù)。邏輯控制器1710標識作為實現(xiàn)LDPS的管理交換元件的主控的物理控制器。在此示例中,邏輯控制器1710標識物理控制器1715和1720,因為管理交換元件1740-1750在此示例中被配置成實現(xiàn)LDPS。邏輯控制器1710將所生成的UPCP數(shù)據(jù)發(fā)送到物理控制器1715和1720。
[0222]類似于物理控制器1615和1620,物理控制器1715和1720中的每一個可以是一個或多個管理交換元件的主控。在此示例中,物理控制器1715是兩個管理交換元件1740和1745的主控,而物理控制器1730是管理交換元件1750的主控。然而,物理控制器1715和1720針對管理交換元件1740-1750不生成CPCP數(shù)據(jù)。作為管理交換元件的主控,物理控制器將UPCP數(shù)據(jù)發(fā)送到負責(zé)每一個管理交換元件(其物理控制器是主控)的機箱控制器。即,一些實施例的物理控制器標識機箱控制器,該機箱控制器連接其物理控制器是主控的管理交換元件。在一些實施例中,物理控制器通過判斷機箱控制器是否預(yù)訂物理控制器的信道來標識這些機箱控制器。
[0223]一些實施例的機箱控制器與管理交換元件具有一對一關(guān)系。機箱控制器從作為管理交換元件的主控的物理控制器接收UPCP數(shù)據(jù),并生成特定于管理交換元件的CPCP數(shù)據(jù)。下面將參考圖18來進一步描述機箱控制器的示例體系結(jié)構(gòu)。在一些實施例中,機箱控制器與機箱控制器管理的管理交換元件在同一個機器中運行,而在其他實施例中,機箱控制器和管理交換元件在不同的機器中運行。在此示例中,機箱控制器1725和管理交換元件1740在同一個計算設(shè)備中運行。
[0224]類似于管理交換元件1625-1635,管理交換元件1740-1750中的每一個根據(jù)由管理交換元件接收到的CPCP數(shù)據(jù)來生成物理轉(zhuǎn)發(fā)平面數(shù)據(jù)。管理交換元件1740-1750使用CPCP數(shù)據(jù)來填充它們的相應(yīng)的轉(zhuǎn)發(fā)表。管理交換元件1740-1750根據(jù)流表在機器1755-1775之間轉(zhuǎn)發(fā)數(shù)據(jù)。
[0225]如上文所提及的,在某些情況下,管理交換元件可以實現(xiàn)一個以上的LDPS。在這樣的情況下,作為這樣的管理交換元件的主控的物理控制器接收每一個LDP集合的UPCP數(shù)據(jù)。如此,網(wǎng)絡(luò)控制系統(tǒng)1700中的物理控制器可以充當用于針對實現(xiàn)LDP集合的特定管理交換元件將不同的LDP集合的UPCP數(shù)據(jù)中繼到機箱控制器的聚合點。
[0226]盡管圖17中所示出的機箱控制器是管理交換元件之上的層次,但是,機箱控制器通常與管理交換元件在同一層次上操作,因為一些實施例的機箱控制器在管理交換元件內(nèi)或與管理交換元件相鄰。
[0227]在一些實施例中,網(wǎng)絡(luò)控制系統(tǒng)可以具有網(wǎng)絡(luò)控制系統(tǒng)1600和1700的混合。即,在此混合網(wǎng)絡(luò)控制系統(tǒng)中,一些物理控制器針對一些管理交換元件生成CPCP數(shù)據(jù),而一些物理控制器針對一些管理交換元件不生成CPCP數(shù)據(jù)。對于后者的管理交換元件,混合型系統(tǒng)具有生成CPCP數(shù)據(jù)的機箱控制器。
[0228]如上文所提及的,一些實施例的機箱控制器是用于管理單一管理交換元件的控制器。一些實施例的機箱控制器沒有上文參考圖6所描述的不同的模塊和接口的完全的堆棧。機箱控制器具有的模塊之一是根據(jù)它從一個或多個物理控制器接收到的UPCP數(shù)據(jù)來生成CPCP數(shù)據(jù)的機箱控制應(yīng)用。圖18示出了機箱控制應(yīng)用1800的示例體系結(jié)構(gòu)。此應(yīng)用1800使用nLog表映射引擎將包含代表UPCP數(shù)據(jù)的輸入數(shù)據(jù)元組的輸入表映射到代表LFP數(shù)據(jù)的數(shù)據(jù)元組。此應(yīng)用1800在此示例中通過與管理交換元件1885交換數(shù)據(jù)來管理“管理交換元件1885”。在一些實施例中,應(yīng)用1800( S卩,機箱控制器)與管理交換元件1885在同一個機器中運行。
[0229]如圖18所示,機箱控制應(yīng)用1800包括一組規(guī)則引擎輸入表1810、一組函數(shù)和常數(shù)表1815、導(dǎo)入器1820、規(guī)則引擎1825、一組規(guī)則引擎輸出表1845、導(dǎo)出器1855、管理交換兀件通信接口 1865、以及編譯器1835。此圖還示出了物理控制器1805和管理交換元件1885。
[0230]編譯器1835類似于圖10中的編譯器1035。在一些實施例中,規(guī)則引擎(RE)輸入表1810包括具有UPCP數(shù)據(jù)和/或作為管理交換元件1885的主控的物理控制器1805發(fā)送到機箱控制應(yīng)用1800的交換配置(例如,訪問控制列表配置、專用虛擬網(wǎng)絡(luò)配置、端口安全配置等等)的表。輸入表1810還包括包含來自管理交換元件1885的物理數(shù)據(jù)的表。在一些實施例中,這樣的物理數(shù)據(jù)包括關(guān)于管理交換元件1885的數(shù)據(jù)(例如,CPCP數(shù)據(jù)、物理轉(zhuǎn)發(fā)數(shù)據(jù))及關(guān)于管理交換元件1885的配置的其他數(shù)據(jù)。
[0231]RE輸入表1810類似于RE輸入表1010。輸入表1810部分地利用由物理控制器1805所提供的UPCP數(shù)據(jù)來填充。一些實施例的物理控制器1805從一個或多個邏輯控制器(未示出)接收UPCP數(shù)據(jù)。
[0232]除輸入表1810之外,機箱控制應(yīng)用1800包括其他雜項表1815,其中,規(guī)則引擎1825使用其他雜項表1815來收集用于其表映射操作的輸入。這些表1815類似于表1015。如圖18所示,規(guī)則引擎1825包括事件處理器1822、多個查詢計劃1827、以及表處理器1830,它們與事件處理器1022、查詢計劃1027,以及表處理器1030功能類似。
[0233]在一些實施例中,RE輸出表1845存儲邏輯和物理網(wǎng)絡(luò)元件數(shù)據(jù)屬性兩者。表1845被稱為RE輸出表,因為它們存儲規(guī)則引擎1825的表映射操作的輸出。在一些實施例中,RE輸出表可被分組為若干不同的類別。例如,在一些實施例中,這些表可以是RE輸入表和/或機箱控制器應(yīng)用(CCA)輸出表。當表中的變化導(dǎo)致規(guī)則引擎檢測到要求執(zhí)行查詢計劃的輸入事件時,表是RE輸入表。RE輸出表1845也可以是在它被規(guī)則引擎修改之后生成導(dǎo)致規(guī)則引擎執(zhí)行另一查詢計劃的事件的RE輸入表1810。這樣的事件被稱為內(nèi)部輸入事件,它與外部輸入事件完全不同,外部輸入事件是由控制應(yīng)用1805通過導(dǎo)入器1820做出的RE輸入表修改所引起的事件。當表中的變化導(dǎo)致導(dǎo)出器1855將更改導(dǎo)出到管理交換元件或其他控制器實例時,表是CCA輸出表。
[0234]導(dǎo)出器1855檢測對RE輸出表1845的CCA輸出表的更改。不同的實施例的導(dǎo)出器以不同的方式檢測CCA輸出表事件的發(fā)生。在一些實施例中,導(dǎo)出器向CCA輸出表注冊回調(diào),用于通知對CCA輸出表的記錄的更改。在這樣的實施例中,當導(dǎo)出器1855從CCA輸出表接收到其記錄中的一個記錄改變的通知時,它就檢測到輸出表事件。
[0235]響應(yīng)于檢測到的輸出表事件,導(dǎo)出器1855獲取修改過的VA輸出表中的每一個修改過的數(shù)據(jù)元組,并將此修改過的數(shù)據(jù)元組傳播到其他控制器實例中的一個或多個(例如,物理控制器)或管理交換元件1885。導(dǎo)出器1855使用控制器間的通信接口(未示出)將修改過的數(shù)據(jù)元組發(fā)送到其他控制器實例。控制器間的通信接口與其他控制器實例建立通信信道(例如,RPC信道)。
[0236]一些實施例的導(dǎo)出器1855使用管理交換元件通信接口 1865將修改過的數(shù)據(jù)元組發(fā)送到管理交換元件1885。一些實施例的管理交換元件通信接口建立兩個通信信道。管理交換元件通信接口使用交換控制協(xié)議來建立兩個信道中的第一信道。交換控制協(xié)議的一個示例是開放流協(xié)議。在一些實施例中,開放流協(xié)議是用于控制交換元件的轉(zhuǎn)發(fā)平面(例如,轉(zhuǎn)發(fā)表)的通信協(xié)議。例如,開放流協(xié)議提供用于向管理交換元件1885中添加流條目、從其中刪除流條目、以及修改其中的流條目的命令。
[0237]管理交換元件通信接口使用配置協(xié)議來建立兩個信道中的第二信道以發(fā)送配置信息。在一些實施例中,配置信息包括用于配置管理交換元件1885的信息,例如用于配置進入端口、夕卜出端口的信息、端口的QoS配置,等等。
[0238]管理交換元件通信接口 1865通過兩個信道從管理交換元件接收管理交換元件1885中的更新。當存在不是由機箱控制應(yīng)用1800啟動的管理交換元件1885的流條目或配置的變化時,一些實施例的管理交換元件1885向機箱控制應(yīng)用發(fā)送更新。這樣的變化的示例包括連接到管理交換元件1885的端口的機器的故障,向管理交換元件1885的VM遷移等等。管理交換元件通信接口 1865向?qū)肫?820發(fā)送將修改一個或多個輸入表1810的更新。當存在由規(guī)則引擎1825根據(jù)這些更新產(chǎn)生的輸出時,導(dǎo)出器1855將把此輸出發(fā)送到物理控制器1805。
[0239]J.生成流條目
[0240]圖19示出了基于UPCP數(shù)據(jù)在兩個管理交換元件之間的隧道的示例創(chuàng)建。具體而言,此圖以四個不同的階段1901-1904示出了由網(wǎng)絡(luò)管理系統(tǒng)1900的不同的組件執(zhí)行的一系列操作,以便在兩個管理交換元件1925和1930之間建立隧道。此圖還示出了邏輯交換元件1905和VMl和VM2。四個階段1901-1904中的每一個都在底部部分示出了網(wǎng)絡(luò)控制系統(tǒng)1900和管理交換元件1925和1930,并且在頂部部分示出了邏輯交換元件1905和連接到邏輯交換元件1905的VM。在每一階段的頂部和底部部分都示出了 VM。
[0241 ] 如第一階段1901所示,邏輯交換元件1905在VMl和VM2之間轉(zhuǎn)發(fā)數(shù)據(jù)。具體而言,數(shù)據(jù)通過邏輯交換元件1905的邏輯端口 I來往于VMl,并且數(shù)據(jù)通過邏輯交換元件1905的邏輯端口 2來往于VM2。在此示例中,邏輯交換元件1905是通過管理交換元件1925來實現(xiàn)的。即,邏輯端口 I被映射到管理交換元件1925的端口 3,并且邏輯端口 2被映射到管理交換元件1925的端口 4。
[0242]在此示例中,網(wǎng)絡(luò)控制系統(tǒng)1900包括控制器集群1910和兩個機箱控制器1915和1920。控制器集群1910包括輸入轉(zhuǎn)換控制器(未示出)、邏輯控制器(未示出)、以及物理控制器(未示出),它們基于由控制器集群1910接收到的輸入共同地生成UPCP數(shù)據(jù)。機箱控制器接收UPCP數(shù)據(jù),并將通用數(shù)據(jù)自定義為特定于每一機箱控制器正在管理的管理交換元件的PCP數(shù)據(jù)。機箱控制器1915和1920將CPCP數(shù)據(jù)分別傳遞到管理交換元件1925和1930,以便管理交換元件1925和1930可以生成轉(zhuǎn)發(fā)平面數(shù)據(jù),其中,物理管理交換元件使用轉(zhuǎn)發(fā)平面數(shù)據(jù)在管理交換元件1925和1930之間轉(zhuǎn)發(fā)數(shù)據(jù)。
[0243]在第二階段1902,包括管理交換元件1930的網(wǎng)絡(luò)的管理員在管理交換元件1930所運行的主機(未示出)中創(chuàng)建VM3。管理員創(chuàng)建管理交換元件1930的端口 5并將VM3附接到端口。在創(chuàng)建端口 3時,一些實施例的管理交換元件1930將有關(guān)新創(chuàng)建的端口的信息發(fā)送到控制器集群1910。在一些實施例中,信息可以包括端口號、網(wǎng)絡(luò)地址(例如,IP和MAC地址)、管理交換元件所屬的傳輸區(qū)域、附接到端口的機器等等。如上文所提及的,此配置信息穿過正在管理“管理交換元件”的機箱控制器,然后穿過物理控制器和邏輯控制器,一直到管理邏輯交換元件1905的用戶。對此用戶,新VM變得可用以被添加到用戶正在管理的邏輯交換元件1905。
[0244]在階段1903,在此示例中,用戶決定使用VM3,并將VM3附接到邏輯交換元件1905。結(jié)果,創(chuàng)建邏輯交換元件1905的邏輯端口 6。因此,來往于VM3的數(shù)據(jù)將穿過邏輯端口 6。在一些實施例中,控制器集群1910指示實現(xiàn)邏輯交換元件的所有管理交換元件,以在具有邏輯交換元件的一對邏輯端口被映射到的一對端口的每一對管理交換元件之間創(chuàng)建隧道。在此示例中,可以在管理交換元件1925和1930之間建立隧道,以促進邏輯端口 I和邏輯端口 6之間(S卩,VMl和VM3之間)以及在邏輯端口 2和邏輯端口 6之間(S卩,在VM2和VM3之間)的數(shù)據(jù)交換。即,在管理交換元件1925的端口 3和管理交換元件1930的端口 5之間交換的數(shù)據(jù)和在管理交換元件1925的端口 4和管理交換元件1930的端口 5之間交換的數(shù)據(jù)可以穿過在管理交換元件1925和1930之間建立的隧道。
[0245]不需要兩個管理交換元件之間的隧道來促進邏輯端口 I和邏輯端口 2之間(即,在VMl和VM2之間)的數(shù)據(jù)交換,因為邏輯端口 I和邏輯端口 2被映射到同一個管理交換元件1925上的兩個端口。
[0246]第三階段1903進一步示出了,控制器集群1910將指定從管理交換元件1925創(chuàng)建隧道的指令的UPCP數(shù)據(jù)發(fā)送到管理交換元件1930。在此示例中,UPCP數(shù)據(jù)被發(fā)送到機箱控制器1915,該機箱控制器1915將把UPCP數(shù)據(jù)自定義為特定于管理交換元件1925的PCP數(shù)據(jù)。
[0247]第四階段1904示出了,機箱控制器1915向隧道發(fā)送指定創(chuàng)建隧道并將數(shù)據(jù)包轉(zhuǎn)發(fā)到隧道的指令的PCP數(shù)據(jù)。管理交換元件1925基于CPCP數(shù)據(jù)來創(chuàng)建到管理交換元件1930的隧道。更具體而言,管理交換元件1925創(chuàng)建端口 7并建立到管理交換元件1930的端口 8的隧道(例如,GRE隧道)。下面將描述在兩個管理交換元件之間創(chuàng)建隧道的更詳細的操作。
[0248]圖20在概念上示出了一些實施例所執(zhí)行的從UPCP數(shù)據(jù)生成CPCP數(shù)據(jù)的處理2000,該CPCP數(shù)據(jù)指定在兩個管理交換元件之間創(chuàng)建并使用隧道。在一些實施例中,處理2000是由與管理交換元件連接的機箱控制器或直接與管理交換元件連接的物理控制器執(zhí)行的。
[0249]處理2000通過從邏輯控制器或物理控制器接收UPCP數(shù)據(jù)開始。在一些實施例中,UPCP數(shù)據(jù)具有不同類型。UPCP數(shù)據(jù)的類型之一是通用隧道流指令,這些指令指定在管理交換元件中創(chuàng)建隧道以及隧道的使用。在一些實施例中,通用隧道流指令包括有關(guān)在網(wǎng)絡(luò)中的管理交換元件創(chuàng)建的端口的信息。此端口是用戶將邏輯交換元件的邏輯端口映射到的管理交換元件的端口。此端口還是被隧道化的數(shù)據(jù)需要到達的目的地端口。有關(guān)端口的信息包括:(1)具有端口的管理交換元件所屬的傳輸區(qū)域,(2)在一些實施例中,基于用于構(gòu)建至IJ具有目的地端口的管理交換元件的隧道的隧道協(xié)議(例如,GRE、CAPWAP等等)的隧道類型,以及⑶具有目的地端口(例如,將充當要建立的隧道的一端的VIF的IP地址)的管理交換元件的網(wǎng)絡(luò)地址(例如,IP地址)。
[0250]接下來,處理2000確定(在2010)接收到的UPCP數(shù)據(jù)是否是通用隧道流指令。在一些實施例中,UPCP數(shù)據(jù)指定其類型,以便處理2000可以確定接收到的通用平面數(shù)據(jù)的類型。當處理2000確定(在2010處)接收到的通用數(shù)據(jù)不是通用隧道流指令時,處理前進到2015以處理UPCP數(shù)據(jù)以生成CPCP數(shù)據(jù),并將所生成的數(shù)據(jù)發(fā)送到處理2000正在管理的管理交換元件。然后,處理2000結(jié)束。
[0251]當處理2000確定(在2010處)接收到的UPCP數(shù)據(jù)是通用隧道流指令時,處理2000前進到2020以解析數(shù)據(jù),從而獲得有關(guān)目的地端口的信息。然后,處理2000確定(在2025處)具有目的地端口的管理交換元件是否與具有源端口的管理交換元件處于同一個傳輸區(qū)域中。具有源端口的管理交換元件是執(zhí)行處理2000的機箱控制器或物理控制器管理的管理交換元件。在一些實施例中,傳輸區(qū)域包括可以相互進行通信而不會使用諸如池節(jié)點之類的第二級別的管理交換元件的一組機器。
[0252]在一些實施例中,邏輯控制器判斷具有目的地端口的管理交換元件是否與具有源端口的管理交換元件處于同一個傳輸區(qū)域中。邏輯控制器在準備要發(fā)送到執(zhí)行處理2000的機箱控制器(通過物理控制器)的通用隧道流指令時考慮此判斷。具體而言,通用隧道流指令將包括用于創(chuàng)建不同的隧道的不同的信息。下面將在圖21的描述之后描述這些不同的隧道示例。在這些實施例中,處理2000跳過2025并前進到2015。
[0253]當處理2000確定(在2025處)具有源端口的管理交換元件和具有目的地端口的管理交換元件不在同一個傳輸區(qū)域中時,處理2000前進到上文所描述的2015。否則,處理前進到2030,以自定義通用隧道流指令,并將自定義的信息發(fā)送到具有源端口的管理交換元件。下面將詳細地描述自定義通用隧道流指令。然后,處理2000結(jié)束。
[0254]圖21在概念上示出了處理2100,一些實施例執(zhí)行該處理2100以生成自定義的隧道流指令,并將自定義指令發(fā)送到管理交換元件,以便管理交換元件可以創(chuàng)建隧道,并通過該隧道將數(shù)據(jù)發(fā)送到目的地。在一些實施例中,處理2100是由與管理交換元件連接的機箱控制器實例或直接與管理交換元件連接的物理控制器執(zhí)行的。在一些實施例中,當執(zhí)行處理2100的控制器接收到通用隧道流指令,解析有關(guān)目的地端口的端口信息,并判斷具有目的地端口的管理交換元件與控制器管理的管理交換元件處于同一個傳輸區(qū)域時,處理2100開始。
[0255]處理2100通過生成(在2105處)用于創(chuàng)建隧道端口的指令而開始。在一些實施例中,處理2100基于端口信息,生成用于在控制器管理的管理交換元件中創(chuàng)建隧道端口的指令。指令包括,例如,要建立的隧道的類型,以及將是隧道的目的地末端的NIC的IP地址。由控制器管理的管理交換元件的隧道端口將是隧道的另一端。
[0256]接下來,處理2100將所生成的用于創(chuàng)建隧道端口的指令發(fā)送(在2110處)到控制器管理的管理交換元件。如上文所提及的,一些實施例的機箱控制器或直接與管理交換元件連接的物理控制器使用兩個信道與管理交換元件進行通信。一個信道是與管理交換元件交換配置信息的配置信道,另一個信道是用于與管理交換元件交換流條目和事件數(shù)據(jù)的交換元件控制信道(例如,使用開放流協(xié)議建立的信道)。在一些實施例中,處理使用配置信道將用于創(chuàng)建隧道端口的所生成的指令發(fā)送到控制器管理的管理交換元件。在接收到所生成的指令時,一些實施例的管理交換元件在管理交換元件中創(chuàng)建隧道端口,并使用由隧道類型所指定的隧道協(xié)議,在隧道端口和具有目的地端口的管理交換元件的端口之間建立隧道。當創(chuàng)建并建立隧道端口和隧道時,一些實施例的管理交換元件將隧道的標識符的值(例如,四)發(fā)送回到控制器實例。
[0257]然后,一些實施例的處理2100通過配置信道,接收(在2115處)隧道端口的標識符的值(例如,“tunnel_port = 4”)。然后,處理2100使用此接收到的值來修改通用隧道流指令中所包括的流條目。當被發(fā)送到管理交換元件時,此流條目導(dǎo)致管理交換元件執(zhí)行動作。然而,作為通用數(shù)據(jù),此流條目通過通用標識符(例如,tunnel_p0rt)而不是通過實際端口號來標識隧道端口。例如,接收到的通用隧道流指令中的此流條目可以是“如果目的地=目的地機器的UUID,則發(fā)送到tunnel_p0rt”。處理2100利用隧道端口的標識符的值來創(chuàng)建(在2120處)流條目。具體而言,處理2100用標識創(chuàng)建的端口的標識符的實際值來替換隧道端口的標識符。例如,修改的流條目看起來像“如果目的地=目的地機器的UUID,則發(fā)送到4.”
[0258]然后,處理2100將此流條目發(fā)送(在2125處)到管理交換元件。在一些實施例中,處理通過交換元件控制信道(例如,開放流信道)將此流量條目發(fā)送到管理交換元件。管理交換元件將使用此流條目來更新其流條目表。管理交換元件從那以后通過隧道,通過將數(shù)據(jù)發(fā)送到隧道端口,轉(zhuǎn)發(fā)發(fā)往目的地機器的數(shù)據(jù)。然后,處理結(jié)束。
[0259]圖22以七個不同的階段2201-2207示出了將通用隧道流指令轉(zhuǎn)換為自定義指令供管理交換元件2215接收并使用的機箱控制器2210的示例操作。機箱控制器2210類似于上文參考圖18所描述的機箱控制器1800。然而,為討論簡明起見,圖22中并非示出了機箱控制器2210的所有組件。
[0260]如圖所示,機箱控制器2210包括輸入表2220、規(guī)則引擎2225、以及輸出表2230,它們類似于輸入表1820、規(guī)則引擎1825、以及輸出表1845。機箱控制器2210管理“管理交換元件2215”。在一些實施例中,在機箱控制器和管理交換元件2215之間建立兩個信道2235和2240。信道2235用于交換配置數(shù)據(jù)(例如,有關(guān)創(chuàng)建端口、端口的當前狀態(tài),與管理交換元件相關(guān)聯(lián)的隊列等等的數(shù)據(jù))。在一些實施例中,信道2240是用來交換流條目的開放流信道(開放流控制信道)。
[0261]第一階段2201示出了,機箱控制器2210使用從物理控制器(未示出)接收到的通用隧道流指令,更新輸入表2220。如圖所示,通用隧道流指令包括用于創(chuàng)建隧道和流條目2250的指令2245。如圖所示,指令2245包括要被創(chuàng)建的隧道的類型,以及具有目的地端口的管理交換元件的IP地址。流條目2250指定根據(jù)不是特定于管理交換元件2215的通用數(shù)據(jù)而采取的動作。規(guī)則引擎對指令2245和流條目2250執(zhí)行表映射操作。
[0262]第二階段2202示出了由規(guī)則引擎2225執(zhí)行的表映射操作的結(jié)果。指令2260源于指令2245。在一些實施例中,指令2245和2260可以是相同的,而在其他實施例中,它們可以不相同。例如,指令2245和2260中的代表隧道類型的值可以不同。指令2260包括要被創(chuàng)建的隧道的IP地址和類型,還有可以被包括在指令2260中的其他信息。流條目2250不會觸發(fā)任何表映射操作,如此,仍保留在輸入表2220中。
[0263]第三階段2203示出了指令2260通過配置信道2235被推送到管理交換元件2215。管理交換元件2215創(chuàng)建隧道端口并在管理交換元件2215和具有目的地端口的另一管理交換元件之間建立隧道。在一些實施例中,隧道的一端是創(chuàng)建的隧道端口,隧道的另一端是與目的地IP地址相關(guān)聯(lián)的端口。一些實施例的管理交換元件2215使用由隧道類型所指定的協(xié)議來建立隧道。
[0264]第四階段2204示出了管理交換元件2215創(chuàng)建了隧道端口(在此示例中,“端口I”)和隧道2270。此階段還示出了管理交換元件發(fā)送回的隧道端口標識符的實際值。在此示例中,管理交換元件2215通過開放流信道2240發(fā)送此信息。該信息進入輸入表2220中作為輸入事件數(shù)據(jù)。第五階段2205示出了利用來自管理交換元件2215的信息來更新輸入表2220。此更新觸發(fā)規(guī)則引擎2225執(zhí)行表映射操作。
[0265]第六階段2206示出了在前一階段2204執(zhí)行的表映射操作的結(jié)果。輸出表2230現(xiàn)在具有指定根據(jù)特定于管理交換元件2215的信息而采取的動作的流條目2275。具體而言,流條目2275指定,當數(shù)據(jù)包的目的地是目的地端口時,管理交換元件2215應(yīng)該通過端口 I發(fā)出數(shù)據(jù)包。第七階段2207示出了,流條目2275被推送到管理交換元件2215,該管理交換元件2215將使用流條目2275來轉(zhuǎn)發(fā)數(shù)據(jù)包。
[0266]應(yīng)當注意,如圖22所示的在機箱控制器2210和管理交換元件2215之間交換的指令2245和數(shù)據(jù)是通用隧道流指令和自定義指令的概念表示,并且可以不是實際表示和格式。
[0267]此外,圖22的示例是根據(jù)機箱控制器2210的操作描述的。此示例還適用于一些實施例的將UPCP數(shù)據(jù)轉(zhuǎn)換為管理交換元件(其物理控制器是主控)的CPCP數(shù)據(jù)的物理控制器。
[0268]圖19-22示出了在兩個管理的邊緣交換元件之間創(chuàng)建隧道,以促進在使用邏輯交換元件的兩個邏輯端口的一對機器(例如,VM)之間進行數(shù)據(jù)交換。此隧道涵蓋隧道的可能的用途中的一種。在本發(fā)明的一些實施例中,隧道的許多其他用途在網(wǎng)絡(luò)控制系統(tǒng)中是可能的。隧道的示例用途包括:(I)管理的邊緣交換元件和池節(jié)點之間的隧道,(2)兩個管理交換元件之間的隧道,一個管理交換元件是邊緣交換元件,另一個提供L3網(wǎng)關(guān)服務(wù)(即,連接到路由器以在網(wǎng)絡(luò)層(L3)獲取路由服務(wù)的管理交換元件),以及(3)兩個管理交換元件之間的隧道,其中,邏輯端口和附接到L2網(wǎng)關(guān)服務(wù)的另一邏輯端口。
[0269]現(xiàn)在將描述三個示例中的每一個中的用于創(chuàng)建隧道的事件序列。對于管理交換元件和池節(jié)點之間的隧道,首先提供池節(jié)點,然后提供管理交換元件。VM連接到管理交換元件的端口。此VM是連接到管理交換元件的第一 VM。然后,通過將邏輯端口映射到管理交換元件的端口,將此VM綁定到邏輯交換元件的邏輯端口。一旦執(zhí)行了邏輯端口到管理交換元件的端口的映射,邏輯控制器將通用隧道流指令(例如,通過物理控制器)發(fā)送到連接管理交換元件的機箱控制器(或物理控制器)。
[0270]然后,機箱控制器指示管理交換元件創(chuàng)建到池節(jié)點的隧道。一旦創(chuàng)建了隧道,隨后提供的并連接到管理交換元件的另一 VM將共享同一個隧道,以與池節(jié)點交換數(shù)據(jù),如果此新VM被綁定到同一個邏輯交換元件的邏輯端口。如果新節(jié)點被綁定到不同的邏輯交換機的邏輯端口,則邏輯控制器將發(fā)送當?shù)谝?VM連接到管理交換元件時向下傳遞的同一個通用隧道流指令。然而,通用隧道流指令將不會導(dǎo)致創(chuàng)建到池節(jié)點的新隧道,因為,例如,隧道已經(jīng)被創(chuàng)建并操作。
[0271]如果建立的隧道是單向隧道,則從池節(jié)點一側(cè)建立另一單向隧道。當?shù)谝?VM被綁定到的邏輯端口被映射到管理交換元件的端口時,邏輯控制器還向池節(jié)點發(fā)送通用隧道流指令。基于通用隧道流指令,連接池節(jié)點的機箱控制器將指示池節(jié)點創(chuàng)建到管理交換元件的隧道。
[0272]對于管理的邊緣交換元件和提供L3網(wǎng)關(guān)服務(wù)的管理交換元件之間的隧道,假設(shè)提供了具有用戶的多個VM的邏輯交換元件,在提供L3網(wǎng)關(guān)服務(wù)的傳輸節(jié)點中實現(xiàn)邏輯路由器。在邏輯交換元件中創(chuàng)建邏輯修補端口,以將邏輯路由器鏈接到邏輯交換元件。在一些實施例中,創(chuàng)建邏輯修補以及提供VM的順序?qū)λ淼绖?chuàng)建沒有關(guān)系。邏輯修補端口的創(chuàng)建導(dǎo)致邏輯控制器將通用隧道流指令發(fā)送到連接實現(xiàn)邏輯交換元件的所有管理交換元件(即,每一個都具有邏輯交換元件的邏輯端口被映射到的至少一個端口的所有管理交換元件)機箱控制器(或物理控制器)。這些管理交換元件中的每一個的每一機箱控制器都指示管理交換元件創(chuàng)建到傳輸節(jié)點的隧道。管理交換元件各自創(chuàng)建到傳輸節(jié)點的隧道,導(dǎo)致與實現(xiàn)邏輯交換元件的管理交換元件的數(shù)量相同的許多隧道。
[0273]如果這些隧道是單向的,則傳輸節(jié)點將創(chuàng)建到實現(xiàn)邏輯交換元件的管理交換元件中的每一個的隧道。當邏輯修補端口被創(chuàng)建并連接到邏輯路由器時,邏輯交換元件將通用隧道流指令推送到傳輸節(jié)點。連接傳輸節(jié)點的機箱控制器指示傳輸節(jié)點創(chuàng)建隧道,傳輸節(jié)點創(chuàng)建到管理交換元件的隧道。
[0274]在一些實施例中,在管理交換元件之間建立的隧道可以用于附接到管理交換元件中的一個的任何機器和附接到另一個管理交換元件的任何機器之間的數(shù)據(jù)交換,不管這兩個機器是否正在使用同一個邏輯交換元件或兩個不同的交換元件的邏輯端口。這是隧道使得正在管理不同LDP集合的不同用戶能夠共享管理交換元件同時被隔離的一種示例情況。
[0275]當邏輯端口附接到L2網(wǎng)關(guān)服務(wù)時,兩個管理交換元件之間的隧道的創(chuàng)建開始,其中,邏輯端口和附接到L2網(wǎng)關(guān)服務(wù)的另一邏輯端口。附接導(dǎo)致邏輯控制器向?qū)崿F(xiàn)邏輯交換元件的其他邏輯端口的所有管理交換元件發(fā)出通用隧道流指令。基于指令,建立從這些管理交換元件到實現(xiàn)附接到L2網(wǎng)關(guān)服務(wù)的邏輯端口的管理交換元件的隧道。
[0276]II1.電子系統(tǒng)
[0277]上文所描述的特點和應(yīng)用中的許多被實現(xiàn)為被指定為記錄在計算機可讀存儲介質(zhì)(也被稱為計算機可讀介質(zhì))上的指令集的軟件進程。當這些指令由一個或多個處理單元(例如,一個或多個處理器、處理器的核,或其他處理單元)執(zhí)行時,它們導(dǎo)致處理單元執(zhí)行在指令中所指出的動作。計算機可讀介質(zhì)的示例包括,但不僅限于,CD-ROM、閃存驅(qū)動器、RAM芯片、硬盤驅(qū)動器、EPROM等等。計算機可讀介質(zhì)不包括以無線方式或通過有線連接傳遞的載波和電子信號。
[0278]在此說明書中,術(shù)語“軟件”意味著包括駐留在只讀存儲器中的固件或存儲在磁存儲器中的可以被讀取到存儲器中供處理器進行處理的應(yīng)用。此外,在一些實施例中,多個軟件發(fā)明可被實現(xiàn)為較大的程序的子部分,同時保持不同的軟件發(fā)明。在一些實施例中,多個軟件發(fā)明也可以被實現(xiàn)為單獨的程序。最后,一起實現(xiàn)這里所描述的軟件發(fā)明的單獨的程序的任何組合都在本發(fā)明的范圍內(nèi)。在一些實施例中,軟件程序,當被安裝以在一個或多個電子系統(tǒng)上操作時,定義執(zhí)行軟件程序的操作的一個或多個特定機器實現(xiàn)。
[0279]圖23在概念上示出了用來實現(xiàn)本發(fā)明的一些實施例的電子系統(tǒng)2300。電子系統(tǒng)2300可以用來執(zhí)行上文所描述的控制、虛擬化、或操作系統(tǒng)應(yīng)用中的任何一種。電子系統(tǒng)2300可以是計算機(例如,臺式計算機、個人計算機、平板電腦、服務(wù)器計算機、大型機、刀片式計算機等等)、電話、PDA,或任何其他種類的電子設(shè)備。這樣的電子系統(tǒng)包括各種類型的計算機可讀介質(zhì)和用于各種其他類型的計算機可讀介質(zhì)的接口。電子系統(tǒng)2300包括總線2305、處理單元2310、系統(tǒng)存儲器2325、只讀存儲器2330、永久存儲器設(shè)備2335、輸入設(shè)備2340,以及輸出設(shè)備2345。
[0280]總線2305共同地代表可通信地連接電子系統(tǒng)2300的很多內(nèi)部設(shè)備的所有系統(tǒng)、外圍,以及芯片集總線。例如,總線2305可通信地將處理單元2310與只讀存儲器2330、系統(tǒng)存儲器2325、以及永久存儲器設(shè)備2335連接。
[0281]從這些各種存儲器單元,處理單元2310檢索要執(zhí)行的指令和要處理的數(shù)據(jù),以便執(zhí)行本發(fā)明的處理。在不同的實施例中,處理單元可以是單處理器或多核處理器。
[0282]只讀存儲器(ROM) 2330存儲由處理單元2310及電子系統(tǒng)的其他模塊需要的靜態(tài)數(shù)據(jù)以及指令。另一方面,永久存儲器設(shè)備2335是讀取-寫入存儲器設(shè)備。此設(shè)備是即使在電子系統(tǒng)2300關(guān)閉的情況下也能存儲指令和數(shù)據(jù)的非易失性存儲器單元。本發(fā)明的一些實施例使用大容量存儲器(諸如磁盤或光盤以及其對應(yīng)的磁盤驅(qū)動器)作為永久存儲器設(shè)備2335。
[0283]其他實施例使用可移動存儲器設(shè)備(諸如軟盤、閃存驅(qū)動器等等)作為永久存儲器設(shè)備。類似于永久存儲器設(shè)備2335,系統(tǒng)存儲器2325是讀取-寫入存儲器設(shè)備。然而,與存儲設(shè)備2335不同,系統(tǒng)存儲器是易失性讀取-寫入存儲器,諸如隨機存取存儲器。系統(tǒng)存儲器存儲處理器在運行時需要的某些指令和數(shù)據(jù)。在一些實施例中,本發(fā)明的處理存儲在系統(tǒng)存儲器2325、永久存儲器設(shè)備2335,和/或只讀存儲器2330中。從這些各種存儲器單元,處理單元2310檢索要執(zhí)行的指令和要處理的數(shù)據(jù),以便執(zhí)行一些實施例的處理。
[0284]總線2305還連接到輸入和輸出設(shè)備2340和2345。輸入設(shè)備使得用戶能夠?qū)⑿畔⒑瓦x擇命令傳遞到電子系統(tǒng)。輸入設(shè)備2340包括字母數(shù)字鍵盤和指示設(shè)備(也叫做“光標控制設(shè)備”)。輸出設(shè)備2345顯示由電子系統(tǒng)所生成的圖像。輸出設(shè)備包括打印機和諸如陰極射線管(CRT)或液晶顯示器(LCD)之類的顯示設(shè)備。一些實施例包括諸如充當輸入和輸出設(shè)備的觸摸屏之類的設(shè)備。
[0285]最后,如圖23所示,總線2305還通過網(wǎng)絡(luò)適配器(未示出)將電子系統(tǒng)2300耦合到網(wǎng)絡(luò)2365。如此,計算機可以是計算機網(wǎng)絡(luò)(諸如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”),或內(nèi)聯(lián)網(wǎng),或諸如因特網(wǎng)的網(wǎng)絡(luò)的一部分。電子系統(tǒng)2300的所有組件可以和本發(fā)明一起使用。
[0286]一些實施例包括電子組件,諸如微處理器,在機器可讀的或計算機可讀介質(zhì)(可替選地被稱為計算機可讀取的存儲介質(zhì)、機器可讀取的介質(zhì),或機器可讀的存儲介質(zhì))中存儲計算機程序指令的存儲器。這樣的計算機可讀介質(zhì)的一些示例包括RAM、ROM、只讀緊湊光盤(⑶-ROM)、可記錄緊湊光盤(⑶-R)、可重寫的緊湊光盤(⑶-RW)、只讀數(shù)字通用光盤(例如,DVD-ROM、雙層 DVD-ROM)、各種可記錄 / 可重寫 DVD (例如,DVD-RAM、DVD-RW、DVD+RW等等)、閃存(例如,SD卡、微型SD卡、微SD卡等等)、磁性和/或固態(tài)硬盤驅(qū)動器、只讀和可記錄Blu-Ray?光盤、超密度光盤、任何其他光學(xué)或磁性介質(zhì),以及軟盤。計算機可讀介
質(zhì)可以存儲可由至少一個處理單元執(zhí)行的并包括用于執(zhí)行各種操作的指令集的計算機程序。計算機程序或計算機代碼的示例包括機器代碼,諸如由編譯器所產(chǎn)生的機器代碼,以及包括由計算機執(zhí)行的較高級別的代碼的文件,電子組件,或使用解釋器的微處理器。
[0287]盡管上面的討論主要引用了執(zhí)行軟件的微處理器或多核處理器,但是,一些實施例是由諸如專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)之類的一個或多個集成電路執(zhí)行的。在一些實施例中,這樣的集成電路執(zhí)行存儲在電路本身上的指令。
[0288]如本說明書中所使用的,術(shù)語“計算機”、“服務(wù)器”、“處理器”,以及“存儲器”都是指電子或其他技術(shù)設(shè)備。這些術(shù)語排除人或人的組。對于說明書,術(shù)語“顯示”表示顯示在電子設(shè)備上。如此說明書中所使用的,術(shù)語“計算機可讀介質(zhì)”,以及“機器可讀的介質(zhì)”完全局限于以可由計算機讀取的形式存儲信息的有形的物理對象。這些術(shù)語排除任何無線信號、有線下載信號,以及任何其他短暫的信號。
[0289]盡管本發(fā)明是參考很多具體細節(jié)來描述的,但是,那些精通本技術(shù)的普通人員將認識到,在不偏離本發(fā)明的精神的情況下,本發(fā)明可以以其他特定形式來實現(xiàn)。另外,若干個圖(包括圖20和21)在概念上示出了處理。這些處理的特定操作可以不以所示出和所描述的準確的順序執(zhí)行。特定操作可以不以連續(xù)的操作系列執(zhí)行,而不同的特定操作可以在不同的實施例中執(zhí)行。此外,處理還可以使用多個子處理,或作為較大的宏處理的一部分來實現(xiàn)。
[0290]此外,上文還描述了其中用戶根據(jù)LCP數(shù)據(jù)提供LDP集合的多個實施例。然而,在其他實施例中,用戶可以根據(jù)LFP數(shù)據(jù)提供LDP集合。另外,上文還描述了其中控制器實例向交換元件提供PCP數(shù)據(jù)以便管理交換元件的多個實施例。然而,在其他實施例中,控制器實例可以給交換元件提供物理轉(zhuǎn)發(fā)平面數(shù)據(jù)。在這樣的實施例中,關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)將存儲物理轉(zhuǎn)發(fā)平面數(shù)據(jù),而虛擬化應(yīng)用將生成這樣的數(shù)據(jù)。
[0291]此外,在上面的多個示例中,用戶指定一個或多個邏輯交換元件。在一些實施例中,用戶可以提供物理交換元件配置以及這樣的邏輯交換元件配置。此外,盡管描述了在一些實施例中是分別地由在一個計算設(shè)備上執(zhí)行的多個應(yīng)用層形成的控制器實例,但是,如那些精通相關(guān)技術(shù)的人所認識的,這樣的實例是由專用計算設(shè)備或在一些實施例中是由執(zhí)行一層或多層它們的操作的其他機器形成的。
[0292]此外,上文所描述的多個示例還示出了 LDPS與一個用戶相關(guān)聯(lián)。那些精通本技術(shù)的普通人員將認識到,在一些實施例中,用戶可以與一組或多組LDP集合相關(guān)聯(lián)。S卩,LDPS和用戶之間的關(guān)系并不總是一對一關(guān)系,因為一個用戶可以與多個LDP集合相關(guān)聯(lián)。如此,那些精通本技術(shù)的普通人員將理解,本發(fā)明將不受前述的說明性細節(jié)限制。
【權(quán)利要求】
1.一種用于生成用于管理第一和第二管理轉(zhuǎn)發(fā)元件的物理控制平面數(shù)據(jù)的網(wǎng)絡(luò)控制系統(tǒng),第一和第二管理轉(zhuǎn)發(fā)元件實現(xiàn)與第一邏輯數(shù)據(jù)路徑集合相關(guān)聯(lián)的轉(zhuǎn)發(fā)操作,所述系統(tǒng)包括: a)第一控制器實例,用于將第一邏輯數(shù)據(jù)路徑集合的邏輯控制平面數(shù)據(jù)轉(zhuǎn)換為通用物理控制平面UPCP數(shù)據(jù); b)第二控制器實例 ,用于將UPCP數(shù)據(jù)轉(zhuǎn)換為第一管理轉(zhuǎn)發(fā)元件而不是第二管理轉(zhuǎn)發(fā)元件的自定義物理控制平面CPCP數(shù)據(jù); c)第三控制器實例,用于接收由第一控制器實例產(chǎn)生的UPCP數(shù)據(jù),將第二控制器實例標識為負責(zé)產(chǎn)生第一管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù)的控制器實例,并且將接收到的UPCP數(shù)據(jù)供應(yīng)到第二控制器實例。
2.如權(quán)利要求1所述的網(wǎng)絡(luò)控制系統(tǒng),還包括: a)第四控制器實例,用于將UPCP數(shù)據(jù)轉(zhuǎn)換為第二管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù); b)第五控制器實例,用于接收由第一控制器實例產(chǎn)生的UPCP數(shù)據(jù),將第四控制器實例標識為負責(zé)產(chǎn)生第二管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù)的控制器實例,并且將接收到的UPCP數(shù)據(jù)供應(yīng)到第二控制器實例。
3.如權(quán)利要求2所述的網(wǎng)絡(luò)控制系統(tǒng), 其中,第一控制器實例是第一邏輯數(shù)據(jù)路徑集合的主控控制器實例, 其中,第二控制器實例是第一管理轉(zhuǎn)發(fā)元件的主控控制器實例, 其中,第四控制器實例是第二管理轉(zhuǎn)發(fā)元件的主控控制器實例。
4.如權(quán)利要求3所述的網(wǎng)絡(luò)控制系統(tǒng), 其中,第一和第二管理交換元件分別是在第一和第二裝置上運行的軟件交換元件, 其中,第三控制器實例是在第一裝置上運行的控制器實例, 其中,第四控制器實例是在第二裝置上運行的控制器實例。
5.如權(quán)利要求3所述的網(wǎng)絡(luò)控制系統(tǒng),還包括:協(xié)調(diào)管理器,用于將不同的控制器實例標識為不同的管理轉(zhuǎn)發(fā)元件的主控器。
6.如權(quán)利要求3所述的網(wǎng)絡(luò)控制系統(tǒng),還包括:協(xié)調(diào)管理器,用于將不同的控制器實例標識為不同的邏輯數(shù)據(jù)路徑集合和不同的管理轉(zhuǎn)發(fā)元件的主控器。
7.如權(quán)利要求2所述的網(wǎng)絡(luò)控制系統(tǒng), 其中,第二控制器實例還用于將第二邏輯數(shù)據(jù)路徑集合的邏輯控制平面數(shù)據(jù)轉(zhuǎn)換為第二邏輯數(shù)據(jù)路徑集合的UPCP數(shù)據(jù), 其中,第一控制器實例還用于將第二邏輯數(shù)據(jù)路徑集合的UPCP數(shù)據(jù)轉(zhuǎn)換為第三管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù)。
8.如權(quán)利要求1所述的網(wǎng)絡(luò)控制系統(tǒng),其中,第一控制器實例包括: 控制模塊,用于將邏輯控制平面數(shù)據(jù)轉(zhuǎn)換為邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù);以及 虛擬化模塊,用于將邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù)轉(zhuǎn)換為UPCP數(shù)據(jù)。
9.如權(quán)利要求8所述的網(wǎng)絡(luò)控制系統(tǒng),還包括: 表映射引擎; 輸入和輸出表,用于存儲邏輯控制和轉(zhuǎn)發(fā)平面記錄; 一組表映射規(guī)則;控制模塊,包括表映射規(guī)則的第一子集和表映射引擎; 虛擬化模塊,包括表映射規(guī)則的第二子集和表映射引擎。
10.一種網(wǎng)絡(luò)控制系統(tǒng)的第一控制器實例,所述網(wǎng)絡(luò)控制系統(tǒng)管理第一和第二管理轉(zhuǎn)發(fā)元件,第一和第二管理轉(zhuǎn)發(fā)元件實現(xiàn)與第一邏輯交換元件相關(guān)聯(lián)的轉(zhuǎn)發(fā)操作,第一控制器實例包括: 控制器間的通信接口,用于從第二控制器實例接收通用物理控制平面UPCP數(shù)據(jù),第二控制器實例從第一邏輯交換元件的邏輯控制平面數(shù)據(jù)產(chǎn)生UPCP數(shù)據(jù); 第一模塊,用于將第三控制器實例標識為負責(zé)從接收到的UPCP數(shù)據(jù)產(chǎn)生第一管理轉(zhuǎn)發(fā)元件而不是第二管理轉(zhuǎn)發(fā)元件的自定義物理控制平面CPCP數(shù)據(jù)的控制器實例;以及控制器間的通信接口還用于將接收到的UPCP數(shù)據(jù)供應(yīng)到第三控制器實例。
11.如權(quán)利要求10所述的第一控制器實例, 其中,所述網(wǎng)絡(luò)控制系統(tǒng)包括:第四控制器實例,用于將UPCP數(shù)據(jù)轉(zhuǎn)換為第二管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù);和第五控制器實例,用于將第四控制器實例標識為負責(zé)產(chǎn)生第二管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù)的控制器實例; 其中,第一控制器實例是第一管理轉(zhuǎn)發(fā)元件的主控控制器實例, 其中,第二控制器實例是第一邏輯交換元件的主控控制器實例, 其中,第五控制器實例是第二管理轉(zhuǎn)發(fā)元件的主控控制器實例。
12.如權(quán)利要求11所述的第一控制器實例,還包括:協(xié)調(diào)管理器,用于將不同的控制器實例標識為不同的管理轉(zhuǎn)發(fā)元件的主控器,其中,第一控制器實例的協(xié)調(diào)管理器與至少一個其他控制器實例的協(xié)調(diào)管理器進行交互作用以將不同的控制器實例標識為不同的管理轉(zhuǎn)發(fā)元件的主控器。
13.如權(quán)利要求10所述的第一控制器實例,還包括:第二模塊,用于將第二邏輯交換元件的邏輯控制平面數(shù)據(jù)轉(zhuǎn)換為第二邏輯交換元件的UPCP數(shù)據(jù)。
14.如權(quán)利要求13所述的第一控制器實例,其中,控制器間的通信接口還用于將第二邏輯交換元件的UPCP數(shù)據(jù)發(fā)送到第四控制器實例以轉(zhuǎn)換為第三管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù)。
15.如權(quán)利要求13所述的第一控制器實例,還包括: 控制模塊,用于將第二邏輯交換元件的邏輯控制平面數(shù)據(jù)轉(zhuǎn)換為邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù);以及 虛擬化模塊,用于將邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù)轉(zhuǎn)換為通用物理控制平面數(shù)據(jù)。
16.一種網(wǎng)絡(luò)控制系統(tǒng)的第一控制器實例,所述網(wǎng)絡(luò)控制系統(tǒng)管理第一和第二管理轉(zhuǎn)發(fā)元件,第一和第二管理轉(zhuǎn)發(fā)元件實現(xiàn)與第一邏輯交換元件相關(guān)聯(lián)的轉(zhuǎn)發(fā)操作,第一控制器實例包括: 控制器間的通信接口,用于從第二控制器實例接收通用物理控制平面UPCP數(shù)據(jù),所述UPCP數(shù)據(jù)是由第三控制器實例從第一邏輯交換元件的邏輯控制平面數(shù)據(jù)產(chǎn)生的; 第一模塊,用于從接收到的UPCP數(shù)據(jù)產(chǎn)生第一管理轉(zhuǎn)發(fā)元件而不是第二管理轉(zhuǎn)發(fā)元件的自定義物理控制平面CPCP數(shù)據(jù);以及 轉(zhuǎn)發(fā)元件通信接口,用于將產(chǎn)生的CPCP數(shù)據(jù)供應(yīng)到第一管理轉(zhuǎn)發(fā)元件。
17.如權(quán)利要求16所述的第一網(wǎng)絡(luò)控制系統(tǒng),其中,所述網(wǎng)絡(luò)控制系統(tǒng)包括:第四控制器實例,用于從UPCP數(shù)據(jù)產(chǎn)生第二管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù);和第五控制器實例,用于從第三控制器實例接收UPCP數(shù)據(jù),將第四控制器實例標識為負責(zé)產(chǎn)生第二管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù)的控制器實例,并且將UPCP數(shù)據(jù)供應(yīng)到第四控制器實例; 其中,第二控制器實例是第一管理轉(zhuǎn)發(fā)元件的主控控制器實例, 其中,第三控制器實例是第一邏輯交換元件的主控控制器實例, 其中,第五控制器實例是第二管理轉(zhuǎn)發(fā)元件的主控控制器實例。
18.—種網(wǎng)絡(luò)控制系統(tǒng)的第一控制器實例的非暫態(tài)機器可讀介質(zhì),所述網(wǎng)絡(luò)控制系統(tǒng)用于管理第一和第二管理轉(zhuǎn)發(fā)元件,第一和第二管理轉(zhuǎn)發(fā)元件實現(xiàn)與第一邏輯數(shù)據(jù)路徑集合相關(guān)聯(lián)的轉(zhuǎn)發(fā)操作,所述非暫態(tài)機器可讀介質(zhì)存儲用于以下步驟的指令集合: 從第二控制器實例接收通用物理控制平面UPCP數(shù)據(jù),所述UPCP數(shù)據(jù)是由第三控制器實例從第一邏輯交換元件的邏輯控制平面數(shù)據(jù)產(chǎn)生的; 從接收到的UPCP數(shù)據(jù)產(chǎn)生第一管理轉(zhuǎn)發(fā)元件而不是第二管理轉(zhuǎn)發(fā)元件的自定義物理控制平面CPCP數(shù)據(jù); 將產(chǎn)生的CPCP數(shù)據(jù)供應(yīng)到第一管理轉(zhuǎn)發(fā)元件。
19.如權(quán)利要求18所述的非暫態(tài)機器可讀介質(zhì), 其中,所述網(wǎng)絡(luò)控制系統(tǒng)包括:第四控制器實例,用于從UPCP數(shù)據(jù)產(chǎn)生第二管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù);和第五控制器實例,用于從第三控制器實例接收UPCP數(shù)據(jù),將第四控制器實例標識為負責(zé)產(chǎn)生第二管理轉(zhuǎn)發(fā)元件的CPCP數(shù)據(jù)的控制器實例,并且將UPCP數(shù)據(jù)供應(yīng)到第四控制器實例;` 其中,第二控制器實例是第一管理轉(zhuǎn)發(fā)元件的主控控制器實例, 其中,第三控制器實例是第一邏輯交換元件的主控控制器實例, 其中,第五控制器實例是第二管理轉(zhuǎn)發(fā)元件的主控控制器實例。
【文檔編號】H04L12/28GK103891209SQ201280052475
【公開日】2014年6月25日 申請日期:2012年10月25日 優(yōu)先權(quán)日:2011年10月25日
【發(fā)明者】T·考珀內(nèi)恩, P·薩卡爾 申請人:Nicira股份有限公司