两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于邏輯路由器的動態(tài)路由的制作方法

文檔序號:11852633閱讀:404來源:國知局
用于邏輯路由器的動態(tài)路由的制作方法與工藝

在傳統(tǒng)物理聯(lián)網(wǎng)中,路由出現(xiàn)了三種類型:連接路由、靜態(tài)路由和動態(tài)路由。連接路由是基于本地接口信息自動確定的那些路由。當(dāng)接口具有在子網(wǎng)中配置的地址時(shí),則路由器具有與該子網(wǎng)的直接連接路由。靜態(tài)路由是在路由器處手動配置的那些路由,而動態(tài)路由是經(jīng)由路由協(xié)議(例如,BGP、OSPF、IGP等)從其他路由器獲知的。因?yàn)檫@將可能導(dǎo)致向路由器呈現(xiàn)對于相同IP地址的多個(gè)路由,所以路由器為了在這些路由之間進(jìn)行選擇而執(zhí)行各種處理。

虛擬化網(wǎng)絡(luò)也可以具有路由器,被稱為邏輯路由器。然而,邏輯路由器的先前實(shí)現(xiàn)方式只使用基于邏輯路由器的端口上配置的IP前綴而產(chǎn)生的連接路由。向邏輯路由器增加不同類型的路由將造成需要對邏輯路由器的附加處理技術(shù)的問題,這可能不容易被經(jīng)常用來實(shí)現(xiàn)這樣的邏輯路由器的軟件轉(zhuǎn)發(fā)元件執(zhí)行。



技術(shù)實(shí)現(xiàn)要素:

一些實(shí)施例提供實(shí)現(xiàn)邏輯路由器的相互連接和邏輯路由器之間的路由的傳播的網(wǎng)絡(luò)控制系統(tǒng)。在一些實(shí)施例中,邏輯路由器由一個(gè)或多個(gè)網(wǎng)絡(luò)控制器管理,該網(wǎng)絡(luò)控制器接收輸入以定義邏輯路由器,并計(jì)算對于邏輯路由器的附加路由信息。附加路由信息的計(jì)算可以包括對于一個(gè)邏輯路由器到不同邏輯路由器而指定的路由的傳播。為了在由一些實(shí)施例的網(wǎng)絡(luò)控制器所管理的物理網(wǎng)絡(luò)中實(shí)現(xiàn)邏輯路由器,網(wǎng)絡(luò)控制器產(chǎn)生對于邏輯路由器的路由表,并且將路由表分發(fā)到實(shí)現(xiàn)了邏輯路由器的網(wǎng)絡(luò)中的各個(gè)元件。在一些實(shí)施例中,網(wǎng)絡(luò)控制器分發(fā)該路由表(包括動態(tài)路由信息)作為(i)分發(fā)到受管理的轉(zhuǎn)發(fā)元件的流條目以及(ii)定義對于虛擬化容器(例如,名稱空間)的路由表的數(shù)據(jù)元組,該虛擬化容器作為用于與外部網(wǎng)絡(luò)通信的L3網(wǎng)關(guān)進(jìn)行操作。

在一些實(shí)施例中,網(wǎng)絡(luò)控制系統(tǒng)允許有幾個(gè)不同類型的邏輯路由器,這些邏輯路由器可以具有不同的預(yù)定義的功能。一些實(shí)施例分層地布置這些不同類型的邏輯路由器。例如,在一些實(shí)施例中,第一類型的邏輯路由器連接到邏輯網(wǎng)絡(luò)中的邏輯交換機(jī),而第二類型的邏輯路由提供在共享虛擬化基礎(chǔ)結(jié)構(gòu)和共享虛擬化基礎(chǔ)結(jié)構(gòu)外部的其他網(wǎng)絡(luò)之間的連接,在該共享虛擬化基礎(chǔ)結(jié)構(gòu)中實(shí)現(xiàn)邏輯路由器。

具體地,一些實(shí)施例使得租戶邏輯路由器和供應(yīng)商邏輯路由器能夠在虛擬化網(wǎng)絡(luò)中實(shí)現(xiàn)。一些實(shí)施例的供應(yīng)商邏輯路由器由數(shù)據(jù)中心供應(yīng)商管理,以處理進(jìn)出數(shù)據(jù)中心(例如,多租戶數(shù)據(jù)中心)的流量,其中在該數(shù)據(jù)中心中實(shí)現(xiàn)了各種租戶邏輯網(wǎng)絡(luò)。在一些實(shí)施例中,這些供應(yīng)商邏輯路由器可以具有與多個(gè)租戶邏輯路由器的連接以及在網(wǎng)關(guān)(即,具有與外部網(wǎng)絡(luò)中的路由器的物理連接的主機(jī))中實(shí)現(xiàn)的與外部網(wǎng)絡(luò)的連接。一些實(shí)施例的租戶邏輯路由器向單個(gè)邏輯路由網(wǎng)絡(luò)提供邏輯路由功能,從而允許租戶連接多個(gè)邏輯交換機(jī)(租戶機(jī)器(例如,虛擬機(jī))附連到這些邏輯交換機(jī))。一些實(shí)施例中,租戶邏輯路由器還可以連接到供應(yīng)商邏輯路由器,以便接收來自外部主機(jī)的流量并且向外部主機(jī)發(fā)送流量。對邏輯路由器功能的這些限制使得數(shù)據(jù)中心管理員能夠經(jīng)由供應(yīng)商邏輯路由器的配置來管理進(jìn)入和離開數(shù)據(jù)中心的流量的處理。

為了實(shí)現(xiàn)邏輯路由器的相互連接,網(wǎng)絡(luò)控制器實(shí)現(xiàn)連接的邏輯路由器之間的動態(tài)路由。在一般情況下,當(dāng)?shù)谝贿壿嬄酚善鬟B接到第二邏輯路由器時(shí),網(wǎng)絡(luò)控制器自動地將路由從第一邏輯路由器傳播到第二邏輯路由器,反之亦然。因此,如果第一邏輯路由器存儲有將特定子網(wǎng)中的網(wǎng)絡(luò)地址路由到邏輯路由器的特定端口的連接路由,則邏輯控制器自動地用新路由填充第二邏輯路由器,該新路由將第一邏輯路由器(即,第一邏輯路由器的特定邏輯端口)指定為對于特定子網(wǎng)中的網(wǎng)絡(luò)地址的下一跳。類似地,對于附連到第二邏輯路由器的子網(wǎng)的連接路由被自動傳播到第一邏輯路由器作為動態(tài)路由,該動態(tài)路由指定第二邏輯路由器作為下一跳。

在一些實(shí)施例中,網(wǎng)絡(luò)控制器動態(tài)地傳播的路由包括連接路由以及手動輸入的靜態(tài)路由。如上所述,可以基于邏輯路由器的配置(即,基于邏輯端口到特定子網(wǎng)的附連)自動地產(chǎn)生對于邏輯路由器的連接路由。在一些實(shí)施例中,靜態(tài)路由是在邏輯路由器所屬的邏輯網(wǎng)絡(luò)的管理員手動輸入后由網(wǎng)絡(luò)控制器接收的。對于特定范圍的網(wǎng)絡(luò)地址,靜態(tài)路由可能指定要向其發(fā)送包的特定下一跳地址。作為一個(gè)例子,如果邏輯路由器具有到其他邏輯路由器的多個(gè)連接、或與具有多個(gè)物理路由器的物理網(wǎng)絡(luò)的連接,則對于特定范圍的網(wǎng)絡(luò)地址,管理員可能想要指定這些路由器中的哪一個(gè)應(yīng)當(dāng)是下一跳。

一些實(shí)施方案的網(wǎng)絡(luò)控制器存儲邏輯路由器之間的連接作為邏輯路由器的配置數(shù)據(jù)的一部分。因此,當(dāng)接收到對于第一邏輯路由器的配置狀態(tài)路由信息時(shí),網(wǎng)絡(luò)控制器識別是否將該信息作為動態(tài)路由傳播到任何其他邏輯路由器。對于供應(yīng)商邏輯路由器和租戶邏輯路由器的情況,一些實(shí)施例對在邏輯路由器之間動態(tài)地傳播的路由設(shè)置了限制。具體地,當(dāng)租戶邏輯路由器連接到供應(yīng)商邏輯路由器時(shí),一些實(shí)施例將租戶邏輯路由器的連接路由動態(tài)地傳播到供應(yīng)商邏輯路由器,使得供應(yīng)商邏輯路由器將包發(fā)送到由連接路由指定給那個(gè)租戶邏輯路由器的子網(wǎng)。然而,網(wǎng)絡(luò)控制器不是動態(tài)地傳播指定關(guān)于連接到供應(yīng)商邏輯路由器的各種其他租戶網(wǎng)絡(luò)的信息的路由,而是僅將動態(tài)缺省路由傳播到這樣的租戶邏輯路由器,該邏輯租戶路由器將沒有通過更多特定路由進(jìn)行路由的所有包發(fā)送到供應(yīng)商邏輯路由器。

在一些實(shí)施例中,不同的邏輯路由器可以具有不同的主網(wǎng)絡(luò)控制器,該主網(wǎng)絡(luò)控制器執(zhí)行對于邏輯路由器的狀態(tài)計(jì)算。也就是說,對于特定邏輯路由器的主網(wǎng)絡(luò)控制器獲取對于邏輯路由器的輸入配置狀態(tài),并產(chǎn)生輸出狀態(tài)。主網(wǎng)絡(luò)控制器產(chǎn)生用來實(shí)現(xiàn)邏輯路由器的流條目和/或其它數(shù)據(jù)元組,并且將該數(shù)據(jù)分發(fā)到網(wǎng)絡(luò)元件以便這些網(wǎng)絡(luò)元件實(shí)現(xiàn)邏輯路由器。在一些實(shí)施例中,對于邏輯路由器的輸入配置狀態(tài)在網(wǎng)絡(luò)控制系統(tǒng)中的網(wǎng)絡(luò)控制器之間共享,并且路由僅被對于特定邏輯路由器的主網(wǎng)絡(luò)控制器動態(tài)地傳播到特定邏輯路由器。

前述的發(fā)明內(nèi)容旨在作為本發(fā)明的一些實(shí)施例的簡要介紹。這并不意味著是對該文獻(xiàn)中公開的所有創(chuàng)造性主題的介紹或概述。接下來的具體實(shí)施方式和具體實(shí)施方式中所參考的附圖將進(jìn)一步描述發(fā)明內(nèi)容中描述的實(shí)施例和其他實(shí)施例。因此,為了理解本文檔中描述的所有實(shí)施例,需要對發(fā)明內(nèi)容、具體實(shí)施方式和附圖進(jìn)行全面檢閱。此外,要求保護(hù)的主題不受發(fā)明內(nèi)容、具體實(shí)施方式和附圖中的說明性細(xì)節(jié)的限制,而是要由所附權(quán)利要求書來限定,因?yàn)樗蟊Wo(hù)的主題可以在不偏離主題的精神的情況下以其他特定形式來實(shí)施。

附圖說明

附加的權(quán)利要求中描述了本發(fā)明的新穎特征。但是,為了說明的目的,下面的圖中描述了本發(fā)明的幾個(gè)實(shí)施例。

圖1概念性地示出一些實(shí)施例的網(wǎng)絡(luò)控制器100的結(jié)構(gòu)。

圖2概念性地示出對于兩個(gè)不同租戶的一組邏輯網(wǎng)絡(luò)結(jié)構(gòu)的示例。

圖3概念性地示出圖2的邏輯網(wǎng)絡(luò)在一些實(shí)施例的受管理網(wǎng)絡(luò)中的實(shí)現(xiàn)方式。

圖4概念性地示出一些實(shí)施例的用于配置受管理的轉(zhuǎn)發(fā)元件和L3網(wǎng)關(guān)以便實(shí)現(xiàn)邏輯網(wǎng)絡(luò)的網(wǎng)絡(luò)控制系統(tǒng)。

圖5概念性地示出數(shù)據(jù)通過一些實(shí)施例的分層網(wǎng)絡(luò)控制系統(tǒng)的傳播。

圖6概念性地示出一些實(shí)施例的控制器接收邏輯網(wǎng)絡(luò)配置。

圖7概念性地示出控制器接收輸入配置數(shù)據(jù)以將如圖6中所示地創(chuàng)建的TLR附連到PLR。

圖8概念性地示出TLR-PLR連接的結(jié)果,因?yàn)樵摻Y(jié)果與PLR數(shù)據(jù)有關(guān)。

圖9概念性地示出一些實(shí)施例的用于實(shí)現(xiàn)PLR-TLR連接的處理,該處理由作為TLR和PLR兩者的主控器的網(wǎng)絡(luò)控制器執(zhí)行。

圖10和圖11概念性地示出如在圖3中所示的受管理網(wǎng)絡(luò)中實(shí)現(xiàn)的、由第一跳MFE對于被圖2中所示的PLR處理的兩個(gè)不同包的包處理。

圖12概念性地示出啟用動態(tài)路由的、包括兩個(gè)連接的邏輯路由器的邏輯網(wǎng)絡(luò)的示例。

圖13概念性地示出一些實(shí)施例的網(wǎng)絡(luò)控制器、以及當(dāng)接收到對于邏輯處理器的新路由時(shí)在處理器執(zhí)行邏輯路由器處理時(shí)通過處理器的數(shù)據(jù)流。

圖14概念性地示出分別作為第一邏輯路由器和第二邏輯路由器的主控制器的兩個(gè)網(wǎng)絡(luò)處理器、以及當(dāng)在第一控制器處接收到對于第一邏輯路由器的新路由時(shí)通過控制器的數(shù)據(jù)流。

圖15概念性地示出由一些實(shí)施例的網(wǎng)絡(luò)控制器執(zhí)行的處理以處理在控制器處接收到的對于邏輯路由器的新輸入路由。

圖16概念性地示出包括全部連接在相同子網(wǎng)上的三個(gè)邏輯路由器的邏輯網(wǎng)絡(luò)。

圖17反映了對于圖16的三個(gè)邏輯路由器的、在這三個(gè)邏輯路由器的各自的主控制器已經(jīng)(i)產(chǎn)生對于每個(gè)邏輯路由器的連接路由、(ii)接收或產(chǎn)生對于每個(gè)邏輯路由器的靜態(tài)缺省路由、以及(iii)在邏輯路由器之間動態(tài)地傳播路由之后的初始路由表。

圖18和圖19示出接收對于圖16的三個(gè)邏輯路由器之一的新靜態(tài)路由的網(wǎng)絡(luò)控制系統(tǒng)以及這些路由如何通過圖17的路由表進(jìn)行傳播的示例。

圖20概念性地示出用以實(shí)現(xiàn)本發(fā)明的一些實(shí)施例的電子系統(tǒng)。

具體實(shí)施方式

在本發(fā)明的下面的詳細(xì)描述中,本發(fā)明的大量細(xì)節(jié)、示例和實(shí)施例被闡述和描述。但是,對本領(lǐng)域技術(shù)人員而言清楚和明顯的是,本發(fā)明不限于闡述的實(shí)施例,以及本發(fā)明可以在沒有一些所討論的具體細(xì)節(jié)和示例的情況下被實(shí)施。

一些實(shí)施例提供實(shí)現(xiàn)邏輯路由器的相互連接以及在邏輯路由器之間的路由的傳播的網(wǎng)絡(luò)控制系統(tǒng)。在一些實(shí)施例中,邏輯路由器由一個(gè)或多個(gè)網(wǎng)絡(luò)控制器管理,該網(wǎng)絡(luò)控制器接收輸入以定義邏輯路由器,并計(jì)算對于邏輯路由器的附加路由信息。附加路由信息的計(jì)算可以包括對于一個(gè)邏輯路由器到不同邏輯路由器指定的路由的傳播。為了在由一些實(shí)施例的網(wǎng)絡(luò)控制器所管理的物理網(wǎng)絡(luò)中實(shí)現(xiàn)邏輯路由器,網(wǎng)絡(luò)控制器產(chǎn)生對于邏輯路由器的路由表,并且將路由表分發(fā)到實(shí)現(xiàn)了邏輯路由器的網(wǎng)絡(luò)中的各個(gè)元件。在一些實(shí)施例中,網(wǎng)絡(luò)控制器分發(fā)這個(gè)路由表(包括動態(tài)路由信息)作為(i)分發(fā)到受管理的轉(zhuǎn)發(fā)元件的流條目以及(ii)定義對于虛擬化容器(例如,名稱空間)的路由表的數(shù)據(jù)元組,該虛擬化容器作為用于與外部網(wǎng)絡(luò)通信的L3網(wǎng)關(guān)操作。

在一些實(shí)施例中,網(wǎng)絡(luò)控制系統(tǒng)允許幾種不同類型的邏輯路由器,這些邏輯路由器可以具有不同的預(yù)定義的功能。一些實(shí)施例分層地布置這些不同類型的邏輯路由器。例如,在一些實(shí)施例中,第一類型的邏輯路由器連接到邏輯網(wǎng)絡(luò)中的邏輯交換機(jī),而第二類型的邏輯路由器提供在共享的虛擬化基礎(chǔ)結(jié)構(gòu)和共享的虛擬化基礎(chǔ)結(jié)構(gòu)外部的其他網(wǎng)絡(luò)之間的連接,在該共享的虛擬化基礎(chǔ)結(jié)構(gòu)中實(shí)現(xiàn)邏輯路由器。

具體地,一些實(shí)施例使得租戶邏輯路由器和供應(yīng)商邏輯路由器能夠在虛擬化網(wǎng)絡(luò)中實(shí)現(xiàn)。一些實(shí)施例的供應(yīng)商邏輯路由器由數(shù)據(jù)中心供應(yīng)商管理,以處理進(jìn)出數(shù)據(jù)中心(例如,多租戶數(shù)據(jù)中心)的流量,其中在該數(shù)據(jù)中心中實(shí)現(xiàn)了各種租戶邏輯網(wǎng)絡(luò)。在一些實(shí)施例中,這些供應(yīng)商邏輯路由器可以具有與多個(gè)租戶邏輯路由器的連接,以及在網(wǎng)關(guān)中實(shí)現(xiàn)的與外部網(wǎng)絡(luò)的連接(即,具有與外部網(wǎng)絡(luò)中的路由器的物理連接的主機(jī))。一些實(shí)施例的租戶邏輯路由器向單個(gè)租戶邏輯網(wǎng)絡(luò)提供邏輯路由功能,從而允許租戶連接到多個(gè)邏輯交換機(jī)(租戶機(jī)器(例如,虛擬機(jī))附連到這些邏輯交換機(jī))。在一些實(shí)施例中,租戶邏輯路由器還可以連接到供應(yīng)商邏輯路由器,以便從外部主機(jī)接收流量和向外部主機(jī)發(fā)送流量。對邏輯路由器功能的這些限制使得數(shù)據(jù)中心管理員能夠經(jīng)由供應(yīng)商邏輯路由器的配置來管理進(jìn)入和離開數(shù)據(jù)中心的流量的處理。

圖1概念性地示出了一些實(shí)施例的這樣的網(wǎng)絡(luò)控制器100的結(jié)構(gòu)。如圖所示,網(wǎng)絡(luò)控制器100包括輸入接口(例如,API)105、表映射引擎110、路由處理引擎115、狀態(tài)分發(fā)接口120、和狀態(tài)共享接口123。此外,網(wǎng)絡(luò)控制器100包括狀態(tài)存儲器125。在一些實(shí)施例中,狀態(tài)存儲器125存儲關(guān)于邏輯網(wǎng)絡(luò)的一個(gè)或多個(gè)邏輯轉(zhuǎn)發(fā)元件(例如,邏輯交換機(jī)、邏輯路由器)的信息,該邏輯網(wǎng)絡(luò)在由控制器100管理的虛擬化物理網(wǎng)絡(luò)中實(shí)現(xiàn)。

在一些實(shí)施例中,網(wǎng)絡(luò)控制器100是管理許多受管理的轉(zhuǎn)發(fā)元件的幾個(gè)控制器之一,這些受管理的轉(zhuǎn)發(fā)元件實(shí)現(xiàn)了跨許多主機(jī)的多個(gè)邏輯網(wǎng)絡(luò)。例如,邏輯網(wǎng)絡(luò)可以包括附連到邏輯路由器的幾個(gè)邏輯交換機(jī),其中許多虛擬機(jī)(VM)附連到邏輯交換機(jī)。VM駐留在許多主機(jī)上,可能與其他邏輯網(wǎng)絡(luò)的VM并排。受管理的轉(zhuǎn)發(fā)元件(MFE)在每一個(gè)主機(jī)上操作(例如,作為駐留在主機(jī)的虛擬化軟件中的軟件轉(zhuǎn)發(fā)元件),以便處理向主機(jī)上的VM發(fā)送的包和從主機(jī)上的VM接收的包。在一些實(shí)施例中,特定主機(jī)上的MFE存儲信息以便實(shí)現(xiàn)對于具有駐留在主機(jī)上的VM的各種不同邏輯網(wǎng)絡(luò)的邏輯轉(zhuǎn)發(fā)元件。

網(wǎng)絡(luò)控制器100可以管理這些邏輯轉(zhuǎn)發(fā)元件中特定的一個(gè)(或幾個(gè))(或作為整體的邏輯網(wǎng)絡(luò)),并且因此在狀態(tài)存儲器125中存儲關(guān)于邏輯轉(zhuǎn)發(fā)元件的信息。在一些實(shí)施例中,網(wǎng)絡(luò)控制器100接收定義該網(wǎng)絡(luò)控制器100管理的邏輯轉(zhuǎn)發(fā)元件的配置信息,并且計(jì)算用于向主機(jī)處的MFE分發(fā)的附加信息以便實(shí)現(xiàn)邏輯網(wǎng)絡(luò)。狀態(tài)存儲器125存儲對于由控制器100管理的所有邏輯轉(zhuǎn)發(fā)元件的配置狀態(tài)和計(jì)算狀態(tài)信息。另外,在一些實(shí)施例中,其他控制器與網(wǎng)絡(luò)控制器100共享對于不由控制器100管理的其他邏輯網(wǎng)絡(luò)的配置狀態(tài)信息。但是,在這樣的一些實(shí)施例中,控制器不共享計(jì)算狀態(tài)信息,并且每一個(gè)控制器僅計(jì)算其管理的邏輯網(wǎng)絡(luò)的狀態(tài)。

在一些實(shí)施例中,輸入接口105是應(yīng)用編程接口(API),通過該應(yīng)用編程接口,網(wǎng)絡(luò)控制器100接收配置信息(例如,邏輯路由器的邏輯端口的配置、對于邏輯路由器的靜態(tài)路由等)。配置信息可以由登錄到網(wǎng)絡(luò)控制器中的管理員直接輸入,或通過管理應(yīng)用將管理員輸入的信息轉(zhuǎn)換為API命令以發(fā)送到控制器。當(dāng)接收到這個(gè)信息時(shí),輸入接口將配置數(shù)據(jù)存儲到狀態(tài)存儲器125中。在一些實(shí)施例中,每個(gè)邏輯轉(zhuǎn)發(fā)元件(例如,邏輯路由器)被存儲為對象,并且路由被存儲為由邏輯路由器對象擁有的對象。為了在狀態(tài)存儲器125中定義所配置的路由,一些實(shí)施例存儲路由的類型(例如,連接、靜態(tài)、動態(tài))、由路由控制的網(wǎng)絡(luò)地址或地址范圍、對于具有在由路由控制的范圍內(nèi)的網(wǎng)絡(luò)地址的包的目的地(例如,下一跳地址、邏輯端口、放棄動作(drop action))、以及路由的優(yōu)先級。

在一些實(shí)施例中,表映射引擎110執(zhí)行對于由控制器100管理的邏輯轉(zhuǎn)發(fā)元件的狀態(tài)計(jì)算。這些狀態(tài)計(jì)算可以包括產(chǎn)生流條目以實(shí)現(xiàn)邏輯轉(zhuǎn)發(fā)元件、產(chǎn)生用于邏輯服務(wù)的數(shù)據(jù)元組和用于L3網(wǎng)關(guān)的路由表等。在一些實(shí)施例中,表映射引擎以在多組表之間執(zhí)行連接操作的表映射語言來實(shí)現(xiàn)(諸如nLog或datalog(數(shù)據(jù)記錄))。此外,一些實(shí)施例的表映射引擎基于與其他邏輯路由器的連接產(chǎn)生動態(tài)路由,并且這些路由被其他邏輯路由器(例如,靜態(tài)路由和連接路由)存儲。當(dāng)一些實(shí)施例的表映射引擎110接收到對于邏輯路由器的包括一個(gè)或多個(gè)動態(tài)路由或靜態(tài)路由的一組路由(即,包括除了那些基于邏輯路由器的邏輯端口自動定義的路由以外的路由)時(shí),表映射引擎利用路由處理引擎115將輸入的一組路由轉(zhuǎn)換為輸出的一組路由。

一些實(shí)施例的路由處理引擎115接收來自表映射引擎的一組路由(例如,由表映射引擎或網(wǎng)絡(luò)控制器API基于邏輯路由器的邏輯端口所連接到的子網(wǎng)而自動產(chǎn)生的路由、通過網(wǎng)絡(luò)控制器API輸入的靜態(tài)路由),并且對路由執(zhí)行遞歸遍歷處理,以便標(biāo)識對于由邏輯路由器路由的每一個(gè)網(wǎng)絡(luò)地址范圍的最終邏輯目的地。當(dāng)多個(gè)輸入路由對于特定網(wǎng)絡(luò)地址或地址范圍提供相矛盾的信息時(shí),一些實(shí)施例的路由處理引擎115確定哪一個(gè)路由具有更高的優(yōu)先級。2014年3月14日提交的美國專利申請14/214,545中更加詳細(xì)地描述了一些實(shí)施例的路由處理引擎,其全部內(nèi)容通過引用合并于此。

當(dāng)接收到從路由處理引擎輸出的一組路由時(shí),一些實(shí)施例的表映射引擎110產(chǎn)生要向網(wǎng)絡(luò)元件(例如,駐留在主機(jī)130上的受管理的轉(zhuǎn)發(fā)元件和受管理的網(wǎng)關(guān))分發(fā)的信息,以便網(wǎng)絡(luò)元件實(shí)現(xiàn)邏輯路由器。該數(shù)據(jù)可以包括發(fā)送到受管理的轉(zhuǎn)發(fā)元件的流條目(例如,指定具有到特定邏輯端口的特定網(wǎng)絡(luò)地址的轉(zhuǎn)發(fā)包)、以及對于網(wǎng)關(guān)的路由表信息(例如,定義對于在名稱空間中操作的IP棧的路由表的數(shù)據(jù)元組)。除了實(shí)現(xiàn)邏輯路由表的流條目(指定到特定邏輯端口的轉(zhuǎn)發(fā)包)以外,一些實(shí)施例的表映射引擎110還產(chǎn)生將邏輯端口映射到物理接口的流條目,使得包可以跨受管理的物理網(wǎng)絡(luò)在受管理的轉(zhuǎn)發(fā)元件之間發(fā)送。

控制器100將由表映射引擎110產(chǎn)生的對于邏輯處理器的數(shù)據(jù)(以及例如對于其他邏輯轉(zhuǎn)發(fā)元件(諸如附連到邏輯路由器的邏輯交換機(jī))的其他數(shù)據(jù))經(jīng)由狀態(tài)分發(fā)接口120分發(fā)到主機(jī)130。在一些實(shí)施例中,控制器100通過其他網(wǎng)絡(luò)控制器的分層結(jié)構(gòu)來分發(fā)數(shù)據(jù)。例如,在一些實(shí)施例中,每一個(gè)邏輯網(wǎng)絡(luò)(或每一個(gè)邏輯轉(zhuǎn)發(fā)元件)由特定的控制器(該控制器也可以管理其他邏輯網(wǎng)絡(luò))管理,并且每一個(gè)主機(jī)都由特定的控制器(該控制器也可以管理其他主機(jī))管理??刂破?00計(jì)算對于該控制器100管理的邏輯網(wǎng)絡(luò)的狀態(tài)(例如,流條目),并且將該數(shù)據(jù)分發(fā)到管理實(shí)現(xiàn)那些邏輯網(wǎng)絡(luò)的主機(jī)的各個(gè)控制器。在其他實(shí)施例中,狀態(tài)分發(fā)接口120與主機(jī)130直接接口連接以分發(fā)數(shù)據(jù)。

一些實(shí)施例的狀態(tài)共享接口123允許控制器100與管理網(wǎng)絡(luò)的各個(gè)受管理的轉(zhuǎn)發(fā)元件的其他控制器135共享輸入配置狀態(tài)信息。在上面提到的分層網(wǎng)絡(luò)控制系統(tǒng)中,狀態(tài)共享接口123可以與狀態(tài)分發(fā)接口120(即,控制器-控制器接口)相同。在一些實(shí)施例中,當(dāng)控制器100通過API 105接收了輸入配置狀態(tài)(或接收了從主機(jī)向上發(fā)送的配置變化)時(shí),控制器100與其他控制器共享這個(gè)輸入狀態(tài)信息,使得其他控制器可以計(jì)算對于它們管理的邏輯轉(zhuǎn)發(fā)元件的輸出狀態(tài)。一些實(shí)施例共享輸入配置狀態(tài),但不共享輸出計(jì)算狀態(tài)。

現(xiàn)在將描述網(wǎng)絡(luò)控制器100的操作示例。在一些實(shí)施例中,用戶輸入對于邏輯網(wǎng)絡(luò)的配置,該配置可以包括連接到邏輯路由器的幾個(gè)邏輯交換機(jī)。每個(gè)邏輯交換機(jī)連接到邏輯路由器的邏輯端口,并且每個(gè)邏輯端口被分配了子網(wǎng)(即,網(wǎng)絡(luò)地址范圍)。此外,邏輯路由器端口中的至少一個(gè)端口連接到另一個(gè)邏輯路由器。邏輯控制器100通過輸入接口105接收配置數(shù)據(jù)(包括邏輯路由器之間的連接)。

基于接收到的配置數(shù)據(jù),輸入接口105將配置狀態(tài)存儲在狀態(tài)存儲器125中。對于邏輯路由器,輸入接口存儲(1)對于每個(gè)邏輯端口的連接路由,用于將具有在為邏輯端口指定的范圍內(nèi)的網(wǎng)絡(luò)地址的包路由到該邏輯端口,(2)在配置數(shù)據(jù)中單獨(dú)指定的任何靜態(tài)路由,以及(3)與其他邏輯路由器連接的指示。在一些實(shí)施例中,輸入接口105還自動定義低優(yōu)先級缺省路由,用以處理發(fā)送到其路由沒有被以其他方式定義的網(wǎng)絡(luò)地址的包。在其他實(shí)施例中,這樣的缺省路由僅由用戶輸入來定義。

當(dāng)檢測到存儲在狀態(tài)存儲器125中的配置狀態(tài)的變化時(shí),表映射引擎110開始產(chǎn)生用于分發(fā)到主機(jī)以便實(shí)現(xiàn)邏輯網(wǎng)絡(luò)的新的數(shù)據(jù)元組。為了實(shí)現(xiàn)邏輯路由器之間的連接,一些實(shí)施例的表映射引擎110基于對于連接邏輯路由器的輸入配置數(shù)據(jù)自動產(chǎn)生對于輸入邏輯路由器的動態(tài)路由。連接邏輯路由器存儲一組路由(例如,它自己的連接路由和靜態(tài)路由),該組路由可以通過控制器100輸入,或通過其他控制器135之一輸入并與控制器100共享。

表映射引擎110將這些路由傳播到輸入邏輯路由器,使用連接路由器端口的地址作為下一跳網(wǎng)絡(luò)地址。例如,如果連接邏輯路由器存儲了將特定子網(wǎng)內(nèi)的網(wǎng)絡(luò)地址路由到邏輯路由器的特定端口的連接路由,則表映射引擎110自動產(chǎn)生對于輸入邏輯路由器的新路由,該新路由指定連接邏輯路由器(即,連接邏輯路由器的特定邏輯端口的地址)作為特定子網(wǎng)中的網(wǎng)絡(luò)地址的下一跳。一些實(shí)施例還將一個(gè)邏輯路由的手動輸入的靜態(tài)路由傳播到另一個(gè)邏輯路由器。

同樣地,由表映射引擎110或不同網(wǎng)絡(luò)控制器135的表映射引擎將對于附連到輸入邏輯路由器的子網(wǎng)的連接路由以及輸入邏輯路由器的靜態(tài)路由動態(tài)地傳播到連接邏輯路由器,作為將輸入邏輯路由器指定為下一跳的動態(tài)路由。在一些實(shí)施例中,不同的邏輯路由器可以具有執(zhí)行對于邏輯路由器的狀態(tài)計(jì)算的不同的主網(wǎng)絡(luò)控制器。也就是說,對于特定邏輯轉(zhuǎn)發(fā)元件的主網(wǎng)絡(luò)控制器獲取對于邏輯轉(zhuǎn)發(fā)元件的輸入配置狀態(tài),并且產(chǎn)生輸出狀態(tài)(例如,用于實(shí)現(xiàn)邏輯轉(zhuǎn)發(fā)元件的流條目和/或其他數(shù)據(jù)元組)。因此,從第一邏輯路由器到第二邏輯路由器的路由的動態(tài)傳播可以由控制器100執(zhí)行,而從第二邏輯路由器到第一邏輯路由器的路由的傳播可以由其他控制器135之一執(zhí)行

對于供應(yīng)商邏輯路由器和租戶邏輯路由器的情況,一些實(shí)施例對在邏輯路由器之間動態(tài)地傳播的路由設(shè)置了限制。具體地,當(dāng)租戶邏輯路由器連接到供應(yīng)商邏輯路由器時(shí),一些實(shí)施例將租戶邏輯路由器的連接路由動態(tài)地傳播到供應(yīng)商邏輯路由器,使得供應(yīng)商邏輯路由器會將包發(fā)送到由連接路由指定給該租戶邏輯路由器的子網(wǎng)。但是,網(wǎng)絡(luò)控制器不是動態(tài)地傳播指定關(guān)于連接到供應(yīng)商邏輯路由器的各個(gè)其他租戶網(wǎng)絡(luò)的信息的路由,而是僅將動態(tài)缺省路由傳播到這樣的租戶邏輯路由器,該租戶邏輯路由器將沒有通過更具體的路由以其他方式進(jìn)行路由的所有包發(fā)送到供應(yīng)商邏輯路由器。

在控制器100的操作示例中,因?yàn)槎x了對于輸入邏輯路由器的動態(tài)路由(和/或靜態(tài)路由),表映射引擎110將路由遍歷分流到路由處理引擎115。具體地,表映射引擎110將輸入的一組路由(即,由配置狀態(tài)定義的那些路由,包括動態(tài)路由)發(fā)送到路由處理引擎120。

路由處理引擎115根據(jù)接收到的輸入的一組路由產(chǎn)生輸出的一組路由。具體地,路由處理引擎標(biāo)識未在使用中的路由(例如,對于相同的一組網(wǎng)絡(luò)地址,被較高優(yōu)先級的路由取代的較低優(yōu)先級的路由),并且遞歸地遍歷這一組路由以標(biāo)識對于每一組網(wǎng)絡(luò)地址的最終動作(例如,放棄包動作、向其發(fā)送包的最終輸出端口)。路由處理引擎115將最終路由信息返回到表映射引擎110。

表映射引擎110使用最終路由信息產(chǎn)生定義對于主機(jī)130的邏輯路由器的實(shí)現(xiàn)方式的流條目和/或數(shù)據(jù)元組。表映射引擎110將產(chǎn)生的這些數(shù)據(jù)元組提供到狀態(tài)分發(fā)接口120,用以分發(fā)到主機(jī)130(例如,直接分發(fā)到主機(jī)、通過分層網(wǎng)絡(luò)控制系統(tǒng)等)。

上述說明書介紹了一些實(shí)施例的用于管理具有靜態(tài)路由的邏輯路由器的網(wǎng)絡(luò)控制器。下面將描述幾個(gè)更具體的實(shí)施例。首先,部分I介紹了經(jīng)由一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)的邏輯網(wǎng)絡(luò)的實(shí)現(xiàn)和配置。然后,部分II介紹了一些實(shí)施例的不同類別的邏輯路由器,以及部分III介紹了一些實(shí)施例中的邏輯路由器之間的路由的動態(tài)傳播。最后,部分IV介紹了用以實(shí)現(xiàn)本發(fā)明的一些實(shí)施例的電子系統(tǒng)。

I.邏輯網(wǎng)絡(luò)的配置

在一些實(shí)施例中,網(wǎng)絡(luò)控制器(例如,上面通過參考圖1描述的控制器)是用來管理在受管理的物理網(wǎng)絡(luò)(例如,諸如企業(yè)站點(diǎn)的私人數(shù)據(jù)中心、公共數(shù)據(jù)中心等)中實(shí)現(xiàn)的許多邏輯網(wǎng)絡(luò)的網(wǎng)絡(luò)控制系統(tǒng)的一部分。在這樣的受管理的網(wǎng)絡(luò)中,不同的租戶配置不同的邏輯網(wǎng)絡(luò),其中網(wǎng)絡(luò)控制系統(tǒng)以虛擬化的方式實(shí)現(xiàn)在相同的物理網(wǎng)絡(luò)上,同時(shí)保持邏輯網(wǎng)絡(luò)之間的隔離。此外,一些這樣的受管理的網(wǎng)絡(luò)使用供應(yīng)商邏輯路由器來管理邏輯網(wǎng)絡(luò)中的虛擬機(jī)和外部主機(jī)(即,不是租戶邏輯網(wǎng)絡(luò)的一部分并且位于受管理的網(wǎng)絡(luò)之外的主機(jī))之間的連接。為了向這樣的外部主機(jī)發(fā)送流量和從這樣的外部主機(jī)接收流量,租戶將他們的邏輯網(wǎng)絡(luò)配置為連接到供應(yīng)商邏輯路由器。

圖2概念性地示出了對于兩個(gè)不同租戶的一組邏輯網(wǎng)絡(luò)結(jié)構(gòu)200和250的示例。第一邏輯網(wǎng)絡(luò)200包括兩個(gè)邏輯交換機(jī)205和210以及邏輯路由器215。邏輯交換機(jī)205和210中的每一個(gè)邏輯交換機(jī)連接幾個(gè)虛擬機(jī)(在這種情況下,通過每個(gè)邏輯交換機(jī)連接兩個(gè)虛擬機(jī)(VM),盡管很多網(wǎng)絡(luò)將具有更多的附連到每個(gè)邏輯交換機(jī)的VM),并且邏輯路由器215將兩個(gè)邏輯交換機(jī)(即,邏輯層2域)連接在一起。此外,邏輯路由器215將邏輯網(wǎng)絡(luò)200連接到數(shù)據(jù)中心供應(yīng)商邏輯路由器220。相似地,第二邏輯網(wǎng)絡(luò)250也包括連接兩個(gè)邏輯交換機(jī)255和260的邏輯路由器265。邏輯路由器265也連接到數(shù)據(jù)中心供應(yīng)商邏輯路由器220。

數(shù)據(jù)中心供應(yīng)商邏輯路由器220除了連接到邏輯路由器215和265之外,還包括連接到外部網(wǎng)絡(luò)225(或連接到分離的外部網(wǎng)絡(luò))的兩個(gè)端口。在各個(gè)示例中,數(shù)據(jù)中心供應(yīng)商邏輯路由器可以僅具有連接到外部網(wǎng)絡(luò)的一個(gè)端口或多個(gè)端口。

在一些實(shí)施例中,每個(gè)邏輯網(wǎng)絡(luò)是由管理員(例如,由每一個(gè)租戶)產(chǎn)生的網(wǎng)絡(luò)的抽象概念,并且邏輯網(wǎng)絡(luò)在受管理的物理基礎(chǔ)結(jié)構(gòu)(例如,在多租戶數(shù)據(jù)中心中)中以虛擬化的分布式的方式被實(shí)現(xiàn)。也就是說,連接到邏輯交換機(jī)的虛擬機(jī)可以駐留在基礎(chǔ)結(jié)構(gòu)中的各個(gè)不同主機(jī)上,以及在這些主機(jī)上操作的物理的受管理的轉(zhuǎn)發(fā)元件(例如,軟件虛擬交換機(jī))實(shí)現(xiàn)一些或全部邏輯轉(zhuǎn)發(fā)元件(邏輯交換機(jī)、邏輯路由器等)。因此,相同的主機(jī)可以托管來自邏輯網(wǎng)絡(luò)200和250兩者的VM,并且這些主機(jī)上的MFE將實(shí)現(xiàn)邏輯轉(zhuǎn)發(fā)元件205-215以及邏輯轉(zhuǎn)發(fā)元件255-265。

在一些實(shí)施例中,租戶邏輯路由器連接一組邏輯交換機(jī),虛擬機(jī)在邏輯上附連到該組邏輯交換機(jī)。每一個(gè)邏輯交換機(jī)(或邏輯交換機(jī)所附連到的邏輯路由器的每一個(gè)邏輯接口)代表了特定的一組IP地址(即,子網(wǎng)),并且被實(shí)現(xiàn)在跨一組受管理的轉(zhuǎn)發(fā)元件(MFE)的受管理的網(wǎng)絡(luò)中,其中虛擬機(jī)在物理上連接到(例如,通過虛擬接口)該組受管理的轉(zhuǎn)發(fā)元件。在一些實(shí)施例中,一些邏輯路由器以集中方式(例如,在一個(gè)或多個(gè)冗余網(wǎng)關(guān)中)實(shí)現(xiàn),而不是跨具有邏輯交換機(jī)的MFE分布。在其他實(shí)施例中,邏輯路由器同樣由連接到虛擬機(jī)的MFE以分布式的方式來實(shí)現(xiàn)。具體地,一些實(shí)施例需要租戶邏輯路由器和供應(yīng)商邏輯路由器兩者都以分布式的方式來實(shí)現(xiàn)。

對于也經(jīng)由一個(gè)或多個(gè)端口連接到外部網(wǎng)絡(luò)的供應(yīng)商邏輯路由器,通過使用一個(gè)或多個(gè)網(wǎng)關(guān)實(shí)現(xiàn)與外部網(wǎng)絡(luò)的連接。在一些實(shí)施例中,網(wǎng)關(guān)負(fù)責(zé)從受管理的網(wǎng)絡(luò)向外部不受管理的物理網(wǎng)絡(luò)發(fā)送數(shù)據(jù)流量,以及處理從外部網(wǎng)絡(luò)發(fā)送到受管理的網(wǎng)絡(luò)中的流量。

圖3概念性地示出了一些實(shí)施例的受管理的網(wǎng)絡(luò)300中的邏輯網(wǎng)絡(luò)200和250的實(shí)現(xiàn)方式。如圖所示,受管理的網(wǎng)絡(luò)300的物理基礎(chǔ)結(jié)構(gòu)包括用于托管虛擬機(jī)的四個(gè)主機(jī)305-320、和用于托管L3網(wǎng)關(guān)的兩個(gè)網(wǎng)關(guān)主機(jī)325-330。邏輯網(wǎng)絡(luò)200和250的VM駐留在主機(jī)305-320上,被實(shí)現(xiàn)在主機(jī)中操作的虛擬化軟件(例如,管理器(hypervisor)、虛擬機(jī)監(jiān)控器等)之上。連接到其他邏輯網(wǎng)絡(luò)的附加虛擬機(jī)也可以駐留在受管理的網(wǎng)絡(luò)的物理基礎(chǔ)結(jié)構(gòu)中的這些主機(jī)305-320中的一些或全部主機(jī)上,也可以駐留在圖中未示出的其他主機(jī)上。

除了虛擬機(jī)外,主機(jī)305-320中的每一個(gè)主機(jī)操作受管理的轉(zhuǎn)發(fā)元件(MFE)335-350。在一些實(shí)施例中,該MFE是在主機(jī)的虛擬化軟件中操作的軟件虛擬交換機(jī)(例如,Open vSwitch或其他軟件轉(zhuǎn)發(fā)元件)。因?yàn)檫壿嬄酚善?15、220和265是分布式的,MFE 335-350實(shí)現(xiàn)邏輯交換機(jī)205、210、255和260以及邏輯路由器215、220和265。

如圖所示,因?yàn)閬碜赃壿嬀W(wǎng)絡(luò)200和250的VM駐留在第一主機(jī)305上,MFE 355實(shí)現(xiàn)(i)這些VM所連接到的邏輯交換機(jī)、(ii)這兩個(gè)邏輯網(wǎng)絡(luò)的其他邏輯交換機(jī)、(iii)這兩個(gè)邏輯網(wǎng)絡(luò)的邏輯路由器、以及(iv)供應(yīng)商邏輯路由器。另一方面,第二主機(jī)310僅托管來自第一邏輯網(wǎng)絡(luò)200的VM,并且因此MFE 340實(shí)現(xiàn)這個(gè)邏輯網(wǎng)絡(luò)的邏輯轉(zhuǎn)發(fā)元件205-215和供應(yīng)商邏輯路由器220。在一些實(shí)施例中,在主機(jī)處的MFE中實(shí)現(xiàn)所有這些邏輯轉(zhuǎn)發(fā)元件使得能夠進(jìn)行第一跳處理,在該第一跳處理中,對于包的大多數(shù)或所有邏輯轉(zhuǎn)發(fā)元件處理在接收該包的第一MFE處被執(zhí)行。因此,從VM 1發(fā)送到VM 3的包將通過邏輯交換機(jī)205到邏輯路由器215到邏輯交換機(jī)210,在MFE 355處被處理。MFE 335將對于包的邏輯交換機(jī)210的邏輯出口端口標(biāo)識為VM 3所附連到的端口,并且將該出口端口映射到至主機(jī)315處的MFE 345的隧道。對于從邏輯網(wǎng)絡(luò)200中的VM 1發(fā)送到邏輯網(wǎng)絡(luò)250(其中發(fā)送者可能沒有意識到是在被托管在相同的虛擬化基礎(chǔ)結(jié)構(gòu)上的邏輯網(wǎng)絡(luò)中)中的VM 7的包,MFE 355將處理通過邏輯交換機(jī)205到邏輯路由器215到供應(yīng)商邏輯路由器220、然后通過邏輯路由器265進(jìn)入邏輯網(wǎng)絡(luò)250以及接下來進(jìn)入邏輯交換機(jī)260的包,這個(gè)時(shí)候該包將被通過隧道發(fā)送到MFE 350。

對于發(fā)送到外部目的地的流量(即,不在邏輯網(wǎng)絡(luò)200或250中),MFE將邏輯路由器的邏輯出口端口標(biāo)識為連接到外部網(wǎng)絡(luò)220的端口之一。然后,MFE依賴于外部目的地映射到哪個(gè)端口(即,依賴于供應(yīng)商邏輯路由器220的路由表),將該流量發(fā)送到網(wǎng)關(guān)主機(jī)325或330之一。在一些實(shí)施例中,網(wǎng)關(guān)主機(jī)325和330中的每一個(gè)均托管具有存儲路由表(以及,例如,剩余的網(wǎng)絡(luò)堆棧)能力的虛擬化容器(例如,名稱空間)355和360。這些虛擬化容器各自對應(yīng)于連接到外部網(wǎng)絡(luò)的供應(yīng)商邏輯路由器的特定端口,處理經(jīng)由那個(gè)端口發(fā)出到受管理網(wǎng)絡(luò)之外的流量或經(jīng)由那個(gè)端口進(jìn)入網(wǎng)絡(luò)的流量。

此外,虛擬化容器355和360中的每一個(gè)操作路由通告應(yīng)用(例如,BGP守護(hù)進(jìn)程)。一些實(shí)施例的路由通告應(yīng)用使用動態(tài)路由協(xié)議向外部路由器(即,對于連接到供應(yīng)商邏輯路由器的租戶邏輯路由器的邏輯端口的子網(wǎng))通告路由,以便吸引對于由那些路由指定的網(wǎng)絡(luò)地址的流量。在2014年3月14日提交的美國專利申請14/214,545中更加詳細(xì)地描述了一些實(shí)施例的路由通告應(yīng)用,其全部內(nèi)容通過引用合并于此。

在一些實(shí)施例中,網(wǎng)關(guān)主機(jī)325和330也操作MFE 365和370。這些MFE對于在網(wǎng)關(guān)處接收到的來自外部網(wǎng)絡(luò)220的包執(zhí)行第一跳處理。例如,當(dāng)接收到來自物理路由器的包時(shí),MFE首先基于包的目的地MAC地址,將包發(fā)送到合適的名稱空間(因?yàn)槎鄠€(gè)邏輯路由器可以具有在網(wǎng)關(guān)主機(jī)上操作的網(wǎng)關(guān)),該名稱空間執(zhí)行包的進(jìn)入處理并且將包發(fā)送回到MFE。在這個(gè)時(shí)候,包進(jìn)入邏輯網(wǎng)絡(luò),并且MFE執(zhí)行邏輯網(wǎng)絡(luò)處理(通過供應(yīng)商邏輯路由器、適合的租戶邏輯路由器和適合的邏輯交換機(jī),以便標(biāo)識目的地邏輯出口端口),然后通過隧道將包發(fā)送到適合的MFE以傳遞到目的地VM。

如上所述,在一些實(shí)施例中,這些MFE和網(wǎng)關(guān)是由網(wǎng)絡(luò)控制系統(tǒng)來配置的。網(wǎng)絡(luò)控制系統(tǒng)中的一個(gè)或多個(gè)網(wǎng)絡(luò)控制器接收由用戶/管理員輸入的網(wǎng)絡(luò)配置并且將這個(gè)信息轉(zhuǎn)化為可以被MFE和網(wǎng)關(guān)主機(jī)使用的流條目和數(shù)據(jù)元組,以及將數(shù)據(jù)元組分發(fā)到主機(jī)。

圖4概念性地示出了一些實(shí)施例的用于配置受管理的轉(zhuǎn)發(fā)元件和L3網(wǎng)關(guān)以便實(shí)現(xiàn)邏輯網(wǎng)絡(luò)的這樣的網(wǎng)絡(luò)控制系統(tǒng)400。如圖所示,邏輯控制系統(tǒng)400包括輸入轉(zhuǎn)換控制器405、邏輯控制器410、物理控制器415和420、主機(jī)425-440和網(wǎng)關(guān)主機(jī)445。如圖所示,主機(jī)425-440和網(wǎng)關(guān)主機(jī)445包括可以實(shí)現(xiàn)如上述圖所示的邏輯轉(zhuǎn)發(fā)元件的受管理的轉(zhuǎn)發(fā)元件。網(wǎng)關(guān)主機(jī)445還包括名稱空間,該名稱空間實(shí)現(xiàn)用于受管理的網(wǎng)絡(luò)的邏輯路由器的路由表的至少一部分。本領(lǐng)域技術(shù)人員將認(rèn)識到,各種控制器和主機(jī)的很多其他不同組合對于網(wǎng)絡(luò)控制系統(tǒng)400是可能的。

在一些實(shí)施例中,網(wǎng)絡(luò)控制系統(tǒng)中的每一個(gè)控制器是具有用作輸入轉(zhuǎn)換控制器、邏輯控制器和/或物理控制器的功能的計(jì)算機(jī)(例如,具有基于x86的處理器)。替代地,在一些實(shí)施例中,一個(gè)給定的控制器可能只具有作為控制器類型中的特定一種類型操作的功能(例如,作為物理控制器)。此外,控制器的不同組合可以運(yùn)行在相同物理機(jī)器中。例如,輸入轉(zhuǎn)換控制器405和邏輯控制器410可以在相同的計(jì)算設(shè)備中運(yùn)行,數(shù)據(jù)中心管理應(yīng)用與該計(jì)算設(shè)備交互(或管理員與該計(jì)算設(shè)備直接交互)。

一些實(shí)施例的輸入轉(zhuǎn)換控制器405包括轉(zhuǎn)換從用戶接收到的網(wǎng)絡(luò)配置信息的輸入轉(zhuǎn)換應(yīng)用。雖然在圖4中示出了接收直接來自用戶的信息,但在一些實(shí)施例中,用戶與數(shù)據(jù)中心管理應(yīng)用交互,該數(shù)據(jù)中心管理應(yīng)用又將網(wǎng)絡(luò)配置信息傳送到輸入轉(zhuǎn)換控制器。

例如,用戶可以指定諸如圖2中示出的邏輯網(wǎng)絡(luò)200或250的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。對于每一個(gè)邏輯交換機(jī),用戶指定連接到邏輯交換機(jī)的機(jī)器(即,將VM分配到邏輯交換機(jī)的哪個(gè)邏輯端口)。用戶還可以指定哪個(gè)邏輯交換機(jī)附連到到任何邏輯路由器、用于連接到外部網(wǎng)絡(luò)或連接到其他邏輯路由器(例如,連接到供應(yīng)商邏輯路由器)的邏輯路由器的一個(gè)或多個(gè)邏輯端口、和邏輯路由器的任何配置細(xì)節(jié)。例如,一些實(shí)施例使得用戶能夠指定對于邏輯路由器的策略。在一些實(shí)施例中,輸入轉(zhuǎn)換控制器405將接收到的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)轉(zhuǎn)換成將網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)描述為一組數(shù)據(jù)元組的邏輯控制面數(shù)據(jù)。例如,條目可以說明特定的MAC地址A位于特定的邏輯交換機(jī)的第一邏輯端口X處、租戶邏輯路由器Q位于特定的邏輯交換機(jī)的第二邏輯端口Y處、或租戶邏輯路由器Q的邏輯端口G連接到供應(yīng)商邏輯路由器。

在一些實(shí)施例中,每個(gè)邏輯轉(zhuǎn)發(fā)元件(例如,每個(gè)邏輯路由器、邏輯交換機(jī)等)由特定邏輯控制器(例如,邏輯控制器410)管理。一些實(shí)施例的邏輯控制器410將定義邏輯網(wǎng)絡(luò)和組成邏輯網(wǎng)絡(luò)的邏輯轉(zhuǎn)發(fā)元件(例如,邏輯路由器、邏輯交換機(jī))的邏輯控制面數(shù)據(jù)轉(zhuǎn)換為邏輯轉(zhuǎn)發(fā)面數(shù)據(jù),并且將邏輯轉(zhuǎn)發(fā)面數(shù)據(jù)轉(zhuǎn)換為物理控制面數(shù)據(jù)。在一些實(shí)施例中,邏輯轉(zhuǎn)發(fā)面數(shù)據(jù)包括在邏輯層次描述的流條目。對于在邏輯端口X處的MAC地址A,邏輯轉(zhuǎn)發(fā)面數(shù)據(jù)可以包括這樣的流條目,該流條目指定:如果包的目的地匹配MAC A,則將包轉(zhuǎn)發(fā)到端口X。邏輯路由器Q的端口也具有MAC地址,并且創(chuàng)建相似的流條目以用于將具有這個(gè)MAC地址的包轉(zhuǎn)發(fā)到邏輯交換機(jī)的端口Y。相似地,對于具有與IP地址范圍C1-C24相關(guān)聯(lián)的端口K的邏輯路由器,邏輯轉(zhuǎn)發(fā)面數(shù)據(jù)可以包括這樣的流條目,該流條目指定:如果包的目的地匹配IP C1-C24,則將該包轉(zhuǎn)發(fā)到端口K。

在一些實(shí)施例中,邏輯控制器將邏輯轉(zhuǎn)發(fā)面數(shù)據(jù)轉(zhuǎn)換為通用物理控制面數(shù)據(jù)。盡管當(dāng)網(wǎng)絡(luò)包括大量的受管理的轉(zhuǎn)發(fā)元件(例如,幾百個(gè)或幾千個(gè))以實(shí)現(xiàn)邏輯轉(zhuǎn)發(fā)元件時(shí),以及當(dāng)網(wǎng)絡(luò)實(shí)現(xiàn)了大量的邏輯網(wǎng)絡(luò)時(shí),通用物理控制面數(shù)據(jù)使得一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)能夠縮放(scale)。為了在不考慮MFE的差別和/或MFE的位置細(xì)節(jié)的情況下表示物理控制平面數(shù)據(jù),通用物理控制面對不同MFE的共同特點(diǎn)進(jìn)行了抽象。

如上所述,一些實(shí)施例的邏輯控制器410將邏輯控制面數(shù)據(jù)轉(zhuǎn)換為邏輯轉(zhuǎn)發(fā)面數(shù)據(jù)(例如,包括對邏輯網(wǎng)絡(luò)參數(shù)(諸如邏輯地址、邏輯入口端口等)的匹配的邏輯流條目),然后將邏輯轉(zhuǎn)發(fā)面數(shù)據(jù)轉(zhuǎn)換成通用物理控制面數(shù)據(jù)。在一些實(shí)施例中,邏輯控制器應(yīng)用棧包括用于執(zhí)行第一轉(zhuǎn)換的控制應(yīng)用和用于執(zhí)行第二轉(zhuǎn)換的虛擬化應(yīng)用。在一些實(shí)施例中,這兩個(gè)應(yīng)用均使用用于將第一組表映射到第二組表的規(guī)則引擎。也就是說,不用的數(shù)據(jù)面被表示為表(例如,nLog表),并且控制器應(yīng)用使用表映射引擎(例如,nLog引擎)在面之間進(jìn)行轉(zhuǎn)換(例如,通過對表應(yīng)用連接操作)。在一些實(shí)施例中,輸入表和輸出表存儲了定義不同數(shù)據(jù)面的多組數(shù)據(jù)元組。

在一些實(shí)施例中,邏輯路由器處理需要優(yōu)選地不是由表映射引擎執(zhí)行的各種類型的錯誤檢測和遞歸路由遍歷處理。具體地,對于邏輯路由器的配置數(shù)據(jù)包括必須被縮窄到一組輸出路由的一組輸入路由(類似于物理路由器的路由信息庫),該組輸出路由用來實(shí)現(xiàn)邏輯路由器的路由表(類似于物理路由器的轉(zhuǎn)發(fā)信息庫)。在一些實(shí)施例中,這一組輸出路由是邏輯控制面數(shù)據(jù)的一部分。為了產(chǎn)生對于邏輯路由器的這個(gè)邏輯控制面數(shù)據(jù),一些實(shí)施例的表映射引擎將路由處理分流給邏輯控制器中的單獨(dú)的模塊,該模塊以更適合于這樣的遞歸動作和錯誤檢測/產(chǎn)生動作的語言來實(shí)現(xiàn)。路由處理引擎返回一組輸出路由,表映射引擎將該組輸出路由合并到其邏輯轉(zhuǎn)發(fā)面條目的產(chǎn)生中。

物理控制器415和420中的每一個(gè)是一個(gè)或多個(gè)受管理的轉(zhuǎn)發(fā)元件的主控器(例如,位于主機(jī)內(nèi))。在該示例中,兩個(gè)物理控制器中的每一個(gè)是位于VM主機(jī)425-440處的兩個(gè)受管理的轉(zhuǎn)發(fā)元件的主控器。另外,物理控制器415是兩個(gè)網(wǎng)關(guān)主機(jī)445和450的主控器,該網(wǎng)關(guān)主機(jī)托管了MFE和對于特定邏輯網(wǎng)絡(luò)的活動的和備用的邏輯路由器。在一些實(shí)施例中,對于邏輯路由器的活動的和備用的主機(jī)由相同的物理控制器管理(如該圖中一樣),而在其他實(shí)施例中,單獨(dú)的物理控制器管理邏輯網(wǎng)絡(luò)的不同的網(wǎng)關(guān)主機(jī)。

在一些實(shí)施例中,物理控制器接收對于邏輯網(wǎng)絡(luò)的通用物理控制面數(shù)據(jù),并且將該數(shù)據(jù)轉(zhuǎn)換為對于特定MFE的定制物理控制面數(shù)據(jù),該特定MFE由物理控制器管理并且需要對于特定邏輯網(wǎng)絡(luò)的數(shù)據(jù)。在其他實(shí)施例中,物理控制器將適合的通用物理控制面數(shù)據(jù)傳遞至MFE,該MFE具有自己執(zhí)行該轉(zhuǎn)換的能力(例如,以運(yùn)行在主機(jī)上的機(jī)箱控制器的形式)。

通用物理控制面到定制物理控制面的轉(zhuǎn)換包括對流條目中的各種數(shù)據(jù)的定制化。對于上述第一個(gè)示例,通用物理控制面將包括幾個(gè)流條目(即,幾個(gè)數(shù)據(jù)元組)。第一個(gè)條目說明了如果包與特定的邏輯數(shù)據(jù)路徑組匹配(例如,基于在特定物理入口端口處接收的包),并且目的地地址匹配MAC A,則將包轉(zhuǎn)發(fā)到邏輯端口X。在一些實(shí)施例中,這個(gè)條目在通用物理控制面和定制物理控制面中是相同的。產(chǎn)生附加的條目以匹配物理入口端口(例如,主機(jī)的虛擬接口)與邏輯入口端口X(對于從VM接收的具有MAC A的包),以及匹配目的地邏輯端口X與物理MFE的物理出口端口(例如,還是主機(jī)的虛擬接口)。但是,這些物理的入口端口和出口端口對于MFE在其上操作的主機(jī)來說是特定的。因此,通用物理控制面條目包括抽象的物理端口,而定制物理控制面條目包括特定MFE的實(shí)際物理接口(在很多情況下是虛擬接口)。

在一些實(shí)施例中,如圖所示,網(wǎng)關(guān)主機(jī)也操作受管理的轉(zhuǎn)發(fā)元件(例如,使用與VM主機(jī)425相同的包處理/虛擬交換軟件)。這些MFE也接收使得MFE能夠?qū)崿F(xiàn)邏輯轉(zhuǎn)發(fā)元件的來自物理控制器的物理控制面數(shù)據(jù)。此外,一些實(shí)施例通過分層網(wǎng)絡(luò)控制系統(tǒng)將路由表數(shù)據(jù)分發(fā)到在網(wǎng)關(guān)主機(jī)中操作的名稱空間。在一些實(shí)施例中,管理邏輯網(wǎng)絡(luò)的邏輯控制器410選擇對于邏輯路由器的網(wǎng)關(guān)主機(jī)(例如,使用負(fù)載均衡算法,該負(fù)載均衡算法跨一組主機(jī)散布對于各種邏輯網(wǎng)絡(luò)的邏輯路由器)。

邏輯控制器410標(biāo)識管理所選擇的網(wǎng)關(guān)主機(jī)的物理控制器415,并且將路由表(以及用于層3處理的任何其他信息(諸如防火墻信息,NAT等))分發(fā)到所標(biāo)識的物理控制器。在一些實(shí)施例中,將路由表作為一組數(shù)據(jù)元組進(jìn)行分發(fā)。然后,物理控制器415將這些數(shù)據(jù)元組分發(fā)到網(wǎng)關(guān)主機(jī)445。網(wǎng)關(guān)主機(jī)將這些數(shù)據(jù)元組轉(zhuǎn)換為供容器(例如,VM、名稱空間)使用的路由表,該容器在網(wǎng)關(guān)主機(jī)上作為邏輯路由器或L3網(wǎng)關(guān)操作。

上面描述了一些實(shí)施例的分層網(wǎng)絡(luò)控制系統(tǒng),盡管其他實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)僅包括單個(gè)控制器(或具有一個(gè)活動控制器和一個(gè)或多個(gè)備用控制器的控制器集群)。一些其他實(shí)施例包括網(wǎng)絡(luò)控制器集群,該網(wǎng)絡(luò)控制器集群與分配給主控制器的每一個(gè)邏輯轉(zhuǎn)發(fā)元件或邏輯轉(zhuǎn)發(fā)網(wǎng)絡(luò)以及分配給主控制器的每一個(gè)受管理的轉(zhuǎn)發(fā)元件一起操作,但是不具有圖4中所示的分層布置。

圖5概念性地示出了數(shù)據(jù)通過一些實(shí)施例的分層網(wǎng)絡(luò)控制系統(tǒng)的傳播。該圖的左側(cè)示出了到受管理的轉(zhuǎn)發(fā)元件的數(shù)據(jù)流以實(shí)現(xiàn)邏輯網(wǎng)絡(luò)的邏輯轉(zhuǎn)發(fā)元件(例如,邏輯交換機(jī)、租戶邏輯路由器和供應(yīng)商邏輯路由器),而圖的右側(cè)示出了向網(wǎng)關(guān)主機(jī)傳播路由表數(shù)據(jù)以便配置在網(wǎng)關(guān)主機(jī)(例如,對于供應(yīng)商邏輯路由器)上作為L3網(wǎng)關(guān)操作的虛擬化容器(例如,名稱空間)。

在左側(cè),輸入轉(zhuǎn)換控制器405通過API接收網(wǎng)絡(luò)配置,該網(wǎng)絡(luò)配置被轉(zhuǎn)化為邏輯控制面數(shù)據(jù)。這個(gè)網(wǎng)絡(luò)配置數(shù)據(jù)包括邏輯拓?fù)浣Y(jié)構(gòu)(諸如圖2中示出的用于邏輯網(wǎng)絡(luò)200的邏輯拓?fù)浣Y(jié)構(gòu))。在一些實(shí)施例中,網(wǎng)絡(luò)配置還可以包括用于邏輯路由器的一個(gè)或多個(gè)靜態(tài)路由的規(guī)格,以及一個(gè)邏輯路由器與另一個(gè)邏輯路由的連接(例如,租戶邏輯路由器到供應(yīng)商邏輯路由器的連接)。網(wǎng)絡(luò)配置指定了邏輯轉(zhuǎn)發(fā)元件的各個(gè)端口。在一些實(shí)施例中,每一個(gè)邏輯交換機(jī)端口被分配了MAC地址和IP地址,每一個(gè)邏輯路由器端口被分配了MAC地址和IP地址,并且與特定子網(wǎng)相關(guān)聯(lián)(IP地址屬于該子網(wǎng))。一些實(shí)施例要求相互連接的兩個(gè)邏輯路由器端口必須與至少閾值特性的相同的子網(wǎng)相關(guān)聯(lián)。

如圖所示,邏輯控制面數(shù)據(jù)被邏輯控制器410(具體地,被邏輯控制器的控制應(yīng)用)轉(zhuǎn)化為邏輯轉(zhuǎn)發(fā)面數(shù)據(jù),并且接下來隨后(被邏輯控制器的虛擬化應(yīng)用)轉(zhuǎn)化為通用物理控制面數(shù)據(jù)。在一些實(shí)施例中,這些轉(zhuǎn)化在邏輯轉(zhuǎn)發(fā)面處產(chǎn)生流條目(或定義流條目的數(shù)據(jù)元組),然后在通用物理控制面處增加對邏輯數(shù)據(jù)路徑組(例如,邏輯交換機(jī)或邏輯路由器)的匹配。通用物理控制面還包括用于將通用物理入口端口(即,不是特定于任何特定MFE的端口的通用抽象)映射到邏輯入口端口和用于將邏輯出口端口映射到通用物理出口端口的附加流條目(或數(shù)據(jù)元組)。例如,為了將包轉(zhuǎn)發(fā)到邏輯路由器,在通用物理控制面處的對于邏輯交換機(jī)的流條目將包括轉(zhuǎn)發(fā)決定,該轉(zhuǎn)發(fā)決定是當(dāng)目的地MAC地址與邏輯路由器端口的MAC地址匹配時(shí),將包發(fā)送到邏輯路由器所連接到的邏輯端口。

與先前段落中對于邏輯交換機(jī)的示例類似,邏輯路由器流條目基于對以下各項(xiàng)的匹配來標(biāo)識邏輯出口端口:(1)邏輯路由器流水線(即,包已被轉(zhuǎn)發(fā)到邏輯路由器)以及(ii)IP地址。在一些實(shí)施例中,基于在邏輯控制器處產(chǎn)生的對于邏輯路由器的路由表將IP地址映射到邏輯端口。對于轉(zhuǎn)發(fā)到面向外部網(wǎng)絡(luò)的邏輯路由器端口(例如,供應(yīng)商邏輯路由器的端口)的包,通用物理控制面額外地包括用于將邏輯出口端口映射到目的地網(wǎng)關(guān)以及將包封裝在至網(wǎng)關(guān)主機(jī)的隧道中的條目。

如圖所示,物理控制器415(分層網(wǎng)絡(luò)控制系統(tǒng)400中的幾個(gè)物理控制器之一)將通用物理控制面數(shù)據(jù)轉(zhuǎn)換為對于特定MFE的定制物理控制面數(shù)據(jù),其中該物理控制器在主機(jī)425、430、445和450處管理這些特定MFE。這個(gè)轉(zhuǎn)換包括在通用物理控制面數(shù)據(jù)中代入對于通用抽象的特定數(shù)據(jù)(例如,特定物理端口)。例如,在上述段落的示例中,端口集成條目被配置為指定適合于特定L3網(wǎng)關(guān)連接的物理層端口(例如,對于MFE在其上操作的特定主機(jī)的實(shí)際物理端口和隧道封裝信息)。

在一些實(shí)施例中,在主機(jī)425處的MFE(由物理控制器415管理的幾個(gè)MFE之一)執(zhí)行將定制物理控制面數(shù)據(jù)轉(zhuǎn)換為物理轉(zhuǎn)發(fā)面數(shù)據(jù)。在一些實(shí)施例中,物理轉(zhuǎn)發(fā)面數(shù)據(jù)是存儲在MFE(例如,在諸如Open vSwitch的軟件虛擬交換機(jī)中)中的流條目,該MFE針對這些流條目實(shí)際匹配所接收到的包。另外,為了在名稱空間和其他網(wǎng)絡(luò)實(shí)體(例如,VM)之間轉(zhuǎn)發(fā)包,網(wǎng)關(guān)主機(jī)445處的MFE執(zhí)行這樣的轉(zhuǎn)換。

圖5的右側(cè)示出了向網(wǎng)關(guān)主機(jī)(例如,主機(jī)445)而不是向MFE傳播的數(shù)據(jù)以實(shí)現(xiàn)邏輯路由器(集中式邏輯路由器或?qū)τ诜植际竭壿嬄酚善鞯腖3網(wǎng)關(guān))。如圖所示,邏輯控制器410接收輸入的一組路由,產(chǎn)生輸出的一組路由,并且然后將輸出的該組路由轉(zhuǎn)換為來自這些路由的數(shù)據(jù)元組。

在一些實(shí)施例中,由來自用戶(例如,管理員)輸入的網(wǎng)絡(luò)配置的輸入轉(zhuǎn)換控制器或邏輯控制器來產(chǎn)生輸入的該組路由。當(dāng)用戶設(shè)計(jì)了邏輯網(wǎng)絡(luò)(諸如,網(wǎng)絡(luò)200)時(shí),每一個(gè)邏輯交換機(jī)具有相關(guān)聯(lián)的IP子網(wǎng)。因此,邏輯控制器對附連到邏輯交換機(jī)的這些邏輯路由器端口中的每一個(gè)端口產(chǎn)生路由(例如,如果IP=10.0.0.0/24,則發(fā)送到端口J)。此外,當(dāng)租戶邏輯路由器連接到供應(yīng)商邏輯路由器時(shí),當(dāng)包與任何其他路由均不匹配時(shí),一些實(shí)施例的邏輯控制器產(chǎn)生低優(yōu)先級缺省路由以將包發(fā)送到供應(yīng)商邏輯路由器。對于供應(yīng)商邏輯路由器,當(dāng)包與任何其他路由均不匹配時(shí),一些實(shí)施例的邏輯控制器產(chǎn)生低優(yōu)先級缺省路由以將包發(fā)送到連接到外部網(wǎng)絡(luò)的端口之一。在一些實(shí)施例中,邏輯控制器可以具有標(biāo)識外部網(wǎng)絡(luò)中的物理路由器的數(shù)據(jù),使得缺省路由將包發(fā)送到所標(biāo)識的路由器。

此外,在一些實(shí)施例中,當(dāng)?shù)谝贿壿嬄酚善鬟B接到第二邏輯路由器時(shí),管理第一邏輯路由器的邏輯控制器產(chǎn)生對于第一邏輯路由器的動態(tài)路由。在一些實(shí)施例中,對于第二路由器的每一個(gè)連接路由,第一邏輯路由器的主控制器產(chǎn)生這樣的動態(tài)路由,該動態(tài)路指定第一邏輯路由器將具有與連接路由的前綴匹配的目的地地址的包邏輯地轉(zhuǎn)發(fā)到第二邏輯路由器。一些實(shí)施例也以相似的方式傳播連接路由。在租戶邏輯路由器(TLR)連接到供應(yīng)商邏輯路由器(PLR)的特定情況下,一些實(shí)施例將對于邏輯交換機(jī)所附連到的每一個(gè)端口的TLR的連接路由動態(tài)地傳播到PLR。但是,為了保持可能附連到PLR的多個(gè)邏輯網(wǎng)絡(luò)之間的隔離,不將PLR路由傳播到TLR。替代地,只有動態(tài)缺省路由被傳播到TLR,該動態(tài)缺省路由將全部未以其他方式路由的包發(fā)送到PLR。

在計(jì)算對于邏輯路由器的流條目或路由數(shù)據(jù)元組前,一些實(shí)施例的邏輯控制器基于輸入的一組路由產(chǎn)生輸出的一組路由。在一些實(shí)施例中,路由控制器中的路由處理器遞歸地遍歷所輸入的該組路由以標(biāo)識對于每組網(wǎng)絡(luò)地址的最終輸出動作。

對于分布式邏輯路由器,輸出的該組路由中的許多被指定為邏輯控制面數(shù)據(jù)的一部分,并且被轉(zhuǎn)換為物理控制面數(shù)據(jù)(如圖5的左側(cè)所示)。在這種情況下,用于分發(fā)到L3網(wǎng)關(guān)的路由數(shù)據(jù)元組還將包括到外部物理路由器的路由、和用于處理經(jīng)由與這些外部路由器的連接接收到的輸入包的路由。

除了這些路由自身,邏輯控制器410還產(chǎn)生定義邏輯路由器的一組數(shù)據(jù)元組。例如,當(dāng)創(chuàng)建邏輯路由器時(shí),一些實(shí)施例的邏輯控制器選擇至少一個(gè)網(wǎng)關(guān)主機(jī),然后創(chuàng)建新數(shù)據(jù)元組(即,記錄),該新數(shù)據(jù)元組指定對于邏輯路由器的在主機(jī)上的新名稱空間(或其他容器)。此外,一些實(shí)施例在數(shù)據(jù)元組中指定對于名稱空間啟用路由(相對于或者附加于諸如DHCP的其他服務(wù))。

一旦邏輯控制器410創(chuàng)建了數(shù)據(jù)元組并且標(biāo)識了將要接收數(shù)據(jù)元組的網(wǎng)關(guān)主機(jī)(或主機(jī)),則邏輯控制器標(biāo)識管理網(wǎng)關(guān)主機(jī)的物理控制器。如上所述,像VM主機(jī)425-440一樣,每一個(gè)網(wǎng)關(guān)主機(jī)具有所分配的主物理控制器。在圖4的示例中,網(wǎng)關(guān)主機(jī)由物理控制器415管理,因此其他物理控制器420不接收邏輯路由器數(shù)據(jù)元組。為了將邏輯路由器配置數(shù)據(jù)供應(yīng)給網(wǎng)關(guān)主機(jī),一些實(shí)施例的邏輯控制器410將數(shù)據(jù)推送到物理控制器415。在其他實(shí)施例中,物理控制器請求來自邏輯控制器的配置數(shù)據(jù)(例如,響應(yīng)于配置信息可用的信號)。

物理控制器415將數(shù)據(jù)傳遞到網(wǎng)關(guān)主機(jī)445,與其傳遞物理控制面數(shù)據(jù)幾乎一樣。在一些實(shí)施例中,路由數(shù)據(jù)元組被發(fā)送到作為與MFE相關(guān)聯(lián)的軟件的一部分的運(yùn)行在主機(jī)上的數(shù)據(jù)庫,并且被用于配置MFE的特定方面(例如,MFE的端口信息和其他非流條目配置信息)。一些實(shí)施例使用第一協(xié)議(例如,OpenFlow)將對于MFE的流條目傳遞到主機(jī),而使用第二協(xié)議(例如,OVSDB)將配置和路由表數(shù)據(jù)傳遞到主機(jī)。實(shí)現(xiàn)邏輯路由器的名稱空間和其他容器從其主機(jī)上的數(shù)據(jù)庫中檢索適合的信息,或具有傳遞給它的適合的信息。在一些實(shí)施例中,網(wǎng)關(guān)主機(jī)445上的處理將存儲在數(shù)據(jù)庫中的數(shù)據(jù)元組轉(zhuǎn)換為對于名稱空間的路由表和其他網(wǎng)絡(luò)棧數(shù)據(jù)(例如,標(biāo)準(zhǔn)Linux網(wǎng)絡(luò)棧,包括路由表)。

上述說明書描述了由網(wǎng)絡(luò)控制系統(tǒng)進(jìn)行的從網(wǎng)絡(luò)配置到一組物理轉(zhuǎn)發(fā)面流條目的轉(zhuǎn)換,該組物理轉(zhuǎn)發(fā)面流條目被物理控制器傳遞到主機(jī)(例如,經(jīng)由諸如OpenFlow的協(xié)議)。但是,在其他實(shí)施例中,用于定義流條目的數(shù)據(jù)以其他形式被傳遞,諸如更抽象的數(shù)據(jù)元組,并且MFE或在主機(jī)上與MFE一起運(yùn)行的處理將這些數(shù)據(jù)元組轉(zhuǎn)換為流條目,以在處理數(shù)據(jù)流量時(shí)使用。

II、不同類型的邏輯路由器的連接

如上文指示的,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)(例如,網(wǎng)絡(luò)控制器)啟用不同類型的邏輯路由器的連接。這些不同類型的邏輯路由器可以在一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)中被定義為不同類的對象,或具有對于路由器類型參數(shù)的不同值的同一類對象。在一些實(shí)施例中,不同類型的邏輯路由器被分層布置。例如,一些實(shí)施例包括邏輯交換機(jī)可以附連到的第一類型的邏輯路由器、和可以連接到外部物理網(wǎng)絡(luò)的第二類型的邏輯路由器。此外,一些實(shí)施例可以包括一個(gè)或多個(gè)其他類型的邏輯路由器(例如,用于布置在這前兩個(gè)邏輯路由器類型之間)。

在一些實(shí)施例中,網(wǎng)絡(luò)控制系統(tǒng)提供租戶邏輯路由器和供應(yīng)商邏輯路由器的選項(xiàng)。TLR是作為租戶邏輯網(wǎng)絡(luò)的一部分的那些路由器,其中“擁有”邏輯網(wǎng)絡(luò)的租戶可以將邏輯交換機(jī)附連到該租戶邏輯網(wǎng)絡(luò)(經(jīng)由網(wǎng)絡(luò)控制系統(tǒng)接口)。在一些實(shí)施例中,TLR可以不具有網(wǎng)關(guān)端口;也就是說,他們不可以直接附連到外部網(wǎng)絡(luò)。PLR是使得租戶邏輯網(wǎng)絡(luò)能夠到達(dá)外部網(wǎng)絡(luò)的那些路由器。也就是說,PLR接受TLR連接并且可以具有附連到外部網(wǎng)絡(luò)的一個(gè)或多個(gè)網(wǎng)關(guān)端口。從租戶VM發(fā)送的包將首先被TLR流水線處理(在邏輯交換機(jī)處理后),然后如果目的地是外部網(wǎng)絡(luò)地址,則被發(fā)送到PLR邏輯流水線以進(jìn)行處理。PLR邏輯流水線將網(wǎng)關(guān)端口標(biāo)識為對于包的出口端口,并且將包發(fā)送到與那個(gè)網(wǎng)關(guān)端口相關(guān)聯(lián)的網(wǎng)關(guān)主機(jī)。

當(dāng)TLR連接到PLR時(shí),一些實(shí)施例自動將動態(tài)路由傳播到PLR,使得PLR將對于被TLR服務(wù)的各個(gè)子網(wǎng)的包路由到TLR,并且當(dāng)沒有以其他方式被更特定的或更高優(yōu)先級的路由進(jìn)行路由時(shí),自動將動態(tài)缺省路由傳播到TLR,這使得TLR將包發(fā)送到PLR。當(dāng)產(chǎn)生了這個(gè)信息時(shí),一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)從連接路由、動態(tài)路由和靜態(tài)路由產(chǎn)生流條目和數(shù)據(jù)元組,該流條目和數(shù)據(jù)元組用來通過被網(wǎng)絡(luò)控制系統(tǒng)管理的網(wǎng)絡(luò)元件來實(shí)現(xiàn)邏輯路由器。

圖6-圖8概念性地示出了邏輯網(wǎng)絡(luò)配置的輸入和在網(wǎng)絡(luò)控制器600處的對于邏輯網(wǎng)絡(luò)的TLR-PLR連接、以及作為結(jié)果產(chǎn)生的路由。如圖所示,控制器600包括用于接收配置數(shù)據(jù)的API 605、狀態(tài)存儲器610和狀態(tài)計(jì)算模塊615。

一些實(shí)施例的API 605提供接口,控制器通過該接口接收對于一個(gè)或多個(gè)邏輯網(wǎng)絡(luò)的配置狀態(tài)數(shù)據(jù)。在一些實(shí)施例中,API 605代表可以被用來創(chuàng)建、修改、刪除、查詢等狀態(tài)存儲器610中的邏輯網(wǎng)絡(luò)數(shù)據(jù)的一組方法。在一些實(shí)施例中,網(wǎng)絡(luò)管理員可以通過直接連接(例如,通過手動輸入API調(diào)用)或者通過云管理應(yīng)用來訪問控制器。在云管理應(yīng)用的情況下,在一些實(shí)施例中,管理員通過應(yīng)用的圖形界面(或其他直觀的界面)配置邏輯網(wǎng)絡(luò),該圖形界面將從用戶接收的數(shù)據(jù)轉(zhuǎn)換為對控制器600適合的API調(diào)用。

對于API 605的一些這樣的API方法包括創(chuàng)建邏輯路由器的方法、創(chuàng)建邏輯路由器端口的方法、創(chuàng)建邏輯交換機(jī)的方法、將邏輯交換機(jī)附連到邏輯路由器(例如,TLR)的方法、將TLR端口連接到PLR端口的方法、將邏輯路由器(例如,PLR)的邏輯端口附連到外部網(wǎng)絡(luò)的方法、創(chuàng)建靜態(tài)路由的方法、修改靜態(tài)路由的方法、移除靜態(tài)路由的方法、查詢邏輯路由器的路由的方法等。在一些實(shí)施例中,這些各種方法使得管理員能夠訪問或修改存儲在狀態(tài)存儲器610中的配置狀態(tài)數(shù)據(jù)。雖然API 605使得管理員能夠查詢動態(tài)路由,在一些實(shí)施例中,可能不通過API輸入動態(tài)路由(因?yàn)檫@樣路由將是靜態(tài)路由)。此外,兩個(gè)邏輯路由器(例如,PLR和TLR)的連接使得網(wǎng)絡(luò)控制器產(chǎn)生動態(tài)路由,將在下文解釋。

在一些實(shí)施例中,狀態(tài)存儲器610存儲了定義由控制器600管理的邏輯網(wǎng)絡(luò)的一組對象(或其他數(shù)據(jù)結(jié)構(gòu))?;谟葾PI 605接收到的命令,控制器600在狀態(tài)存儲器610中創(chuàng)建對象。一些實(shí)施例的狀態(tài)存儲器是網(wǎng)絡(luò)信息庫(NIB),在美國專利公開第2013/0058356號中更加詳細(xì)地描述了該網(wǎng)絡(luò)信息庫,其全部內(nèi)容通過引用合并于此,雖然其他實(shí)施例使用不同的存儲器在網(wǎng)絡(luò)控制器處存儲狀態(tài)信息。除了存儲通過API 605接收的配置狀態(tài)外,一些實(shí)施例的狀態(tài)存儲器還存儲由狀態(tài)計(jì)算模塊615計(jì)算的經(jīng)計(jì)算的狀態(tài)。

此外,網(wǎng)絡(luò)控制器600可以從(i)其他網(wǎng)絡(luò)控制器以及(ii)網(wǎng)絡(luò)元件(例如,MFE)經(jīng)由與這些實(shí)體的接口(未示出)接收狀態(tài)信息。在一些實(shí)施例中,其他邏輯路由器可以通過它們的API接收配置狀態(tài),并且與控制器600共享配置狀態(tài)信息(例如,通過RPC通道)。在一些這樣的實(shí)施例中,網(wǎng)絡(luò)控制器只共享配置狀態(tài),并且不共享經(jīng)計(jì)算的狀態(tài)。這使得管理員能夠?qū)⒂糜谔囟ǖ倪壿嬣D(zhuǎn)發(fā)元件或邏輯網(wǎng)絡(luò)的配置數(shù)據(jù)輸入到任何網(wǎng)絡(luò)控制器中,因?yàn)榕渲眯畔⑴c管理特定的邏輯轉(zhuǎn)發(fā)元件的網(wǎng)絡(luò)控制器共享,并且只有該網(wǎng)絡(luò)控制器將基于輸入的配置狀態(tài)來計(jì)算邏輯網(wǎng)絡(luò)的狀態(tài)。托管網(wǎng)關(guān)的名稱空間和受管理的轉(zhuǎn)發(fā)元件也可以向它們的管理物理控制器(例如通過用于配置MFE或名稱空間的通道之一)提供狀態(tài)信息(例如,關(guān)于被關(guān)閉的鏈接、針對特定邏輯網(wǎng)絡(luò)處理的流量的量等)。當(dāng)物理控制器接收到這個(gè)信息時(shí),在一些實(shí)施例中,控制器標(biāo)識合適的邏輯控制器,向該邏輯控制器提供數(shù)據(jù),然后該數(shù)據(jù)被存儲在控制器的狀態(tài)存儲器(例如,存儲器610)中。

一些實(shí)施例的狀態(tài)計(jì)算模塊(或一組模塊)615允許控制器基于(i)通過API接收的配置狀態(tài)、(ii)先前計(jì)算的狀態(tài)(例如,在一系列計(jì)算中)以及(iii)從物理的受管理的轉(zhuǎn)發(fā)元件向上傳播到網(wǎng)絡(luò)控制器的狀態(tài)來計(jì)算附加狀態(tài)信息。在一些實(shí)施例中,狀態(tài)計(jì)算模塊615是表映射引擎(例如,上文中通過參考圖1描述的表映射引擎)。狀態(tài)計(jì)算模塊還可以包括用于遞歸遍歷配置狀態(tài)路由來產(chǎn)生經(jīng)計(jì)算的狀態(tài)路由的路由處理引擎。在一些實(shí)施例中,狀態(tài)計(jì)算模塊基于PLR-TLR連接產(chǎn)生動態(tài)路由,以及將這些路由存儲為對于各自PLR和TLR的輸入路由。

現(xiàn)在將通過參考圖6-圖8來描述控制器600接收配置狀態(tài)(包括將TLR附連到PLR)以及處理這個(gè)配置狀態(tài)的操作。圖6概念地示出了由控制器600接收邏輯網(wǎng)絡(luò)配置620。如圖所示,API 605通過一個(gè)或多個(gè)API調(diào)用接收對于邏輯網(wǎng)絡(luò)的配置620。如圖所示,邏輯網(wǎng)絡(luò)包括附連到邏輯路由器的兩個(gè)邏輯交換機(jī),該邏輯路由器還連接到外部網(wǎng)絡(luò)(例如,通過L3網(wǎng)關(guān)端口)。邏輯交換機(jī)包括VM所附連到的幾個(gè)端口。此外,邏輯網(wǎng)絡(luò)配置620指示連接到第一邏輯交換機(jī)的邏輯路由器端口中的一個(gè)端口被分配了子網(wǎng)11.0.0.0/24,并且連接到第二邏輯交換機(jī)的其他邏輯路由器端口被分配了子網(wǎng)10.0.0.0/24。邏輯路由器(TLR)不具有與外部網(wǎng)絡(luò)的連接。

雖然作為單個(gè)一組數(shù)據(jù)620示出,但在一些實(shí)施例中,API 605接收獨(dú)立的命令來創(chuàng)建每一個(gè)邏輯轉(zhuǎn)發(fā)元件(邏輯交換機(jī)A、邏輯交換機(jī)B和邏輯路由器)。此外,在一些實(shí)施例中,將每一個(gè)邏輯交換機(jī)附連到邏輯路由器是獨(dú)立的命令,將每一個(gè)VM附連到邏輯交換機(jī)也是獨(dú)立的命令。

圖6還示出了API 605在狀態(tài)存儲器610中創(chuàng)建對于三個(gè)邏輯轉(zhuǎn)發(fā)元件的對象625-635。在一些實(shí)施例中,由API 605接收到的命令指示API創(chuàng)建和/或修改這些對象。一些實(shí)施例的邏輯交換機(jī)對象630和635存儲邏輯端口列表、與這些邏輯端口的附連、對于這些邏輯端口的MAC地址等。

如上所述,一些實(shí)施例的TLR對象625包括它的端口列表,這些端口附連到邏輯交換機(jī)A和邏輯交換機(jī)B。在一些實(shí)施例中,TLR對象625可以指定邏輯路由器是以分布式還是集中式的方式實(shí)現(xiàn),以及邏輯路由器的類型(即,TLR,或通過設(shè)置指示是租戶或供應(yīng)商的標(biāo)志)。此外,API 605創(chuàng)建作為邏輯路由器對象的一部分的一組路由640。在一些實(shí)施例中,每一個(gè)路由也是存儲在狀態(tài)存儲器610中的對象(由邏輯路由器對象擁有)。如圖所示,該組路由包括由API 605基于邏輯網(wǎng)絡(luò)配置620自動產(chǎn)生的路由。具體地,對于每一個(gè)邏輯端口(連接到邏輯交換機(jī)、L3網(wǎng)關(guān)等),API 605產(chǎn)生對于與那個(gè)端口相關(guān)聯(lián)的網(wǎng)絡(luò)地址范圍(例如,IP地址)的高優(yōu)先級連接路由。雖然在這個(gè)圖中示出了由API執(zhí)行,但在一些實(shí)施例中,API簡單地在狀態(tài)存儲器中創(chuàng)建端口和連接,并且狀態(tài)計(jì)算模塊615基于為該端口指定的網(wǎng)絡(luò)地址范圍產(chǎn)生連接路由。

在這種情況下,路由645之一是對于邏輯交換機(jī)A所附連到的端口。這個(gè)路由645將落入11.0.0.0/24范圍(以無級別域間路由(CIDR)格式給出)的網(wǎng)絡(luò)地址路由到邏輯輸出端口X。此外,一些實(shí)施例的路由對象指定路由的類型(例如,連接路由,因?yàn)槁酚墒腔赥LR的特定邏輯端口)、對于具有前綴范圍內(nèi)的目的地IP地址的包將采取的動作(在這個(gè)情況下,接受,盡管其他路由可能指定放棄包)、以及路由的優(yōu)先級。在一些實(shí)施例中,連接路由被給予最高優(yōu)先級(1),而靜態(tài)路由被給予較低的優(yōu)先級(雖然這在一些實(shí)施例中可以被手動輸入),以及動態(tài)路由被給予更低的優(yōu)先級。除了路由645外,該組路由還包括相似結(jié)構(gòu)的路由,以將在范圍10.0.0.0/24內(nèi)的IP地址發(fā)送到邏輯輸出端口Y。

雖然沒有在這個(gè)圖中示出,一些實(shí)施例的狀態(tài)計(jì)算模塊615標(biāo)識存儲在狀態(tài)存儲器610中的配置狀態(tài)已發(fā)生變化,并且隨后檢索這個(gè)數(shù)據(jù)以便計(jì)算要向受管理的轉(zhuǎn)發(fā)元件分發(fā)的狀態(tài)信息。狀態(tài)計(jì)算模塊615產(chǎn)生流條目和/或數(shù)據(jù)元組以向受管理的轉(zhuǎn)發(fā)元件和名稱空間分發(fā),并且分發(fā)這個(gè)經(jīng)計(jì)算的信息(例如,經(jīng)由一組物理控制器)。狀態(tài)計(jì)算模塊615還將經(jīng)計(jì)算的狀態(tài)存儲回到狀態(tài)存儲器610中。

圖7概念性地示出了由控制器600接收輸入配置數(shù)據(jù)以將如圖6中所示地創(chuàng)建的TLR附連到PLR。如圖所示,輸入數(shù)據(jù)(例如,管理員的輸入)指定TLR的新邏輯端口具有在子網(wǎng)18.0.0.0/28上的IP地址18.0.0.1。該端口附連到具有在相同子網(wǎng)18.0.0.0/28上的IP地址18.0.0.2的PLR的邏輯端口。一些實(shí)施例對TLR到PLR的連接設(shè)置要求。例如,一些實(shí)施例要求兩個(gè)連接的邏輯路由器端口應(yīng)在相同的子網(wǎng)上,并且該子網(wǎng)至少是“/30”子網(wǎng)(按照無級別域間路由(CIDR)格式)。也就是說,共享的子網(wǎng)必須具有至少三比特用于可用的不同IP地址。當(dāng)未正確進(jìn)行TLR-PLR連接時(shí)(例如,接口在不同的子網(wǎng)上,或子網(wǎng)太具體),一些實(shí)施例的API 605產(chǎn)生錯誤消息以返回到配置輸入源。

因?yàn)樵谶@個(gè)情況下正確地指定了將TLR附連到PLR的配置輸入,API將端口之間的這個(gè)連接存儲在租戶邏輯路由器對象625和供應(yīng)商邏輯路由器對象705兩者中,該供應(yīng)商邏輯路由器對象705已經(jīng)存在于狀態(tài)路由器610中,因?yàn)楣?yīng)商邏輯路由器之前已經(jīng)由被控制器600管理的受管理網(wǎng)絡(luò)的管理員創(chuàng)建了。對于TLR,API存儲在子網(wǎng)18.0.0.0/28上具有IP地址18.0.0.1的新邏輯端口。這樣一來,API 605或狀態(tài)計(jì)算模塊615產(chǎn)生對于子網(wǎng)18.0.0.0/28上將被發(fā)送到新邏輯端口的所有包的連接路由。此外,API 605存儲(作為邏輯端口的屬性)與具有IP地址18.0.0.2的PLR端口的連接。對于PLR對象705,如果端口不是已經(jīng)在PLR上創(chuàng)建了,則API 605存儲新邏輯端口(并且相似地創(chuàng)建與子網(wǎng)的連接路由)。此外,API 605存儲與具有IP地址18.0.0.1的TLR端口的連接。

作為連接的結(jié)果,狀態(tài)計(jì)算模塊610(例如,表映射引擎組件)標(biāo)識對TLR對象625的更新,并且檢索對于TLR的連接數(shù)據(jù)710。作為結(jié)果,狀態(tài)計(jì)算模塊610產(chǎn)生對于TLR的新動態(tài)缺省路由715,并且在TLR 625的輸入路由表640中存儲這個(gè)信息。如圖所示,動態(tài)缺省路由715將所有包(使用0.0.0.0/0)發(fā)送到PLR的IP地址18.0.0.2。一些實(shí)施例為該路由設(shè)置了低優(yōu)先級(例如,使用高的數(shù)字)。這允許用戶為外發(fā)包指定將具有相同特性(0.0.0.0/0)但是具有更高優(yōu)先級的靜態(tài)缺省路由。例如,用戶可以使用直接主機(jī)返回端口將外發(fā)包從邏輯網(wǎng)絡(luò)直接發(fā)送到受管理網(wǎng)絡(luò)之外的物理路由器,而不使用PLR網(wǎng)關(guān)(PLR網(wǎng)關(guān)是潛在的瓶頸)。在2013年10月31日提交的美國專利申請14/068,865中描述了一些實(shí)施例的這樣的直接主機(jī)返回端口,其全部內(nèi)容通過引用合并于此。

圖8概念性地示出了TLR-PLR連接的結(jié)果,因?yàn)樵摻Y(jié)果與PLR數(shù)據(jù)705有關(guān)。如上文指示的,當(dāng)API 605接收連接時(shí),該數(shù)據(jù)被存儲在TLR對象625和PLR對象705兩者中。對PLR的更新也被狀態(tài)計(jì)算模塊615標(biāo)識,狀態(tài)計(jì)算模塊615檢索對于PLR的數(shù)據(jù),并且產(chǎn)生對于PLR的新動態(tài)路由。在一些實(shí)施例中,這些路由是基于TLR的連接路由,并且指定TLR端口IP地址18.0.0.1作為下一跳。例如,為PLR 705存儲的路由805對應(yīng)于TLR 625的連接路由645。動態(tài)路由805用于路由具有11.0.0.0/24范圍內(nèi)的網(wǎng)絡(luò)地址的包,并且指定IP地址18.0.0.1作為下一跳。PLR已經(jīng)具有對于前綴18.0.0.0/28的連接路由,以將匹配該前綴的包輸出到特定的邏輯端口。除了該路由805,狀態(tài)計(jì)算模塊還產(chǎn)生也將具有10.0.0.0/24范圍內(nèi)的地址的包發(fā)送到相同IP地址18.0.0.1的路由。因?yàn)閷τ谇熬Y18.0.0.0/28的TLR連接路由指定PLR所連接到的相同子網(wǎng),該TLR連接路由不作為動態(tài)路由被傳播到PLR。

這個(gè)圖假設(shè)了控制器600是TLR和PLR兩者的主控制器。從另一方面說,如果不同的控制器是PLR的主控制器,則狀態(tài)計(jì)算模塊610將不計(jì)算對于PLR的動態(tài)路由。替代地,因?yàn)榭刂破?00將與網(wǎng)絡(luò)控制系統(tǒng)中的其他控制器(包括PLR的主控制器)共享該數(shù)據(jù),PLR主控制器將為PLR計(jì)算動態(tài)路由(并且為PLR執(zhí)行后續(xù)路由處理以標(biāo)識對于PLR的輸出路由表)。

圖9概念性地示出了一些實(shí)施例的用于實(shí)現(xiàn)PLR-TLR連接的處理900,該處理900由作為TLR和PLR兩者的主控器的網(wǎng)絡(luò)控制器執(zhí)行。如上述示例中一樣,該圖中假設(shè)執(zhí)行處理900的控制器是TLR和PLR兩者的主控器。

如圖所示,處理900通過接收(在905)對于特定租戶網(wǎng)絡(luò)的新邏輯路由器的配置來開始。在一些實(shí)施例中,控制器通過API調(diào)用接收該配置數(shù)據(jù)以創(chuàng)建新邏輯路由器,以及通過其他調(diào)用來配置邏輯路由器的端口(例如,利用MAC地址、IP地址和子網(wǎng))、將邏輯交換機(jī)附連到一些新端口、和/或?qū)⒍丝谶B接到現(xiàn)有的供應(yīng)商邏輯路由器。一些實(shí)施例向租戶指定了一個(gè)或多個(gè)供應(yīng)商邏輯路由器的存在。例如,通過API,一些實(shí)施例允許租戶管理員查詢可用于接受與TLR的連接的PLR。

基于配置信息,處理使用端口所連接到的子網(wǎng)的指定的網(wǎng)絡(luò)地址前綴來產(chǎn)生(在910)對于新邏輯路由器的每一個(gè)端口的連接路由。因此,在上述示例中,邏輯端口X(在網(wǎng)絡(luò)控制器處例如由UUID標(biāo)識)與子網(wǎng)11.0.0.0/24相關(guān)聯(lián),并且因此控制器600產(chǎn)生連接路由以將對于該子網(wǎng)的包發(fā)送到邏輯路由器的端口X。處理900為新TLR的每一個(gè)邏輯端口產(chǎn)生相似的路由。

接下來,處理確定(在915)與PLR的任何連接是否被指定用于TLR的任何端口。如果沒有指定這樣的連接,處理結(jié)束。在一些實(shí)施例中,如果數(shù)據(jù)中心租戶想要邏輯網(wǎng)絡(luò)接收來自外部網(wǎng)絡(luò)的包,則需要與PLR的連接(即,因?yàn)樽鈶艨赡懿痪哂信cL3網(wǎng)關(guān)的連接)。但是,租戶管理員可以初始指定邏輯路由器,然后在之后的時(shí)間(在這個(gè)時(shí)候,將執(zhí)行處理900的剩下部分)將TLR附連到PLR。

當(dāng)指定的邏輯路由器包括與PLR的連接時(shí),該處理標(biāo)識(在920)所連接的TLR端口和PLR端口的前綴和網(wǎng)絡(luò)地址。在一些實(shí)施例中,該處理由API在接收到連接的指定后執(zhí)行。也就是說,當(dāng)TLR到PLR的連接被指定為接收到的配置數(shù)據(jù)的一部分時(shí),一些實(shí)施例在操作910前執(zhí)行操作920。

該處理確定(在925)端口是否滿足為PLR-TLR連接指定的一組要求。例如,一些實(shí)施例要求端口具有不同的IP地址、端口具有所分配的相同前綴、以及該前綴不是過于具體。例如,一些實(shí)施例要求前綴至少應(yīng)為“/30”(即,該前綴具有三比特可用于IP地址)。其他實(shí)施例不對子網(wǎng)尺寸設(shè)置這樣的要求。當(dāng)端口不滿足連接要求時(shí),處理返回(在930)無效連接的錯誤。一些實(shí)施例將錯誤消息返回到試圖創(chuàng)建PLR-TLR連接的命令源(例如,管理應(yīng)用、管理員計(jì)算機(jī)等)。然后,處理結(jié)束。

接下來,該處理產(chǎn)生(在935)指定PLR端口的網(wǎng)絡(luò)地址作為下一跳地址的對于TLR的動態(tài)缺省路由。也就是說,該路由將與TLR處的任何其他路由不匹配的所有包發(fā)送(使用前綴0.0.0.0/0)到PLR。因?yàn)門LR已經(jīng)包括了連接路由以將前綴包含該下一跳地址的包輸出到連接到PLR的TLR端口,則由網(wǎng)絡(luò)控制器進(jìn)行的路由處理將該路由解析為缺省路由以將未以其他方式路由的所有包輸出到連接到PLR的邏輯端口。

此外,對于PLR,處理900為與TLR的其他端口相關(guān)聯(lián)每一個(gè)前綴產(chǎn)生(在940)動態(tài)路由。然后處理結(jié)束。這些動態(tài)路由指定TLR的連接端口作為下一跳的地址。上述示例中的路由805就是這樣的路由。因?yàn)門LR具有對于前綴11.0.0.0/24的連接路由,PLR接收對于該前綴的具有下一跳IP地址為18.0.0.1的動態(tài)路由。無論何時(shí)TLR的管理員增加了新邏輯端口,控制器為TLR產(chǎn)生新的連接路由,并且隨后產(chǎn)生對于連接的PLR的新動態(tài)路由。由于PLR已經(jīng)具有連接路由以將對于前綴包含動態(tài)路由的下一跳地址的包輸出到連接到TLR的PLR端口,則由網(wǎng)絡(luò)控制器進(jìn)行的路由處理將PLR的動態(tài)路由解析為將發(fā)送到TLR子網(wǎng)中的網(wǎng)絡(luò)地址的包輸出到連接到TLR的邏輯端口。

雖然在這些圖中沒有示出,如以上參考例如圖4和圖5所描述的,網(wǎng)絡(luò)控制器除了產(chǎn)生路由、存儲路由并且執(zhí)行對于邏輯路由器的路由處理外,還產(chǎn)生和分發(fā)數(shù)據(jù)到實(shí)現(xiàn)受管理網(wǎng)絡(luò)中的邏輯網(wǎng)絡(luò)的各個(gè)受管理的網(wǎng)絡(luò)元件。在一些實(shí)施例中,這些網(wǎng)絡(luò)元件包括受管理的轉(zhuǎn)發(fā)元件(MFE)和受管理的L3網(wǎng)關(guān)。因?yàn)樵谝恍?shí)施例中TLR以分布式的方式被實(shí)現(xiàn),控制器(或一組控制器)產(chǎn)生對于合適的MFE(即,租戶網(wǎng)絡(luò)的VM所駐留的主機(jī)處的那些MFE)的流條目,以便MFE實(shí)現(xiàn)TLR(和租戶邏輯交換機(jī))。當(dāng)TLR連接到PLR時(shí),控制器(或一組控制器)產(chǎn)生對于PLR以及那些MFE的流條目。PLR流條目被分發(fā)到連接到PLR的其他邏輯網(wǎng)絡(luò)的VM所駐留的主機(jī)。此外,網(wǎng)絡(luò)控制器產(chǎn)生定義和配置對于連接到外部網(wǎng)絡(luò)的PLR的一個(gè)或多個(gè)L3網(wǎng)關(guān)(例如,對于PLR的每一個(gè)端口的一個(gè)L3網(wǎng)關(guān))的數(shù)據(jù)元組。

在一些實(shí)施例中,對于MFE的流條目遵循匹配-動作格式。也就是說,每個(gè)流條目指定(i)一組匹配條件(例如,源MAC地址和/或目的地MAC地址、源IP地址和/或目的地IP地址、邏輯上下文數(shù)據(jù)(諸如特定邏輯轉(zhuǎn)發(fā)元件的入口端口和出口端口)等)以及(ii)對包執(zhí)行的一組動作(例如,將數(shù)據(jù)寫入寄存器、重新提交包、將包封裝在特定的隧道報(bào)頭等)。

在一些實(shí)施例中,網(wǎng)絡(luò)控制系統(tǒng)將流條目分發(fā)到MFE,以便MFE執(zhí)行第一跳處理。對于第一跳處理,接收包的第一MFE(例如,與發(fā)送包的VM在同一主機(jī)上的MFE,或用于進(jìn)入包的網(wǎng)關(guān)主機(jī)上的MFE)在將包發(fā)送到受管理的網(wǎng)絡(luò)前,對包執(zhí)行盡可能多的邏輯流水線。對于邏輯網(wǎng)絡(luò)中的VM之間的流量,第一跳MFE通常標(biāo)識邏輯交換機(jī)的對應(yīng)于目的地地址的邏輯出口端口。如果兩個(gè)VM在不同的邏輯交換機(jī)上,則第一跳MFE執(zhí)行對于源邏輯交換機(jī)、邏輯路由器(例如,TLR)以及目的地邏輯交換機(jī)的邏輯處理流水線。

圖10和圖11概念性地示出了在受管理的網(wǎng)絡(luò)300中實(shí)現(xiàn)的、由第一跳MFE對于被圖2中所示的PLR 220處理的兩個(gè)不同包的包處理。這些圖中的每一個(gè)圖示出了當(dāng)由VM發(fā)送的包被第一跳MFE中的各個(gè)處理流水線操控時(shí)處于各個(gè)階段中的該包。每一個(gè)處理流水線代表由MFE存儲的并且用于處理包的一組流條目。對于特定邏輯轉(zhuǎn)發(fā)元件的處理(例如邏輯交換機(jī)處理),流水線可以代表多個(gè)條目(例如,入口ACL、邏輯轉(zhuǎn)發(fā)和出口ACL)。

圖10中示出的第一個(gè)實(shí)例示出了由VM 1發(fā)送到外部目的地的包1000。如圖所示,VM 1初始地將包1000發(fā)送到MFE 335(例如,通過VNIC)。VM和MFE 335均位于主機(jī)305處。包1000包含有效載荷、源MAC地址和目的地MAC地址、源IP地址和目的IP地址以及存活時(shí)間(TTL)計(jì)時(shí)器。因?yàn)楸籚M發(fā)送,源MAC地址和IP地址是VM 1的那些MAC地址和IP地址,目的地MAC地址是邏輯交換機(jī)205(VM的缺省網(wǎng)關(guān))所附連到的TLR 215的MAC地址,以及目的地IP地址是位于邏輯網(wǎng)絡(luò)外的外部地址。

在MFE 335處,對包1000執(zhí)行的處理的第一階段是入口上下文映射1005。入口上下文映射階段1005代表標(biāo)識包1000的邏輯上下文的一個(gè)或多個(gè)流條目。在一些實(shí)施例中,入口上下文映射流條目基于通過其接收包的物理入口端口(例如,VNIC,VM 1通過該VNIC附連到MFE 335)來標(biāo)識邏輯交換機(jī)205的特定邏輯端口。

當(dāng)處理包時(shí),一些實(shí)施例的MFE335將包數(shù)據(jù)存儲在寄存器中。也就是說,當(dāng)接收到包時(shí),包的各個(gè)組成部分被寫入用于在處理期間訪問的寄存器字段。MFE重復(fù)地將包與流條目匹配、執(zhí)行由流條目指定的動作,然后通過用于其他處理的調(diào)度端口重新提交包,同時(shí)將與包相關(guān)聯(lián)的數(shù)據(jù)保持在寄存器中。在入口上下文映射的情況下,流條目指定將(邏輯交換機(jī)205的)所標(biāo)識的邏輯入口端口寫入到寄存器中。

基于入口上下文映射,MFE 335然后執(zhí)行邏輯交換機(jī)205的邏輯L2處理流水線1010。在一些實(shí)施例中,該處理流水線包括入口ACL(例如,為了確保包的源MAC地址和/或IP地址與由入口上下文映射條目指定的邏輯端口匹配)、邏輯轉(zhuǎn)發(fā)決定和出口ACL條目。在一些實(shí)施例中,對于L2流水線的邏輯轉(zhuǎn)發(fā)決定使用目的地MAC地址來標(biāo)識邏輯交換機(jī)1010的邏輯出口端口,并且出口ACL條目確定是否允許包通過所標(biāo)識的出口端口(例如,基于目的地MAC地址和/或目的地IP地址)。這個(gè)出口端口連接到TLR 215的邏輯端口,并且因此其他流條目為包1000指定了寄存器領(lǐng)域中的TLR入口端口,如圖的右側(cè)所示。在這個(gè)時(shí)候,只有包的邏輯上下文被修改,而MAC地址、IP地址和TTL區(qū)域保持未發(fā)生變化。

基于所指定的TLR入口端口,MFE接下來執(zhí)行租戶邏輯路由器215的邏輯L3處理流水線1015。在一些實(shí)施例中,與邏輯交換機(jī)處理相似,L3處理流水線包括入口ACL條目、邏輯轉(zhuǎn)發(fā)決定和出口ACL條目。在一些實(shí)施例中,入口ACL條目確保包的源MAC地址和/或IP地址是被入口端口允許的。對于邏輯轉(zhuǎn)發(fā)決定的流條目實(shí)現(xiàn)由網(wǎng)絡(luò)控制器確定的TLR路由表。也就是說,由MFE存儲的邏輯轉(zhuǎn)發(fā)流條目包括對于到不同邏輯交換機(jī)的每個(gè)連接路由的條目,以及對于到PLR的缺省路由的條目。在這種情況下,因?yàn)槟康牡豂P地址是外部地址(即,不在與邏輯交換機(jī)205和210相關(guān)聯(lián)的任何子網(wǎng)中),包1000與將連接到PLR的TLR邏輯端口指定為邏輯出口端口的流條目匹配。因?yàn)樵摮隹诙丝谶B接到PLR 220的邏輯端口,其他流條目為包1000指定寄存器字段中的PLR入口端口,如圖的右側(cè)所示。

此外,作為邏輯轉(zhuǎn)發(fā)流條目(或多個(gè)條目)的一部分,MFE 335在處理階段1015期間修改包。具體地,當(dāng)包現(xiàn)在被路由器處理時(shí),MFE將TTL減去一。在這個(gè)實(shí)例中,包1000初始具有64的TTL,該TTL每次被處理包的每個(gè)路由器遞減。不同實(shí)施例可以使用不同的初始TTL值(例如,255、100等)。另外,作為路由包的一部分,處理流水線1015改變包的源MAC地址和目的地MAC地址。具體地,源地址現(xiàn)在是TLR出口端口的地址,并且目的地MAC現(xiàn)在是PLR入口端口的MAC。TLR流條目指示對于所使用的路由的下一跳IP地址是PLR入口端口的IP地址。不是使用地址解析協(xié)議(ARP),因?yàn)檫壿嬀W(wǎng)絡(luò)對于產(chǎn)生流條目的控制器是已知的,在一些實(shí)施例中,ARP響應(yīng)(具有將被用作包1000的目的地MAC的MAC地址)可以被直接嵌入在流條目的開始中。

接下來,基于指定的PLR入口端口,MFE 335執(zhí)行供應(yīng)商邏輯路由器220的邏輯L3處理流水線1020。在一些實(shí)施例中,與TLR處理相似,PLR處理流水線1020包括入口ACL條目、邏輯轉(zhuǎn)發(fā)決定和出口ACL條目。幾乎與TLR一樣,入口ACL和出口ACL確保包應(yīng)該被允許進(jìn)入PLR的所標(biāo)識的入口端口和從被邏輯轉(zhuǎn)發(fā)條目標(biāo)識的出口端口出去。邏輯轉(zhuǎn)發(fā)條目實(shí)現(xiàn)由網(wǎng)絡(luò)控制器確定的PLR的路由表。因此,PLR流條目包括用于將具有邏輯交換機(jī)子網(wǎng)中的目的地IP地址的包轉(zhuǎn)發(fā)到連接到對于邏輯交換機(jī)子網(wǎng)合適的TLR(基于傳播到PLR的動態(tài)路由)的PLR端口的條目、以及用于將其他包發(fā)送到TLR的一個(gè)或多個(gè)網(wǎng)關(guān)端口的路由。在這種情況下,因?yàn)槟康牡豂P地址是外部地址,PLR不將包路由到與其連接的任何TLR。替代地,基于其缺省路由、通過API為PLR輸入的靜態(tài)路由、或通過路由通告協(xié)議(例如,BGP、OSPF等)從外部物理路由器得知的動態(tài)路由,PLR轉(zhuǎn)發(fā)條目將PLR的網(wǎng)關(guān)端口之一標(biāo)識為邏輯出口端口。

此外,與TLR一樣,MFE 335在處理階段1020期間修改包1000。具體地,TTL再次遞減,使得其現(xiàn)在具有值62。雖然只有一個(gè)物理轉(zhuǎn)發(fā)元件(MFE 335)處理了包,包的TTL在那個(gè)處理期間已經(jīng)遞減了兩次。此外,PLR已經(jīng)再次修改了包的源MAC和目的地MAC(例如,通過修改寄存器值)。源MAC現(xiàn)在是對于邏輯路由器的L3網(wǎng)關(guān)端口的MAC,以及目的地MAC是L3網(wǎng)關(guān)自身(在一些實(shí)施例中,L3網(wǎng)關(guān)被分配了與邏輯端口分離的MAC)。使用L3網(wǎng)關(guān)MAC作為目的地地址確保了當(dāng)網(wǎng)關(guān)主機(jī)處的MFE接收了包時(shí),該MFE將發(fā)送包到合適的名稱空間以進(jìn)行網(wǎng)關(guān)處理。再次,網(wǎng)絡(luò)控制器直接將目的地MAC地址信息嵌入到流條目中,而不是由MFE 335通過ARP來確定這個(gè)MAC地址。

最后,在這個(gè)時(shí)候,基于PLR處理的邏輯轉(zhuǎn)發(fā)部分標(biāo)識的出口端口不映射到由主機(jī)305處的MFE 335實(shí)現(xiàn)的其他邏輯轉(zhuǎn)發(fā)元件流表。替代地,現(xiàn)在包與將包映射到物理目的地(即,特定的網(wǎng)關(guān)主機(jī))的出口上下文映射流條目匹配。此外,物理轉(zhuǎn)發(fā)流條目(可以是出口上下文映射的一部分,或分離的流條目)指定為了到達(dá)這個(gè)網(wǎng)關(guān)主機(jī)處的MFE要使用的實(shí)際隧道信息。這樣一來,在將包發(fā)送出主機(jī)305并且進(jìn)入受管理的網(wǎng)絡(luò)前,MFE 335將包封裝在隧道中(例如,使用STT、GRE或其他隧道封裝技術(shù))。這在圖中通過隧道源IP地址和目的地IP地址而示出。為了供網(wǎng)關(guān)主機(jī)處的MFE使用,邏輯上下文也被保持在包上(例如,存儲在隧道報(bào)頭的特定字段內(nèi))。

MFE 335將封裝的包發(fā)出進(jìn)入受管理的網(wǎng)絡(luò)以至網(wǎng)關(guān)主機(jī)。在一些實(shí)施例中,網(wǎng)關(guān)主機(jī)處的MFE 365將已經(jīng)移除了隧道封裝和邏輯上下文數(shù)據(jù)的包轉(zhuǎn)發(fā)到實(shí)現(xiàn)L3網(wǎng)關(guān)的名稱空間。名稱空間執(zhí)行其處理以將要傳遞的包路由到特定的物理路由器,并且然后將包發(fā)送回到MFE,該MFE處理該包到與物理網(wǎng)絡(luò)的連接上的輸出。

圖11概念性地示出了當(dāng)包1100從邏輯網(wǎng)絡(luò)200上的VM 1發(fā)送到邏輯網(wǎng)絡(luò)250上的VM 6時(shí)被第一跳處的TLR和PLR兩者處理的該包1100的示例,其中VM 1和VM 6均駐留在主機(jī)305上。如圖所示,包1100具有相同的源IP地址和MAC地址(VM 1的那些IP地址和MAC地址)、相同的目的地MAC地址(TLR端口)、和與包1000相同的初始TTL。但是,目的地IP地址是VM 6的IP地址,并且有效載荷可推測地也將是不同的。

在MFE 335處,前三個(gè)階段(入口上下文映射1105、對于邏輯交換機(jī)205的邏輯L2處理1110、對于TLR 215的邏輯路由器處理1115)與圖10中的示例是相同的。對于由TLR 215進(jìn)行的處理,VM 6的目的地IP被與外部IP相同對待,因?yàn)閂M 6不在連接到TLR 215的任何子網(wǎng)上。在流水線1115后,TTL已被遞減到63,源MAC是TLR出口端口的MAC,并且目的地MAC是PLR入口端口的MAC。

一些實(shí)施例的對于PLR 220的L3處理流水線1120包括入口ACL、邏輯轉(zhuǎn)發(fā)決定和出口ACL。但是,與先前的示例不同,這一次,包1100與實(shí)現(xiàn)了將邏輯網(wǎng)絡(luò)250的TLR 265作為下一跳的動態(tài)路由的流條目匹配。VM 6的IP地址(包1100的目的地地址)在與連接到邏輯交換機(jī)255的TLR端口相關(guān)聯(lián)的子網(wǎng)中,并且因此,包與實(shí)現(xiàn)了被傳播到對于該子網(wǎng)的PLR的動態(tài)路由的流條目匹配。因此,除了將TTL遞減到62之外,PLR處理1120還將包的源MAC設(shè)置為連接到TLR 260的PLR端口的MAC,并且將包的目的地MAC設(shè)置為連接到該P(yáng)LR端口的TLR端口的MAC。處理隨后將這個(gè)TLR端口標(biāo)識為與包的邏輯上下文一起存儲的新入口端口。

然后,基于這個(gè)邏輯入口上下文,MFE 335執(zhí)行對于TLR 265的邏輯L3處理階段1125。與先前描述的邏輯路由器流水線一樣,L3處理1125包括入口ACL、邏輯轉(zhuǎn)發(fā)和出口ACL。在這個(gè)情況下,邏輯轉(zhuǎn)發(fā)決定將(VM 6的)目的地IP地址標(biāo)識為屬于子網(wǎng),對于該子網(wǎng),流條目實(shí)現(xiàn)了連接路由(到邏輯交換機(jī)205所附連到的邏輯路由器端口)?;谠揑P地址,邏輯轉(zhuǎn)發(fā)條目(或多個(gè)條目)指定標(biāo)識邏輯路由器的出口端口、將TTL遞減到61并且修改源MAC地址和目的地MAC地址。源MAC地址被改變?yōu)楦竭B到邏輯交換機(jī)的TLR端口的MAC地址,并且目的地MAC地址被改變?yōu)閂M 6的MAC地址。在一些實(shí)施例中,MFE不是發(fā)送實(shí)際的ARP請求到VM 6以確定其MAC地址,而是已經(jīng)存儲了該信息。

最后,MFE 335執(zhí)行對于邏輯交換機(jī)255的邏輯L2處理1130。這里,對包進(jìn)行的僅有的改變是標(biāo)識邏輯交換機(jī)的邏輯出口端口(基于對應(yīng)于VM 6的目的地MAC地址),并且將這個(gè)信息寫入寄存器中。在出口上下文映射階段1135,MFE 335將這個(gè)出口端口映射到物理目的地(所附連的VM),并且隨后將(沒有邏輯上下文的)包傳遞到目的地VM。

III、控制器中的動態(tài)路由

上述部分描述了供應(yīng)商邏輯路由器和租戶邏輯路由器的使用,其例示了執(zhí)行邏輯動態(tài)路由的網(wǎng)絡(luò)控制器的一個(gè)特定示例。在一些實(shí)施例中,唯一允許的網(wǎng)絡(luò)控制器連接的類型是PLR和TLR之間的那些連接,如上所述。但是,一些實(shí)施例的網(wǎng)絡(luò)控制系統(tǒng)向用戶提供了創(chuàng)建多個(gè)邏輯路由器作為單個(gè)邏輯網(wǎng)絡(luò)的一部分并且將這些路由器相互連接的能力。這使得租戶網(wǎng)絡(luò)的管理員能夠向不同的邏輯路由器分配不同的策略。例如,對于來自第一邏輯交換機(jī)的包,租戶可能想要使用基于尺寸的策略路由來路由包,而對于來自第二和第三邏輯交換機(jī)的包,租戶可能不在意包的尺寸。將這些邏輯交換機(jī)連接到兩個(gè)不同的邏輯路由器允許租戶簡單地在不同的邏輯路由器處實(shí)現(xiàn)不同的策略。

圖12概念性地示出了啟用動態(tài)路由的、包括兩個(gè)連接的邏輯路由器1205和1210的邏輯網(wǎng)絡(luò)1200的示例。如圖所示,第一邏輯路由器1205具有兩個(gè)附連的邏輯交換機(jī)1215和1220,并且還包括連接到外部網(wǎng)絡(luò)1230的L3網(wǎng)關(guān)端口。第二邏輯路由器1210具有一個(gè)附連的邏輯交換機(jī)1225。在PLR-TLR連接示例中,只有某些路由被網(wǎng)絡(luò)控制器在邏輯路由器之間動態(tài)地傳播,而在一些實(shí)施例中,所有路由(連接路由、靜態(tài)路由、甚至來自其他邏輯路由器或外部路由器的動態(tài)路由)可以在邏輯路由器的路由表之間傳播。

圖13和圖14概念性地示出了當(dāng)一組網(wǎng)絡(luò)控制器執(zhí)行對于邏輯路由器1205和1210的動態(tài)路由、路由處理、以及數(shù)據(jù)元組產(chǎn)生和分發(fā)時(shí)通過該組網(wǎng)絡(luò)控制器的數(shù)據(jù)流的兩個(gè)不同示例。在圖13中,兩個(gè)邏輯路由器1205和1210具有相同的主控制器,而在圖14中它們被兩個(gè)不同的主控制器管理。

圖13概念性地示出了一些實(shí)施例的網(wǎng)絡(luò)控制器1300,和當(dāng)控制器在接收到對于邏輯路由器1205的新路由時(shí)執(zhí)行邏輯路由器處理時(shí)通過該控制器的數(shù)據(jù)流。如上所述,在這個(gè)示例中,網(wǎng)絡(luò)控制器1300是邏輯路由器1205和1210的主控制器。與上面描述的網(wǎng)絡(luò)控制器100相似,網(wǎng)絡(luò)控制器1300包括API 1305、狀態(tài)存儲器1310、表映射引擎1315、路由處理引擎1320和狀態(tài)分發(fā)接口1325。

API 1305提供接口,控制器通過該接口接收對于一個(gè)或多個(gè)邏輯轉(zhuǎn)發(fā)元件的配置狀態(tài)數(shù)據(jù)。如以上參考圖6所描述的,在一些實(shí)施例中,API 1305表示可以用來創(chuàng)建、修改、刪除、查詢等狀態(tài)存儲器1310中的邏輯網(wǎng)絡(luò)數(shù)據(jù)的一組方法。在一些實(shí)施例中,網(wǎng)絡(luò)管理員可以通過直接連接(例如,通過手動輸入API調(diào)用)或者通過云管理應(yīng)用來訪問控制器。對于API 1305的一些這樣的API方法包括創(chuàng)建邏輯路由器的方法、創(chuàng)建邏輯路由器端口的方法、創(chuàng)建邏輯交換機(jī)的方法、將邏輯交換機(jī)附連到邏輯路由器的方法、將邏邏輯端口附連到外部網(wǎng)絡(luò)的方法、將兩個(gè)路由器的邏輯路由器端口相互附連的方法、創(chuàng)建靜態(tài)路由的方法、查詢邏輯路由器自己的路由的方法等。在一些實(shí)施例中,這些各種方法使得管理員能夠訪問或修改存儲在狀態(tài)存儲器1310中的對于邏輯路由器的配置狀態(tài)數(shù)據(jù)。

在一些實(shí)施例中,狀態(tài)存儲器1310存儲了定義由控制器1300管理的邏輯轉(zhuǎn)發(fā)元件的一組對象、以及由其他網(wǎng)絡(luò)控制器管理的邏輯轉(zhuǎn)發(fā)元件的配置狀態(tài)?;谟葾PI 1305接收的命令,控制器1300創(chuàng)建、修改和刪除狀態(tài)存儲器1310中的對象。除了存儲通過API 1305接收的配置狀態(tài)外,一些實(shí)施例的狀態(tài)存儲器還存儲由狀態(tài)計(jì)算模塊1315計(jì)算的經(jīng)計(jì)算的狀態(tài)(例如,由表映射引擎產(chǎn)生的動態(tài)輸入路由、由路由處理引擎產(chǎn)生的輸出路由等)。此外,網(wǎng)絡(luò)控制器1300可以從其他網(wǎng)絡(luò)控制器和網(wǎng)絡(luò)元件(例如,MFE、在名稱空間中操作的網(wǎng)關(guān))接收狀態(tài)信息,如以上參考圖6所描述的。

表映射引擎1315執(zhí)行對于由控制器1300管理的邏輯網(wǎng)絡(luò)的狀態(tài)計(jì)算。如圖所示,表映射引擎1315包括流產(chǎn)生模塊1330和配置數(shù)據(jù)產(chǎn)生模塊1335,兩個(gè)模塊均產(chǎn)生用于分發(fā)到受管理的轉(zhuǎn)發(fā)元件和L3網(wǎng)關(guān)的數(shù)據(jù)。在一些實(shí)施例中,這兩個(gè)模塊使用相似的輸入數(shù)據(jù)元組來產(chǎn)生輸出數(shù)據(jù)元組,但是產(chǎn)生用于分發(fā)到各個(gè)網(wǎng)絡(luò)元件的不同數(shù)據(jù)。此外,在一些實(shí)施例中,表映射引擎1315執(zhí)行對于連接的邏輯路由器的動態(tài)路由。一些實(shí)施例的表映射引擎使用數(shù)據(jù)庫連接操作來產(chǎn)生描述動態(tài)路由的數(shù)據(jù)元組,并且然后將這些動態(tài)路由作為對象存儲在狀態(tài)存儲器610中。例如,對于連接到自身具有連接路由的第二邏輯路由器的第一邏輯路由器,一些實(shí)施例的表映射引擎將執(zhí)行以下操作:將連接路由的前綴與第二邏輯路由器的端口相連接作為下一跳IP地址,以創(chuàng)建對于第一邏輯路由器的動態(tài)路由。

流產(chǎn)生模塊1330產(chǎn)生對于受管理的轉(zhuǎn)發(fā)元件的數(shù)據(jù),以在處理包時(shí)使用。具體地,在一些實(shí)施例中,流產(chǎn)生模塊1330產(chǎn)生采用匹配-動作模式的流條目。也就是說,每一個(gè)流條目指定包要匹配的條件或一組條件、以及當(dāng)包匹配了所有條件時(shí)受管理的轉(zhuǎn)發(fā)元件向包應(yīng)用的動作或一組行動。例如,用于實(shí)現(xiàn)邏輯路由器的很多流條目之一可以指定:如果包(i)已經(jīng)被分配給邏輯路由器以及(ii)具有特定范圍內(nèi)的目的地IP地址(例如,10.0.0.0/24),則執(zhí)行動作(i)將特定邏輯入口端口寫入到對于包的寄存器中以及(ii)將包重新提交到受管理的轉(zhuǎn)發(fā)元件以用于進(jìn)一步的處理。在一些實(shí)施例中,流產(chǎn)生模塊1330通過對存儲在狀態(tài)存儲器1310中的數(shù)據(jù)和從路由處理引擎1320接收的信息執(zhí)行表映射操作(例如,連接操作)來產(chǎn)生流條目。在一些實(shí)施例中,表映射引擎1315的流產(chǎn)生模塊1330輸出經(jīng)由OpenFlow協(xié)議分發(fā)的數(shù)據(jù)。

在一些實(shí)施例中,配置數(shù)據(jù)產(chǎn)生器1335產(chǎn)生對于受管理的轉(zhuǎn)發(fā)元件、以及邏輯路由器和L3網(wǎng)關(guān)在其中操作的名稱空間的數(shù)據(jù)。對于受管理的轉(zhuǎn)發(fā)元件,配置數(shù)據(jù)可以包括端口配置和/或隧道配置、以及其他數(shù)據(jù)。盡管MFE接收作為流條目的包處理數(shù)據(jù),但是,實(shí)現(xiàn)用于分布式邏輯路由器的L3網(wǎng)關(guān)的名稱空間接收以與配置數(shù)據(jù)相同方式分發(fā)的數(shù)據(jù)元組形式的包處理指令。例如,在一些實(shí)施例中,對于名稱空間,名稱空間所駐留的網(wǎng)關(guān)主機(jī)接收作為由配置數(shù)據(jù)產(chǎn)生器1335產(chǎn)生的數(shù)據(jù)元組的名稱空間的定義,并且還接收具有該形式的它的路由表和其他網(wǎng)絡(luò)棧配置。與流產(chǎn)生模塊1330一樣,一些實(shí)施例的配置數(shù)據(jù)產(chǎn)生器1335通過對存儲在狀態(tài)存儲器1310中的數(shù)據(jù)和從路由處理引擎1320接收的信息執(zhí)行表映射操作(例如,連接操作)來產(chǎn)生配置數(shù)據(jù)。在一些實(shí)施例中,配置數(shù)據(jù)產(chǎn)生器1335輸出經(jīng)由OVSDB協(xié)議分發(fā)的數(shù)據(jù)。

一些實(shí)施例的路由處理引擎1320從表映射引擎1315接收輸入的一組路由(例如,基于邏輯路由器的邏輯端口所連接到的子網(wǎng)自動產(chǎn)生的路由、通過API 1305接收的靜態(tài)路由、由表映射引擎1315基于邏輯路由器連接而產(chǎn)生的動態(tài)路由),并且為了標(biāo)識對于由邏輯路由器路由的每一個(gè)網(wǎng)絡(luò)地址范圍的最終邏輯目的地,對路由執(zhí)行遞歸遍歷處理。當(dāng)多個(gè)輸入路由對于特定的網(wǎng)絡(luò)地址或地址范圍提供相矛盾的信息時(shí),一些實(shí)施例的路由處理引擎1320確定哪一個(gè)路由具有更高的優(yōu)先級。一些輸入路由可以提供下一跳地址而不是對于路由的輸出端口。在這些情況下,路由處理引擎遞歸地遍歷該組輸入路由直到達(dá)到指定目的地輸出端口或放棄包動作的路由為止。路由處理引擎1320返回具有為每個(gè)路由指定的最終動作(例如,放棄包、發(fā)送到特定的輸出端口)的該組輸出路由。在一些實(shí)施例中,路由處理引擎1320以與表映射引擎1315不同的語言(例如,C++)來實(shí)現(xiàn)。

控制器1300將由表映射引擎1315產(chǎn)生的對于邏輯路由器的流條目和配置數(shù)據(jù)(以及例如對于其他轉(zhuǎn)發(fā)元件(諸如邏輯網(wǎng)絡(luò)的邏輯交換機(jī))的其他數(shù)據(jù))經(jīng)由狀態(tài)分發(fā)接口1325分發(fā)到主機(jī)。圖中所示的主機(jī)包括用于托管VM的第一機(jī)器1340和用于托管實(shí)現(xiàn)L3網(wǎng)關(guān)的名稱空間的第二機(jī)器1345。主機(jī)1340和1345均包括用于處理包的受管理的轉(zhuǎn)發(fā)元件(例如,OVS),而網(wǎng)關(guān)主機(jī)1345還包括用于L3網(wǎng)關(guān)的名稱空間。

在一些實(shí)施例中,控制器1300通過其他網(wǎng)絡(luò)控制器的分層結(jié)構(gòu)來分發(fā)數(shù)據(jù),如上面圖4中所示的。在這樣的實(shí)施例中,狀態(tài)分發(fā)接口是與用作將數(shù)據(jù)分發(fā)到主機(jī)(并且可能執(zhí)行附加的數(shù)據(jù)元組的轉(zhuǎn)換)的中介的其他控制器的接口。在一些實(shí)施例中,控制器1300使用遠(yuǎn)程過程調(diào)用(RPC)通道與其它控制器進(jìn)行通信。

在其他實(shí)施例中,控制器1300直接與主機(jī)1340和1345(以及許多其他主機(jī))相接口連接以分發(fā)數(shù)據(jù)。在一些這樣的實(shí)施例中,控制器使用兩個(gè)通道與每個(gè)主機(jī)通信:用于分發(fā)由流條目產(chǎn)生模塊1330產(chǎn)生的流條目供受管理的轉(zhuǎn)發(fā)元件使用的第一通道(例如,OpenFlow),和用于分發(fā)由配置數(shù)據(jù)產(chǎn)生器1335產(chǎn)生的配置數(shù)據(jù)的第二通道(例如,OVSDB)。

現(xiàn)在將描述在網(wǎng)絡(luò)控制器1300處理邏輯路由器信息的操作期間通過網(wǎng)絡(luò)控制器1300的數(shù)據(jù)流。圖13包括幾個(gè)劃圈數(shù)字,其指示進(jìn)入、通過和離開網(wǎng)絡(luò)控制器1300的不同數(shù)據(jù)流。本領(lǐng)域技術(shù)人員將認(rèn)識到,一些實(shí)施例的控制器將處理除了所示出的數(shù)據(jù)以外的數(shù)據(jù),并且該圖中的數(shù)據(jù)流旨在代表具體地與由網(wǎng)絡(luò)控制器1300管理的兩個(gè)邏輯路由器有關(guān)的所執(zhí)行的操作和所傳送的數(shù)據(jù)。

如圈1所示,API 1305接收創(chuàng)建或修改邏輯路由器1205的配置的命令。具體地,在這個(gè)示例中,命令修改為邏輯路由器1205存儲的路由。該命令可以是創(chuàng)建新的靜態(tài)路由、創(chuàng)建邏輯路由器的新端口、修改邏輯端口所連接到的子網(wǎng)等。

作為結(jié)果,如圈2所示,API 1305修改了在狀態(tài)存儲器1310中存儲的對于邏輯路由器1205的邏輯結(jié)構(gòu)1350(例如,對象,諸如C++對象)。該圖示意性地示出了存儲RIB(一組輸入路由)和FIB(一組輸出路由)的邏輯路由器數(shù)據(jù)結(jié)構(gòu)1350。雖然一些實(shí)施例使用這樣的結(jié)構(gòu),但是其他實(shí)施例存儲由邏輯路由器擁有的對于每一個(gè)輸入路由的數(shù)據(jù)結(jié)構(gòu)(例如,對象)。在處理后,在一些實(shí)施例中,邏輯路由器還存儲對于每一個(gè)路由的狀態(tài)數(shù)據(jù)結(jié)構(gòu)(例如,對象)。其他這樣的實(shí)施例修改處理后的路由數(shù)據(jù)結(jié)構(gòu)以包括狀態(tài)數(shù)據(jù)。

當(dāng)邏輯路由器結(jié)構(gòu)1350的配置狀態(tài)被修改時(shí),表映射引擎1315檢索邏輯路由器的狀態(tài),如圖中的圈3所示。表映射引擎1315基于這個(gè)新配置數(shù)據(jù)執(zhí)行幾個(gè)操作。因?yàn)榭刂破?300是第二邏輯路由器1210的主控制器,控制器產(chǎn)生對于邏輯路由器1210的新動態(tài)路由,并且修改在階段存儲器1310中存儲的對于邏輯路由器1210的數(shù)據(jù)結(jié)構(gòu)1355,如圈4所示。表映射引擎1355通過例如創(chuàng)建對于所產(chǎn)生的動態(tài)路由的新路由對象來修改對于數(shù)據(jù)結(jié)構(gòu)1355的該組輸入路由。

除了產(chǎn)生對于第二邏輯路由器1210的動態(tài)路由外,表映射引擎1315處理對于第一邏輯路由器1205的新輸入路由。表映射引擎1315將路由數(shù)據(jù)傳遞到路由處理引擎1320,而不是計(jì)算對于第一邏輯路由器1205的狀態(tài)(例如,流條目等),如圈5所示。

路由處理引擎1320執(zhí)行路由選擇和遍歷操作,以便標(biāo)識對于邏輯路由器的輸出路由表。在一些實(shí)施例中,路由處理引擎1320采用對于邏輯路由器的每一個(gè)新的或修改的路由作為輸入,并且輸出對于每一個(gè)路由的狀態(tài)數(shù)據(jù)。例如,對于指定下一跳IP地址的新靜態(tài)路由,路由處理引擎確定是否使用該新路由,并且,如果使用,則確定對于該路由的最終輸出端口或?qū)τ谠撀酚傻暮诙吹淖罱K動作(例如,放棄包)。路由處理引擎1320將該組輸出路由返回到表映射引擎1315,如圈6所示。

在這個(gè)時(shí)候,表映射引擎1315執(zhí)行幾個(gè)動作。如圈7所示,由路由處理引擎計(jì)算的輸出路由數(shù)據(jù)被存儲在邏輯路由器數(shù)據(jù)結(jié)構(gòu)1350中。這個(gè)圖概念性地示出了該數(shù)據(jù)被存儲在FIB中。用于輸入配置數(shù)據(jù)的概念性RIB和用于輸出數(shù)據(jù)的FIB代表在傳統(tǒng)網(wǎng)絡(luò)中由物理路由器執(zhí)行的RIB到FIB轉(zhuǎn)換的類比。

表映射引擎1315還使用由路由處理引擎1320提供的輸出路由數(shù)據(jù)來產(chǎn)生流條目和配置數(shù)據(jù)。指定特定網(wǎng)絡(luò)地址范圍被路由到特定邏輯端口的路由將被編碼為與網(wǎng)絡(luò)地址范圍中的目的地地址進(jìn)行匹配、以及將包發(fā)送到具有特定下一跳IP地址的邏輯端口的動作(在一些情況下,簡單地將下一跳IP地址所對應(yīng)的MAC地址編碼到流條目中,以避免對ARP請求的需要)。在一些情況下,邏輯路由器還指定其他數(shù)據(jù)(例如,路由策略等),表映射引擎1315還將該其他數(shù)據(jù)編碼在流條目中。因?yàn)镸FE在VM主機(jī)和網(wǎng)關(guān)主機(jī)上均操作,如圈8所示,表映射引擎通過狀態(tài)分發(fā)接口1325將流條目分發(fā)到主機(jī)1340和主機(jī)1345(雖然在兩個(gè)主機(jī)之間分發(fā)的流條目中的至少一些是不同的)。

此外,因?yàn)榈谝贿壿嬄酚善?210連接到外部網(wǎng)絡(luò),該路由器具有實(shí)現(xiàn)在主機(jī)1345上的名稱空間中的L3網(wǎng)關(guān)。因此,表映射引擎1315使用來自路由處理引擎1320的輸出路由數(shù)據(jù)來產(chǎn)生對于名稱空間的配置數(shù)據(jù)。在一些實(shí)施例中,該配置數(shù)據(jù)(i)定義名稱空間的存在并且(ii)提供對于名稱空間中的網(wǎng)絡(luò)棧的配置信息,包括路由表。因此,來自路由處理引擎1320的輸出路由數(shù)據(jù)被用來產(chǎn)生定義對于名稱空間的路由表的一組數(shù)據(jù)元組,該名稱空間實(shí)現(xiàn)對于邏輯路由器的L3網(wǎng)關(guān)。如圈9所示,這個(gè)數(shù)據(jù)通過狀態(tài)分發(fā)接口1325被分發(fā)到網(wǎng)關(guān)主機(jī)1345。如上所述,流條目數(shù)據(jù)元組和配置數(shù)據(jù)元組均可以通過網(wǎng)絡(luò)控制器的分層結(jié)構(gòu)來被分發(fā),而不是直接從控制器1300分發(fā)到主機(jī)1340和1345(例如,通過管理兩個(gè)不同主機(jī)1340和1345的兩個(gè)不同網(wǎng)絡(luò)控制器)。

因?yàn)楸碛成湟娈a(chǎn)生對于第二邏輯路由器1210的新輸入路由(如圈4所示存儲的動態(tài)路由),新路由遍歷以及數(shù)據(jù)元組產(chǎn)生和分發(fā)對于該邏輯路由器也是需要的。因此,如圈10所示,表映射引擎從邏輯路由器對象1355檢索輸入狀態(tài)。雖然不存在需要將任何動態(tài)路由傳播到第一邏輯路由器1205的新路由,對于第一邏輯路由器描述的其他操作由網(wǎng)絡(luò)控制器1300執(zhí)行。

表映射引擎1315將輸入路由數(shù)據(jù)發(fā)送到路由處理引擎1320(如圈11所示),路由處理引擎1320返回輸出路由數(shù)據(jù)(如圈12所示)。在這個(gè)時(shí)候,如圈13所示,表映射引擎將輸出路由數(shù)據(jù)存儲在數(shù)據(jù)結(jié)構(gòu)1355中。此外,表映射引擎1315的流產(chǎn)生模塊1330產(chǎn)生對于第二邏輯路由器1210的新的流條目,并且將這些流條目分發(fā)到主機(jī)1340和1345(如圈14所示)。雖然第二邏輯路由器不具有任何網(wǎng)關(guān)端口,包可以從具有VM 5或VM 6的目的地地址的外部網(wǎng)絡(luò)到達(dá)主機(jī)1345上的L3網(wǎng)關(guān)。在這種情況下,為了網(wǎng)關(guān)主機(jī)1345處的MFE能執(zhí)行第一跳處理,需要對于第二邏輯路由器1210的流條目。但是,對于實(shí)現(xiàn)在名稱空間中的L3網(wǎng)關(guān)的附加配置數(shù)據(jù)沒有被分發(fā)到任何網(wǎng)關(guān)主機(jī),因?yàn)椴淮嬖趯τ谠撨壿嬄酚傻木W(wǎng)關(guān)。

雖然關(guān)于實(shí)現(xiàn)第一邏輯路由器1205的操作被示為完全在關(guān)于第二邏輯路由器1210的操作之前(除了動態(tài)路由傳播之外),本領(lǐng)域技術(shù)人員將認(rèn)識到,這些操作可以同時(shí)執(zhí)行或以重疊的方式執(zhí)行。例如,表映射引擎可以處理來自路由處理引擎的輸出數(shù)據(jù),以便產(chǎn)生對于第一邏輯路由器的流條目和配置數(shù)據(jù),而路由處理引擎執(zhí)行對于第二邏輯路由器的路由遍歷。

圖13示出了控制器1300是兩個(gè)邏輯路由器的主控制器的情況,而圖14概念性地示出了兩個(gè)網(wǎng)絡(luò)控制器1400和1450,這兩個(gè)網(wǎng)絡(luò)控制器分別是第一邏輯路由器1205和第二邏輯路由器1210的主控制器,以及當(dāng)在第一控制器400處接收對于第一邏輯路由器1205的新路由時(shí)通過控制器的數(shù)據(jù)流。第一網(wǎng)絡(luò)控制器1400包括API 1405、狀態(tài)存儲器1410、表映射引擎1415、路由處理引擎1420、狀態(tài)分發(fā)接口1425和控制器到控制器接口1430。相似地,第二網(wǎng)絡(luò)控制器1450包括API 1455、狀態(tài)存儲器1460、表映射引擎1465、路由處理引擎1470、狀態(tài)分發(fā)接口1475和控制器到控制器接口1480。

示出的大多數(shù)組件執(zhí)行與上文描述的在圖13中示出的對于網(wǎng)絡(luò)控制器1300的那些功能相同的功能??刂破鞯娇刂破鹘涌?430和1480使得在控制器1400和1450之間能夠交換配置狀態(tài)數(shù)據(jù)。在一些實(shí)施例中,控制器只交換配置狀態(tài)(即,通過API接收的狀態(tài)),并且不交換經(jīng)計(jì)算的狀態(tài)(例如,由表映射引擎產(chǎn)生的動態(tài)路由或其他信息、流條目和配置數(shù)據(jù)等)。在一些實(shí)施例中,控制器-控制器接口1430和1480是用于在RPC通道上通信的RPC接口。

通過網(wǎng)絡(luò)控制器1400和1450的數(shù)據(jù)流以與圖13示出的操作相似的方式開始。如圈1和圈2所示,第一控制器1400的API 1405接收對于第一個(gè)邏輯路由器1205的新路由信息(例如,靜態(tài)路由、新邏輯端口),并將這個(gè)信息存儲在邏輯路由器對象1445的輸入路由信息中。

因?yàn)檫@個(gè)信息是新配置狀態(tài)數(shù)據(jù),控制器1400通過控制器到控制器接口1430和1480上的通信,自動與控制器1450共享邏輯路由器對象1445的變化(如圈3所示)。作為結(jié)果,對于邏輯路由器1210的新接收到的數(shù)據(jù)被存儲在存儲在狀態(tài)存儲1460中的邏輯路由器對象1445的副本中。

在第一控制器1400處,表映射引擎1415從來自狀態(tài)存儲器1410的對于第一邏輯路由器1205的一組輸入路由中檢索經(jīng)更新的數(shù)據(jù)(如圈4所示),但是不計(jì)算對于第二邏輯路由器1210的任何動態(tài)路由,因?yàn)檫@個(gè)控制器不是第二邏輯路由器的主控器。替代地,表映射引擎1415執(zhí)行對于第一邏輯路由器1205的處理,將數(shù)據(jù)發(fā)送到路由處理引擎1420并且接收返回的輸出路徑信息(如圈5和圈6所示),然后將這個(gè)數(shù)據(jù)存儲在邏輯路由器對象1445(如圈7所示)中,并且產(chǎn)生用于分發(fā)到主機(jī)1435和1440的流條目數(shù)據(jù)和配置數(shù)據(jù)(如圈8和圈9所示)。

相應(yīng)地,在第二控制器1450處,表映射引擎1465也從對于第一邏輯路由器的一組輸入路由中檢索經(jīng)更新的數(shù)據(jù)(如圈10所示)。雖然表映射引擎1465不執(zhí)行對于第一路由器的任何路由處理或流產(chǎn)生,該表映射引擎1465將新路由傳播到第二邏輯路由器1210的輸入路由表,并將該路由存儲在對于第二邏輯路由器1210的對象1485中(如圈11所示)。

此時(shí),因?yàn)閷τ诘诙壿嬄酚善鞯妮斎肼酚蓴?shù)據(jù)已經(jīng)改變,表映射引擎1465從狀態(tài)存儲器1460中檢索該數(shù)據(jù)(如圈12所示)。表映射引擎1465將這個(gè)輸入路由數(shù)據(jù)發(fā)送到路由處理引擎1470,并且接收返回的輸出路由數(shù)據(jù)(如圈13和圈14所示)。最后,表映射引擎將該數(shù)據(jù)存儲在邏輯路由器對象1485中(如圈15所示),并且產(chǎn)生并分發(fā)對于第二邏輯路由器1210的流條目(如圈16所示)。由于以上通過參考圖13所述的原因,控制器1450將流條目分發(fā)到合適的VM主機(jī)1435和網(wǎng)關(guān)主機(jī)1440。

上述圖概念性地示出了通過網(wǎng)絡(luò)控制器(或多個(gè)控制器)的數(shù)據(jù)流以執(zhí)行動態(tài)路由(和其他與邏輯路由器相關(guān)的操作)。圖15概念性地示出了由一些實(shí)施例的網(wǎng)絡(luò)控制器執(zhí)行的處理1500,以處理在控制器處接收的對于邏輯路由器的新輸入路由。處理1500的各種不同操作可以由網(wǎng)絡(luò)控制器的不同模塊來執(zhí)行(例如,API、表映射引擎等)。

如圖所示,處理1500通過接收對于特定邏輯路由器的輸入路由來開始(在1505)。這些輸入路由可通過在網(wǎng)絡(luò)控制器處的API來接收(例如,經(jīng)由來自云管理應(yīng)用的通信,或來自登錄到控制器的網(wǎng)絡(luò)管理員的直接通信),或者經(jīng)由狀態(tài)共享機(jī)制(例如,RPC通道)從同一個(gè)網(wǎng)絡(luò)控制系統(tǒng)(例如,管理同一個(gè)數(shù)據(jù)中心)中的另一個(gè)網(wǎng)絡(luò)控制器接收。接收到的該組輸入路由可能是一個(gè)或多個(gè)靜態(tài)路由配置、使得自動創(chuàng)建新連接路由的對于邏輯路由器的一個(gè)或多個(gè)邏輯端口的配置(例如,創(chuàng)建新的邏輯端口,改變邏輯端口所連接到的接口等)等。

然后,該處理確定(在1510)新的路由是否是通過API接收的,或者該路由是否是經(jīng)由狀態(tài)共享機(jī)制從另一個(gè)控制器接收的。當(dāng)路由是通過API接收的時(shí),處理將該路由分發(fā)(在1515)到與該控制器共享配置狀態(tài)數(shù)據(jù)的其它網(wǎng)絡(luò)控制器。在一些實(shí)施例中,集群中的網(wǎng)絡(luò)控制器在完全連接的網(wǎng)中進(jìn)行操作,并且因此當(dāng)一個(gè)控制器通過其API接收配置狀態(tài)時(shí),該控制器與集群中的每一個(gè)其它控制器共享數(shù)據(jù)。因此,如果第一控制器從第二控制器接收配置數(shù)據(jù),則第一控制器不需要重新共享配置狀態(tài)。對于在網(wǎng)絡(luò)控制系統(tǒng)中不同地相互連接的控制器,可以使用關(guān)于處理1500的不同變型,以便確保所有控制器接收輸入配置狀態(tài)。

在根據(jù)需要共享輸入數(shù)據(jù)后,處理1500確定(在1520)(執(zhí)行處理1500的)控制器是否是特定邏輯路由器的主控器。在一些實(shí)施例中,這個(gè)操作是由控制器的表映射引擎執(zhí)行的。當(dāng)表映射引擎檢索新配置數(shù)據(jù)時(shí),引擎執(zhí)行操作以確定配置數(shù)據(jù)是否是對于(例如,由其UUID標(biāo)識的)邏輯轉(zhuǎn)發(fā)元件的,其中,該控制器是該邏輯轉(zhuǎn)發(fā)元件的主控器。當(dāng)控制器不是特定邏輯路由器的主控器時(shí),處理前進(jìn)到如下所述的操作1535。

當(dāng)控制器是接收到輸入配置數(shù)據(jù)的特定邏輯路由器的主控制器時(shí),該處理計(jì)算(在1525)對于邏輯路由器的輸出路由。在一些實(shí)施例中,如先前圖13和圖14所示,輸出路由由路由處理引擎計(jì)算,該路由處理引擎執(zhí)行遞歸路由遍歷操作以標(biāo)識輸出路由。例如,如果接收了到特定下一跳網(wǎng)絡(luò)地址的新靜態(tài)路由,該路由處理引擎通過遍歷為特定邏輯路由器指定的其他路由來標(biāo)識用于路由的輸出邏輯端口或放棄動作。

在計(jì)算了輸出路由后,處理1500將輸出路由分發(fā)(在1530)到實(shí)現(xiàn)特定邏輯路由器的網(wǎng)絡(luò)元件。如上所述,在一些實(shí)施例中,這需要計(jì)算對于以下兩者的數(shù)據(jù)元組:向VM主機(jī)和網(wǎng)關(guān)主機(jī)處的受管理的轉(zhuǎn)發(fā)元件提供的流條目,以及向作為在那些主機(jī)上的L3網(wǎng)關(guān)操作的名稱空間的網(wǎng)關(guān)主機(jī)提供的配置數(shù)據(jù)(當(dāng)特定邏輯路由器具有一個(gè)或多個(gè)L3網(wǎng)關(guān)時(shí))。在計(jì)算了數(shù)據(jù)元組后,控制器將數(shù)據(jù)直接分發(fā)到主機(jī)或通過一組網(wǎng)絡(luò)控制器(例如,上文參考圖4所述的分層網(wǎng)絡(luò)控制系統(tǒng))分發(fā)到主機(jī)。

然后,該處理確定(在1535)執(zhí)行處理的控制器是否是特定邏輯路由器所連接到的任何其他邏輯路由器的主控器。如在圖2或圖12所示,兩個(gè)邏輯路由器可以在邏輯網(wǎng)絡(luò)內(nèi)進(jìn)行連接。在一些情況下,不同的控制器將是邏輯網(wǎng)絡(luò)內(nèi)的不同邏輯路由器的主控器,或PLR和TLR將具有不同的主控制器。當(dāng)特定的邏輯路由器不連接到任何其他邏輯路由器時(shí)(在這種情況下,不需要執(zhí)行動態(tài)路由),或控制器不是特定邏輯路由器所連接到的任何邏輯路由器的主控器,處理在不執(zhí)行任何動態(tài)路由的情況下結(jié)束。

當(dāng)控制器是連接到接收新路由信息的特定邏輯路由器的至少一個(gè)邏輯路由器的主控器時(shí),處理自動將新路由信息傳播到(在1540)這些其他邏輯路由器中的每一個(gè)(對于這些其他邏輯路由器中的每一個(gè),該控制器是主控器)。在一些情況下,特定邏輯路由器可以連接到多個(gè)其他邏輯路由器,其中向這些其他邏輯路由器傳播路由,但是本控制器是這些路由器中的一個(gè)路由器的僅有的主控器,在這種情況下,該控制器處理向那個(gè)邏輯路由器的路由的傳播,而不同的控制器控制向其他邏輯路由器的路由的傳播。

對于連接到特定邏輯路由器的第二邏輯路由器,當(dāng)對于特定邏輯路由器的新路由信息是將除特定邏輯路由器所連接到的第二邏輯路由器的端口的地址之外的下一跳地址列出的靜態(tài)路由時(shí),該處理將靜態(tài)路由傳播到第二邏輯路由器。如果新路由是對于除兩個(gè)邏輯路由器為了相互連接所連接到的前綴之外的前綴的連接路由,則該處理將動態(tài)路由傳播到第二邏輯路由器。對于以上情況中的任一種,對于動態(tài)路由的下一跳網(wǎng)絡(luò)地址是第二邏輯路由器所連接到的特定邏輯路由器的端口的地址。此外,當(dāng)傳播靜態(tài)路由時(shí),一些實(shí)施例提供附加的路由長度信息供在執(zhí)行路由遍歷時(shí)使用。在傳統(tǒng)的BGP中,所通告的路由可以包括當(dāng)遵循特定路由時(shí)包將穿過的多個(gè)自治系統(tǒng)。類似地,當(dāng)動態(tài)傳播路由時(shí),一些實(shí)施例提供關(guān)于所傳播的路由是否是將包發(fā)送到L3網(wǎng)關(guān)或其他邏輯路由器的靜態(tài)路由或連接路由的至少一個(gè)指示。在后一種情況下,接收動態(tài)路由的邏輯路由器可以具有到達(dá)所路由的前綴的、不同的更直接的方式。

在將路由傳播到其他邏輯路由器后,處理1500計(jì)算(在1545)對于其他邏輯路由器的經(jīng)更新的輸出路由。在一些實(shí)施例中,如先前的圖13和圖14所示,輸出路由由路由處理引擎計(jì)算,路由處理引擎執(zhí)行遞歸路由遍歷操作以標(biāo)識輸出路由。例如,當(dāng)路由被動態(tài)傳播到邏輯路由器時(shí),路由處理引擎標(biāo)識是否使用動態(tài)路由,并且如果使用該路由,則通過遍歷為特定邏輯路由器指定的其他路由來標(biāo)識對于路由的輸出邏輯端口或放棄動作。

在計(jì)算了輸出路由后,處理1500將輸出路由分發(fā)(在1550)到實(shí)現(xiàn)特定邏輯路由器的網(wǎng)絡(luò)元件。如上所述,在一些實(shí)施例中,這需要計(jì)算對于以下兩者的數(shù)據(jù)元組:向VM主機(jī)和網(wǎng)關(guān)主機(jī)處的受管理的轉(zhuǎn)發(fā)元件提供的流條目,以及向作為那些主機(jī)上的L3網(wǎng)關(guān)操作的名稱空間的網(wǎng)關(guān)主機(jī)提供的配置數(shù)據(jù)(當(dāng)特定邏輯路由器具有一個(gè)或多個(gè)L3網(wǎng)關(guān)時(shí))。在計(jì)算了數(shù)據(jù)元組后,控制器將數(shù)據(jù)直接分發(fā)到主機(jī)或通過一組網(wǎng)絡(luò)控制器(例如,上文參考圖4所述的分層網(wǎng)絡(luò)控制系統(tǒng))分發(fā)到主機(jī)。然后處理結(jié)束。

圖16概念性地示出了邏輯網(wǎng)絡(luò),以及圖17-19示出了對于這個(gè)網(wǎng)絡(luò)中的三個(gè)路由器的路由表。這些示例將用于示出根據(jù)一些實(shí)施例的由網(wǎng)絡(luò)控制器進(jìn)行的邏輯路由器之間的路由的動態(tài)傳播。

如上所述,圖16概念性地示出邏輯網(wǎng)絡(luò)1600,邏輯網(wǎng)絡(luò)1600包括三個(gè)邏輯路由器1605-1615,所有邏輯路由器都連接在子網(wǎng)18.0.0.0/28上。第一邏輯路由器1605具有在該子網(wǎng)上的IP地址為18.0.0.1的端口W,第二個(gè)邏輯路由器1610具有在該子網(wǎng)上的IP地址為18.0.0.3的端口T,以及第三邏輯路由器1615具有在該子網(wǎng)上的IP地址為18.0.0.2的端口Q。此外,第一邏輯路由器1605具有附連的兩個(gè)邏輯交換機(jī):附連到其端口X的子網(wǎng)10.0.0.0/24上的第一邏輯交換機(jī)1620和附連到其端口Y的子網(wǎng)11.0.0.0/24上的第二邏輯交換機(jī)1625。第二邏輯路由器1610具有附連到其端口V的子網(wǎng)12.0.0.0/24上的第三邏輯交換機(jī)1630,并且第三邏輯路由器1615具有附連到其端口P的子網(wǎng)13.0.0.0/24上的第四邏輯交換機(jī)1635。

最后,第一邏輯路由器1605和第三邏輯路由器1615各自具有連接到外部物理路由器的一個(gè)網(wǎng)關(guān)端口。第一邏輯路由器1605具有子網(wǎng)20.0.0.0/28上的IP地址為20.0.0.1的端口Z,該端口Z連接到物理路由器1640的IP地址為20.0.0.2的接口。第二邏輯路由器1610具有子網(wǎng)22.0.0.0/28上的IP地址為22.0.0.1的端口S,該端口S連接到物理路由器1645的IP地址為22.0.0.2的接口。

圖17反映了在三個(gè)邏輯路由器1605-1615的各自的主控制器已經(jīng)(i)產(chǎn)生了對于每個(gè)邏輯路由器的連接路由、(ii)接收或產(chǎn)生了對于每個(gè)邏輯路由器的靜態(tài)缺省路由以及(iii)動態(tài)地將路由在邏輯路由器之間傳播之后的對于這三個(gè)邏輯路由器1605-1615的初始路由表1700、1710和1720。路由表中示出的路由是輸入路由(在遞歸路由處理操作前)。為了簡明起見,這些路由僅示出了被路由的前綴、和下一跳IP地址或輸出端口。所有路由假設(shè)允許具有所路由的前綴的包(而不是放棄這樣的包),并且沒有列出優(yōu)先級。類型(連接、靜態(tài)或動態(tài))是由路由的名稱指示的(例如,C1是連接路由、S1是靜態(tài)路由等)。

如圖所示,第一路由表1700包括對于第一路由器1605的四個(gè)邏輯端口的四個(gè)連接路由1701-1704。因此,例如,第一連接路由1701指定將地址匹配前綴10.0.0.0/24的所有包發(fā)送到邏輯端口X,而第四連接路由指定將地址匹配前綴20.0.0.0/28的所有包發(fā)送到邏輯端口Z(即,發(fā)送到外部網(wǎng)絡(luò)上)。第二路由表1710僅包括兩個(gè)連接路由1711和1712,因?yàn)榈诙壿嬄酚善髦挥袃蓚€(gè)邏輯端口T和V。第三路由表1720具有對于其三個(gè)邏輯端口的三個(gè)連接路由1721-1723(一個(gè)附連有邏輯交換機(jī)、第二個(gè)連接到具有其它路由器的子網(wǎng),以及第三個(gè)連接到外部網(wǎng)絡(luò)。)

每一個(gè)路由表還包括靜態(tài)缺省路由。第一路由表1700包括指定將所有包(前綴0.0.0.0/0)發(fā)送到下一跳20.0.0.2的靜態(tài)路由1705,該下一跳是物理網(wǎng)絡(luò)20.0.0.0/28上對于邏輯路由器1605的網(wǎng)關(guān)所連接到的物理路由器接口。類似地,第二路由表1720包括指定將所有包發(fā)送到下一跳22.0.0.2的路由1724,該下一跳是物理網(wǎng)絡(luò)22.0.0.0/28上對于邏輯路由器1615的網(wǎng)關(guān)所連接到的物理路由器接口。路由表1710包括指定18.0.0.1(第一邏輯路由器1605的端口W)作為對于所有其他不匹配的包的下一跳IP的靜態(tài)缺省路由1713。因此,將通過第一邏輯路由器1605而不是第三邏輯路由器1615在邏輯上發(fā)送從VM 5和VM 6發(fā)送的包,除非提出更具體的路由。

最后,路由表1700、1710和1720各自包括幾個(gè)動態(tài)路由。對于第一邏輯路由器1605的第一路由表1710包括三個(gè)動態(tài)路由:對于前綴12.0.0.0/24的從邏輯路由器1610(根據(jù)其連接路由之一)傳播的具有下一跳地址18.0.0.3的第一路由1706,以及對于前綴13.0.0.0/24和前綴22.0.0.28的從第三邏輯路由器1615(根據(jù)其兩個(gè)連接路由)傳播的均具有下一跳地址18.0.0.2的第二動態(tài)路由1707和第三動態(tài)路由1708。缺省路由1713或1724都不會被傳播到邏輯路由器1605,因?yàn)槁酚杀?710已經(jīng)包含了對于前綴0.0.0.0/0的缺省路由(一些實(shí)施例傳播這個(gè)路由,但它不會被使用,因?yàn)槁酚杀碇幸呀?jīng)存在更高優(yōu)先級的靜態(tài)路由)。此外,不傳播對于連接路由器(18.0.0.0/28)的子網(wǎng)的連接路由。

類似地,對于第二邏輯路由器1610的第二路由表1720包括五個(gè)動態(tài)路由。動態(tài)路由1714、1715和1716對應(yīng)于第一邏輯路由器1605的連接路由,而動態(tài)路由1717和1718對應(yīng)于第三邏輯路由器1615的連接路由。對于第三邏輯路由器1615,第三路由表1730具有四個(gè)動態(tài)路由。動態(tài)路由1725-1727對應(yīng)于第一邏輯路由器1605的連接路由,而動態(tài)路由1728對應(yīng)于第二邏輯路由器1610的連接路由。

在如圖16中所示地配置邏輯網(wǎng)絡(luò)(以及如圖17中所示地輸入缺省路由)之后不久,網(wǎng)絡(luò)控制系統(tǒng)將產(chǎn)生路由表1700、1710和1720,并且隨后執(zhí)行路由處理、產(chǎn)生流條目和網(wǎng)關(guān)配置數(shù)據(jù),并且為了在受管理的網(wǎng)絡(luò)中實(shí)現(xiàn)邏輯網(wǎng)絡(luò)1600將這個(gè)數(shù)據(jù)分發(fā)到受管理的轉(zhuǎn)發(fā)元件和網(wǎng)關(guān)。

圖18和圖19示出了網(wǎng)絡(luò)控制系統(tǒng)接收對于三個(gè)邏輯路由器1605-1615之一的新靜態(tài)路由、以及這些路由如何通過路由表1700-1720傳播的示例。在圖18中,對于第一邏輯路由器1605的新靜態(tài)路由1805被網(wǎng)絡(luò)控制器之一接收,該網(wǎng)絡(luò)控制器保持對于邏輯網(wǎng)絡(luò)1600的狀態(tài)數(shù)據(jù)以及管理其中實(shí)現(xiàn)邏輯網(wǎng)絡(luò)的網(wǎng)絡(luò)。靜態(tài)路由1805指定將匹配子網(wǎng)23.0.0.0/24的包發(fā)送到下一跳地址20.0.0.2。雖然給出將所有包0.0.0.0/0發(fā)送這個(gè)相同的下一跳地址的缺省路由似乎是多余的,但是,如果缺省路由改變(例如因?yàn)榈诙W(wǎng)關(guān)端口被添加到邏輯路由器1605),則路由1805可能變得重要。接收路由1805的控制器可以是管理第一邏輯路由器1605的主控制器或不同的控制器。在以上任一情況下,通過其API接收靜態(tài)路由的控制器使用控制器到控制器狀態(tài)共享機(jī)制與其他控制器共享輸入路由。

如圖所示,在對于每一個(gè)其他邏輯路由器1610和1615的主控制器處,這個(gè)靜態(tài)路由被傳播到對于其他邏輯路由器的路由表1710和1720。因此,對于第二邏輯路由器1610的路由表1710接收指定將匹配前綴23.0.0.0/24的包發(fā)送到下一跳地址18.0.0.1(邏輯路由器1605的端口W)的新動態(tài)路由1810。對于第三邏輯路由器1605的路由表1720接收也指定將匹配前綴23.0.0.0/24的包發(fā)送到下一跳地址18.0.0.1的類似的新動態(tài)路由1815。因?yàn)檫@個(gè)路由在網(wǎng)關(guān)端口中比其缺省路由更具體,當(dāng)VM 7或VM 8發(fā)送包到子網(wǎng)23.0.0.0/24中的地址時(shí),接收包的受管理的轉(zhuǎn)發(fā)元件將通過對于第三邏輯路由器1615和第一邏輯路由器1605的流水線來處理包,并且將包發(fā)送到對于第一邏輯路由器1605的L3網(wǎng)關(guān)。

在圖19中,在對于第三邏輯路由器1615的網(wǎng)絡(luò)控制器之一處接收新靜態(tài)路由1905。靜態(tài)路由1905指定將匹配前綴27.0.0.0/24的包發(fā)送到下一跳18.0.0.1(即,邏輯路由器1605的端口W)。這使得從VM 7或VM 8發(fā)送到這個(gè)子網(wǎng)中的地址的包被第一邏輯路由器1605處理并且從對于第一邏輯路由器1605的L3網(wǎng)關(guān)發(fā)出,而不是從第三邏輯路由器1615的L3網(wǎng)關(guān)發(fā)出。此外,第二邏輯路由器1610的主控制器傳播這個(gè)路由以在路由表1710中創(chuàng)建新動態(tài)路由1910,該動態(tài)路由指定下一跳IP地址18.0.0.2(第三邏輯處理器1615的端口Q)。因此,從VM 5或VM 6發(fā)送到子網(wǎng)27.0.0.0/24中的地址的包將在從第一邏輯路由器的L3網(wǎng)關(guān)發(fā)出前,在第一跳MFE處被全部三個(gè)邏輯處理器1605-1615處理。

但是,在一些實(shí)施例中,動態(tài)路由傳播機(jī)制認(rèn)識到,第二邏輯路由器1610與第一邏輯路由器1605和第三邏輯路由器1610在同一個(gè)子網(wǎng)中,并指定第二邏輯路由器直接將包發(fā)送到第一邏輯路由器。替代地,只是因?yàn)橛捎谙乱惶鳬P地址對應(yīng)于邏輯路由器的端口而沒有將路由1905動態(tài)地傳播到第一邏輯路由器1605的路由表1700,路由1905也不會被傳播到第二邏輯路由器1610的路由表1710,這是因?yàn)橄乱惶鳬P是在與第二邏輯路由器的端口T相同的子網(wǎng)(18.0.0.0/28)上。

IV.電子系統(tǒng)

上面描述的特征和應(yīng)用中的很多被實(shí)現(xiàn)為被指定為記錄在計(jì)算機(jī)可讀存儲介質(zhì)(也被稱為計(jì)算機(jī)可讀介質(zhì))上的一組指令的軟件處理。當(dāng)這些指令被一個(gè)或多個(gè)處理單元(例如,一個(gè)或多個(gè)處理器、處理器的核芯、或其它處理單元)執(zhí)行時(shí),它們使得處理單元執(zhí)行指令中所指示的動作。計(jì)算機(jī)可讀介質(zhì)示例包括但不限于:CD-ROM,閃存驅(qū)動器,RAM芯片,硬盤驅(qū)動器,EPROM等。計(jì)算機(jī)可讀介質(zhì)不包括載波和無線傳遞或通過有線連接傳遞的電子信號。

在此說明書中,術(shù)語“軟件”是指包括駐留在只讀存儲器中的固件或可以被讀入到存儲器中供處理器進(jìn)行處理的存儲在磁貯存器中的應(yīng)用。此外,在一些實(shí)施例中,多個(gè)軟件發(fā)明可以在保持明顯的軟件發(fā)明的同時(shí)被實(shí)現(xiàn)為更大程序的子部分。在一些實(shí)施例中,多個(gè)軟件發(fā)明也可以被實(shí)現(xiàn)為分離的程序。最后,這里所描述的一起實(shí)現(xiàn)軟件發(fā)明的分離程序的任意組合在本發(fā)明的范圍之內(nèi)。在一些實(shí)施例中,當(dāng)被安裝以在一個(gè)或多個(gè)電子系統(tǒng)上操作時(shí),軟件程序定義執(zhí)行并運(yùn)行軟件程序的操作的一個(gè)或多個(gè)特定的機(jī)器實(shí)現(xiàn)方式。

圖20概念性地示出了用以實(shí)現(xiàn)本發(fā)明的一些實(shí)施例的電子系統(tǒng)2000。電子系統(tǒng)2000可以被用于執(zhí)行上述控制、虛擬化或操作系統(tǒng)應(yīng)用中的任一個(gè)。該電子系統(tǒng)2000可以是計(jì)算機(jī)(例如,臺式計(jì)算機(jī)、個(gè)人計(jì)算機(jī)、平板計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、大型機(jī)、刀片計(jì)算機(jī)等)、電話、PDA或任何其他種類的電子設(shè)備。這樣的電子系統(tǒng)包括各種類型的計(jì)算機(jī)可讀介質(zhì)和對于各種其他類型的計(jì)算機(jī)可讀介質(zhì)的接口。電子系統(tǒng)2000包括總線2005、處理單元2010、系統(tǒng)存儲器2025、只讀存儲器2030、永久存儲設(shè)備2035、輸入設(shè)備2040和輸出設(shè)備2045。

總線2005統(tǒng)一代表所有系統(tǒng)、外圍設(shè)備、和芯片組總線,該總線可通信地連接電子系統(tǒng)2000的多個(gè)內(nèi)部設(shè)備。例如,總線2005將處理單元2010與只讀存儲器2030、系統(tǒng)存儲器2025和永久性存儲設(shè)備2035可通信地連接。

處理單元2010從這些各種存儲器單元檢索要執(zhí)行的指令和要處理的數(shù)據(jù),以執(zhí)行本發(fā)明的處理。在不同實(shí)施例中,處理單元可以是單個(gè)處理器或多核處理器。

只讀存儲器(ROM)2030存儲處理單元2010和電子系統(tǒng)的其他模塊所需要的靜態(tài)數(shù)據(jù)和指令。另一方面,永久性存儲設(shè)備2035是讀取和寫入存儲設(shè)備。該設(shè)備是即使在電子系統(tǒng)2000斷電的情況下也存儲指令和數(shù)據(jù)的非易失性存儲單元。本發(fā)明的一些實(shí)施例使用大容量存儲設(shè)備(諸如磁盤或光盤及其相應(yīng)的盤驅(qū)動器)作為永久存儲設(shè)備2035。

其他實(shí)施例使用可移除的存儲設(shè)備(諸如軟盤、閃存驅(qū)動器等)作為永久性存儲設(shè)備。像永久性存儲設(shè)備2035一樣,系統(tǒng)存儲器2025是讀取和寫入存儲設(shè)備。但是與永久性存儲設(shè)備2035不同,系統(tǒng)存儲器是易失性讀取和寫入設(shè)備(諸如隨機(jī)存取存儲器)。系統(tǒng)存儲器存儲處理器在運(yùn)行時(shí)需要的一些指令和數(shù)據(jù)。在一些實(shí)施例中,本發(fā)明的處理被存儲在系統(tǒng)存儲器2025、永久性存儲設(shè)備2035和/或只讀存儲器2030中。為了執(zhí)行一些實(shí)施例的處理,處理單元2010從這些各種存儲器單元中檢索要執(zhí)行的指令和要處理的數(shù)據(jù)。

總線2005還連接到輸入設(shè)備2040和輸出設(shè)備2045。輸入設(shè)備使得用戶可以對電子系統(tǒng)傳送信息和選擇命令。輸入設(shè)備2040包括字母數(shù)字鍵盤和指點(diǎn)設(shè)備(也被稱為“光標(biāo)控制設(shè)備”)。輸出設(shè)備2045顯示由電子系統(tǒng)產(chǎn)生的圖像。輸出設(shè)備包括打印機(jī)和顯示設(shè)備(諸如陰極射線管(CRT)或液晶顯示器(LCD))。一些實(shí)施例包括諸如觸摸屏的用作輸入和輸出裝置設(shè)備的設(shè)備。

最后,如圖20所示,總線2005還通過網(wǎng)絡(luò)適配器(未示出)將電子系統(tǒng)2000與網(wǎng)絡(luò)2065耦合。以這種方式,計(jì)算機(jī)可以是計(jì)算機(jī)網(wǎng)絡(luò)(諸如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)、或內(nèi)聯(lián)網(wǎng),或網(wǎng)絡(luò)的網(wǎng)絡(luò)(諸如因特網(wǎng)))的一部分。電子系統(tǒng)2000的任何或所有組件可以與本發(fā)明一起使用。

一些實(shí)施例包括電子組件,諸如微處理器、將計(jì)算機(jī)程序指令存儲在機(jī)器可讀或計(jì)算機(jī)可讀介質(zhì)中(可選地稱為計(jì)算機(jī)可讀存儲介質(zhì),機(jī)器可讀介質(zhì)或機(jī)器可讀存儲介質(zhì))的貯存器和存儲器。這樣的計(jì)算機(jī)可讀介質(zhì)的一些例子包括RAM、ROM、只讀緊湊盤(CD-ROM)、可記錄緊湊盤(CD-R)、可重寫緊湊盤(CD-RW)、只讀數(shù)字多功能盤(例如,DVD-ROM,雙層DVD-ROM)、各種可記錄/可重寫的DVD(例如,DVD-RAM、DVD-RW、DVD+RW等)、閃速存儲器(例如,SD卡、迷你SD卡,微型SD卡等)、磁盤驅(qū)動器和/或固態(tài)硬盤驅(qū)動器、只讀藍(lán)光光盤和可記錄藍(lán)光光盤、超密度光盤,任何其它光學(xué)或磁性介質(zhì)、以及軟盤。計(jì)算機(jī)可讀介質(zhì)可以存儲可由至少一個(gè)處理單元執(zhí)行的并且包括用于執(zhí)行各種操作的多組指令的計(jì)算機(jī)程序。計(jì)算機(jī)程序或計(jì)算機(jī)代碼的示例包括機(jī)器代碼(諸如由編譯器產(chǎn)生的)和包括由計(jì)算機(jī)、電子組件、或微處理器使用解釋器執(zhí)行的更高級別的代碼的文件。

雖然上述討論主要指的是執(zhí)行軟件的微處理器或多核處理器,一些實(shí)施例由一個(gè)或多個(gè)集成電路(諸如專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA))執(zhí)行。在一些實(shí)施例中,這樣的集成電路執(zhí)行執(zhí)行存儲在該電路本身中的指令。

如在本說明書中所使用的,術(shù)語“計(jì)算機(jī)”、“服務(wù)器”、“處理器”和“存儲器”都是指電子設(shè)備或其它技術(shù)設(shè)備。這些術(shù)語排除了人或人群。為了說明的目的,術(shù)語“顯示”或“正在顯示”表示顯示在電子設(shè)備上。如在本說明書中所使用的,術(shù)語“計(jì)算機(jī)可讀介質(zhì)”、“計(jì)算機(jī)可讀介質(zhì)”和“機(jī)器可讀介質(zhì)”完全被限制為對以可被計(jì)算機(jī)讀取的形式存儲信息的有形的物理的對象。這些術(shù)語排除任何無線信號、有線下載信號、以及任何其他短暫的信號。

雖然參考許多具體細(xì)節(jié)描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員將認(rèn)識到,本發(fā)明可以在不偏離本發(fā)明的精神的情況下以其它特定形式實(shí)施。另外,許多附圖(包括圖9和圖15)概念性地示出了處理。這些處理的具體操作可以不按示出和描述的確切順序來執(zhí)行。具體操作可以不在一個(gè)連續(xù)的操作序列中執(zhí)行,并且不同的具體操作可以在不同的實(shí)施例中執(zhí)行。此外,處理可以使用幾個(gè)子處理來實(shí)現(xiàn),或作為更大的大型處理的一部分實(shí)現(xiàn)。因此,本領(lǐng)域技術(shù)人員將理解,本發(fā)明并不受上述說明性細(xì)節(jié)的限制,而是由所附權(quán)利要求來定義。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
光山县| 石台县| 邹城市| 丰城市| 华亭县| 临沧市| 嘉峪关市| 临西县| 神池县| 沙坪坝区| 金塔县| 玉龙| 常德市| 富川| 枣阳市| 酉阳| 莱州市| 阿荣旗| 临泽县| 新巴尔虎右旗| 定远县| 鹤山市| 三亚市| 承德县| 西乌珠穆沁旗| 台江县| 大英县| 万州区| 逊克县| 扶沟县| 宁德市| 灵山县| 安西县| 荣昌县| 波密县| 辽阳市| 吉首市| 乐都县| 金川县| 报价| 明光市|