FlowVisor是建立在OpenFlow之上的網絡虛擬化平臺,它可以將物理網絡分成多個邏輯網絡,從而實現開放軟件定義網絡(SDN)。它為管理員提供了廣泛定義規則來管理網絡,而不是通過調整路由器和交換機來管理網絡。
FlowVisor安裝在商品硬件上,它是一個特殊的OpenFlow控制器,主要是作為OpenFlow交換機網絡和其他標準OpenFlow控制器之間的透明代理。雖然FlowVisor仍被認為處于試驗階段,并且缺乏一些基本功能(例如命令行管理工具),但FlowVisor已經被部署在很多生產環境中,例如從2009年開始應用于斯坦福大學的校園網絡。
FlowVisor通過抽象層來分割物理網絡,它位于一組交換機和軟件定義網絡或多個網絡之間,管理帶寬、CPU利用率和流量表,這類似于管理程序位于服務器硬件和軟件之間,以允許多個虛擬操作系統運行。
正如管理程序依賴于標準x86指令來虛擬化服務器一樣,FlowVisor使用標準OpenFlow指令集來管理OpenFlow交換機,這些指令設置了低級別規則,比如如何基于數據包表頭中的特點來轉發數據包。
由于所有這些規則都是通過流量表定義的,因此,無論是從帶寬還是CPU使用率來看,網絡虛擬化都沒有增加很多開銷或者幾乎沒有增加開銷,不過另外需要設置和修改流量表規則的單獨的帶外物理控制器。
切片
FlowVisor網絡的基本要素是網絡切片,網絡切片是由一組文本配置文件來定義的。文本配置文件包含控制各種網絡活動的規則,例如允許、只讀和拒絕,其范圍包括流量的來源IP地址、端口號或者數據包表頭信息。
例如,網絡管理員可以將安全的Telnet流量(默認端口992)分配到其自身的切片,將執行團隊IP地址的流量分配到另一個切片。然后他可以創建第三個默認切片來管理所有其他流量,把它當做“只讀”切片來監控其他三個切片,以達到診斷目的。網絡管理員可以動態地重新分配和管理這些切片,以確保瀏覽YouTube的人不會對Telnet應用程序和執行團隊帶寬造成負面影響。
切片隔離是FlowVisor虛擬化的重要組成部分,但它仍然在處于發展中。在近日發表的一篇描述FlowVisor愿景和部署的學術文章中,作者呼吁進行嚴密的交換機與CPU隔離,但由于目前只能通過OpenFlow對交換機CPU進行間接管理,導致該功能被限制。鑒于這些限制和功能,FlowVisor按照以下五個規格(出自該OpenFlow技術報告)來進行虛擬化和隔離:
• 帶寬:每個切片應該具有專門的總可用帶寬百分比。
• 拓撲結構:每個切片對于網絡節點(包括物理和虛擬交換機及路由器)應該有自己的“看法”。切片的組成部分應該是不知道切片的:對于控制器而言,FlowVisor看起來就是普通的交換機;從OpenFlow交換機的角度來看,FlowVisor就是一個控制器。
• 流量:根據上述規則設置,流量應該嚴密地始終如一地隔離到一個特定切片或者多個切片。
• 設備CPU:重載物理交換機可以丟掉緩慢路徑的數據包。網絡管理員會更新OpenFlow統計計數器和規則,所以在評定限速密集命令時,FlowVisor應該考慮CPU資源。
• 轉發表:由于轉發表往往被限定在物理設備上,網絡管理員應確保一個切片不會影響任何特定設備的轉發表,迫使它放棄另一切片的規則。