服務器虛擬化的MAC地址分配

 在全是物理機的環境中,我們不需要考慮MAC地址的問題,因爲每個物理機的網卡都是真實,其MAC地址由網卡提供商來分配獨一無二的MAC ADDRESS,所以在物理環境規範的情況下是不會出現MAC地址衝突的問題,除非有山寨。

先普及下MAC地址的相關知識,以下會用到。

MAC地址最開始由XEROR研究出來,後來由IEEE組織管理。IEEE會爲每個廠商提供唯一的一個MAC地址前綴,稱之爲OUI(Organizationally Unique Identifier),用來區別不同的廠商,例如:aa-bb-cc-xx-xx-xx,其中aa-bb-cc就是OUI,每個廠商會根據自己的喜歡來編碼剩下的24bit。

再來說下Universally administered和 locally administered addresses,前者是全局分配,後者有本地分配,比較隨意。兩者的區別在於,前者使用從IEEE分配到的OUI來分配MAC地址,而locally administered address則是有本地分配的地址。不受OUI的影響。但是兩者不衝突,universally和locally在第一個第一個16位的倒數第二字節,如果是0,那麼該MAC地址爲universally,如果是1,則是locally地址。例如:06-00-00-00-00-00,06的二進制爲00000110,倒數第二位是1,所以,該MAC地址爲本地管理地址,而所有的OUI分配地址,該檢測位都是0。如:xensource的OUI爲:00-16-3E-00很明顯,倒數第二位是0,所以這是一個universally地址。

講了這麼多,我們再來看看可能會遇到的問題。

XenServer中,爲VM自動分配的地址都是locally administered address,而Hyper-V和vSpher則是使用的universlly地址。

其中Hyper-v使用00-15-5D的OUI地址,接下來的兩位會從Hyper-v主機的IPV4地址的後兩位獲得,如主機地址爲192.168.10.20,那麼解析來兩位地址爲0A-14,最後一位則是隨機,也就是單臺主機默認可以隨機產生256個MAC地址,即192.168.10.20主機的默認MAC地址範圍爲從00-14-5D-0A-14-00到00-14-5D-0A-14-FF

再來說vShpere,同微軟類似,也是使用分配給VMWare的OUI(00-50-56)開頭,而後三段(24bit)則會由vCenter主機的instance ID來決定,至於如何生成,沒找到文檔,也不去深究了。由於vCenter會根據主機的Instance ID來決定後三段的生成方式,這就保證了在生成MAC地址時候避免衝突,而Instance ID是在安裝vCenter的時候隨機產生的,所以如果在同一個網絡內,Instance ID一樣的話,就會導致MAC地址衝突等問題,所以需要注意Instance ID的設置。

參考資料:

關於MAC地址的WIKIPEDIA解釋:http://en.wikipedia.org/wiki/MAC_address

VMWARE修改Instance ID的KB:http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1024025

Hyper-V MAC地址的一些說明和配置:http://blogs.technet.com/b/jhoward/archive/2008/07/15/hyper-v-mac-address-allocation-and-apparent-network-issues-mac-collisions-can-cause.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章