Alsoran est une implémentation Rust de l'unité centralisée gNodeB (gNB-CU) du réseau d'accès radio (RAN) 5G.
Le gNodeB est le composant qui gère l'accès radio des équipements utilisateur (UE) 5G et les connecte à un cœur 5G.
Ce projet est actuellement une preuve de concept et n'est pas encore un gNB-CU entièrement fonctionnel.
cargo build
./target/debug/gnb-cu --mcc 111 --mnc 11 --amf-ip 5.5.5.5
Généralement, seuls les cas de réussite sont couverts, et il y a beaucoup de « choses à faire ».
Il est écrit en Rust et a une conception "scale-out single hop".
« Scale-out » signifie qu'il dispose de plusieurs processus de travail apatrides interchangeables. Une demande peut être traitée par n’importe quel travailleur et aucun travailleur n’est un point de défaillance unique. Un processus Coordinateur coordonne les échanges de gestion d'interface des Workers lorsque la topologie change. La motivation est l’évolutivité et la tolérance aux pannes.
« Single hop » signifie que, dans le cas principal, un message est traité par un seul travailleur (plutôt que chaîné via plusieurs microservices ou équilibreurs de charge). Chaque travailleur Alsoran CU-CP dispose de sa propre connexion SCTP à l'AMF, au DU et au CU-UP. La motivation est la rapidité et la simplicité du système.
Rust est un choix de langage attrayant pour le nouveau développement O-RAN. La principale barrière à l’entrée réside dans les protocoles basés sur ASN.1 et SCTP. Ce projet tente de prouver que cet obstacle est surmontable.
La version s'appuie sur lld
pour réduire les besoins en mémoire de l'éditeur de liens. Vous devrez soit installer LLD ( sudo apt install lld
ou similaire), soit modifier .cargo/config pour supprimer la configuration target.x86_64-unknown-linux-gnu
, qui revient à une simple liaison cc
.
cargo test
exécute la suite de tests d'intégration, moins le test Redis en direct.
Pour exécuter le test Redis en direct, cargo test live_redis -- --ignored
. Pour que cela réussisse, vous devez avoir redis-server
sur votre chemin. Obtenez Redis ici : https://redis.io/docs/getting-started/.
Le test suivant montre les CU-CP et CU-UP Alsoran effectuant l'enregistrement de l'UE, l'établissement de session et le transfert du plan utilisateur.
RUST_LOG=info cargo test successful_pdu_session_setup --test pdu_session -- --nocapture
Ce test montre deux travailleurs démarrant et le coordinateur expliquant aux travailleurs comment initialiser leurs interfaces NGAP, E1AP et F1AP.
RUST_LOG=info cargo test two_workers_base --test two_workers -- --nocapture
Vous pouvez capturer des paquets pendant ces tests en exécutant les opérations suivantes en parallèle.
sudo tcpdump -w alsoran.pcap -i lo port 38472 or port 38412 or port 38462 or port 38462 or port 2152
...puis Ctrl-C à la fin du test et ouvrezalsoran.pcap dans Wireshark.
Pour exécuter l'enregistrement en direct sur free5GC, il faut un peu plus de configuration - voir les instructions de la démo.
Enfin, vous souhaiterez peut-être parcourir les notes de conception dans la documentation/conception, qui donnent une idée de la réflexion conceptuelle menée jusqu'à présent par Alsoran.
Si vous souhaitez contribuer, commencez par créer un ticket ou une discussion Github pour proposer le changement que vous souhaitez apporter.
Le backlog montre les principaux éléments en cours de travail et suit également les domaines de la dette technologique.
Les instructions pour régénérer les deux interfaces OpenAPI sont en génération OpenAPI.
La gestion du protocole Alsoran et la logique du flux de travail sont basées sur les spécifications suivantes.