Windows Server 2012通過網絡虛擬化的形式抽象了物理網絡的拓撲,使得更好的實現了隔離和多租戶的目標.
而在網絡虛擬化中,其中一個很重要的技術就是Hyper-V的可擴展交換機.
(本文章的例子是在Windows 8下的Hyper-V所展示的,實際的2012也一樣)
對於初使用Hyper-V的人來說,網絡是最麻煩了的,Hyper-V不像VMware Workstation或者以前微軟自己的VPC那樣直接點兩下鼠標就能讓虛擬機上網.
在Hyper-V裏引入了可擴展交換機這個概念
初來乍到的人肯定覺得,不就是上個網,還弄出那麼麻煩來,像VM那樣點兩下鼠標多好簡單快捷.
但是Hyper-V更多是應用於生產環境,跟VM(本處沒特別說明都是默認指Workstation)這種更偏向實驗環境的有天然的不同
說說3個虛擬交換機的區別
外部虛擬交換機
在這種模式下,物理網卡會別虛擬成一個虛擬交換機,而在虛擬出一個網卡來"繼承"了你的本地網卡.
有些人會發現創建外部交換機後,自己物理網卡的所有配置信息都沒了,只勾選了一個Hyper-V可擴展的虛擬交換機,如下圖
然後就擔心本地網卡連TCP/IP協議都沒啓用這如何上網?
其實這就是把你物理網卡虛擬成了一個虛擬交換機,勾選中的Hyper-V可擴展的虛擬交換機就是做這事,而交換機除非用於管理不然本身是不需要ip或者其他的,他只是負責轉發數據包的,這個有點網絡基礎的人應該都瞭解吧?
所以其他信息都全部沒勾選.
於此同時,有另外一個虛擬出的虛擬網卡(一般名字是 "vEthernet( {你的網卡名稱} 虛擬交換機)" 這個格式)則會繼承你本身物理網卡的所有設置(比如靜態ip,dns等設置)
然後你物理本機就是通過這個虛擬出的網卡來上網的,其拓撲圖如下
(本圖片引用自微軟mva裏的)
這種方式的上網,會使得虛擬機跟物理機在網絡上是同級別的存在,就類似於虛擬機是一臺物理機並且跟物理機接入到同一個交換機的樣子.
這樣的話可以從外部的網絡物理的直接訪問到虛擬機.
如果虛擬機要對外提供服務且不通過網關等形式的話,這個接入方式無疑是最好的選擇.
內部虛擬交換機
如果還有人對vm那種上網方式戀戀不忘,其實vm就是使用這種方式讓虛擬機上網的
內部虛擬交換機,在本機虛擬出一個網卡,通過這個虛擬的網卡跟其他虛擬機通訊(這個跟上面外部虛擬交換機相比虛擬網卡類似虛擬交換機,只不過物理網卡並不接入到裏面而是繼續作爲獨立的網卡上網)
而vm的上網方式就是通過這個虛擬網卡,然後把物理網卡的網絡通過共享的方式(就是對着本地網卡,右鍵屬性-共享 那個)
然後物理網卡會自身作爲一個DHCP服務器向虛擬機分配ip讓其能上網
而在Hyper-V裏也能使用這種方式
創建一個內部虛擬交換機後,虛擬機全部接入到這個網絡,然後物理網卡用共享上網的方式供該虛擬網卡上網,則可以供虛擬機上網了
不過這種方式是透過物理機上網,也就是常說的NAT方式.
這樣的話外部是無法訪問到虛擬機內部的,因爲網絡是在物理機處做了一次轉換.
專用虛擬交換機
這個跟內部虛擬交換機基本一樣,但是這個不會在物理機的網絡適配器那虛擬出一塊網卡,而僅僅用於虛擬機內部的通訊(就是一個排除了物理機的內部虛擬交換機)
基本上內部虛擬交換機
虛擬VLAN
對設置稍微注意的人應該注意到在創建虛擬交換機或者在添加網卡的時候,有一個VLAN ID的設置
首先關於VLAN的存在意義,諸如什麼隔離流量防止廣播風暴一類的,這些請自行尋找更詳細的資料.
以前要配置VLAN是必須要在交換機等網絡硬件層面上進行配置,而現在,由於網絡虛擬化的特性,使得能夠在軟件層面上也能實現VLAN
通過此處設置,就能夠使得將網絡流量分割到不同的VLAN
同時也更好的實現諸如多租戶安全和隔離等要求
擴展:
由於VLAN有一些天然的限制,比如無法跨越多個子網以及數量的限制(理論是4096實際上貌似是超過1000都有問題了)
所以微軟還引入了IP地址的虛擬化,通過IP重寫技術
每個虛擬機有2個IP組成(提供商地址PA和客戶地址CA)
IP重寫會在數據包離開虛擬機之前修改客戶的IP地址然後再傳往物理網絡,而接收端則通過PA和CA兩個地址唯一標識當前虛擬機
這樣子的優點是無需對網絡適配器,交換機或者網絡設備進行升級且不會犧牲性能爲代價來進行部署
可擴展的虛擬交換機
ps:本功能僅在Windows Server 2012裏有,客戶端的Win8不含此功能
Hyper-V的可擴展交換機是是基於二層虛擬網絡的交換機,可以通過編程方式管理和擴展其功能,從而將虛擬機連接到物理網絡.
Hyper-V可擴展虛擬交換機的可擴展三個字就體現在此處.
Hyper-V默認支持網絡設備接口規格 (NDIS) 篩選器驅動程序和 Windows 篩選平臺 (WFP) 標註驅動程序,同時還允許使用其他非MIcrosoft的Hyper-V網絡擴展以增強其性能.
其虛擬交換機通過以下屬性提供一個開放的交換機API
另外Hyper-V的虛擬交換機同時提供:
Powershell和腳本的支持
統一的跟蹤和增強的診斷
以此方便其管理
其結構如下