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 协议处理和工作流程逻辑基于以下规范。