Alsoran es una implementación de Rust de la Unidad Centralizada gNodeB (gNB-CU) de la Red de Acceso por Radio (RAN) 5G.
El gNodeB es el componente que gestiona el acceso de radio de los equipos de usuario (UE) 5G y los conecta a un núcleo 5G.
Este proyecto es actualmente una prueba de concepto y aún no es un gNB-CU completamente funcional.
cargo build
./target/debug/gnb-cu --mcc 111 --mnc 11 --amf-ip 5.5.5.5
Generalmente sólo se cubren los casos de éxito y hay muchas "cosas por hacer".
Está escrito en Rust y tiene un diseño de "salto único escalable".
"Ampliación horizontal" significa que tiene múltiples procesos de trabajo sin estado intercambiables. Cualquier trabajador puede procesar una solicitud y ningún trabajador es un único punto de falla. Un proceso Coordinador coordina los intercambios de gestión de interfaz de los trabajadores cuando cambia la topología. La motivación es la escalabilidad y la tolerancia a fallos.
"Salto único" significa que, en el caso principal, un solo trabajador procesa un mensaje (en lugar de encadenarlo a través de múltiples microservicios o balanceadores de carga). Cada trabajador de Alsoran CU-CP tiene su propia conexión SCTP con AMF, DU y CU-UP. La motivación es la velocidad y la simplicidad del sistema.
Rust es una opción atractiva de lenguaje para el desarrollo de nuevas O-RAN. La principal barrera de entrada son los protocolos basados en ASN.1 y SCTP. Este proyecto intenta demostrar que esta barrera es superable.
La compilación se basa en lld
para reducir las necesidades de memoria del vinculador. Deberá instalar LLD ( sudo apt install lld
o similar) o editar .cargo/config para eliminar la configuración target.x86_64-unknown-linux-gnu
, que vuelve al enlace cc
simple.
cargo test
ejecuta el conjunto de pruebas de integración, menos la prueba de Redis en vivo.
Para ejecutar la prueba de Redis en vivo, cargo test live_redis -- --ignored
. Para que esto suceda, necesita tener redis-server
en su camino. Obtenga Redis aquí: https://redis.io/docs/getting-started/.
La siguiente prueba muestra el CU-CP y CU-UP de Alsoran realizando el registro de UE, el establecimiento de sesión y el reenvío del plano de usuario.
RUST_LOG=info cargo test successful_pdu_session_setup --test pdu_session -- --nocapture
Esta prueba muestra a dos trabajadores iniciando y al Coordinador instruyendo a los trabajadores cómo inicializar sus interfaces NGAP, E1AP y F1AP.
RUST_LOG=info cargo test two_workers_base --test two_workers -- --nocapture
Puede capturar paquetes durante estas pruebas ejecutando lo siguiente en paralelo.
sudo tcpdump -w alsoran.pcap -i lo port 38472 or port 38412 or port 38462 or port 38462 or port 2152
... luego Ctrl-C al final de la prueba y abra alsoran.pcap en Wireshark.
Para ejecutar el registro en vivo en free5GC se necesita un poco más de configuración; consulte las instrucciones de demostración.
Finalmente, es posible que desees consultar las notas de diseño en documentación/diseño, que dan una idea del pensamiento de diseño que se ha aplicado a Alsoran hasta ahora.
Si desea contribuir, comience creando un problema o discusión en Github para proponer el cambio que desea realizar.
El trabajo pendiente muestra los principales elementos en los que se está trabajando y también rastrea las áreas de deuda tecnológica.
Las instrucciones para regenerar las dos interfaces OpenAPI se encuentran en Generación de OpenAPI.
El manejo del protocolo y la lógica del flujo de trabajo de Alsoran se basan en las siguientes especificaciones.