Alwaysran は、5G 無線アクセス ネットワーク (RAN) の gNodeB Centralized Unit (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
基本的に成功事例のみが取り上げられており、「To Do」がたくさんあります。
これは Rust で書かれており、「スケールアウト シングルホップ」設計になっています。
「スケールアウト」とは、交換可能なステートレス ワーカー プロセスが複数あることを意味します。リクエストはどのワーカーでも処理でき、単一障害点となるワーカーはありません。コーディネーター プロセスは、トポロジが変更されたときにワーカーのインターフェイス管理交換を調整します。その動機はスケーラビリティと耐障害性です。
「シングルホップ」とは、メインラインの場合、メッセージが (複数のマイクロサービスやロード バランサーを介してチェーンされるのではなく) 単一のワーカーによって処理されることを意味します。各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/。
次のテストは、Alsoran CU-CP および CU-UP が UE 登録、セッション確立、およびユーザープレーン転送を実行することを示しています。
RUST_LOG=info cargo test successful_pdu_session_setup --test pdu_session -- --nocapture
このテストでは、2 つのワーカーが起動し、コーディネーターがワーカーに 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 の問題を作成するか、加えたい変更を提案するディスカッションを作成してください。
バックログには、現在取り組んでいる主な項目が表示され、技術的負債の領域も追跡されます。
2 つの OpenAPI インターフェイスを再生成する手順は、OpenAPI の生成に記載されています。
Anotherran のプロトコル処理とワークフロー ロジックは、次の仕様に基づいています。