基于三層流量卸載方案的子網路由
本文分享自天翼云開發者社區《基于三層流量卸載方案的子網路由》,作者:l****n
顧名思義,子網路由是子網級別的。如果子網關聯了子網路由,那么會優先查子網路由表中的路由。通過使用子網路由,用戶的虛擬私有網絡將具備一些高/級的功能,比如在VPC中部署集中式防火墻等。
本文介紹的子網路由功能是基于三層流量卸載方案、通過OpenFlow流表方式來實現的。在介紹子網路由之前,先了解一下東西向三層流量卸載方案。如圖1所示,vm1、vm2和vm3分別屬于三個不同網段的子網,同屬于一個VPC,即三層可通。在卸載之前,同VPC三層流量均需要通過租戶網關TGW拉通,導致TGW的流量壓力較大,無法滿足大客戶對于同VPC三層互訪流量的需求。
圖1 基本組網圖
卸載前同主機跨網段和跨主機跨網段互訪流量路徑分別如下圖2和圖3所示。可以發現,不管是同主機還是跨主機,只要是跨網段都需要繞行租戶網關。因此,可以考慮對三層東西向流量進行卸載,使它們下沉至OVS,以減輕租戶網關的壓力。
圖2 同主機跨網段互訪(卸載前)
圖3 跨主機跨網段互訪(卸載前)
卸載后的三層互訪流量路徑分別如圖4和5所示。東西向三層流量不再需要繞行租戶網關,同主機內的流量在OVS內部完成轉發,跨主機的流量直接送至目的虛機所在宿主機,從而實現流量的最短路徑轉發。
圖4 同主機跨網段互訪(卸載后)
圖5 跨主機跨網段互訪(卸載后)
跨網段路由轉發處理過程大致如下:當路由器收到一個IP數據包,路由器就會找出數據包的三層包頭中的目的IP地址,然后拿著目的IP地址到自己的路由表中進行查詢,找到“最匹配”的路由條目后,將數據包根據路由條目所指示的出接口或者下一跳IP轉發出去,這就是IP路由。(當然路由器還會做一些額外的工作:將數據包的三層包頭的TTL減一,修改數據包的二層源MAC地址為自己出接口的MAC,修改數據包的二層目的MAC地址為下一跳的MAC)。
接下來回歸主題,介紹一下子網路由。VPC內子網和路由表的關聯關系如圖6所示,一個子網只能關聯一個路由表,一個路由表(只能屬于一個VPC)可以被多個子網關聯。VPC1內的子網不允許關聯屬于VPC2的路由表。
圖6 VPC內子網和路由表的關聯關系
路由表由一系列具體的路由規則(條目)組成,按照類型可分為默認路由表和自定義路由表。默認路由表中包含用于子網之間互通,訪問公網的路由規則,以及VPN,專線和云間高速等在創建業務之后同步過來的路由,這些路由屬于系統路由,用戶不可以刪除。在刪除自定義路由表時,如果路由表存在關聯的子網則不允許刪除。在刪除子網時,如果子網存在關聯的自定義路由表,則不允許刪除;如果子網存在關聯的默認路由表,則可以刪除。
圖7 默認路由表和自定義路由表
如圖7所示,在創建VPC時,自動創建默認路由表,一個VPC對應一張默認路由表。VPC內新創建的子網,自動關聯所屬VPC內的默認路由表。在用戶創建了自定義路由表之后,可以將子網換綁到該VPC內已經創建的自定義路由表,以管理和控制子網內虛機的(出方向)流量轉發路徑。每條路由規則對應OVS上一條路由流表,流表的動作會將源MAC更改為網關MAC,目的MAC更改為下一跳的MAC。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。