Facebook、谷歌、微软和亚马逊的网络架构揭秘
談談國外的互聯網巨頭的骨干網和邊緣網絡,領略其獨特設計,其中 Facebook 和 Google 的網絡主要是服務自身的產品和廣大互聯網用戶,Amazon 和 Microsoft 在云服務的業務相對多些。
作者:云網漫步
0. 前言
本文主要講一下國外的互聯網巨頭的骨干網,每家公司的網絡都有獨特設計,其中 Facebook 和 Google 的網絡主要是服務自身的產品和廣大互聯網用戶,Amazon 和 Microsoft 在云服務的業務相對多些。
Facebook、Google、Microsoft 的網絡在公開的論文都有比較詳細的描述,而 Amazon 的底層網絡相對的公開資料不多,在即刻構建 AWS 技術峰會 2019,AWS 的架構師分享了 AWS 的底層網絡(第 3 章節或者參考文獻),還是很值得學習。
1. Facebook Network
目前 Facebook 公司系列產品有月活 30+億用戶,他們需要一個服務不間斷、隨時能訪問的網站。為了實現這個目標, Facebook 在后端部署了很多先進的子系統和基礎設施 ,可擴展、高性能網絡就是其中之 一。
1.1 Facebook 全球網絡概述
1.1.1 概述
Facebook 的網絡本身就是一個大型分布式系統,針對不同任務劃分成不同層次并采用不同的技術:
邊緣(edge)
骨干(backbone)
數據中心(data centers)
遍布在用戶密集區的數量龐大的PoP/LB/cache通過骨干網作為偏遠地區、低成本、數量可控的超大型數據中心的延伸。
1.1.2 Facebooke 網絡流量模型
從流量模型看,Facebook 分為兩種類型。
1、外部流量:到互聯網的流量(Machine-to-User)。
2、內部流量:數據中心內部的流量(Machine-to-Machine)。
其中,Facebook 數據中心內部的流量要比到互聯網的流量大幾個數量級,如下圖所示。
1.1.3 解決方案
機器對機器的流量通常會大量爆發,這可能會干擾并影響正常的用戶流量,從而影網絡可靠性目標。Facebook 將跨數據中心與面向 Internet 的流量分離到不同的網絡中,并分別進行優化。
Facebook 設計了連接數據中心的網絡Express Backbone (EBB)。在邊緣互聯網出口則推出Edge Fabric 架構。
1.2 Facebook 骨干網 EBB(Express Backbone)
1.2.1 設計理念
快速演進、模塊化、便于部署
避免分布式流量工程(基于 RSVP-TE 帶寬控制)的問題,例如帶寬利用率低,路由收斂速度慢。
在網絡的邊緣利用 MPLS Segment Routing 保證網絡的精確性。
1.2.2 EBB 架構
BGP 注入器:集中式的 BGP 注入路由的控制方式。
sFlow 收集器:采集設備的狀態傳遞給流量工程控制器。
Open / R:運行在網絡設備上,提供 IGP 和消息傳遞功能。
LSP 代理(agent):運行在網絡設備上,代表中央控制器與設備轉發表對接。
1.2.3 流量工程控制平面(Traffic Engineering Controller)
NetworkStateSnapshot module:網絡狀態快照模塊,負責構建活動的網絡狀態和流量矩陣PathAllocation module:路徑分配模塊,負責基于活動流量矩陣并滿足某些最優性標準來計算抽象源路由。Drivermodule:驅動程序模塊,負責將路徑分配模塊計算出的源路由以 MPLS 段路由的形式推送到網絡設備。
1.3 Edge Fabric
2017 年 Sigcomm 大會,Facebook 推出了面向互聯網出口的邊緣網絡架構Edge Fabric。
A PoP has Peering Routers, Aggregation SWitches, and servers. A private WAN connects to datacenters and other PoPs。
Edge Fabric組件Edge Fabric 有一個 SDN/BGP 控制器。
SDN 控制器采用多重方式搜集網絡信息,如 BMP 采集器、流量采集器等。
控制器基于實時流量等相關信息,來產生針對某個 Prefix 的最優下一跳,指導不同 Prefix 在多個設備之間負載均衡。
控制器和每個 Peering Router 建立另一個 BGP 控制 session,每隔特定時間用來改寫 Prefix,通過調整 Local Preference 來改變下一跳地址。
BGP 不能感知網絡質量,Edge Server 對特定流量做 eBPF 標記 DSCP,并動態隨機選一小部分流量來測量主用和備用 BGP 路徑的端到端性能。調度發生在 PR 上,出向擁塞的 PR 上做 SR Tunnel 重定向到非擁塞的 PR 上,如下圖所示.
由此看見 Edge Fabric 有一些限制:
SDN 控制器單點控制 PR 設備。如果 PR 設備已經 Overload,需要通過 PBR 和 ISIS SR Tunnel 轉移到另一個沒有擁塞的 PR,流量路徑不夠全局優化。
控制器只能通過 Prefix 來控制流量,但是同一個 prefix,可能承載視頻和 Voice 流量,帶寬和時延要求不同,Edge Fabric 沒有 Espresso 那么靈活。
1.4 總結
Facebook 在骨干網、邊緣網絡都是使用 BGP 路由協議進行分布式控制,控制通道簡單,避免多協議導致的復雜性,而對于流量工程采用集中的處理。
2. Google Network
2.1 Google 全球網絡概述
Google 全球有 30+個數據中心,100+多個 POP 站點,同時在不同運營商網絡中有很多 Cache 站點。信息從 Google 數據中心信息大致經過 Data Center-POP-Cache 三級網絡發送到最終用戶。
Google Cloud NetwokGoogle 的廣域網實際上分為 B2 全球骨干網和 B4 數據中心互聯網,邊緣網絡是 Espresso,數據中心內部則是 Jupiter,如下圖所示。
Google網絡構成B2:面向用戶的骨干網,用于連接 DC、CDN、POP、ISPs 等。B2 主要承載了面向用戶的流量,和少部分內部流量(10%),帶寬昂貴,整體可用性要求很高,利用率在 30%~40%之間。B2 采用商用路由器設備,并且運行 MPLS RSVP-TE 進行流量工程調節。
B4:數據中心內部數據交換的網絡,網絡節點數量可控,帶寬龐大,承載的 Google 數據中心間的大部分流量。B4 承載的業務容錯能力強,帶寬廉價,整體利用率超過 90%。使用自研交換機設備,為 Google SDN 等新技術的試驗田。
B4和B2架構Espresso:邊緣網絡或者互聯網出口網絡,將 SDN 擴展到 Google 網絡的對等邊緣,連接到全球其他網絡,使得 Google 根據網絡連接實時性的測量動態智能化地為個人用戶提供服務。
2.2 B2
B2物理架構PR:Peering Router,對等路由器,類似 PE 設備,主要是其他運營商網絡進行對接。
BR:Backbone Router,骨干網路由器,類似 P 設備。
LSR:Label Switch Router,標簽交互路由器。
DR:Datacenter Route:數據中心路由器。
2.3 B4
B4 是業界第一個成功商用的數據中心互聯的 SDN 網絡。
交換機硬件是 Google 定制的,負責轉發流量,不運行復雜的控制軟件。
OpenFlow Controller (OFC) 根據網絡控制應用的指令和交換機事件,維護網絡狀態。
Central TE Server 是整個網絡邏輯上的中心控制器。
Central TE (Traffic Engineering) Server:進行流量工程。
Network Control Server (NCS):數據中心(Site)的控制器,其上運行著 OpenFlow Controller (OFC) 集群,使用 Paxos 協議選出一個 master,其他都是熱備。
交換機(switch):運行著 OpenFlow Agent (OFA),接受 OFC 的指令并將 TE 規則寫到硬件 flow-table 里。
流量工程注:網上有很多介紹 B4 的文章,本文從略。
2.4 Espresso
為了更好進行流量調度,Espresso 引入了全球 TE 控制器和本地控制器(Location Controller)來指導主機(host)發出流量選擇更好的外部 Peering 路由器/鏈路,進行 per flow Host 到 Peer 的控制,并且解耦了傳統 Peering 路由器,演進為 Peering Fabric 和服務器集群(提供反向 Web 代理)。
控制和轉發流程:
外部系統請求進入 Espresso Metro,在 Peering Fabric 上被封裝成 GRE,送到負載均衡和反向 web 代理主機處理。如果可以返回高速緩存上的內容以供用戶訪問,則該數據包將直接從此處發回。如果 CDN 沒有緩存,就發送報文通過 B2 去訪問遠端數據中心。
主機把實時帶寬需求發送給全局控制器(Global Controller)。
全局控制器根據搜集到的全球 Internet Prefix 情況,Service 類型和帶寬需求來計算調整不同應用采用不同的 Peering 路由器和端口進行轉發,實現全局出向負載均衡。
全局控制器通知本地控制器來對 host 進行轉發表更改。同時在 Peering Fabric 交換機上也配置相應的 MPLSoGRE 解封裝。
數據報文從主機出發,根據全局控制器指定的策略,首先找到 GRE 的目的地址,Peering Fabric 收到報文之后,解除 GRE 報文頭。根據預先分配給不同外部 Peering 的 MPLS 標簽進行轉發。
3. Amazon Global Network
注:本章節主要是參考即刻構建 AWS 技術峰會 2019的介紹,詳細文檔和視頻見參考文獻。
3.1 AWS 全球網絡概述
3.1.1 概述
AWS 是一家全球公有云提供商,它擁有一個全球基礎設施網絡,以運行和管理其支持全球客戶的眾多不斷增長的云服務。
構成 AWS Global Infrastructure 的組件有:
Availability Zones (AZs)
Regions
Edge PoPs
Regional Edge Caches
3.1.2 設計理念
安全性:安全是云網絡的生命線。
可用性:需要保證當某條線路出現故障的時候,不會影響整個網絡的可用性。
故障強隔離:當網絡發生故障的時候,盡量把故障限制在某個區域內。
蜂窩架構:一個個網絡模塊構成的蜂窩式網絡架構。
規模:支撐上百萬客戶的應用網絡需求。
性能:對網絡的吞吐量、延遲要求較高。
3.1.3 網絡通信案例解析
如上圖所示,一個貓咪要去 AWS 的服務器中獲取一張圖片,流量首先通過 Internet 進入到 AWS Region,Region 包括 AZ,AZ 中有 VPC,在 VPC 中有 Server,Server 上面有圖片,這是一種比較簡單的抽象流程,但是如果把網絡剝開一層再去看,其實會變得更加復雜,如下圖:
可以看到包含了更多的 AWS 網絡基礎設施,流量首先進入 Edge PoP,這個也是 CDN 的站點,流量進來之后到骨干網絡 Backbone,然后再進入 AWS Region,經過 Transit Center 進入 AZ。
3.2 AWS 全球網絡的 Region 架構
3.2.1 Availability Zone
AWS Region 是由 Availability Zone 組成。可用區(Availability Zones)實質上是 AWS 的物理數據中心。在 VPC 中創建的計算資源、存儲資源、網絡資源和數據庫資源都是托管在 AWS 的物理數據中心。
每個 AZ 至少會有一個位于同一區域內的其他 AZ,通常是一個城市,他們之間由高彈性和極低延遲的專用光纖連接相連。但是,每個 AZ 將使用單獨的電源和網絡連接,這使得 AZ 之間相互隔離,以便在單個 AZ 發生故障時最大限度地減少對其他 AZ 的影響。
每個 Region 有兩個 Transit Center,每個 Transit Center 和下面的每個 Datacenter 都有網絡互聯,同樣 Datacenter 之間也有網絡互聯,這樣可以確保 AWS 網絡的可用性,部分網絡基礎設施故障也不會影響整個 Region 的可用性。
3.2.2 AWS Regon 數據中心構造
AWS 采用蜂窩式的網絡架構。
在圖中間都是一個個小的模塊,每個模塊都有不同的一些功能,如 Access Cell 主要做主機的網絡接入,Core Edge Cell 聯通著 Transit Centers,進而把網絡流量送進 AWS backbone。
每個 Cell 都肩負著不同的功能,Cell 和 Cell 之間都進行互聯,在每一層,都可以通過平行擴展 Cell 來擴展整個網絡的承載量,達到一個可伸展的網絡。
每個 Cell 是一個單核路由器,端口比較少,可以控制故障域,轉發架構更簡單。
3.3 AWS 全球骨干網(Global Backbone)
AWS Direct Connect、互聯網連接、區域到區域傳播和 Amazon CloudFront 到 AWS 服務的連接都是需要 AWS 骨干網。
和 Region 相似,全球骨干網也是采用了蜂窩式的一個網絡架構,中間是大量的光纖連接,外層是負責一些網絡功能的 Cell。
Transit Center Cell 用來連接 Region 內部的數據中心,Edge Pop Cell 用來連接 PoP 節點,Backbone Cell 用來連接遠端的 PoP 節點進而連接到遠端 Region 的數據中心。
3.4 AWS Edge PoP
AWS Edge PoP 是部署在全球主要城市和人口稠密地區的 AWS 站點。它們遠遠超過可用區域的數量。
AWS Edge PoP 對外就是連接的一張張 ISP 的網絡。運營商接入 AWS 的骨干網絡兩個地方,一個是 Edge PoPs,另外一個 AWS 區域的網絡中轉中心(Transit Centers)。
Edge PoP 很大的一個作用就是對外擴充 AWS 的網絡,同一個 Edge PoP 可以和運營商進行多次互聯,獲得至外網網絡最優的互聯。
邊緣站點也是采用了蜂窩式的架構,Backbone Cell 連接 AWS 骨干網絡,External Internet Cell 連接外部的 Internet 網絡,同時還包括一些 AWS Edge 服務網的一些 Cell,如連接 CloudFront、Route 53、Direct Connect 和 AWS Shield,這些服務都存在于 AWS Edge PoPs 中。
3.5 總結
可以看到 AWS 在網絡的各部分都采用了蜂窩式的架構,讓這個網絡的擴展性大大提升。并且通過采用主動式數據信道監控,從 AWS 服務日志采集互聯網性能數據,以及互聯網流量工程管理來達到互聯網邊緣的監控與自我修復。
4. Microsoft Network
4.1 Microsoft Network 概述
Microsoft 在布局云計算取得很大的成功,網絡的布局功不可沒、其中 Azure 擁有超過 165,000 英里的私有光纖,跨越全球 60 多個區域和 170 多個網絡 PoP。
Azure網絡4.2 Microsoft SWAN 網絡
微軟 SWAN 廣域網 DCI 控制器也是一個典型的 SDN 網絡,從最早的靜態單層 MPLS Label 構造的端到端隧道,到最新的基于 BGP-TE SR 的全球 DCI 互聯解決方案,可以實現 95%的跨數據中心鏈路利用率。
Microsoft SWAN架構Microsoft SWAN控制面RSVP-TE/SR-TE。
集中式 TE 資源分配算法。
服務間通過資源分配模塊協作。
每個 Host 上都有代理,負責帶寬請求和限流。
注:具體細節可以見參考文獻的論文
5 數據中心網絡
再補充一下 Google 和 Facebook 的數據中心網絡設計。
5.1 Facebook 的 f4 和 f6 中文翻譯
http://arthurchiao.art/blog/facebook-f4-data-center-fabric-zh/
http://arthurchiao.art/blog/facebook-f16-minipack-zh/
5.2 Google Jupiter 中文解讀
http://zeepen.com/2015/12/31/20151231-dive-into-google-data-center-networks/ 原文 http://conferences.sigcomm.org/sigcomm/2015/pdf/papers/p183.pdf
6. 總結
從技術的角度看,互聯網公司的網絡演進是一個 SDN 的過程。SDN 是一個網絡標準化的過程,是一個通信系統互聯網化的狀態,貫穿著網絡的控制面、轉發面、管理面。
從運營的角度看,互聯網公司的網絡演進是從“所有流量 all in one” 到互聯網思路構建網絡,網絡具有分布式、模塊化、低耦合等特點。
從布局的角度看,互聯網公司的網絡布局也是技術實力全球化擴張的縮影。也希望中國的互聯網公司也能不斷的擴張邊界,進入全球化的食物鏈的頂端。
參考文獻
Facebook 網絡
https://engineering.fb.com/2017/05/01/data-center-engineering/building-express-backbone-facebook-s-new-long-haul-network/
Google 網絡
https://cseweb.ucsd.edu/~vahdat/papers/b4-sigcomm13.pdf
AWS 網絡
揭秘 AWS 底層網絡是如何構成的
https://blog.51cto.com/14929722/2533206
AWS 底層網絡揭秘
https://www.bilibili.com/video/av99088073/
Microsoft 網絡
https://www2.cs.duke.edu/courses/cps296.4/compsci590.4/fall14/Papers/SWAN.pdf
Facebook 的 F4,F16 網絡架構
http://arthurchiao.art/blog/facebook-f4-data-center-fabric-zh/
http://arthurchiao.art/blog/facebook-f16-minipack-zh/
Google Jupiter 實現
中文解讀
http://zeepen.com/2015/12/31/20151231-dive-into-google-data-center-networks/
原文
http://conferences.sigcomm.org/sigcomm/2015/pdf/papers/p183.pdf
視頻號最新視頻歡迎查看
總結
以上是生活随笔為你收集整理的Facebook、谷歌、微软和亚马逊的网络架构揭秘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 单元测试详解
- 下一篇: Redis vs Tendis:冷热混合