VMware NSX的D.LR MAC address

王俊城 Anderson Wang

  • 精誠資訊/恆逸教育訓練中心-資深講師
  • 技術分類:虛擬化應用

 

 

在之前的文章「VMware虛擬機MAC address產生規則」中,有解釋過,在vSphere環境的虛擬機,MAC address應該會符合00:50:56:XX:YY:ZZ的規則,這裡將說明另外一個特殊的案例,NSX的DLR【Distributed Logical Routers】的internal網卡,D.LR的internal網卡,MAC address卻固定是02:50:56:56:44:52,到底是為什麼呢?

先來看看D.LR跟虛擬機擔任Router及外部實體Router的比較:

  • 外部實體Router擔任虛擬機的第三層路由時,流量會離開VMKernel,到實體主機的網卡,然後是實體的Switch,再到實體的Router,繞路而行,效能不好。
  • 如果是虛擬機擔任Router,虛擬機之間的第三層流量,會離開VMkernel,進入User Space,效能也不是最理想。
  • 只有透過D.LR實作虛擬機的第三層路由,除了將第二層的流量【Logical Switch】留在VMKernel外,也將第三層的流量【D.LR】留在VMKernel,是效能最佳化的架構。

既然要效能最佳化,當然要錙銖必較,來看看虛擬機的MAC address產生規則:

00:50:56:XX:YY:ZZ

  • 前三碼00:50:56是VMware跟IEEE申請,固定給vSphere產生的虛擬機使用【您可以做個小實驗,VMware Workstation或VMware Player的虛擬機MAC address前三碼,是否是00:50:56?】
  • 第四碼XX由vCenter Server決定,如果這組vCenter管轄的ESXi主機及虛擬機,不需要跟其他組vCenter Server環境溝通,例如:Long-Distance vSphere vMotion Migration - 跨vCenter Server的vMotion,那第四碼完全不須理會,交由vCenter Server控制即可;但是,如果vCenter Server需要跟其他組vCenter Server溝通的話,最好是將第四碼,控制成不一樣【方法可以參考之前的文章介紹「如何使用SMAC更改本地端網卡號碼」】,這樣可以減少虛擬機網卡MAC address衝突的機會。
  • 第五、六碼YY:ZZ,vCenter Server先檢查database中是否唯一?再檢查LAN環境中,是否唯一?【因為虛擬機的MAC address,無論是虛擬化管理員,或是虛擬機管理員,都有權限可以修改】。

基於上述的虛擬機MAC address產生規則,D.LR雖然是VMKernel的實作,並不是虛擬機,但是,使用相同的虛擬機MAC address產生規則並不是不可以,只是,這樣的overhead比較高,效能會受到影響,直接hard core寫死,overhead比較低,效能比較理想。

直接hard core寫死,也是有技巧的,MAC address的定義如下:

MAC address以二進位呈現,左手邊數起的第七位:

0 : globally unique
1 : locally administered

在相同的LAN的環境中,有 0 就不會出現 1,反之亦然,有 1 就沒有 0,既然VMware vSphere使用00:50:56當成MAC address前三碼,意思就是,左手邊數起的第七碼是 0【00的二進位為00000000,第七碼是0】,這就是D.LR使用02:50:56的原因【因為有0就不會出現 1,02的二進位為00000010,第七碼是1】。