技術(shù)領(lǐng)域
本發(fā)明涉及通信網(wǎng)絡(luò),更特別地,涉及具有由控制器進行控制的網(wǎng)絡(luò)交換機的通信網(wǎng)絡(luò)。
背景技術(shù):
基于分組的網(wǎng)絡(luò)(諸如,互聯(lián)網(wǎng)和與互聯(lián)網(wǎng)連接的局域數(shù)據(jù)網(wǎng))包括網(wǎng)絡(luò)交換機。網(wǎng)絡(luò)交換機用于將分組從分組源轉(zhuǎn)發(fā)到分組目的地。分組有時可以被稱為幀。例如,數(shù)據(jù)通過開放系統(tǒng)互聯(lián)(OSI)模型的層2作為幀(例如,以太網(wǎng)幀)進行轉(zhuǎn)發(fā),而數(shù)據(jù)通過OSI模型的層3作為分組(例如,互聯(lián)網(wǎng)協(xié)議分組)進行轉(zhuǎn)發(fā)。
使用一個銷售商的設(shè)備來配置另一個銷售商的交換機會是困難或不可能的。這是因為,一個銷售商的交換機設(shè)備可以使用與另一個銷售商的交換機設(shè)備不同的操作系統(tǒng)和控制過程的集合。為了應(yīng)對與控制不同類型的交換機平臺關(guān)聯(lián)的挑戰(zhàn),已經(jīng)開發(fā)了跨平臺協(xié)議。這些協(xié)議允許對其它方式不兼容的交換機進行集中控制。
跨平臺控制器客戶端可以被包括在網(wǎng)絡(luò)中的交換機上。控制器客戶端能夠通過網(wǎng)絡(luò)路徑與對應(yīng)的控制器服務(wù)器通信。因為控制器客戶端可以在各種交換機硬件上實現(xiàn),所以單個控制器控制其他方式可能不兼容的交換機設(shè)備是有可能的。
通常,網(wǎng)絡(luò)管理員需要手動配置網(wǎng)絡(luò)中的交換機以對網(wǎng)絡(luò)分組執(zhí)行所期望的轉(zhuǎn)發(fā)操作。該過程會是耗時、冗長的,尤其隨著網(wǎng)絡(luò)復(fù)雜性增加更加有挑戰(zhàn)性。因此,可能期望能夠提供用于配置交換機網(wǎng)絡(luò)以執(zhí)行數(shù)據(jù)轉(zhuǎn)發(fā)操作的改進的系統(tǒng)和方法。
技術(shù)實現(xiàn)要素:
可以使用在計算設(shè)備上實現(xiàn)的控制器來控制網(wǎng)絡(luò)中的交換機。交換機可以包括物理交換機和邏輯交換機(諸如,管理程序交換機)。端主機可以與網(wǎng)絡(luò)中的交換機耦合??梢杂煽刂破鱽砜刂平粨Q機,用于通過網(wǎng)絡(luò)來轉(zhuǎn)發(fā)網(wǎng)絡(luò)分組(例如,通過經(jīng)由控制路徑向交換機供應(yīng)與網(wǎng)絡(luò)分組不同的控制消息)。
控制器可以通過網(wǎng)絡(luò)中的物理和/或管理程序交換機來生成虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器的虛擬網(wǎng)絡(luò)拓撲??刂破骺梢詮亩酥鳈C的相應(yīng)群組和/或用于將分組路由到外部網(wǎng)絡(luò)的物理路由器來形成虛擬交換機。虛擬交換機可以包括來自至少兩個下層交換機的端口,下層交換機與和虛擬交換機關(guān)聯(lián)的群組中的端主機耦合。虛擬交換機可以包括與端主機耦合的虛擬端口。控制器可以從虛擬交換機的群組來形成一個或更多個虛擬路由器。虛擬路由器可以包括與虛擬交換機耦合的虛擬接口。各虛擬接口可以被指派相應(yīng)的以太網(wǎng)地址并且與相應(yīng)的IP域關(guān)聯(lián)。虛擬路由器可以在將網(wǎng)絡(luò)分組在不同IP域的端主機之間路由時執(zhí)行網(wǎng)絡(luò)路由操作。
控制器可以從虛擬路由器的群組來形成一個或更多個虛擬系統(tǒng)路由器。虛擬系統(tǒng)路由器可以包括與虛擬路由器耦合的虛擬系統(tǒng)路由器接口。各虛擬系統(tǒng)路由器接口可以被指派相應(yīng)的以太網(wǎng)地址。虛擬系統(tǒng)路由器可以在將網(wǎng)絡(luò)分組在虛擬路由器之間路由(例如,通過將網(wǎng)絡(luò)分組在虛擬系統(tǒng)路由器接口之間路由)時執(zhí)行網(wǎng)絡(luò)路由操作。虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器可以均分布于若干下層交換機(例如,物理交換機和管理程序交換機),使得任何給定交換機可以被配置成執(zhí)行一個或更多個虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器的功能。
控制器可以控制虛擬路由器、虛擬系統(tǒng)路由器和/或虛擬交換機以執(zhí)行網(wǎng)絡(luò)轉(zhuǎn)發(fā)操作??刂破骺梢耘渲锰摂M路由器以通過重寫所選擇的網(wǎng)絡(luò)分組的以太網(wǎng)地址來執(zhí)行轉(zhuǎn)發(fā)操作,以通過對應(yīng)的虛擬系統(tǒng)路由器將網(wǎng)絡(luò)分組重定向到另一個虛擬路由器??刂破骺梢钥刂铺摂M系統(tǒng)路由器,以通過重寫所選擇的網(wǎng)絡(luò)分組的以太網(wǎng)地址來執(zhí)行轉(zhuǎn)發(fā)操作,以將網(wǎng)絡(luò)分組路由到所期望的虛擬路由器(例如,通過對應(yīng)的虛擬系統(tǒng)路由器接口)??刂破骺梢酝ㄟ^基于由用戶為虛擬路由器、虛擬系統(tǒng)路由器和/或虛擬交換機中的每一個指定的網(wǎng)絡(luò)策略生成相應(yīng)的網(wǎng)絡(luò)轉(zhuǎn)發(fā)規(guī)則(例如,流表條目)來控制虛擬路由器、虛擬系統(tǒng)路由器和虛擬交換機??刂破骺梢韵蛴糜趯崿F(xiàn)所期望的網(wǎng)絡(luò)策略的虛擬路由器、虛擬系統(tǒng)路由器和/或虛擬交換機(例如,向用于實現(xiàn)虛擬系統(tǒng)路由器、虛擬路由器和/或虛擬交換機的下層物理和/或管理程序交換機)提供流表條目。
如果期望,控制器可以控制第一交換機、虛擬路由器和虛擬系統(tǒng)路由器,以通過經(jīng)由虛擬系統(tǒng)路由器(例如,基于控制器所生成的流表條目)路由網(wǎng)絡(luò)分組來通過物理路由器將網(wǎng)絡(luò)分組從給定端主機轉(zhuǎn)發(fā)到外部網(wǎng)絡(luò)。通過向下層交換機提供邏輯網(wǎng)絡(luò)拓撲,控制器可以允許網(wǎng)絡(luò)管理員更靈活且有效地提供并實現(xiàn)用于通過網(wǎng)絡(luò)轉(zhuǎn)發(fā)網(wǎng)絡(luò)分組的所期望的網(wǎng)絡(luò)策略。
根據(jù)附圖和以下的具體實施方式,本發(fā)明的其它特征、其性質(zhì)和各種優(yōu)點將更清楚。
附圖說明
圖1是根據(jù)本發(fā)明的實施例的包括控制器和分組轉(zhuǎn)發(fā)系統(tǒng)的說明性網(wǎng)絡(luò)的簡圖。
圖2是根據(jù)本發(fā)明的實施例的可以通過網(wǎng)絡(luò)連接進行通信的控制器服務(wù)器和控制器客戶端的簡圖。
圖3是根據(jù)本發(fā)明的實施例的分組處理系統(tǒng)可以使用的類型的說明性流表的簡圖。
圖4是根據(jù)本發(fā)明的實施例的分組處理系統(tǒng)可以使用的類型的說明性流表的簡圖,示出可以基于流表的流表條目來執(zhí)行的三種說明性類型的分組轉(zhuǎn)發(fā)。
圖5是根據(jù)本發(fā)明的實施例的分組處理系統(tǒng)中處理分組中涉及的說明性步驟的流程圖。
圖6是根據(jù)本發(fā)明的實施例的具有可以由控制器進行控制的用于將網(wǎng)絡(luò)分組在網(wǎng)絡(luò)中的端主機之間路由的交換機的說明性網(wǎng)絡(luò)的簡圖。
圖7是根據(jù)本發(fā)明的實施例的實現(xiàn)具有可以由控制器進行控制的用于將網(wǎng)絡(luò)分組在網(wǎng)絡(luò)中的端主機之間路由的交換機的網(wǎng)絡(luò)的說明性基于機架的系統(tǒng)的簡圖。
圖8是根據(jù)本發(fā)明的實施例的由控制器從圖6的網(wǎng)絡(luò)生成的說明性虛擬網(wǎng)絡(luò)的簡圖。
圖9是根據(jù)本發(fā)明的實施例的具有均執(zhí)行分組轉(zhuǎn)發(fā)操作的子集的模塊的說明性交換機的簡圖。
圖10是根據(jù)本發(fā)明的實施例的可以由控制器實現(xiàn)的訪問控制列表的說明性條目。
圖11是根據(jù)本發(fā)明的實施例的在實現(xiàn)諸如由訪問控制列表標識的策略規(guī)則的網(wǎng)絡(luò)策略規(guī)則時可以由控制器生成的說明性流表條目。
圖12是示出根據(jù)本發(fā)明的實施例的虛擬網(wǎng)絡(luò)拓撲可以如何包括由控制器進行控制以在源端主機和目的地端主機之間執(zhí)行分組轉(zhuǎn)發(fā)操作的虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器的簡圖。
圖13是示出根據(jù)本發(fā)明的實施例的虛擬網(wǎng)絡(luò)拓撲可以如何由控制器進行控制以在源端主機和具有未知以太網(wǎng)地址的物理路由器之間執(zhí)行分組轉(zhuǎn)發(fā)操作的簡圖。
圖14是根據(jù)本發(fā)明的實施例的控制器可以在生成具有虛擬路由器和虛擬系統(tǒng)路由器的虛擬網(wǎng)絡(luò)拓撲時以及在控制虛擬網(wǎng)絡(luò)以實現(xiàn)所期望的網(wǎng)絡(luò)策略時執(zhí)行的說明性步驟的流程圖。
圖15是根據(jù)本發(fā)明的實施例的可以由控制器執(zhí)行用于在圖8中示出的類型的虛擬網(wǎng)絡(luò)拓撲中添加并實現(xiàn)新的網(wǎng)絡(luò)路由的說明性步驟的流程圖。
圖16是根據(jù)本發(fā)明的實施例的控制器可以在將虛擬網(wǎng)絡(luò)拓撲中的部分標記為私有,以用于限制私有部分通過虛擬網(wǎng)絡(luò)拓撲中的虛擬系統(tǒng)路由器進行通信時執(zhí)行的說明性步驟的流程圖。
具體實施方式
網(wǎng)絡(luò)(諸如,互聯(lián)網(wǎng)和與互聯(lián)網(wǎng)耦合的局域網(wǎng)和區(qū)域網(wǎng))依賴于基于分組的交換機。在本文中有時被稱為網(wǎng)絡(luò)交換機、分組處理系統(tǒng)或分組轉(zhuǎn)發(fā)系統(tǒng)的這些交換機可以基于地址信息來轉(zhuǎn)發(fā)分組。以此方式,由分組源發(fā)送的數(shù)據(jù)分組可以被傳遞到分組目的地。在網(wǎng)絡(luò)術(shù)語中,分組源和目的地有時被稱為端主機。端主機的示例是個人計算機、服務(wù)器和其它計算設(shè)備(諸如,使用有線或無線技術(shù)訪問網(wǎng)絡(luò)的便攜式電子裝置)。
網(wǎng)絡(luò)交換機按能力分,范圍從相對小的以太網(wǎng)交換機和無線接入點到包括若干線卡(line card)、冗余電源和監(jiān)管員能力的大型基于機架的系統(tǒng)。網(wǎng)絡(luò)包括來自若干銷售商的設(shè)備并不常見。來自不同銷售商的網(wǎng)絡(luò)交換機可以互連以形成分組轉(zhuǎn)發(fā)網(wǎng)絡(luò),但是由于它們的操作系統(tǒng)和控制協(xié)議之間不兼容會難以以集中方式進行管理。
可以通過在每一個網(wǎng)絡(luò)交換機中結(jié)合共用跨平臺控制模塊(在本文中有時被稱為控制器客戶端)來克服這些潛在的不兼容。集中式跨平臺控制器(諸如,控制器服務(wù)器或分布式控制器服務(wù)器)可以通過相應(yīng)的網(wǎng)絡(luò)鏈路與控制客戶端中的每一個交互??缙脚_控制器和對應(yīng)的控制器客戶端的使用允許對潛在地完全不同的網(wǎng)絡(luò)交換機設(shè)備進行集中管理。
用一個說明性配置(在本文中有時被稱為示例),通過一個或更多個控制器服務(wù)器(諸如,圖1的控制器服務(wù)器18)來提供集中式控制??梢栽讵毩⒂嬎銠C、計算機的集群、分布在多個位置的計算機的集合、嵌入網(wǎng)絡(luò)交換機內(nèi)的硬件或其它合適的計算設(shè)備12上實現(xiàn)控制器服務(wù)器18??刂破鞣?wù)器18可以在單個計算機上運行為單個進程或者可以分布在許多主機上用于冗余。分布式布置的使用可以有助于向網(wǎng)絡(luò)10提供對于意外的網(wǎng)絡(luò)分割(例如,兩個校園之間的網(wǎng)絡(luò)鏈路被中斷的情形)的回彈(resiliency)。
在分布式控制器布置中,控制器節(jié)點可以使用控制器內(nèi)協(xié)議來交換信息。例如,如果新的端主機連接到只與第一控制器節(jié)點連接的網(wǎng)絡(luò)硬件(例如,交換機),則該第一控制器節(jié)點可以使用控制器內(nèi)協(xié)議以告知其它控制器節(jié)點存在新的端主機。如果期望,交換機或其它網(wǎng)絡(luò)組件可以連接到若干控制器節(jié)點。在本文中有時將使用單個控制器服務(wù)器控制關(guān)聯(lián)的交換機的網(wǎng)絡(luò)的布置描述為示例。
圖1中的控制器服務(wù)器18可以收集關(guān)于網(wǎng)絡(luò)10的拓撲的信息。例如,控制器服務(wù)器18可以通過網(wǎng)絡(luò)發(fā)送鏈路層發(fā)現(xiàn)協(xié)議(LLDP)探測分組以發(fā)現(xiàn)網(wǎng)絡(luò)10的拓撲??刂破鞣?wù)器18可以使用網(wǎng)絡(luò)拓撲的信息和網(wǎng)絡(luò)設(shè)備能力的信息以確定用于分組流過網(wǎng)絡(luò)的合適路徑。一旦已經(jīng)識別合適路徑,控制器服務(wù)器18就可以向網(wǎng)絡(luò)10中的硬件發(fā)送對應(yīng)的設(shè)置數(shù)據(jù),以確保分組如期望的那樣流過網(wǎng)絡(luò)。諸如這些的網(wǎng)絡(luò)配置操作可以在系統(tǒng)建立操作期間執(zhí)行、可以連續(xù)地在后臺執(zhí)行、或者可以響應(yīng)于出現(xiàn)新發(fā)送的數(shù)據(jù)分組(即,還未對其創(chuàng)建預(yù)先存在路徑的分組)執(zhí)行。
可以使用控制器服務(wù)器18來實現(xiàn)網(wǎng)絡(luò)配置規(guī)則20。規(guī)則20可以指定哪些服務(wù)是各種網(wǎng)絡(luò)實體可用的。例如,規(guī)則20可以指定網(wǎng)絡(luò)10中哪些用戶(或哪些類型的用戶)可以訪問特定服務(wù)器。又如,規(guī)則20可以包括識別網(wǎng)絡(luò)流量的路由策略和將在所識別的網(wǎng)絡(luò)流量上執(zhí)行的轉(zhuǎn)發(fā)操作。例如,可以在計算設(shè)備12處的數(shù)據(jù)庫中維護規(guī)則20。
控制器服務(wù)器18和相應(yīng)網(wǎng)絡(luò)交換機14處的控制器客戶端30可以使用網(wǎng)絡(luò)協(xié)議棧通過網(wǎng)絡(luò)鏈路16進行通信。
各交換機(例如,各分組轉(zhuǎn)發(fā)系統(tǒng))14可以具有輸入-輸出端口34(有時被稱為網(wǎng)絡(luò)交換機接口)??梢允褂秒娎|將多個設(shè)備連接到端口34。例如,端主機(諸如,個人計算機、網(wǎng)絡(luò)服務(wù)器和其它計算設(shè)備)可以被插入端口34中。還可以使用端口34將一個交換機14連接到另一個交換機14。
分組處理電路32可以用于將分組從端口34中的一個轉(zhuǎn)發(fā)到端口34中的另一個并且可以用于對到來的分組執(zhí)行其它合適的動作。可以使用一個或更多個集成電路(諸如,專用高速交換機電路)來實現(xiàn)分組處理電路32并且分組處理電路32可以用作硬件數(shù)據(jù)路徑。如果期望,正在控制單元24上運行的分組處理軟件26可以用于實現(xiàn)軟件數(shù)據(jù)路徑。
控制單元24可以包括用于存儲并運行控制軟件的處理和存儲器電路(例如,一個或更多個微處理器、存儲器芯片和其它控制電路)。例如,控制單元24可以存儲并運行軟件(諸如,分組處理軟件26),可以存儲流表28,并且可以用于支持控制器客戶端30的操作。
控制器客戶端30和控制器服務(wù)器18可以與網(wǎng)絡(luò)交換機協(xié)議(諸如,OpenFlow協(xié)議(參見例如OpenFlow協(xié)議的OpenFlow Switch Specification版本1.0.0、1.3.1或其它版本))兼容??刂破骺蛻舳?0之中的一個或更多個客戶端還可以與其它協(xié)議(例如,簡單網(wǎng)絡(luò)管理協(xié)議)兼容。使用OpenFlow協(xié)議或其它合適協(xié)議,控制器服務(wù)器18可以向控制器客戶端30提供確定交換機14將如何處理來自輸入-輸出端口34的到來分組的數(shù)據(jù)。
用一種合適的布置,來自控制器服務(wù)器18的流表數(shù)據(jù)可以被存儲在流表(諸如,流表28)中??梢允褂昧鞅?8的條目來配置交換機14(例如,分組處理電路32和/或分組處理軟件26的功能)。在典型的情況下,流表28用作用于流表條目的高速緩存存儲并且這些流表條目的對應(yīng)版本被嵌入分組處理電路32的電路所維護的設(shè)置內(nèi)。然而,這僅僅是說明性的。流表28可以用作交換機14中的流表條目的專用存儲或者可以被省去,以有利于分組處理電路32內(nèi)的流表存儲資源。通常,可以使用任何合適的數(shù)據(jù)結(jié)構(gòu)(例如,一個或更多個表、列表等)來存儲流表條目。為了清晰起見,流表28的數(shù)據(jù)(無論是在控制單元24中的數(shù)據(jù)庫中維護還是嵌入分組處理電路32的配置內(nèi))在本文中被稱為形成流表條目(例如,流表28中的行)。
存儲確定交換機14將如何處理到來的分組的數(shù)據(jù)的流表28的示例僅僅是說明性的。如果期望,可以使用任何分組轉(zhuǎn)發(fā)決策引擎作為流表28的替代或補充,以輔助分組轉(zhuǎn)發(fā)系統(tǒng)14做出關(guān)于如何轉(zhuǎn)發(fā)網(wǎng)絡(luò)分組的決策。例如,分組轉(zhuǎn)發(fā)決策引擎可以指導(dǎo)分組轉(zhuǎn)發(fā)系統(tǒng)14基于網(wǎng)絡(luò)分組的屬性(例如,基于網(wǎng)絡(luò)協(xié)議報頭)來向預(yù)定的端口轉(zhuǎn)發(fā)網(wǎng)絡(luò)分組。
可以向任何期望的交換機提供與控制器服務(wù)器通信并且由它控制的控制器客戶端。例如,可以使用運行控制軟件并且省去分組處理電路32的通用處理平臺來實現(xiàn)交換機14。又如,可以使用與一個或更多個高速交換集成電路(“交換IC”)耦合的控制電路來實現(xiàn)交換機14。再如,交換機14可以被實現(xiàn)為基于機架的系統(tǒng)中的線卡,該系統(tǒng)具有其自身都有分組處理電路的若干線卡。如果期望,可以在基于機架的系統(tǒng)中的一個或更多個線卡上、另一個基于機架的系統(tǒng)中、或與網(wǎng)絡(luò)耦合的其它計算設(shè)備上實現(xiàn)控制器服務(wù)器。
如圖2中所示,控制器服務(wù)器18和控制器客戶端30可以使用網(wǎng)絡(luò)協(xié)議棧(諸如,網(wǎng)絡(luò)協(xié)議棧58和網(wǎng)絡(luò)協(xié)議棧60)通過網(wǎng)絡(luò)路徑66進行通信。棧58和60可以是例如Linux TCP/IP?;騐xWorks操作系統(tǒng)(作為示例)中的TCP/IP棧。路徑66可以是例如支持交換機14和外部設(shè)備之間的網(wǎng)絡(luò)連接的路徑(例如,圖1的網(wǎng)絡(luò)路徑16)或者可以是基于機架的系統(tǒng)中的主干路徑。其中路徑66是網(wǎng)絡(luò)路徑(諸如,路徑16)的布置有時在本文中被描述為示例。
控制協(xié)議棧56用作網(wǎng)絡(luò)協(xié)議棧58和控制軟件54之間的接口??刂茀f(xié)議棧62用作網(wǎng)絡(luò)協(xié)議棧60和控制軟件64之間的接口。在操作期間,當(dāng)控制器服務(wù)器18正與控制器客戶端30進行通信時,控制協(xié)議棧56生成并解析控制協(xié)議消息(例如,激活端口或者將特定流表條目安裝到流表28中的控制消息)。通過使用圖2中示出的類型的布置,通過控制器服務(wù)器18和控制器客戶端30之間的鏈路形成網(wǎng)絡(luò)連接??刂破鞣?wù)器18和控制器客戶端30可以通過互聯(lián)網(wǎng)協(xié)議(IP)網(wǎng)絡(luò)連接使用傳輸控制協(xié)議(TCP)或用戶數(shù)據(jù)報協(xié)議(UDP)進行通信。當(dāng)通過網(wǎng)絡(luò)連接在控制器服務(wù)器18和控制器客戶端30之前進行通信時可以使用的控制協(xié)議的示例包括SNMP和OpenFlow協(xié)議棧版本1.0.0(作為示例)。
流表28包含具有若干字段(有時被稱為報頭字段)的流表條目(例如,表中的行)??梢詫⒂山粨Q機14接收到的分組中的字段與流表中的字段進行比較。各流表條目可以具有關(guān)聯(lián)的動作。當(dāng)分組中的字段與流表條目中的字段匹配時,可以采取該流表條目對應(yīng)的動作。
在圖3中示出說明性的流表。如圖3中所示,流表28可以具有流表條目(行)68。各流表條目可以與報頭70、動作72和統(tǒng)計74關(guān)聯(lián)。報頭70可以均包括若干報頭字段76。各流表條目中的動作指示當(dāng)檢測到分組中的字段和該流表條目的報頭中的對應(yīng)字段之間匹配時交換機14將對分組執(zhí)行什么動作。交換機14可以在流表28的統(tǒng)計部分中維護統(tǒng)計數(shù)據(jù)(計數(shù)值),當(dāng)期望得到關(guān)于交換機14的性能的信息時,控制器服務(wù)器18可以查詢該統(tǒng)計部分。
報頭70中的報頭字段(以及各到來的分組中的對應(yīng)字段)可以包括以下字段:入端口(即,正通過其接收分組的交換機14中的物理端口的標識)、以太網(wǎng)源地址、以太網(wǎng)目的地地址、以太網(wǎng)類型、虛擬局域網(wǎng)(VLAN)識別(有時被稱為VLAN標簽)、VLAN優(yōu)先級、IP源地址、IP目的地地址、IP協(xié)議、IP ToS(服務(wù)類型)位、傳輸源端口/互聯(lián)網(wǎng)控制消息協(xié)議(ICMP)類型(有時被稱為源TCP端口)和傳輸目的地端口/ICMP代碼(有時被稱為目的地TCP端口)。如果期望,可以使用其它字段。例如,可以使用網(wǎng)絡(luò)協(xié)議字段和協(xié)議端口字段。
各流表條目(流條目)與指示交換機如何處理匹配的分組的零個或更多個動作關(guān)聯(lián)。如果不存在轉(zhuǎn)發(fā)動作,則優(yōu)選地丟棄分組。當(dāng)在分組字段和流表條目中的報頭字段之間檢測到匹配時,交換機14可以采取的動作可以包括以下動作:轉(zhuǎn)發(fā)(例如,在不包括到來接口的所有接口上都發(fā)出分組的ALL、封裝分組并且向控制器服務(wù)器發(fā)送分組的CONTROLLER、向交換機的本地網(wǎng)絡(luò)協(xié)議棧發(fā)送分組的LOCAL、執(zhí)行流表28中的動作的TABLE、從輸入端口發(fā)送分組的IN_PORT、用于使用例如傳統(tǒng)的層2、VLAN和層3處理用交換機所支持的默認轉(zhuǎn)發(fā)路徑來處理分組的NORMAL,以及沿著不包括到來接口的最小轉(zhuǎn)發(fā)樹洪泛分組的FLOOD)。交換機14可以采用的另外的動作包括:用于通過附接到端口的隊列來轉(zhuǎn)發(fā)分組的排隊動作和丟棄動作(例如,用于在沒有指定動作的情況下丟棄與流表條目匹配的分組)。交換機14還可以支持修改字段動作??梢圆扇〉男薷淖侄蝿幼鞯氖纠ǎ涸O(shè)置VLAN ID、設(shè)置VLAN優(yōu)先級、刪除VLAN報頭、修改VLAN標簽、修改以太網(wǎng)源MAC(介質(zhì)訪問控制)地址、修改以太網(wǎng)目的地MAC地址、修改IPv4源地址、修改IPv4Tos位、修改傳輸目的地端口。修改字段動作可以用于重寫網(wǎng)絡(luò)分組的與流表條目匹配的部分。
圖4是具有三個流表條目的說明性流表。這些條目包括具有通配符(例如,符號“*”)的字段。當(dāng)特定字段中存在通配符時,所有到來的分組都將被認為相對于該字段形成“匹配”,而不管到來的分組中的字段的特定值如何。另外的字段可以匹配另外的分組信息(例如,網(wǎng)絡(luò)分組的分組報頭信息)。
圖4中的表的第一行的條目指導(dǎo)其中流表條目正操作的交換機執(zhí)行以太網(wǎng)交換。特別地,具有匹配的以太網(wǎng)目的地地址的到來的分組被轉(zhuǎn)發(fā)到端口3。
圖4中的表的第二行的條目圖示可以如何配置交換機以執(zhí)行互聯(lián)網(wǎng)路由(即,基于分組的目的地IP地址來轉(zhuǎn)發(fā)它們)。
圖4中的表的第三行包含圖示可以如何配置交換機以執(zhí)行防火墻功能的條目。當(dāng)接收到具有目的地IP端口值80的分組時,丟棄該分組(即,交換機被配置成用作阻擋端口80流量的防火墻)。
圖4中示出的類型的流表條目可以在系統(tǒng)設(shè)置操作期間被控制器服務(wù)器18加載到交換機14中,或者可以響應(yīng)于在控制器服務(wù)器18處從交換機(諸如,交換機14)接收到分組并且進行處理而實時地從控制器服務(wù)器18提供到交換機14。在具有眾多交換機14的網(wǎng)絡(luò)中,每一個交換機可以被提供合適的流表條目以形成通過網(wǎng)絡(luò)的路徑。
圖5中示出交換機14在處理在輸入-輸出端口34上接收到的分組時可以執(zhí)行的說明性步驟。在步驟78中,交換機14在其端口中的一個(例如,圖1的輸入-輸出端口34中的一個)上接收分組。
在步驟80中,交換機14將接收到的分組的字段與該交換機的流表28中的流表條目的字段進行比較,以確定是否存在匹配。流表條目中的一些字段可以包括完整值(例如,完整地址)。其它字段可以包含通配符(即,用“don’t care”通配符“*”標記的字段)。其它字段可以具有部分完整條目(例如,部分通配的部分地址)。一些字段可以使用范圍(例如,通過將TCP端口數(shù)量限制到1和4096之間的值)并且實際上使用該范圍來實現(xiàn)一種類型的部分通配。在接收到的分組和流表條目之間進行逐字段比較時,交換機14可以考慮流表條目中的各字段是否包含沒有任何通配的完整值、有通配的部分值還是通配符(即,完全通配的字段)。
如果在步驟80的操作期間確定分組的字段和流表條目的對應(yīng)字段之間不存在匹配,則交換機14可以通過鏈路16向控制器服務(wù)器18發(fā)送分組(步驟84)。
如果在步驟80的操作期間確定分組和流表條目之間存在匹配,則交換機14可以執(zhí)行與該流表條目關(guān)聯(lián)的動作并且可以更新該流表條目的統(tǒng)計字段中的計數(shù)值(步驟82)。然后,如線86所指示的,處理可以循環(huán)回到步驟78,使得交換機14可以處理另一個分組。
圖6是其中交換機可以由控制器18控制的說明性網(wǎng)絡(luò)100的簡圖。控制器18可以是控制器服務(wù)器或跨若干計算裝置實現(xiàn)的分布式控制器。如圖6中所示,網(wǎng)絡(luò)100可以包括交換機C1、C2、E1、E2、E3、E4和E5??刂破?8可以經(jīng)由控制路徑66與網(wǎng)絡(luò)100的交換機耦合。控制器18可以使用控制路徑66來控制交換機(例如,通過提供諸如圖3的流表條目68的流表條目)。
網(wǎng)絡(luò)100可以包括與網(wǎng)絡(luò)100的交換機耦合的端主機(諸如,端主機EH1、EH2、EH3、EH4、EH5和EH6)。與端主機直接耦合的交換機有時可以被稱為邊緣交換機,而僅僅與其它交換機互連而沒有與端主機直接耦合的交換機可以被稱為核心交換機。在圖6的示例中,交換機E1、E2、E3、E4和E5是邊緣交換機,因為它們與端主機耦合。交換機C1和C2是核心交換機,因為交換機C1和C2與交換機E1、E2、E3、E4和E5互連而沒有與端主機直接耦合。核心交換機(諸如,交換機C1和C2)可以將網(wǎng)絡(luò)100耦合到其它網(wǎng)絡(luò)102(例如,包括交換機和端主機的其它網(wǎng)絡(luò))。其中邊緣交換機與核心交換機直接耦合的圖6的示例僅僅是說明性的。如果期望,可以在邊緣交換機和核心交換機之間插入另外的交換機。
用于將數(shù)據(jù)路由到外部網(wǎng)絡(luò)的裝置(諸如,互聯(lián)網(wǎng)路由器67)可以與網(wǎng)絡(luò)100的交換機耦合。在圖6的示例中,互聯(lián)網(wǎng)路由器67與邊緣交換機E4的端口P6耦合。如果期望,路由器67可以與網(wǎng)絡(luò)100中的另外的交換機(例如,一個或更多個邊緣交換機等)耦合。外部路由器67可以用于通過OSI模型的層3執(zhí)行將從網(wǎng)絡(luò)100中的交換機接收的數(shù)據(jù)轉(zhuǎn)發(fā)到外部網(wǎng)絡(luò)102(例如,互聯(lián)網(wǎng)),如路徑71所示。可以使用控制器18通過路徑16來控制網(wǎng)絡(luò)中的交換機,而控制器18不控制端主機EH和外部路由器(諸如,互聯(lián)網(wǎng)路由器67)。
圖7是使用基于機架的系統(tǒng)實現(xiàn)的圖6的網(wǎng)絡(luò)100的說明性示例。如圖7中所示,可以使用與交換機114(例如,如圖7中所示的核心交換機)耦合的網(wǎng)絡(luò)機架110和112來實現(xiàn)邊緣交換機和端主機。如果期望,網(wǎng)絡(luò)100可以包括容納另外的端主機和交換機并且與交換機14耦合的另外的網(wǎng)絡(luò)機架。網(wǎng)絡(luò)機架110可以包括邊緣交換機E1和E2和端主機EH1和EH2,而網(wǎng)絡(luò)機架112可以包括邊緣交換機E3和E4和端主機EH3和EH4。邊緣交換機E1、E2、E3和E4可以用作經(jīng)由網(wǎng)絡(luò)路徑與對應(yīng)的網(wǎng)絡(luò)機架112的各端主機耦合的機架頂部交換機(top-of-rack switch)。例如,機架頂部交換機E3與網(wǎng)絡(luò)112的端主機(例如,端主機EH3和EH4)中的每一個連接。
各機架頂部交換機用作對應(yīng)的網(wǎng)絡(luò)機架的端主機和其它網(wǎng)絡(luò)裝置(諸如,網(wǎng)絡(luò)100的其它部分或其它網(wǎng)絡(luò)102)之間的接口??梢砸筮M出網(wǎng)絡(luò)機架110的端主機的網(wǎng)絡(luò)流量穿過網(wǎng)絡(luò)機架110的機架頂部交換機(例如,機架頂部交換機E1和E2)中的至少一個。類似地,可以要求網(wǎng)絡(luò)機架112的網(wǎng)絡(luò)流量穿過交換機E3和E4中的至少一個。例如,端主機EH1向端主機EH3發(fā)送的網(wǎng)絡(luò)分組可以被機架頂部交換機E1、核心交換機C1和機架頂部交換機E3轉(zhuǎn)發(fā)。又如,端主機EH1向端主機EH3發(fā)送的網(wǎng)絡(luò)分組可以被機架頂部交換機E2、核心交換機C1和機架頂部交換機E4轉(zhuǎn)發(fā)。
如果期望,可以使用網(wǎng)絡(luò)機架110和112的計算設(shè)備來實現(xiàn)交換機??梢允褂糜嬎阍O(shè)備(諸如,網(wǎng)絡(luò)機架110的線卡)來實現(xiàn)交換機E5。軟件交換機E5可以有時被稱為管理程序交換機??梢允褂脤S秒娐坊蛘呤褂梅至⒌挠嬎阍O(shè)備上(例如,線卡上)的軟件來實現(xiàn)管理程序交換機。然而,這些軟件交換機通過電纜與網(wǎng)絡(luò)的剩余部分耦合,電纜被插入其上實現(xiàn)了軟件交換機的計算設(shè)備的專用物理端口中。
交換機E5可以與實現(xiàn)在與交換機E5相同的計算設(shè)備上的端主機(諸如,端主機EH5)接口連接。換句話講,可以使用共享的計算設(shè)備來實現(xiàn)交換機E5和端主機。如果期望,可以在共享的計算設(shè)備上以軟件來實現(xiàn)若干端主機。例如,可以在共享的計算設(shè)備上實現(xiàn)數(shù)十個、數(shù)百個、數(shù)千個或更多的端主機并且在軟件中與軟件交換機E5的邏輯端口邏輯耦合,而軟件交換機E5通過其上實現(xiàn)軟件交換機E5的計算設(shè)備的物理端口與網(wǎng)絡(luò)100連接。
如圖7中所示,可以(例如,使用網(wǎng)絡(luò)機架110的線卡或其它計算設(shè)備的資源)在網(wǎng)絡(luò)機架110中實現(xiàn)控制器18??刂破?8可以通過發(fā)送控制分組并且從交換機接收控制平面分組來與機架頂部交換機和核心交換機進行通信。在該情況下,網(wǎng)絡(luò)100中的一個或更多個交換機可以形成圖6的控制路徑66的部分。例如,交換機E1或交換機E2可以用作核心交換機C1和C2與控制器18之間的控制路徑的部分。又如,交換機E1、E2、C1和C2可以形成控制器18與交換機E3和E4之間的控制路徑的部分。
與一個或更多個端主機耦合的邊緣交換機(諸如,E1、E2、E3和E4)有時被稱為葉交換機(leaf switch)。例如,基于機架的系統(tǒng)中的機架頂部交換機有時被稱為葉交換機。與葉交換機中的每一個耦合的交換機114有時被稱為主干交換機(spine switch)。主干交換機可以是沒有與任何端主機連接的核心交換機(例如,如圖7中所示)或者可以具有與端主機連接的一個或更多個端口。
對于用戶(諸如,網(wǎng)絡(luò)管理員)而言,配置網(wǎng)絡(luò)100以用于期望的操作會是挑戰(zhàn)性的。例如,可以期望隔離或者以其它方式限制端主機的群組之間的通信。又如,網(wǎng)絡(luò)管理員手動配置用于網(wǎng)絡(luò)的各交換機和各端主機的網(wǎng)絡(luò)策略或路由規(guī)則會是低效的。控制器18可以被配置成通過下層物理網(wǎng)絡(luò)拓撲來實現(xiàn)虛擬路由器和虛擬交換機的邏輯網(wǎng)絡(luò)拓撲。邏輯網(wǎng)絡(luò)拓撲可以提供益處(諸如,提高的網(wǎng)絡(luò)配置效率、靈活性和能力)。圖8是其中控制器18被配置成從圖6和圖7的下層網(wǎng)絡(luò)100來實現(xiàn)虛擬網(wǎng)絡(luò)100的說明性示例。
虛擬網(wǎng)絡(luò)120的虛擬網(wǎng)絡(luò)拓撲可以是下層網(wǎng)絡(luò)100的物理限制(例如,各虛擬路徑在下層網(wǎng)絡(luò)中具有至少一條(如果沒有更多)對應(yīng)的路徑)內(nèi)的任何期望的拓撲。下層網(wǎng)絡(luò)可以包括物理交換機和/或基于軟件的交換機(諸如,管理程序交換機E5)。
如圖8中所示,虛擬網(wǎng)絡(luò)拓撲120(在本文中有時被稱為邏輯交換結(jié)構(gòu)、邏輯結(jié)構(gòu)、虛擬交換結(jié)構(gòu)、虛擬結(jié)構(gòu)、邏輯系統(tǒng)、虛擬系統(tǒng)、邏輯網(wǎng)絡(luò)或虛擬網(wǎng)絡(luò))可以包括虛擬交換機(諸如,虛擬交換機VSW1、VSW2和VSW3)、虛擬路由器(諸如,虛擬路由器VR1和VR2)和虛擬系統(tǒng)路由器(諸如,虛擬系統(tǒng)路由器SR1)。虛擬路由器可以在本文中有時被稱為邏輯交換機、邏輯段、虛擬段或段。虛擬路由器可以在本文中有時被稱為邏輯路由器、邏輯租戶、虛擬租戶或租戶。虛擬系統(tǒng)路由器可以在本文中有時被稱為邏輯系統(tǒng)路由器、邏輯系統(tǒng)租戶、虛擬系統(tǒng)租戶或系統(tǒng)租戶。
虛擬交換機從網(wǎng)絡(luò)的端主機的群組形成并且可以由端主機的任何期望的網(wǎng)絡(luò)屬性(例如,端主機的MAC地址或MAC地址的范圍、端主機的IP地址或IP地址的范圍)限定。在圖8的示例中,虛擬交換機VSW1可以被指派端主機EH3,虛擬交換機VSW2可以被指派端主機EH1和EH6,并且虛擬交換機VSW3可以被指派端主機EH2、EH4和EH5??刂破?8可以從端主機的群組生成虛擬交換機。
在某些情況下,從虛擬路由器、虛擬交換機和虛擬系統(tǒng)路由器的角度來說(例如,從邏輯交換結(jié)構(gòu)的角度來說),用于將分組路由到外部網(wǎng)絡(luò)的物理路由器(諸如,互聯(lián)網(wǎng)路由器67)邏輯上與端主機無法區(qū)分。例如,可以由落入用于生成(識別)虛擬交換機的MAC地址的范圍或IP地址的范圍內(nèi)的MAC地址或IP地址來識別互聯(lián)網(wǎng)路由器67(例如,使得結(jié)構(gòu)120中的虛擬交換機VSW2如同它是端主機一樣處理進出物理路由器67的流量,即便路由器67可以與諸如互聯(lián)網(wǎng)的外部網(wǎng)絡(luò)102執(zhí)行另外的轉(zhuǎn)發(fā)操作)。通常,可以從網(wǎng)絡(luò)的端主機的群組和用于與諸如互聯(lián)網(wǎng)路由器67(在本文中有時被稱為外部路由器,因為它們路由進出并非虛擬交換結(jié)構(gòu)120的部分的外部網(wǎng)絡(luò)的數(shù)據(jù))的外部網(wǎng)絡(luò)接口連接的物理路由器形成虛擬交換機。互聯(lián)網(wǎng)路由器67因此在本文中有時被稱為邏輯網(wǎng)絡(luò)拓撲120的端主機。
在某些情況下,網(wǎng)絡(luò)裝置可以被指派給若干虛擬交換機。例如,物理路由器67可以被指派給虛擬交換機VSW1和VSW2二者(例如,在其中物理路由器67具有若干網(wǎng)絡(luò)接口的情況下)。在該情況下,邏輯結(jié)構(gòu)120可能不能夠區(qū)分與這兩個虛擬交換機連接的單個物理路由器67和均與對應(yīng)的虛擬交換機連接的兩個單獨的物理路由器(例如,因為邏輯結(jié)構(gòu)120只基于物理路由器和虛擬交換機之間的接口來處理進出物理路由器的流量)。
各虛擬交換機可以被實現(xiàn)為跨一個或更多個下層交換機(例如,下層物理或管理程序交換機)的分布式邏輯交換機。例如,虛擬交換機可以包括與不同物理交換機附接的端主機。在該情況下,控制器可以在控制單個虛擬交換機時控制若干物理交換機。控制不同的虛擬交換機可以涉及控制下層的物理和/或管理程序交換機的可能重疊的集合中的兩個集合(例如,可以在執(zhí)行與不同虛擬交換機關(guān)聯(lián)的操作時控制物理交換機)。
可以用于表征端主機的網(wǎng)絡(luò)屬性的示例包括端主機所耦合的物理或管理程序交換機端口、端主機的硬件地址(例如,MAC地址)、端主機的協(xié)議地址(例如,IP地址)、虛擬局域網(wǎng)(VLAN)標簽和/或端主機的其它網(wǎng)絡(luò)屬性。例如,控制器18可以將端主機EH1識別為與交換機E1的端口P1附接,可以由MAC地址來識別端主機EH2和EH3,并且可以將端主機EH4識別為與交換機E3的端口P2附接。又如,端主機EH5可以被識別為與管理程序交換機E5的邏輯端口P1附接。該示例僅僅是說明性的??梢栽谛纬商摂M交換機時使用任何所期望的網(wǎng)絡(luò)屬性(諸如,用于網(wǎng)絡(luò)分組報頭字段中)或網(wǎng)絡(luò)屬性的任何所期望的組合。
可以將虛擬交換機分組以形成虛擬路由器(例如,使用控制器18)。在圖8的示例中,虛擬交換機VSW1和VSW2被分組以形成虛擬路由器VR1,而虛擬交換機VSW3被指派給虛擬路由器VR2。換句話講,虛擬交換機VSW1和VSW2的端主機(和諸如互聯(lián)網(wǎng)路由器67的外部路由器)的群組被指派給虛擬路由器VR1,而虛擬交換機VSW3的端主機的群組被指派給虛擬路由器VR2。各虛擬交換機經(jīng)由虛擬路由器接口與對應(yīng)的虛擬路由器連接。虛擬交換機VSW1和VSW2與虛擬路由器VR1的相應(yīng)虛擬路由器接口IF1和IF2連接,而虛擬交換機VSW3與虛擬路由器VR2的虛擬路由器接口IF1連接。
在本文中有時被描述為示例的一個示例中,控制器18可以由對應(yīng)的IP地址來識別端主機EH并且可以將端主機(和諸如路由器67的互聯(lián)網(wǎng)路由器)分組到在本文中有時被稱為子網(wǎng)或IP子網(wǎng)的IP地址范圍。如果期望,各虛擬路由器接口(和與該接口連接的各虛擬交換機)可以被指派給對應(yīng)的IP地址范圍(例如,可以被指派給對應(yīng)的子網(wǎng))。在圖8的示例中,虛擬路由器VR1和虛擬交換機VSW1的接口IF1可以被指派給包括IP地址的第一范圍(例如,包括端主機EH3的IP地址的IP地址范圍)的第一子網(wǎng)SUBNET1(例如,使用控制器18),虛擬路由器VR1和虛擬交換機VSW2的接口IF2可以被指派給包括IP地址的第二范圍(例如,包括端主機EH6、EH1和物理路由器67的IP地址的IP地址范圍)的第二子網(wǎng)SUBNET2,并且虛擬路由器VR2和虛擬交換機VSW3的接口IF1可以被指派給包括IP地址的第三范圍(例如,包括端主機EH2、EH4和EH5的IP地址的IP地址范圍)的第三子網(wǎng)SUBNET3。
通過將各虛擬交換機(虛擬路由器接口)指派給對應(yīng)的子網(wǎng),各虛擬交換機可以用于實現(xiàn)相應(yīng)的廣播域,在該廣播域中,廣播網(wǎng)絡(luò)分組被轉(zhuǎn)發(fā)到虛擬交換機的所有端主機。廣播網(wǎng)絡(luò)分組可以是具有將網(wǎng)絡(luò)分組識別為去往關(guān)聯(lián)的廣播域的所有端主機的廣播網(wǎng)絡(luò)分組的報頭字段的網(wǎng)路分組。例如,由虛擬交換機VSW3從端主機EH2接收的廣播網(wǎng)絡(luò)分組可以被虛擬交換機VSW3轉(zhuǎn)發(fā)到被指派給虛擬交換機VSW3(即,端主機EH4和端主機EH5)的各其它端主機。
虛擬路由器執(zhí)行網(wǎng)絡(luò)路由功能并且為虛擬交換機的不同廣播域提供隔離。例如,虛擬路由器VR1可以防止廣播分組被從虛擬交換機VSW1轉(zhuǎn)發(fā)到虛擬交換機VSW2(反之亦然)??梢砸罁?jù)給定的虛擬路由器接口的對應(yīng)子網(wǎng)(例如,IP地址范圍)來定義廣播域。相比于虛擬路由器,虛擬交換機并不執(zhí)行基于IP域的任何網(wǎng)絡(luò)路由功能(例如,如果期望,虛擬交換機可以基于MAC地址域來執(zhí)行網(wǎng)絡(luò)路由功能)。
可以由虛擬路由器執(zhí)行的網(wǎng)絡(luò)路由功能包括修改在虛擬路由器的接口處接收的網(wǎng)絡(luò)分組的報頭。虛擬路由器可以縮減網(wǎng)絡(luò)分組的生存時間(TTL)IP報頭字段。虛擬路由器可以修改以太網(wǎng)報頭(諸如,源和目的地MAC地址字段),以使其與所期望的廣播域?qū)?yīng)。例如,虛擬路由器的各接口可以被指派相應(yīng)的以太網(wǎng)地址。在圖8的示例中,虛擬路由器VR1的接口IF1被指派以太網(wǎng)地址MACVR1-1,而接口IF2被指派以太網(wǎng)地址MACVR1-1并且虛擬路由器VR2的接口IF1被指派以太網(wǎng)地址MACVR2-3。在該情況下,虛擬路由器可以重寫源MAC地址字段,使其與虛擬路由器的入(出)接口匹配。虛擬路由器可以重寫目的地MAC地址字段以使其匹配下一跳的地址(例如,系統(tǒng)路由器SR1的以太網(wǎng)地址)。
各虛擬路由器可以被實現(xiàn)為跨一個或更多個下層交換機(例如,下層物理或管理程序交換機)的分布式邏輯交換機。在該情況下,控制器可以在控制單個虛擬路由器時控制多個物理交換機??刂撇煌奶摂M路由器可以涉及控制下層的物理和/或管理程序交換機的兩個可能重疊的集合(例如,可以在執(zhí)行與不同虛擬路由器關(guān)聯(lián)的操作時控制物理交換機)。如果期望,可以在網(wǎng)絡(luò)中的相同物理/管理程序交換機或者物理/管理程序交換機的重疊集合上形成一個或更多個虛擬路由器??梢栽谂c邏輯網(wǎng)絡(luò)120中的虛擬交換機相同的物理/管理程序交換機中的一個或更多個上形成一個或更多個虛擬路由器。
虛擬路由器可以被分組以形成虛擬系統(tǒng)路由器。在圖8的示例中,虛擬路由器VR1和VR2被分組以形成虛擬系統(tǒng)路由器SR1。換句話講,虛擬路由器的群組(和虛擬交換機和端主機的關(guān)聯(lián)群組)被指派給虛擬系統(tǒng)路由器SR1(例如,使用控制器18)。各虛擬路由器經(jīng)由相應(yīng)的虛擬系統(tǒng)路由器接口與虛擬系統(tǒng)路由器SR1連接。虛擬路由器VR1和VR2與虛擬系統(tǒng)路由器SR1的相應(yīng)虛擬系統(tǒng)路由器接口IFSR1和IFSR2連接(例如,虛擬路由器VR1的第三接口IF3可以與虛擬系統(tǒng)路由器接口IFSR1連接,而虛擬路由器VR2的第二接口IF2可以與虛擬系統(tǒng)路由器接口IFSR2連接)。虛擬系統(tǒng)路由器可以只與系統(tǒng)120中的虛擬路由器連接(例如,而沒有連接到端主機、虛擬交換機或諸如路由器67的外部路由器)。其中系統(tǒng)路由器SR1通過關(guān)聯(lián)的以太網(wǎng)地址識別虛擬路由器VR1和VR2的示例僅僅是說明性的,并且如果期望,系統(tǒng)路由器SR1可以使用任何所期望的數(shù)據(jù)封裝方案(例如,除了IP地址外的任何所期望的方案)來識別虛擬路由器VR1和VR2。
虛擬系統(tǒng)路由器可以執(zhí)行的網(wǎng)絡(luò)路由功能包括修改虛擬系統(tǒng)路由器的接口處接收的網(wǎng)絡(luò)分組的報頭。虛擬系統(tǒng)路由器可以縮減網(wǎng)絡(luò)分組的生存時間(TTL)IP報頭字段。虛擬系統(tǒng)路由器可以修改以太網(wǎng)報頭(諸如,源和目的地MAC地址)。例如,虛擬系統(tǒng)路由器的各接口(和虛擬路由器的各耦合接口)可以被指派相應(yīng)的以太網(wǎng)地址。在圖8的示例中,虛擬系統(tǒng)路由器SR1的接口IFSR1被指派以太網(wǎng)地址MACSR1,而接口IFSR2被指派以太網(wǎng)地址MACSR2。虛擬路由器VR1的接口IF3被指派以太網(wǎng)地址MACVR1,而虛擬路由器VR2的接口IF2被指派以太網(wǎng)地址MACVR2。在該情況下,虛擬系統(tǒng)路由器可以重寫源MAC地址字段,以與虛擬系統(tǒng)路由器的入(出)接口匹配。虛擬系統(tǒng)路由器可以重寫目的地MAC地址字段以匹配下一跳的地址(例如,給定虛擬路由器的下一跳地址)。
虛擬系統(tǒng)路由器SR1可以將數(shù)據(jù)在虛擬路由器VR1和VR2之間路由。如果期望,控制器18可以控制虛擬系統(tǒng)路由器SR1,以應(yīng)用用于在虛擬路由器之間路由分組的虛擬路由器間網(wǎng)絡(luò)策略(例如,通過向虛擬系統(tǒng)路由器SR1提供對應(yīng)的流表條目)。通過將若干虛擬路由器與單個虛擬系統(tǒng)路由器耦合,相對于其中若干虛擬路由器以其它方式連接的情況(例如,以鏈或星形配置),通過利用虛擬系統(tǒng)路由器路由數(shù)據(jù),可以將數(shù)據(jù)更有效地在兩個虛擬路由器之間路由。控制器18可以用于限定系統(tǒng)120中的虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器(例如,通過將端主機指派給所期望的群組并且在下層的物理交換機上實現(xiàn)轉(zhuǎn)發(fā)策略)??刂破?8可以通過獨立地向虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器中的每一個提供實現(xiàn)所期望的網(wǎng)絡(luò)策略的對應(yīng)網(wǎng)絡(luò)轉(zhuǎn)發(fā)規(guī)則來主動地控制虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器的操作。
各虛擬系統(tǒng)路由器可以被實現(xiàn)為跨一個或更多個下層交換機(例如,下層物理或管理程序交換機)的分布式邏輯路由器。在該情況下,控制器可以在控制單個虛擬系統(tǒng)路由器時控制多個物理交換機??刂撇煌奶摂M系統(tǒng)路由器可以涉及控制下層的物理和/或管理程序交換機的兩個可能重疊的集合(例如,可以在執(zhí)行與不同虛擬系統(tǒng)路由器關(guān)聯(lián)的操作時控制物理交換機)。如果期望,可以在網(wǎng)絡(luò)中的相同物理/管理程序交換機或者與物理/管理程序交換機的重疊集合上形成一個或更多個虛擬系統(tǒng)路由器(例如,可以在單個管理程序交換機上或一個或更多個物理和/或管理程序交換機的任何所期望的組合上實現(xiàn)所有虛擬路由器、虛擬系統(tǒng)路由器和虛擬交換機)。圖8的示例僅僅是說明性的。如果期望,結(jié)構(gòu)120可以包括以任何所期望方式布置的任何所期望數(shù)量的虛擬系統(tǒng)路由器、虛擬路由器、虛擬交換機和控制器18。
圖9是交換機130(諸如,物理或管理程序交換機)的說明性框圖。交換機130可以是例如諸如圖6的邊緣交換機E1、E2、E3或E4的邊緣交換機(例如,如圖7中所示的葉交換機)或者可以是諸如交換機C1或C2的核心交換機(例如,如圖7中所示的主干交換機)。如圖9中所示,交換機130可以包括諸如端口P1、P2、P3、P4、P5、P6等的端口。交換機130可以包括虛擬交換機識別模塊132、L2轉(zhuǎn)發(fā)模塊134、虛擬路由器識別模塊136、L3轉(zhuǎn)發(fā)模塊138和基于訪問控制列表和策略的轉(zhuǎn)發(fā)模塊140??梢允褂孟鄳?yīng)的專用電路來實現(xiàn)這些模塊,可以使用共享的專用電路來實現(xiàn)這些模塊,或者可以使用處理電路上的軟件來實現(xiàn)這些模塊。例如,可以使用圖1的分組處理軟件26和/或分組處理電路32來實現(xiàn)這些模塊并且可以基于控制器所提供的流表條目來執(zhí)行功能。
在確定如何轉(zhuǎn)發(fā)網(wǎng)絡(luò)分組時,可以由模塊中的一個或更多個來處理交換機端口中的一個處接收的網(wǎng)絡(luò)分組。這些模塊可以以任何所期望的順序或并行地處理網(wǎng)絡(luò)分組??梢杂煽刂破鱽砜刂聘髂K所執(zhí)行的操作。
虛擬交換機識別模塊132可以基于與網(wǎng)絡(luò)分組關(guān)聯(lián)的網(wǎng)絡(luò)屬性(例如,到來端口、諸如以太網(wǎng)或IP源地址的源地址信息等)來確定網(wǎng)絡(luò)分組被指派給哪個虛擬交換機。模塊132可以向L2轉(zhuǎn)發(fā)模塊134提供識別虛擬交換機的信息。L2轉(zhuǎn)發(fā)模塊134可以基于模塊132所提供的虛擬交換機信息來執(zhí)行網(wǎng)絡(luò)轉(zhuǎn)發(fā)(例如,開放系統(tǒng)互聯(lián)“OSI”模型的層2處的轉(zhuǎn)發(fā)決策)。例如,L2轉(zhuǎn)發(fā)模塊134可以基于虛擬交換機信息和另外的分組信息(諸如,從網(wǎng)絡(luò)分組獲取的目的地MAC地址)來確定網(wǎng)絡(luò)分組應(yīng)當(dāng)被轉(zhuǎn)發(fā)給哪個交換機端口。
在諸如當(dāng)目的地端主機與不同于源端主機的虛擬交換機關(guān)聯(lián)的情況下,可以使用虛擬路由器識別模塊136和L3轉(zhuǎn)發(fā)模塊138。例如,可以使用L3轉(zhuǎn)發(fā)模塊138來處理交換機E3從端主機EH3接收的去往端主機EH1的網(wǎng)絡(luò)分組,因為端主機EH3被指派給虛擬交換機VSW1,而端主機EH1被指派給虛擬交換機VSW2。換句話講,與端主機EH3關(guān)聯(lián)的接口IF1的IP域不同于與端主機EH1關(guān)聯(lián)的接口IF2的IP域。在這些情況下,可能需要IP層(例如,OSI模型的層3)處的網(wǎng)絡(luò)路由。
虛擬路由器識別模塊136可以識別在控制網(wǎng)絡(luò)分組時應(yīng)該使用哪個虛擬路由器。模塊136可以使用網(wǎng)絡(luò)分組的網(wǎng)絡(luò)屬性連同從交換機的其它模塊接收的信息。例如,在確定哪個虛擬路由器控制網(wǎng)絡(luò)分組時,模塊136可以使用從L2轉(zhuǎn)發(fā)模塊134接收的所識別的虛擬交換機信息連同從網(wǎng)絡(luò)分組獲取的IP地址信息。
虛擬路由器識別模塊136可以向L3轉(zhuǎn)發(fā)模塊138提供所識別的虛擬路由器信息。L3轉(zhuǎn)發(fā)模塊138可以基于所識別的虛擬路由器信息并且基于從網(wǎng)絡(luò)分組獲取的附加信息來執(zhí)行網(wǎng)絡(luò)路由操作。例如,L3轉(zhuǎn)發(fā)模塊138可以使用IP報頭字段(諸如,目的地地址字段)來確定在轉(zhuǎn)發(fā)網(wǎng)絡(luò)分組時應(yīng)該使用交換機的哪個端口。在執(zhí)行網(wǎng)絡(luò)路由操作時,L3轉(zhuǎn)發(fā)模塊138可以修改網(wǎng)絡(luò)分組。例如,模塊138可以縮減TTL報頭字段并且可以重寫層2報頭字段(諸如,源和目的地MAC地址)??紤]在交換機E2處從端主機EH1接收的網(wǎng)絡(luò)分組去往端主機EH3的情況。在該情況下,網(wǎng)絡(luò)分組可以包括作為源MAC地址的端主機EH1的MAC地址、作為目的地MAC地址的虛擬路由器VR1的MAC地址(因為端主機EH1與不同于端主機EH3的虛擬路由器VR1的L3接口耦合,并且不能訪問端主機EH3的MAC地址)、作為源IP地址的端主機EH1的IP地址和作為目的地IP地址的端主機EH3的IP地址。虛擬路由器識別模塊136可以確定源端主機(EH1)經(jīng)由虛擬交換機VSW2與虛擬路由器VR1的接口IF2耦合(例如,基于控制器所提供的流表條目)。L3轉(zhuǎn)發(fā)模塊138可以確定目的地端主機EH3與虛擬路由器VR1的接口IF1耦合并且執(zhí)行網(wǎng)絡(luò)路由操作以將網(wǎng)絡(luò)分組經(jīng)由虛擬路由器VR1的接口IF1路由到端主機EH3(例如,基于控制器所提供的流表條目)。網(wǎng)絡(luò)路由操作可以包括減縮網(wǎng)絡(luò)分組的TTL字段以及重寫分組的源和目的地MAC地址。特別地,源MAC地址可以被從端主機EH1的MAC地址重寫成虛擬路由器VR1的接口IF1的MAC地址,而目的地MAC地址可以被從虛擬路由器VR1的接口IF2的MAC地址重寫成端主機EH3的MAC地址。
在分組已經(jīng)被L2轉(zhuǎn)發(fā)模塊134和/或L3轉(zhuǎn)發(fā)模塊138處理過之后,基于訪問控制列表和策略的轉(zhuǎn)發(fā)模塊140可以處理網(wǎng)絡(luò)分組(例如,在分組傳遞到交換機130上的出端口上之前,可以將分組傳遞到模塊140)。在確定將數(shù)據(jù)分組路由到哪個端口時,模塊140可以作為轉(zhuǎn)發(fā)模塊134和138的覆寫。模塊140可以基于控制器18所識別的網(wǎng)絡(luò)策略規(guī)則和從網(wǎng)絡(luò)分組獲取的信息來執(zhí)行網(wǎng)絡(luò)路由和網(wǎng)絡(luò)訪問控制操作。
如果期望,交換機130可以包括識別在控制網(wǎng)絡(luò)分組時應(yīng)該使用哪個虛擬系統(tǒng)路由器的虛擬系統(tǒng)路由器識別模塊(未示出)。虛擬系統(tǒng)路由器識別模塊可以識別在控制網(wǎng)絡(luò)分組時應(yīng)該使用哪個虛擬系統(tǒng)路由器并且可以使用網(wǎng)絡(luò)分組的網(wǎng)絡(luò)屬性連同從交換機的其它模塊接收的信息。虛擬系統(tǒng)路由器識別模塊可以向L2轉(zhuǎn)發(fā)模塊134、L3轉(zhuǎn)發(fā)模塊138和/或訪問控制模塊140提供虛擬系統(tǒng)路由器信息。模塊134、138和140可以基于所識別的虛擬系統(tǒng)路由器信息并且基于從網(wǎng)絡(luò)分組獲取的信息來執(zhí)行網(wǎng)絡(luò)路由操作。
控制器18可以用于在虛擬網(wǎng)絡(luò)的邏輯端口處(例如,分布式虛擬交換機的虛擬端口或分布式虛擬路由器的接口)應(yīng)用和實施網(wǎng)絡(luò)策略規(guī)則。網(wǎng)絡(luò)策略規(guī)則可以包括有助于確定端主機之間的網(wǎng)絡(luò)路徑的網(wǎng)絡(luò)路由規(guī)則(在本文中有時被稱為基于策略的路由(PBR)規(guī)則)并且可以包括允許或阻擋所選擇的網(wǎng)絡(luò)流量的訪問控制列表。如果期望,控制器18可以從用戶接收組合的訪問控制列表和網(wǎng)絡(luò)路由規(guī)則作為網(wǎng)絡(luò)策略規(guī)則(例如,用戶可以同時針對控制器18指定訪問控制列表和網(wǎng)絡(luò)路由策略)。訪問控制列表和網(wǎng)絡(luò)路由規(guī)則可以被用戶提供給控制器18??刂破?8可以提供實現(xiàn)訪問控制列表策略規(guī)則的轉(zhuǎn)發(fā)規(guī)則和用于在交換機130的模塊140上實現(xiàn)的網(wǎng)絡(luò)路由規(guī)則(例如,作為流表條目)。
圖10是用戶可以提供的并且由控制器18實現(xiàn)的說明性訪問控制列表的示圖。如圖10中所示,訪問控制列表142識別網(wǎng)絡(luò)屬性(諸如,邏輯端口、端主機信息和協(xié)議端口)。通常,任何所期望的網(wǎng)絡(luò)屬性(諸如,一個或更多個邏輯端口、邏輯接口、物理端口和/或分組報頭字段)可以被包括在訪問控制列表142中。分組報頭字段可以包括識別一個或更多個端主機(例如,源或目的地端主機)的報頭字段。例如,訪問控制列表142可以包括端主機識別字段(諸如,源MAC地址、源IP地址、目的地MAC地址和/或目的地IP地址)。
控制器18可以生成實現(xiàn)由訪問控制列表142定義的網(wǎng)絡(luò)策略規(guī)則的流表條目。在圖8的示例中,訪問控制列表142識別虛擬端口VSW1的邏輯端口VP2、端主機EH1的MAC地址(MACEH1)和協(xié)議端口80。協(xié)議端口80可以是傳輸控制協(xié)議(TCP)端口。控制器18可以處理訪問控制列表142以確定應(yīng)該丟棄在虛擬交換機VSW1的邏輯端口VP2處接收的具有源MAC地址MACEH1的網(wǎng)絡(luò)分組和在TCP協(xié)議端口80處接收的網(wǎng)絡(luò)分組(即,應(yīng)該丟棄與控制列表142中識別的網(wǎng)絡(luò)屬性匹配的分組)。使用邏輯端口(諸如,虛擬交換機VSW1的VP2)可以為網(wǎng)絡(luò)管理員在配置網(wǎng)絡(luò)時提供靈活性,因為虛擬網(wǎng)絡(luò)拓撲120可以具有虛擬交換機的任何期望布置和端主機到虛擬交換機的指派。如果期望,訪問控制列表142可以與用戶所提供的基于策略的路由條目(例如,與訪問控制列表142近似但具有替代動作字段“丟棄”的動作字段“將分組轉(zhuǎn)發(fā)到所期望的目的地”的條目)組合??刂破?8可以隨后生成流表條目并且向?qū)崿F(xiàn)訪問控制列表132的下層網(wǎng)絡(luò)100的下層物理和/或管理程序交換機提供流表條目(例如,可以向交換機130提供用于在模塊140上實現(xiàn)的流表條目,如圖9中所示)。
圖11是控制器18可以在實現(xiàn)訪問控制列表142時生成的的說明性流表條目。如圖11中所示,流表條目152可以包括源MAC地址字段中的端主機EH1的MAC地址、目的地MAC地址字段中的端主機EH2的MAC地址和TCP端口字段中的端口80。流表條目152可以包括通配(未示出)的另外的匹配字段,使得流表條目142匹配具有源MAC地址MACEH1、目的地MAC地址MACEH2和TCP端口80的所有分組。流表條目152可以在實現(xiàn)訪問控制列表142時提供到一個或更多個物理或管理程序交換機(例如,用于在交換機130的模塊140上實現(xiàn),如圖9中所示)。在其中訪問控制列表142與用戶所提供的基于策略的路由條目結(jié)合的情況下,可以生成具有用于將數(shù)據(jù)分組轉(zhuǎn)發(fā)到所期望目的地的動作字段的流表條目。
在交換機130的模塊140上實現(xiàn)的流表條目可以在分組已經(jīng)被L2轉(zhuǎn)發(fā)模塊134和/或L3轉(zhuǎn)發(fā)模塊138處理之后處理數(shù)據(jù)分組。模塊140可以覆寫在模塊134和138處做出的轉(zhuǎn)發(fā)確定。例如,在模塊138中確定將被轉(zhuǎn)發(fā)到端口P6的分組與模塊140中丟棄該分組的條目匹配(例如,在其中被限制接入網(wǎng)絡(luò)的端主機生成數(shù)據(jù)分組的情況下),模塊140可以覆寫模塊138之前將該分組轉(zhuǎn)發(fā)到端口P6的確定并且可以丟棄該分組。在另一個示例中,如果分組與模塊140中將分組路由到期望的目的地的條目匹配(例如,基于在控制器118上實現(xiàn)的基于策略的路由規(guī)則),則模塊140可以覆寫之前將分組轉(zhuǎn)發(fā)到端口P6的確定并且隨后可以將分組轉(zhuǎn)發(fā)到期望的目的地(例如,通過合適的端口)。
如果期望,用戶可以獨立地指定用于各虛擬交換機、虛擬路由器和/或虛擬系統(tǒng)路由器的訪問控制列表和基于策略的路由規(guī)則。例如,用戶可以指定用于結(jié)構(gòu)120上的虛擬交換機的訪問控制規(guī)則和基于策略的路由規(guī)則的第一集合,可以指定用于結(jié)構(gòu)120上的虛擬路由器的訪問控制規(guī)則和基于策略的路由規(guī)則的第二集合,并且可以指定用于結(jié)構(gòu)120上的虛擬系統(tǒng)路由器的訪問控制規(guī)則和基于策略的路由規(guī)則的第三集合。通過獨立地提供用于各虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器的訪問控制和路由規(guī)則,相對于向網(wǎng)絡(luò)上的所有交換機提供單個策略集合的系統(tǒng)網(wǎng)絡(luò)管理員可以以改進的靈活性或效率來操作結(jié)構(gòu)120。
交換機130的模塊可以共同地實現(xiàn)用于交換機的流表(諸如,流表28)。例如,可以使用虛擬交換機識別模塊132和L2轉(zhuǎn)發(fā)模塊134來實現(xiàn)只在層2報頭字段上操作的流表條目。又如,可以使用虛擬路由器識別模塊136和L3轉(zhuǎn)發(fā)模塊138來實現(xiàn)只在層3報頭字段上操作的流表條目。再如,可以使用識別模塊132、L2轉(zhuǎn)發(fā)模塊134、虛擬路由器識別模塊136和L3轉(zhuǎn)發(fā)模塊138來實現(xiàn)在層2報頭字段和層3報頭字段二者上操作的流表條目。在模塊140上實現(xiàn)的流表條目可以對接收到的分組的任何所期望字段進行操作。
其中分別實現(xiàn)模塊132、134、136、138和140的圖9的示例僅僅是說明性的。如果期望,可以使用共享電路來合并和實現(xiàn)任何兩個或更多個模塊的功能。模塊可以被實現(xiàn)為軟件交換機(諸如,圖7的管理程序交換機E5)中的軟件模塊或者可以使用專用電路來實現(xiàn)。各交換機130可能能夠執(zhí)行網(wǎng)絡(luò)轉(zhuǎn)發(fā)和網(wǎng)絡(luò)路由二者,其有助于允許控制器實現(xiàn)分布式虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器。
在指導(dǎo)網(wǎng)絡(luò)流量通過網(wǎng)絡(luò)時,控制器可以使用虛擬分布式路由器、系統(tǒng)路由器和交換機。圖12是圖示控制器可以如何控制虛擬路由器、虛擬系統(tǒng)路由器和虛擬交換機以在網(wǎng)絡(luò)中將網(wǎng)絡(luò)流量從第一端主機路由到第二端主機的示圖。圖12的虛擬網(wǎng)絡(luò)拓撲與圖8和圖6的下層網(wǎng)絡(luò)拓撲100對應(yīng)。在圖12的示例中,已經(jīng)省略了諸如虛擬交換機VSW2的元件,以便不會不必要地混淆描述。
在圖12的示例中,在步驟162中,端主機EH3可以發(fā)送去往端主機EH4的網(wǎng)絡(luò)分組160(如箭頭所示)。網(wǎng)絡(luò)分組160可以包括作為目的地IP地址的端主機EH4的IP地址(IP4)和作為源IP地址的端主機EH3的IP地址(IP3)。分組160可以包括作為源MAC地址的端主機EH3的MAC(例如,以太網(wǎng))地址(MAC3)和初始TTL值64(或任何所期望的初始值)。端主機EH3與不同于端主機EH4的L3接口關(guān)聯(lián)和耦合(例如,端主機EH3和EH4沒有耦合到單個虛擬路由器的相同接口)。端主機EH3因此不能訪問端主機EH4的MAC地址并且可以包括作為網(wǎng)絡(luò)分組160的目的地MAC地址的虛擬路由器VR1的接口IF1的MAC地址(MACVR1-1)。
基于分組160的目的地MAC地址字段,虛擬交換機VSW1可以將網(wǎng)絡(luò)分組160傳遞到虛擬路由器VR1的接口IF1。在處理期間,虛擬交換機可以忽略層3報頭字段(諸如,IP報頭字段)。虛擬路由器VR1可以在接口IF1處接收分組160并且對分組執(zhí)行網(wǎng)絡(luò)路由操作。基于來自控制器的控制數(shù)據(jù),虛擬路由器VR1可以確定應(yīng)該通過系統(tǒng)路由器SR1路由網(wǎng)絡(luò)分組160(例如,控制器可以向虛擬路由器VR1提供識別分組160將被轉(zhuǎn)發(fā)到與不同虛擬路由器耦合的端主機EH4的IP目的地地址的控制數(shù)據(jù))。例如,由控制器18提供到虛擬路由器VR1的控制數(shù)據(jù)可以指示虛擬路由器VR1通過系統(tǒng)路由器SR1來路由具有被指派給不同虛擬路由器的目的地的數(shù)據(jù)。在步驟166中,虛擬路由器VR1可以修改分組160,以生成修改后的網(wǎng)絡(luò)分組164并且將它發(fā)送到系統(tǒng)路由器SR1。在圖12的示例中,虛擬路由器VR1可以將分組的目的地MAC地址重寫成系統(tǒng)路由器SR1的MAC地址(MACSR1),將源MAC地址重寫成虛擬路由器VR1的接口IF3的MAC地址(MACVR1),并且將TTL報頭字段縮減成63。
虛擬路由器VR1可以將修改后的分組164經(jīng)由接口IF3發(fā)送到虛擬系統(tǒng)路由器SR1。虛擬系統(tǒng)路由器SR1可以在接口IFSR1處接收分組164并且可以對接收到的分組執(zhí)行網(wǎng)絡(luò)路由操作?;趤碜钥刂破鞯目刂茢?shù)據(jù)(例如,接收到的流表條目),虛擬系統(tǒng)路由器SR1可以確定應(yīng)該通過虛擬路由器VR2來路由網(wǎng)絡(luò)分組164(例如,因為端主機EH4與不同于端主機EH3的虛擬系統(tǒng)路由器接口關(guān)聯(lián)和耦合)。在步驟168中,虛擬系統(tǒng)路由器SR1可以修改分組164,以生成修改后的網(wǎng)絡(luò)分組170并且將它發(fā)送到虛擬路由器VR2??梢杂商摂M系統(tǒng)路由器SR1維護網(wǎng)絡(luò)分組中的源和目的地IP地址信息。在確定例如分組應(yīng)該經(jīng)由接口IFSR2被發(fā)送到虛擬路由器VR2時,虛擬系統(tǒng)路由器SR1可以使用所維護的修改后的分組164中的目的地IP地址信息。在圖12的示例中,虛擬系統(tǒng)路由器SR1可以將分組的目的地MAC地址重寫成虛擬路由器VR2的MAC地址(MACVR2),將源MAC地址重寫成虛擬系統(tǒng)路由器SR1的接口IFSR2的MAC地址(MACSR2),并且將TTL報頭字段縮減成62。
虛擬路由器VR2可以在接口IF2處接收分組170并且對分組執(zhí)行網(wǎng)絡(luò)路由操作?;趤碜钥刂破鞯目刂茢?shù)據(jù),虛擬路由器VR2可以確定應(yīng)該通過虛擬交換機VSW3將網(wǎng)絡(luò)分組170路由到端主機EH4。
虛擬路由器VR2可以修改分組170以生成修改后的網(wǎng)絡(luò)分組172并且經(jīng)由虛擬交換機VSW3將它發(fā)送到端主機EH4(在步驟174中)。在步驟162、166、168和174期間,可以維護網(wǎng)絡(luò)分組中的源和目的地IP地址信息(例如,虛擬路由器VR1、虛擬系統(tǒng)路由器SR1、虛擬路由器VR2和虛擬交換機VSW1和VSW3沒有在處理網(wǎng)絡(luò)分組時修改源或目的地IP地址信息)。在確定例如分組應(yīng)該經(jīng)由接口IF1被發(fā)送到端主機EH4時,虛擬路由器VR2可以使用所維護的修改后的分組170中的目的地IP地址信息。在圖12的示例中,虛擬路由器VR2可以將分組的目的地MAC地址重寫成端主機EH4的MAC地址(MAC4),將源MAC地址重寫成虛擬路由器VR2的接口IF1的MAC地址(MACVR2-3),并且將TTL報頭字段縮減成61?;诜纸M172的目的地MAC地址字段,虛擬交換機VSW2可以將網(wǎng)絡(luò)分組172傳遞到端主機EH4(例如,到MAC地址MAC4)。在處理期間,虛擬交換機可以忽略層3報頭字段(諸如,IP報頭字段)。
控制器18可以通過向在其上分布虛擬交換機、虛擬系統(tǒng)路由器和虛擬路由器的下層交換機(例如,物理交換機和管理程序交換機)提供流表條目來控制虛擬交換機、虛擬系統(tǒng)路由器和虛擬路由器。在分組轉(zhuǎn)發(fā)操作期間,從端主機的角度來看,邏輯拓撲120中的虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器可能與物理交換機和路由器的物理網(wǎng)絡(luò)無法區(qū)分。邏輯拓撲120中的虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器可以被配置成執(zhí)行任何所期望的網(wǎng)絡(luò)操作(例如,與物理交換機和路由器的網(wǎng)絡(luò)的操作關(guān)聯(lián)的操作),即使虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器可以分布于任何所期望數(shù)量的下層物理交換機和/或管理程序交換機。
例如,端主機可以對虛擬路由器VR執(zhí)行ping命令(例如,可以向虛擬路由器VR發(fā)送互聯(lián)網(wǎng)控制消息協(xié)議(ICMP)回聲請求分組并且虛擬路由器VR可以為端主機生成ICMP響應(yīng)分組并且進行發(fā)送)和/或可以執(zhí)行分組追蹤路由操作。如果期望,端主機EH可以向被指派端主機的虛擬路由器的IP地址發(fā)送ICMP回聲請求分組(例如,端主機EH3可以向虛擬路由器VR1的端接口IF1的IP地址發(fā)送請求分組)或者可以向還未被指派端主機的虛擬路由器的IP地址發(fā)送回聲請求分組(例如,端主機EH3可以向虛擬路由器VR2的IP地址發(fā)送請求分組)。如果期望,結(jié)構(gòu)120中的虛擬路由器和/或虛擬系統(tǒng)路由器可以將地址解析協(xié)議(ARP)請求分組注入網(wǎng)絡(luò)中,以解析網(wǎng)絡(luò)中的端主機的未知以太網(wǎng)(MAC)地址。
圖13是圖示控制器可以如何控制虛擬路由器、虛擬系統(tǒng)路由器和虛擬交換機以通過具有未解析(未知)以太網(wǎng)地址的物理路由器將網(wǎng)絡(luò)流量從第一端主機路由到外部網(wǎng)絡(luò)的一個示例的示圖。圖13的虛擬網(wǎng)絡(luò)拓撲與圖6的下層網(wǎng)絡(luò)拓撲100和圖8對應(yīng)。在圖13的示例中,已經(jīng)省略了諸如虛擬交換機VSW3、控制器18和虛擬路由器VR2的元件,從而不會不必要地混淆描述。
在圖13的示例中,在步驟180中,端主機EH3可以發(fā)送去往互聯(lián)網(wǎng)(例如,外部網(wǎng)絡(luò)102)的網(wǎng)絡(luò)分組182。為了到達外部網(wǎng)絡(luò)102,邏輯結(jié)構(gòu)120需要將分組182轉(zhuǎn)發(fā)到與外部網(wǎng)絡(luò)120接口連接的互聯(lián)網(wǎng)路由器67。在某些情況下,互聯(lián)網(wǎng)路由器67可以具有未知的以太網(wǎng)地址,但具有在控制器18所識別的IP子網(wǎng)的范圍內(nèi)的已知的IP地址(例如,當(dāng)控制器18生成邏輯結(jié)構(gòu)120時,物理路由器67的已知IP地址可以被指派給與虛擬路由器VR1的接口IF2關(guān)聯(lián)的子網(wǎng)SUBNET2,即使是當(dāng)路由器67的以太網(wǎng)地址未被解析時)。
網(wǎng)絡(luò)分組182可以包括作為目的地IP地址的外部路由器67的IP地址(IPEXT)和作為源IP地址的端主機EH3的IP地址(IP3)。分組182可以包括作為源MAC地址的端主機EH3的MAC(例如,以太網(wǎng))地址(MAC3)。端主機EH3與不同于端主機EH4的L3接口關(guān)聯(lián)和耦合(例如,端主機EH3可以被控制器18指派給接口IF1,而外部路由器67可以被指派給虛擬路由器VR1的接口IF2)。端主機EH3因此不能訪問外部路由器67的MAC地址并且可以包括作為網(wǎng)絡(luò)分組160的目的地MAC地址的虛擬路由器VR1的接口IF1的MAC地址(MACVR1-1)。
基于分組182的目的地MAC地址字段,虛擬交換機VSW1可以將網(wǎng)絡(luò)分組182傳遞到虛擬路由器VR1的接口IF1。在處理期間,虛擬交換機可以忽略層3報頭字段(諸如,IP報頭字段)。虛擬路由器VR1可以經(jīng)由接口IF1接收分組182并且對分組執(zhí)行網(wǎng)絡(luò)路由操作?;趤碜钥刂破鞯目刂茢?shù)據(jù),虛擬路由器VR1可以確定應(yīng)該通過接口IF2路由網(wǎng)絡(luò)分組182(例如,因為外部路由器67的目的地IP地址IPEXT可以落入被指派給接口IF2的子網(wǎng)SUBNET2的IP地址的范圍內(nèi))。然而,在圖13的示例中,虛擬路由器VR1可以不知道互聯(lián)網(wǎng)路由器67的以太網(wǎng)(MAC)地址(例如,因為互聯(lián)網(wǎng)路由器67可能已經(jīng)最近被添加到網(wǎng)絡(luò)中等)。
在該情況下,在步驟186中,虛擬路由器VR1可以生成ARP請求分組184(有時被稱為ARP探測分組)并且將它廣播到子網(wǎng)SUBNET2(例如,接口IF2)。在步驟190中,外部路由器67可以接收廣播的ARP探測分組184并且可以生成ARP響應(yīng)分組188,ARP響應(yīng)分組188識別外部路由器67的MAC地址(MACEXT)。虛擬路由器VR1可以接收響應(yīng)分組188并且可以處理響應(yīng)分組以解析外部路由器67的以太網(wǎng)地址MACEXT(例如,如響應(yīng)分組中識別的)。如果期望,虛擬路由器VR1可以將外部路由器67的以太網(wǎng)地址存儲在存儲器中供以后使用(例如,使得以后在結(jié)構(gòu)120和外部路由器67之間進行通信時,虛擬路由器VR1不需要廣播另外的ARP請求分組)。在步驟194中,虛擬路由器VR1可以修改分組182,以生成修改后的網(wǎng)絡(luò)分組192并且將它發(fā)送到物理路由器67。在圖13的示例中,虛擬路由器VR1可以將分組的目的地MAC地址重寫成外部路由器67的經(jīng)解析MAC地址(MACEXT),并且將源MAC地址重寫成虛擬路由器VR1的接口IF2的MAC地址(MACVR1-2)。外部路由器67可以隨后處理分組192以將分組192轉(zhuǎn)發(fā)到互聯(lián)網(wǎng)102。
圖14示出可以由控制器(諸如,圖6的控制器18)執(zhí)行以基于網(wǎng)絡(luò)轉(zhuǎn)發(fā)策略來實現(xiàn)邏輯交換結(jié)構(gòu)(諸如,圖8的結(jié)構(gòu)120)的說明性步驟的流程圖。
在步驟202期間,控制器可以從端主機的群組(例如,諸如端主機EH1和EH2的端主機的群組和通向諸如互聯(lián)網(wǎng)路由器67的外部網(wǎng)絡(luò)的物理路由器)來生成虛擬交換機??梢杂芍T如網(wǎng)絡(luò)管理員的用戶來定義虛擬交換機。例如,控制器可以接收識別應(yīng)該被指派給相應(yīng)虛擬交換機的端主機的群組的信息。
在步驟204期間,控制器可以從虛擬交換機的群組來生成虛擬路由器。換句話講,控制器可以從端主機的群組的集合來生成虛擬路由器。控制器可以基于從用戶接收的信息來生成虛擬路由器(例如,類似于虛擬交換機)。例如,控制器可以接收應(yīng)該被指派給相應(yīng)虛擬路由器的虛擬交換機的群組的信息。
在步驟206期間,控制器可以從虛擬路由器的群組來生成虛擬系統(tǒng)路由器。換句話講,控制器可以從虛擬交換機的群組的集合(例如,等同于端主機的集合)來生成虛擬路由器。例如,控制器可以接收識別應(yīng)該被指派給相應(yīng)虛擬系統(tǒng)路由器的虛擬交換機的群組的信息??刂破骺梢噪S后執(zhí)行步驟210的操作,或者可選地,可選步驟208的步驟。
在其中通過基于機架的網(wǎng)絡(luò)形成虛擬系統(tǒng)120的情況下,如果期望,控制器18可以通過下層主干交換機(諸如,如圖7中所示的交換機C1和C2)實現(xiàn)虛擬系統(tǒng)路由器(諸如,圖8的虛擬系統(tǒng)路由器SR1)。在一個合適的布置中,控制器18可以在單個主干交換機(諸如,主干交換機C1)上實現(xiàn)虛擬系統(tǒng)路由器SR1。在另一個合適的布置中,控制器18可以將虛擬系統(tǒng)路由器SR1分布于若干主干交換機(例如,使得虛擬系統(tǒng)路由器SR1只通過主干交換機實現(xiàn))。在又一個合適的布置中,控制器18可以跨一個或更多個主干交換機和一個或更多個葉交換機來實現(xiàn)虛擬系統(tǒng)路由器SR1。通常,控制器18可以跨主干交換機、葉交換機和管理程序交換機的任何所期望數(shù)量和組合來實現(xiàn)虛擬系統(tǒng)路由器SR1。
如果期望,控制器18可以通過下層的葉交換機(諸如,如圖7中所示的葉交換機E1和E2)來實現(xiàn)諸如虛擬路由器VR1的虛擬路由器(例如,控制器18可以在主干交換機上實現(xiàn)虛擬系統(tǒng)路由器SR1,而可以在葉交換機上實現(xiàn)虛擬路由器)。控制器18可以在單個葉交換機上、分布于若干葉交換機、或者在一個或更多個葉交換機和一個或更多個主干交換機上實現(xiàn)虛擬路由器VR1。如果期望,控制器18可以只在葉交換機上實現(xiàn)虛擬路由器并且可以只在主干交換機上實現(xiàn)對應(yīng)的系統(tǒng)路由器。通常,控制器18可以跨主干交換機、葉交換機和管理程序交換機的任何所期望數(shù)量和組合來實現(xiàn)虛擬路由器。
在可選的步驟208期間,控制器可以提供預(yù)定策略模板的集合。例如,控制器可以維護數(shù)據(jù)庫,其建立預(yù)定網(wǎng)絡(luò)拓撲與用于這些網(wǎng)絡(luò)布置的常用或優(yōu)選策略(例如,訪問控制列表策略或路由策略)的映射。在數(shù)據(jù)庫中維護的網(wǎng)絡(luò)拓撲可以包括虛擬網(wǎng)絡(luò)拓撲或下層的物理網(wǎng)絡(luò)拓撲。在該可選的情況下,用戶可以在后續(xù)步驟210期間在所提供的服務(wù)策略集合中進行選擇。
在步驟210期間,控制器可以接收用于向關(guān)聯(lián)的網(wǎng)絡(luò)流量應(yīng)用(例如,用于在流表上實現(xiàn)系統(tǒng)120的虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器)的網(wǎng)絡(luò)策略。可以從用戶(諸如,網(wǎng)絡(luò)管理員)接收網(wǎng)絡(luò)策略??梢杂删W(wǎng)絡(luò)源和網(wǎng)絡(luò)目的地來識別網(wǎng)絡(luò)流量。策略可以被識別為有序列表或者可以由一個或更多個要求的集合來識別。例如,策略可以包括組合的訪問控制列表策略和基于策略的路由策略(例如,控制網(wǎng)絡(luò)分組是被許可,被丟棄,還是被路由到用于在圖9的模塊140上實現(xiàn)的所期望位置的策略)。
在步驟212期間,控制器可以識別滿足由用戶定義的策略的路徑(例如,虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器之間的路徑)??刂破骺梢跃S護識別可用于識別路徑的網(wǎng)絡(luò)拓撲的信息。例如,在確定在虛擬網(wǎng)絡(luò)拓撲下層的網(wǎng)絡(luò)拓撲時,控制器可以與物理交換機和管理程序交換機進行通信??刂破骺梢曰诳刂破魈幘S護的信息(諸如,網(wǎng)絡(luò)負載和裝置能力)來識別路徑以提高性能、滿足由策略定義的要求、或滿足任何所期望的標準??刂破骺梢允褂萌鐖D8中所示的一個或更多個虛擬路由器、一個或更多個虛擬系統(tǒng)路由器和/或一個或更多個虛擬交換機來識別用于分組轉(zhuǎn)發(fā)的路徑。在識別路徑時,控制器可以首先識別由控制器維護的虛擬網(wǎng)絡(luò)拓撲中的虛擬路徑(例如,如圖8中所示的通過虛擬路由器、虛擬系統(tǒng)路由器和/或虛擬交換機的路徑)??刂破骺梢噪S后基于虛擬路徑(例如,如圖6中所示的通過物理交換機和管理程序交換機的路徑)來識別下層網(wǎng)絡(luò)拓撲中的路徑。
在步驟214期間,控制器可以生成在步驟210期間識別的路徑。在生成所識別的路徑時控制器可以與物理交換機和管理程序交換機進行通信。例如,控制器可以提供流表條目,流表條目指導(dǎo)物理交換機和管理程序交換機沿著所期望的網(wǎng)絡(luò)路徑轉(zhuǎn)發(fā)和修改與流表條目匹配的網(wǎng)絡(luò)分組(例如,控制器可以提供用于在模塊134、138和/或覆寫模塊140中實現(xiàn)的流表條目,如圖9中所示)。如果期望,控制器18可以獨立地生成用于實現(xiàn)滿足用于虛擬路由器、虛擬系統(tǒng)路由器和虛擬交換機中的每一個的用戶定義的策略的所識別路徑的流表條目(例如,控制器18可以在虛擬系統(tǒng)路由器SR1上(例如,在被指派給虛擬系統(tǒng)路由器SR的下層交換機上)實現(xiàn)的流表條目的第一獨立集合、在虛擬路由器VR1上實現(xiàn)的流表條目的第二獨立集合、在虛擬交換機VSW1上實現(xiàn)的流表條目的第三獨立集合等)。以此方式,控制器18可以靈活地控制跨虛擬拓撲120進行的數(shù)據(jù)轉(zhuǎn)發(fā)操作。
在某些情況下,可能期望的是在虛擬系統(tǒng)120添加新網(wǎng)絡(luò)路由(路徑)(例如,在控制器18已經(jīng)生成了系統(tǒng)120之后,在系統(tǒng)120中添加新路徑)。圖15示出可以由控制器18執(zhí)行的在邏輯系統(tǒng)120中添加邏輯路由的說明性步驟的流程圖(如圖8中所示)。
在步驟220中,控制器18可以通過生成并識別虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器(例如,通過執(zhí)行圖14的步驟)來設(shè)置和建立邏輯系統(tǒng)120。當(dāng)期望在邏輯結(jié)構(gòu)120中的實體之間添加新邏輯路由時(例如,當(dāng)用戶期望在邏輯結(jié)構(gòu)中添加新邏輯路由時),處理可以前進至步驟222。
在步驟222中,控制器可以接收由用戶定義的源和用于新路由的“下一跳”目的地(例如,用于在源和下一跳目的地之間添加邏輯路由)??梢曰谶壿嫿Y(jié)構(gòu)120的配置,由用戶來提供并且由控制器來接收下一跳目的地。例如,用戶可以定義將在其中添加新路由(例如,通向所期望的虛擬路由器或虛擬系統(tǒng)路由器)的結(jié)構(gòu)120上的邏輯實體并且可以定義將被提供新路由的網(wǎng)絡(luò)分組的集合(例如,與邏輯實體接收到的網(wǎng)絡(luò)分組匹配使得只有與這些規(guī)則匹配的分組被轉(zhuǎn)發(fā)到新路由的匹配規(guī)則的集合)。
如果期望,用戶可以將下一跳目的地定義為邏輯對象,并且隨后可以定義邏輯對象。例如,控制器可以接收識別虛擬路由器VR1作為源和識別邏輯對象“A”作為用于新路由的下一跳目的地的用戶輸入??刂破骺梢噪S后接收使用期望的IP地址來定義邏輯對象“A”的用戶輸入(例如,用戶可以將邏輯對象“A”定義為單個IP地址作為下一跳目的地,或者可以將邏輯對象“A”定義為若干IP地址作為下一條目的地,使得從源轉(zhuǎn)發(fā)到下一跳目的地的分組在若干IP地址之間達到負載平衡)。
在步驟224中,控制器18可以生成實現(xiàn)所添加路由的流表條目(例如,使得虛擬交換機、虛擬路由器和/或虛擬系統(tǒng)路由器接收到的分組基于所定義的新路由將匹配的分組轉(zhuǎn)發(fā)到所期望的下一跳目的地)。
如果期望,控制器18可以將邏輯系統(tǒng)120的一些部分(例如,一個或更多個子網(wǎng))標記為“私有”網(wǎng)絡(luò)部分,使得限制跨虛擬系統(tǒng)路由器SR1的接口進行私有網(wǎng)絡(luò)部分的通信。圖16示出控制器18可以執(zhí)行的將邏輯系統(tǒng)120的一些部分標記為私有的說明性步驟的流程圖。
在步驟230中,控制器18可以通過生成并識別虛擬交換機、虛擬路由器和虛擬系統(tǒng)路由器(例如,通過執(zhí)行圖14的步驟)來設(shè)置和建立邏輯系統(tǒng)120。當(dāng)期望將系統(tǒng)120的一部分標記為私有時,處理可以前進至步驟232。例如,網(wǎng)絡(luò)管理員可能期望使系統(tǒng)120的一些部分成為被限制跨虛擬系統(tǒng)路由器SR1的接口進行通信的私有部分。
在步驟232中控制器18可以識別將標記為私有的虛擬交換機(例如,子網(wǎng))??刂破?8可以基于用于定義子網(wǎng)的IP地址范圍來識別將標記為私有的子網(wǎng)(例如,當(dāng)在步驟230的處理期間創(chuàng)建了邏輯系統(tǒng)時)。如果期望,控制器18可以將具有IP地址與和虛擬系統(tǒng)路由器SR1關(guān)聯(lián)的其它IP地址重疊的子網(wǎng)標記為私有。
通常,給定虛擬路由器的子網(wǎng)中的IP地址范圍可以不重疊(例如,圖8的子網(wǎng)SUBNET1可以不包括也在SUBNET2中的任何IP地址)。然而,給定虛擬路由器的一個或更多個子網(wǎng)可以包括與和系統(tǒng)120中的其它虛擬路由器連接的子網(wǎng)重疊的IP地址范圍(例如,被指派給第一虛擬系統(tǒng)路由器接口的子網(wǎng)內(nèi)的IP地址可以與被指派給第二虛擬系統(tǒng)路由器接口的子網(wǎng)內(nèi)的IP地址重疊)。例如,在圖8中示出的邏輯系統(tǒng)中,子網(wǎng)SUBNET1可以包括IP地址IPA、IPB和IPC,子網(wǎng)SUBNET2可以包括IP地址IPD和IPE,并且與系統(tǒng)路由器接口IFSR2關(guān)聯(lián)的子網(wǎng)SUBNET3可以包括IP地址IPE和IPF。在該示例中,與虛擬系統(tǒng)路由器接口IFSR1關(guān)聯(lián)的SUBNET2包括與和虛擬系統(tǒng)路由器接口IFSR2關(guān)聯(lián)的子網(wǎng)SUBNET3重疊(公共)的IP地址(例如,SUBNET2和SUBNET3均包括具有IP地址IPE的端主機)??刂破?8由此可以將SUBNET2標記為私有子網(wǎng)以限制在SUBNET2中的端主機和其它虛擬系統(tǒng)路由器接口之間的通信。
在步驟234中,控制器18可以基于邏輯結(jié)構(gòu)120的已經(jīng)被標記私有的部分來生成網(wǎng)絡(luò)轉(zhuǎn)發(fā)規(guī)則(諸如,流表條目)??刂破?8可以向虛擬路由器提供流表條目。在實現(xiàn)時,流表條目可以指示虛擬路由器丟棄從標記為私有的虛擬交換機去往虛擬系統(tǒng)路由器SR1的其它接口的所有流量(例如,從被標記為私有的虛擬交換機或虛擬路由器接口接收的分組)。在其中SUBNET2被標記為私有的情況下,虛擬路由器VR1可以例如丟棄通過目的地在虛擬路由器VR2(或者與除了接口IFSR1外的虛擬系統(tǒng)路由器SR1的接口耦合的任何目的地)中的接口IF2(例如,從虛擬交換機VSW2的端主機)接收的所有流量。虛擬路由器VR1可以繼續(xù)路由在標記為私有的子網(wǎng)和與虛擬路由器VR1耦合的其它虛擬交換機之間(例如,在SUBNET2和SUBNET1之間)的流量,而不丟棄該流量(例如,可以限制標記為私有的子網(wǎng)與其它虛擬路由器的通信,但是該子網(wǎng)可以繼續(xù)在對應(yīng)的虛擬路由器內(nèi)進行通信)。以此方式,即使當(dāng)只有有限數(shù)量的IP地址可用時,用戶也可以在系統(tǒng)1200中若干次實現(xiàn)特定IP地址。
在其中通過下層基于機架的網(wǎng)絡(luò)來實現(xiàn)邏輯交換機結(jié)構(gòu)的情況下,可以在葉交換機和主干交換機的任何所期望的組合上實現(xiàn)虛擬系統(tǒng)路由器(諸如,系統(tǒng)路由器SR1)、虛擬路由器(諸如,路由器VR1和VR2)和虛擬交換機(諸如,交換機VSW1、VSW2和VSW3)。如果期望,控制器18可以基于當(dāng)穿過主干交換機時流量是正在邏輯定義拓撲中的虛擬交換機、虛擬路由器還是虛擬系統(tǒng)路由器內(nèi)轉(zhuǎn)發(fā),隔離在邏輯系統(tǒng)120的基于機架的實現(xiàn)中通過主干交換機前進的流量。例如,控制器18可以通過將預(yù)留的VLAN標簽指派給數(shù)據(jù)分組來隔離流量(例如,可以將第一預(yù)留VLAN標簽指派給當(dāng)穿過物理主干交換機時在虛擬交換機內(nèi)轉(zhuǎn)發(fā)的流量;可以將第二預(yù)留VLAN標簽指派給當(dāng)穿過物理主干交換機時在虛擬路由器內(nèi)轉(zhuǎn)發(fā)的流量;可以將第三預(yù)留VLAN標簽指派給當(dāng)穿過物理主干交換機時在虛擬系統(tǒng)路由器內(nèi)轉(zhuǎn)發(fā)的流量)。通常,可以使用任何所期望的隔離方案。
考慮例如其中圖8的系統(tǒng)120在圖7中示出的基于機架的網(wǎng)絡(luò)上實現(xiàn)的情況。在該示例中,位于機架110中的端主機EH1可以發(fā)送去往位于機架112中的端主機EH3的網(wǎng)絡(luò)分組。在物理網(wǎng)絡(luò)上,分組可以通過主干交換機(例如,交換機C1或C2)轉(zhuǎn)發(fā),并且在通過物理網(wǎng)絡(luò)實現(xiàn)的邏輯系統(tǒng)上,分組可以在虛擬路由器VR1內(nèi)轉(zhuǎn)發(fā)(例如,從虛擬路由器VR2的第二接口IF2轉(zhuǎn)發(fā)到虛擬路由器VR2的第一接口IF1)。在端主機EH1和EH3之間轉(zhuǎn)發(fā)的分組由此可以被提供第一預(yù)留VLAN標簽,以將該分組與通過主干交換機C1和C2轉(zhuǎn)發(fā)(例如,基于控制器18所提供的控制消息使用虛擬交換機、虛擬路由器和/或虛擬系統(tǒng)路由器)的其它流量隔離。
類似地,機架110中的端主機EH1可以發(fā)送去往可以位于機架112中的外部物理路由器67的網(wǎng)絡(luò)分組。在物理網(wǎng)絡(luò)上,分組可以通過主干交換機C1和C2轉(zhuǎn)發(fā),并且在邏輯系統(tǒng)上,分組可以在虛擬交換機VSW2內(nèi)轉(zhuǎn)發(fā)(例如,從與端主機EH1耦合的第一虛擬交換機端口轉(zhuǎn)發(fā)到與物理路由器67耦合的第二虛擬交換機端口)。在端主機EH2和物理路由器67之間轉(zhuǎn)發(fā)的分組由此可以被提供第二預(yù)留VLAN標簽,以將該分組與在端主機EH1和EH3之間轉(zhuǎn)發(fā)的分組隔離。另外,機架110中的端主機EH1可以發(fā)送去往位于機架112中的端主機EH4的網(wǎng)絡(luò)分組。在物理網(wǎng)絡(luò)上,分組可以通過主干交換機C1或C2轉(zhuǎn)發(fā),并且在邏輯系統(tǒng)上,分組可以在虛擬系統(tǒng)路由器SR1內(nèi)轉(zhuǎn)發(fā)(例如,從第一虛擬系統(tǒng)路由器接口IFSR1轉(zhuǎn)發(fā)到第二虛擬系統(tǒng)路由器接口IFSR2)。在端主機EH1和端主機EH4之間轉(zhuǎn)發(fā)的分組由此可以被提供第三預(yù)留VLAN標簽,以將該分組與在端主機EH1和EH3之間(例如,虛擬路由器VR1內(nèi))轉(zhuǎn)發(fā)的分組和在端主機EH1和物理路由器67之間(例如,在虛擬交換機VSW2內(nèi))轉(zhuǎn)發(fā)的分組隔離。以此方式,可以基于邏輯系統(tǒng)120的邏輯拓撲來隔離通過單個下層主干交換機進行的流量。
根據(jù)一個實施例,提供了一種使用控制網(wǎng)絡(luò)中的交換機的控制器的方法,所述網(wǎng)絡(luò)具有與所述交換機耦合的端主機,所述方法包括:用所述控制器從所述端主機的相應(yīng)群組來形成多個虛擬交換機,其中至少一個虛擬交換機包括來自至少兩個交換機的端口;用所述控制器從所述虛擬交換機的相應(yīng)群組來形成多個虛擬路由器,其中,所述虛擬路由器執(zhí)行網(wǎng)絡(luò)路由操作;以及用所述控制器從所述虛擬路由器的群組來形成虛擬系統(tǒng)路由器,其中,所述虛擬系統(tǒng)路由器執(zhí)行另外的網(wǎng)絡(luò)路由操作。
根據(jù)另一個實施例,所述交換機包括至少一個物理交換機。
根據(jù)另一個實施例,所述交換機包括至少一個管理程序交換機。
根據(jù)另一個實施例,所述方法還包括:用所述控制器接收識別至少一個源端主機和至少一個目的地端主機的網(wǎng)絡(luò)策略;以及用所述控制器通過控制第一虛擬路由器和第二虛擬路由器以及虛擬系統(tǒng)路由器來通過多個虛擬路由器中的至少所述第一虛擬路由器和所述第二虛擬路由器并且通過所述虛擬系統(tǒng)路由器指導(dǎo)所述源端主機和所述目的地端主機之間的網(wǎng)絡(luò)分組。
根據(jù)另一個實施例,所述網(wǎng)絡(luò)分組具有以太網(wǎng)地址字段,并且其中指導(dǎo)從所述源端主機到所述目的地端主機的網(wǎng)絡(luò)分組包括:控制所述交換機,以將第一網(wǎng)絡(luò)分組從所述源端主機發(fā)送到所述第一虛擬路由器;以及控制所述交換機,以通過重寫所述第一網(wǎng)絡(luò)分組的所述以太網(wǎng)地址字段,將第一修改網(wǎng)絡(luò)分組從所述第一虛擬路由器發(fā)送到所述虛擬系統(tǒng)路由器。
根據(jù)另一個實施例,指導(dǎo)從所述源端主機到所述目的地端主機的網(wǎng)絡(luò)分組還包括:控制所述交換機,以通過重寫所述第一修改網(wǎng)絡(luò)分組的所述以太網(wǎng)地址字段,將第二修改網(wǎng)絡(luò)分組從所述虛擬系統(tǒng)路由器發(fā)送到所述第二虛擬路由器;以及控制所述交換機,以通過重寫所述第二修改網(wǎng)絡(luò)分組的所述以太網(wǎng)地址字段,將第三修改網(wǎng)絡(luò)分組從所述第二虛擬路由器發(fā)送到所述目的地端主機。
根據(jù)另一個實施例,指導(dǎo)源端主機和目的地端主機之間的網(wǎng)絡(luò)分組包括:向所述交換機提供與所述源端主機和所述目的地端主機之間的所述網(wǎng)絡(luò)分組匹配的流表條目,其中,所述流表條目指導(dǎo)所述交換機以通過所述第一虛擬路由器和所述第二虛擬路由器以及所述虛擬系統(tǒng)路由器來轉(zhuǎn)發(fā)所述網(wǎng)絡(luò)分組。
根據(jù)另一個實施例,所述方法包括:用所述控制器通過控制所述虛擬交換機來通過所述第一虛擬路由器和所述第二虛擬路由器以及所述虛擬系統(tǒng)路由器指導(dǎo)所述源端主機和所述目的地端主機之間的網(wǎng)絡(luò)分組。
根據(jù)另一個實施例,所述方法包括:用所述控制器接收網(wǎng)絡(luò)策略的第一集合并且基于所述網(wǎng)絡(luò)策略的第一集合來生成流表條目的第一集合;用所述控制器接收網(wǎng)絡(luò)策略的第二集合并且基于所述網(wǎng)絡(luò)策略的第二集合來生成流表條目的第二集合;用所述控制器向所述虛擬系統(tǒng)路由器提供所述流表條目的第一集合;以及用所述控制器向所述虛擬路由器中的至少一個提供所述流表條目的第二集合。
根據(jù)另一個實施例,所述方法還包括:用所述控制器接收網(wǎng)絡(luò)策略的第三集合并且基于所述網(wǎng)絡(luò)策略的第三集合來生成流表條目的第三集合;以及用所述控制器向所述虛擬交換機中的至少一個提供所述流表條目的第三集合。
根據(jù)另一個實施例,所述網(wǎng)絡(luò)策略的第一集合和第二集合中的給定一個包括訪問控制列表,所述訪問控制列表指定是否許可與第一虛擬交換機關(guān)聯(lián)的給定端主機通過所述第一虛擬交換機向另外的端主機發(fā)送分組。
根據(jù)一個實施例,提供了一種使用控制網(wǎng)絡(luò)中的交換機的控制器的方法,所述網(wǎng)絡(luò)具有與所述交換機耦合的端主機,所述方法包括:用所述控制器從所述端主機的第一群組來形成第一虛擬交換機;用所述控制器從所述端主機的第二群組和物理路由器來形成第二虛擬交換機,其中所述第一虛擬交換機和所述第二虛擬交換機中的至少一個包括來自至少兩個不同交換機的端口;用所述控制器從所述第一虛擬交換機和所述第二虛擬交換機來形成虛擬路由器,其中,所述虛擬路由器執(zhí)行網(wǎng)絡(luò)路由操作;以及用所述控制器來控制所述第一虛擬交換機和所述第二虛擬交換機以及所述虛擬路由器,以通過所述物理路由器將網(wǎng)絡(luò)分組從給定端主機轉(zhuǎn)發(fā)到外部網(wǎng)絡(luò)。
根據(jù)另一個實施例,所述虛擬路由器包括具有第一以太網(wǎng)地址的第一接口和具有第二以太網(wǎng)地址的第二接口,其中控制所述第一虛擬交換機和所述第二虛擬交換機以及所述虛擬路由器以轉(zhuǎn)發(fā)所述網(wǎng)絡(luò)分組包括:控制所述虛擬路由器以將網(wǎng)絡(luò)分組從所述第一接口路由到所述第二接口。
根據(jù)另一個實施例,所述方法還包括:用所述控制器從所述端主機的第三群組來形成第三虛擬交換機;用所述控制器從至少所述第三虛擬交換機來形成第二虛擬路由器;以及用所述控制器將所述第二虛擬交換機識別為私有虛擬交換機。
根據(jù)另一個實施例,所述方法還包括:用所述控制器來控制所述第一虛擬路由器,使得所述端主機的第二群組所生成的具有識別所述端主機的第三群組的目的地地址字段的網(wǎng)絡(luò)分組被丟棄;以及用所述控制器來控制所述第一虛擬路由器,以將所述端主機的第二群組所生成的具有識別所述端主機的第一群組的目的地地址字段的網(wǎng)絡(luò)分組轉(zhuǎn)發(fā)到所述端主機的第一群組。
根據(jù)另一個實施例,所述方法還包括:用所述控制器從所述端主機的第三群組來形成第三虛擬交換機;用所述控制器從至少所述第三虛擬交換機來形成第二虛擬路由器;用所述控制器從所述第一虛擬路由器和所述第二虛擬路由器來形成虛擬系統(tǒng)路由器;以及用所述控制器向所述虛擬路由器提供第一控制消息并且向所述虛擬系統(tǒng)路由器提供第二控制消息。
根據(jù)一個實施例,一種使用控制網(wǎng)絡(luò)中的交換機的控制器的方法,所述網(wǎng)絡(luò)具有與所述交換機耦合的端主機,所述方法包括:用所述控制器來生成包括多個虛擬交換機、多個虛擬路由器和至少一個虛擬系統(tǒng)路由器的網(wǎng)絡(luò)的虛擬拓撲,其中所述虛擬交換機、所述虛擬路由器和所述虛擬系統(tǒng)路由器分布于所述網(wǎng)絡(luò)中的若干下層交換機,其中所述虛擬交換機具有與所述端主機耦合的虛擬端口,其中所述虛擬路由器具有與虛擬交換機耦合的虛擬接口,并且其中所述虛擬系統(tǒng)路由器具有分別與所述虛擬路由器中的相應(yīng)一個耦合的虛擬系統(tǒng)路由器接口。
根據(jù)另一個實施例,所述方法還包括:用所述控制器來控制所述虛擬系統(tǒng)路由器,以通過虛擬系統(tǒng)路由器接口中的對應(yīng)的對將網(wǎng)絡(luò)分組在所述多個虛擬路由器中的各路由器之間路由。
根據(jù)另一個實施例,所述交換機和所述端主機布置在基于機架的網(wǎng)絡(luò)系統(tǒng)中,所述基于機架的網(wǎng)絡(luò)系統(tǒng)具有與所述端主機耦合的葉交換機和與所述葉交換機中的每一個耦合的主干交換機,所述方法包括:用所述控制器通過向所述主干交換機提供第一流表條目在所述主干交換機中的至少一個上實現(xiàn)所述虛擬系統(tǒng)路由器;以及用所述控制器通過向葉交換機提供第二流表條目在所述葉交換機中的至少一個上實現(xiàn)所述虛擬路由器中的每一個。
根據(jù)另一個實施例,在所述主干交換機中的至少一個上實現(xiàn)所述虛擬系統(tǒng)路由器包括只在所述主干交換機上實現(xiàn)所述虛擬系統(tǒng)路由器。
根據(jù)另一個實施例,所述方法包括:用所述控制器來控制所述多個虛擬路由器中的給定虛擬路由器,以生成地址解析協(xié)議ARP請求分組并且經(jīng)由對應(yīng)的虛擬交換機向所述端主機中的給定一個提供所述ARP請求分組;以及用所述控制器來控制所述虛擬路由器中的給定一個,以接收ARP響應(yīng)分組并且基于接收到的所述ARP響應(yīng)分組來解析所述端主機中的給定一個的以太網(wǎng)地址。
根據(jù)另一個實施例,所述方法包括:用所述控制器來配置所述虛擬路由器中的給定一個,以生成互聯(lián)網(wǎng)控制消息協(xié)議ICMP分組并且通過對應(yīng)的虛擬交換機向所述端主機中的給定一個提供所述ICMP分組。
以上僅僅是本發(fā)明的原理的說明性,本領(lǐng)域的技術(shù)人員可以在不脫離本發(fā)明的范圍和精神的情況下進行各種修改。