用于配置中間盒的網(wǎng)絡(luò)控制系統(tǒng)的制作方法
【專利摘要】一些實施例提供了一種用于在包括一組節(jié)點的托管系統(tǒng)中配置邏輯中間盒的方法。邏輯中間盒是包括連接一組終端機的一組邏輯轉(zhuǎn)發(fā)元件的邏輯網(wǎng)絡(luò)的一部分。該方法接收用于邏輯中間盒的一組配置數(shù)據(jù)。所述方法使用所存儲的描述終端機的物理位置的一組表來識別實現(xiàn)邏輯中間盒的一組節(jié)點。該方法提供用于分發(fā)到所識別的節(jié)點的邏輯中間盒配置。
【專利說明】用于配置中間盒的網(wǎng)絡(luò)控制系統(tǒng)
【背景技術(shù)】
[0001]許多當前的企業(yè)具有大型且復(fù)雜的網(wǎng)絡(luò),其包括交換機、集線器、路由器、中間盒(例如,防火墻)、服務(wù)器、工作站、以及支持各種連接、應(yīng)用和系統(tǒng)的其它聯(lián)網(wǎng)裝置。計算機網(wǎng)絡(luò)增加的復(fù)雜性,包括虛擬機遷移、動態(tài)工作負載、多租戶、以及客戶特定的服務(wù)質(zhì)量和安全配置需要更好的范式以用于網(wǎng)絡(luò)控制。網(wǎng)絡(luò)傳統(tǒng)地已通過單個網(wǎng)絡(luò)組件的低級配置來管理。網(wǎng)絡(luò)配置通常取決于底層網(wǎng)絡(luò):例如,利用訪問控制列表(“ACL”)條目阻止用戶的訪問需要知道用戶的當前IP地址。更復(fù)雜的任務(wù)需要更廣泛的網(wǎng)絡(luò)知識:迫使訪客用戶的端口 80業(yè)務(wù)(traffic)穿越HTTP代理需要知道當前的網(wǎng)絡(luò)拓撲和每個訪客的位置。在網(wǎng)絡(luò)交換元件在多用戶之間共享的情況下,該處理具有增加的難度。
[0002]作為響應(yīng),存在朝向被稱為軟件定義網(wǎng)絡(luò)(SDN)的新的網(wǎng)絡(luò)控制范式的日漸發(fā)展。在SDN范式中,在網(wǎng)絡(luò)中的一個或多個服務(wù)器上運行的網(wǎng)絡(luò)控制器以每用戶為基礎(chǔ)控制、維護并且實現(xiàn)對共享的網(wǎng)絡(luò)交換元件的轉(zhuǎn)發(fā)行為進行管控的控制邏輯。做出網(wǎng)絡(luò)管理決策通常需要了解網(wǎng)絡(luò)狀態(tài)。為了便于做出管理決策,網(wǎng)絡(luò)控制器創(chuàng)建并且維護網(wǎng)絡(luò)狀態(tài)的視圖,并且提供管理應(yīng)用可以訪問網(wǎng)絡(luò)狀態(tài)的視圖的應(yīng)用程序接口。
[0003]維護大型網(wǎng)絡(luò)(包括數(shù)據(jù)中心和企業(yè)網(wǎng)絡(luò)兩者)的主要目標中的一些是可擴展性、移動性和多租戶。處理這些目標中的一個所采用的許多方法導(dǎo)致阻礙其它目標中的至少一個。例如,可以容易地在L2域內(nèi)為虛擬機提供網(wǎng)絡(luò)移動性,但是L2域不能擴展到大的尺寸。此外,保持用戶隔離極大地使移動性復(fù)雜化。這樣,需要可以滿足可擴展性、移動性和多租戶目標的改進的解決方案。
【發(fā)明內(nèi)容】
[0004]一些實施例提供一種網(wǎng)絡(luò)控制系統(tǒng),其允許用戶指定包括一個或多個中間盒以及邏輯數(shù)據(jù)路徑集的邏輯網(wǎng)絡(luò)。用戶指定(I)包括網(wǎng)絡(luò)內(nèi)的邏輯轉(zhuǎn)發(fā)元件(例如,邏輯路由器、邏輯交換機)和中間盒位置的網(wǎng)絡(luò)拓撲、(2)用于將業(yè)務(wù)轉(zhuǎn)發(fā)到中間盒的路由策略、以及(3)對于不同的中間盒的配置。一些實施例的網(wǎng)絡(luò)控制系統(tǒng)使用一組網(wǎng)絡(luò)控制器以將實現(xiàn)網(wǎng)絡(luò)拓撲的流條目和中間盒配置二者分發(fā)到受管理交換元件和分布式中間盒在其上操作的主機、以及在主機的外部操作的集中式中間盒設(shè)備。
[0005]在一些實施例中,網(wǎng)絡(luò)控制器以分層的方式布置。用戶將拓撲和配置信息鍵入到邏輯控制器、或?qū)⒃撔畔⒆鳛橐唤M記錄傳遞給邏輯控制器的輸入轉(zhuǎn)換控制器中。邏輯控制器通信地耦合到一組物理控制器,其中每個物理控制器負責將配置數(shù)據(jù)分發(fā)到一個或多個主機。也就是說,每個主機被分配給充當該主機的主裝置的特定物理控制器。邏輯控制器識別哪些主機需要接收配置,然后將適當?shù)男畔鬟f給管理所識別的主機的物理控制器。在將記錄導(dǎo)出到物理控制器之前,邏輯控制器對流條目數(shù)據(jù)進行轉(zhuǎn)換。然而,在一些實施例中,中間盒配置數(shù)據(jù)不被轉(zhuǎn)換。
[0006]物理控制器接收信息,對數(shù)據(jù)中的至少一些執(zhí)行附加轉(zhuǎn)換,并將轉(zhuǎn)換的數(shù)據(jù)傳遞到主機(即,主機上的受管理交換元件和中間盒)。與邏輯控制器一樣,在一些實施例中,物理控制器對去往受管理交換機的流條目進行轉(zhuǎn)換,但不對中間盒配置數(shù)據(jù)執(zhí)行任何轉(zhuǎn)換。然而,一些實施例的物理控制器對中間盒產(chǎn)生附加數(shù)據(jù)。具體地,因為在主機上(例如,作為守護進程或應(yīng)用)操作的分布式中間盒應(yīng)用元件可以為不同的租戶網(wǎng)絡(luò)執(zhí)行幾個單獨的中間盒處理,所以物理控制器將切分標識符分配給對于中間盒的特定配置。該切分標識符還被傳送到受管理交換元件,在一些實施例中,該受管理交換元件將該標識符添加到去往中間盒的分組。
[0007]前述的
【發(fā)明內(nèi)容】
旨在用作對于本發(fā)明的一些實施例的簡要介紹。它意不在于作為本文檔中所公開的所有創(chuàng)造性主題的介紹或概述。后面的【具體實施方式】以及在【具體實施方式】中參照的附圖將進一步描述在該
【發(fā)明內(nèi)容】
中所描述的實施例以及其它的實施例。因此,為了理解本文檔所描述的所有實施例,需要
【發(fā)明內(nèi)容】
、【具體實施方式】和附圖的全面審閱。而且,因為所要求保護的主題可以在不脫離主題的精神的情況下以其它特定的形式體現(xiàn),所以要求保護的主題不受
【發(fā)明內(nèi)容】
、【具體實施方式】以及附圖中的說明性的細節(jié)限制,而是由所附的權(quán)利要求限定。
【專利附圖】
【附圖說明】
[0008]本發(fā)明的新穎特征在所附權(quán)利要求中闡述。然而,為了解釋的目的,本發(fā)明的幾個實施例在以下附圖中闡述。
[0009]圖1概念性地示出一些實施例的邏輯網(wǎng)絡(luò)拓撲、以及在由網(wǎng)絡(luò)控制系統(tǒng)進行配置之后實現(xiàn)該邏輯網(wǎng)絡(luò)的物理網(wǎng)絡(luò)。
[0010]圖2概念性地示出一些實施例的網(wǎng)絡(luò)控制系統(tǒng),用于配置受管理交換元件和分布式中間盒元件(以及集中式中間盒)以便根據(jù)用戶指定實現(xiàn)邏輯網(wǎng)絡(luò)。
[0011]圖3-5概念性地示出用戶將與邏輯網(wǎng)絡(luò)內(nèi)的中間盒相關(guān)的信息鍵入到網(wǎng)絡(luò)控制系統(tǒng)中、以及數(shù)據(jù)在網(wǎng)絡(luò)控制系統(tǒng)中經(jīng)歷的轉(zhuǎn)化的示例。
[0012]圖6示出一些實施例的網(wǎng)絡(luò)控制器的示例架構(gòu)。
[0013]圖7-9概念性地示出一些實施例中被執(zhí)行以將分組從第一虛擬機發(fā)送到第二虛擬機的不同動作。
[0014]圖10概念性地示出實現(xiàn)本發(fā)明的一些實施例的電子系統(tǒng)。
【具體實施方式】
[0015]在以下本發(fā)明的詳細描述中,對本發(fā)明的許多細節(jié)、示例和實施例進行闡述和描述。然而,對于本領(lǐng)域技術(shù)人員將清楚和明顯的是,本發(fā)明不限于所闡述的實施例,并且可以在沒有所討論的特定細節(jié)和示例的情況下實施本發(fā)明。
[0016]一些實施例提供一種網(wǎng)絡(luò)控制系統(tǒng),其允許用戶指定包括一個或多個中間盒(例如,防火墻、負載均衡器、網(wǎng)絡(luò)地址轉(zhuǎn)換器、入侵檢測系統(tǒng)(IDS)、廣域網(wǎng)(WAN)優(yōu)化器等)以及邏輯數(shù)據(jù)路徑集的邏輯網(wǎng)絡(luò)。用戶指定(I)包括網(wǎng)絡(luò)內(nèi)的邏輯轉(zhuǎn)發(fā)元件(例如,邏輯路由器、邏輯交換機)和中間盒位置的網(wǎng)絡(luò)拓撲、⑵用于將業(yè)務(wù)轉(zhuǎn)發(fā)到中間盒的路由策略、以及(3)對于不同的中間盒的配置。一些實施例的網(wǎng)絡(luò)控制系統(tǒng)使用一組網(wǎng)絡(luò)控制器以將實現(xiàn)網(wǎng)絡(luò)拓撲的流條目(flow entry)和中間盒配置二者分發(fā)到受管理交換元件和分布式中間盒在其上操作的主機、以及在主機的外部操作的集中式中間盒設(shè)備。[0017]在一些實施例中,網(wǎng)絡(luò)控制器以分層的方式布置。用戶將拓撲和配置信息鍵入到邏輯控制器、或?qū)⒃撔畔⒆鳛橐唤M記錄傳遞給邏輯控制器的輸入轉(zhuǎn)換控制器中。邏輯控制器通信地耦合到一組物理控制器,其中每個物理控制器負責將配置數(shù)據(jù)分發(fā)到一個或多個主機。也就是說,每個主機被分配給充當該主機的主裝置(master)的特定物理控制器。邏輯控制器識別哪些主機需要接收配置,然后將適當?shù)男畔鬟f給管理所識別的主機的物理控制器。在將記錄導(dǎo)出到物理控制器之前,邏輯控制器對流條目數(shù)據(jù)進行轉(zhuǎn)換。然而,在一些實施例中,中間盒配置數(shù)據(jù)不被轉(zhuǎn)換。
[0018]物理控制器接收信息,對數(shù)據(jù)中的至少一些執(zhí)行附加轉(zhuǎn)換,并將轉(zhuǎn)換的數(shù)據(jù)傳遞到主機(即,主機上的受管理交換元件和中間盒)。與邏輯控制器一樣,在一些實施例中,物理控制器對去往受管理交換機的流條目進行轉(zhuǎn)換,但不對中間盒配置數(shù)據(jù)執(zhí)行任何轉(zhuǎn)換。然而,一些實施例的物理控制器對中間盒產(chǎn)生附加數(shù)據(jù)。具體地,因為在主機上(例如,作為守護進程(daemon)或應(yīng)用)操作的分布式中間盒應(yīng)用元件可以為不同的租戶網(wǎng)絡(luò)執(zhí)行幾個單獨的中間盒處理,所以物理控制器將切分(slice)標識符分配給對于中間盒的特定配置。該切分標識符還被傳送到受管理交換元件,在一些實施例中,該受管理交換元件將該標識符添加到去往中間盒的分組。
[0019]圖1概念性地示出了一些實施例的邏輯網(wǎng)絡(luò)拓撲100、以及通過網(wǎng)絡(luò)控制系統(tǒng)進行配置之后實現(xiàn)該邏輯網(wǎng)絡(luò)的物理網(wǎng)絡(luò)。為了解釋的目的,網(wǎng)絡(luò)拓撲100為簡化的網(wǎng)絡(luò)。該網(wǎng)絡(luò)包括由邏輯L3路由器115連接的兩個邏輯L2交換機105和110。邏輯交換機105連接虛擬機120和125,而邏輯交換機110連接虛擬機130和135。邏輯路由器115還連接到外部網(wǎng)絡(luò)145。
[0020]另外,中間盒140附連到邏輯路由器115。本領(lǐng)域的普通技術(shù)人員將認識到,網(wǎng)絡(luò)拓撲100表示可以將中間盒并入到其中的僅一個特定的邏輯網(wǎng)絡(luò)拓撲。在各個實施例中,中間盒可以直接位于兩個其它組件(例如,)之間、直接位于外部網(wǎng)絡(luò)與邏輯路由器之間(例如,以便監(jiān)視和處理進入或退出邏輯網(wǎng)絡(luò)的所有業(yè)務(wù))、或者位于更復(fù)雜網(wǎng)絡(luò)中的其它位置中。
[0021]在圖1中所示的架構(gòu)中,中間盒140不位于從一個域到另一個域或者外部世界與域之間的直接業(yè)務(wù)流中。因此,分組將不被發(fā)送到中間盒,除非對于邏輯路由器115指定(例如,由諸如網(wǎng)絡(luò)管理員的用戶指定)確定哪些分組應(yīng)被發(fā)送到中間盒以進行處理的路由策略。一些實施例使得能夠使用基于目的地地址(例如,目的地IP或MAC地址)以外的數(shù)據(jù)來轉(zhuǎn)發(fā)分組的策略路由規(guī)則。例如,用戶可以指定(例如,通過網(wǎng)絡(luò)控制器應(yīng)用程序接口(API))應(yīng)將下述分組引導(dǎo)到中間盒140以進行處理:具有由邏輯交換機105交換的邏輯子網(wǎng)中的源IP地址且具有連接到邏輯交換機105的邏輯入站端口(ingress port)的所有分組、或者從外部網(wǎng)絡(luò)145進入網(wǎng)絡(luò)的去往由邏輯交換機110交換的邏輯子網(wǎng)的所有分組。
[0022]由用戶(例如,網(wǎng)絡(luò)管理員)鍵入的邏輯網(wǎng)絡(luò)拓撲通過網(wǎng)絡(luò)控制系統(tǒng)被分發(fā)到各個物理機器,以便實現(xiàn)邏輯網(wǎng)絡(luò)。圖1的第二階段概念性地示出了邏輯網(wǎng)絡(luò)100的這樣的物理實現(xiàn)150。具體地,物理實現(xiàn)150示出了幾個節(jié)點,包括第一主機155、第二主機160和第三主機165。三個節(jié)點中的每一個托管(host)邏輯網(wǎng)絡(luò)100的至少一個虛擬機,其中虛擬機120托管在第一主機155上,虛擬機125和135托管在第二主機160上,虛擬機130托管在第三主機165上。[0023]另外,主機中的每一個包括受管理交換元件(“MSE”)。一些實施例的受管理交換元件是實現(xiàn)用于一個或多個邏輯網(wǎng)絡(luò)的邏輯轉(zhuǎn)發(fā)元件的軟件轉(zhuǎn)發(fā)元件。例如,主機155-165中的MSE包括實現(xiàn)網(wǎng)絡(luò)100的邏輯轉(zhuǎn)發(fā)元件的轉(zhuǎn)發(fā)表中的流條目。具體地,主機上的MSE實現(xiàn)邏輯交換機105和110、以及邏輯路由器115。另一方面,一些實施例僅當連接到邏輯交換機的至少一個虛擬機位于特定節(jié)點處時才在該節(jié)點處實現(xiàn)邏輯交換機(即,在主機155處的MSE中僅實現(xiàn)邏輯交換機105和邏輯路由器115)。
[0024]一些實施例的實現(xiàn)300還包括連接到主機的池節(jié)點340。在一些實施例中,駐留在主機上的MSE執(zhí)行第一跳處理。也就是說,這些MSE是分組在從虛擬機被發(fā)送之后到達的第一轉(zhuǎn)發(fā)元件,并且試圖在該第一跳處執(zhí)行所有的邏輯交換和路由。然而,在一些情況下,特定的MSE可能沒有存儲含有網(wǎng)絡(luò)的所有邏輯轉(zhuǎn)發(fā)信息的流條目,并因此可能不知道對特定的分組如何處理。在一些這樣的實施例中,MSE將分組發(fā)送到池節(jié)點340以進行進一步處理。這些池節(jié)點是內(nèi)部的受管理交換元件,在一些實施例中,這些受管理交換元件存儲包含邏輯網(wǎng)絡(luò)的比邊緣軟件交換元件更大的一部分的流條目。
[0025]類似于邏輯交換元件在網(wǎng)絡(luò)100的虛擬機駐留在其上的主機上的分布,中間盒140分布在這些主機155-165上的中間盒元件上。在一些實施例中,中間盒模塊(或一組模塊)駐留在主機上(例如,在主機的超管理器(hypervisor)中操作)。
[0026]如所說明的,一些實施例的網(wǎng)絡(luò)控制系統(tǒng)用于配置分布式轉(zhuǎn)發(fā)元件(MSE)和中間盒。三個主機155-165中的每一個被分配給特定的物理控制器,其接收對于MSE的流條目以及對于中間盒的配置信息,對數(shù)據(jù)執(zhí)行任何必要的轉(zhuǎn)換,并將數(shù)據(jù)傳遞到主機上的元件。
[0027]盡管圖1僅示出了在主機155-165上實現(xiàn)的一個邏輯網(wǎng)絡(luò),但是一些實施例在該組主機上實現(xiàn)許多邏輯網(wǎng)絡(luò)(例如,對于不同的租戶)。這樣,特定的主機上的中間盒元件實際上可以存儲屬于幾個不同的邏輯網(wǎng)絡(luò)的幾個不同的中間盒的配置。例如,防火墻元件可以被虛擬化為實現(xiàn)兩個(或更多個)不同的防火墻。這些將有效地作為兩個獨立的中間盒處理進行操作,使得中間盒元件被切分成幾個(同一類型的)“虛擬”中間盒。
[0028]另外,當主機上的MSE將分組發(fā)送到中間盒時,一些實施例將切分標識符(或標簽)附加(例如,前置(Pr印end))到分組上以識別該分組正被發(fā)送到幾個虛擬中間盒中的哪個。當在用于單個邏輯網(wǎng)絡(luò)的同一中間盒元件上實現(xiàn)多個中間盒(例如,兩個不同的負載均衡器)時,切分標識符將需要識別特定的中間盒切分,而不僅僅識別分組所屬的邏輯網(wǎng)絡(luò)。不同的實施例可對于中間盒使用不同的切分標識符。
[0029]在一些實施例中,這些切分標識符由網(wǎng)絡(luò)控制系統(tǒng)分配。因為,對于諸如中間盒140的分布式中間盒,中間盒元件通常將僅從該主機上的MSE接收分組,所以可以由管理特定的中間盒元件(以及MSE)的物理控制器對于每個中間盒元件單獨分配切分標識符。在集中式中間盒(即,所有的MSE將分組發(fā)送到的單獨的物理設(shè)備)的情況下,對于在該設(shè)備上操作的虛擬中間盒,將使用單個切分標識符。在一些實施例中,管理該設(shè)備的物理控制器分配該標識符,并然后通過網(wǎng)絡(luò)控制系統(tǒng)將該標識符分發(fā)到其它的物理控制器,以便其它的物理控制器將信息傳遞到MSE。
[0030]以上示出了一些實施例的網(wǎng)絡(luò)中的邏輯中間盒的實現(xiàn)的示例。下面描述幾個更詳細的實施例。節(jié)I描述一些實施例的用于配置網(wǎng)絡(luò)以便實現(xiàn)包括防火墻的邏輯網(wǎng)絡(luò)的網(wǎng)絡(luò)控制系統(tǒng)。節(jié)II描述一些實施例的網(wǎng)絡(luò)控制器的架構(gòu)。接著,節(jié)III描述當分組通過中間盒時兩個虛擬機之間的分組處理。最后,節(jié)IV描述實現(xiàn)本發(fā)明的一些實施例的電子系統(tǒng)。
[0031]1.網(wǎng)絡(luò)控制系統(tǒng)
[0032]如上所述,為了對于受管理網(wǎng)絡(luò)預(yù)配置中間盒和受管理交換元件,一些實施例使用網(wǎng)絡(luò)控制系統(tǒng)。在一些實施例中,網(wǎng)絡(luò)控制系統(tǒng)是分層的一組網(wǎng)絡(luò)控制器,其中分層中的每個層次(level)在受管理交換元件和中間盒的預(yù)配置中執(zhí)行不同的功能。
[0033]圖2概念性地示出了一些實施例的網(wǎng)絡(luò)控制系統(tǒng)200,其用于配置受管理交換元件和分布式中間盒元件(以及集中式中間盒)以便根據(jù)用戶指定來實現(xiàn)邏輯網(wǎng)絡(luò)。如所示的,網(wǎng)絡(luò)控制系統(tǒng)包括輸入轉(zhuǎn)換控制器205、中間盒配置接口 207、邏輯控制器210、物理控制器215和220、以及主機225-235。如所示的,主機225-235包括受管理交換元件和分布式中間盒元件兩者。在一些實施例中,網(wǎng)絡(luò)控制系統(tǒng)可以包括均耦合到單個物理控制器的集中式中間盒(例如,物理設(shè)備、個別的虛擬機)。
[0034]在一些實施例中,中間盒配置接口 207實際上是輸入轉(zhuǎn)換控制器205的一部分;在該圖中,這兩個被單獨示出為它們接收不同的輸入并且包括用于與用戶通信的不同的API。在一些實施例中,網(wǎng)絡(luò)控制系統(tǒng)中的控制器中的每一個具有用作輸入轉(zhuǎn)換控制器、邏輯控制器和/或物理控制器的能力。也就是說,每個控制器機器包括用于執(zhí)行不同的控制器類型中的任何一種的功能的必要的應(yīng)用堆棧(stack),但是在任何時間僅使用這些應(yīng)用堆棧中的一個??商娲?,在一些實施例中,給定的控制器可以僅具有作為這些類型中的特定一種類型的控制器(例如,作為物理控制器)操作的功能。另外,控制器的不同組合可以在同一物理機器中運行。例如,輸入轉(zhuǎn)換控制器205、中間盒配置接口 207和邏輯控制器210可以在用戶與其交互的同一計算設(shè)備中運行。
[0035]此外,圖2 (以及后面的圖3-5)中所示的控制器中的每一個被示為單個控制器。然而,這些控制器中的每一個實際上可以是以分布式方式操作以執(zhí)行邏輯控制器、物理控制器或輸入轉(zhuǎn)換控制器的處理的控制器集群。
[0036]一些實施例的輸入轉(zhuǎn)換控制器205包括對從用戶接收的網(wǎng)絡(luò)配置信息進行轉(zhuǎn)換的輸入轉(zhuǎn)換應(yīng)用。例如,用戶可以指定包括關(guān)于哪些機器屬于哪個邏輯域中的指定的網(wǎng)絡(luò)拓撲,諸如圖1中所示的網(wǎng)絡(luò)拓撲。這有效地指定邏輯數(shù)據(jù)路徑集、或一組邏輯轉(zhuǎn)發(fā)元件。對于邏輯轉(zhuǎn)發(fā)元件中的每一個,用戶指定連接到邏輯交換機的機器或其它元件(即,對于邏輯交換機分配哪些邏輯端口)。在一些實施例中,用戶還對于機器指定IP地址。
[0037]例如,用戶可以鍵入網(wǎng)絡(luò)拓撲,諸如圖1所示的網(wǎng)絡(luò)拓撲,其中機器連接到邏輯交換機,邏輯路由器連接兩個邏輯交換機,并且一個或多個中間盒也連接到邏輯路由器的端口。如流產(chǎn)生列所示,輸入轉(zhuǎn)換控制器205將鍵入的網(wǎng)絡(luò)拓撲轉(zhuǎn)換為描述網(wǎng)絡(luò)拓撲的邏輯控制平面數(shù)據(jù)。在一些實施例中,將邏輯控制平面數(shù)據(jù)表達為一組數(shù)據(jù)庫表記錄(例如,用nLog語言)??刂破矫嬷忻枋鎏囟ǖ奶摂M機附連到網(wǎng)絡(luò)的條目可以聲明,特定的MAC地址B位于特定的邏輯交換機的特定的邏輯端口 X處。
[0038]中間盒配置接口 207從用戶接收中間盒配置輸入。在一些實施例中,每個不同的中間盒(例如,來自不同提供商的中間盒、不同類型的中間盒)可以具有特定于中間盒實現(xiàn)的不同API。也就是說,不同的中間盒實現(xiàn)具有呈現(xiàn)給用戶的不同接口(即,用戶將必須對于不同的特定中間盒鍵入不同格式的信息)。如圖2的中間盒數(shù)據(jù)產(chǎn)生列所示,用戶鍵入中間盒配置,其由中間盒API轉(zhuǎn)換成中間盒配置數(shù)據(jù)。[0039]在一些實施例中,由配置接口 207轉(zhuǎn)換的中間盒配置數(shù)據(jù)也是一組記錄,其中每個記錄指定特定的規(guī)則。在一些實施例中,這些記錄與傳播到受管理交換元件的流條目在格式上類似。事實上,一些實施例使用控制器上的相同應(yīng)用以傳播關(guān)于流條目的防火墻配置記錄,并且對于這些記錄使用相同的表映射語言(例如,nLog)。
[0040]盡管該圖示出了正被發(fā)送到邏輯控制器的中間盒配置數(shù)據(jù),但是一些實施例的一些集中式中間盒僅可通過與中間盒裝置的直接接口訪問。也就是說,不是鍵入發(fā)送到邏輯控制器并通過網(wǎng)絡(luò)控制系統(tǒng)分發(fā)的配置,用戶而是直接將配置鍵入到中間盒裝置中。在這樣的情況下,用戶仍將需要將將分組發(fā)送到中間盒的路由策略作為網(wǎng)絡(luò)拓撲配置的一部分鍵入。在一些這樣的實施例中,網(wǎng)絡(luò)控制系統(tǒng)仍將如下所述那樣對于中間盒產(chǎn)生切分數(shù)據(jù)(即,虛擬化標識符)。另一方面,在一些實施例中,用戶對于中間盒配置切分數(shù)據(jù),并且中間盒或用戶將該信息提供給網(wǎng)絡(luò)控制系統(tǒng)。
[0041]在一些實施例中,每個邏輯網(wǎng)絡(luò)由特定的邏輯控制器(例如,邏輯控制器210)管控。關(guān)于對于受管理交換元件的流產(chǎn)生,一些實施例的邏輯控制器210將從輸入轉(zhuǎn)換控制器205接收的邏輯控制平面數(shù)據(jù)轉(zhuǎn)換成邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù),并且將該邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù)轉(zhuǎn)換成通用控制平面數(shù)據(jù)。在一些實施例中,邏輯控制器應(yīng)用堆棧包括用于執(zhí)行第一轉(zhuǎn)換的控制應(yīng)用和用于執(zhí)行第二轉(zhuǎn)換的虛擬化應(yīng)用。在一些實施例中,這兩個應(yīng)用都使用用于將第一組表映射到第二組表的規(guī)則引擎。也就是說,將不同的數(shù)據(jù)平面表示為表(例如,nLog表),并且控制器應(yīng)用使用表映射引擎以在數(shù)據(jù)平面之間進行轉(zhuǎn)換。在一些實施例中,控制應(yīng)用和虛擬化應(yīng)用二者使用相同的規(guī)則引擎以執(zhí)行它們的轉(zhuǎn)換。
[0042]在一些實施例中,邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù)由在邏輯層次上描述的流條目組成。對于邏輯端口 X處的MAC地址B,邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù)可以包括指定如果分組的目的地與MAC B匹配則將該分組轉(zhuǎn)發(fā)到端口 X的流條目。
[0043]在一些實施例中,從邏輯轉(zhuǎn)發(fā)平面到物理控制平面的轉(zhuǎn)換將下述層添加到流條目,該層使得利用流條目預(yù)配置的受管理交換元件能夠?qū)⒃谖锢韺佣丝?例如,虛擬接口)處接收的分組變換到邏輯域中并在該邏輯域中執(zhí)行轉(zhuǎn)發(fā)。也就是說,當在物理層在網(wǎng)絡(luò)內(nèi)發(fā)送和接收業(yè)務(wù)分組時,根據(jù)由用戶鍵入的邏輯網(wǎng)絡(luò)拓撲做出轉(zhuǎn)發(fā)決策。在一些實施例中,從邏輯轉(zhuǎn)發(fā)平面到物理控制平面的變換使得能夠?qū)崿F(xiàn)網(wǎng)絡(luò)的這個方面。
[0044]如所示的,邏輯控制器將邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù)變換到通用物理控制平面,而物理控制器將通用物理控制平面數(shù)據(jù)變換到定制(customized)物理控制平面。一些實施例的通用物理控制平面數(shù)據(jù)是這樣的數(shù)據(jù)平面:即使當一些實施例的控制系統(tǒng)含有實現(xiàn)邏輯數(shù)據(jù)路徑集的大量受管理交換元件(例如,數(shù)千個)時,該數(shù)據(jù)平面也使得該控制系統(tǒng)能夠擴展。通用物理控制平面對不同的受管理交換元件的共有特性進行抽象,以便在不考慮受管理交換元件的差異和/或受管理交換元件的位置詳情的情況下表達物理控制平面數(shù)據(jù)。
[0045]對于以上所提到的示例(MAC B到邏輯端口 X的附連),通用物理控制平面將涉及幾個流條目。第一條目聲明,如果分組與特定的邏輯數(shù)據(jù)路徑集匹配(例如,基于在特定的邏輯入站端口處接收到的分組),并且目的地地址與MAC B匹配,則將該分組轉(zhuǎn)發(fā)到邏輯端口 X。這通過邏輯數(shù)據(jù)路徑集(從物理端口到邏輯端口的變換)將匹配添加到在邏輯域中執(zhí)行其分析的轉(zhuǎn)發(fā)條目。在一些實施例中,該流條目在通用物理控制平面和定制物理控制平面中是相同的。[0046]附加流被產(chǎn)生以將物理入站端口(例如,主機的虛擬接口)匹配到邏輯入站端口X (用于從MAC A接收的分組)、以及將邏輯端口 X匹配到物理受管理交換機的特定出站端口(egress port)(用于發(fā)送到MAC A的分組)。然而,這些物理入站和出戰(zhàn)端口是特定于含有受管理交換元件的主機的。這樣,通用物理控制平面條目包括抽象物理端口(即,非特定于任何特定的物理主機的端口的通用抽象)到邏輯入站端口,以及用于將邏輯出站端口映射到通用物理出站端口。
[0047]另一方面,在一些實施例中,中間盒配置數(shù)據(jù)不由邏輯控制器變換,而在其它實施例中,邏輯控制器至少執(zhí)行中間盒配置數(shù)據(jù)記錄的最少轉(zhuǎn)換。因為許多中間盒分組處理、修改和分析規(guī)則對分組的IP地址(或TCP連接狀態(tài))進行操作,并且發(fā)送到中間盒的分組將使該信息暴露(即,不封裝在邏輯端口信息內(nèi)),所以中間盒配置不需要從邏輯數(shù)據(jù)平面到物理數(shù)據(jù)平面的轉(zhuǎn)換。因此,相同的中間盒配置數(shù)據(jù)被從中間盒配置接口 207傳遞到邏輯控制器210,并然后被傳遞到物理控制器215和220。
[0048]為了分發(fā)物理控制平面數(shù)據(jù)以及中間盒配置數(shù)據(jù),邏輯控制器必須識別主機中的哪個(并因此物理控制器中的哪個)需要接收哪些流條目和哪些中間盒配置信息。在一些實施例中,邏輯控制器210存儲邏輯網(wǎng)絡(luò)的描述以及物理網(wǎng)絡(luò)的物理實現(xiàn)的描述。邏輯控制器接收對于分布式中間盒的一個或多個中間盒配置記錄,并識別各個節(jié)點中的哪個將需要接收配置信息。
[0049]在一些實施例中,整個中間盒配置被分發(fā)到所有主機處的中間盒元件,所以邏輯控制器識別其分組需要使用防火墻的至少一個虛擬機駐留在其上的所有機器。通常,所識別的機器是對于網(wǎng)絡(luò)中的所有虛擬機的主機(例如,就圖1所示的中間盒而言)。然而,如果網(wǎng)絡(luò)拓撲使得在某些主機處將從不需要中間盒,則一些實施例可以識別網(wǎng)絡(luò)中的虛擬機的子集。一些實施例以每記錄為基礎(chǔ)做出關(guān)于將配置數(shù)據(jù)發(fā)送到哪些主機的決策。也就是說,每個特定的規(guī)則可以僅應(yīng)用于虛擬機的子集(例如,僅來源于特定的虛擬機或虛擬機的子集的分組),并且僅運行這些虛擬機的主機需要接收記錄。
[0050]類似地,邏輯控制器識別哪些節(jié)點應(yīng)接收物理控制平面中的每個流條目。例如,實現(xiàn)邏輯交換機105的流條目被分發(fā)到主機155和160,而不是圖1的主機165。
[0051]一旦邏輯控制器識別了接收記錄的特定節(jié)點,邏輯控制器就識別管理這些特定節(jié)點的特定的物理控制器。在一些實施例中,每個主機具有分配的主物理控制器。因此,如果邏輯控制器僅將第一主機和第二主機識別為配置數(shù)據(jù)的目的地,則對于這些主機的物理控制器將被識別為從邏輯控制器接收數(shù)據(jù)(并且其它物理控制器將不接收該數(shù)據(jù))。對于集中式中間盒,邏輯控制器僅需要識別管理實現(xiàn)中間盒的設(shè)備的(單個)物理控制器。當集中式中間盒被實現(xiàn)為集群(例如,一組資源、主-備份集群等)時,集群中的中間盒設(shè)備中的每一個將接收配置數(shù)據(jù)。在一些實施例中,集群中的中間盒全部由單個物理控制器管理,而在其它實施例中,不同的物理控制器管理集群內(nèi)的不同的中間盒。
[0052]為了向主機供給中間盒配置數(shù)據(jù),一些實施例的邏輯控制器將數(shù)據(jù)推送到物理控制器(通過使用訪問邏輯控制器中的表映射引擎的輸出的導(dǎo)出模塊)。在其它實施例中,物理控制器從邏輯控制器的導(dǎo)出模塊請求配置數(shù)據(jù)(例如,響應(yīng)于配置數(shù)據(jù)可用的信號)。
[0053]如所描述的,物理控制器215和220中的每一個是一個或多個受管理交換元件(例如,位于主機內(nèi))的主裝置。在該示例中,第一物理控制器215是主機225和230處的受管理交換元件的主裝置,而第二物理控制器220是主機235處的受管理交換元件的主裝置。在一些實施例中,物理控制器接收用于邏輯網(wǎng)絡(luò)的通用物理控制平面數(shù)據(jù),并將該數(shù)據(jù)轉(zhuǎn)換成用于物理控制器管理的、需要接收數(shù)據(jù)的特定受管理交換機(因為物理控制器也可以管理不接收特定邏輯網(wǎng)絡(luò)的數(shù)據(jù)的附加的受管理交換元件)的定制物理控制平面數(shù)據(jù)。在其它實施例中,物理控制器將適當?shù)耐ㄓ梦锢砜刂破矫鏀?shù)據(jù)傳遞到包括執(zhí)行變換本身的能力(例如,以主機上運行的機箱(chassis)控制器的形式)的受管理交換元件。
[0054]通用物理控制平面到定制物理控制平面轉(zhuǎn)換涉及流條目中的各個數(shù)據(jù)的定制。盡管因為通用物理控制平面條目包括對于不同的交換元件不同的任何數(shù)據(jù)的通用抽象,所以這些條目可適用于任何受管理交換元件,但是定制物理控制平面條目包括特定于條目將被發(fā)送到的特定受管理交換元件的替換(substitute)數(shù)據(jù)。例如,物理控制器對通用物理控制平面入站和出站端口整合(integration)條目中的物理層端口進行定制以包括特定主機的實際物理層端口(例如,虛擬接口)。
[0055]如圖2所示,物理控制器215和220將信息傳遞到它們所分配的主機上的受管理交換元件和中間盒兩者。在一些實施例中,中間盒配置和物理控制平面數(shù)據(jù)被發(fā)送到在主機上運行的同一數(shù)據(jù)庫,并且受管理交換元件和中間盒模塊從該數(shù)據(jù)庫檢索適當?shù)男畔?。類似地,對于集中式中間盒,物理控制器將中間盒配置數(shù)據(jù)傳遞到中間盒設(shè)備(例如,中間盒處的用于存儲配置數(shù)據(jù)的數(shù)據(jù)庫)。
[0056]在一些實施例中,傳遞到受管理交換元件的定制物理控制平面數(shù)據(jù)包括使得受管理交換元件能夠?qū)⒎纸M發(fā)送到中間盒的附連和切分信息。如圖2的中間盒切分信息產(chǎn)生列所示的這個切分數(shù)據(jù)在物理控制器內(nèi)被產(chǎn)生,并且在一些實施例中還與物理控制器一起被發(fā)送到中間盒。因為中間盒配置用于使分布式中間盒元件內(nèi)的中間盒實例虛擬化,所以中間盒元件可以具有同時運行的多個單獨的中間盒處理(例如,用于不同的租戶網(wǎng)絡(luò)、用于單個租戶網(wǎng)絡(luò)內(nèi)的不同的邏輯中間盒)。
[0057]基本上,切分信息是添加到受管理交換元件發(fā)送到中間盒的分組的、對于該受管理交換元件的標簽。該標簽指示分組應(yīng)被發(fā)送到正被中間盒運行的(潛在)幾個處理中的哪個。因此,當中間盒接收到分組時,該標簽使得中間盒能夠使用適當?shù)囊唤M分組處理、分析、修改等規(guī)則,以便對該分組執(zhí)行其操作。一些實施例不是將切分信息添加到分組,而是對于每個中間盒實例定義受管理交換元件的不同端口,并且基本上使用這些端口來切分去往防火墻的業(yè)務(wù)(在分布式情況下),或者連接到集中式設(shè)備的不同端口以在實例之間進行區(qū)分(在集中式情況下)。
[0058]為了將切分數(shù)據(jù)作為定制物理控制平面數(shù)據(jù)的一部分發(fā)送到受管理交換元件,在一些實施例中,物理控制器添加指定特定于中間盒的切分信息的流條目。具體地,對于特定的受管理交換元件,流條目可以指定在基于連接到特定中間盒的端口的匹配將分組發(fā)送到該特定中間盒之前將對于該特定中間盒的切分標簽(其可以是例如VLAN標簽或類似標簽)添加到分組。
[0059]在一些實施例中,附連信息(attachment information)包括使得受管理交換元件能夠?qū)⒎纸M發(fā)送到中間盒的流條目。在中間盒在與受管理交換元件相同的物理機器中的分布式中間盒的情況下,在一些實施例中,中間盒和受管理交換元件協(xié)商將通過其傳送分組的軟件端口抽象。在一些實施例中,受管理交換元件(或中間盒元件)將該信息向上傳遞到物理控制器,使得物理控制器能夠使用定制物理控制平面數(shù)據(jù)中的信息(即,對于定制物理控制平面條目使用特定的軟件端口)。
[0060]對于集中式中間盒,一些實施例將隧道附連數(shù)據(jù)提供給受管理交換元件和中間盒二者。在一些實施例中,中間盒將需要知道各個主機將使用其來將分組發(fā)送到中間盒的隧道封裝的類型。在一些實施例中,中間盒具有接受的隧道協(xié)議(例如,STT、GRE等)的列表,并且所選協(xié)議在一個(多個)受管理交換元件與中間盒之間進行協(xié)調(diào)。隧道協(xié)議可以由用戶作為中間盒配置的一部分鍵入,或者在不同實施例中可以由網(wǎng)絡(luò)控制系統(tǒng)自動地確定。物理控制器還將將隧道封裝信息添加到定制物理控制平面流條目,以便受管理交換元件適當?shù)胤庋b分組以發(fā)送到中間盒。
[0061]當從物理控制器接收到定制物理控制平面數(shù)據(jù)時,受管理交換元件執(zhí)行定制物理控制平面數(shù)據(jù)到物理轉(zhuǎn)發(fā)平面數(shù)據(jù)的轉(zhuǎn)換。在一些實施例中,物理轉(zhuǎn)發(fā)平面數(shù)據(jù)是存儲在交換元件(物理路由器或交換機或軟件交換元件)的轉(zhuǎn)發(fā)表內(nèi)的流條目,該交換元件實際上將所接收的分組與這些流條目匹配,并且基于這些匹配對分組執(zhí)行動作。
[0062]中間盒從物理控制器接收其配置數(shù)據(jù),并且在一些實施例中對該配置數(shù)據(jù)進行轉(zhuǎn)換。將通過中間盒的控制平面API接收以特定語言表達分組處理、分析、修改等規(guī)則的中間盒配置數(shù)據(jù)。一些實施例的中間盒(分布式和/或集中式)將這些規(guī)則編譯為更優(yōu)化的分組分類規(guī)則。在一些實施例中,該轉(zhuǎn)化(transformation)類似于物理控制平面到物理轉(zhuǎn)發(fā)平面數(shù)據(jù)轉(zhuǎn)換。當分組被中間盒接收時,它應(yīng)用編譯的優(yōu)化規(guī)則,以便有效地、快速地對該分組執(zhí)行其操作。
[0063]如圖2所示,中間盒還將切分信息轉(zhuǎn)換成內(nèi)部切分綁定。在一些實施例中,中間盒使用它自己的內(nèi)部標識符(不同于前置到分組的標簽),以便識別中間盒內(nèi)的狀態(tài)(例如,活動的TCP連接、關(guān)于各個IP地址的統(tǒng)計等)。當接收到創(chuàng)建新的中間盒實例和用于該新實例的外部標識符(其在分組上使用)的指令時,一些實施例自動地創(chuàng)建新的中間盒實例,并為該實例分配內(nèi)部標識符。另外,中間盒存儲對于該實例的將外部切分標識符映射到內(nèi)部切分標識符的綁定。
[0064]圖3-5概念性地示出了用戶將與邏輯網(wǎng)絡(luò)內(nèi)的中間盒相關(guān)的信息鍵入到網(wǎng)絡(luò)控制系統(tǒng)、以及數(shù)據(jù)在網(wǎng)絡(luò)控制系統(tǒng)內(nèi)經(jīng)歷的轉(zhuǎn)化的示例。具體地,圖3示出了用戶將邏輯網(wǎng)絡(luò)拓撲305和路由策略310鍵入到網(wǎng)絡(luò)控制系統(tǒng)中。邏輯網(wǎng)絡(luò)拓撲305類似于圖1所示的邏輯網(wǎng)絡(luò)拓撲,其中,兩個邏輯交換機A和B由邏輯路由器C連接,中間盒D掛在(hang off)路由器上。如該邏輯拓撲所示,中間盒D在端口 K處附連到邏輯路由器。
[0065]路由策略310由用戶鍵入,以便指示邏輯路由器應(yīng)將哪些分組發(fā)送到中間盒。當中間盒位于兩個邏輯轉(zhuǎn)發(fā)元件之間(例如,邏輯路由器與邏輯交換機之間)的邏輯線上時,通過該邏輯線發(fā)送的所有分組將自動地被轉(zhuǎn)發(fā)到中間盒。然而,對于帶外(out-of-band)中間盒,諸如網(wǎng)絡(luò)拓撲305中的中間盒,邏輯路由器將僅當用戶指定特定的策略時才將分組發(fā)送到中間盒。
[0066]鑒于路由器和交換機通常將根據(jù)分組的目的地地址(例如,MAC地址或IP地址)轉(zhuǎn)發(fā)分組,策略路由允許轉(zhuǎn)發(fā)決策基于該分組所存儲的其它信息(例如,源地址、源地址和目的地地址的組合等)而被做出。例如,用戶可以指定應(yīng)將具有特定子網(wǎng)中的源IP地址或者具有與特定的一組子網(wǎng)不匹配的目的地IP地址的所有分組轉(zhuǎn)發(fā)到中間盒。在這種特定的情況下,由用戶指定的路由策略310將具有子網(wǎng)A中的源IP和邏輯端口 L(即,來自邏輯交換機A)的入站上下文的業(yè)務(wù)路由到中間盒。盡管源IP地址將足以將分組路由到中間盒D,但是入站端口阻止從中間盒返回的分組被再次發(fā)送到中間盒(S卩,無終止的循環(huán))。來自中間盒的分組將具有不同的入站端口,因此,將不按照策略310路由。
[0067]如所示的,路由策略作為邏輯控制平面數(shù)據(jù)315被發(fā)送到邏輯控制器320 (例如,從輸入轉(zhuǎn)換控制器)。在該示例中,控制平面條目聲明“將在入站端口 L處接收的具有子網(wǎng)A中的源IP地址的分組發(fā)送到端口 K處的中間盒D”。該L3(邏輯路由)控制平面條目將路由策略310與位于端口 K處的中間盒的網(wǎng)絡(luò)拓撲組合。如所示的,邏輯控制器320首先將邏輯控制平面條目315變換為邏輯轉(zhuǎn)發(fā)平面條目325。如所描述的,在一些實施例中,邏輯控制器320處的表映射規(guī)則引擎執(zhí)行該變換。也就是說,條目315是第一數(shù)據(jù)庫表記錄,其經(jīng)由規(guī)則引擎被映射到條目325。邏輯轉(zhuǎn)發(fā)平面條目325是以匹配一動作為格式的流條目,其聲明“如果源IP與{A}匹配且入站與端口 L匹配一轉(zhuǎn)發(fā)到端口 K”。因為網(wǎng)絡(luò)在邏輯平面中執(zhí)行轉(zhuǎn)發(fā),所以該流條目將分組發(fā)送到邏輯路由器的邏輯端口。
[0068]接著,邏輯控制器320將邏輯轉(zhuǎn)發(fā)平面條目320轉(zhuǎn)換成一組通用控制平面條目330-340。第一條目330是通用物理控制平面中的轉(zhuǎn)發(fā)條目,其聲明“如果與L3C匹配且源IP與{A}匹配且入站與端口 L匹配一轉(zhuǎn)發(fā)到端口 K”。該條目通過L3路由器將匹配添加到轉(zhuǎn)發(fā)條目,確保根據(jù)該流條目對其動作的分組不是不同的邏輯網(wǎng)絡(luò)的一部分。
[0069]另外,邏輯控制器添加入站端口整合條目335和出站端口整合條目340。因為這些條目是通用物理控制平面的一部分,所以這些條目中的物理端口信息是通用的。這些條目包括入站端口整合條目335,其將經(jīng)由連接到主機中的中間盒的軟件端口接收的分組映射到邏輯入站端口 K。類似地,出站端口整合條目340將轉(zhuǎn)發(fā)到端口 K的分組映射到連接到中間盒的軟件端口。因為該端口在不同的主機中可以具有不同的特定標識符,所以在通用控制平面層次上,使用這樣的端口的通用抽象來表示它。通用物理控制平面將包括各種其它的條目,諸如入站映射和L2轉(zhuǎn)發(fā)條目,該入站映射將從VMl所位于的(通用)虛擬接口接收的分組映射到L2A邏輯交換機上的入站端口,該L2轉(zhuǎn)發(fā)條目將具有不在L2A邏輯交換機上的目的地的分組映射到邏輯連接到L3C邏輯路由器的出站端口。
[0070]與邏輯控制平面到邏輯轉(zhuǎn)發(fā)平面一樣,邏輯控制器320使用表映射規(guī)則引擎來執(zhí)行第二變換。在一些實施例中,第一變換由邏輯控制器內(nèi)的控制應(yīng)用執(zhí)行,而第二變換由虛擬化應(yīng)用執(zhí)行。在一些這樣的實施例中,這兩個應(yīng)用使用相同的規(guī)則引擎。
[0071]接著,邏輯控制器320識別網(wǎng)絡(luò)控制系統(tǒng)中的哪些物理控制器應(yīng)接收通用物理控制平面條目。例如,對于特定虛擬機的L2層次上的入站和出站端口整合條目將僅需要被發(fā)送到作為其上托管特定的虛擬機的節(jié)點的主節(jié)點的物理控制器。在一些實施例中,對于L3路由器的條目330被發(fā)送到所有的機器,因此,邏輯控制器320識別接收用于邏輯網(wǎng)絡(luò)的任何通用控制平面數(shù)據(jù)以接收條目330-340的所有物理控制器。另一方面,在一些情況下,可以僅在節(jié)點的子集處實現(xiàn)中間盒(例如,因為中間盒將僅需要對這些節(jié)點處的業(yè)務(wù)進行處理),因此,這些條目僅被導(dǎo)出到管理子集中的節(jié)點的物理控制器。
[0072]當接收到條目330-340時,物理控制器345 (接收這些條目的幾個物理控制器中的一個)執(zhí)行通用物理控制平面到定制物理控制平面變換。如所示的,條目330保持相同,因為在該流條目中不存在需要指定的信息。另一方面,入站端口整合條目335和出站端口整合條目340中的通用端口抽象被變換成中間盒所連接的MSE350的用于條目355和360的特定軟件端口。
[0073]如所示的,在一些實施例中,在與中間盒協(xié)商軟件端口連接之后,MSE將中間盒附連端口信息365向上傳遞到物理控制器345。物理控制器然后使用該信息作為其將通用物理控制平面記錄變換成定制物理控制平面記錄的表映射引擎的輸入。物理控制器將該信息傳遞到MSE,其將定制物理控制平面條目變換成其轉(zhuǎn)發(fā)表370中的物理轉(zhuǎn)發(fā)平面條目。MSE使用這些轉(zhuǎn)發(fā)表以與所接收的分組匹配并對分組執(zhí)行動作(例如,轉(zhuǎn)發(fā)、封裝等)。盡管這里未示出,但是物理控制器產(chǎn)生附加流條目以在通過軟件端口將分組發(fā)送到中間盒之前將切分標簽添加到分組。
[0074]圖4概念性地示出了與圖3中相同的用戶配置它們的邏輯網(wǎng)絡(luò)的中間盒D、以及將配置數(shù)據(jù)向下傳播到中間盒。如所示的,相同的邏輯網(wǎng)絡(luò)拓撲305與中間盒規(guī)則405 —起被鍵入。中間盒規(guī)則405通過特定于中間盒D的實現(xiàn)和中間盒類型的中間盒配置接口被鍵入,并且指定對于中間盒將如何對分組進行處理的規(guī)則。例如,如果中間盒是防火墻,則該規(guī)則可以指定阻止或允許的特定源IP ;如果中間盒是源網(wǎng)絡(luò)地址轉(zhuǎn)換器,則該規(guī)則可以指定隱藏在特定的虛擬IP后面的一組真實IP ;如果中間盒是負荷均衡器,則該規(guī)則可以指定對于負荷均衡特定的虛擬IP后面的特定的一組服務(wù)器所使用的特定調(diào)度算法;等等。
[0075]如所示的,邏輯控制器320接收規(guī)則415 (例如,作為數(shù)據(jù)庫表記錄)。邏輯控制器識別應(yīng)接收規(guī)則415的特定節(jié)點。在一些實施例中,這是實現(xiàn)中間盒D的所有節(jié)點,這些節(jié)點可以是實現(xiàn)網(wǎng)絡(luò)的邏輯轉(zhuǎn)發(fā)元件的所有節(jié)點。然而,在一些實施例中,邏輯控制器對用于中間盒的路由策略進行解析以確定僅實現(xiàn)邏輯轉(zhuǎn)發(fā)元件的節(jié)點的子集需要實現(xiàn)中間盒(即,基于其在邏輯網(wǎng)絡(luò)中的放置和功能)?;谒R別的節(jié)點,邏輯控制器識別它向其分發(fā)規(guī)則415的一組物理控制器。
[0076]該組物理控制器包括它向其導(dǎo)出規(guī)則415的示出的控制器345。如在邏輯控制器320處那樣,物理控制器345不對規(guī)則415執(zhí)行任何變換(或至少僅最少變換)。然而,當新的配置需要在主機上運行的中間盒應(yīng)用(例如,中間盒守護進程)上啟動新的虛擬中間盒時,物理控制器為中間盒實例分配切分標識符420。
[0077]物理控制器345將規(guī)則415和切分標識符420分發(fā)到與MSE350相同的主機上的中間盒425。中間盒產(chǎn)生新的中間盒實例,并將規(guī)則415 (與從物理控制器345接收的其它配置規(guī)則一起)變換成用于中間盒實例的編譯的一組數(shù)據(jù)平面規(guī)則430。在一些實施例中,這些數(shù)據(jù)平面規(guī)則430有效地充當硬編碼(hardcode)的一組轉(zhuǎn)發(fā)表以在中間盒中進行分組處理。另外,中間盒425將條目添加到其切分綁定表435。對于每個實例,中間盒425創(chuàng)建它自己的內(nèi)部標識符,并將該內(nèi)部ID與由物理控制器分配的分組切分ID的綁定存儲在切分綁定表435中。此外,如所示的,中間盒將已與主機中的MSE350訂約(contract)以創(chuàng)建用于在這兩個模塊之間傳送分組的軟件端口。
[0078]圖5概念性地示出了第二用戶配置第二邏輯網(wǎng)絡(luò)的中間盒H、以及將配置數(shù)據(jù)向下傳播到中間盒425。如所示的,第二用戶鍵入邏輯網(wǎng)絡(luò)拓撲505,其在結(jié)構(gòu)上類似于拓撲305,并且包括中間盒H(其是與第一用戶的中間盒D相同類型的中間盒)。另外,第二用戶通過與第一用戶相同的中間盒配置接口來鍵入中間盒規(guī)則510。盡管第二用戶在與第一用戶不同的物理機器上鍵入數(shù)據(jù),但是因為中間盒類型相同(并且使用相同的實現(xiàn)),所以用戶通過相同接口的不同副本(copy)來鍵入數(shù)據(jù)。
[0079]如所示的,第二邏輯控制器515接收規(guī)則520 (例如,作為數(shù)據(jù)庫表記錄)。如前一示例中那樣,邏輯控制器515識別應(yīng)接收規(guī)則520的特定節(jié)點。在這種情況下,具有中間盒425和MSE350的節(jié)點托管用于第一網(wǎng)絡(luò)305和第二網(wǎng)絡(luò)505兩者的虛擬機,所以管理該節(jié)點的同一物理控制器345接收規(guī)則415。
[0080]因為中間盒H需要在中間盒應(yīng)用425上創(chuàng)建新的虛擬中間盒,所以物理控制器345為中間盒實例分配新的不同的切分標識符525。物理控制器345然后將規(guī)則520和切分標識符525分發(fā)到主機上的中間盒425。中間盒425創(chuàng)建新的中間盒實例,并將規(guī)則520 (與從物理控制器345接收的其它配置規(guī)則一起)變換成用于新創(chuàng)建的中間盒實例的新的一組數(shù)據(jù)平面規(guī)則530。
[0081]另外,中間盒425將另一條目添加到其切分綁定表435。如上所述,中間盒創(chuàng)建它自己的內(nèi)部標識符,并將該內(nèi)部ID與來自物理控制器345的分配的切分ID的綁定存儲在其切分綁定表435中。這樣,當從MSE350接收到分組時,中間盒425可以移除切分標識符,并將該標識符與其內(nèi)部ID匹配,以便使用適當?shù)囊唤M中間盒規(guī)則來對分組進行處理。另夕卜,當中間盒創(chuàng)建新的狀態(tài)(例如,用于新的TCP連接)時,它使用內(nèi)部標識符來將該狀態(tài)與特定的實例相關(guān)聯(lián)。
[0082]以上示例涉及分布式中間盒。對于集中式中間盒,用戶以相同的方式鍵入配置(通過針對中間盒設(shè)計的接口)。邏輯控制器僅識別管理中間盒的單個物理控制器(或者中間盒所位于的主機,如果被實現(xiàn)為單個虛擬機),并將配置規(guī)則導(dǎo)出到該物理控制器。當集中式中間盒還可以在幾個網(wǎng)絡(luò)之間被虛擬化時,物理控制器為配置分配切分標識符。
[0083]鑒于在分布式情況下,僅一個受管理交換元件將分組發(fā)送到特定的分布式中間盒元件,在集中式情況下,許多不同的MSE將需要接收切分標識符。這樣,在一些實施例中,管理集中式中間盒的物理控制器將切分標識符發(fā)送到管理特定網(wǎng)絡(luò)的邏輯控制器,其將該切分標識符(例如,以將標識符添加到去往中間盒的分組的流條目的形式)分發(fā)到可以將分組發(fā)送到中間盒的所有節(jié)點(經(jīng)由它們的管理物理控制器)。在其它實施例中,邏輯控制器為中間盒分配切分標識符,并經(jīng)由管理物理控制器將該信息分發(fā)到所有節(jié)點。
[0084]另外,網(wǎng)絡(luò)控制系統(tǒng)在集中式中間盒與將分組發(fā)送到中間盒的各個受管理交換元件之間設(shè)置隧道。隧道信息可以由用戶在輸入轉(zhuǎn)換控制器接口處鍵入,或者在了解中間盒所支持的不同隧道協(xié)議的情況下由邏輯控制器自動地產(chǎn)生。在變換到物理控制平面時,邏輯控制器添加隧道封裝流條目,這些流條目添加隧道封裝或者從分組移除隧道封裝。然后可以在物理控制器層次上定制這些條目以考慮在每個不同的受管理交換元件處使用的特定端口和封裝。
[0085]I1.網(wǎng)絡(luò)控制器架構(gòu)
[0086]以上節(jié)描述了包括幾種不同類型的網(wǎng)絡(luò)控制器的網(wǎng)絡(luò)控制系統(tǒng)。圖6示出了網(wǎng)絡(luò)控制器(例如,邏輯控制器或物理控制器)600的示例架構(gòu)。一些實施例的網(wǎng)絡(luò)控制器使用表映射引擎來將輸入的一組表中的數(shù)據(jù)映射到輸出的一組表中的數(shù)據(jù)??刂破髦械妮斎氲囊唤M表包括要被映射到邏輯轉(zhuǎn)發(fā)平面(LFP)數(shù)據(jù)的邏輯控制平面(LCP)數(shù)據(jù)、要被映射到通用物理控制平面(UPCP)數(shù)據(jù)的LCP數(shù)據(jù)、和/或要被映射到定制物理控制平面(CPCP)數(shù)據(jù)的UPCP數(shù)據(jù)。該輸入的一組表還可以包括要被發(fā)送到另一控制器和/或分布式中間盒實例的中間盒配置數(shù)據(jù)。如所示的,網(wǎng)絡(luò)控制器600包括輸入表615、規(guī)則引擎610、輸出表620、導(dǎo)入器630、導(dǎo)出器625、轉(zhuǎn)換器635以及持久數(shù)據(jù)儲存器(PTD) 640。
[0087]在一些實施例中,取決于控制器600在網(wǎng)絡(luò)控制系統(tǒng)中的作用,輸入表615包括具有不同類型的數(shù)據(jù)的表。例如,當控制器600用作用于用戶的邏輯轉(zhuǎn)發(fā)元件的邏輯控制器時,輸入表615包括用于邏輯轉(zhuǎn)發(fā)元件的LCP數(shù)據(jù)和LFP數(shù)據(jù)。當控制器600用作物理控制器時,輸入表615包括LFP數(shù)據(jù)。輸入表615還包括從用戶或另一控制器接收的中間盒配置數(shù)據(jù)。中間盒配置數(shù)據(jù)與識別中間盒要被整合到的邏輯交換元件的邏輯數(shù)據(jù)路徑集參數(shù)相關(guān)聯(lián)。
[0088]除了輸入表615之外,控制應(yīng)用600包括其它雜項表(未示出),規(guī)則引擎610使用這些雜項表來采集用于其表映射操作的輸入。這些雜項表包括常數(shù)表,其存儲對于規(guī)則引擎610執(zhí)行其表映射操作所需的常數(shù)的定義值(例如,值O、用于重發(fā)的調(diào)度端口號等)。雜項表還包括函數(shù)表,其存儲規(guī)則引擎610使用其來計算填充輸出表625的值的函數(shù)。
[0089]規(guī)則引擎610執(zhí)行指定用于將輸入數(shù)據(jù)變換為輸出數(shù)據(jù)的一種方式的表映射操作。每當輸入表中的一個被修改(稱為輸入表事件)時,規(guī)則引擎就執(zhí)行可以導(dǎo)致一個或多個輸出表中的一個或多個數(shù)據(jù)元組(tuple)的修改的一組表映射操作。
[0090]在一些實施例中,規(guī)則引擎610包括事件處理器(未示出)、幾個查詢計劃(plan)(未示出)、以及表處理器(未示出)。每個查詢計劃是指定當發(fā)生輸入表事件時要執(zhí)行的一組聯(lián)合操作的一組規(guī)則。規(guī)則引擎610的事件處理器檢測每個這樣的事件的發(fā)生。在一些實施例中,事件處理器向輸入表注冊回調(diào)以通知輸入表615中的記錄的變化,并且當其記錄中的一個已改變時,通過從輸入表接收通知來檢測輸入表事件。
[0091]響應(yīng)于檢測到的輸入表事件,事件處理器(I)對于該檢測到的表事件選擇適合的查詢計劃,并且(2)引導(dǎo)表處理器執(zhí)行該查詢計劃。為了執(zhí)行查詢計劃,在一些實施例中,表處理器執(zhí)行由查詢計劃指定的聯(lián)合操作,以生成表不來自一個或多個輸入表和雜項表的一組或多組數(shù)據(jù)值的一個或多個記錄。一些實施例的表處理器然后(I)執(zhí)行選擇操作以從通過聯(lián)合操作生成的一個(多個)記錄選擇數(shù)據(jù)值的子集,并且(2)將所選的數(shù)據(jù)值的子集寫入到一個或多個輸出表620中。
[0092]一些實施例使用數(shù)據(jù)日志數(shù)據(jù)庫語言的變型來允許應(yīng)用開發(fā)者創(chuàng)建用于控制器的規(guī)則引擎,并從而指定控制器將邏輯數(shù)據(jù)路徑集映射到受控物理交換底層結(jié)構(gòu)(infrastructure)的方式。數(shù)據(jù)日志數(shù)據(jù)庫語言的該變型在這里被稱為nLog。像數(shù)據(jù)日志那樣,nLog提供允許開發(fā)者指定當發(fā)生不同事件時要被執(zhí)行的不同操作的一些聲明規(guī)則和運算符。在一些實施例中,nLog提供由數(shù)據(jù)日志提供的運算符的有限子集以便提高nLog的運算速度。例如,在一些實施例中,nLog僅允許AND運算符在聲明規(guī)則中的任何一個中使用。
[0093]通過nLog指定的聲明規(guī)則和操作然后由nLog編譯器編譯成大得多的一組規(guī)則。在一些實施例中,該編譯器將意在于處理事件的每個規(guī)則轉(zhuǎn)換成幾組數(shù)據(jù)庫聯(lián)合操作。更大的這組規(guī)則共同形成被稱為nLog引擎的表映射規(guī)則引擎。
[0094]一些實施例將對于輸入事件由規(guī)則引擎執(zhí)行的第一聯(lián)合操作指派為基于邏輯數(shù)據(jù)路徑集參數(shù)。該指派確保當規(guī)則引擎已開始與不由控制器管理的邏輯數(shù)據(jù)路徑集(即,邏輯網(wǎng)絡(luò))相關(guān)的一組聯(lián)合操作時,規(guī)則引擎的聯(lián)合操作失敗并且立即終止。[0095]像輸入表615那樣,取決于控制器600的作用,輸出表620包括具有不同類型的數(shù)據(jù)的表。當控制器600用作邏輯控制器時,輸出表615包括用于邏輯交換元件的LFP數(shù)據(jù)和UPCP數(shù)據(jù)。當控制器600用作物理控制器時,輸出表620包括CPCP數(shù)據(jù)。像輸入表那樣,輸出表615還可以包括中間盒配置數(shù)據(jù)。此外,當控制器600用作物理控制器時,輸出表615可以包括切分標識符。
[0096]在一些實施例中,可以將輸出表620分組成幾個不同的類別。例如,在一些實施例中,輸出表620可以是規(guī)則引擎(RE)輸入表和/或RE輸出表。當輸出表中的變化使規(guī)則引擎檢測到需要執(zhí)行查詢計劃的輸入事件時,輸出表是RE輸入表。輸出表還可以是產(chǎn)生使規(guī)則引擎執(zhí)行另一查詢計劃的事件的RE輸入表。當輸出表中的變化使導(dǎo)出器625將該變化導(dǎo)出到另一控制器或MSE時,輸出表是RE輸出表。輸出表可以是RE輸入表、RE輸出表、或RE輸入表和RE輸出表兩者。
[0097]導(dǎo)出器625檢測輸出表620的RE輸出表的變化。在一些實施例中,導(dǎo)出器向RE輸出表注冊回調(diào)以通知RE輸出表的記錄的變化。在這樣的實施例中,當導(dǎo)出器625從RE輸出表接收到其記錄中的一個已改變的通知時,導(dǎo)出器625檢測到輸出表事件。
[0098]響應(yīng)于檢測到的輸出表事件,導(dǎo)出器625獲取修改的RE輸出表中的每個修改的數(shù)據(jù)元組,并將該修改的數(shù)據(jù)元組傳播到一個或多個其它控制器或者一個或多個MSE。當將輸出表記錄發(fā)送到另一控制器時,在一些實施例中,導(dǎo)出器使用單個通信的信道(例如,RPC信道)來發(fā)送記錄中所含有的數(shù)據(jù)。當將RE輸出表記錄發(fā)送到MSE時,在一些實施例中,導(dǎo)出器使用兩個信道。一個信道通過使用交換機控制協(xié)議(例如,OpenFlow)建立以將流條目寫入到MSE的控制平面中。另一信道通過使用數(shù)據(jù)庫通信協(xié)議(例如,JS0N)建立以發(fā)送配置數(shù)據(jù)(例如,端口配置、隧道信息)。
[0099]在一些實施例中,控制器600不在輸出表620中保存對于控制器不負責管理的邏輯數(shù)據(jù)路徑集(即,對于由其它邏輯控制器管理的邏輯網(wǎng)絡(luò))的數(shù)據(jù)。然而,這樣的數(shù)據(jù)由轉(zhuǎn)換器635轉(zhuǎn)換成可以存儲在PTD640中的格式,并然后被存儲在PTD中。PTD640將該數(shù)據(jù)傳播到一個或多個其它控制器的PTD,使得負責管理邏輯數(shù)據(jù)路徑集的那些其它控制器可以對該數(shù)據(jù)進行處理。
[0100]在一些實施例中,為了數(shù)據(jù)的彈性,控制器還將存儲在輸出表620中的數(shù)據(jù)引入PTD0因此,在這些實施例中,控制器的PTD具有用于網(wǎng)絡(luò)控制系統(tǒng)所管理的所有邏輯數(shù)據(jù)路徑集的所有配置數(shù)據(jù)。也就是說,每個PTD含有所有用戶的邏輯網(wǎng)絡(luò)的配置的全局視圖。
[0101]導(dǎo)入器630與多個不同的輸入數(shù)據(jù)源接口,并且使用輸入數(shù)據(jù)來修改或創(chuàng)建輸入表610。一些實施例的導(dǎo)入器620從另一控制器接收輸入數(shù)據(jù)。導(dǎo)入器620還與PTD640接口,使得通過PTD從其它控制器實例接收的數(shù)據(jù)被轉(zhuǎn)換并用作輸入數(shù)據(jù)以修改或創(chuàng)建輸入表610。而且,導(dǎo)入器620還檢測輸出表630中隨RE輸入表的變化。
[0102]II1.分組處理
[0103]以上節(jié)詳細地描述了流條目的創(chuàng)建、以及使用網(wǎng)絡(luò)控制系統(tǒng)對邏輯網(wǎng)絡(luò)的中間盒配置。該數(shù)據(jù)然后被用于處理和轉(zhuǎn)發(fā)網(wǎng)絡(luò)的物理實現(xiàn)內(nèi)的業(yè)務(wù)(例如,通過將分組與受管理交換元件中的流條目匹配、將中間盒規(guī)則應(yīng)用于分組等)。
[0104]圖7概念性地示出了一些實施例中的被執(zhí)行以將分組從第一虛擬機705發(fā)送到第二虛擬機725的動作。如所示的,VM705駐留在第一主機710中,第一主機710還包括受管理交換元件715和中間盒元件720。VM725與MSE735(以及圖中未示出的中間盒元件)一起駐留在第二主機730中。在這個示例中,兩個虛擬機位于由邏輯L3路由器連接的不同的邏輯L2域中。
[0105]VM705將分組發(fā)送到MSE715 (例如,通過主機710內(nèi)的虛擬接口)。該分組具有與VM705相對應(yīng)的源MAC和IP地址、以及與VM725相對應(yīng)的目的地IP地址(以及,如果可獲得,目的地MAC地址)。MSE715通過對邏輯交換機A (VM725所附連的邏輯交換機)執(zhí)行L2流程開始,所述L2流程包括:將物理入站端口(虛擬接口)映射到邏輯入站端口,然后執(zhí)行邏輯L2轉(zhuǎn)發(fā)決策以將分組發(fā)送到邏輯路由器。該邏輯路由器也由MSE715實現(xiàn),所以發(fā)送分組僅涉及分組的重發(fā)。
[0106]MSE715然后對邏輯路由器執(zhí)行L3流程。在一些實施例中,轉(zhuǎn)發(fā)表包括基于目的地IP地址將分組轉(zhuǎn)發(fā)到VM725所附連的邏輯交換機B的流條目。然而,L3轉(zhuǎn)發(fā)表還包括基于用戶鍵入的路由策略(例如,基于源IP地址和/或邏輯入站端口或其它數(shù)據(jù))將分組轉(zhuǎn)發(fā)到中間盒的更高優(yōu)先級條目。因此,L3轉(zhuǎn)發(fā)決策要將分組發(fā)送到中間盒720。在通過在兩個軟件元件之間協(xié)商的軟件端口發(fā)送分組之前,MSE715將切分標簽添加到分組以識別正確的中間盒實例。在一些實施例中,MSE將該標簽前置到分組頭的特定字段中。
[0107]中間盒720接收分組,并移除切分標簽,以便識別用于對分組進行處理的正確的中間盒實例。利用所識別的正確的實例(通過切分綁定表),中間盒執(zhí)行其處理。這可以涉及:修改源IP (對于S-NAT),修改目的地IP (對于負荷均衡器),確定是丟棄還是允許分組(對于防火墻)、或其它處理。在對分組執(zhí)行其處理之后,中間盒將分組送回到受管理交換元件。
[0108]在一些實施例中,中間盒將新的分組送回到MSE。因為MSE可以通過同一端口從多個中間盒實例接收分組,所以在一些實施例中,中間盒在通過軟件端口發(fā)送分組之前將切分標簽添加到該分組。在MSE715處,流條目將分組映射回邏輯L3路由器(S卩,連接到中間盒的L3路由器的入站端口),并然后執(zhí)行L3轉(zhuǎn)發(fā)。因為邏輯入站端口現(xiàn)在是連接到中間盒的端口,所以不執(zhí)行發(fā)送到中間盒的路由策略,并且目的地IP地址導(dǎo)致向邏輯交換機B的轉(zhuǎn)發(fā)決策。該交換機處的邏輯轉(zhuǎn)發(fā)決策基于目的地MAC地址,這導(dǎo)致向VM725的轉(zhuǎn)發(fā)決策。轉(zhuǎn)發(fā)決策被用于封裝分組,并且還映射到主機的通過其發(fā)送分組(在添加隧道封裝之后)的特定物理端口。
[0109]分組經(jīng)由隧道跨過網(wǎng)絡(luò),以便到達第二主機730的MSE735。在移除隧道之后,MSE735讀取出站上下文,移除它,并將分組遞送到VM725。這映射到主機730內(nèi)的虛擬接口,使得分組到達VM725。
[0110]普通技術(shù)人員將認識到,這個示例僅是涉及分布式中間盒的許多可能的分組處理示例中的一個。如果目的地VM725與源VM705 —起位于主機710中,則分組將進入MSE715、中間盒720,返回到MSE715,并然后進入目的地VM725,而從不離開物理機器。作為另一示例,如果中間盒僅接收重復(fù)分組,則MSE715將將所接收的分組發(fā)送到第二主機730,并將重復(fù)分組發(fā)送到中間盒720,其在其處理完成之后不發(fā)送出分組。
[0111]盡管圖7的示例示出了將分組發(fā)送到分布式中間盒時所涉及的處理,但是圖8概念性地示出了通過位于主機的任何一個的外部的集中式中間盒發(fā)送分組。如所示的,在該圖中,主機710中的VM705再次將分組發(fā)送到主機730中的VM725。當從源VM705接收分組時,MSE715執(zhí)行L2流程(向連接到VM705的邏輯入站端口的入站映射,然后向邏輯L3路由器的邏輯轉(zhuǎn)發(fā))。在L3路由器處,路由策略再次將分組發(fā)送到中間盒,在這種情況下,中間盒不位于主機710內(nèi)。這樣,MSE將切分標簽添加到分組(以與當中間盒為分布式時相同的方式),但是還將隧道封裝添加到分組以便通過物理網(wǎng)絡(luò)將分組發(fā)送到集中式中間盒805。
[0112]集中式中間盒805將切分標識符映射到其虛擬中間盒中的一個(例如,通過使用其切分綁定表),然后執(zhí)行中間盒處理。在一些實施例中,集中式中間盒的示例包括防火墻(其也可以是分布式的)、入侵檢測系統(tǒng)(其是接收重復(fù)分組的被動(passive)中間盒)、以及WAN優(yōu)化器(用于在通過WAN發(fā)送出分組之前執(zhí)行各種數(shù)據(jù)壓縮技術(shù))、以及其它中間盒。在執(zhí)行其中間盒處理之后,中間盒805將新的分組發(fā)送到池節(jié)點。
[0113]在一些實施例中,每個集中式中間盒將其分組的全部發(fā)送到特定的池節(jié)點(或用于不同中間盒實例的不同池節(jié)點),因為中間盒可能不具有執(zhí)行將分組發(fā)送到其目的地所需的邏輯轉(zhuǎn)發(fā)的功能。因此,中間盒805對于隧道封裝分組(并且,在一些實施例中,將切分標簽添加到分組),然后將它發(fā)送到池節(jié)點810。池節(jié)點810將分組映射到正確的邏輯路由器,并使用分組的目的地IP地址來做出向目的地VM725所連接的邏輯交換機的轉(zhuǎn)發(fā)決策。池節(jié)點中的邏輯L2流程將分組轉(zhuǎn)發(fā)到目的地機器725,并且使用該出站上下文來封裝分組。池節(jié)點810然后添加隧道封裝以用于通過物理網(wǎng)絡(luò)傳輸,并且將分組發(fā)送到主機730。MSE735讀取該出站上下文,移除它,并將分組遞送到VM725(以與圖7中的方式相同的方式)。
[0114]圖9是集中式中間盒905的第二示例,在該第二示例中,集中式中間盒還具有受管理交換元件910。在這種情況下,分組以與前面的圖8的示例相同的方式到達集中式中間盒905,并且中間盒905執(zhí)行相同的處理。然而,不是封裝新的分組以通過隧道發(fā)送,中間盒處理而是將分組發(fā)送到整合的MSE910 (例如,經(jīng)由與在主機內(nèi)運作的那些軟件端口類似的軟件端口 )。MSE910執(zhí)行與前面的示例的池節(jié)點相同的處理,最后做出將分組發(fā)送到VM725的邏輯L2轉(zhuǎn)發(fā)決策,利用該出站上下文(以及隧道封裝)來封裝分組,然后通過網(wǎng)絡(luò)將分組發(fā)送到主機730。此時,處理變得與圖8中的處理相同。
[0115]IV.電子系統(tǒng)
[0116]上述特征和應(yīng)用中的許多被實現(xiàn)為被指定為記錄在計算機可讀存儲介質(zhì)(也稱為計算機可讀介質(zhì))上的指令集的軟件處理。當這些指令被一個或多個計算或處理單元(例如,一個或多個處理器、處理器的核或其它處理單兀)執(zhí)行時,它們使一個(多個)處理單元執(zhí)行指令中所指示的動作。計算機可讀介質(zhì)的示例包括,但不限于,CD-ROM、閃存驅(qū)動器、隨機存取存儲器(RAM)芯片、硬盤驅(qū)動器、可擦式可編程只讀存儲器(EPROM)、電可擦式可編程只讀存儲器(EEPROM)等。計算機可讀介質(zhì)不包括無線地或通過有線連接傳遞的載波和電信號。
[0117]在本說明書中,術(shù)語“軟件”意在于包括駐留在只讀存儲器中的固件或可以被讀取到存儲器中以由處理器處理的存儲在磁儲存器中的應(yīng)用。并且,在一些實施例中,在保留截然不同的軟件發(fā)明的同時,多個軟件發(fā)明可以被實現(xiàn)為更大程序的子部分。在一些實施例中,多個軟件發(fā)明也可以被實現(xiàn)為單獨的程序。最后,一起實現(xiàn)這里所描述的軟件發(fā)明的單獨的程序的任何組合在本發(fā)明的范圍內(nèi)。在一些實施例中,軟件程序在被安裝以在一個或多個電子系統(tǒng)上操作時定義實行和執(zhí)行軟件程序的操作的一種或多種特定的機器實現(xiàn)。
[0118]圖10概念性地示出了實現(xiàn)本發(fā)明的一些實施例的電子系統(tǒng)1000。電子系統(tǒng)1000可以是計算機(例如,桌面計算機、個人計算機、平板計算機等)、服務(wù)器、專用交換機、電話、PDA、或任何其它種類的電子或計算裝置。這樣的電子系統(tǒng)包括各種類型的計算機可讀介質(zhì)以及用于各種其它類型的計算機可讀介質(zhì)的接口。電子系統(tǒng)1000包括總線1005、一個(多個)處理單元1010、系統(tǒng)存儲器1025、只讀存儲器1030、永久存儲裝置1035、輸入裝置1040以及輸出裝置1045。
[0119]總線1005共同表示通信地連接電子系統(tǒng)1000的許多內(nèi)部裝置的所有系統(tǒng)、外設(shè)和芯片組總線。例如,總線1005通信地將一個(多個)處理單元1010與只讀存儲器1030、系統(tǒng)存儲器1025以及永久存儲裝置1035連接。
[0120]從這些各種存儲器單元,一個(多個)處理單元1010檢索執(zhí)行的指令和處理的數(shù)據(jù)以便執(zhí)行本發(fā)明的處理。在不同的實施例中,一個(多個)處理單元可以是單個處理器或多核處理器。
[0121]只讀存儲器(ROM) 1030存儲處理單元1010和電子系統(tǒng)的其它模塊所需的靜態(tài)數(shù)據(jù)和指令。另一方面,永久存儲裝置1035是讀寫存儲器裝置。該裝置是即使當電子系統(tǒng)1000關(guān)閉時也存儲指令和數(shù)據(jù)的非易失性存儲器單元。本發(fā)明的一些實施例使用大容量存儲裝置(諸如磁盤或光盤以及其相應(yīng)的盤驅(qū)動器)作為永久存儲裝置1035。
[0122]其它實施例使用可移動存儲裝置(諸如軟盤、閃存裝置等以及其相應(yīng)的驅(qū)動器)作為永久存儲裝置。像永久存儲裝置1035那樣,系統(tǒng)存儲器1025是讀寫存儲器裝置。然而,與存儲裝置1035不同,系統(tǒng)存儲器1025是易失性讀寫存儲器,諸如隨機存取存儲器。系統(tǒng)存儲器1025存儲處理器在運行時所需的指令和數(shù)據(jù)中的一些。在一些實施例中,本發(fā)明的處理存儲在系統(tǒng)存儲器1025、永久存儲裝置1035和/或只讀存儲器1030中。從這些各種存儲器單元,一個(多個)處理單元1010檢索執(zhí)行的指令和處理的數(shù)據(jù)以便執(zhí)行一些實施例的處理。
[0123]總線1005還連接到輸入裝置1040和輸出裝置1045。輸入裝置1040使得用戶能夠?qū)⑿畔⒑瓦x擇命令傳送到電子系統(tǒng)。輸入裝置1040包括字母數(shù)字鍵盤和定點裝置(也稱為“光標控制裝置”)、照相機(例如,網(wǎng)絡(luò)攝像機)、麥克風或用于接收語音命令的類似裝置等。輸出裝置1045顯示由電子系統(tǒng)產(chǎn)生的圖像或以其它方式輸出數(shù)據(jù)。輸出裝置1045包括打印機和顯示裝置,諸如陰極射線管(CRT)或液晶顯示器(LCD)、以及揚聲器或類似的音頻輸出裝置。一些實施例包括諸如用作輸入裝置和輸出裝置兩者的觸摸屏的裝置。
[0124]最后,如圖10所示,總線1005還通過網(wǎng)絡(luò)適配器(未示出)將電子系統(tǒng)1000耦合到網(wǎng)絡(luò)1065。以這種方式,計算機可以是以下網(wǎng)絡(luò)的一部分:計算機網(wǎng)絡(luò)(諸如局域網(wǎng)(“LAN”))、廣域網(wǎng)(“WAN”)、或內(nèi)聯(lián)網(wǎng)、或諸如互聯(lián)網(wǎng)的網(wǎng)絡(luò)的網(wǎng)絡(luò)。電子系統(tǒng)1000的任何或所有組件可以與本發(fā)明結(jié)合使用。
[0125]一些實施例包括電子組件,諸如將計算機程序指令存儲在機器可讀或計算機可讀介質(zhì)(可替代地被稱為計算機可讀存儲介質(zhì)、機器可讀介質(zhì)或機器可讀存儲介質(zhì))中的儲存器、存儲器和微處理器。這樣的計算機可讀介質(zhì)的一些示例包括RAM、ROM、只讀緊湊盤(⑶-ROM)、可記錄緊湊盤(⑶-R)、可重寫緊湊盤(⑶-RW)、只讀數(shù)字多功能盤(例如,DVD-ROM、雙層 DVD-ROM)、各種可記錄 / 可重寫 DVD (例如,DVD-RAM、DVD-RW、DVD+RW 等)、閃存(例如,SD卡、迷你SD卡、微SD卡等)、磁和/或固態(tài)硬盤驅(qū)動器、只讀和可記錄
Blue-Ray?盤、超密度光盤、任何其它光或磁介質(zhì)、以及軟盤。計算機可讀介質(zhì)可以存儲
可由至少一個處理器單元執(zhí)行并且包括用于執(zhí)行各種操作的多個指令集的計算機程序。計算機程序或計算機代碼的示例包括諸如由編譯器生成的機器代碼、以及包括由計算機、電子組件或微處理器通過使用解釋器而執(zhí)行的更高級代碼的文件。
[0126]盡管以上討論主要指的是執(zhí)行軟件的微處理器或多核處理器,但是一些實施例由一個或多個集成電路(諸如專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA))執(zhí)行。在一些實施例中,這樣的集成電路執(zhí)行存儲在電路本身上的指令。另外,一些實施例執(zhí)行存儲在可編程邏輯器件(PLD)、ROM或RAM器件中的軟件。
[0127]如在本申請的本說明書和任何權(quán)利要求中所使用的,術(shù)語“計算機”、“服務(wù)器”、“處理器”和“存儲器”全部指的是電子或其它技術(shù)裝置。這些術(shù)語排除人或人的群組。為了本說明書的目的,術(shù)語顯示器或顯示意指在電子裝置上顯示。如在本申請的本說明書和任何權(quán)利要求中所使用的,術(shù)語“計算機可讀介質(zhì)”和“機器可讀介質(zhì)”完全限于以計算機可讀的形式存儲信息的有形的物理對象。這些術(shù)語排除任何無線信號、有線下載信號以及任何其它短暫信號。
[0128]盡管已參照許多特定的細節(jié)描述了本發(fā)明,但是本領(lǐng)域普通技術(shù)人員將認識到,在不脫離本發(fā)明的精神的情況下,可以以其它特定的形式體現(xiàn)本發(fā)明。因此,本領(lǐng)域普通技術(shù)人員將理解,本發(fā)明不受前述說明性的細節(jié)限制,而是由所附的權(quán)利要求限定。
【權(quán)利要求】
1.一種用于在包括一組節(jié)點的托管系統(tǒng)中配置邏輯中間盒的方法,邏輯網(wǎng)絡(luò)的邏輯中間盒部分包括連接一組終端機的一組邏輯轉(zhuǎn)發(fā)元件,所述方法包括: 接收用于所述邏輯中間盒的一組配置數(shù)據(jù); 使用所存儲的描述所述終端機的物理位置的一組表來識別實現(xiàn)所述邏輯中間盒的一組節(jié)點;以及 提供用于分發(fā)到所識別的節(jié)點的邏輯中間盒配置。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述配置數(shù)據(jù)包括一組數(shù)據(jù)庫表記錄。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述數(shù)據(jù)庫表記錄和所存儲的一組表被用作所述識別的輸入。
4.根據(jù)權(quán)利要求1所述的方法,其中,所述一組配置數(shù)據(jù)是通過顯露給用戶的應(yīng)用程序接口來接收的。
5.根據(jù)權(quán)利要求1所述的方法,還包括: 接收描述所述一組邏輯轉(zhuǎn)發(fā)元件的邏輯控制平面數(shù)據(jù); 從所述邏輯控制平面數(shù)據(jù)產(chǎn)生邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù),所述邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù)包括用于在所述邏輯網(wǎng)絡(luò)內(nèi)轉(zhuǎn)發(fā)分組的一組流條目;以及 從所述邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù)產(chǎn)生物理控制平面數(shù)據(jù),所述物理控制平面數(shù)據(jù)包括用于轉(zhuǎn)發(fā)在實現(xiàn)所述邏輯轉(zhuǎn)發(fā)元件的物理轉(zhuǎn)發(fā)元件處接收的物理分組的一組流條目。
6.根據(jù)權(quán)利要求5所述的方法,其中,所述邏輯控制平面數(shù)據(jù)包括用于將匹配特定標準的分組轉(zhuǎn)發(fā)到所述邏輯中間盒的路由策略。
7.根據(jù)權(quán)利要求6所述的方法,其中,所述邏輯轉(zhuǎn)發(fā)平面數(shù)據(jù)包括用于邏輯路由器的流條目,該用于邏輯路由器的流條目指定將匹配所述特定標準的分組路由到所述邏輯中間盒所連接的邏輯路由器的邏輯端口。
8.根據(jù)權(quán)利要求7所述的方法,其中,所述物理控制平面數(shù)據(jù)包括流條目,其指定將具有所述邏輯端口的邏輯出站上下文的分組映射到所述邏輯中間盒的物理實現(xiàn)所連接的物理端口。
9.根據(jù)權(quán)利要求5所述的方法,其中,所述所識別的一組節(jié)點是第一組節(jié)點,其中,所述物理控制平面數(shù)據(jù)是通用物理控制平面數(shù)據(jù),其中,所述方法還包括: 使用所述所存儲的描述所述終端機的物理位置的一組表來識別在其實現(xiàn)所述邏輯轉(zhuǎn)發(fā)元件的第二組節(jié)點;以及 提供用于分發(fā)到所識別的節(jié)點的物理控制平面數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的方法,其中,所述第一組節(jié)點和第二組節(jié)點是相同的。
11.根據(jù)權(quán)利要求9所述的方法,其中,所述第一組節(jié)點是所述第二組節(jié)點的子集。
12.—種存儲用于供至少一個處理單元執(zhí)行的網(wǎng)絡(luò)控制器應(yīng)用的機器可讀介質(zhì),所述網(wǎng)絡(luò)控制器應(yīng)用包括用于以下操作的指令集: 接收用于分發(fā)到所述網(wǎng)絡(luò)控制器應(yīng)用所耦合的物理主機上的中間盒元件的邏輯中間盒配置; 自動地產(chǎn)生用于與所述中間盒元件處的邏輯中間盒配置相關(guān)聯(lián)的標識符;以及 將所述邏輯中間盒配置和所產(chǎn)生的標識符分發(fā)到所述物理主機上的中間盒元件。
13.根據(jù)權(quán)利要求12所述的機器可讀介質(zhì),其中,所述網(wǎng)絡(luò)控制器應(yīng)用用于供第一網(wǎng)絡(luò)控制器的至少一個處理單元執(zhí)行,其中,所述邏輯中間盒配置是從第二網(wǎng)絡(luò)控制器接收的。
14.根據(jù)權(quán)利要求12所述的機器可讀介質(zhì),其中,所述網(wǎng)絡(luò)控制器應(yīng)用還包括用于以下操作的指令集: 接收用于分發(fā)到所述物理主機上的中間盒元件的第二邏輯中間盒配置; 自動地產(chǎn)生用于與所述中間盒元件處的第二邏輯中間盒配置相關(guān)聯(lián)的不同的第二標識符;以及 將所述第二邏輯中間盒配置和第二標識符分發(fā)到所述物理主機上的中間盒元件。
15.根據(jù)權(quán)利要求14所述的機器可讀介質(zhì),其中,所述第一邏輯中間盒配置和第二邏輯中間盒配置用于同一邏輯網(wǎng)絡(luò)中的邏輯中間盒。
16.根據(jù)權(quán)利要求14所述的機器可讀介質(zhì),其中,所述第一邏輯中間盒配置和第二邏輯中間盒配置用于不同邏輯網(wǎng)絡(luò)中的邏輯中間盒。
17.根據(jù)權(quán)利要求12所述的機器可讀介質(zhì),其中,所述網(wǎng)絡(luò)控制器應(yīng)用還包括用于以下操作的指令集: 接收用于分發(fā)到所述物理主機上的第二中間盒元件的第二邏輯中間盒配置; 自動地產(chǎn)生用于與所述第二中間盒元件處的第二邏輯中間盒配置相關(guān)聯(lián)的不同的第二標識符;以及 將所述第二邏輯中間盒配置和第二標識符分發(fā)到所述物理主機上的第二中間盒元件。
18.根據(jù)權(quán)利要求12所述的機器可讀介質(zhì),其中,所述網(wǎng)絡(luò)控制器應(yīng)用還包括用于將所產(chǎn)生的標識符分發(fā)到所述物理主機上的在所述物理主機內(nèi)耦合到所述中間盒元件的受管理交換元件的指令集。
19.一種用于將邏輯中間盒配置分發(fā)到一組主機處的一組分布式中間盒元件的分層網(wǎng)絡(luò)控制系統(tǒng),所述網(wǎng)絡(luò)控制系統(tǒng)包括: 第一網(wǎng)絡(luò)控制器,所述第一網(wǎng)絡(luò)控制器在第一分層層次上,用于基于網(wǎng)絡(luò)狀態(tài)信息來識別用于接收所述邏輯中間盒配置的多個主機; 多個附加網(wǎng)絡(luò)控制器,所述多個附加網(wǎng)絡(luò)控制器在第二分層層次上,每個附加網(wǎng)絡(luò)控制器管理所識別的主機中的一個或多個,所述附加網(wǎng)絡(luò)控制器中的每一個用于從第一網(wǎng)絡(luò)控制器接收所述邏輯中間盒配置并且將所述配置分發(fā)到所識別的主機處的分布式中間盒元件。
20.根據(jù)權(quán)利要求19所述的分層網(wǎng)絡(luò)控制系統(tǒng),還包括在第二分層層次上的第二多個附加網(wǎng)絡(luò)控制器,每個附加網(wǎng)絡(luò)控制器管理不包括所識別的多個主機中的任何一個的一組主機,其中,所述第二多個附加網(wǎng)絡(luò)控制器不用于從第一網(wǎng)絡(luò)控制器接收邏輯中間盒配置。
21.根據(jù)權(quán)利要求19所述的分層網(wǎng)絡(luò)控制系統(tǒng),還包括: 第二網(wǎng)絡(luò)控制器,所述第二網(wǎng)絡(luò)控制器在第一分層層次上,用于接收第二邏輯中間盒配置并且基于附加網(wǎng)絡(luò)狀態(tài)信息來識別用于接收第二邏輯中間盒配置的第二多個主機; 第二多個附加網(wǎng)絡(luò)控制器,所述第二多個附加網(wǎng)絡(luò)控制器在第二分層層次上,每個附加網(wǎng)絡(luò)控制器管理第二多個所識別的主機中的一個或多個,所述附加網(wǎng)絡(luò)控制器中的每一個用于從第二網(wǎng)絡(luò)控制器接收第二邏輯中間盒配置并且將第二配置分發(fā)到所述第二多個所識別的主機處的分布式中間盒元件。
22.根據(jù)權(quán)利要求21所述的分層網(wǎng)絡(luò)控制系統(tǒng),其中,特定網(wǎng)絡(luò)控制器是第一多個網(wǎng)絡(luò)控制器和第二多個網(wǎng)絡(luò)控制器的一部分。
23.根據(jù)權(quán)利要求22所述的分層網(wǎng)絡(luò)控制系統(tǒng),其中,所述特定網(wǎng)絡(luò)控制器用于將不同的標識符分 配給不同的中間盒配置并且將所述標識符分發(fā)到其受管理主機處的分布式中間盒元件。
【文檔編號】G06F15/177GK103917967SQ201280055041
【公開日】2014年7月9日 申請日期:2012年11月15日 優(yōu)先權(quán)日:2011年11月15日
【發(fā)明者】張榮華, T·考珀內(nèi)恩, P·薩卡爾, A·帕德馬納班, M·卡薩多 申請人:Nicira股份有限公司