久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 邏輯交換機的運作方式

邏輯交換機的運作方式

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-12-05 16:04:08 1701763448

在物理交換機中,Mac-Address-Table 被用于 Ethernet 數(shù)據(jù)包的轉(zhuǎn)發(fā)。然而,在邏輯交換機中,當(dāng)兩個虛擬機相互通信時,底層 vSphere Host 必須知道目標(biāo) VM 位于哪個 Host 上,然后通過 VXLAN 封裝發(fā)送原始 Ethernet Frame。問題來了:Host 如何知道目標(biāo) VM 位于哪臺 Host 上?

考慮一個有三個 vSphere 主機 A/B/C 的環(huán)境,VTEP 為 10.20.10.10/24、10.20.20.11/24、10.20.30.12/24。我們創(chuàng)建了一個邏輯交換機 VXLAN 5001,并在這個邏輯交換機上連接了兩個虛擬機 VM1 / VM2。邏輯網(wǎng)段是 192.168.10.0/24,兩個虛擬機的 IP 是 101/102,分別位于主機 A 和主機 B 上。

當(dāng) VM1 想與 VM2 進行流量傳輸時,Host A 如何知道 VM2 在哪個 Host 上?

首先我們需要知道的是,NSX 控制器為每個邏輯交換機維護三個表。VTEP 表/MAC 表/ARP 表,解釋如下。

VTEP Table

當(dāng)我們創(chuàng)建一個邏輯交換機時,我們將 VM "插入 "到該邏輯交換機上。簡而言之,每個 vSphere Host 必須知道它有哪些 VM,以及 VM 位于哪個邏輯交換機上。當(dāng)每個虛擬機所在的邏輯交換機發(fā)生變化時,vSphere Host 將立即通知 NSX Controller 哪個邏輯交換機連接到這個 Host。

也就是說,Host A 和 Host B 將分別向控制器報告它們有 VXLAN 5001 作為邏輯交換機。然而,Host C 不會發(fā)送這個消息,因為它沒有任何位于 VXLAN 5001 的虛擬機。

Host C 在 VXLAN 5001 上沒有任何 VM,所以在 Controller 的 VTEP 表中不會有 VTEP 10.20.30.12 信息。但要考慮兩個條件:

如果在 Host C 上創(chuàng)建了一個新的 VM3 并添加了 VXLAN 5001,Host C 將告訴 Controller 他也有 VXLAN 5001,并且 Controller 上的 VNI 5001 VTEP 表將添加一個新的 10.20.30.12。

如果 VM 2 從 Host B 被 vMotion 到 Host C,Host C 將向 Controller 報告它有 VXLAN 5001,而 Host B 將向控制器報告它沒有 VXLAN 5001,因為這個 Controller 上沒有更多的虛擬機。

當(dāng) VTEP Table 被創(chuàng)建和更新時,Controller 會立即通知每個相關(guān)的 vSphere Hosts,因此不僅 Controller 本身,而且每個 vSphere Host 都有一份最新的 VTEP Table,以了解其上有哪些邏輯交換機,以及除了自己以外還有哪些主機也有這個邏輯交換機。主機 A/B 將知道 VXLAN 5001 上的主機包括主機A(10.20.10.10)和主機B(10.20.20.11)。

MAC Table

同樣地,每個 vSphere Host 也必須知道它上面的 VM 的 MAC Address 是什么。因此,Host 也會通知 NSX Controller 哪些虛擬機(MAC Address)在它自己的哪個邏輯交換機中。Host A 會告訴 NSX Controller,它在 VXLAN 5001 中有一個 VM 硬件位置 MAC 1,而 Host B 也會告訴 Controller,它有一個 MAC 2。因此,NSX Controller 匯總了這些信息,可以為邏輯交換機 5001 創(chuàng)建 MAC 表。

當(dāng)然,如果有虛擬機變化或 vMotion 等操作,受影響的主機也會通知 NSX 控制器進行相關(guān)更新。這個表只在 NSX 控制器中維護,不會被發(fā)送到主機上。

ARP Table

即使沒有安裝 VMTools,vSphere Host 可能仍然有辦法知道每個虛擬機的 IP 地址,包括

如果這個 VM 發(fā)送了 DHCP Request,就會從 reply packet 中知道 IP 地址。

只要這個 VM 發(fā)送 ARP Request,請求的源 IP 將告訴這個 VM 的地址。

接下來,主機也會向 NSX 控制器發(fā)送一個消息,告知自己虛擬機的 MAC 地址和 IP 地址映射。因此,類似地,NSX 控制器會了解每個邏輯交換機上有哪些 IP 地址,以及相應(yīng)的 MAC 地址。

從上面的討論中,我們會發(fā)現(xiàn) NSX 控制器實際上集中了每個邏輯交換機的拓?fù)湫畔?,包括每個交換機建立在哪些主機上,這個交換機上有哪些虛擬機(MAC地址),以及它們對應(yīng)的 IP 地址。主機 A 如何知道 VM2 在哪個主機上?

首先:VM1 不知道 VM2 的 MAC 地址,所以發(fā)出了一個 ARP 請求

此時,vSphere 主機收到這個 ARP 請求,并且不知道主機上緩存中的 VM2 的 MAC 地址,那么主機 A 將向 NSX 控制器發(fā)送一個 ARP 請求。然后,主機 A 向 VM1 發(fā)送一個 ARP 回復(fù)。

(另一種可能是,控制器上的 ARP 表還沒有學(xué)到 VM2 的 IP 信息。這時,主機將直接使用本地 VTEP 表向 VNI 5001 VTEP 表中的所有服務(wù)器發(fā)送該 ARP 請求)

接下來,VM1 向 VM2 發(fā)送一個 Ethernet 數(shù)據(jù)包

當(dāng)主機 A 收到這個數(shù)據(jù)包時,它將要求控制器查詢 VXLAN 5001 的 MAC 表,得到 MAC2 對應(yīng)的 VTEP 是 10.20.20.11。啊哈,目的地主機已經(jīng)發(fā)現(xiàn)了。這一次,Host A 將在原以太網(wǎng)幀的前面加上 VXLAN 表頭。

從底層硬件網(wǎng)絡(luò)到主機 B 的正常 Hop-By-Hop 數(shù)據(jù)包傳輸后,VXLAN 被解包,VXLAN 為 5001,原始以太網(wǎng)幀通過正常的傳輸機制被發(fā)送到 5001 邏輯交換機中的 VM2(通過目的 MAC 地址)。

那么從 VM1 到 VM2 的以太網(wǎng)數(shù)據(jù)包呢?

因為在 ARP 請求和第一次數(shù)據(jù)包傳輸時,主機 A 已經(jīng)有了相關(guān)的知識并放入了 Cache,后續(xù)傳輸同一網(wǎng)絡(luò)流的數(shù)據(jù)包時不需要再詢問 NSX 控制器,直接進行 VXLAN 封裝和傳輸。

我希望以上步驟可以幫助你理解 NSX 中同一邏輯交換機中的數(shù)據(jù)包是如何通過底層硬件網(wǎng)絡(luò)傳遞到目的地的。這也解釋了為什么在 NSX 環(huán)境中,通常在 ping 時,第一個數(shù)據(jù)包的 Latency 會比較大。

通常情況下,當(dāng) VM 在 NSX 環(huán)境中第一次相互通信時,Latency 可能會比較大。

原因是 Host 處理第一個數(shù)據(jù)包有更多的步驟,包括響應(yīng) ARP Request,和向 Controller 詢問相關(guān)信息。但在第二個數(shù)據(jù)包之后,Host 的 Cache 已經(jīng)存儲了相關(guān)信息,那么隨后的網(wǎng)絡(luò)傳輸就非??炝?。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
嵌入式培訓(xùn)課程:探索技術(shù)的無限可能

近年來,嵌入式系統(tǒng)的廣泛應(yīng)用已經(jīng)深刻改變了我們的生活方式。從智能手機到智能家居,從汽車到醫(yī)療設(shè)備,嵌入式技術(shù)已經(jīng)成為現(xiàn)代社會不可或缺的...詳情>>

2023-12-12 11:02:35
嵌入式開發(fā):Linux網(wǎng)絡(luò)編程的探索與實踐

在當(dāng)今的科技世界中,嵌入式系統(tǒng)已經(jīng)滲透到我們生活的方方面面,從智能手機、電視、汽車到醫(yī)療設(shè)備等。而在這些設(shè)備中,Linux網(wǎng)絡(luò)編程扮演著至...詳情>>

2023-12-12 09:55:55
Java游戲項目開發(fā):技術(shù)概覽與實踐

在數(shù)字化世界中,游戲已經(jīng)成為了人們休閑娛樂的重要方式之一。隨著科技的不斷進步,游戲開發(fā)行業(yè)也在不斷發(fā)展,而Java作為一門廣泛使用的編程語...詳情>>

2023-12-12 08:49:15
Web前端的基石:HTML

在數(shù)字化的時代,網(wǎng)頁設(shè)計已經(jīng)成為了一個重要的領(lǐng)域。而在這個領(lǐng)域中,HTML(HyperTextMarkupLanguage)無疑是最基礎(chǔ)、最重要的一環(huán)。它是構(gòu)建...詳情>>

2023-12-12 08:15:55
嵌入式開發(fā):內(nèi)存分配的方式

嵌入式系統(tǒng)開發(fā)中,內(nèi)存分配是一個至關(guān)重要的話題。嵌入式系統(tǒng)通常具有有限的內(nèi)存資源,因此合理的內(nèi)存分配方式對系統(tǒng)的性能和穩(wěn)定性至關(guān)重要。...詳情>>

2023-12-12 06:35:55
快速通道