Skip to content
LIVE FEED

BlogHướng dẫn dựng lab LTE ảo hóa hoàn toàn (Open5GS + srsRAN qua ZMQ)

Hướng dẫn dựng lab LTE ảo hóa hoàn toàn (Open5GS + srsRAN qua ZMQ)

Tài liệu này tổng hợp toàn bộ lộ trình dựng một mạng LTE (4G) ảo hóa hoàn toàn — không cần phần cứng SDR (USRP), không phát sóng RF thật — để quan sát chi tiết các luồng báo hiệu ở lớp radio: Random Access (MSG1-MSG5), RRC (Paging, Connection Setup), NAS (Attach), và trạng thái IDLE/CONNECTED.

Mục tiêu

  • Dựng đầy đủ EPC + eNB + UE trên một máy duy nhất
  • Quan sát toàn bộ chuỗi bản tin từ lúc UE Attach đến khi nhận dữ liệu downlink
  • Bắt gói (pcap) ở cả lớp radio (UE↔eNB) và lớp lõi mạng (eNB↔MME)
  • Kiểm tra chuyển trạng thái IDLE ⟷ CONNECTED

0. Yêu cầu môi trường

Thành phầnYêu cầu
Hệ điều hànhUbuntu 22.04 LTS (khuyến nghị — được hầu hết tài liệu cộng đồng hỗ trợ)
CPUĐa nhân (xử lý PHY qua ZMQ vẫn cần đúng nhịp thời gian thực)
RAMTối thiểu 8GB
Quyềnsudo/root để cài đặt và chạy

Không cần bất kỳ phần cứng SDR (USRP) nào — toàn bộ lớp vô tuyến được thay thế bằng socket ZeroMQ.

1. Dựng lõi mạng (EPC) — Open5GS

Cài đặt

sudo add-apt-repository ppa:open5gs/latest
sudo apt update
sudo apt install open5gs
sudo apt install open5gs-webui

Cấu hình subscriber test

  1. Truy cập WebUI quản lý subscriber: http://localhost:9999
  2. Thêm 1 subscriber test với:
    • IMSI (ví dụ: 999700000000001)
    • Ki (khóa xác thực)
    • OPc (Operator variant algorithm configuration)
    • APN test (ví dụ: internet)

Các giá trị này phải khớp chính xác với cấu hình phía UE ảo (srsUE) ở bước sau.

Các thành phần Open5GS đang chạy

sudo systemctl status open5gs-mmed
sudo systemctl status open5gs-sgwcd
sudo systemctl status open5gs-smfd
sudo systemctl status open5gs-hssd

2. Dựng eNB ảo hóa — srsENB

Cài đặt srsRAN

sudo apt install cmake build-essential libfftw3-dev libmbedtls-dev \
    libboost-program-options-dev libconfig++-dev libsctp-dev

git clone https://github.com/srsran/srsRAN_4G.git
cd srsRAN_4G
mkdir build && cd build
cmake ../
make -j$(nproc)
sudo make install
sudo ldconfig

Cấu hình eNB (enb.conf)

[enb]
mme_addr = 127.0.1.100        ; địa chỉ MME của Open5GS
gtp_bind_addr = 127.0.1.1
s1c_bind_addr = 127.0.1.1

[rf]
device_name = zmq
device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6

[pcap]
enable = true
filename = /tmp/enb_mac.pcap
s1ap_enable = true
s1ap_filename = /tmp/enb_s1ap.pcap

Lưu ý: tx_port/rx_port phải khớp ngược lại với cấu hình phía UE ở bước 3 để 2 bên “gặp nhau” qua socket ZMQ.

3. Dựng UE ảo hóa — srsUE

Cấu hình UE (ue.conf)

[usim]
mode = soft
algo = milenage
imsi = 999700000000001         ; phải khớp với subscriber đã thêm ở Open5GS
k    = <Ki đã cấu hình>
opc  = <OPc đã cấu hình>

[rf]
device_name = zmq
device_args = tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6

[pcap]
enable = true
filename = /tmp/ue_mac.pcap
nas_enable = true
nas_filename = /tmp/ue_nas.pcap

4. Khởi chạy toàn bộ hệ thống

Chạy theo đúng thứ tự sau (mỗi lệnh 1 terminal riêng):

# Terminal 1: đảm bảo Open5GS đã chạy (thường tự khởi động dạng service)
sudo systemctl status open5gs-mmed

# Terminal 2: chạy eNB ảo
sudo srsenb enb.conf

# Terminal 3: chạy UE ảo
sudo srsue ue.conf

Xác minh Attach thành công

Theo dõi log terminal của srsue, tìm các dòng xác nhận đúng trình tự:

Random Access Complete
RRC Connected
NAS Attach/Default EPS Bearer Setup Complete

5. Kiểm tra trạng thái IDLE / CONNECTED

Quan sát trực tiếp qua log srsUE

RRC Connected     → UE vừa chuyển sang CONNECTED
RRC IDLE          → UE vừa chuyển về IDLE (do hết rrc-InactivityTimer)

Rút ngắn thời gian chờ để dễ quan sát

[expert]
rrc_inactivity_timer = 5000   ; đơn vị ms, giảm xuống để test nhanh

Kích hoạt lại Paging (mô phỏng dữ liệu/SMS đến khi UE đang IDLE)

ping <IP-được-cấp-cho-UE-qua-P-GW>

Lệnh này kích hoạt đúng cơ chế Downlink Data Notification → S1AP Paging → RRC Paging (PCCH) → Service Request — cùng luồng báo hiệu mà SMS/VoLTE sử dụng, chỉ khác ở payload cuối cùng.

6. Thu thập và phân tích PCAP

Các điểm bắt gói

ĐiểmCách bắtFile/công cụ
Lớp radio (UE↔eNB)Cấu hình sẵn trong enb.conf/ue.confenb_mac.pcap, ue_mac.pcap, ue_nas.pcap
S1AP (eNB↔MME)Cấu hình sẵn hoặc bắt trực tiếpenb_s1ap.pcap, hoặc sudo tcpdump -i lo -w s1ap.pcap sctp
Giao diện lõi khác (S11, S5/S8, SGi)Bắt trực tiếp bằng tcpdumpsudo tcpdump -i <iface> -w s11.pcap gtp

Mở bằng Wireshark

  1. Mở file enb_mac.pcap
  2. Vào Edit → Preferences → Protocols → MAC-LTE, bật Attempt to dissect erroneous PDUs
  3. Bật thêm preferences tương ứng cho RLC-LTE và PDCP-LTE

Wireshark sẽ tự động bóc tách lồng nhau: MAC → RLC → PDCP → RRC — hiển thị đúng cấu trúc PagingRecord, RRCConnectionSetup, RRCConnectionSetupComplete…

Lọc theo định danh cụ thể (nếu có nhiều UE)

lte-rrc.c_RNTI == 0x1001

7. Lưu ý về mã hóa khi phân tích PCAP

Sau khi SecurityModeCommand hoàn tất, nội dung RRC/NAS trong file pcap sẽ ở dạng đã mã hóa (Wireshark không hỗ trợ giải mã ciphering LTE, kể cả khi biết khóa). Có 2 cách để xem nội dung dạng rõ phục vụ học tập:

CáchGhi chú
Chỉ xem bản tin trước SecurityModeCommandRRCConnectionRequest, AttachRequest ban đầu vẫn ở dạng rõ
Tắt mã hóa để test: đặt thuật toán = EEA0/EIA0 (null algorithm)Cấu hình trong mme.yaml của Open5GS — chỉ dùng trong lab riêng, tuyệt đối không áp dụng với mạng thật

8. Mở rộng (nâng cao): thêm SMSC thật để gửi SMS thật

Muốn quan sát đúng bản tin CP-DATA chứa SMS thật (không chỉ mô phỏng bằng ping), cần thêm 1 MSC giả lập kết nối với MME qua giao diện SGs:

  • Dự án Osmocom (osmo-msc) hỗ trợ việc này, nhưng đòi hỏi cấu hình thêm HLR riêng và giao diện SGsAP
  • Đây là bước phức tạp nhất trong toàn bộ lộ trình — cần tìm hiểu thêm theo tài liệu chính thức của Osmocom nếu muốn triển khai đầy đủ

Tóm tắt lộ trình

  1. Cài Open5GS → thêm subscriber test (IMSI/Ki/OPc)
  2. Cài srsRAN → cấu hình eNB với device_name = zmq
  3. Cấu hình UE khớp IMSI/Ki/OPc, cũng dùng device_name = zmq
  4. Chạy EPC → eNB → UE theo thứ tự, xác minh Attach qua log
  5. Bật pcap, kiểm tra chuyển IDLE/CONNECTED qua log và Wireshark
  6. Ping để kích hoạt Paging, quan sát toàn bộ chuỗi bản tin
  7. (Nâng cao) Thêm osmo-msc để gửi SMS thật qua SGs
Contact
Facebook
TOP