ЭрикссонСофт

+7 (953) 284-42-23

Программа собирается с использованием 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

При запуске программа выполняет следующие действия:

  • Загружает конфигурационный файл rbs.conf
  • Инициализирует Hardware Abstraction Layer (HAL)
  • Запускает выбранные RAT-стеки в отдельных потоках
  • Запускает REST API сервер на порту 8181
  • Выводит баннер ONLINE с информацией о запущенных RAT

Штатная остановка:

Нажмите Ctrl+C (SIGINT) в окне терминала. Программа выполняет:

  • Установку флага остановки для всех рабочих потоков
  • Перевод узла в состояние SHUTTING_DOWN
  • Ожидание завершения каждого потока
  • Закрытие файла журнала
  • Завершение процесса

Принудительная остановка (только в крайнем случае):

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

Ответ содержит:

  • version — версия программы
  • nodeState — состояние узла (UNLOCKED, LOCKED, SHUTTING_DOWN)
  • rats — список активных RAT
  • endcEnabled, endcOption — статус EN-DC (5G NSA)

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

  -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

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

  -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

  -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>

Постоянное изменение:

  1. Остановите программу (Ctrl+C)
  2. Отредактируйте файл rbs.conf
  3. Запустите программу заново

Валидация конфигурации без применения (dry run):

bash

  -H "Content-Type: application/json" \

  -d '{"dryRun": true, "updates": [{"key": "lte.mme_addr", "value": "10.0.0.1"}]}'

Программа ведёт журнал в двух формах:

Консольный вывод:

  • Цветовая дифференциация по уровням (INFO — зелёный, WARNING — жёлтый, ERROR — красный)
  • Цветовая маркировка компонентов (GSM, UMTS, LTE, NR, OMS, HAL)
  • Немедленное отображение в реальном времени

Файл журнала:

  • Расположение: rbs.log (в рабочей директории)
  • Формат: YYYY-MM-DD HH:MM:SS.mmm [LEVEL] [Источник] Сообщение
  • Сохраняется между запусками программы

Пример строки журнала:

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:

  • S1AP: фильтр sctp.ppi == 18
  • X2AP: фильтр udp.port == 36422
  • GTP-U: фильтр gtpv1

Отключение проверки контрольных сумм в 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)

При возникновении инцидента соберите следующие данные:

  1. Версия программы (из лога при запуске)
  2. Файл конфигурации rbs.conf
  3. Журнал событий rbs.log
  4. Вывод REST API:
    • /api/v1/status
    • /api/v1/pm
    • /api/v1/alarms
    • /api/v1/links
  5. Файлы трассировки (при наличии): *.pcap
  6. Информация об окружении (Linux):

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

Анализ 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 запросы:

  1. Проверьте, запущен ли процесс:

bash

ps aux | grep rbs_node   # Linux

Get-Process rbs_node     # Windows

  1. Проверьте, слушается ли порт 8181:

bash

netstat -an | grep 8181

  1. Принудительно остановите и запустите заново.

Потеря связи с BSC / RNC / MME:

  1. Проверьте состояние интерфейса через REST:

bash

  1. Выполните reconnect:

bash

  1. Проверьте сетевую доступность peer-адреса:

bash

ping 10.10.10.1

UE не может подключиться:

  1. Проверьте журнал на наличие ошибок:

bash

grep -i "fail\|error" rbs.log

  1. Проверьте счётчики RRC success rate:

bash

curl http://127.0.0.1:8181/api/v1/pm | grep rrc.successRate

  1. Включите трассировку S1AP (для LTE) и повторите попытку.

Ротация журнала (предотвращение переполнения диска):

Программа поддерживает ротацию 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

  -H "Content-Type: application/json" \

  -d '{"procedure":"S1AP:S1_SETUP"}'

Подключение тестового UE:

bash

  -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

Отдел продаж

+7 (953) 284-42-23

sales@ericssonsoftware.ru

Мы в соц.сетях

Информация

Адрес

242504
Брянская область
Карачевский район, Вишневка
Молодёжная улица, 33

Информация

Отдел продаж

+7 (953) 284-42-23

sales@ericssonsoftware.ru

Адрес

242504
Брянская область,
Карачевский район,
Вишневка, Молодёжная улица, 33