Данный пример конфигурации показывает возможность развертывания тестовой 5G сети на основе eUPF с помощью следующих компонентов:
- Docker-compose
- UERANSIM в качестве радиочасти
- Open5GS ядро сети
- eUPF в качестве модуля UPF
https://docs.docker.com/engine/install/
cd docs/deployments/open5gs-compose/
docker network create \
--driver=bridge \
--subnet=172.20.0.0/24 \
--gateway=172.20.0.1 \
-o "com.docker.network.bridge.name"="br-open5gs-main" \
open5gs-main
sudo ethtool -K br-open5gs-main tx off
Здесь мы отключаем tx offload чтобы не было TCP checksum error на внутренних пакетах, для тестов iperf.
Видимо дело в том, что по-умолчанию включен offloading расчета контрольных сумм и ядро до последнего откладывает вычисление csum в расчете на то, что csum посчитается в драйвере при отправке пакета. Но у нас виртуальное окружение и пакет в итоге улетает в туннель GTP на UPF. Видимо из-за этого не происходит корректного расчета csum.
При этом если отключить offloading, то контрольная сумма считается сразу же на iperf и всё работает.
sudo apt install iperf3
for i in $(seq 5201 5208); do (iperf3 -s -p $i &) ; done
- скачайте требуемые образы контейнеров
make pull
- запустите сервисные контейнеры (mongodb)
make infra
- запустите eUPF
make eupf
- запустите ядро сети
make core
- запустите gNB (данная команда запустит несколько экземпляров gNB, см. параметр
scale
в скрипте make)
make gnb
- запустите эмулятор UE1 UERANSim, который будет взаимодействовать со штатным UPF в open5gs ядре
make ue1
- запустите эмулятор UE2 UERANSim, который будет взаимодействовать с eUPF
make ue2
- запустите iperf тест для каждого эмулятора UE
make test
результаты выполнения можно найти в папке .deploy/docker/local-data/iperf
после окончания теста
make clean
docker network rm open5gs-main