技術探索

5G網路元件與應用服務的監控分析工具

工業技術研究院 資訊與通訊研究所 陳怡安 李育緯


5G網路元件與應用服務走向虛擬化是必然趨勢,但監控與除錯較以往更有難度。

隨著5G系統邁向虛擬化,無論是5G核心網路、行動邊緣運算、無線電存取網路與應用服務,都逐漸容器化並部署於虛擬化平台Kubernetes中。Kubernetes是一套易於自動化部署、維護、擴充及管理容器化應用程式的系統,但是服務的容器化會讓多樣服務在共用的系統內核上運行,比起過往使用虛擬機的方式,更加深服務監控與問題排查的難度。eBPF(extended Berkeley Packet Filter)是系統內核的監控技術,可以在不改動程式碼的前提下,針對網路、安全、應用程式進行分析追蹤。
本文將介紹5G網路元件與應用服務的虛擬化、eBPF網路追蹤與內核優化技術、以及工硏院所開發的一套基於eBPF技術來對5G網路元件與應用服務的監控分析工具x-tracer。

精彩內容

1. 5G網路元件與應用服務虛擬化
2. Linux核心動態監控分析機制
3. 5G網路元件與應用服務的監控分析工具

5G網路元件與應用服務虛擬化 

虛擬化技術是將實體的硬體資源抽象出來,讓實體的資源更好的被管理與利用。常見的傳統虛擬化技術,如虛擬機器(virtual machine, VM)是以作業系統為單位,而容器(container)則是以應用程式為單位,將應用程式所需的程式碼、函式庫、環境配置檔都打包起來建立沙箱執行環境。相較於傳統的虛擬化技術,VM需要在虛擬環境中另外安裝作業系統才能執行應用程式,而Container技術是透過作業系統內核來打造虛擬執行環境,透過共用作業系統內核的作法,取代各別安裝獨立的作業系統。這項技術使得Container更加地輕量化,大幅地降低部署的成本。
Kubernetes是由Google工程師所開發的一套管理容器化應用程式的開源系統。在5G系統中包含許多網路元件與應用服務,像是無線電存取網路(Radio Access Network, RAN)、多接取邊緣運算(Multi-access Edge Computing, MEC)、5G核心網路(5G Core, 5GC)等。如圖1所示,在5G系統中,從5G應用、5GC、MEC、到RAN,都逐步走向容器化,並且透過Kubernetes平台進行管理。


圖1 5G端到端系統架構圖

 Linux核心動態監控分析機制 

國內許多業者投入研發5G O-RAN產品與5G專網系統,然而這些軟體大部分是從其他廠商技轉而來,因此工程師團隊對軟體的掌握度普遍不高,當系統發生問題,或者效能遇到瓶頸時,難以定位並找出程式問題,拉長軟體除錯與開發時程。此時可以透過Linux核心動態監控分析機制(eBPF)入手,在介紹eBPF之前,一定要提到它的前身伯克利包過濾器(Berkeley Packet Filter, BPF),是類Unix系統上數據鏈路層的一種原始接口,提供原始鏈路層封包的收發,最主要的功能就是提供網路封包的過濾[1]。像是wireshark或是tcpdump等就是基於此機制開發出來的網路封包監控工具。從Linux內核3.18版本開始提供了一種擴展的BPF虛擬機,被稱為「extended BPF」,簡稱為eBPF。它能夠提供許多網路監控以外的功能,比如附在不同的內核追蹤點上,從而獲取當前內核運行的信息。Facebook、Google、Isovalent、Microsoft和Netflix,宣布共同創立eBPF基金會,並且託管在Linux基金會旗下,大力推廣eBPF相關技術與應用。

eBPF工作流程 

eBPF可以被使用在許多地方,像是軟體定義網路(Software Defined Networking, SDN)、早期丟棄封包機制降低分散式阻斷服務(Distributed Denial-of-Service, DDoS)攻擊的影響、優化網路處理效能、入侵檢測系統等。eBPF也可以應用於軟體效能觀測工具,圖2說明應用於此的工作流程。其步驟如下:
1.觀測工具使用BPF code,可以達到以下功能:測量延遲、測量函式被呼叫數等。撰寫好的BPF code會被編譯為BPF bytecode
2.將BPF bytecode載入核心驗證器進行驗證,如果被驗證器認為該段程式碼不安全的就會被拒絕,像是程式存在迴圈和反向分支。如果BPF bytecode被接受就會被附在以下事件:
  A.kernel dynamic tracing:內核動態追蹤
  B.user-level dynamic tracing:使用者層級動態追蹤
  C.tracepoints:內核靜態追蹤
  D.perf_events:Linux 系統效能分析工具

3.BPF程式有兩種方式把測量結果回傳,per-event details(每個事件的詳細結果)或BPF map(BPF maps可以做出矩陣、相關矩陣、直方圖、數據統計等各種方式呈現結果)。


圖2 eBPF觀測工具工作流程[2]

 

eBPF應用 

1.BPF Compiler Collection(BCC)[3]

BCC是一套基於BPF,用來高效追蹤內核和操作程式的工具,它提供許多命令行工具和範例,如圖3所示。BCC讓BPF程式的撰寫更加容易,它使用C語言撰寫內核的檢測,使用LLVM編譯。前端提供Python和lua來呼叫BCC的函示庫,讓使用者更容易使用,目前已經有許多BCC工具可用於監控、追蹤Linux系統與應用服務的運行狀況。


圖3 BCC追蹤工具

x-tracer監控分析工具 

Kubernetes是一套易於自動化部署、維護、擴充及管理容器化的應用程式的系統。因為其架構設計,可以有效率且容易的部署容器化應用服務,使得Kubernetes成為現今主流的虛擬化平台。目前國內業者投入發展的5G專網系統,也都是將5G網路元件與應用服務部署於Kubernetes平台上。不過,因為容器化的服務是以行程(process)的方式共用系統內核與系統資源,若發生系統效能問題,會因為所有服務共用系統內核與系統資源的關係而難以除錯。此時x-tracer就是一套很好用於軟體除錯跟追蹤的工具。一般來說,當應用程式出問題要除錯時,工程師會先追蹤Log查找問題,若有些函式沒有對應的Log資訊時,會需要新增Log資訊並且重新編譯程式,等待下次出問題時再看是否有捕捉到問題,但下次問題可能無法復現,導致除錯效率不彰。尤其是大量服務因為容器化而同時在系統上運行時,可能交互影響的關係而導致問題更難以監控與重現,x-tracer就是一套可以解決此問題的工具。透過x-tracer,不需要重新編譯程式,可以在現有的環境中直接得到程式的資訊,像是程式的函式呼叫順序、各函式的執行頻率、與各函式的執行時間等,並且能夠比較不同環境下各函式執行時間的差異,進而找出有潛在效能問題的函式,加快問題定位與除錯的速度。
x-tracer能夠提供的的監控分析功能如下,使用者可以透過x-tracer的指令針對特定服務進行效能與行為的監控與分析。

  • Function return value
  • Function execution time
  • Function latency
  • TCP connections: closed, active, established, life
  • Block device I/O
  • New executed processes
  • Cache kernel function calls

x-tracer系統架構 

x-tracer的系統模組如圖4所示,使用者可以透過使用者介面(User Interface, UI)監控部署於Kubernetes上的服務。x-tracer提供北向接口(Northbound API)讓使用者可以撰寫自己的分析工具與之介接。使用者只需要輸入監控的服務的資訊與監控的項目,x-tracer就會將x-agent建置在需要被監控服務的工作節點(worker node),x-agent內的eBPF工具則可以監控對應的軟體。x-agent將會將從eBPF工具監控到的資料透過gRPC(gRPC Remote Procedure Calls,Google發起的遠端程序呼叫系統)存入資料庫(Database, DB)。使用者將可以從DB拿取監控的結果。在這一系列的操作下,使用者不需要重啟現有的服務,就可以達到監控的功能。


圖4 x-tracer系統架構圖

x-tracer工作流程 

x-tracer工作流程如圖5所示,使用者呼叫Northbound API開始監控服務。Northbound則會將收到的要求轉發給x-tracer,此時x-tracer則會回傳Job ID給Northbound並開啟x-agent的服務,同時還會帶入對應需要監控的參數。x-agent收到請求後,根據傳入的參數使用eBPF工具開始監控服務。x-agent收到監控結果後,則會回傳給x-tracer。使用者則可以使用呼叫Northbound API取得監控結果。


圖5 x-tracer工作流程圖

x-tracer應用於5G應用服務 

5G是高頻寬、低延遲的無線網路通訊技術,為了滿足低延遲需求的網路傳輸,會使用到時間敏感網路(Time Sensitive Networking, TSN)技術。在時間敏感網路中,會透過集中式管理的控制器,來管理網路拓樸以及網路封包的傳輸時間排程,即中央網路控制器(Central Network Controller, CNC)。中央網路控制器主要負責以下功能:

  • TSN串流路由計算:規劃TSN串流路徑的路由演算法。
  • TSN串流排程計算:802.1Qbv TAS(Time Aware Shaper)為基礎的串流封包傳輸排程技術。
  • TSN交換機設備設定:使用網路管理協議(Network Configuration Protocol, NETCONF)、簡單網路管理協定(Simple Network Management Protocol, SNMP)設定TSN設備。

以下範例將解釋如何透過x-tracer監控TSN Controller,使用者可以透過Northbound API與x-tracer介接,使用x-tracer支援的eBPF工具監控部署於kubernetes上的TSN Controller。我們撰寫了一套分析工具提供網頁圖形化介面供使用者操作,在網頁輸入被監控的服務的資料與監控項目(例如函式的延遲時間,函式呼叫次數),最終網頁就會呈現出分析過後的結果,如圖 6所示。分析工具提供以下功能:

  1. 以函式流(function flow)呈現統計結果:此範例是當TSN Controller在計算排程時,監控其程式各函式的延遲時間,進而分析出哪個函式為程式的瓶頸所在。分析結果是以function flow呈現,從圖中我們可以知道該程式是如何從最上層函式呼叫到最下層函式,可以清楚的解析出整個程式的架構。每個函式都會列出其統計分析的結果,此範例是顯示函式延遲時間的最小值、平均值、最大值與被呼叫的次數。


    圖6 5G應用服務函數流延遲數據統計

  2. 搜尋特定函式:當程式的函式很多時,我們可以透過搜尋功能,尋找想要觀察的函式,輸入函式的名稱或是透過函式延遲時間的排行榜選擇欲觀察的函式。當選定函式後,則會將此函式的function flow用紅色的圓點呈現,如圖7所示。


    圖7 5G應用服務特定函式的函式流延遲數據統計

  3. 比較兩次監控結果:在系統或應用服務正常運作時,可以先透過分析工具產生一份監控分析報告,當成此系統或應用服務效能表現的基準值。當之後系統或應用服務效能發生異常時,則可以將基準值的監控分析報告與異常時的監控分析報告進行比較,找出最小值、平均值、最大值的差異程度。從而找出目前的系統或應用服務效能差異最大的函式,此函式很可能是效能瓶頸所在。

結論 

5G網路元件與應用服務走向虛擬化是必然趨勢,而容器化技術的成熟與快速啟動、低效能損耗等優點,以及主流容器管理平台Kuberentes自動化部署、可彈性擴充和管理容器應用服務的優勢,將5G網路元件與應用服務容器化並部署於Kubernetes上已經是國內5G業者的發展方向與共識。隨著整合的服務愈多,在Kubernetes上服務的監控與除錯會更為困難,而x-tracer是一套虛擬服務的監控與分析工具,並且已經與Kuberentes系統整合,不需要重新編譯程式、也不需要重啟程式的情況下,x-tracer就可以動態監控Kubernetes上的應用服務,並且產出該程式的函式流、各函式的執行頻率與執行時間,快速定位程式效能瓶頸與問題所在,大幅縮減程式開發人員與維運人員的時間與管理成本。

參考文獻 

[1] BPF維基百科: https://zh.wikipedia.org/wiki/BPF
[2] Linux eBPF追蹤工具介紹: https://www.brendangregg.com/ebpf.html
[3] BCC內核追蹤工具包介紹: https://github.com/iovisor/bcc