Alsoran ist eine Rust-Implementierung der gNodeB Centralized Unit (gNB-CU) des 5G Radio Access Network (RAN).
Der gNodeB ist die Komponente, die den Funkzugriff von 5G-Benutzergeräten (UEs) verwaltet und diese mit einem 5G-Kern verbindet.
Dieses Projekt ist derzeit ein Proof of Concept und noch keine voll funktionsfähige gNB-CU.
cargo build
./target/debug/gnb-cu --mcc 111 --mnc 11 --amf-ip 5.5.5.5
Im Allgemeinen werden nur die Erfolgsfälle behandelt, und es gibt viele „To Dos“.
Es ist in Rust geschrieben und verfügt über ein „Scale-out Single Hop“-Design.
„Scale-out“ bedeutet, dass mehrere austauschbare zustandslose Arbeitsprozesse vorhanden sind. Eine Anfrage kann von jedem Worker bearbeitet werden und kein Worker stellt einen Single Point of Failure dar. Ein Koordinatorprozess koordiniert den Schnittstellenverwaltungsaustausch der Worker, wenn sich die Topologie ändert. Die Motivation ist Skalierbarkeit und Fehlertoleranz.
„Single Hop“ bedeutet, dass im Mainline-Fall eine Nachricht von einem einzelnen Worker verarbeitet wird (anstatt über mehrere Microservices oder Load Balancer verkettet zu sein). Jeder Alsoran CU-CP-Worker verfügt über eine eigene SCTP-Verbindung zum AMF, dem DU und dem CU-UP. Die Motivation ist Geschwindigkeit und Systemeinfachheit.
Rust ist eine attraktive Sprachwahl für die neue O-RAN-Entwicklung. Die größte Eintrittsbarriere sind die auf ASN.1 und SCTP basierenden Protokolle. Dieses Projekt versucht zu beweisen, dass diese Barriere überwindbar ist.
Der Build basiert auf lld
um den Speicherbedarf des Linkers zu reduzieren. Sie müssen entweder LLD installieren ( sudo apt install lld
oder ähnlich) oder .cargo/config bearbeiten, um die Konfiguration target.x86_64-unknown-linux-gnu
zu entfernen, die auf eine einfache cc
Verknüpfung zurückgreift.
cargo test
wird die Integrationstestsuite abzüglich des Live-Redis-Tests ausgeführt.
Um den Live-Redis-Test auszuführen, laden Sie cargo test live_redis -- --ignored
. Damit dies gelingt, müssen Sie redis-server
in Ihrem Pfad haben. Holen Sie sich Redis hier: https://redis.io/docs/getting-started/.
Der folgende Test zeigt, wie Alsoran CU-CP und CU-UP die UE-Registrierung, den Sitzungsaufbau und die Benutzerebenenweiterleitung durchführen.
RUST_LOG=info cargo test successful_pdu_session_setup --test pdu_session -- --nocapture
Dieser Test zeigt, wie zwei Arbeiter beginnen und der Koordinator die Arbeiter anweist, wie sie ihre NGAP-, E1AP- und F1AP-Schnittstellen initialisieren.
RUST_LOG=info cargo test two_workers_base --test two_workers -- --nocapture
Sie können während dieser Tests eine Paketerfassung durchführen, indem Sie Folgendes parallel ausführen.
sudo tcpdump -w alsoran.pcap -i lo port 38472 or port 38412 or port 38462 or port 38462 or port 2152
...dann am Ende des Tests Strg-C drücken und alsoran.pcap in Wireshark öffnen.
Um die Live-Registrierung gegen free5GC durchzuführen, ist etwas mehr Einrichtung erforderlich – siehe Demo-Anweisungen.
Abschließend möchten Sie vielleicht die Designnotizen in Dokumentation/Design durchsuchen, die einen Eindruck vom Designdenken vermitteln, das bisher in Alsoran eingeflossen ist.
Wenn Sie einen Beitrag leisten möchten, erstellen Sie zunächst ein Github-Problem oder eine Github-Diskussion, um die gewünschte Änderung vorzuschlagen.
Der Rückstand zeigt die wichtigsten Punkte, an denen gearbeitet wird, und verfolgt auch Bereiche mit technischen Schulden.
Die Anweisungen zur Neugenerierung der beiden OpenAPI-Schnittstellen finden Sie in der OpenAPI-Generierung.
Die Protokollverarbeitung und Workflow-Logik von Alsoran basiert auf den folgenden Spezifikationen.