本篇文章是 Netflix 技術分享文(Netflix 真的滿多技術文章的),本內容想要探討的是 Netflix 如何使用 eBPF 這個技術來洞察所有的網路流量與封包。
Netflix 開發了一個觀察網路流量封包的 sidecar 服務,稱為 Flow Exporter。這個服務使用 eBPF 來達到即時的 TCP 流量抓取,而產生額外的 CPU/Memory 都少於 1%,整體來說是非常好的表現。
挑戰
Netflix 目前使用 AWS 底層的網路元件來搭建其雲端網路基礎建設,包含了 AWS VPC, DirectConnect, VPC Peering, Transit Gateways, NAT Gatewats 以及 Netflix 自己的裝置與設備。
而 Netflix 的軟體基礎建設則是基於 AWS 搭建的一個大型的分散式環境,這些環境產生了下列挑戰
1. App Dependencies and Data Flow Mappings
隨者微服務架構的擴展,有愈來愈多的服務被部署,但是這些服務背後的彼此的依賴關係則是一個很難清楚描述的現象。開發與維運人員因為沒有辦法清楚的去定位這些資料,所以很多時候沒有很辦法很漂亮的去解決系統性的問題
2. Service Segamentation
因為雲端部署的簡單操作,導致整個環境內有愈來愈多的 AWS 帳號,愈來愈多不同的部署策略以及各種網路互相連接的需求。
3. Network Availability
隨者整個 Netflix 整個生態系的成長,如何瞭解當前網路效能的瓶頸以及可能潛在的問題是一個困難回答的問題。
為了解決上述的問題,Netflix 認為一個基於雲端網路流向的洞察工具必須要能夠針對維運與分析兩種情境去提供相關的資料,並且有辦法去找出當前的網路問題。
Netflix 目前會收集並分析不同來源的網路除錯資料,譬如
VPC Flow logs, ELB Access Logs 以及 eBPF flow logs 等,將其整理並分析後就可以傳給使用者或是內部不同的團隊來進行後續的除錯與處理。
Flow Exporter
本篇文章後半部分主要在介紹Flow Exporter 這個基於 eBPF 的 sidecare 是如何設計與運作的,其使用到了 Hive 以及 Druid 這兩種不同的 DB 來存放資料,對於這塊有興趣的可以再仔細閱讀全文。
https://netflixtechblog.com/how-netflix-uses-ebpf-flow-logs-at-scale-for-network-insight-e3ea997dca96?gi=d5fd990c9368
同時也有10000部Youtube影片,追蹤數超過62萬的網紅Bryan Wee,也在其Youtube影片中提到,...