LTE Mesh Backhaul: Інтернет від сусідньої вишки¶
Концепція¶
LTE Mesh Backhaul дозволяє вишкам без прямого інтернет-з'єднання отримувати доступ через сусідню вишку по LTE радіоканалу.
┌─────────────────┐ LTE Radio ┌─────────────────┐
│ ВИШКА A │◄──────────────────────────►│ ВИШКА B │
│ (без інтернету)│ │ (з інтернетом) │
├─────────────────┤ ├─────────────────┤
│ • LTE Modem (UE)│ │ • Starlink │
│ • srsENB │ │ • srsENB │
│ • WireGuard │ │ • Open5GS Core │
│ • Свої клієнти │ │ • WireGuard Hub │
└────────┬────────┘ └────────┬────────┘
│ │
┌────▼────┐ ┌────▼────┐
│Клієнти A│ │Клієнти B│
└─────────┘ └─────────┘
Архітектура¶
Вишка B (Primary) — з інтернетом¶
Компоненти:
- Інтернет-канал (Starlink, оптика, радіорелейка)
- srsENB — базова станція LTE
- Open5GS Core — ядро мережі (MME, HSS, SGW, PGW)
- WireGuard Hub — центральна точка mesh-мережі
Функції:
- Обслуговує своїх клієнтів напряму
- Надає LTE-доступ для сусідніх вишок
- Роутить трафік в інтернет
Вишка A (Secondary) — без інтернету¶
Компоненти:
- LTE Modem (UE) — для підключення до Вишки B
- srsENB — своя базова станція для своїх клієнтів
- Локальний Open5GS Core (опційно)
- WireGuard Client — тунель через LTE
Функції:
- Підключається до Вишки B як звичайний LTE клієнт
- Роздає інтернет своїм клієнтам
- Підтримує автономну роботу при втраті зв'язку з Вишкою B
Варіанти реалізації¶
Варіант 1: Централізований Core¶
Вишка A Вишка B
┌──────────────┐ ┌──────────────┐
│ srsENB │ │ srsENB │
│ │ │ LTE │ │ │
│ LTE Modem ──┼────────────────►│ Open5GS │──► Internet
│ │ │ │ Core │
│ WireGuard ──┼── tunnel ──────►│ WireGuard │
└──────────────┘ └──────────────┘
Переваги:
- Простіша конфігурація
- Єдина база абонентів (HSS)
- Централізоване управління
Недоліки:
- Залежність від зв'язку з Вишкою B
- При втраті зв'язку — немає локальних сервісів
Варіант 2: Розподілений Core (рекомендований)¶
Вишка A Вишка B
┌──────────────┐ ┌──────────────┐
│ srsENB │ │ srsENB │
│ │ │ LTE │ │ │
│ Open5GS ────┼────────────────►│ Open5GS │──► Internet
│ (local) │ │ (primary) │
│ │ │ │ │ │
│ LTE Modem ──┼── backhaul ────►│ │
│ │ │ │ │
│ WireGuard ──┼── tunnel ──────►│ WireGuard │
└──────────────┘ └──────────────┘
Переваги:
- Автономна робота при втраті зв'язку
- Локальні сервіси (Matrix, файли) працюють офлайн
- Масштабованість
Недоліки:
- Складніша конфігурація
- Потрібна синхронізація баз абонентів
Конфігурація¶
Вишка B: Primary Node¶
1. Open5GS Core¶
# /etc/open5gs/mme.yaml
mme:
s1ap:
- addr: 0.0.0.0 # Приймає з'єднання від усіх eNB
gummei:
plmn_id:
mcc: 001
mnc: 01
mme_gid: 1
mme_code: 1
tai:
plmn_id:
mcc: 001
mnc: 01
tac: 1
2. srsENB¶
# /etc/srsran/enb.conf
[enb]
enb_id = 0x19B01
mcc = 001
mnc = 01
mme_addr = 127.0.0.1
gtp_bind_addr = 10.10.10.1
s1c_bind_addr = 10.10.10.1
[rf]
device_name = lime
device_args = auto
3. WireGuard Hub¶
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.1/24
PrivateKey = <PRIVATE_KEY_B>
ListenPort = 51820
# Вишка A
[Peer]
PublicKey = <PUBLIC_KEY_A>
AllowedIPs = 10.10.10.2/32, 10.10.20.0/24
Вишка A: Secondary Node¶
1. LTE Modem підключення¶
# Підключення через QMI/MBIM модем
sudo qmicli -d /dev/cdc-wdm0 --dms-get-operating-mode
sudo qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength
# Або через ModemManager
mmcli -m 0 --simple-connect="apn=internet"
2. WireGuard через LTE¶
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.2/24
PrivateKey = <PRIVATE_KEY_A>
# Роутинг через LTE інтерфейс
Table = off
PostUp = ip route add 10.10.10.1/32 via <LTE_GATEWAY> dev wwan0
PostUp = wg set %i fwmark 51820
PostUp = ip route add default dev %i table 51820
PostUp = ip rule add fwmark 51820 table 51820
[Peer]
PublicKey = <PUBLIC_KEY_B>
Endpoint = <ВИШКА_B_IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
3. Локальний srsENB для своїх клієнтів¶
# /etc/srsran/enb.conf
[enb]
enb_id = 0x19B02
mcc = 001
mnc = 01
# MME через WireGuard тунель
mme_addr = 10.10.10.1
gtp_bind_addr = 10.10.10.2
s1c_bind_addr = 10.10.10.2
[rf]
device_name = lime
device_args = auto
# Інша частота щоб не заважати Вишці B
dl_earfcn = 3350
Автоматичний failover¶
Скрипт моніторингу зв'язку¶
#!/bin/bash
# /usr/local/bin/backhaul-monitor.sh
PRIMARY_GW="10.10.10.1"
CHECK_INTERVAL=30
FAIL_THRESHOLD=3
fail_count=0
while true; do
if ping -c 1 -W 5 $PRIMARY_GW > /dev/null 2>&1; then
fail_count=0
# Зв'язок є — використовуємо primary backhaul
if [ -f /tmp/offline_mode ]; then
echo "$(date): Connection restored, switching to online mode"
rm /tmp/offline_mode
systemctl restart wg-quick@wg0
fi
else
((fail_count++))
echo "$(date): Primary gateway unreachable ($fail_count/$FAIL_THRESHOLD)"
if [ $fail_count -ge $FAIL_THRESHOLD ]; then
if [ ! -f /tmp/offline_mode ]; then
echo "$(date): Switching to offline mode"
touch /tmp/offline_mode
# Активуємо локальні сервіси
systemctl start open5gs-mmed
systemctl start open5gs-sgwcd
systemctl start matrix-dendrite
fi
fi
fi
sleep $CHECK_INTERVAL
done
Systemd сервіс¶
# /etc/systemd/system/backhaul-monitor.service
[Unit]
Description=LTE Backhaul Monitor
After=network.target wg-quick@wg0.service
[Service]
Type=simple
ExecStart=/usr/local/bin/backhaul-monitor.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Частотне планування¶
При розгортанні декількох вишок в межах радіовидимості важливо уникати інтерференції:
| Вишка | Band | EARFCN | Частота DL | Частота UL |
|---|---|---|---|---|
| A | B7 | 3100 | 2655 MHz | 2535 MHz |
| B | B7 | 3350 | 2680 MHz | 2560 MHz |
| C | B3 | 1575 | 1842.5 MHz | 1747.5 MHz |
Правила:
- Мінімальна відстань між каналами: 10 MHz
- Для сусідніх вишок використовувати різні bands якщо можливо
- При використанні одного band — рознести частоти максимально
Тестування¶
Перевірка LTE backhaul¶
# На Вишці A — перевірити підключення модема
mmcli -m 0
# Перевірити IP адресу від Вишки B
ip addr show wwan0
# Перевірити WireGuard тунель
wg show
# Перевірити маршрути
ip route show table all | grep -E "wg0|wwan0"
# Тест швидкості через backhaul
iperf3 -c 10.10.10.1 -t 30
Перевірка клієнтів на Вишці A¶
# Моніторинг підключених UE
sudo srsran_enb_metrics
# Перевірка S1 з'єднання до MME
sudo tcpdump -i wg0 port 36412
Діагностика проблем¶
Немає LTE з'єднання з Вишкою B¶
# Перевірити рівень сигналу
mmcli -m 0 --signal-get
# Перевірити реєстрацію в мережі
mmcli -m 0 --3gpp-scan
# Логи модема
journalctl -u ModemManager -f
WireGuard тунель не встановлюється¶
# Перевірити endpoint доступність
ping <ВИШКА_B_IP>
# Перевірити handshake
wg show wg0
# Логи WireGuard
dmesg | grep wireguard
Клієнти не отримують інтернет¶
# Перевірити NAT на Вишці A
iptables -t nat -L -n -v
# Перевірити forwarding
sysctl net.ipv4.ip_forward
# Перевірити GTP тунелі
ip link show | grep gtp
Безпека¶
Рекомендації¶
- Шифрування: Весь трафік між вишками через WireGuard
- Автентифікація: Унікальні IMSI/Ki для кожної SIM
- Firewall: Обмежити доступ до management інтерфейсів
- Моніторинг: Логування всіх підключень
Firewall правила для Вишки B¶
# Дозволити LTE трафік тільки від відомих eNB
iptables -A INPUT -p sctp --dport 36412 -s 10.10.10.0/24 -j ACCEPT
iptables -A INPUT -p sctp --dport 36412 -j DROP
# Дозволити GTP тільки від WireGuard
iptables -A INPUT -p udp --dport 2152 -i wg0 -j ACCEPT
iptables -A INPUT -p udp --dport 2152 -j DROP
Масштабування¶
┌─────────────┐
│ INTERNET │
└──────┬──────┘
│
┌──────▼──────┐
│ ВИШКА A │
│ (Primary) │
└──┬───────┬──┘
LTE │ │ LTE
┌───────────┘ └───────────┐
│ │
┌──────▼──────┐ ┌──────▼──────┐
│ ВИШКА B │ │ ВИШКА C │
│ (Secondary) │ │ (Secondary) │
└──────┬──────┘ └──────┬──────┘
│ LTE │ LTE
┌──────▼──────┐ ┌──────▼──────┐
│ ВИШКА D │ │ ВИШКА E │
│ (Tertiary) │ │ (Tertiary) │
└─────────────┘ └─────────────┘
При такій топології:
- Кожна вишка може бути relay для наступного рівня
- WireGuard mesh забезпечує автоматичний failover
- Втрата однієї вишки не руйнує всю мережу
Останнє оновлення: Січень 2026
UMTC Project — Ukrainian Military Tactical Communications
Шлях: lte/mesh-backhaul.md