srsEPC — Вбудований EPC

Конфігурація srsEPC для тестування.

Коли використовувати

srsEPC

Сценарій Підходить
Швидкий тест
Демонстрація
Навчання
Ізольована мережа
Production
Складні сценарії
Інтеграція

Open5GS

Сценарій Підходить
Production
Масштабування
Кастомізація
WebUI
Моніторинг
Швидкий тест △ (складніше)

Архітектура srsEPC

┌─────────────────────────────────────────────┐
                  srsEPC                      
                                             
  ┌─────────────────────────────────────┐   
                MME                        
    - S1-MME interface (до eNB)           
    - NAS signaling                       
    - Authentication                      
  └─────────────────────────────────────┘   
                                            
  ┌─────────────────────────────────────┐   
                HSS                        
    - Subscriber database (user_db.csv)   
    - Authentication vectors              
  └─────────────────────────────────────┘   
                                            
  ┌─────────────────────────────────────┐   
               SPGW                        
    - SGW + PGW combined                  
    - IP allocation                       
    - NAT/routing                         
  └─────────────────────────────────────┘   
└─────────────────────────────────────────────┘
                                  
         S1 до eNB          TUN interface
                            (srs_spgw_sgi)

Конфігурація epc.conf

Повний приклад

#####################################################################
# srsEPC configuration file
#####################################################################

[mme]
# MME ідентифікація
mme_code = 0x1a
mme_group = 0x0001

# TAC (Tracking Area Code)
tac = 0x0007

# PLMN
mcc = 001
mnc = 01

# Інтерфейси
mme_bind_addr = 127.0.1.100
apn = internet

# DNS для UE
dns_addr = 8.8.8.8

# Шифрування
encryption_algo = EEA0     # EEA0 (null), EEA1 (SNOW), EEA2 (AES)
integrity_algo = EIA1      # EIA0 (null), EIA1 (SNOW), EIA2 (AES)

# Paging
paging_timer = 2           # секунди

[hss]
db_file = user_db.csv

[spgw]
gtpu_bind_addr = 127.0.1.100
sgi_if_addr = 172.16.0.1
sgi_if_name = srs_spgw_sgi

# IP pool для UE
# Пул 172.16.0.0/16
# Перший UE отримає 172.16.0.2

[pcap]
enable = false
filename = /tmp/epc.pcap

[log]
all_level = info
all_hex_limit = 32
filename = /tmp/epc.log

nas_level = info
s1ap_level = info
mme_gtpc_level = info
spgw_gtpc_level = info
hss_level = info

База абонентів (user_db.csv)

Формат

# Поля:
# name, algo, imsi, key, op_type, op/opc, amf, sqn, qci, ip_alloc

ue1,mil,001010000000001,465B5CE8B199B49FAA5F0A2EE238A6BC,opc,E8ED289DEBA952E4283B54E88E6183CA,8000,000000000000,9,dynamic

Пояснення полів

Поле Опис Приклад
name Ім'я абонента ue1
algo Алгоритм mil (milenage), xor
imsi IMSI (15 цифр) 001010000000001
key Ki (128 біт hex) 465B5CE8...
op_type op або opc opc
op/opc Operator key E8ED289D...
amf AMF (16 біт hex) 8000
sqn Sequence number 000000000000
qci QoS Class ID 9
ip_alloc IP allocation dynamic або IP

Приклад з кількома UE

# user_db.csv
ue1,mil,001010000000001,465B5CE8B199B49FAA5F0A2EE238A6BC,opc,E8ED289DEBA952E4283B54E88E6183CA,8000,000000000000,9,dynamic
ue2,mil,001010000000002,465B5CE8B199B49FAA5F0A2EE238A6BD,opc,E8ED289DEBA952E4283B54E88E6183CA,8000,000000000000,9,dynamic
ue3,mil,001010000000003,465B5CE8B199B49FAA5F0A2EE238A6BE,opc,E8ED289DEBA952E4283B54E88E6183CA,8000,000000000000,9,172.16.0.100

Генерація ключів

# Ki (128 біт)
openssl rand -hex 16

# Якщо потрібен OPc з OP та Ki:
# Використати pySim або online калькулятор

Мережева конфігурація

TUN інтерфейс

# srsEPC автоматично створює srs_spgw_sgi
# Перевірити:
ip addr show srs_spgw_sgi

# Має бути:
# inet 172.16.0.1/16

NAT для інтернету

# Увімкнути forwarding
sudo sysctl -w net.ipv4.ip_forward=1

# NAT правило
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Зберегти
sudo iptables-save | sudo tee /etc/iptables.rules

Firewall

# Дозволити S1AP (порт 36412)
sudo ufw allow 36412/sctp

# Дозволити GTP-U (порт 2152)
sudo ufw allow 2152/udp

Запуск

Базовий

sudo srsepc ~/.config/srsran/epc.conf

Очікуваний вивід

---  Software Radio Systems EPC  ---

Reading configuration file /home/user/.config/srsran/epc.conf...
HSS Initialized.
MME S1-MME Initialized. S1-MME: 127.0.1.100:36412
MME GTP-C Initialized. GTP-C: 127.0.1.100:2123
SPGW GTP-U Initialized. GTP-U: 127.0.1.100:2152
SPGW S5 Initialized.
SP-GW Initialized.

Моніторинг

Логи

# Realtime логи
tail -f /tmp/epc.log

# Фільтр NAS
grep -i "nas\|attach\|auth" /tmp/epc.log

Статус абонентів

Під час роботи srsEPC показує:
- Attach requests
- Authentication
- IP allocation

PCAP аналіз

# Увімкнути в epc.conf:
[pcap]
enable = true
filename = /tmp/epc.pcap

# Аналіз
wireshark /tmp/epc.pcap
# Фільтр: diameter || s1ap || gtp

Типові проблеми

Authentication failed

Причини:
1. Ki/OPc не співпадають між SIM та user_db.csv
2. IMSI неправильний
3. algo неправильний (mil vs xor)

Діагностика:
- Перевірити логи HSS
- Порівняти параметри SIM (pySim-read) з user_db.csv

UE не отримує IP

Причини:
1. SPGW не запустився
2. TUN інтерфейс не створився
3. IP pool вичерпано

Діагностика:
- ip addr show srs_spgw_sgi
- Перевірити логи SPGW

eNB не підключається

Причини:
1. mme_bind_addr неправильна
2. Firewall блокує порт 36412
3. SCTP не працює

Діагностика:
- sudo ss -lpn | grep 36412
- sudo tcpdump -i lo port 36412

Обмеження srsEPC

Аспект Обмеження
Кількість UE ~50 (теоретично)
Throughput Один процес
HA Не підтримується
REST API Немає
WebUI Немає
Логування Базове
Моніторинг Мінімальний

Міграція на Open5GS

Коли переходити:
- Production deployment
- Потрібен WebUI
- Потрібна масштабованість
- Потрібна інтеграція

Що змінити:
1. Встановити Open5GS
2. Перенести абонентів у MongoDB
3. Змінити mme_addr в enb.conf
4. Налаштувати мережу

Шлях: ran/srs-epc.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications