專利名稱:管理和保護網(wǎng)絡(luò)的網(wǎng)絡(luò)操作系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及計算機網(wǎng)絡(luò)管理和安全,更具體地說,涉及用于控制網(wǎng)絡(luò)的可縮放和可自動配置的系統(tǒng)和方法。
背景技術(shù):
許多當(dāng)前的企業(yè)具有大型且復(fù)雜的網(wǎng)絡(luò),這些網(wǎng)絡(luò)包含支持各種連接、應(yīng)用和系統(tǒng)的鏈路、交換機、集線器、路由器、服務(wù)器、工作站和其它聯(lián)網(wǎng)設(shè)備。同時待審的申請 No. 11/970976(申請日2008年1月8日,該申請的內(nèi)容在此引為參考)推進了網(wǎng)絡(luò)管理領(lǐng)域的狀態(tài)。不過,盡管這些和其它重大的商業(yè)和學(xué)術(shù)努力減輕了網(wǎng)絡(luò)管理員的負(fù)擔(dān),不過這些網(wǎng)絡(luò)仍然難以被管理和保護。參考主機操作系統(tǒng)和網(wǎng)絡(luò)操作系統(tǒng)的開發(fā)的差異,能夠更好地舉例說明這些網(wǎng)絡(luò)的管理員遇到的一些問題。在早期的計算中,程序是利用不存在對底層物理資源的通用抽象(abstraction)的機器語言編寫的。這使得程序難以編寫、移植、推理(reason about) 和調(diào)試。開發(fā)了現(xiàn)代操作系統(tǒng),以通過提供對諸如內(nèi)存、存儲器、通信和文件、目錄等中的信息之類資源的高級抽象的受控訪問,便利程序開發(fā)。這些抽象使程序能夠在各種各樣的計算硬件上執(zhí)行復(fù)雜的任務(wù)。相反,網(wǎng)絡(luò)一般是通過各個組件的低級配置來管理的。網(wǎng)絡(luò)配置常常取決于底層網(wǎng)絡(luò)例如,用訪問控制列表(“ACL”)條目阻斷用戶的訪問要求知道用戶的當(dāng)前IP地址。 更復(fù)雜的任務(wù)要求更大量的網(wǎng)絡(luò)知識強迫訪客用戶的端口 80業(yè)務(wù)經(jīng)過HTTP代理服務(wù)器則要求知道當(dāng)前的網(wǎng)絡(luò)拓?fù)浜兔總€訪客的位置。傳統(tǒng)的網(wǎng)絡(luò)類似無操作系統(tǒng)的計算機,與網(wǎng)絡(luò)相關(guān)的組件配置起與硬件相關(guān)的機器語言編程的作用。
發(fā)明內(nèi)容
本發(fā)明的一些實施例提供控制全局路由和其它轉(zhuǎn)發(fā)行為(包括網(wǎng)絡(luò)地址轉(zhuǎn)換、加密、封裝、有狀態(tài)的隧穿,和各種形式的服務(wù)質(zhì)量)的系統(tǒng)和方法。當(dāng)流起始時,可實時地對每個流單獨做出這些決策,這些決策可基于按照高級名稱(主機、用戶、服務(wù)等的名稱)表述的通用策略。這些策略的實現(xiàn)可與網(wǎng)絡(luò)拓?fù)錈o關(guān),并且當(dāng)用戶和主機移動,并且網(wǎng)絡(luò)變化時,這些策略仍然有效。通過利用在多數(shù)商用交換芯片中提供的ACL功能,能夠?qū)崿F(xiàn)本發(fā)明的一些實施例。本發(fā)明的一些實施例提供保持全面網(wǎng)絡(luò)概觀的系統(tǒng)和方法。在這些實施例的一些中,網(wǎng)絡(luò)概觀包括網(wǎng)絡(luò)部件的拓?fù)?。在這些實施例的一些中,網(wǎng)絡(luò)概觀識別實體的位置,實體包括用戶,服務(wù)和主機。在這些實施例的一些中,保持網(wǎng)絡(luò)概觀的歷史以及網(wǎng)絡(luò)流的歷史。本發(fā)明的一些實施例提供集中的編程接口,所述編程接口使高級語言可以訪問網(wǎng)絡(luò)概觀,通知包括流發(fā)起和網(wǎng)絡(luò)概觀的變化的網(wǎng)絡(luò)事件,和控制網(wǎng)絡(luò)部件的控制機制。該系統(tǒng)可提供全局路由的實時逐流控制。在這些實施例的一些中,系統(tǒng)控制流通過網(wǎng)絡(luò)的路徑, 和網(wǎng)絡(luò)部件對流的處理。在這些實施例的一些中,通過一致性要求的嚴(yán)格分離,系統(tǒng)是可縮放的,只有網(wǎng)絡(luò)概觀要求全局一致性。在這些實施例的一些中,關(guān)于流的決策基于全局網(wǎng)絡(luò)概觀和流狀態(tài)。在這些實施例的一些中,這允許把一致但是緩慢改變的網(wǎng)絡(luò)概觀和局部但是快速變化的參數(shù)分開。在這些實施例的一些中,獨立于多個控制器中的每一個來處理流狀態(tài)。本發(fā)明的一些實施例提供自動配置網(wǎng)絡(luò)的方法。在這些實施例的一些中,自動配置包括自動檢測與網(wǎng)絡(luò)連接的新設(shè)備和服務(wù)。在這些實施例的一些中,自動配置包括自動更新流條目和其它配置信息。在這些實施例的一些中,流條目和其它配置信息的自動更新允許在面臨各種網(wǎng)絡(luò)變化時,保持全局指示(“策略”)的實現(xiàn)方式。本發(fā)明的一些實施例支持分組的智能截取,使主機能夠保持功率降低模式。本發(fā)明的一些實施例支持虛擬環(huán)境,包括支持遷移VM。在這些實施例的其中多個 VM與某些設(shè)備相關(guān)聯(lián)的一些實施例中,系統(tǒng)允許控制這些共同駐留的VM之間的通信。在這些實施例的一些中,使用帶內(nèi)控制來管理設(shè)備。在這些實施例的一些中,通過利用ACL功能提供全局功能,來控制交換機。本發(fā)明的一些實施例支持通過單系統(tǒng)管理和保護多個網(wǎng)絡(luò)。本發(fā)明的一些實施例支持使多個管理系統(tǒng)共享單網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的控制,使不同的管理機構(gòu)能夠分開控制。本發(fā)明的一些實施例提供管理網(wǎng)絡(luò)的系統(tǒng)和方法。這些實施例的一些包括維護網(wǎng)絡(luò)的當(dāng)前狀態(tài)的網(wǎng)絡(luò)概觀,網(wǎng)絡(luò)的當(dāng)前狀態(tài)表征網(wǎng)絡(luò)組件和網(wǎng)絡(luò)拓?fù)洌W(wǎng)絡(luò)組成包括網(wǎng)絡(luò)上目前可尋址的網(wǎng)絡(luò)實體和網(wǎng)絡(luò)部件,通告與網(wǎng)絡(luò)狀態(tài)的變化對應(yīng)的事件,和根據(jù)網(wǎng)絡(luò)概觀和事件之一配置網(wǎng)絡(luò)部件之一。在這些實施例的一些中,網(wǎng)絡(luò)實體包括網(wǎng)絡(luò)用戶。在這些實施例的一些中,一個或多個網(wǎng)絡(luò)管理應(yīng)用訪問網(wǎng)絡(luò)概觀。在這些實施例的一些中,網(wǎng)絡(luò)的當(dāng)前狀態(tài)包括網(wǎng)絡(luò)組件的位置。在這些實施例的一些中,網(wǎng)絡(luò)的當(dāng)前狀態(tài)還表征網(wǎng)絡(luò)中的流。
圖Ia和Ib是按照本發(fā)明的一些方面的網(wǎng)絡(luò)管理器和網(wǎng)絡(luò)部件的示意方框圖。圖2是示出按照本發(fā)明的一些方面的網(wǎng)絡(luò)管理器的組件的示意方框圖。圖3描述按照本發(fā)明的一些方面的一些NOX核心組件。圖4描述按照本發(fā)明的一些方面的目錄管理器和其與系統(tǒng)的集成。圖5描述按照本發(fā)明的一些方面的與NOX集成的策略控制的例子。圖6描述按照本發(fā)明的一些方面的NOX內(nèi)的主機鑒別的例子。圖7表示按照本發(fā)明的一些方面的流條目的例子。
具體實施例方式下面參考作為例子提供的,以使本領(lǐng)域的技術(shù)人員能夠?qū)嵺`本發(fā)明的附圖,詳細(xì)說明本發(fā)明的實施例。值得注意地,下面的附圖和例子并不意圖把本發(fā)明的范圍限制于單一實施例,相反通過相互交換一些或全部說明的或者圖示的部件,其它實施例也是可能的。 在方便的情況下,遍及附圖使用相同的附圖標(biāo)記表示相同或相似的部分。在這些實施例的一些部件可部分或完全用已知組件實現(xiàn)的情況下,將只說明這種已知組件的對理解本發(fā)明來說必不可少的那些部分,這種已知組件的其它部分的詳細(xì)說明將被省略,以便不會模糊本發(fā)明。在說明書中,表示單個組件的實施例不應(yīng)被看作是限制性的;相反,本發(fā)明意圖包含包括多個相同組件的其它實施例,反之亦然,除非另有明確說明。此外,申請人并不打算對說明書或權(quán)利要求中的任何術(shù)語賦予不常見或者特殊的含義,除非明確地作出說明。此外,本發(fā)明包含這里作為例子涉及的組件的目前和未來的已知等同物。本發(fā)明的一些實施例提供管理和保護數(shù)據(jù)通信網(wǎng)絡(luò)的系統(tǒng)和方法。這些系統(tǒng)和方法一般支持對網(wǎng)絡(luò)部件的可縮放和可自動配置的編程控制,提供網(wǎng)絡(luò)的全面了解和對網(wǎng)絡(luò)業(yè)務(wù)的逐流控制。本發(fā)明的各個方面允許常規(guī)商用交換機的集成和控制,以及為配置和適合于在本發(fā)明的實施例中使用的網(wǎng)絡(luò)系統(tǒng)提供新的特征和功能。數(shù)據(jù)通信網(wǎng)絡(luò)可包括互連的交換機、虛擬交換機、集線器、路由器和配置成當(dāng)數(shù)據(jù)通過網(wǎng)絡(luò)時處理該數(shù)據(jù)的其它設(shè)備。這里,這些設(shè)備被稱為“網(wǎng)絡(luò)部件”。通過利用一條或多條通信鏈路在網(wǎng)絡(luò)部件之間傳送數(shù)據(jù)分組、信元、幀、片段等,通過數(shù)據(jù)通信網(wǎng)絡(luò)傳遞數(shù)據(jù)。 通信鏈路可以是分成多段的,并且可以采用有線、無線、光學(xué)等等。在一個例子中,當(dāng)分組通過網(wǎng)絡(luò)在源和目的地之間傳播時,其可由多個網(wǎng)絡(luò)部件處理,并穿過多條通信鏈路的多段。即使源從不同的源接收數(shù)據(jù),或者目的地還把接收的數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)上的另一目的地,源和目的地仍可被視為網(wǎng)絡(luò)上的端點。各種端點系統(tǒng)可駐留于網(wǎng)絡(luò)上,包括客戶機、 虛擬機(“VM”)、典型利用諸如web服務(wù)器之類的服務(wù)器提供各種網(wǎng)絡(luò)服務(wù)的服務(wù)器和系統(tǒng)、電子郵件服務(wù)器、文件服務(wù)器等。用戶可以登錄到包括服務(wù)器、工作站、個人計算機和移動通信設(shè)備的一個或多個這些端點系統(tǒng)。這里,端點系統(tǒng)連同用戶和駐留于其上的服務(wù)一起將被稱為“網(wǎng)絡(luò)實體”。為了便于討論,網(wǎng)絡(luò)實體和網(wǎng)絡(luò)部件可被共同稱為“網(wǎng)絡(luò)組成部分”,該術(shù)語的單數(shù)應(yīng)用可意味一個網(wǎng)絡(luò)部件或網(wǎng)絡(luò)實體。要認(rèn)識到,存在其中某些網(wǎng)絡(luò)部件可充當(dāng)網(wǎng)絡(luò)實體,和某些網(wǎng)絡(luò)實體可充當(dāng)網(wǎng)絡(luò)部件的特殊情況。例如,網(wǎng)絡(luò)交換機可提供容納系統(tǒng)管理的終端服務(wù),而用戶工作站可充當(dāng)無線設(shè)備的橋接器或網(wǎng)關(guān),轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)。在這些特殊情況中,除了另有說明的之外,將被分開且獨立地對待這些設(shè)備的不同功能。本發(fā)明的一些實施例包含網(wǎng)絡(luò)的操作系統(tǒng)。操作系統(tǒng)向整個網(wǎng)絡(luò)提供統(tǒng)一和集中的編程接口。網(wǎng)絡(luò)操作系統(tǒng)能夠?qū)崿F(xiàn)網(wǎng)絡(luò)的觀察和控制,盡管網(wǎng)絡(luò)操作系統(tǒng)不需要管理網(wǎng)絡(luò)本身。網(wǎng)絡(luò)操作系統(tǒng)一般提供在其上能夠建立和/或?qū)崿F(xiàn)應(yīng)用,以便執(zhí)行網(wǎng)絡(luò)管理任務(wù)的編程接口。在本說明中,除非另有說明,否則術(shù)語“應(yīng)用”指的是運行于網(wǎng)絡(luò)操作系統(tǒng)上的程序。按照本發(fā)明的一些方面的網(wǎng)絡(luò)操作系統(tǒng)實施與常規(guī)網(wǎng)絡(luò)管理系統(tǒng)相反的概念。例如,網(wǎng)絡(luò)操作系統(tǒng)向程序提供集中編程模型,包括邏輯上集中的網(wǎng)絡(luò)狀態(tài)的概觀,應(yīng)用可被編寫得好像整個網(wǎng)絡(luò)存在于單臺機器上。從而,應(yīng)用能夠利用Dijkstra方法,而不是 Bellman-fore方法計算最短路徑。在另一個例子中,可按照高級抽象,例如包括用戶名和主機名,而不是低級配置參數(shù),比如IP地址和MAC地址編寫應(yīng)用。這種抽象允許獨立于底層網(wǎng)絡(luò)拓?fù)涠鴪?zhí)行管理和安全策略。網(wǎng)絡(luò)操作系統(tǒng)在抽象和對應(yīng)的低級配置之間維護當(dāng)前的、準(zhǔn)確的映射或綁定。在一些實施例中,網(wǎng)絡(luò)操作系統(tǒng)允許把管理應(yīng)用編寫為關(guān)于高級名稱的集中式程序,與關(guān)于低級地址的分布式算法相反。更具體地說,本發(fā)明的一些實施例包含按照允許操作員使用集中的說明語句(這里稱為“指令”)控制網(wǎng)絡(luò)和執(zhí)行希望的策略的方式,管理和保護網(wǎng)絡(luò)的系統(tǒng)和方法。代替配置每個單個的網(wǎng)絡(luò)組件,通過確保受網(wǎng)絡(luò)操作系統(tǒng)控制的網(wǎng)絡(luò)組件實現(xiàn)希望的行為,網(wǎng)絡(luò)操作員可以僅僅創(chuàng)建系統(tǒng)將執(zhí)行的一個或多個網(wǎng)絡(luò)范圍的指令。本發(fā)明的一些實施例提供通用編程接口。這允許網(wǎng)絡(luò)操作員利用諸如C++和 Python之類的高級語言指定指令。在一些實施例中,提供解決與安全、管理、網(wǎng)絡(luò)控制、縮放和向后兼容、自動配置、虛擬環(huán)境、帶內(nèi)控制、歷史和爭論、路由、分組截取和拒絕服務(wù)保護相關(guān)的問題的系統(tǒng)和方法。本發(fā)明的一些實施例定義和包含這里稱為“Ν0Χ”的網(wǎng)絡(luò)操作系統(tǒng)。NOX使網(wǎng)絡(luò)操作員能夠觀察和控制數(shù)據(jù)通信網(wǎng)絡(luò),包括某些網(wǎng)絡(luò)部件和網(wǎng)絡(luò)實體。NOX典型地維護整個網(wǎng)絡(luò)的當(dāng)前概觀(view),包括當(dāng)前拓?fù)?、?dāng)前提供的服務(wù)、和主機、服務(wù)及經(jīng)鑒別的用戶的當(dāng)前位置。提供的服務(wù)可包括標(biāo)準(zhǔn)定義的服務(wù),比如HTTP和NFS,還可包括NOX已知或者 NOX能夠表征的專門服務(wù)。通過提供其中管理應(yīng)用能夠訪問NOX所維護的網(wǎng)絡(luò)概觀的運行環(huán)境,NOX可便利網(wǎng)絡(luò)的控制。管理應(yīng)用包括監(jiān)視和控制至少一部分?jǐn)?shù)據(jù)通信網(wǎng)絡(luò)的組件, 這里所述一部分可由一個或多個域、一種或多種網(wǎng)絡(luò)部件、在特定的管理控制和/或物理區(qū)域下的一個或多個組件限定。管理應(yīng)用可以向NOX注冊,以便接收網(wǎng)絡(luò)事件的通知,和便利網(wǎng)絡(luò)組件的管理。對于下面的例子來說,“網(wǎng)絡(luò)”可被視為表示由諸如以太網(wǎng)、ATM之類的第2層網(wǎng)絡(luò),例如采用網(wǎng)際協(xié)議(“IP”)和/或其它適當(dāng)?shù)倪B網(wǎng)技術(shù)的第3層網(wǎng)絡(luò)所互連的一組交換機、路由器、防火墻、代理服務(wù)器和其它網(wǎng)絡(luò)部件。網(wǎng)絡(luò)部件之間的鏈路本質(zhì)上可以是局域的或者廣域的,和/或它們的任意組合。用戶和實體,比如主機、服務(wù)器和其它設(shè)備可以與該網(wǎng)絡(luò)連接,并且可被認(rèn)為駐留于網(wǎng)絡(luò)上。與具體的網(wǎng)絡(luò)體系結(jié)構(gòu),網(wǎng)絡(luò)實體的同質(zhì)性、 異質(zhì)性、組件部分和配置無關(guān),可以部署基于NOX的系統(tǒng)來監(jiān)視和控制網(wǎng)絡(luò)。對于下面的例子來說,“流”被理解為一系列的分組或者共有公共特性的其它網(wǎng)絡(luò)傳輸單元。一般來說,這種公共特性可由網(wǎng)絡(luò)部件檢測,并用于對每個分組應(yīng)用類似的行為。例如,流可包含具有相同的分組報頭,或者共有分組報頭的某些指定部分的一系列分組。現(xiàn)在參見圖Ia和lb。圖Ia描述可控制的網(wǎng)絡(luò)部件(“CNE”)和網(wǎng)絡(luò)管理器的存在。圖Ib描述網(wǎng)絡(luò)的一個例子,該例子具有用線表示的鏈路,并且示出各種“CNE”、托管網(wǎng)絡(luò)控制器的設(shè)備的三個實例16a_c、包含網(wǎng)絡(luò)歷史的設(shè)備的兩個實例18a和18b,和維護網(wǎng)絡(luò)概觀的一個設(shè)備17。在一些實施例中,系統(tǒng)包括網(wǎng)絡(luò)管理器10和一個或多個可控制的網(wǎng)絡(luò)部件lh-12h和12i-12p,所述一個或多個可控制的網(wǎng)絡(luò)部件lh-12h和12i_12p包括交換機和/或其它網(wǎng)絡(luò)部件。特別參考圖la,網(wǎng)絡(luò)管理器10包括多個邏輯組件,包括網(wǎng)絡(luò)控制器、網(wǎng)絡(luò)概觀數(shù)據(jù)庫和網(wǎng)絡(luò)歷史數(shù)據(jù)庫。這些邏輯組件可以托管在與網(wǎng)絡(luò)連接的服務(wù)器或者與網(wǎng)絡(luò)連接的其它設(shè)備上。從而,描述成分布式實體的網(wǎng)絡(luò)管理器10能夠駐留在專用處理設(shè)備上,或者跨諸如Linux服務(wù)器、UNIX服務(wù)器、Windows服務(wù)器之類的多個處理設(shè)備而分布。此外,網(wǎng)絡(luò)管理器10可聚集由網(wǎng)絡(luò)部件12a-ia!收集和/或處理的信息。不論是駐留在公共服務(wù)器上還是駐留在不同的服務(wù)器上,一個或多個網(wǎng)絡(luò)控制器可以各自執(zhí)行NOX的實例和一組管理應(yīng)用。NOX典型地提供編程接口,而管理應(yīng)用提供高級網(wǎng)絡(luò)管理能力。在圖Ia中,用云的形式描述網(wǎng)絡(luò)管理器10,表示它的可能的分布特性,其它網(wǎng)絡(luò)部件(圖中未示出)之間的連接可以是任意的。圖Ib表示網(wǎng)絡(luò)部件之間的互連,以及網(wǎng)絡(luò)管理器的各個組件,包括控制器16a-16c、網(wǎng)絡(luò)概觀17和歷史18a_18b的布置的更具體例子。如圖Ib中所示,網(wǎng)絡(luò)管理器的各個組件可以在不同的地方與網(wǎng)絡(luò)連接,并且根據(jù)網(wǎng)絡(luò)配置和網(wǎng)絡(luò)管理器的組件的布置,能夠直接與網(wǎng)絡(luò)部件12i-12p中的一些通信,并且可以與網(wǎng)絡(luò)部件12i-12p中的一些只進行間接通信。例如,網(wǎng)絡(luò)管理器可以設(shè)置在單一服務(wù)器中,或者設(shè)置在位于整個網(wǎng)絡(luò)內(nèi)的幾個服務(wù)器中。這些服務(wù)器還可支持其它服務(wù)、應(yīng)用,并且用戶可登錄到它們上。這些服務(wù)器還可起網(wǎng)絡(luò)部件的作用(例如,通過充當(dāng)交換機)。在控制器功能與其它網(wǎng)絡(luò)部件存在于相同服務(wù)器上的例子中,通過利用例如公共總線、公共存儲器、進程間通道和其它通信方案,網(wǎng)絡(luò)管理器可在沒有網(wǎng)絡(luò)的情況下與網(wǎng)絡(luò)部件通信。 從而,圖Ib中描述的連接應(yīng)被當(dāng)作包含任意形式的通信和控制。另外參見圖2,在一些實施例中,網(wǎng)絡(luò)管理器10維護描述網(wǎng)絡(luò)的當(dāng)前狀態(tài)的網(wǎng)絡(luò)概觀22。網(wǎng)絡(luò)狀態(tài)包含描述當(dāng)前網(wǎng)絡(luò)拓?fù)?、識別為駐留于網(wǎng)絡(luò)上的主機、用戶和網(wǎng)絡(luò)服務(wù)的當(dāng)前位置的信息??砂凑崭呒壝Q,包括用戶、主機、服務(wù)等的名稱,和低級地址,包括主機、 網(wǎng)絡(luò)部件等的地址的低級地址之間的綁定記錄當(dāng)前狀態(tài)。典型地,可得到單一邏輯版本的網(wǎng)絡(luò)概觀,不過所述概觀的副本或其多個部分可被維護和存儲在一個或多個與網(wǎng)絡(luò)連接的服務(wù)器或者其它網(wǎng)絡(luò)設(shè)備上。在一些實施例中,網(wǎng)絡(luò)歷史M維護過去網(wǎng)絡(luò)狀態(tài)的全面記錄,包括拓?fù)?、實體的位置等。網(wǎng)絡(luò)歷史M使操作員能夠重新創(chuàng)建以前某些指定時刻的網(wǎng)絡(luò)狀態(tài)??衫妙A(yù)定的查詢語言查詢網(wǎng)絡(luò)歷史對。一般來說,維護單一邏輯版本的網(wǎng)絡(luò)歷史對,不過網(wǎng)絡(luò)歷史 M可被包含在一個或多個連接網(wǎng)絡(luò)的服務(wù)器或者其它網(wǎng)絡(luò)設(shè)備中。對網(wǎng)絡(luò)概觀和歷史的分析可被用于產(chǎn)生網(wǎng)絡(luò)報警。這些報警可以補充或替代網(wǎng)絡(luò)部件的事件檢測功能。例如,連續(xù)網(wǎng)絡(luò)狀態(tài)的檢查可識別連接的丟失,使網(wǎng)絡(luò)管理器10和/或利用網(wǎng)絡(luò)操作系統(tǒng)201的應(yīng)用能夠生成策略驅(qū)動的報警。在一些實施例中,可控制的交換機和其它網(wǎng)絡(luò)部件可由網(wǎng)絡(luò)管理器10控制。在一個例子中,這些交換機實現(xiàn)和支持OpenFlow接口,從而交換機由具有采取下述形式(報頭計數(shù)器,動作)的條目的流表格表示。不過,本發(fā)明并不局限于這種OpenFlow例子,根據(jù)當(dāng)前例子的教導(dǎo),本領(lǐng)域的技術(shù)人員會認(rèn)識到其它備選方案。指定的報頭字段可以是完全定義的,并且只選擇與完整報頭匹配的分組。作為替代地,流條目的報頭規(guī)范可包含通配符值或者“ANY”以提供與流的TCAM類匹配。這種情況下,根據(jù)與報頭的子集的匹配,分組可被分配給流。在一些實施例中,報頭不必對應(yīng)于報頭的傳統(tǒng)概念,而是可被定義為輸入分組中的任意一組比特。只有共享指定的一組比特的分組被認(rèn)為與指定報頭匹配。對于所處理的與所識別報頭匹配的每個分組,可以更新對應(yīng)的計數(shù)器,并且能夠發(fā)起一個或多個指定的動作。分組能夠與多個流報頭匹配,并且可按照預(yù)先配置的規(guī)則被分配給流。在一個例子中,一種配置可規(guī)定匹配多個流報頭條目的分組被分配給優(yōu)先權(quán)最高的流條目。就OpenFlow來說,目前支持的動作可包括默認(rèn)轉(zhuǎn)發(fā)、轉(zhuǎn)發(fā)出指定的接口、拒絕、 轉(zhuǎn)發(fā)給網(wǎng)絡(luò)控制器,和修改各種分組報頭字段,其中待修改的分組報頭字段可包括VLAN 標(biāo)記、源和目的地IP地址和端口號。在一個例子中,“默認(rèn)轉(zhuǎn)發(fā)”動作使交換機有效地忽略Ν0Χ,因為分組被轉(zhuǎn)發(fā),就好像交換機正在利用其傳統(tǒng)軟件轉(zhuǎn)發(fā)分組??梢灾С峙c OpenFlow規(guī)范一致的其它動作和功能(參見可在http://www. openflowswitch. org/獲得的OpenFlow文檔和源代碼)。一些實施例可實現(xiàn)交換機行為的其它抽象,并且這些可支持不同的一組動作。 這些其它動作可包括網(wǎng)絡(luò)地址轉(zhuǎn)換、加密、封裝、有狀態(tài)的隧穿,和各種形式的服務(wù)質(zhì)量 (“QoS”)。另外,計數(shù)器和動作可被預(yù)先定義和/或由用戶和網(wǎng)絡(luò)管理應(yīng)用配置。諸如 OpenFlow交換機抽象之類的抽象可允許管理應(yīng)用插入流表格條目、刪除流表格條目、管理流表格條目的優(yōu)先級,和讀取流表格計數(shù)器??稍趹?yīng)用啟動時,或者響應(yīng)網(wǎng)絡(luò)事件而設(shè)置這些條目。網(wǎng)絡(luò)部件的OpenFlow和類似抽象還可提供一組消息,該組消息允許控制器和部件之間更寬范圍通信。這種消息的例子是交換機加入、交換機離開、收到分組和交換機統(tǒng)計信息。下面將討論NOX控制的數(shù)據(jù)通信網(wǎng)絡(luò)的某些操作。下面更詳細(xì)討論的圖6描述對于輸入的分組可發(fā)生的處理的一個例子。在一些實施例中,NOX控制的網(wǎng)絡(luò)部件遇到的分組或者其它數(shù)據(jù)單元可被分析和歸類。分組可由任何與網(wǎng)絡(luò)連接的設(shè)備生成,并且當(dāng)分組到達NOX控制的網(wǎng)絡(luò)部件時,檢查該分組的分組報頭或者其它屬性,以確定該分組應(yīng)被分配給的流。例如,如果輸入的分組的報頭與交換機的流的條目之一中的指定字段匹配,那么交換機可把該分組分配給該流,并可更新適當(dāng)?shù)挠嫈?shù)器和應(yīng)用對應(yīng)的動作。不過,如果該分組不匹配流條目,那么該分組通常被轉(zhuǎn)發(fā)給網(wǎng)絡(luò)控制器,網(wǎng)絡(luò)控制器可檢查該分組,并決定如何處理該分組和/或?qū)?yīng)于該分組的流。該決定是根據(jù)網(wǎng)絡(luò)概觀中的信息、預(yù)先定義的規(guī)則和策略指示做出的。例如,流處理決策可導(dǎo)致一個或多個動作,包括使交換機和/或控制器丟棄該分組、通過在沿著到分組目的地的路徑的每個交換機中插入流條目來建立路徑,和在不設(shè)置流條目的情況下把該分組轉(zhuǎn)發(fā)給目的地的動作。在一些情況下,不與現(xiàn)有流條目匹配的分組是流的第一分組(“流起始分組”),并且后續(xù)分組可預(yù)期與響應(yīng)流起始分組而創(chuàng)建的流條目匹配。在一些實施例中,控制器可不響應(yīng)流起始而插入任何流條目,并且從而,控制器將繼續(xù)接收該流中的所有分組。在一個例子中,可以進行這種操作,從而控制器能夠看到所有DNS業(yè)務(wù)。在一些實施例中,系統(tǒng)可被配置成根據(jù)分組確定流信息,并在收到第一分組的一部分之后,或者在收到多于第一分組的分組之后,插入流條目。在一些實施例中,管理應(yīng)用決定處理各個流的方法??赏ㄟ^NOX 編程接口傳送控制決策。繼續(xù)參考圖2,一些實施例包含向應(yīng)用202提供各種服務(wù)的編程接口。編程接口可向應(yīng)用提供對網(wǎng)絡(luò)概觀22和歷史概觀M的訪問。通常,應(yīng)用202可查詢網(wǎng)絡(luò)概觀22,利用響應(yīng)中的信息來確定要采取的動作和/或要采取的動作的程度。編程接口可向應(yīng)用提供與網(wǎng)絡(luò)事件相關(guān)的報警。在一個例子中,應(yīng)用可登記通知服務(wù),以便被通知某些網(wǎng)絡(luò)事件。編程接口可使應(yīng)用202能夠控制網(wǎng)絡(luò)部件。例如,應(yīng)用可使用諸如OpenFlow之類的控制接口修改網(wǎng)絡(luò)部件的行為。一些實施例監(jiān)視和報告不同類別的網(wǎng)絡(luò)事件。所述類別可包括反映網(wǎng)絡(luò)概觀中的變化的事件,比如新主機的插入、新用戶的鑒別和網(wǎng)絡(luò)拓?fù)涞母淖?、反映流起始和其它分組到達控制器的事件、直接由諸如交換機加入、交換機離開、收到分組和收到交換機統(tǒng)計信息之類OpenFlow消息產(chǎn)生的事件,和作為處理其它低級事件的結(jié)果,由NOX應(yīng)用產(chǎn)生的事件, 和/或其它應(yīng)用產(chǎn)生的事件。例如,當(dāng)檢測了主機時,設(shè)計用來檢測“掃描主機”的管理應(yīng)用可產(chǎn)生事件。這種掃描應(yīng)用又依賴于低級事件(比如流起始)來檢測掃描器。在一些實施例中,NOX應(yīng)用使用一組注冊的處理程序,所述一組處理程序被配置成當(dāng)發(fā)生某些識別的事件或者某些類型的事件時被執(zhí)行。事件處理程序一般是按照在處理程序注冊期間指定的優(yōu)先級的順序執(zhí)行的。處理程序可向NOX返回一個值,該值指示與該事件相關(guān)的處理程序的執(zhí)行是否應(yīng)被暫停,或者事件的處理是否應(yīng)被傳給下一個注冊的處理程序。在一些實施例中,處理事件的應(yīng)用可以采取一個或多個動作,包括更新網(wǎng)絡(luò)概觀22, 把流條目插入一個或多個網(wǎng)絡(luò)部件中,和產(chǎn)生另外的網(wǎng)絡(luò)事件。NOX核心最好包括其上建立其它組件的基本軟件基礎(chǔ)架構(gòu)。在一個例子中,NOX核心可提供異步通信套件(harness)、事件套件、協(xié)作線程庫、組件體系架構(gòu),和提供網(wǎng)絡(luò)應(yīng)用所共有的功能的一組內(nèi)置系統(tǒng)庫。圖3提供一個實施例中的一些NOX核心組件的高級示圖。 I/O套件310提供對系統(tǒng)輸入和輸出(“I/O”)功能300、302和304的異步接口,系統(tǒng)輸入和輸出(“I/O”)功能300、302和304包括管理與網(wǎng)絡(luò)交換機的連接的功能、處理與文件系統(tǒng)的通信的功能,和提供支持普通網(wǎng)絡(luò)服務(wù)的套接字接口的功能,比如管理web服務(wù)器。事件套件320包括管理系統(tǒng)事件的產(chǎn)生和分發(fā)的組件。系統(tǒng)事件可以包括網(wǎng)絡(luò)級事件,比如交換機插入網(wǎng)絡(luò)中,或者新流的到達,以及由應(yīng)用202創(chuàng)建的事件,比如由檢測掃描主機的應(yīng)用202創(chuàng)建的“檢測到掃描”事件。協(xié)作線程庫320為管理執(zhí)行的并發(fā)線程提供便利接口。一般在獨立的線程語境中執(zhí)行每個I/O事件。這允許應(yīng)用跨通信邊界提供線性程序流,同時避免與阻塞I/O相關(guān)的性能損失。在該例子中,NOX核心100支持完全異步的通信模式,其中通過登記與特定事件對應(yīng)的回叫,應(yīng)用202指定對該事件的興趣。應(yīng)用202可使用協(xié)作線程和回叫。協(xié)作線程320、事件套件322和I/O基礎(chǔ)架構(gòu)組件300、302和304優(yōu)選地為核心應(yīng)用編程接口( “API”)330提供基礎(chǔ),所述核心應(yīng)用編程接口( “API”)330可暴露給應(yīng)用 202。這些組件提供揭示和解析應(yīng)用之間的依從關(guān)系的方法,對應(yīng)用202的動態(tài)加載的支持,和與核心API的接口。在一些實施例中,NOX核心100還可包含提供網(wǎng)絡(luò)應(yīng)用202所共有的功能性的一小組應(yīng)用。這些功能可包括分組分類350、語言綁定356、定位352、路由3M和拓?fù)浒l(fā)現(xiàn)360。 分組分類350提供類屬的接口,其中應(yīng)用202可指定它們對哪種分組感興趣;分類器則確保應(yīng)用202只接收這些分組。編程語言綁定356允許用不同的編程語言編寫應(yīng)用。在所描述的例子中,當(dāng)核心NOX 100是用一種不同的語言,比如C++實現(xiàn)時,python編程語言綁定允許用Python語言開發(fā)應(yīng)用。編程語言綁定356允許功能性的快速原型開發(fā),和性能非關(guān)鍵的功能性的高級實現(xiàn)。編程語言綁定356的其它例子包括對Java和Ruby的綁定。
定位器應(yīng)用352包含用于確定何時新的主機加入或離開網(wǎng)絡(luò)的邏輯和數(shù)據(jù)。在一些實施例中,定位器應(yīng)用352向網(wǎng)絡(luò)概觀22提供數(shù)據(jù)。定位器應(yīng)用352 —般跟蹤與主機相關(guān)的網(wǎng)絡(luò)狀態(tài),包括主機在網(wǎng)絡(luò)上的位置,這通常由所述主機連接的物理端口來確定,和分配給主機的地址。該信息可被用于生成主機加入/離開事件,還可被路由應(yīng)用用于確定將在網(wǎng)絡(luò)中建立的流的源和目的地的物理位置,以及修改流所經(jīng)歷的網(wǎng)絡(luò)部件的轉(zhuǎn)發(fā)行為。通過多個網(wǎng)絡(luò)控制器各自的貢獻,可構(gòu)成網(wǎng)絡(luò)概觀22。定位器應(yīng)用352、拓?fù)浒l(fā)現(xiàn)應(yīng)用360和控制器的其它組件一般可修改網(wǎng)絡(luò)概觀22。在一個例子中,通過由控制器插入它們知道或者“看到”的多件網(wǎng)絡(luò)概觀22來構(gòu)成復(fù)合概觀,并且所得到的當(dāng)前復(fù)合網(wǎng)絡(luò)概觀22隨后可與所有控制器共享。在一些實施例中,使復(fù)合網(wǎng)絡(luò)概觀22保持緩存在每個控制器上,并且當(dāng)存在復(fù)合網(wǎng)絡(luò)概觀22的更新時,更新復(fù)合網(wǎng)絡(luò)概觀22??刂破魃系木彺婵捎衫缏酚蓱?yīng)用維護。復(fù)合概觀22不必被保存在單一服務(wù)器上,它可容易地保存在分散在多個服務(wù)器的分布式散列表(“DHT”)中,所述多個服務(wù)器也可用作一個或多個控制器的主機。路由應(yīng)用3M最好計算網(wǎng)絡(luò)上的可用和/或活動路徑??衫卯?dāng)鏈路變化時遞增地更新的“動態(tài)所有點對最短路徑”算法計算路徑??勺们槭褂闷渌窂接嬎惴椒?。當(dāng)控制器收到需要路由的流時,控制器可例如根據(jù)由分組和/或流標(biāo)識的源和目的地媒體訪問控制(“MAC”)地址所連接的物理端口,確定或選擇路線。路由應(yīng)用3M還可接受對路徑的多個約束,例如包括流必須經(jīng)過的一個或多個中間節(jié)點的標(biāo)識。在一個例子中,可利用多跳Djikstra算法按需計算路徑。路由應(yīng)用3M還可利用標(biāo)準(zhǔn)技術(shù)計算多路徑和組播路徑。 作為約束,多個路徑的計算可包括不相交性(disjointness)的改變程度,以致能夠控制路徑之間的重疊度。在計算了數(shù)據(jù)流的路徑之后,路由應(yīng)用可產(chǎn)生一個或多個網(wǎng)絡(luò)部件的轉(zhuǎn)發(fā)行為的改變,以便實現(xiàn)計算出的路徑。拓?fù)浒l(fā)現(xiàn)應(yīng)用360能夠使用LLDP分組來檢測節(jié)點和鏈路級網(wǎng)絡(luò)拓?fù)洹Mㄟ^從每個交換機端口發(fā)送唯一的LLDP分組,并在收到這種分組時確定所連接的端口,可完成所述檢測。該信息一般被存儲在控制器內(nèi)部,并且可被多個NOX組件,包括路由組件使用。拓?fù)浒l(fā)現(xiàn)可在控制器處進行,或者可在交換機處實現(xiàn)。一些實施例支持目錄整合。參見圖4,NOX可通過目錄管理器組件420,提供與一個或多個本地或遠程目錄服務(wù)430、432、434和436的抽象化接口。諸如LDAP 432或AD 430 之類的目錄服務(wù)包含關(guān)于網(wǎng)絡(luò)資源的信息,包括用戶名、主機名、組名和服務(wù)名稱。另外,目錄服務(wù)430、432、434和436通常起“鑒別倉庫”的作用,維護向網(wǎng)絡(luò)鑒別用戶、主機或交換機所需的憑證。在一些實施例中,目錄可被用于鑒別用戶、交換機和主機,還可用于提供涉及用戶、交換機和主機的特性的相關(guān)元數(shù)據(jù)。例如,目錄可保存與用戶和/或主機所屬于的組有關(guān)的信息。按照本發(fā)明的一些方面,應(yīng)用400、402、404可被編寫成與目錄管理器420接口, 并且通過構(gòu)建插入目錄管理器基礎(chǔ)架構(gòu)中的目錄專用的后端,可以增加新目錄。一般來說, 新目錄的增加不需要對應(yīng)用的任何改變??稍谶\行NOX的相同設(shè)備上保存和操作目錄,并且也可在其它網(wǎng)絡(luò)設(shè)備上保存和操作目錄。在一些實施例中,NOX目錄管理器420能夠向多個目錄暴露接口。這些接口可包括進行如下操作的接口 訪問鑒別時接收的用戶/主機/交換機憑證、根據(jù)交換機鑒別信息確定交換機名稱、根據(jù)交換機和端口號確定端口名稱、確定與用戶相關(guān)的主機、交換機和/或位置、確定與主機相關(guān)的已知MAC和IP地址、確定主機的功能,例如,主機是充當(dāng)網(wǎng)關(guān)還是路由器、確定用戶和主機之間的關(guān)聯(lián),以及在一個或多個目錄中增加/刪除/修改條目。在一些實施例中,NOX包含處理準(zhǔn)許控制策略和訪問控制策略的策略引擎。準(zhǔn)許控制策略確定用戶、主機或交換機為加入網(wǎng)絡(luò)而需要的鑒別。訪問控制策略確定哪些流被允許使用網(wǎng)絡(luò),和這種使用的約束。圖5描述與NOX的核心組件集成的策略控制的一個例子。一般來說,策略控制依賴于其它NOX應(yīng)用以進行拓?fù)浒l(fā)現(xiàn)、路由、鑒別和流建立??稍诳杀痪幾g成低級查找樹的一個或多個文件中宣布策略??捎脤S玫牟呗哉Z言,比如基于流的安全語言(“FSL”)表述策略。編譯過程一般檢查所有可用的鑒別倉庫,以核實在策略文件中使用的主體名稱的存在。在一些實施例中,首先在502用相關(guān)的名稱和組標(biāo)記NOX接收的分組500 (包括由不存在已有交換機條目的交換機轉(zhuǎn)發(fā)給控制器的分組)。在主體鑒別時能夠獲得名稱和地址之間的綁定信息,并且該綁定信息可被存儲在定位器組件中。如果對該分組來說不存在綁定信息,那么認(rèn)為主機和用戶未被鑒別。策略引擎可允許宣布覆蓋未經(jīng)鑒別的主機和用戶的規(guī)則。策略查找樹可確定網(wǎng)絡(luò)應(yīng)如何處理標(biāo)記的分組。在一些實施例中,策略查找提供可應(yīng)用于流的約束,并且所述約束可被傳給路由組件,以找出符合策略的路徑。如果對給定的策略約束不存在任何路徑,那么該分組一般被丟棄。約束的一個例子是拒絕整個流,這會產(chǎn)生一個或多個丟棄的分組。查找樹還允許使用定制的編程函數(shù)或Java小程序作為應(yīng)用于輸入分組的動作。 這樣的函數(shù)可由程序員或者代碼生成器用任何希望的編程語言,例如包括C++和Python創(chuàng)建。而這些定制的編程函數(shù)可被用于各種用途例如,可以開發(fā)一些函數(shù)來擴充鑒別策略。 在一個例子中,規(guī)則可規(guī)定在被允許進入網(wǎng)絡(luò)之前,要求借助802. Ix鑒別來自指定接入點的所有未經(jīng)鑒別的主機。本發(fā)明的一些實施例支持多種不同的鑒別方案,包括基于MAC的主機鑒別、802. Ix主機鑒別,和借助重定向到被控制的網(wǎng)絡(luò)門戶的用戶鑒別。通過一個例子的應(yīng)用,可最好地認(rèn)識在一些實施例中實現(xiàn)的策略控制的使用。在該例子中,單向流(“uniflow”)用八元組表征<usrc, hsrc, asrc, utgt, htgt, atgt, prot, request〉,其中usrc.utgt分別是源用戶和目標(biāo)用戶,hsrc、htgt分別是源主機和目標(biāo)主機,asrc、atgt分別是源接入點和目標(biāo)接入點,prot是協(xié)議,并且request指示一個流是否是對之前的流的響應(yīng)。Uniflow構(gòu)成訪問控制決策器的輸入。NOX的安全策略使每個可能的uniflow與一組約束相聯(lián)系,并且對本例的目的來說,可以允許、拒絕imiflow、可以要求imiflow采用通過網(wǎng)絡(luò)的包括規(guī)定主機的路由(使該imiflow “按照所指的路行進”),禁止通過某些規(guī)定主機(“路點”)并且速率受到限制??蓢@意圖使必須按流檢查的規(guī)則的數(shù)目最小化的決策樹構(gòu)建策略評估引擎。決策樹可根據(jù)八個uniflow字段和一批組劃分規(guī)則,產(chǎn)生10維空間中的規(guī)則集的緊湊表示。
12否定文法(negative literals)可被索引器忽略,并在運行時評估。對于由決策樹中的每個節(jié)點代表的維度的每個可能值,該節(jié)點一般具有一個子節(jié)點。例如,對于子樹的策略規(guī)則中將usrc約束于的每個值,代表usrc的節(jié)點能夠具有一個子節(jié)點。另外,每個節(jié)點可包括“ANY”子節(jié)點,用于提供其中子樹的規(guī)則不約束由節(jié)點代表的維度的規(guī)則??衫镁哂墟滄i的散列表實現(xiàn)決策樹中的每個節(jié)點,以確保在幾乎恒定的時間內(nèi)能夠找到其每個子節(jié)點。關(guān)于10種屬性中的哪一個歸因于樹中任意點上的分支的決策可以以找出最廣泛地分割子樹的規(guī)則集的維度為基礎(chǔ)。例如,可以選擇一個維度,以使在每個子節(jié)點的規(guī)則的平均數(shù)加上子樹中的ANY規(guī)則的數(shù)目最小化。在一些實施例中,可在鑒別期間計算組成員。G(S)可被用于表示imiflow的源所屬于的所有組,并且G(t)可被用于表示uniflow的目標(biāo)所屬于的所有組。為了找出與任意指定imiflow有關(guān)的所有規(guī)則,可以修改普通的決策樹算法,以致在任意指定節(jié)點處可以跟隨多個分支。在一個例子中,總是沿ANY分支前進,并且對于分離源組和目標(biāo)組的分支, 追蹤屬于uniflow的G(s)和G(t)的所有子節(jié)點。圖6描述NOX內(nèi)主機鑒別的控制流程的一個例子,并且圖解說明當(dāng)鑒別主機時, 這些結(jié)構(gòu)組件是如何一起工作的。在步驟600,NOX從交換機接收分組和packet-in消息, packet-in消息指示接收該分組的交換機和交換機端口。在步驟602,定位器組件使用輸入端口、MAC地址和IP地址來確定該主機是否已被鑒別。在步驟603,如果該主機已被鑒別, 那么定位器查找和增加該主機的高級名稱和組名稱。不過,如果該主機未被鑒別,那么在步驟604,定位器使用主機名“未經(jīng)鑒別的”。在步驟606,定位器組件把流和相關(guān)的名稱傳送給策略查找組件。在步驟608,維護編譯的網(wǎng)絡(luò)策略的策略查找組件根據(jù)網(wǎng)絡(luò)地址和高級名稱規(guī)定應(yīng)如何處理該分組。策略規(guī)定應(yīng)使用哪種鑒別機制609,并且來自未經(jīng)鑒別的主機的分組被傳給所指示的子系統(tǒng)。例如,可以傳送分組以進行802. Ix鑒別,或者檢查已登記的MAC。在一些實施例中,鑒別子系統(tǒng)負(fù)責(zé)進行協(xié)議特定的鑒別交換。一旦主機已被成功鑒別,則鑒別子系統(tǒng)就把與主機相關(guān)的地址標(biāo)記為已鑒別。來自該主機的所有后續(xù)分組將用與該主機相關(guān)的名稱和組來標(biāo)記。 在步驟610,策略規(guī)定應(yīng)用于來自經(jīng)鑒別主機的分組的約束。如果允許該流,那么分組被傳送給路由組件(步驟611),路由組件將確定符合策略的路線,并在網(wǎng)絡(luò)中建立該路線。否則在步驟612丟棄該分組。當(dāng)編寫和執(zhí)行策略規(guī)則時,用戶一般把策略編寫為一批規(guī)則,并編譯該策略。編譯器可檢查語法,并核實主體名稱存在于所配置的目錄之一中。編譯器把策略規(guī)則編譯成低級內(nèi)部格式。編譯可包括標(biāo)準(zhǔn)化和規(guī)則擴展,由此,例如,“OR”被擴展為多個規(guī)則。編譯器可把編譯的策略保存在永久存儲器中,并把整個策略構(gòu)建成查找樹。一些實施例提供用于帶內(nèi)控制和控制器發(fā)現(xiàn)的系統(tǒng)和方法。通過共享和數(shù)據(jù)業(yè)務(wù)一樣的傳輸介質(zhì),帶內(nèi)控制系統(tǒng)在交換機和控制器之間傳送控制業(yè)務(wù)。通過消除對獨立控制網(wǎng)絡(luò)的需要,帶內(nèi)控制的使用能夠簡化物理網(wǎng)絡(luò)設(shè)置和配置。交換機和控制器可被配置和/或修改,以支持帶內(nèi)控制使用的一些功能。一般來說,為交換機提供能力以在無控制器幫助的情況下,找出和建立到控制器的連接。交換機必須能夠區(qū)分控制業(yè)務(wù)和數(shù)據(jù)業(yè)務(wù),以便避免通信環(huán)路。另外,策略系統(tǒng)必須被配置成允許帶內(nèi)通信操作和通信。在一些實施例中,交換機能夠在沒有控制器特有狀態(tài)的先驗知識的情況下自動發(fā)現(xiàn)控制器。例如,交換機可自動檢測控制器,并在與網(wǎng)絡(luò)的連接上建立與控制器的安全通道。在特別注意安全的應(yīng)用中,可通過受信任的路徑連接交換機,以便保護初始SSL連接。默認(rèn)地,只有當(dāng)交換機建立了與控制器的連接時,交換機才轉(zhuǎn)發(fā)發(fā)現(xiàn)分組。啟動時,交換機可從所有端口發(fā)出DHCP請求,以便搜索控制器。交換機假設(shè)控制器將在它收到 DHCP答復(fù)的端口上。DHCP答復(fù)將包括交換機的IP地址,和控制器正在偵聽的IP地址和端口號。交換機隨后可在接收DHCP的端口之外建立與控制器的控制連接。一般來說,交換機不會把來自其它交換機的控制業(yè)務(wù)轉(zhuǎn)發(fā)全控制器。通過確定控制業(yè)務(wù)正被發(fā)送給已知控制器或者發(fā)送自已知控制器,檢測控制業(yè)務(wù)。在一些實施例中,NOX能夠利用基于標(biāo)準(zhǔn)的協(xié)議,比如OpenFlow,控制比如交換機的網(wǎng)絡(luò)部件。在OpenFlow抽象中,交換機由流表表示,其中每個條目包含報頭和將對匹配分組執(zhí)行的動作。在按照本發(fā)明的一些方面構(gòu)成的系統(tǒng)中,可支持和增強OpenFlow和其它這樣的協(xié)議。傳統(tǒng)的網(wǎng)絡(luò)交換機通常采用低功率CPU用于管理任務(wù),和進行線速交換的諸如片上交換機(“SoC”)之類專用硬件。許多SoC具有ACL的內(nèi)置支持,以便實現(xiàn)防火墻。這些 ACL 一般支持在層2-4的匹配,并且還可支持通配字段。SoC被設(shè)計成支持線速處理,因為管理CPU不能接收經(jīng)過交換機的每個分組,不過管理CPU通常能夠配置遠程SoC上的ACL。 SoC上的ACL —般支持與OpenFlow的接口非常類似的〈header:action〉接口。對于每個 ACL條目,必須指定所要求的匹配字段和希望的動作集。ACL實現(xiàn)一般還允許嚴(yán)格排序的定義,其中相對于分組執(zhí)行分組匹配和與第一匹配條目相關(guān)的動作。大多數(shù)SoC支持許多動作,包括丟棄分組、發(fā)送給管理CPU,和通過一個或多個物理端口轉(zhuǎn)發(fā)。在一些平臺上,ACL動作支持遞增與條目相關(guān)的計數(shù)器和修改分組報頭。通常,交換機配置有匹配未能與較高優(yōu)先級規(guī)則匹配的任何分組的最低優(yōu)先級規(guī)則。對典型的防火墻來說,動作或者使分組被丟棄(默認(rèn)拒絕),或者使分組通過(默認(rèn)允許)。管理CPU可以查閱由NOX配置的本地軟件表。如果沒有找到任何匹配項,那么分組可被轉(zhuǎn)發(fā)給控制器。通過利用諸如OpenFlow之類的協(xié)議,NOX能夠發(fā)送命令以增加或刪除流條目。交換機管理CPU能夠被編程,以利用SoC所支持的ACL的功能,并且能夠根據(jù)SoCACL的靈活性和功能來配置SoC ACL表。管理CPU可根據(jù)需要配置ACL表,以處理 NOX請求,只要在流中存在足夠的空間。管理軟件一般被配置成知道可能影響網(wǎng)絡(luò)工作的多個因素和問題。管理處理器確保在優(yōu)先級較低的流條目之前,發(fā)現(xiàn)和處理具有較高的匹配優(yōu)先級的流條目,并據(jù)此重新配置ACL表中的條目的排列。如果由NOX請求的條目的數(shù)目超過ACL表中的可用空間,那么處理器可把過多或額外的條目保存在它自己的軟件表中。本地處理器表的使用可要求小心地向ACL分配存儲空間,并且在一些情況下,要求調(diào)整流條目區(qū)分優(yōu)先級功能。ACL表中的匹配條目將不會被發(fā)送給管理CPU,并且從而不會在軟件表中找到匹配項。于是,管理軟件可被配置有把條目放入處理器軟件表中,以避免負(fù)面影響這種流的性能的規(guī)則。此外,在交換機硬件包含兩個或更多的SoC的情況下,管理軟件可在交換機中的兩個位置中設(shè)置ACL, 以允許分組在輸入芯片和輸出芯片之間傳播。盡管傳統(tǒng)的ACL —般沒有過期的概念,不過由NOX插入的流條目一般配有過期機制。為了在ACL中支持這種差異,運行于管理CPU上的軟件可被配置成跟蹤ACL條目是否
14繼續(xù)與業(yè)務(wù)匹配。除了由NOX配置的其它轉(zhuǎn)發(fā)和丟棄動作之外,通過配置遞增與條目相關(guān)的計數(shù)器的動作,可完成這種跟蹤。軟件隨后可輪詢ACL計數(shù)器,并且檢查自從最后的輪詢間隔以來,任何分組是否匹配了該條目。如果就該條目來說,持續(xù)預(yù)定一段空閑時間沒有觀察到任何匹配分組,那么可從ACL表中刪除該條目。按照本發(fā)明的一些方面構(gòu)成的系統(tǒng)表現(xiàn)出一些性質(zhì),所述一些性質(zhì)可包括全面控制、縮放、向后兼容、自動配置和虛擬環(huán)境。就全面控制性質(zhì)來說,圖7示出了能夠規(guī)定分組通過網(wǎng)絡(luò)的路徑的流條目,并且具體描述了具有報頭H的分組的路徑,其中該路徑由一組流條目規(guī)定。一些實施例包含完全控制處理網(wǎng)絡(luò)中的流的方法的系統(tǒng)。這些系統(tǒng)可通過各種動作行使控制,所述各種動作包括向流拒絕服務(wù)、丟棄流中的一些或全部分組、通過在網(wǎng)絡(luò)部件中插入適當(dāng)?shù)牧鳁l目來選擇通過網(wǎng)絡(luò)的路徑、利用流條目實現(xiàn)選擇的服務(wù)質(zhì)量(“QoS”),使網(wǎng)絡(luò)部件進行各種按分組進行的操作,比如加密、封裝、地址轉(zhuǎn)換、速率限制和有狀態(tài)的隧穿,并且通過挑選通向提供所需服務(wù)的網(wǎng)絡(luò)部件,比如能夠進行深度分組檢查或數(shù)據(jù)記錄的部件的路徑,插入屬于該路徑的服務(wù)。后者這種控制選項證明系統(tǒng)不受用于控制或監(jiān)視網(wǎng)絡(luò)設(shè)備的任何抽象的限制所約束,因為插入服務(wù)的能力允許系統(tǒng)進行該抽象中目前不支持的動作。在一些實施例中,管理決策可基于各種因素,包括源和/或目的地用戶身份、角色、位置、組成員資格和其它屬性;源/目的地主機身份、角色、位置、組成員資格和其它屬性;本地和/或全球網(wǎng)絡(luò)條件,包括各種網(wǎng)絡(luò)事件和/或其它管理應(yīng)用的通知;以及日期和時間??稍诹鞯闹虚g修改管理決策。例如,如果網(wǎng)絡(luò)條件改變,或者檢測到某一其它網(wǎng)絡(luò)事件,那么流能夠被重新路由和/或經(jīng)歷深度分組檢查服務(wù)的額外詳細(xì)審查。在一些實施例中,NOX可被放大到極大的系統(tǒng)規(guī)模。在這些實施例中,需要嚴(yán)格控制設(shè)計中的一些一致性要求。一般來說,由于應(yīng)用通常只使用來自網(wǎng)絡(luò)概觀的數(shù)據(jù),以及指定策略來做出控制決策,因此只需要跨控制器始終如一地使用網(wǎng)絡(luò)概觀。由于在做出這些控制決策時一般不使用和各個分組或流的狀態(tài)有關(guān)的信息,因此將達到與流相關(guān)的控制決策方面的一致性,與哪個控制器接收該流無關(guān)。在一些實施例中,與新流到達的速度相比,網(wǎng)絡(luò)概觀變化非常緩慢。這使網(wǎng)絡(luò)概觀可以提供大量控制器的全局一致的概觀,這使系統(tǒng)可以并行利用許多控制器,每個控制器負(fù)責(zé)網(wǎng)絡(luò)中的流的子集,從而使系統(tǒng)能夠被縮放。系統(tǒng)縮放的限制因素是改變網(wǎng)絡(luò)概觀的速率。就原始計算要求來說,單一服務(wù)器能夠容易地對付目前的多數(shù)企業(yè)網(wǎng)絡(luò)的變化速度。更一般地說,NOX能夠?qū)σ钥焖贂r標(biāo)發(fā)生的事件使用并行操作,這樣的事件包括分組到達和流到達。分組到達一般由各個交換機處理,而不存在全局的按分組協(xié)調(diào),并且流的發(fā)起可由控制器處理,而不存在全局按流的協(xié)調(diào)。流可被發(fā)送給任何控制器,從而通過增加運行控制器進程的更多服務(wù)器,能夠增大系統(tǒng)的容量。網(wǎng)絡(luò)概觀全局?jǐn)?shù)據(jù)結(jié)構(gòu)一般足夠緩慢地改變,以致對于超大型網(wǎng)絡(luò)能夠集中維護它。不過,為了彈性,可在較小的一組副本上維護網(wǎng)絡(luò)概觀。本發(fā)明的一些實施例包含向后兼容傳統(tǒng)系統(tǒng)的組件和部件。按照本發(fā)明的一些方面構(gòu)成的系統(tǒng)不需要對與網(wǎng)絡(luò)連接的那部分設(shè)備的任何特殊動作。例如,連接以太網(wǎng)的設(shè)備能夠仿佛它們與普通以太網(wǎng)網(wǎng)絡(luò)連接似的工作,從而不需要任何修改。按照本發(fā)明的一些方面構(gòu)成的系統(tǒng)能夠與不支持OpenFlow,或者其它基于標(biāo)準(zhǔn)的具有這里所述類似功能的接口的網(wǎng)絡(luò)部件共存。這些非OpenFlow網(wǎng)絡(luò)部件將如常轉(zhuǎn)發(fā)分組,并且系統(tǒng)可以僅僅把它們并入整個網(wǎng)絡(luò)架構(gòu)中。不過,系統(tǒng)不能對這些未修改的網(wǎng)絡(luò)部件的行為施加控制,但是可按照這些未修改的網(wǎng)絡(luò)部件遵守的連網(wǎng)標(biāo)準(zhǔn)(例如,標(biāo)準(zhǔn)以太網(wǎng)等)表征這樣的組件。一些實施例支持網(wǎng)絡(luò)及其組成部分的自動配置。通過利用可捕捉與網(wǎng)絡(luò)實體相關(guān)的必要信息,比如角色,屬性和組成員資格的系統(tǒng)目錄,可便利配置。通過在一個或多個管理應(yīng)用或系統(tǒng)文件中鏈接的一組策略,可捕捉管理目標(biāo)。進入系統(tǒng)的新的網(wǎng)絡(luò)實體能夠被自動檢測,并且能夠?qū)εc新實體的通信應(yīng)用適當(dāng)?shù)牟呗?。類似地,進入系統(tǒng)的新的網(wǎng)絡(luò)部件能夠被自動檢測,并且能夠按照系統(tǒng)策略向該新部件發(fā)送流條目或者其它管理命令。從而, 除了當(dāng)為部件配備安全地與控制器通信所必需的加密密鑰時之外,一般不需要各個網(wǎng)絡(luò)部件的明確配置。一些實施例支持具有虛擬機(“VM”)和虛擬交換機的虛擬環(huán)境。VM是網(wǎng)絡(luò)實體的一種形式,并且虛擬交換機是網(wǎng)絡(luò)部件的一種形式。如果每個服務(wù)器或網(wǎng)絡(luò)部件在其虛擬交換機上支持諸如OpenFlow之類的抽象,那么系統(tǒng)正確地執(zhí)行策略。當(dāng)VM移動或者共同位于相同服務(wù)器上時同樣如此,并且除了 OpenFlow實現(xiàn)方式之外,不需要服務(wù)器上的特殊功能。一些實施例保存網(wǎng)絡(luò)狀態(tài)的歷史,網(wǎng)絡(luò)狀態(tài)的歷史可用于故障檢修和取證。除了流的完整列表及除到達時間和離開時間外的流的統(tǒng)計信息,比如分組和字節(jié)之外,系統(tǒng)還保存網(wǎng)絡(luò)概觀的歷史記錄。這使操作員可以查看在任何時間點的網(wǎng)絡(luò)概觀的狀態(tài)。例如, 操作員可以查看在當(dāng)前時間之前兩年或兩小時的完整網(wǎng)絡(luò)概觀。根據(jù)歷史概觀,操作員可確定哪個用戶和主機發(fā)送分組。所有通信的歷史使操作員能夠進行網(wǎng)絡(luò)業(yè)務(wù)的流級分析, 這可用于確定在定義的一段時間內(nèi)發(fā)生的網(wǎng)絡(luò)事件。從而,歷史可揭示在目標(biāo)事件之前和 /或之后的電子郵件傳輸、主機重啟和事件。歷史概觀一般包含高級名稱和低級地址之間的綁定的歷史,它允許更明確地把過去事件歸屬于各個用戶。從而,能夠確定在某一時間, 誰傳送了文件,以及誰登錄到了所選主機。該信息可用于網(wǎng)絡(luò)故障檢修,和檢測過去的網(wǎng)絡(luò)業(yè)務(wù)中各種形式的異?;蚩梢尚袨椤OX能夠提供支持這種故障檢修和取證分析的附加信肩、ο一些實施例提供增強的路由功能,和提供完全控制流通過網(wǎng)絡(luò)的路徑的路由的系統(tǒng)??刂破髂軌蛟O(shè)置一組流條目,所述一組流條目將使來自流的分組采用任意路徑通過網(wǎng)絡(luò)。特別地,不必從單一的“生成樹(spanning tree) ”中選擇路徑,在相同始發(fā)地和目的地之間行進的不同流可以采用不同的路徑。此外,僅僅通過插入一組新的流條目,管理應(yīng)用就能夠在任意時間重新路由流。這使管理應(yīng)用可以選擇實現(xiàn)負(fù)載均衡、使用快捷路徑和支持快速失效轉(zhuǎn)移等的路線。當(dāng)網(wǎng)絡(luò)中的一條或多條鏈路被過度使用時,可以采用負(fù)載均衡。應(yīng)用可為經(jīng)過過載鏈路的流選擇新的路徑,或者可為新到達的流選擇避開該鏈路的路徑。特別地,路由可利用多個路徑來分散網(wǎng)絡(luò)負(fù)載。快捷路徑提供不需要遵循分級模式的路線,在分級模式中,流必須通過主聚合交換機。相反,路線可以選擇“捷徑”,捷徑是避免中央分級結(jié)構(gòu)的路徑??焖偈мD(zhuǎn)移用于在檢測到失效時,僅重新選擇經(jīng)過失效鏈路的那些路徑的路線。這使得在遇到故障時大多數(shù)流能工作。在需要的情況下,一旦控制器被告知該失效的鏈路,就能夠?qū)崿F(xiàn)流的重新路由。
一些實施例支持改進的分級截取和相關(guān)特征,比如主機休眠。傳統(tǒng)計算機可支持當(dāng)未被活動地使用時,休眠或以其它方式省電的能力。但是,分組到達它們的網(wǎng)絡(luò)接口卡 (“NIC”)會干擾功率降低特性,因為這些分組需要由CPU處理。通常在小功率工作狀態(tài)期間,幾乎所有的業(yè)務(wù)都是不向目的地主機傳送有用信息,并且不需要主機采取的非平凡動作的網(wǎng)絡(luò)啁啾(chatter)。按照本發(fā)明的一些方面,控制器能夠決定不轉(zhuǎn)發(fā)這些分組,并且可代表目的主機處理分組。例如,網(wǎng)絡(luò)控制器,或者代表它行動的網(wǎng)絡(luò)部件能夠響應(yīng)試圖發(fā)現(xiàn)目的地主機是否仍然與網(wǎng)絡(luò)聯(lián)系的一些網(wǎng)絡(luò)請求。這將使主機仍然處于其低功率的模式。不過,控制器能夠識別和轉(zhuǎn)發(fā)重要的業(yè)務(wù),比如安全外殼(“SSH”)業(yè)務(wù)、報警、查詢和其它請求,以允許主機恰當(dāng)?shù)仨憫?yīng)。通過使控制器在轉(zhuǎn)發(fā)分組之前檢查所述分組,并且可能地建立流條目,網(wǎng)絡(luò)管理器能夠做出轉(zhuǎn)發(fā)哪些分組的明智決策。一些實施例能夠保護控制器和網(wǎng)絡(luò)概觀免受拒絕服務(wù)(“DoS”)攻擊。為了防止對控制器和網(wǎng)絡(luò)概觀的淹沒拒絕服務(wù)攻擊,系統(tǒng)能夠限制各個網(wǎng)絡(luò)部件和實體可向控制器和系統(tǒng)的其它部件發(fā)送分組的速率。這能夠保護至關(guān)緊要的網(wǎng)絡(luò)和系統(tǒng)資源。這種保護是可能的,因為控制器能夠檢測資源過載,并修改適當(dāng)?shù)牧鳁l目,以限制或防止對過載資源的訪問ο本發(fā)明的上述說明是例證性的,而不是對本發(fā)明的限制。例如,本領(lǐng)域的技術(shù)人員會認(rèn)識到可用上面說明的功能和能力的各種組合實踐本發(fā)明,本發(fā)明可包括比所述更少或更多的組件。下面進一步陳述本發(fā)明的一些另外的方面和特征,在受益于本公開內(nèi)容之后, 本領(lǐng)域的技術(shù)人員會認(rèn)識到,利用上面更詳細(xì)說明的功能和組件能夠獲得這些另外的方面和特征。本發(fā)明的一些實施例提供控制全局路由和其它轉(zhuǎn)發(fā)行為(包括網(wǎng)絡(luò)地址轉(zhuǎn)換、加密、封裝、有狀態(tài)的隧穿,和各種形式的服務(wù)質(zhì)量)的系統(tǒng)和方法。當(dāng)流開始時,可實時地對每個流單獨做出這些決策,并且這些決策可基于按照高級名稱(主機、用戶、服務(wù)等的名稱)表述的通用策略。這些策略的實現(xiàn)可獨立于網(wǎng)絡(luò)拓?fù)洌⑶耶?dāng)用戶和主機移動以及網(wǎng)絡(luò)變化時,這些策略仍然有效。通過利用在多數(shù)商用交換芯片中提供的ACL功能,能夠?qū)崿F(xiàn)本發(fā)明的一些實施例。本發(fā)明的一些實施例提供維護全面網(wǎng)絡(luò)概觀的系統(tǒng)和方法。在這些實施例的一些中,網(wǎng)絡(luò)概觀包括網(wǎng)絡(luò)部件的拓?fù)?。在這些實施例的一些中,網(wǎng)絡(luò)概觀識別實體的位置,這些實體包括用戶、服務(wù)和主機。在這些實施例的一些中,維護網(wǎng)絡(luò)概觀的歷史,以及網(wǎng)絡(luò)流的歷史。本發(fā)明的一些實施例提供使高級語言可以訪問網(wǎng)絡(luò)概觀的集中的編程接口,提供包括流發(fā)起和網(wǎng)絡(luò)概觀的變化的網(wǎng)絡(luò)事件的通知,和控制網(wǎng)絡(luò)部件的控制機制。在這些實施例的一些中,系統(tǒng)提供對全局路由的實時逐流控制。在這些實施例的一些中,系統(tǒng)控制流通過網(wǎng)絡(luò)的路徑,和網(wǎng)絡(luò)部件對流的處理。在這些實施例的一些中,通過一致性要求的嚴(yán)格分離,系統(tǒng)是可縮放的,只有網(wǎng)絡(luò)概觀要求全局一致性。在這些實施例的一些中,關(guān)于流的決策基于全局網(wǎng)絡(luò)概觀和流狀態(tài)。在這些實施例的一些中,這允許把一致但是緩慢改變的網(wǎng)絡(luò)概觀和局部但是快速變化的參數(shù)分開。在這些實施例的一些中,與多個控制器中的每一個無關(guān)地處理流狀態(tài)。本發(fā)明的一些實施例提供自動配置網(wǎng)絡(luò)的方法。在這些實施例的一些中,自動配置包括自動檢測與網(wǎng)絡(luò)連接的新設(shè)備和服務(wù)。在這些實施例的一些中,自動配置包括自動更新流條目和其它配置信息。在這些實施例的一些中,流條目和其它配置信息的自動更新允許面對各種網(wǎng)絡(luò)變化維護全局指示(“策略”)的實現(xiàn)。本發(fā)明的一些實施例提供對分組的智能截取的支持,使主機能夠保持功率降低模式。本發(fā)明的一些實施例提供對虛擬環(huán)境的支持,包括支持遷移VM。在這些實施例的其中多個VM與某些設(shè)備相關(guān)的一些實施例中,系統(tǒng)允許控制這些共同駐留的VM之間的通信。在這些實施例的一些中,使用帶內(nèi)控制來管理設(shè)備。在這些實施例的一些中,利用ACL 功能提供全局功能來控制交換機。本發(fā)明的一些實施例提供對通過單一系統(tǒng)管理和保護多個網(wǎng)絡(luò)的支持。本發(fā)明的一些實施例提供支持以使多個管理系統(tǒng)共享單一網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的控制, 使不同的管理機構(gòu)能夠?qū)⒖刂品珠_。本發(fā)明的一些實施例提供管理網(wǎng)絡(luò)的系統(tǒng)和方法。這些實施例的一些包括維護網(wǎng)絡(luò)的當(dāng)前狀態(tài)的網(wǎng)絡(luò)概觀,網(wǎng)絡(luò)的當(dāng)前狀態(tài)表征網(wǎng)絡(luò)組成和網(wǎng)絡(luò)拓?fù)?,網(wǎng)絡(luò)組成包括網(wǎng)絡(luò)上目前可尋址的網(wǎng)絡(luò)實體和網(wǎng)絡(luò)部件,通告與網(wǎng)絡(luò)狀態(tài)的變化對應(yīng)的事件,和根據(jù)網(wǎng)絡(luò)概觀和事件之一配置網(wǎng)絡(luò)部件之一。在這些實施例的一些中,網(wǎng)絡(luò)實體包括網(wǎng)絡(luò)用戶。在這些實施例的一些中,一個或多個網(wǎng)絡(luò)管理應(yīng)用訪問網(wǎng)絡(luò)概觀。在這些實施例的一些中,網(wǎng)絡(luò)的當(dāng)前狀態(tài)包括網(wǎng)絡(luò)構(gòu)成的位置。在這些實施例的一些中,網(wǎng)絡(luò)的當(dāng)前狀態(tài)還表征網(wǎng)絡(luò)中的數(shù)據(jù)流。在這些實施例的一些中,配置網(wǎng)絡(luò)部件之一包括改變網(wǎng)絡(luò)拓?fù)洹T谶@些實施例的一些中,改變網(wǎng)絡(luò)拓?fù)浒ㄏ蚨鄠€網(wǎng)絡(luò)部件提供路由信息,所述路由信息對應(yīng)于一個或多個數(shù)據(jù)流。這些實施例中的一些還包括存儲在先網(wǎng)絡(luò)概觀的歷史。在這些實施例中的一些中,歷史中的每個在先網(wǎng)絡(luò)概觀記錄規(guī)定時間的網(wǎng)絡(luò)狀態(tài),并且還記錄在規(guī)定時間之前檢測到的事件。在這些實施例的一些中,所述規(guī)定時間由時間表定義,并且事件的每次發(fā)生只被記錄在歷史中的一個在先網(wǎng)絡(luò)概觀中。在這些實施例的一些中,規(guī)定時間對應(yīng)于事件的發(fā)生。在這些實施例的一些中,每個數(shù)據(jù)流與一個或多個網(wǎng)絡(luò)部件的轉(zhuǎn)發(fā)行為相關(guān),并且還包括根據(jù)網(wǎng)絡(luò)概觀控制某些轉(zhuǎn)發(fā)行為。在這些實施例的一些中,控制某些轉(zhuǎn)發(fā)行為包括響應(yīng)事件之一,修改至少一個轉(zhuǎn)發(fā)行為。在這些實施例的一些中,控制某些轉(zhuǎn)發(fā)行為包括在改變網(wǎng)絡(luò)拓?fù)渲?,修改至少一個轉(zhuǎn)發(fā)行為。在這些實施例的一些中,修改至少一個轉(zhuǎn)發(fā)行為的步驟由網(wǎng)絡(luò)控制器進行。在這些實施例的一些中,改變網(wǎng)絡(luò)拓?fù)浒ㄗ詣优渲眯虏迦刖W(wǎng)絡(luò)中的設(shè)備。在這些實施例的一些中,自動配置設(shè)備包括向每個自動配置的設(shè)備提供至少一個ACL。在這些實施例的一些中,每個數(shù)據(jù)流與一個或多個網(wǎng)絡(luò)部件的轉(zhuǎn)發(fā)行為相關(guān),并且其中自動配置設(shè)備包括根據(jù)網(wǎng)絡(luò)概觀,修改至少一個轉(zhuǎn)發(fā)行為。在這些實施例的一些中,配置網(wǎng)絡(luò)部件之一由網(wǎng)絡(luò)管理系統(tǒng)進行。在這些實施例的一些中,根據(jù)網(wǎng)絡(luò)的當(dāng)前狀態(tài)和網(wǎng)絡(luò)管理系統(tǒng)所維護的網(wǎng)絡(luò)狀態(tài)歷史的比較,網(wǎng)絡(luò)管理系統(tǒng)產(chǎn)生某些事件。在這些實施例的一些中,網(wǎng)絡(luò)管理系統(tǒng)包含描述網(wǎng)絡(luò)的當(dāng)前狀態(tài)的網(wǎng)絡(luò)概觀。在這些實施例的一些中,網(wǎng)絡(luò)的狀態(tài)包括當(dāng)前網(wǎng)絡(luò)拓?fù)洹⒕W(wǎng)絡(luò)上多個網(wǎng)絡(luò)部件的位置、網(wǎng)絡(luò)組成的位置、網(wǎng)絡(luò)組成包括網(wǎng)絡(luò)的至少一個用戶和網(wǎng)絡(luò)管理器。在這些實施例的一些中,網(wǎng)絡(luò)
18管理器根據(jù)網(wǎng)絡(luò)狀態(tài)配置網(wǎng)絡(luò)部件。在這些實施例的一些中,根據(jù)網(wǎng)絡(luò)組成提供的信息生成網(wǎng)絡(luò)概觀,并且其中某些網(wǎng)絡(luò)組成可訪問網(wǎng)絡(luò)概觀的多個部分。在這些實施例的一些中,網(wǎng)絡(luò)部件包括交換機。在這些實施例的一些中,網(wǎng)絡(luò)部件包括路由器。在這些實施例的一些中,網(wǎng)絡(luò)管理器分散在多個網(wǎng)絡(luò)部件間。在這些實施例的一些中,網(wǎng)絡(luò)實體包括通過網(wǎng)絡(luò)提供的服務(wù)。在這些實施例的一些中,網(wǎng)絡(luò)實體包括應(yīng)用。這些實施例中的一些實施例還包括向應(yīng)用提供訪問網(wǎng)絡(luò)管理器的所選功能的網(wǎng)絡(luò)操作系統(tǒng)。在這些實施例的一些中,所選功能包括網(wǎng)絡(luò)概觀。在這些實施例的一些中,所選功能包括事件通知功能。在這些實施例的一些中,事件通知功能提供網(wǎng)絡(luò)拓?fù)渥兓耐ㄖT谶@些實施例的一些中,事件通知功能提供用戶日志事件的通知,包括登錄和退出事件。在這些實施例的一些中,事件通知功能提供流發(fā)起的通知。在這些實施例的一些中,網(wǎng)絡(luò)管理器根據(jù)網(wǎng)絡(luò)狀態(tài)的變化,重新配置交換機。在這些實施例的一些中,交換機被重新配置,以建立與數(shù)據(jù)流相關(guān)的新的轉(zhuǎn)發(fā)行為。在這些實施例的一些中,利用訪問控制列表重新配置交換機。在這些實施例的一些中,利用OpenFlow重新配置交換機。在這些實施例的一些中,利用OpenFlow重新配置交換機。在這些實施例的一些中,網(wǎng)絡(luò)管理器檢測并自動提供配置信息給新增加的網(wǎng)絡(luò)部件。在這些實施例的一些中,配置信息包括一個或多個網(wǎng)絡(luò)地址。在這些實施例的一些中,配置信息包括一個或多個路由表。在這些實施例的一些中,配置信息包括一個或多個訪問控制列表。在這些實施例的一些中,配置信息包括網(wǎng)絡(luò)概觀的一部分。這些實施例的一些實施例還包括在先網(wǎng)絡(luò)狀態(tài)的歷史,所述歷史記錄網(wǎng)絡(luò)狀態(tài)的變化和導(dǎo)致網(wǎng)絡(luò)狀態(tài)的變化的事件。在這些實施例的一些中,網(wǎng)絡(luò)的狀態(tài)還包括分組分類、 語言綁定、網(wǎng)絡(luò)實體的位置、數(shù)據(jù)流的路由信息和拓?fù)渲械囊粋€或多個。在這些實施例的一些中,網(wǎng)絡(luò)的狀態(tài)還包括與數(shù)據(jù)流的狀態(tài)對應(yīng)的信息。在這些實施例的一些中,網(wǎng)絡(luò)組成包括網(wǎng)絡(luò)部件,并且與每個數(shù)據(jù)流的狀態(tài)對應(yīng)的信息由與每個數(shù)據(jù)流相關(guān)的網(wǎng)絡(luò)部件維護。本發(fā)明的一些實施例提供網(wǎng)絡(luò)操作系統(tǒng)。這些實施例的一些實施例包含描述網(wǎng)絡(luò)的當(dāng)前狀態(tài)的網(wǎng)絡(luò)概觀,其中網(wǎng)絡(luò)的狀態(tài)包括當(dāng)前網(wǎng)絡(luò)拓?fù)?、網(wǎng)絡(luò)上多個網(wǎng)絡(luò)部件的位置、 網(wǎng)絡(luò)組成的位置、網(wǎng)絡(luò)組成包括網(wǎng)絡(luò)的至少一個用戶、向安裝在網(wǎng)絡(luò)組成上的應(yīng)用提供對網(wǎng)絡(luò)概觀的訪問的編程接口,和對應(yīng)用來說可訪問,并且提供對與當(dāng)前網(wǎng)絡(luò)狀態(tài)相關(guān)的信息的訪問的一組網(wǎng)絡(luò)服務(wù)。在這些實施例的一些中,信息包括分組分類、語言綁定、網(wǎng)絡(luò)實體的位置、數(shù)據(jù)流的路由信息和拓?fù)渲械囊粋€或多個。本發(fā)明的一些實施例提供管理網(wǎng)絡(luò)連接的系統(tǒng)和方法。這些實施例中的一些實施例包括識別網(wǎng)絡(luò)中的流,流識別數(shù)據(jù)的源和目的地,配置一個或多個網(wǎng)絡(luò)部件以把來自源的數(shù)據(jù)引導(dǎo)到目的地,其中配置至少一個網(wǎng)絡(luò)部件包括修改一個或多個網(wǎng)絡(luò)部件中的訪問控制列表(“ACL”)。在這些實施例的一些中,配置至少一個網(wǎng)絡(luò)部件還包括為所述至少一個網(wǎng)絡(luò)部件之一生成ACL。在這些實施例的一些中,至少一個網(wǎng)絡(luò)部件包括交換機。在這些實施例的一些中,交換機包括片上交換機(“SoC”),并且其中修改ACL的步驟包括把生成的ACL增加到SoC中的ACL表中。在這些實施例的一些中,ACL表駐留于SoC中。在這些實施例的一些中,ACL表駐留在與交換機中的處理器相關(guān)的存儲器中。在這些實施例的一些中,配置至少一個網(wǎng)絡(luò)部件還包括向生成的ACL提供期滿期。在這些實施例的一些中,配置至少一個網(wǎng)絡(luò)部件還包括向ACL提供期滿期。
19
在這些實施例的一些中,修改訪問控制列表包括重新配置一個或多個網(wǎng)絡(luò)部件中的ACL表中的條目的排列。在這些實施例的一些中,識別流包括維護網(wǎng)絡(luò)的當(dāng)前狀態(tài)的網(wǎng)絡(luò)概觀,網(wǎng)絡(luò)的當(dāng)前狀態(tài)表征網(wǎng)絡(luò)組成和網(wǎng)絡(luò)拓?fù)?,網(wǎng)絡(luò)組成包括網(wǎng)絡(luò)上目前可尋址的網(wǎng)絡(luò)實體和網(wǎng)絡(luò)部件。本發(fā)明的一些實施例提供截取網(wǎng)絡(luò)業(yè)務(wù)的系統(tǒng)和方法。這些實施例中的一些實施例包括確定與網(wǎng)絡(luò)連接的主機的休眠狀態(tài),配置網(wǎng)絡(luò)部件以檢查指向該主機的數(shù)據(jù)通信, 依據(jù)檢測到數(shù)據(jù)通信中需要主機操作的信息,把數(shù)據(jù)通信的一部分轉(zhuǎn)發(fā)給主機,和如果數(shù)據(jù)通信不需要主機的操作,那么代表主機有選擇地應(yīng)答請求。在這些實施例的一些中,要求主機操作的信息包括一個或多個請求。在這些實施例的一些中,要求主機操作的信息包括一個或多個查詢。在這些實施例的一些中,要求主機操作的信息包括一個或多個報警。在這些實施例的一些中,要求主機操作的信息包括SSH業(yè)務(wù)。盡管參考具體的示例性實施例說明了本發(fā)明,不過對本領(lǐng)域的普通技術(shù)人員來說,顯然可對這些實施例做出各種修改和變化,而不脫離本發(fā)明的精神和范圍。因此,應(yīng)在說明性的而不是限制性的意義上看待說明書和附圖。
權(quán)利要求
1.一種管理網(wǎng)絡(luò)的方法,包括維護所述網(wǎng)絡(luò)的當(dāng)前狀態(tài)的概觀,所述網(wǎng)絡(luò)的當(dāng)前狀態(tài)表征網(wǎng)絡(luò)拓?fù)浜途W(wǎng)絡(luò)組成,所述網(wǎng)絡(luò)組成包括駐留在網(wǎng)絡(luò)中或駐留在網(wǎng)絡(luò)上的網(wǎng)絡(luò)實體和網(wǎng)絡(luò)部件;表征網(wǎng)絡(luò)實體的位置和身份;通告與網(wǎng)絡(luò)狀態(tài)的變化對應(yīng)的事件;和根據(jù)所述網(wǎng)絡(luò)概觀和/或所述事件中的一個或多個,配置所述網(wǎng)絡(luò)部件中的一個或多個。
2.按照權(quán)利要求1所述的方法,還包括在不利用SNMP的情況下訪問關(guān)于網(wǎng)絡(luò)部件的配置狀態(tài)。
3.按照權(quán)利要求1所述的方法,還包括維護在先網(wǎng)絡(luò)概觀的歷史。
4.按照權(quán)利要求1所述的方法,還包括維護在先網(wǎng)絡(luò)流和事件的歷史。
5.按照權(quán)利要求1所述的方法,還包括提供編程接口,所述編程接口允許管理應(yīng)用訪問所述網(wǎng)絡(luò)概觀、通信網(wǎng)絡(luò)事件,和配置網(wǎng)絡(luò)部件。
6.按照權(quán)利要求1所述的方法,還包括在多個服務(wù)器上托管虛擬機,其中所述虛擬機實現(xiàn)具有多個虛擬交換機的可控制交換機抽象,從而創(chuàng)建虛擬環(huán)境。
7.按照權(quán)利要求3所述的方法,還包括維護在先網(wǎng)絡(luò)流和事件的歷史。
8.按照權(quán)利要求7所述的方法,還包括進行對在先網(wǎng)絡(luò)概觀的歷史和在先網(wǎng)絡(luò)流和事件的歷史的取證分析。
9.按照權(quán)利要求1所述的方法,還包括有選擇地截取去往某些主機的業(yè)務(wù),所述某些主機按照功率降低模式工作,其中在截取到關(guān)鍵業(yè)務(wù)之前所述主機仍然維持在功率降低模式。
10.一種管理網(wǎng)絡(luò)業(yè)務(wù)的方法,包括執(zhí)行全局聲明的網(wǎng)絡(luò)策略,其中執(zhí)行全局聲明的網(wǎng)絡(luò)策略包括確保網(wǎng)絡(luò)部件采取的動作實現(xiàn)所述全局聲明的網(wǎng)絡(luò)策略,其中所述動作包括轉(zhuǎn)發(fā),并且其中所述全局聲明的網(wǎng)絡(luò)策略涉及高級名稱,與網(wǎng)絡(luò)拓?fù)錈o關(guān),并且與網(wǎng)絡(luò)組成的位置無關(guān)。
11.按照權(quán)利要求10所述的方法,還包括控制網(wǎng)絡(luò)業(yè)務(wù),其中實時地在逐流基礎(chǔ)上進行業(yè)務(wù)的控制。
12.按照權(quán)利要求10所述的方法,其中全局聲明的網(wǎng)絡(luò)策略由商用網(wǎng)絡(luò)交換機執(zhí)行, 并且其中利用商用網(wǎng)絡(luò)交換機的ACL能力實現(xiàn)所述策略。
13.按照權(quán)利要求10所述的方法,其中在無帶外通信的情況下實現(xiàn)所述執(zhí)行的步驟, 并且其中所有系統(tǒng)業(yè)務(wù)通過用于主機和服務(wù)器之間的通信的網(wǎng)絡(luò)數(shù)據(jù)路徑傳送。
14.按照權(quán)利要求10所述的方法,還包括有選擇地截取前往某些主機的業(yè)務(wù),所述某些主機按照功率降低模式工作,其中在截取到關(guān)鍵業(yè)務(wù)之前,所述主機仍然維持功率降低模式。
15.按照權(quán)利要求10所述的方法,還包括在多個服務(wù)器上托管虛擬機,其中虛擬機實現(xiàn)具有多個虛擬交換機的可控制交換機抽象,從而創(chuàng)建虛擬環(huán)境。
16.按照權(quán)利要求10所述的方法,還包括響應(yīng)一個或多個網(wǎng)絡(luò)事件,配置網(wǎng)絡(luò)部件。
17.—種管理網(wǎng)絡(luò)的方法,其中自動發(fā)現(xiàn)新的網(wǎng)絡(luò)組成,包括自動配置一個或多個部件,以適應(yīng)新網(wǎng)絡(luò)組成的存在。
18.按照權(quán)利要求17所述的方法,其中依據(jù)所述發(fā)現(xiàn),手工輸入新網(wǎng)絡(luò)組成的屬性,并且其中與這些屬性一致地進行配置步驟。
19.按照權(quán)利要求17所述的方法,其中所述配置步驟包括執(zhí)行全局聲明的策略。
20.按照權(quán)利要求17所述的方法,其中網(wǎng)絡(luò)組成包括VM和由VM托管的組成,并且其中服務(wù)器和其它網(wǎng)絡(luò)設(shè)備支持按照和物理網(wǎng)絡(luò)部件相同的方式可控制和可配置的虛擬交換機。
21.一種包括利用商用交換機的ACL能力路由大部分業(yè)務(wù)的方法。
22.—種智能截取前往主機的分組,從而在關(guān)鍵業(yè)務(wù)被發(fā)送給所述主機之前,使主機仍然維持在功率降低模式的方法。
23.一種有選擇地截取前往某些主機的業(yè)務(wù)的方法,所述某些主機按照功率降低模式工作,其中在截取到關(guān)鍵業(yè)務(wù)之前,所述主機仍然維持在功率降低模式。
24.按照權(quán)利要求23所述的方法,還包括確定是否把分組轉(zhuǎn)發(fā)給主機,其中所述確定由不在常規(guī)數(shù)據(jù)路徑上的控制器進行。
全文摘要
描述管理網(wǎng)絡(luò)的系統(tǒng)和方法。維護網(wǎng)絡(luò)的當(dāng)前狀態(tài)的概觀,其中網(wǎng)絡(luò)的當(dāng)前狀態(tài)表征網(wǎng)絡(luò)拓?fù)浜途W(wǎng)絡(luò)組成,所述網(wǎng)絡(luò)組成包括駐留在網(wǎng)絡(luò)中或網(wǎng)絡(luò)上的網(wǎng)絡(luò)實體和網(wǎng)絡(luò)部件。通告與網(wǎng)絡(luò)狀態(tài)的變化對應(yīng)的事件,并且能夠相應(yīng)地配置一個或多個網(wǎng)絡(luò)部件。描述了管理網(wǎng)絡(luò)業(yè)務(wù)的方法,所述方法確保網(wǎng)絡(luò)部件采取的轉(zhuǎn)發(fā)和其它動作實現(xiàn)全局聲明的網(wǎng)絡(luò)策略,并涉及高級名稱,而與網(wǎng)絡(luò)拓?fù)浜途W(wǎng)絡(luò)組成的位置無關(guān)。描述了發(fā)現(xiàn)網(wǎng)絡(luò)組成的方法,從而自動配置網(wǎng)絡(luò)組成。利用ACL可實現(xiàn)路由,能夠截取分組,以允許主機繼續(xù)保持休眠模式。這些方法適用于虛擬環(huán)境。
文檔編號H04L12/24GK102217228SQ200880116637
公開日2011年10月12日 申請日期2008年9月26日 優(yōu)先權(quán)日2007年9月26日
發(fā)明者B·L·帕夫, D·J·溫德蘭得特, J·皮提特, K·E·阿密頓, M·卡薩多, N·古德, P·J·巴爾蘭德三世, S·申科 申請人:Nicira網(wǎng)絡(luò)公司