Tungsten Fabric架構解析丨詳解vRouter體系結構

TF中文社群發表於2019-12-23
Hi!歡迎來到Tungsten Fabric架構解析內容的第三篇,本文將詳細介紹Tungsten Fabric vRouter的體系結構。
Tungsten Fabric架構解析系列文章,由TF中文社群為你呈現,旨在幫助初入TF社群的朋友答疑解惑。我們將系統介紹TF有哪些特點、如何運作、如何收集/分析/部署、如何編排、如何連線到物理網路等話題。


先來看一張Tungsten Fabric vRouter功能元件的概念檢視。

8784948e-1779-405a-aa7f-ad29d20a6313-image.png

vRouter代理在主機作業系統的使用者空間中執行,而轉發器可以是核心模組,在使用DPDK時在使用者空間中執行,或者在可程式設計網路介面卡(也稱為“智慧NIC”)中執行。 這些選項在後續文章中有更詳細的描述,這裡說明了更常用的核心模組模式。

代理與控制器保持會話,併傳送其需要的VRF、路由和訪問控制列表(ACL)的資訊。 代理將資訊儲存在自己的資料庫中,並使用該資訊配置轉發器。 介面連線到VRF,每個VRF中的轉發資訊庫(FIB)都配置有轉發條目。

每個VRF都有自己的轉發表和流表,然而MPLS和VXLAN表在vRouter中是全域性的。轉發表包含目的地的IP和MAC地址的路由,並且IP到MAC關聯用於提供代理ARP功能。當VM介面啟動時,vRouter選擇MPLS表中的標籤值,並且這些值僅對該vRouter本地有效。

在一個Tungsten Fabric域內,對於不同vRouters中同一虛擬網路的所有VRF來說,VXLAN網路識別符號是全域性的。

每個虛擬網路都有一個分配給它的預設閘道器地址,並且每個VM或容器介面都會在初始化時獲得的DHCP響應中接收該地址。當工作負載將資料包傳送到其子網外的地址時,它將為與閘道器IP的IP地址對應的MAC進行ARP,並且vRouter以其自己的MAC地址進行響應。

因此,vRouters支援所有虛擬網路的完全分散式預設閘道器功能。

詳細的vRouter資料包處理邏輯

流出VM和流入VM的資料包的邏輯詳細資訊略有不同,以下兩張圖和說明中對此進行了描述。

21e2dcac-0078-4fbe-8b1d-2383e293801e-image.png


當從VM通過虛擬介面傳送 時,轉發器接收該 後,首先檢查介面所在的VRF流表中是否存在與 的五元組(包括協議、源和目標IP地址、源和目標TCP或UDP)匹配的條目。

如果這是流中的第一個 ,則不會有條目,轉發器通過pkt0介面將該 傳送給代理。代理根據VRF路由表和訪問控制列表確定流的操作,並使用結果更新流表。動作可以是DROP、FORWARD、NAT或MIRROR。


如果要轉發 ,轉發器將檢查目標MAC地址是否是其自己的MAC地址,如果VM在目標位於VM的子網外時將 傳送到預設閘道器。在這種情況下,將在IP轉發表中查詢目的地的下一跳,否則將使用MAC地址用於查詢。雖然在計算節點內,但vRouter在這裡執行物理路由器的IRB(整合路由和橋接)功能。

33ceb641-f0ec-4171-acb6-cf01b8270b59-image.png


從物理網路到達時,vRouter首先檢查資料包是否具有支援的封裝。如果不是,則將 傳送到主機作業系統。

對於基於UDP的MPLS和基於GRE的MPLS,標籤直接標識VM介面,但VXLAN需要由VLAN網路識別符號(VNI)標識的VRF中查詢內部報頭中的目標MAC地址。


一旦識別出介面,如果沒有為介面設定策略標誌(指示允許所有協議和所有TCP / UDP埠),則vRouter可以立即轉發 。否則,使用五元組來查詢流表中的流,並使用與針對傳出分組所描述的邏輯相同的邏輯。


相同子網虛擬機器之間的資料包流

當VM中的應用程式首先將資料包傳送到另一個VM時,發生的操作順序如下圖所示。


起點是兩個VM均已啟動,並且控制器已將L2(MAC)和L3(IP)路由傳送到兩個vRouter,以啟用VM之間的通訊。傳送VM前尚未將資料傳送到其他的VM,因此之前沒有通過DNS解析目標名稱。

a14014f1-644a-412b-9aa4-0825a96d748c-image.png


1. VM1需要向VM2傳送資料包,因此首先查詢自己的DNS快取以獲取IP地址,但由於這是第一個資料包,因此沒有條目。
2. VM1在其介面啟動時向DHCP響應中提供的DNS伺服器地址傳送DNS請求。
3. vRouter捕獲DNS請求並將其轉發到在Tungsten Fabric控制器中執行的DNS伺服器。
4. 控制器中的DNS伺服器以VM2的IP地址響應。
5. vRouter將DNS響應傳送給VM1。
6. VM1需要形成乙太網幀,因此需要VM2的MAC地址,它會檢查自己的ARP快取,但沒有條目,因為這是第一個資料包。
7. VM1發出ARP請求。
8. vRouter捕獲ARP請求,並在其自己的轉發表中查詢IP-VM2的MAC地址,並在控制器為VM2傳送的L2 / L3路由中找到關聯。
9. vRouter使用VM2的MAC地址向VM1傳送ARP回覆。
10. VM1的網路堆疊中發生TCP超時。
11. VM1的網路堆疊重試傳送資料包,這次在ARP快取中找到VM2的MAC地址,並可以形成乙太網幀並將其傳送出去。
12. vRouter查詢VM2的MAC地址並找到封裝路由,vRouter構建外部頭部,並將結果資料包傳送到S2。
13. S2上的vRouter對資料包進行解封裝,並查詢MPLS標籤以識別將原始乙太網幀傳送到的虛擬介面,乙太網幀被髮送到介面並由VM2接收。


不同子網虛擬機器之間的資料包流

將資料包傳送到不同子網中的目標時,順序是相同的,只是vRouter作為預設閘道器響應。VM1將在乙太網幀中傳送資料包,其中包含預設閘道器的MAC地址,其IP地址是在VM1啟動時vRouter提供的DHCP響應中提供的。


當VM1對閘道器IP地址發出ARP請求時,vRouter將使用自己的MAC地址進行響應。當VM1使用該閘道器MAC地址傳送乙太網幀時,vRouter使用幀內資料包的目的IP地址在VRF中查詢轉發表以查詢路由,該路由將通過封裝隧道連線到正在執行目標的主機。


MORE
 更多Tungsten Fabric解析文章


第一篇: TF主要特點和用例
第二篇: TF怎麼運作


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957171/viewspace-2670121/,如需轉載,請註明出處,否則將追究法律責任。

相關文章