Alsoran é uma implementação Rust da Unidade Centralizada gNodeB (gNB-CU) da Rede de Acesso de Rádio 5G (RAN).
O gNodeB é o componente que gerencia o acesso rádio dos Equipamentos de Usuário (UEs) 5G e os conecta a um Núcleo 5G.
Este projeto é atualmente uma prova de conceito e ainda não é um gNB-CU totalmente funcional.
cargo build
./target/debug/gnb-cu --mcc 111 --mnc 11 --amf-ip 5.5.5.5
Geralmente apenas os casos de sucesso são cobertos e há muitas tarefas pendentes.
Está escrito em Rust e tem um design de "salto único escalável".
"Scale-out" significa que possui vários processos de trabalho sem estado intercambiáveis. Uma solicitação pode ser processada por qualquer trabalhador e nenhum trabalhador é um ponto único de falha. Um processo Coordenador coordena as trocas de gerenciamento de interface dos trabalhadores quando a topologia muda. A motivação é escalabilidade e tolerância a falhas.
"Single hop" significa que, no caso da linha principal, uma mensagem é processada por um único trabalhador (em vez de encadeada por vários microsserviços ou balanceadores de carga). Cada trabalhador Alsoran CU-CP tem sua própria conexão SCTP com o AMF, o DU e o CU-UP. A motivação é a velocidade e a simplicidade do sistema.
Rust é uma escolha atraente de linguagem para o desenvolvimento de novos O-RAN. A principal barreira de entrada são os protocolos baseados em ASN.1 e SCTP. Este projeto tenta provar que esta barreira é superável.
A construção depende do lld
para reduzir as necessidades de memória do vinculador. Você precisará instalar o LLD ( sudo apt install lld
ou similar) ou editar .cargo/config para remover a configuração target.x86_64-unknown-linux-gnu
, que reverte para o link cc
simples.
cargo test
executa o conjunto de testes de integração, menos o teste Redis ao vivo.
Para executar o teste Redis ao vivo, cargo test live_redis -- --ignored
. Para que isso aconteça, você precisa ter redis-server
em seu caminho. Obtenha o Redis aqui: https://redis.io/docs/getting-started/.
O teste a seguir mostra o Alsoran CU-CP e CU-UP realizando registro de UE, estabelecimento de sessão e encaminhamento de plano de usuário.
RUST_LOG=info cargo test successful_pdu_session_setup --test pdu_session -- --nocapture
Este teste mostra dois trabalhadores iniciando e o Coordenador instruindo os trabalhadores sobre como inicializar suas interfaces NGAP, E1AP e F1AP.
RUST_LOG=info cargo test two_workers_base --test two_workers -- --nocapture
Você pode capturar pacotes durante esses testes executando o seguinte em paralelo.
sudo tcpdump -w alsoran.pcap -i lo port 38472 or port 38412 or port 38462 or port 38462 or port 2152
...então Ctrl-C no final do teste e abra Alsoran.pcap no Wireshark.
Para executar o registro ao vivo no free5GC é necessário um pouco mais de configuração - veja as instruções da demonstração.
Finalmente, você pode querer navegar pelas notas de design em documentação/design, que dão uma ideia do pensamento de design que foi aplicado em Alsoran até agora.
Se você gostaria de contribuir, comece criando um problema ou discussão no Github para propor a mudança que deseja fazer.
O backlog mostra os principais itens em andamento e também acompanha áreas de dívida tecnológica.
As instruções para regenerar as duas interfaces OpenAPI estão na geração OpenAPI.
O manuseio do protocolo Alsoran e a lógica do fluxo de trabalho são baseados nas especificações a seguir.