滑鼠點點(?)之跨國 Azure ExpressRoute 網路架構
最近打工打到雲端來了,目前順利活過了 6 個月,我只能說根本天天看網路架構議題,如果你是純雲端直接使用的,完全不需要跟地端網路接再一起的,你是不會有我這種煩惱,但如果你跟我一樣看混合網路架構 (備註:是地端+雲端,不是雲端+雲端) 的話,估計你應該跟我一樣都在滑鼠點點,開服務,對流量
分享一下當初開始看 Azure Networking 的第一篇文章就是出至於 Telstra Purple - Hub and Spoke network topology in Azure,到現在為止,若是要用 Azure 做跨國網路架構參考性還是非常高的
Azure ExpressRoute 3 個關鍵組件 + 1 個必要動作
1. ExpressRoute (ER) Circuit
這個可以先透過 Azure Portal 先把相關設定做好,包含 ER Provider / Peering Location / Bandwidth / SKU 等等,但中間接線還是需要找各地方的 ExpressRoute Provider (ERP) 接洽處理,下面列舉台灣 ExpressRoute Provider 和能 Peering Location
ER Provider # (1) | Peering Location # (2) |
---|---|
ChungHwa Telecom | Taipei |
Chief Telecom | Taipei / HongKong |
FarEasTone | Taipei |
- 提供 ExpressRoute Circuit 的 ISP 業者
- ISP 將提供 Circuit Connection 的 Azure Location
速率 (Bandwidth) 目前可選 8 種,包含 50Mbp / 100Mbps / 200Mbps / 500Mbps / 1Gbps / 2Gbps / 5Gbps / 10Gbps,目前遇到多半都在 100Mbps ~ 1Gbps 以內選擇居多
SKU 有分 3 個,但實務上台灣現在只會有 2 個可以用: Standard / Premium,差異在如果要弄 ExpressRoute Global Reach 或需要私有傳輸 Microsoft 365 內容的話就必須要選 Premium,其他選 Standard 即可
2. ExpressRoute Gateway
這服務其實藏在 Virtual Network Gateway 裡面,要選 Gateway Type: ExpressRoute
才能正確使用
至於選擇上跟有多少條 Azure ExpressRoute Circuit 和加總速率有關係
關於 Azure ExpressRoute Circuit 條數,譬如說日本/新加坡/台灣/墨西哥/捷克 5 個地方都各自有 1 條 100Mbps 的線路,若都要接到同一台 ExpressRoute Gateway 內的話,那這個 ExpressRoute Gateway SKU 就要選擇能支援 5 個 Circuit Connections 以上
關於加總速率,譬如說日本/台灣/墨西哥都各自有 1 條 500Mbps 的 Azure ExpressRoute Circuit,若都要接到同一台 ExpressRoute Gateway 內的話,那這個 ExpressRoute Gateway SKU 就要選擇 1.5Gbps (= 500Mbps * 3) 以上
通常沒有特別複雜的網路議題的話,各區域選 Standard 就可以對應很多狀況了,後續也可以原地升級,需重開約略 30 ~ 45 mins,可以用 S2S VPN 做 DR 切換,確保連線順暢
3. Circuit Connection
Pen-Pineapple-Apple-Pen
這個服務的任務就將指定的 ExpressRoute Circuit 和 ExpressRoute Gateway 接再一起,這樣就完成了 ExpressRoute 的設定,沒有什麼特殊須注意的地方
4. Last Mile
Last Mile 指的是從 ISP 到 Customer Equipment 或 User 的最後一段網路
ExpressRoute Circuit 雖然可以直接在 Portal 上開起來,但實際上是需要請 ExpressRoute Provider 廠商完成 Last Mile 的界接操作,對應到不同客戶的網路架構需求,會有不同的接法和實際需求,這段的費用就是由 Customer 對 ExpressRoute Provider 支付相關費用,並無涉及 Azure
Azure ExpressRoute 跨國網路架構案例
下面分享 4 個我常遇到和剛好有看到別國做的樣子
1. 單地單區域
一般網路上文章常見介紹架構就是長這樣,從 Taipei 地端出發,透過 ExpressRoute Provider 家的網路,接到 Azure 任意 Region 然後開始使用,相當單純
2. 單地單 Provider 雙區域
這個架構分為兩個狀況
- Azure Region 之間有 Peering: 網路直接 Region to Region,背後走 MSBB
- Azure Region 之間沒有 Peering: 流量需要走回地端,再透過路由到另一個 Region
關於 Azure Region 之間有 Peering,若因為想做 Region DR 譬如說 像 RISE with SAP Production 和 DR 之間的網路或同時可能想跨國使用特定 Azure Region 內的服務,就會這樣設計,這個常見
關於 Azure Region 之間沒有 Peering,若有服務流量強制要回地端路由在上到其他 Azure Region,比較容易出現這架構,譬如說有些防火牆或對外服務一定要下地端的,或者是有特殊原因完全不能也不給 Global VNet Peering (跨 Region 做 VNet to VNet Peering),這個少見
3. 單地雙 Provider 雙區域
少見,主要擔心怕單一 ExpressRoute Provider 整個消失,省一點作法會搭 S2S VPN 走 2nd ISP 做 DR 和 Transit Network 架構
4. 雙地雙區域 (推薦)
Azure 跨國網路傳輸一定會遇到的架構,要注意台灣跟美國地端網路是有相通的,然後要做 Global Transit Network Architecture
最常被討論的就是要不要 ExpressRoute Circuit 選配啟用 Azure ExpressRoute Global Reach 借道 MSBB 網路,然後調低權重卻保有連線能力,但非主要連線方式,然後討論外部站點要不要上 SD-WAN 解決方案,如 VMware SD-WAN、Fortinet SD-WAN 或者是 IPSec Tunnel 一條一條設定到 Azure VPN Gateway
最後就是各種整體路由最佳化和資安 Firewall 的討論
路由最佳化 (Optimized routing)
對於有 2 條線路以上的架構,無論是 IPSec Tunnel 還是 ExpressRoute Circuit,若想要控制路由走法的話,依序有 4 種有效做法:
- 於地端路由器上 Route advertising 指定偏好的 ExpressRoute Circuit
- 對於偏好的 Expressroute Circuit 設定較高的路由權重 (Connection Weight): 建議要用,因為搭 S2S VPN 作為備份線路時候,兩條線路等重時,有可能恢復之後沒切回來,詳參 Suboptimal routing from customer to Microsoft
- 對於偏好的 Expressroute Circuit 設定較少的 BGP AS Path prepend: 其實這句話應該要說,對於非偏好的要設定 BGP AS Path prepend,詳參 Solution: use AS PATH prepending
- 於地端針對偏好的路由對特定區域的 BGP Community 設高 Local Preferecne 數值,詳參 Solution: use BGP Communities
Q&A
Q1: ExpressRoute Provider 要去哪裡查?
A1: 這邊查 ExpressRoute Provider 常見大概就是 Taipei 的三家 ISP: ChungHwa Telecom, Chief Telecom, FarEasTone
Q2: 技術解釋一下 Azure ExpressRoute
A2: 從地端 Customer Edge (CE) 到 Azure MSEE 這段是走 802.1ad (QinQ)
,所以實務上需要準備一個 VLAN 當作 c-tag 作為連線之用,其他連線設定 Provider 會處理好,而 MSEE 之後就是 Microsoft Backbone (MSBB) 骨幹網路,這個骨幹網路是 Microsoft 自己維護的,可以確保高可靠/高安全/速度快/低延遲
Q3: 白話文解釋一下 Azure ExpressRoute
A3: 就是...專線/點專,只是是專門連到 MSBB 去的
Q4: 白話文解釋一下 Azure ExpressRoute Global Reach
A4: 借道 Microsoft Backbone (MSBB) 骨幹網路來傳遞跨國的流量,增加網路韌性,可以選這個
Q5: 若主要服務在新加坡 (Southeast Asia),但去新加坡的流量會從香港 PoP 進去,那這樣 ExpressRoute Gateway 要選建立在新加坡 (Southeast Asia) 還是香港 (East Asia)?
A5: ExpressRoute Gateway 要建在新加坡 (Southeast Asia),因為流量實際下車點在那,如果建立在香港 (East Asia),則還需要額外建立 Global VNet Peering 到新加坡才有辦法連到那邊的服務
Q6: Azure ExpressRoute 的 DR 怎麼做?
A6: 每個站點建議都多配 S2S VPN 作為備援或其他可路由的方式來確保連線,詳情 Using S2S VPN as a backup for ExpressRoute private peering
Q7: 我要怎麼知道用 ExpressRoute 到從我家到特定區域的 VM Latency 是多少?
A7: 這個需要 ExpressRoute Provider 的配合,因為最後一哩 (Last Mile) 只有他們知道從他們家的路由進 Microsoft PoP 是多少
但如果是想知道 Azure Region to Azure Region RTT P50 的值倒是可以參考 Azure network round-trip latency statistics,個人有三地實測過相當準
Q8: 如果我服務在中國境內要怎麼透過 ExpressRoute 接到國際?
A8: 常見是把 ExpressRoute 接到 East Asia 內,但這題目有點複雜不是一句話可以解決的,建議要詢問一下 Azure 架構師
Q9: 如果我連 Azure Cross Region 都要連在一起,那最終 Global Transit Network Architecture 會長成怎樣?
A9: 建議採用 Azure vWAN,功能全開的狀況之下會變成下圖
這圖有一堆災害情境可以解釋路由變化,不在本文詳述