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