SDN Overlay 網絡中虛機數據包的轉發(2)

在配置了網絡虛擬化(Overlay)的網絡結構中,處於Overlay網絡中的虛機數據包的封裝和MAC地址學習和傳統物理網絡(Underlay)類似又不盡相同。除了咱們瞭解Overlay網絡須要藉助Underlay網絡進行二次封裝以外,其MAC地址學習過程也相對要曲折一些。這些MAC地址學習過程取決於多種因素:服務器

  1. 虛機是否在同一虛擬子網?網絡

  2. 虛機是否在同一虛機網絡的不一樣虛擬子網?ide

  3. 虛機是否運行於同一臺物理機?學習

  4. 虛機是否運行在不一樣的物理機?spa

不一樣的場景,虛機之間學習對方的MAC地址,以及在互相學習到對方的MAC地址後何封裝數據包都不盡相同?接下來咱們詳細分析如下5種不一樣場景:3d

  1. 虛機在同一虛擬子網(VSID相同),運行在同一臺主機;orm

  2. 虛機在同一虛機網絡的不一樣虛擬子網裏(RDID相同,VSID不一樣),運行在同一臺主機;blog

  3. 虛機在同一虛機網絡的不一樣虛擬子網裏(RDID相同,VSID不一樣),運行在不一樣的主機;ci

  4. 虛機在同一虛擬子網(VSID相同),運行在不一樣主機,未啓用動態地址學習;get

  5. 虛機在同一虛擬子網(VSID相同),運行在不一樣主機,啓用了動態地址學習;

 

在上文(http://ichbinleo.blog.51cto.com/11948851/1942694)中討論了SDN Overlay 網絡中虛機數據包的轉發的三個場景1),2)和3),今天咱們將繼續討論第4)和第5)個場景。有關於微軟網絡虛擬化HNV的相關概念,如RDID、VSID、虛機網絡、虛擬子網、默認網關等,能夠參考http://ichbinleo.blog.51cto.com/11948851/1902265 和http://ichbinleo.blog.51cto.com/11948851/1903866  進一步瞭解 。

 

本文咱們接着第4)個場景,如圖1所示。咱們在一個虛擬子網裏建立了兩臺虛機,分配了同一個子網(192.168.188.0/24)的IP地址:

VM1的IP地址爲192.168.188.2,MAC地址爲MACvm1

VM2的IP地址爲192.168.188.3,MAC地址爲MACvm2

wKiom1lZ9bDwUlHbAAL5W241OiA118.jpg-wh_50                            

此刻,這兩臺虛機VM1VM2運行在不一樣的物理服務器,未啓用動態IP地址學習,那麼VM1VM2之間如何學習對方的MAC地址以及在互相學習到對方的MAC地址後如何封裝數據包呢?接下來咱們詳細地分析這一場景的數據包轉發流。

  1. VM1要和VM2通訊,須要學習到對方的MAC地址。所以,VM1發送ARP消息查詢 VM2     的MAC地址。

  2. Hyper-V虛擬交換機廣播ARP到:

    1. 全部在本地且VSID爲11111的虛機

    2. HNVFilter

  3. HNV     Filter將ARP響應轉發給VM1,VM1學習到VM2的MAC地址是MACVM2

  4. VM1封裝原始數據包,目的IP是VM2的IP地址,目的MAC地址爲MACvm2。

  5. 原始數據包發送到VM1所在的物理機的Hyper-V虛擬交換機,虛擬交換機獲取到VM1所包含的VSID爲11111。

  6. Hyper-V虛擬交換機看到MACVM2並不在本地Hyper-V虛擬交換機的記錄中,因而將數據包發送給HNV Filter。

  7. HNV     Filter檢索查找記錄,得到目標虛機的VSID是11111,CA地址爲192.168.188.3,目標MAC地址爲MACVM2,以及對應的PA地址。而後將這些獲取到的信息和原始數據包使用NVGRE/VXLAN進行二次封裝。

  8. 二次封裝的數據包經過傳輸網絡發送到目標虛機所在的Hyper-V物理機。

  9. IP地址爲10.2.41.206以及MAC地址爲MACPA2的Hyper-V物理機接收到數據包,而後發送到本身虛擬交換機的HNV Filter。

  10. HNV     Filter拆開封裝的包,獲取到內原始數據包以及包含了VSID爲11111的OOB數據。

  11. HNV     Filter將原始數據包發送到具備VSID爲11111的Hyper-V虛擬交換機。

  12. Hyper-V虛擬交換機按照訪問控制策略將IP數據包發送到目標虛機VM2。

 

注意:這種場景描述了NVGRE/VXLAN二次封裝的過程和較爲完整的HNV工做流程,咱們須要強調幾點:

若是沒有啓用動態IP地址學習,即便目標虛機不在本地Hyper-V主機上,ARP也是由HNVFilter處理而不會廣播到虛擬交換機之外的網絡。

在物理鏈路(也即傳輸網絡)上,物理網絡基於外部數據包(PA地址和物理機MAC地址)轉發數據包,物理鏈路對內部原始數據包(CA IP地址和MAC地址)沒有察覺。

數據包經過NVGRE/VXLAN進行二次封裝,可是封裝對於源虛機和目標虛機來講徹底是透明的,意味着虛機不能感知到數據的二次封裝和拆封。

 

咱們接着第5)個場景,如圖2所示。咱們在一個虛擬子網裏建立了兩臺虛機,分配了同一個子網(192.168.188.0/24)的IP地址:

VM1IP地址爲192.168.188.2MAC地址爲MACvm1

VM2IP地址爲192.168.188.3MAC地址爲MACvm2

wKioL1lZ9c3QLk_GAAMoIfBdGl4201.jpg-wh_50

此刻,這兩臺虛機VM1VM2運行在不一樣的物理服務器,和第4個場景不一樣的是,在VM之間首次通訊時,須要啓用動態IP地址學習以補充CAPA以及MAC地址查詢表,在有了該查詢表之後,虛機之間的通訊就和場景4)同樣了。

那麼,這種場景下VM1VM2之間如何學習對方的MAC地址以及在互相學習到對方的MAC地址後如何封裝數據包呢?接下來咱們詳細地分析這一場景的數據包轉發流。

  1. VM1要和VM2通訊,須要學習到對方的MAC地址。所以,VM1發送ARP消息查詢     VM2 的MAC地址。

  2. Hyper-V虛擬交換機廣播ARP到:

    1. 全部在本地且VSID爲11111的虛機

    2. HNVFilter

  3. 可是,HNV Filter在查詢表裏並未找到 VM2的MAC地址

  4. 因而,HNV 封裝一個ARP請求數據包,而後單播到每一個PA地址,數據包裏包含 VSID=111111的OOB數據和相關的L2記錄。

  5. HNV     Filter將ARP請求數據包經過NVGRE/VXLAN進行二次封裝。

  6. 二次封裝的數據包經過傳輸網絡傳輸到目的Hyper-V物理機。

  7. IP地址爲10.2.41.206以及MAC地址爲MACPA2的Hyper-V物理機接收到數據包,而後將其發送到本身的HNV Filter。

  8. 目的物理機的HNV Filter拆開二次封裝的數據包,獲取到即原始數據包以及包含了VSID爲11111的OOB數據。

  9. HNV     Filter將原始數據包發送到具備VSID爲11111的Hyper-V虛擬交換機。

  10. Hyper-V虛擬交換機按照訪問控制策略將原始數據包(也即ARP請求數據包)發送到目標虛機。

  11. 若是目的虛機網卡和ARP所請求的MAC地址匹配,那麼虛擬將將ARP應答發送給Hyper-V虛擬交換機。

  12. Hyper-V虛擬交換機同時附加上VSID爲11111的OOB數據    

  13. 由於該ARP響應數據包不是發送給本地虛機,因此Hyper-V虛擬交換機將ARP請求直接傳遞給HNV Filter。

  14. HNV     Filter看到該ARP數據包後若是發現CA的MAC/IP地址和PA的MAC/IP地址對動態IP記錄不存在,便會加上這條CA-PA配對記錄。接着發送一條新動態記錄的通知給VMM,以便VMM將更新的記錄發送給其餘Hyper-V主機。

  15. HNV     Filter在查找記錄裏找到目標虛機VM1的MAC地址(MACVM1),而後將ARP應答數據包經過NVGRE/VXLAN進行二次封裝。

  16. 二次封裝的數據包經過傳輸網發送到源虛機所在的Hyper-V物理機。

  17. IP地址爲10.2.41.204以及MAC地址爲MACPA1的Hyper-V物理機接收到數據包,而後發送到HNV Filter

  18. HNV     Filter拆開二次封裝的數據包,得到原始數據包(也即ARP應答數據包),而後添加CA MAC/IP和PA MAC/IP動態地址對記錄。接着發送一條新動態記錄的通知給VMM,以便VMM將更新的記錄發給其餘Hyper-V主機。Hyper-V虛擬交換機接着將ARP應答數據包發送給VM1。

  19. 至此,VM1已經學習到VM2的MAC地址爲MACVM2

  20. VM1封裝原始數據包,目的IP地址爲VM2的IP地址,目的MAC地址爲MACvm2。

  21. 該數據包發送到Hyper-V虛擬交換機,虛擬交換機獲取到源虛機(VM1)網卡上的VSID(11111),並將VSID信息組織爲帶外(OOB)數據。

  22. Hyper-V虛擬交換機看到MACVM2 並不在本地Hyper-V虛擬交換機上,所以將數據包傳遞給HNV Filter。

  23. HNV     Filter檢索查找記錄,得到目標虛機的VSID是11111,CA地址爲192.168.188.3,目標MAC地址爲MACVM2,以及對應的PA地址爲10.2.41.206。而後將這些獲取到的信息和原始數據包使用NVGRE/VXLAN進行二次封裝。

  24. 二次封裝的數據包經過傳輸網絡發送到目的虛機(VM2)所在的Hyper-V物理機。

  25. IP地址爲10.2.41.206以及MAC地址爲MACPA2的Hyper-V物理機接收到數據包,而後發送到HNV Filter。

  26. HNV     Filter拆開二次封裝的包,獲取到原始數據包,以及包含了VSID 爲11111的OOB數據。

  27. HNV     Filter將原始數據包轉發到具備VSID爲11111的Hyper-V虛擬交換機。

  28. Hyper-V虛擬交換機按照訪問控制策略將原始數據包發送到目標虛機VM2。

 

注意:以上這個場景就是虛機在從未通訊時,藉助啓用動態IP地址學習的特性進行MAC地址學習和轉發數據包,咱們須要強調如下幾點:

在啓用了動態IP地址學習後,HNV封裝ARP請求數據包,ARP請求數據包經過單播進行傳輸,而且也須要經過NVGRE/VXLAN進行二次封裝。

目的虛機在數據包流中生成實際ARP應答。

源和目的Hyper-V主機都沒有CAMAC/IP和PA MAC/IP地址對,因此在數據包流發生過程當中這些地址對動態查詢將被添加,並通知VMM建立了新的查找記錄。

相關文章
相關標籤/搜索