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

Hi!歡迎來到Tungsten Fabric架構解析內容的第三篇,本文將詳細介紹Tungsten Fabric vRouter的體系結構。
Tungsten Fabric架構解析系列文章,由TF中文社區爲你呈現,旨在幫助初入TF社區的朋友答疑解惑。咱們將系統介紹TF有哪些特色、如何運做、如何收集/分析/部署、如何編排、如何鏈接到物理網絡等話題。

先來看一張Tungsten Fabric vRouter功能組件的概念視圖。
Tungsten Fabric架構解析丨詳解vRouter體系結構數據庫

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的數據包的邏輯詳細信息略有不一樣,如下兩張圖和說明中對此進行了描述。
Tungsten Fabric架構解析丨詳解vRouter體系結構併發

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

若是這是流中的第一個數據包,則不會有條目,轉發器經過pkt0接口將該數據包發送給代理。代理根據VRF路由表和訪問控制列表肯定流的操做,並使用結果更新流表。動做能夠是DROP、FORWARD、NAT或MIRROR。ide

若是要轉發數據包,轉發器將檢查目標MAC地址是不是其本身的MAC地址,若是VM在目標位於VM的子網外時將數據包發送到默認網關。在這種狀況下,將在IP轉發表中查找目的地的下一跳,不然將使用MAC地址用於查找。雖然在計算節點內,但vRouter在這裏執行物理路由器的IRB(集成路由和橋接)功能。
Tungsten Fabric架構解析丨詳解vRouter體系結構

當數據包從物理網絡到達時,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解析目標名稱。
Tungsten Fabric架構解析丨詳解vRouter體系結構

  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中查找轉發表以查找路由,該路由將經過封裝隧道鏈接到正在運行目標的主機。

更多Tungsten Fabric解析文章
第一篇:TF主要特色和用例
第二篇:TF怎麼運做

關注微信:TF中文社區
Tungsten Fabric架構解析丨詳解vRouter體系結構

相關文章
相關標籤/搜索