Алсолран — это реализация на Rust централизованного блока gNodeB (gNB-CU) сети радиодоступа 5G (RAN).
gNodeB — это компонент, который управляет радиодоступом пользовательского оборудования (UE) 5G и подключает его к ядру 5G.
В настоящее время этот проект является проверкой концепции и еще не является полностью функциональным gNB-CU.
cargo build
./target/debug/gnb-cu --mcc 111 --mnc 11 --amf-ip 5.5.5.5
Обычно рассматриваются только успешные случаи, а «Что нужно сделать» очень много.
Он написан на Rust и имеет «масштабируемый однохоповый» дизайн.
«Масштабирование» означает, что он имеет несколько взаимозаменяемых рабочих процессов без сохранения состояния. Запрос может быть обработан любым исполнителем, и ни один работник не является единственной точкой отказа. Процесс координатора координирует обмен данными между работниками по управлению интерфейсами при изменении топологии. Мотивация — масштабируемость и отказоустойчивость.
«Один переход» означает, что в случае основной линии сообщение обрабатывается одним исполнителем (а не связывается через несколько микросервисов или балансировщиков нагрузки). Каждый исполнитель CU-CP Алсорана имеет собственное SCTP-соединение с AMF, DU и CU-UP. Мотивация — скорость и простота системы.
Rust — привлекательный выбор языка для разработки новых O-RAN. Основным барьером для входа являются протоколы на основе ASN.1 и SCTP. Этот проект пытается доказать, что этот барьер преодолим.
Сборка использует lld
для уменьшения потребности компоновщика в памяти. Вам нужно будет либо установить LLD ( sudo apt install lld
или аналогичный), либо отредактировать .cargo/config, чтобы удалить конфигурацию target.x86_64-unknown-linux-gnu
, которая возвращается к простой ссылке cc
.
cargo test
запускает набор интеграционных тестов, за исключением живого теста Redis.
Чтобы запустить живой тест Redis, cargo test live_redis -- --ignored
. Чтобы это произошло, на вашем пути должен быть redis-server
. Загрузите Redis здесь: https://redis.io/docs/getting-started/.
Следующий тест показывает, как 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 в конце теста и откройте такжеran.pcap в Wireshark.
Чтобы запустить живую регистрацию на free5GC, потребуется немного больше настроек — см. демонстрационные инструкции.
Наконец, вы можете просмотреть заметки по проектированию в документации/проектировании, которые дают представление о дизайнерском мышлении, реализованном в Алсолране.
Если вы хотите внести свой вклад, начните с создания проблемы или обсуждения на Github, чтобы предложить изменения, которые вы хотите внести.
В журнале невыполненных работ показаны основные элементы, над которыми ведется работа, а также отслеживаются области технологического долга.
Инструкции по восстановлению двух интерфейсов OpenAPI находятся в разделе создания OpenAPI.
Логика обработки протокола и рабочего процесса Алсолрана основана на следующих спецификациях.