OpenFlow: Enabling Innovation in Campus Networks
- 文章名稱:OpenFlow: Enabling Innovation in Campus Networks
- 文章來源:Mckeown N , Anderson T , Balakrishnan H , et al. OpenFlow: Enabling innovation in campus networks[J]. ACM SIGCOMM Computer Communication Review, 2008, 38(2):69-74.
ABSTRACT:
這篇白皮書提出了OpenFlow——一種可以讓研究人員在他們每天使用的網絡中運行實驗協議的方法。
OpenFlow基于一個以太網交換機、一個內部流表和一個標準化的接口來添加和刪除流條目。我們的目標是鼓勵網絡供應商將OpenFlow添加到他們的交換機產品中,以便部署在大學校園主干網和配線柜中。我們認為,OpenFlow是一種實用的方案:一方面,它允許研究人員以統一的方式、線速和高端口密度在異構交換機上運行實驗;另一方面,供應商不需要公開其交換機的內部工作。除了允許研究人員在真實世界的流量設置中評估他們的想法之外,OpenFlow還可以作為一個有用的校園組件,用于像GENI這樣的大型測試平臺。斯坦福大學的兩棟大樓不久將使用商業以太網交換機和路由器運行OpenFlow網絡,我們也將鼓勵OpenFlow在其他學校部署,鼓勵您考慮在您的大學網絡中部署OpenFlow。
1. THE NEED FOR PROGRAMMABLE? NETWORKS:
網絡已經成為企業、家庭和學校重要基礎設施的一部分。
這一成功對網絡研究人員來說是把雙刃劍——他們的工作更具相關性,但他們產生影響力的機會也更為渺茫。任何特定網絡創新對現實世界影響的降低,都是因為需要設備和協議的龐大安裝基礎,以及不愿意試驗生產流量,這種環境給新思想的引入創造了極高的障礙。今天,幾乎沒有任何實際的方法,能夠在足夠真實的設置(例如,大規模承載真實流量)中試驗新的網絡協議(例如,新的路由協議,或IP的替代方案),很難獲得其廣泛部署所需的信心,因此網絡研究界的大多數新想法都未經試驗和測試。有鑒于此,人們普遍認為網絡基礎設施已經“僵化”。
認識到這一問題后,網絡界開始努力開發可編程網絡,例如GENI。
這是一個被建議的全國性研究設施,用于試驗新的網絡結構和分布式系統。這些可編程網絡要求可編程交換機和路由器(使用虛擬化)可以同時處理多個孤立實驗網絡的數據包。例如,在GENI中,設想研究員將在整個網絡中分配一片資源,其中包括網絡中的一部分鏈路、分組處理元件(例如路由器)和終端主機,研究人員對其片進行編程,使其按自己的意愿工作,一“片”可以貫穿主干網、接入網、大學校園、工業研究實驗室,包括布線柜、無線網絡和傳感器網絡。虛擬化可編程網絡可以降低新思想進入的障礙,提高網絡基礎設施的創新速度。但是,在全國范圍內建設核設施的計劃雄心勃勃并且成本高昂,需要數年時間才可能部署。
這篇白皮書關注的是一個更貼近的短期問題:作為研究人員,我們如何在校園網絡中運行實驗?如果我們能想出辦法,我們可以很快開始并將這項技術推廣到其他校園,以造福整個社區。但是為了應對這一挑戰,有幾個問題需要回答,包括:在早期,高校網絡管理者將如何舒適地將實驗設備(交換機、路由器、接入點等)放入他們的網絡?研究人員將如何控制本地網絡的一部分,而不干擾其他依賴它的人?網絡交換機究竟需要什么功能才能進行實驗呢?我們的目標是提出一個新的交換特性,可以把可編程性延伸至大學校園布線柜。
我們不打算說服商業“名牌”設備供應商在他們的交換機和路由器上提供一個開放的、可編程的、虛擬化的平臺,盡管這樣便于研究人員部署新的協議,讓網絡管理員可以確保設備得到了很好的支持,但是這種結果在短期內顯然是不太可能的——商業交換機和路由器通常不提供開放的軟件平臺,更不用說提供虛擬化其硬件或軟件的手段。商業網絡的標準化的外部接口很窄(即僅僅是包轉發),而交換機的所有內部靈活性都是隱藏的,不同廠商的內部結構不同,沒有標準的平臺供研究人員試驗新的想法。此外,網絡設備供應商對在他們的盒子里打開接口會感到緊張,他們花了多年時間部署和調整脆弱的分布式協議和算法,他們有理由擔心新的實驗會導致網絡崩潰。
當然,開放平臺降低了新競爭對手的進入門檻,一些開放的軟件平臺已經存在,只不過沒有我們需要的理想的性能或端口密度。最簡單的例子是一臺具有多個網絡接口和一個操作系統的PC機。所有著名的操作系統都支持接口之間的數據包路由,并且存在路由協議的開源實現(例如,作為Linux發行版的一部分,或來自XORP),并且在大多數情況下可以通過修改操作系統,用幾乎任何方式來處理數據包(例如,使用Click),問題在于性能——一臺PC既不能支持大學布線機柜所需的端口數量(每個機箱需要100個以上端口的扇形分叉),也不能支持數據包處理性能(布線機柜交換機處理超過100Gbit/s的數據,而一臺典型的PC很難做到超過1Gbit/s,兩者之間的差距正在擴大),并且現有的帶專門硬件的線速處理平臺也不太適合大學布線柜。例如,華盛頓大學(Washington University)正在開發一種基于ATCA的虛擬可編程路由器,名為Supercharged Planetlab Platform,它可以使用網絡處理器以線速同時處理來自多個接口的數據包。從長遠來看,這種方法是有希望的,但目前只能針對大型交換中心,對于在大學布線柜中廣泛部署來說成本太高。另一個極端是Netfpga,目標是用于教學和研究實驗室。Netfpga是一種低成本的PCI卡,具有用戶可編程的處理數據包的FPGA和4端口千兆以太網。但是Netfpga僅限于四個網絡接口,也不足以在布線柜中使用。
因此,商業解決方案過于封閉和僵化,研究解決方案要么性能不足,要么成本過高,研究完全的通用性解決方案似乎不能克服其性能或成本限制。一種更有前途的方法是在通用性上妥協,并尋求一定程度上更靈活的交換機,即:
- 易于高性能和低成本實現。
- 能夠支持廣泛的研究。
- 確保將實驗流量與生產流量隔離。
- 符合供應商對封閉平臺的需求。
本文描述的OpenFlow Switch規范,它是實現這四個目標的初步嘗試。
2. THE OPENFLOW SWITCH:
OpenFlow Switch的基本思想很簡單:利用了這樣一個事實,大多數現代以太網交換機和路由器都包含以線速運行的流表(通常由TCAM構建),以實現防火墻、NAT、QOS和收集統計數據。雖然每個供應商的流程表不同,但我們已經確定了在許多交換機和路由器中運行的一組有趣的通用函數。OpenFlow利用了這組常見的函數,Openflow提供了一個開放的協議,可以在不同的交換機和路由器中編程流表。網絡管理員可以將流量劃分為生產和研究流,研究人員可以選擇他們的數據包遵循的路徑和處理方法,以此控制他們自己的流量。通過這種方式,研究人員可以嘗試新的路由協議、安全模型、尋址方案,甚至IP的替代方案。在同一個網絡上,生產流量被隔離,并以與今天相同的方式進行處理。OpenFlow交換機的數據路徑由一個流表和與流條目相關聯的操作組成,并且OpenFlow交換機支持的操作集是可擴展的。
但下面我們將描述交換機的最低要求,對于高性能和低成本,數據路徑必須具有精心指定的靈活性,這意味著要放棄指定對每個包的任意處理的能力,并尋求更有限但仍然有用的操作范圍。因此,本文后面將定義所有OpenFlow交換機所需的基本操作集,OpenFlow交換機至少由三部分組成:
- 一個流表,其中包含與每個流條目相關聯的操作,以告訴交換機如何處理流。
- 一個連接交換機和遠程控制器的安全通道,用來在兩者之間傳輸命令與數據包。
- 發送命令和數據包的OpenFlow協議,OpenFlow協議為控制器與交換機通信提供了一種開放和標準的方式,通過指定一個標準接口(OpenFlow協議)實現在外部定義流表中的條目,避免了研究人員對交換機進行編程的需要。
很有必要對交換機進行分類,一種是OpenFlow專用交換機,不支持標準的二層、三層網絡處理。另一種是OpenFlow通用交換機,支持標準的二層、三層網絡處理,同時具備OpenFlow的新特性。
Dedicated OpenFlow switches
專用OpenFlow交換機是一個啞的數據路徑元素,它僅僅是在端口之間轉發數據包,被遠程控制進程所定義。圖1顯示了一個OpenFlow交換機的示例。
在這種情況下,流被廣泛定義,并且僅受到流表特定實現的能力的限制。例如,流可以是TCP連接,或者來自特定MAC地址或IP地址的所有數據包,或者具有相同VLAN標記的所有數據包,或者來自相同交換機端口的所有數據包。對于涉及非IPV4數據包的實驗,流可以定義為與特定的頭匹配的所有數據包。
每個流表項都有一個與之關聯的簡單操作,以下是三個最基本的操作(所有專用OpenFlow交換機都必須支持):
- 將此流的數據包轉發到給定端口。這要允許路由數據包通過網絡,在大多數交換機中,這種情況預計會以線速發生。
- 封裝此流的數據包并將其轉發到控制器。數據包被傳送到安全通道,在那里被封裝并發送到控制器。這通常用于新流中的第一個數據包,控制器因此可以決定是否應將該流添加到流表中,或者在一些實驗中,它可以用來將所有數據包轉發給控制器進行處理。
- 丟棄此流的數據包。可用于安全性、抑制拒絕服務攻擊或減少來自終端主機的虛假廣播發現通信量。
流表中的每個流表項有三個字段:
- 定義流的數據包頭
- 定義應如何處理數據包的操作
- 跟蹤每個流的數據包數和字節數以及自上次數據包與流匹配以來的時間的統計信息(幫助刪除非活動流)。
在第一代“type 0”交換機中,流頭是表1所示的10元組。
TCP流可以由所有10個字段指定,而IP流的定義中可能不包含傳輸端口。每個頭字段都可以是通配符,以允許流的聚合,例如只定義VLAN ID一個字段代表屬于此特定VLAN的所有流量。
OpenFlow-enabled switches
通過添加流表、安全通道和Openflow協議,OpenFlow將增強一些商業交換機、路由器和接入點的特性。通常,流表將重用現有硬件,如TCAM,安全通道和協議將被移植到交換機的操作系統上運行。圖2顯示了一個網絡的OpenFlow商業交換機和接入點。
?
在本例中,所有的流表都由同一個控制器管理,OpenFlow協議允許一個交換機由兩個或多個控制器控制,以提高性能或健壯性。我們的目標是使實驗能夠在現有的生產網絡中與常規流量和應用程序一起進行。因此,為了贏得網絡管理員的信任,啟用OpenFlow的交換機必須將實驗流量(由流表處理)與生產流量(由交換機的正常第2層和第3層管道處理)隔離開來。
實現這種分離有兩種方法:
- 一是增加第四個動作:通過交換機的正常處理管道轉發此流的數據包。
- 另一個是為實驗和生產流量定義單獨的VLAN集。
這兩種方法都允許交換機以通常的方式處理不屬于實驗的正常生產流量,所有啟用OpenFlow-enabled的交換機都需要支持一種或另一種方法,有些將同時支持這兩種方法。
Additional features
如果一個交換機支持頭格式和上面提到的四個基本操作(在OpenFlow交換機規范中有詳細說明),那么我們稱它為“type 0”交換機。我們期望許多交換機將支持額外的操作,例如重寫包頭的部分(例如,對于NAT,或混淆中間鏈路上的地址)并將包映射到優先級類。同樣,一些流表將能夠匹配數據包頭中的任意字段,從而能夠使用新的非IP協議進行實驗。當一組特定的特性出現時,我們將定義一個“類型1”交換機。
Controllers
控制器代表實驗從流表中添加和刪除流條目,例如,靜態控制器可能是一個運行在PC上的簡單應用程序,用于靜態地建立流,以便在實驗期間將一組測試的計算機互連。在這種情況下,流類似于當前網絡中的VLAN——提供了一種簡單的機制來將實驗流量與生產網絡隔離。從這個角度OpenFlow是Vlan的一個泛化。人們還可以想象,隨著實驗的進行,會有更復雜的控制器動態地添加或移除流,在一個使用模型中,研究人員可以控制OpenFlow交換機的整個網絡,并自由決定如何處理所有流。一個更復雜的控制器可能有多個研究人員,每個人都有不同的帳戶和權限,使他們能夠在不同的流集合上運行多個獨立的實驗。被確定為在特定研究人員控制下的流(例如,通過在控制器中運行的策略表)可以被傳遞到研究人員的用戶級控制程序,然后該程序決定是否應將新的流條目添加到交換機網絡中。
3. USING OPENFLOW:
如何使用OpenFlow交換機的一個簡單例子:
假設Amy(一位研究人員)發明了Amy OSPF作為一種新的路由協議來代替OSPF,她想在一個由OpenFlow交換機組成的網絡中嘗試她的協議,而不需要更改任何終端主機軟件。Amy OSPF將在一個控制器中運行,每當一個新的應用程序流啟動時,Amy OSPF將通過一系列OpenFlow交換機選擇一條路由,并在路徑上的每個交換機中添加一個流條目。在她的實驗中,Amy決定從她自己的臺式電腦中使用Amy OSPF的流量進入OpenFlow網絡,所以她不中斷網絡,也不會影響其他人。為此,她將一個流定義為通過PC連接的交換機端口進入OpenFlow交換機的所有流量,并添加一個流條目,其操作為“將所有數據包封裝并轉發到控制器”。當她的數據包到達控制器時,她的新協議選擇一條路由,并將一個新的流條目(用于應用程序流)添加到沿所選路徑的每個交換機,因此當隨后的數據包到達交換機時,它們會被流表快速地(以行速率)處理。
對于一個在實驗過程中動態添加和刪除流的控制器的性能、可靠性和可伸縮性,會有一些合理的問題:比如這樣的集中式控制器是否能夠足夠快地處理新的流并對流交換機進行編程?當控制器發生故障時會發生什么?在某種程度上,這些問題是在Ethane原型的背景下解決的,該原型使用簡單的流交換機和中央控制器。初步結果表明,基于低成本臺式PC機的Ethane控制器每秒可以處理10000多個新的流量,足夠一個大型大學校園使用。當然,新流程的處理速度將取決于研究人員實驗所需處理的復雜性,但它讓我們相信有意義的實驗是可以進行的,通過使控制器無狀態,允許在多個獨立設備上進行簡單的負載平衡,可以實現可伸縮性和冗余性。
Experiments in a Production Network
很有可能,Amy正在很多人使用中的網絡里測試她的新協議,因此會希望網絡有兩個額外的屬性:
- 屬于除了Amy以外的用戶的數據包應使用在交換機或路由器中運行的標準,且經過測試的路由協議從“名牌”供應商的設備里進行路由。
- Amy應該只能對她的流量或網絡管理員允許她控制的流量來添加流量條目。
屬性1是通過啟用OpenFlow的交換機實現的,在Amy的實驗中,所有不是來自Amy電腦的數據包的默認操作是通過正常的處理管道轉發。Amy自己的數據包將直接轉發到傳出端口,而不會被正常的管道處理。
屬性2取決于控制器,控制器應被視為使研究人員能夠實現各種實驗的平臺,并且可以通過適當設置使用權限或其他方式來限制單個研究人員控制流入口的權限,以此來實現屬性2的限制。這些類似權限的機制的確切性質將取決于控制器的實現方式,我們預計會出現各種各樣的控制器。作為控制器具體實現的一個例子,一些作者正在研究一個名為NOX的控制器,作為Ethane的后續工作,通過將GENI管理軟件擴展到OpenFlow網絡,可能會出現一個完全不同的控制器。
More Examples
與任何實驗平臺一樣,實驗集或許將超過我們預想——OpenFlow網絡中的大多數實驗還沒有想到。這里為了舉例說明,我們提供了一些示例,說明如何使用OpenFlow-Enabled網絡來試驗新的網絡應用程序和體系結構。
Example1 網絡管理與訪問控制:
首先我們使用Ethane作為第一個例子,正是因為它的研究才啟發了OpenFlow,事實上OpenFlow可以看作是Ethane的普遍化。Ethane使用特殊實現的控制器,適用于網絡管理與控制,通過它管理流的準入與路由。基本思路是這樣的,允許網絡管理員在中心控制器上定義適用于全網的策略,控制器利用此策略中定義的規則控制交換機,從而控制流的準入與路由。策略中的規則可能是諸如“允許訪客使用http但必需經過某個代理”或者是“不允許VoIP電話與便攜電腦通信”等。控制器通過綁定名稱服務與地址服務等實現數據包與發送者的關聯。本質上控制器接管了DNS、DHCP與認證服務,當一個用戶接入網絡時追蹤其MAC地址、所連接的交換機端口或者接入設備、是否認證等信息。這些特征值被用來在定義策略時匹配一個用戶的包。試想對Ethane的一種擴展,在控制器中指定一條策略,指示網絡將特定的流發送給某個用戶進程,從而實現研究者指定的特殊處理。?
Example2? VLANs:
OpenFlow能夠很容易的為用戶提供獨立網絡,就像VLAN一樣。最簡單的方法是創建一系列的流,這些流的包從特定端口進入網絡,然后在流表的流表項中為其指定行為,行為會為這一系列的流添加指定的VLAN ID。或者是通過端口及MAC地址標識單個用戶并為其指定VLAN ID。 一種更動態的方法可能是像Ethane所作的一樣,跟蹤某個用戶接入網絡的過程,從而可以知道其具體的位置信息,進而在運行時動態的標識其流量。?
Example 3? 移動終端的VOIP客戶端WIFI網絡切換:
用戶使用手機中的VOIP客戶端通話時,通過一個特別實現的控制器跟蹤其位置,當用戶從一個WIFI網絡移動到另一個WIFI網絡時,VOIP客戶端重新與新的接入設備建立鏈拉,而控制器通過OpenFlow功能控制其路由,從而實現通話不中斷的無縫切換。
Example 4? 非IP網絡:
目前為止,我們的示例都發生在IP網絡中,但OpenFlow并沒有對包的具體格式提出任何要求,只要包頭能與流表中的流表項能夠匹配即可,這就允許對新的名稱、尋址、路由方案展開實驗。OpenFlow通用交換機有數種方法支持非IP流量。例如,通過以太網楨的頭部(源、目的MAC地址)以及一個新的以太網楨類型,或者是在IP層為數據包指定一個新的版本號。更一般的,我們希望將來的交換機允許控制器創建通用掩碼(偏移+值+掩碼),允許包按研究者指定的方式處理。?
Example 5? 處理包而非流:
以上示例都涉及到流,當流開始時由控制器決策如何處理。當然,也存在一些有趣的實驗,要求每一個包都被處理。例如,檢測每一個包的入侵偵測系統,一個顯式擁塞控制機制,或者修改包內容:將其從一種格式轉換成另一種格式。? 在OpenFlow通用交換機網絡中有兩種處理包的方法。首先,也是最簡單的,強制所有流的包通過特定控制器。這樣做的話,控制器不會向流表中添加任何一條流表項,只是默認交換機將所有的包轉發到控制器。這種方法相當靈活,但需以性能為代價。它可能為新協議的實驗提供了一種有效的途徑,但不大可能在大型網絡中部署。? 第二種處理包的方法是將它們路由到可編程的交換機中,例如基于NetFPGA可編程路由器,并在那里進行包處理。好處是包能夠以用戶定義的方式被線速處理。
如圖三所示,本質上OpenFlow通用交換機充當了允許包到達NetFPGA的一塊插板,某些情況下NetFPGA板(PCI板,可直接插入到計算機的卡槽中)有可能與OpenFlow通用交換機一起放置在配線間,更有可能是實驗室。
4. THE OPENFLOW CONSORTIUM:
OpenFlow聯盟旨在推廣OpenFlow并維護OpenFlow交換機的規范,該聯盟是一個由大學和學院的研究人員和網絡管理員組成的團體,他們相信如果在他們的網絡中安裝支持OpenFlow的交換機,他們的研究任務將得到加強。會員資格對世界各地的學校、學院、大學或政府機構的任何人開放和免費,OpenFlow聯盟歡迎那些沒有受雇于生產或銷售以太網交換機、路由器或無線接入點的公司的個人成員(因為我們希望讓聯盟免受供應商的影響)。若要加入,請發送電子郵件至join@openflow switch.org,財團網站包含oOpenFlow交換機規范、財團成員列表和OpenFlow交換機的參考實現。
許可模式:OpenFlow交換機規范對所有商業和非商業用途都是免費的,(確切的措辭在網站上)聲稱“啟用OpenFlow”的商業交換機和路由器必須符合OpenFlow Type 0交換機的要求。正如OpenFlow交換機規范中定義的那樣,OpenFlow是斯坦福大學的商標,將代表財團受到保護。
5. DEPLOYING OPENFLOW SWITCHES:
我們相信,網絡設備供應商有一個有趣的市場機會,可以向研究界出售支持OpenFlow的交換機。數千所高校的每一棟樓都有帶以太網交換機和路由器的布線柜,以及遍布校園的無線接入點,我們正在積極與一些交換機和路由器制造商合作,他們正在通過在現有硬件中實現一個流表,將OpenFlow特性添加到他們的產品中,也就是說可以不需要更改硬件,交換機在其現有處理器上運行安全通道軟件。
我們發現網絡設備供應商對添加OpenFlow特性的想法非常開放,大多數供應商希望支持研究社區而不必公開其產品的內部工作原理。我們正在斯坦福大學計算機科學和電子工程系部署大型OpenFlow網絡,兩棟樓的網絡將被運行OpenFlow的交換機所取代。最終,所有流量將在OpenFlow網絡上運行,生產流量和實驗流量將在網絡管理員的控制下隔離在不同的VLAN上。研究人員將控制自己的流量,并能夠添加或者刪除流量條目。
我們也希望能夠通過研究組織,開發多種不同的OpenFlow交換機。在OpenFlow的網站中,“Type 0”交換機在幾個不同的平臺被設計:Linux操作系統(軟件),OpenWRT的(軟件,接入點),和NetFPGA(硬件,4個端口每GE)。隨著越來越多的設計出現,我們將會在社區里發布。我們鼓勵開發人員對照參考設計,測試他們的交換機。 所有張貼在網站上的,關于OpenFlow交換機的參考實現將是開源和免費的,可以用于商業和非商業用途
6. CONCLUSION
我們認為OpenFlow是一種實用的折衷方案,它允許研究人員以統一的方式在異構交換機和路由器上運行實驗,而不需要供應商公開其產品的內部工作,也不需要研究人員編寫特定于供應商的控制軟件。如果我們成功地在我們的校園中部署了OpenFlow網絡,我們希望OpenFlow能逐漸在其他大學流行起來,以增加支持實驗的網絡數量。我們也希望新一代的控制軟件出現,使研究人員能夠重復使用控制器和實驗,并在其他人的工作基礎上進一步發展。隨著時間的推移,我們希望不同大學的OpenFlow網絡將通過隧道技術和覆蓋網絡相互連接,也許還將通過運行在主干網絡中的新的OpenFlow網絡來連接大學。
轉載于:https://www.cnblogs.com/chelinger/p/11528064.html
總結
以上是生活随笔為你收集整理的OpenFlow: Enabling Innovation in Campus Networks的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HBuilderX 连接电脑的模拟器问题
- 下一篇: 让人迷茫的三十岁,从专业技能、行业知识和