Alsoran은 5G RAN(Radio Access Network)의 gNB-CU(gNodeB Centralized Unit)를 Rust로 구현한 것입니다.
gNodeB는 5G 사용자 장비(UE)의 무선 액세스를 관리하고 이를 5G Core에 연결하는 구성 요소입니다.
이 프로젝트는 현재 개념 증명이지만 아직 완전히 작동하는 gNB-CU는 아닙니다.
cargo build
./target/debug/gnb-cu --mcc 111 --mnc 11 --amf-ip 5.5.5.5
일반적으로 성공 사례만 다루며, '해야 할 일'이 많습니다.
Rust로 작성되었으며 "확장형 단일 홉" 디자인을 가지고 있습니다.
"스케일아웃"은 상호 교환 가능한 상태 비저장 작업자 프로세스가 여러 개 있음을 의미합니다. 요청은 모든 작업자가 처리할 수 있으며 작업자는 단일 실패 지점이 아닙니다. 코디네이터 프로세스는 토폴로지가 변경될 때 작업자의 인터페이스 관리 교환을 조정합니다. 동기는 확장성과 내결함성입니다.
"단일 홉"은 메인라인의 경우 메시지가 단일 작업자에 의해 처리됨을 의미합니다(여러 마이크로서비스 또는 로드 밸런서를 통해 연결되지 않음). 각 Alsoran CU-CP 작업자는 AMF, DU 및 CU-UP에 대한 자체 SCTP 연결을 가지고 있습니다. 동기는 속도와 시스템 단순성입니다.
Rust는 새로운 O-RAN 개발을 위한 매력적인 언어 선택입니다. 주요 진입 장벽은 ASN.1 및 SCTP 기반 프로토콜입니다. 이 프로젝트는 이러한 장벽이 극복 가능하다는 것을 증명하려고 시도합니다.
빌드는 링커 메모리 요구 사항을 줄이기 위해 lld
를 사용합니다. LLD( sudo apt install lld
또는 유사)를 설치하거나 .cargo/config를 편집하여 일반 cc
링크로 되돌아가는 target.x86_64-unknown-linux-gnu
구성을 제거해야 합니다.
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
이 테스트에서는 두 개의 작업자가 시작되고 코디네이터가 작업자에게 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 프로토콜 처리 및 작업 흐름 논리는 다음 사양을 기반으로 합니다.