Alsoran 是 5G 無線存取網路 (RAN) 的 gNodeB 集中單元 (gNB-CU) 的 Rust 實作。
gNodeB 是管理 5G 用戶裝置 (UE) 無線存取並將其連接到 5G 核心網路的元件。
該項目目前只是概念驗證,尚未成為功能齊全的 gNB-CU。
cargo build
./target/debug/gnb-cu --mcc 111 --mnc 11 --amf-ip 5.5.5.5
通常只涵蓋成功案例,並且有很多“待辦事項”。
它是用 Rust 編寫的,具有“橫向擴展單跳”設計。
「橫向擴展」意味著它具有多個可互換的無狀態工作進程。一個請求可以被任何worker處理,沒有一個worker是單點故障。當拓樸發生變化時,Coordinator進程協調worker的介面管理交換。動機是可擴展性和容錯能力。
「單跳」意味著,在主線情況下,訊息由單一工作執行緒處理(而不是透過多個微服務或負載平衡器連結)。每個 Alsoran CU-CP 工作執行緒都有自己的與 AMF、DU 和 CU-UP 的 SCTP 連線。動機是速度和系統簡單性。
Rust 是新 O-RAN 開發的一個有吸引力的語言選擇。主要的進入障礙是基於 ASN.1 和 SCTP 的協定。該項目試圖證明這一障礙是可以克服的。
此建置依賴lld
來減少連結器記憶體需求。您需要安裝 LLD( sudo apt install lld
或類似命令),或編輯 .cargo/config 以刪除target.x86_64-unknown-linux-gnu
配置,這將恢復為普通cc
連結。
cargo test
運行整合測試套件,減去即時 Redis 測試。
要執行即時 Redis 測試,可以使用cargo test live_redis -- --ignored
。為此,您需要在路徑中包含redis-server
。在此處取得 Redis:https://redis.io/docs/getting-started/。
以下測試顯示Alsran CU-CP和CU-UP執行UE註冊、會話建立和使用者面轉送。
RUST_LOG=info cargo test successful_pdu_session_setup --test pdu_session -- --nocapture
此測試顯示兩個工作程序啟動,協調器指示工作程序如何初始化其 NGAP、E1AP 和 F1AP 介面。
RUST_LOG=info cargo test two_workers_base --test two_workers -- --nocapture
您可以透過並行運行以下命令在這些測試期間捕獲資料包。
sudo tcpdump -w alsoran.pcap -i lo port 38472 or port 38412 or port 38462 or port 38462 or port 2152
....然後在測試結束時按 Ctrl-C 並在 Wireshark 中開啟alsoran.pcap。
若要針對 free5GC 執行即時註冊需要更多設定 - 請參閱示範說明。
最後,您可能想瀏覽文件/設計中的設計說明,其中提供了迄今為止 Alsoran 中的設計想法。
如果您想做出貢獻,請先建立 Github 問題或討論來提出您想要進行的變更。
積壓工作顯示了正在處理的主要項目,並追蹤了技術債領域。
重新產生兩個 OpenAPI 介面的說明位於 OpenAPI 產生中。
Alsoran 協議處理和工作流程邏輯基於以下規範。