Быстрый переход
Программа собирается с использованием CMake. Запуск производится из каталога сборки.
Под Windows (Visual Studio):
powershell
.\build\Release\rbs_node.exe rbs.conf
Под Linux / macOS:
bash
./build/rbs_node rbs.conf
Выбор режима работы (второй аргумент):
Аргумент | Режим |
gsm | Только GSM (2G) |
umts | Только UMTS (3G) |
lte | Только LTE (4G) |
nr | Только 5G NR |
(нет) | Все четыре RAT одновременно |
Примеры:
bash
./build/rbs_node rbs.conf gsm
./build/rbs_node rbs.conf lte
./build/rbs_node rbs.conf
При запуске программа выполняет следующие действия:
Штатная остановка:
Нажмите Ctrl+C (SIGINT) в окне терминала. Программа выполняет:
Принудительная остановка (только в крайнем случае):
bash
kill -TERM <PID> # Linux
taskkill /PID <PID> # Windows
Для полного перезапуска остановите программу и запустите заново.
Для перезагрузки конфигурации без остановки используйте динамический reload через REST API или сигнал SIGHUP (Linux):
bash
kill -HUP <PID>
Программа не имеет интерактивной текстовой консоли, аналогичной vEPC. Управление осуществляется через встроенный REST API (порт 8181).
Базовый URL: http://127.0.0.1:8181/api/v1
Для работы рекомендуется использовать утилиту curl в WSL или PowerShell.
Быстрая проверка доступности:
bash
GET /api/v1/status — состояние узла
bash
Ответ содержит:
GET /api/v1/pm — счётчики производительности
bash
Возвращает все PM-счётчики OMS: lte.connectedUEs, gsm.connectedUEs, umts.connectedUEs, nr.connectedUEs, а также счётчики успешности RRC, HO, E-RAB.
GET /api/v1/alarms — активные аварии
bash
POST /api/v1/admit — подключить UE
bash
curl -X POST http://127.0.0.1:8181/api/v1/admit \
-H "Content-Type: application/json" \
-d '{"imsi": 250010000000003, "rat": "LTE"}'
Ответ: {"status":"ok","crnti":101}
GET /api/v1/links — состояние сетевых интерфейсов (Abis, Iub, S1)
bash
POST /api/v1/links/{name}/connect — поднять интерфейс
bash
curl -X POST http://127.0.0.1:8181/api/v1/links/s1/connect
POST /api/v1/links/{name}/disconnect — опустить интерфейс
2.4 Команды трассировки и инжекции
GET /api/v1/links/{name}/trace?limit=N — просмотр последних PDU
bash
curl 'http://127.0.0.1:8181/api/v1/links/s1/trace?limit=10'
POST /api/v1/links/{name}/inject — инжектировать процедуру
bash
curl -X POST http://127.0.0.1:8181/api/v1/links/s1/inject \
-H "Content-Type: application/json" \
-d '{"procedure":"S1AP:S1_SETUP"}'
Допустимые процедуры:
Интерфейс | Процедуры |
abis | OML:OPSTART, RSL:CHANNEL_ACTIVATION, RSL:CHANNEL_RELEASE, RSL:PAGING_CMD |
iub | NBAP:RESET |
s1 | S1AP:S1_SETUP, S1AP:RESET |
POST /api/v1/links/{name}/block — блокировка типа сообщения
bash
curl -X POST http://127.0.0.1:8181/api/v1/links/s1/block \
-H "Content-Type: application/json" \
-d '{"type":"S1AP:S1_SETUP"}'
POST /api/v1/links/{name}/unblock — снятие блокировки
Программа использует один INI-файл rbs.conf, расположенный в рабочей директории.
Формат:
Секция [gsm] (2G):
Параметр | Описание | Пример |
cell_id | Идентификатор ячейки | 1 |
arfcn | Абсолютный номер канала (P-GSM 900) | 60 |
tx_power_dbm | Мощность передатчика (дБм) | 43.0 |
bsic | Base Station Identity Code (0–63) | 10 |
lac | Location Area Code | 1000 |
mcc | Mobile Country Code | 250 |
mnc | Mobile Network Code | 1 |
bsc_addr | Адрес BSC для Abis (опционально) | 10.10.10.1 |
bsc_port | Порт BSC | 3002 |
Секция [umts] (3G):
Параметр | Описание | Пример |
cell_id | Идентификатор ячейки | 2 |
uarfcn | UMTS ARFCN (Band I) | 10700 |
tx_power_dbm | Мощность передатчика (дБм) | 43.0 |
psc | Primary Scrambling Code (0–511) | 64 |
lac | Location Area Code | 1000 |
rac | Routing Area Code | 1 |
rnc_addr | Адрес RNC для Iub | 10.10.10.3 |
Секция [lte] (4G):
Параметр | Описание | Пример |
cell_id | Идентификатор ячейки | 3 |
earfcn | E-UTRA ARFCN (Band 3) | 1800 |
tx_power_dbm | Мощность передатчика (дБм) | 43.0 |
pci | Physical Cell Identity (0–503) | 300 |
tac | Tracking Area Code | 1 |
num_antennas | Количество Tx портов (1/2/4) | 2 |
mme_addr | Адрес MME | 127.0.0.1 |
mme_port | Порт MME (SCTP) | 36412 |
Секция [nr] (5G):
Параметр | Описание | Пример |
cell_id | Идентификатор ячейки | 4 |
nr_arfcn | NR-ARFCN (n1 FDD) | 428000 |
band | Операционный диапазон NR | 1 |
pci | Physical Cell Identity (0–1007) | 400 |
ssb_period_ms | Период SSB (мс) | 20 |
cu_addr | Адрес gNB-CU | 127.0.0.1 |
cu_port | Порт F1AP (SCTP) | 38472 |
Секция [endc] (5G NSA EN-DC):
Параметр | Описание | Пример |
enabled | Активировать EN-DC | true |
option | Вариант (3/3a/3x) | 3a |
x2_addr | Адрес Secondary Node (NR) | 127.0.0.2 |
x2_port | Порт X2AP | 36422 |
Секция [logging]:
Параметр | Описание | Пример |
level | Уровень логирования | INFO |
log_file | Имя файла журнала | rbs.log |
Секция [api]:
Параметр | Описание | Пример |
bind | IP-адрес для REST API | 0.0.0.0 |
port | Порт для REST API | 8181 |
[gsm]
cell_id = 1
arfcn = 60
tx_power_dbm = 43.0
bsic = 10
lac = 1000
mcc = 250
mnc = 1
bsc_addr = 10.10.10.1
bsc_port = 3002
[umts]
cell_id = 2
uarfcn = 10700
tx_power_dbm = 43.0
psc = 64
lac = 1000
rac = 1
[lte]
cell_id = 3
earfcn = 1800
tx_power_dbm = 43.0
pci = 300
tac = 1
num_antennas = 2
mme_addr = 127.0.0.1
mme_port = 36412
[nr]
cell_id = 4
nr_arfcn = 428000
band = 1
pci = 400
ssb_period_ms = 20
cu_addr = 127.0.0.1
cu_port = 38472
[endc]
enabled = true
option = 3a
x2_addr = 127.0.0.2
x2_port = 36422
[logging]
level = INFO
log_file = rbs.log
[api]
bind = 0.0.0.0
port = 8181
Временное изменение (без перезапуска):
Используйте REST API PATCH /api/v1/config или сигнал SIGHUP.
Пример динамической перезагрузки:
bash
kill -HUP <PID>
Постоянное изменение:
Валидация конфигурации без применения (dry run):
bash
curl -X PATCH http://127.0.0.1:8181/api/v1/config \
-H "Content-Type: application/json" \
-d '{"dryRun": true, "updates": [{"key": "lte.mme_addr", "value": "10.0.0.1"}]}'
Программа ведёт журнал в двух формах:
Консольный вывод:
Файл журнала:
Пример строки журнала:
text
2026-04-07 16:40:05.691 [INFO ] [LTEMAC] UE admitted RNTI=1 CQI=12
Просмотр файла журнала:
bash
tail -f rbs.log # просмотр в реальном времени
cat rbs.log # вывод всего файла
grep ERROR rbs.log # поиск ошибок
Для диагностики проблем используйте встроенный PCAP-экспорт через программный API.
Включение трассировки из кода (S1AP, X2AP, GTP-U):
s1ap.enablePcap("s1ap_trace.pcap"); // S1AP
x2ap.enablePcap("x2ap_trace.pcap"); // X2AP
s1u.enablePcap("s1u_trace.pcap"); // GTP-U
Анализ собранных данных в Wireshark:
Отключение проверки контрольных сумм в Wireshark (рекомендуется):
Edit → Preferences → Protocols → SCTP → uncheck "Verify checksum"
Процессор и память (Linux):
bash
top -p $(pgrep rbs_node)
Сетевые порты:
bash
netstat -tulpn | grep rbs_node
Ожидаемые порты:
Порт | Протокол | Назначение |
8181 | TCP | REST API |
36412 | SCTP | S1AP (eNB ↔ MME) |
38472 | SCTP | F1AP (gNB-DU ↔ gNB-CU) |
36422 | UDP | X2AP (eNB ↔ eNB / MeNB ↔ SgNB) |
2152 | UDP | GTP-U (S1-U) |
3002 | TCP | Abis IPA (GSM ↔ BSC) |
25412 | SCTP | Iub NBAP (NodeB ↔ RNC) |
При возникновении инцидента соберите следующие данные:
bash
uname -a
cat /etc/os-release
dpkg -l | grep sctp
Проверка работоспособности:
bash
# Проверка статуса узла
# Проверка активных аварий
# Просмотр последних записей журнала
tail -20 rbs.log
Проверка подключённых UE:
bash
# Получение всех PM-счётчиков
curl http://127.0.0.1:8181/api/v1/pm | grep connectedUEs
5.2 Еженедельные операции
Анализ KPI (RRC success rate, HO success rate, E-RAB drop rate):
bash
curl http://127.0.0.1:8181/api/v1/pm | grep -E "successRate|dropRate"
Проверка состояния сетевых интерфейсов:
bash
Для каждого интерфейса отображается: имя, RAT, peer-адрес, состояние connected, список блокировок.
Очистка старых файлов трассировки:
bash
find . -name "*.pcap" -mtime +7 -delete
Анализ производительности (среднее количество UE, счётчики ошибок):
Экспорт счётчиков в CSV:
OMS::instance().exportCsv("pm_snapshot.csv");
Резервное копирование конфигурации:
bash
cp rbs.conf rbs.conf.$(date +%Y%m%d)
Проверка актуальности версии: сравните текущую версию с последним релизом.
Программа не отвечает на REST запросы:
bash
ps aux | grep rbs_node # Linux
Get-Process rbs_node # Windows
bash
netstat -an | grep 8181
Потеря связи с BSC / RNC / MME:
bash
bash
curl -X POST http://127.0.0.1:8181/api/v1/links/abis/connect
bash
ping 10.10.10.1
UE не может подключиться:
bash
grep -i "fail\|error" rbs.log
bash
curl http://127.0.0.1:8181/api/v1/pm | grep rrc.successRate
Ротация журнала (предотвращение переполнения диска):
Программа поддерживает ротацию rbs.log по размеру (настраивается через конфигурацию). При необходимости используйте внешние средства (logrotate на Linux).
Проверка GTP-C порта (UDP 2123, для SGSN):
bash
echo -n "test" | nc -u <IP_vepc> 2123
Проверка SCTP порта S1AP (36412):
Для Linux используйте sctp_test или специализированные утилиты.
Проверка REST API (TCP 8181):
bash
Инжекция S1 Setup Request через REST API:
bash
curl -X POST http://127.0.0.1:8181/api/v1/links/s1/inject \
-H "Content-Type: application/json" \
-d '{"procedure":"S1AP:S1_SETUP"}'
Подключение тестового UE:
bash
curl -X POST http://127.0.0.1:8181/api/v1/admit \
-H "Content-Type: application/json" \
-d '{"imsi": 250010000000003, "rat": "LTE"}'
Prometheus экспорт:
OMS предоставляет метрики в формате Prometheus на эндпоинте /metrics (порт 9090 по умолчанию).
bash
Пример метрик:
text
# TYPE rbs_lte_connected_ues gauge
rbs_lte_connected_ues 3
# TYPE rbs_lte_rrc_success_rate_pct gauge
rbs_lte_rrc_success_rate_pct 100.0
InfluxDB интеграция (UDP Line Protocol):
OMS::instance().pushInflux("127.0.0.1:8086", "rbs_pm");
Интеграция через анализ журнала (syslog):
bash
tail -f rbs.log | while read line; do
if echo "$line" | grep -q "ERROR\|CRITICAL"; then
# Отправка alert во внешнюю систему
fi
done
Информация
Адрес
242504
Брянская область
Карачевский район, Вишневка
Молодёжная улица, 33
Быстрый переход
Информация
Отдел продаж
+7 (953) 284-42-23
sales@ericssonsoftware.ru
Адрес
242504
Брянская область,
Карачевский район,
Вишневка, Молодёжная улица, 33