在前面兩篇文章:網路虛擬化之flowvisor:網路虛擬層(上)和網路虛擬化之flowvisor:網路虛擬層(中)中分別介紹了flowvisor的特性和實現,三**的最後一篇介紹虛擬網路的隔離機制。
虛擬化的乙個重要元素是切片之間的隔離,因為不同資源的隔離機制是不相同的,接下來將分別描述。
1. 頻寬隔離
flowvisor可以通過標記資料報的vlan優先順序位元位來利用現存的交換機頻寬隔離特性。vlan標籤擁有三個位元域,pcp(vlan priority code point)有乙個將資料報對映到八個優先順序佇列中的其中乙個的標準機制,openflow協議裡面有對vlan標籤和優先順序位元的管理,所以可以給流中的所有資料報乙個優先順序。
因為,為了增強頻寬隔離,flowvisor重寫了所有切片的**表,加了乙個「set vlan priority」的操作,將優先順序置為八個優先順序佇列中的某乙個,乙個虛擬網路例項中的所有流根據資源分配策略對映到相應的流組(流組需要網路管理員通過cli定義)
使用vlan pcp位元位並不是flowvisor所固有的,而是為了和商用硬體協調工作所選擇的短期變通方案。
2. 拓撲隔離
控制器通過openflow協議發現網路中的結點和鏈路,在非虛擬網路中,當乙個網路裝置連線到控制器的tcp監聽埠的時候,控制器就可以發現這個裝置。flowvisor作為交換機和控制器中間的乙個**,他只**使用者虛擬網路中的交換機和控制器的連線,同理,用於羅列交換機所有物理埠的openflow訊息,也會被flowvisor攔截,修改為只有虛擬網路中有的埠。
3. 交換機cpu隔離
商用交換機上的cpu都是典型的低功耗嵌入式處理器,因此很容易過載,在大多數交換機硬體中,乙個高負載的cpu會導致嚴重的網路破壞。比如,乙個cpu高負載的情況下,硬體**資料會繼續進行,但是交換機會停止響應控制器的openflow請求,導致lldp鏈路發現協議超時,讓交換機誤以為網路連線非常不穩定,網路變得不可用。
交換機的cpu負載主要被下面四種程式瓜分,這四個負載**需要不同的隔離機制:
產生新流到達的訊息:在openflow交換機中,如果乙個資料報無法匹配流表,就會向控制器傳送packetin訊息,這個過程消耗了一部分處理資源,如果新流比較多,訊息產生很頻繁,cpu資源就會耗盡。為了防止餓死,flowvisor會追蹤新流產生的訊息到達速率,如果速率超過了閾值,flowvisor插入一條**流表規則在乙個時間段內丟棄所有的資料報,就這樣,flowvisor利用openflow協議限制了新流的速度。
處理控制器的請求:對於每個虛擬網路例項,flowvisor通過限制openflow訊息速率來限制cpu消耗,因為不同型別的訊息消耗不同的cpu資源,因此這個工作現在還略顯不足。
「慢路徑」**:除了很快的專用的硬體**路徑,資料報通過「慢路徑」**,這當然會消耗一部分cpu資源,而這個消耗顯然是不確定的。flowvisor通過重寫多個**規則,將他們分開,分別為為一次資料報**事件來防止控制器一次插入多個「慢路徑」**規則,比如openflow的packetout訊息,他可以一次下發很多**規則,但是flowvisor可以攔截,將其分為多個。這樣,「慢路徑」資料報會通過上面提到的兩條機制:新流產生的訊息和控制器的請求來限速。
維持內部狀態:所有的網路裝置會使用cpu去更新他們的內部計算器、處理事件等等,所以必須留有足夠的cpu給交換機「記賬」。flowvisor通過限制上面三點的cpu消耗來保障交換機有足夠的資源執行內部功能。
和頻寬隔離一樣,cpu隔離機制不是flowvisor固有的設計,更像是乙個解決現在硬體抽象問題的應急措施,這個方面未來還需要做很多任務作。
4. 流空間隔離
每個虛擬網路只能處理他們流空間中的資料流,flowvisor對openflow訊息進行重寫,確保每個切片之恩那個控制他自己的流,不能影響別的切片的流。當然,不是所有的規則都能夠被重寫來滿足某個切片的流空間,flowvisor只能讓規則更加詳細精確,比如在網路虛擬化之flowvisor:網路虛擬層(中)這篇文章中用於描述flowvisor工作原理的例子中,如果bob的控制器想建立乙個規則去影響所有的流,flowvisor應該重寫規則讓其只影響tcp資料流。但是flowvisor不會重寫影響22埠的資料流的規則,讓其只影響80埠(tcp資料流),在這種情況下,flowvisor會給控制器傳送乙個錯誤訊息。
5. 流表項隔離
flowvisor會統計每個虛擬網路使用的流表項數目,確保其不會超過乙個預先給定的值。對於控制器插入到交換機的的每個規則,flowvisor會給其計數器加一,如果某個流表到期失效,計數器會減一。由於硬體約束,一些交換機會內部擴充套件規則來滿足多個輸入埠,flowvisor需要處理這個情況。openflow協議為flowvisor協議提供了乙個機制來精確的列出交換機中的所有流表項,當控制器超出了流表項預先給定的值,任何新的規則插入都只會收到「table full」的錯誤提醒訊息。
6. openflow控制通道隔離
除了上面提到的所有物理資源外,openflow控制器通道本身也必須虛擬化和隔離。比如,openflow協議中的所有訊息包含乙個獨一無二的傳輸id,flowvisor必須重寫這些傳輸id以確保不同控制器的訊息不會使用同乙個id,類似的,如果乙個資料報的處理需要交換機做決定,需要先將資料報儲存在交換機佇列中,openflow協議使用乙個32位的整數去標識這個佇列中的不同資料報。flowvisor需要確保每個交換機只能訪問交換機佇列中他自己的資料報。
到這裡,將flowvisor的由來,實現原理,隔離機制都分析了一遍,對於未來網路中必不可少的虛擬層有了一些了解和新的想法思路,我相信,書和**是拓展思路的不二法門,相信flowvisor只是網路虛擬層的乙個先驅,未來將會有更加完善,更加功能強大,更加智慧型化的系統產生,希望自己能夠在這些方面有所貢獻。
網路虛擬化之FlowVisor 網路虛擬層(上)
概念解釋 切片 虛擬網路的乙個例項 一.網路虛擬化 虛擬網路 人類社會的發展在很大方面得益於自然界,飛機受益於鳥,雷達受益於蝙蝠等等,所以專門有個學科為仿生學就是研究和模仿生物的特殊本質,利用生物的結構和功能原理來研製機械或各種新技術的科學技術。而人類社會已經發展了這麼多年,沉澱了很多可以和自然界相...
網路虛擬化之linux虛擬網路基礎
在linux裡面devic 裝置 與傳統網路概念裡的物理裝置 如交換機 路由器 不同,linux所說的裝置,其背後指的是乙個類似於資料結構 核心模組或裝置驅動這樣的含義。就是說device可能只是軟體系統裡的乙個驅動,乙個函式介面。tap位於二層資料鏈路層,tun位於三層網路層,兩者在linux裡的...
網路虛擬化SDN
網路虛擬化sdn 交換機和路由器怎麼分配資源呢?what is sdn?what is openflow?網路交換裝置的瓶頸在 封閉的網路架構,路由器改不了。長期受限。使用者被locked out 網路缺少控制層面的抽象,作業系統使軟體硬體分離。如何打破枷鎖?讓網路出現作業系統。路由器內部的作業系統...