RAN CN 테스트베드 구축/Free5GC on K8s (Core)

UERANSIM을 활용한 Free5GC E2E 테스트하기

gksyb4235 2026. 1. 7. 11:17

현재 아키텍처


 

현재 쿠버네티스 클러스터를 구축하고, Master Node와 Worker Node 2개를 구축한 상황이다.

이제 실제로 휴대폰(UE)이 트래픽을 발생시키고, 이것이 gNB와 Free5GC의 Control Plane을 거쳐, UPF를 지나 Data Network (인터넷)까지 도달하는지를 테스트해야 한다.

이를 위해 구축된 Core와 UE·RAN 시뮬레이터를 연결해 E2E 통신 테스트를 진행할 것이다.

이때 UE와 RAN의 위치는 새로운 VM이 될 수도 있고, 혹은 Master Node가 위치한 VM(대신 클러스터 밖에 위치)일 수도 있다.

 

 

 

Free5GC E2E Testing


UERANSIM 설치


UERANSIM은 5G UE와 gNB를 가상으로 시뮬레이션해 Free5GC 코어와 연동할 수 있게 해주며,

gtp5g는 UPF에서 GTP 터널을 처리해 사용자 트래픽 경로를 지원한다.

git clone https://github.com/aligungr/UERANSIM.git
cd UERANSIM
bash <<EOF
sudo apt install make -y
sudo apt install gcc -y
sudo apt install g++ -y 
sudo apt install libsctp-dev lksctp-tools -y
sudo apt install iproute2 -y
sudo snap install cmake --classic
EOF
# Be sure to use snap install cmake --classic for suitable cmake version
make

# 만약 잘 안되서 초기화하려면
make clean

 

 

 

 

모든 Worker 노드에 gtp5g 설치


이때 free5GC 3.3.0 버전 기준으로 gtp5g의 버전 제한(0.8.0 < version < 0.9.0)이 있어 주의할 필요가 있다.
이 두 컴포넌트를 설치하면 쿠버네티스 기반 5G 코어 네트워크의 종단 간 데이터 전송 시나리오를 검증할 수 있다.

 

# 커널 확인 (5.0.0-23-generic 혹은 5.4.x 여야 함)
uname -r

# 맞다면 진행
sudo apt install git
cd ~
git clone https://github.com/free5gc/gtp5g.git
cd gtp5g
git checkout v0.8.9

make
sudo make install

# 확인(설치 후 아래 명령어로gtp5g 커널 모듈이 설치되었는지 확인- 에러가 없으면 정상)

sudo modprobe gtp5g
lsmod | grep gtp5g

 

 

 

 

AMF Service 노출


다음으로, Free5GC의 AMF에서 N2 인터페이스 포트(31412) 를 외부에서 접근 가능하도록 NodePort 방식으로 노출해야 한다.
N2 인터페이스는 gNB와 AMF 간 제어 신호(CP) 통신을 담당하므로, 이 포트를 열어 외부에서 접근이 가능하도록 해야 gNB(UERANSIM)와 코어가 연결될 수 있다.
결과적으로 이 포트 설정을 통해 RAN과 5G 코어 간 시그널링 연결이 가능해진다.

 

 

 

 

 

UERANSIM gNB 설정 파일 수정


그 다음으로, UERANSIM의 gNB 설정 파일(free5gc-gnb.yaml) 을 수정해 gNB와 Free5GC 코어 간 네트워크 연결을 가능하도록 해야 한다.


ngapIp와 gtpIp는 gNB 측 IP 주소를 설정하는 부분인데, 현재 UERANSIM을 마스터 노드에 설치한 상황이기 때문에 마스터 노드의 IP인 192.168.56.50을 넣어준다. 이는 N2, N3 인터페이스 통신에 사용된다.


amfConfigs 부분에서는 Free5GC AMF의 IP 주소와 포트(192.168.56.51:31412)를 입력해 gNB가 AMF와 제어 신호를 주고받을 수 있도록 한다. 결국 이 설정을 통해 gNB가 Free5GC 코어 네트워크와 정상적으로 시그널링 연결을 수립할 수 있다.

 

 

 

 

 

Webconsole에 UE Subscriber 추가하기


 

그 다음으로 Free5GC 웹 콘솔(192.168.56.50:30500) 에 접속해 새 UE 가입자를 추가하는 단계이다.
여기서 IMSI, 키, Opc 값 등 UE 인증에 필요한 가입자 정보를 입력한다.

여기서는 디폴트값 그대로 사용자 정보를 등록했다.

(디폴트 값 : SUPI 값이 208930000000003, Operator Code Type이 OPc)


이 가입자 정보는 AMF와 UDM 같은 코어 네트워크 기능이 UE 인증과 세션 관리에 활용한다.
결과적으로 이 과정을 통해 UERANSIM의 가상 UE가 5G 코어 네트워크에 연결될 수 있다.

 

 

 

 

 

 

UERANSIM의 UE 파일 수정


 

이제 UERANSIM의 UE 설정 파일(free5gc-ue.yaml)을 수정해 앞서 웹 콘솔에 등록한 UE 가입자 정보와 일치시켜야 한다.
IMSI, 키, OPc 값 등을 웹 콘솔에 입력한 값과 동일하게 설정해야 UE가 코어 네트워크에서 인증을 받을 수 있다.
또한 gnbSearchList에 gNB의 IP 주소(192.168.56.50 – 마스터 노드에 UERANSIM을 설치함)를 지정해 UE가 연결할 gNB를 정의한다.
이를 통해 가상 UE는 UERANSIM을 통해 5G 코어 네트워크와 실제 UE처럼 통신할 수 있게 된다.

 

 

 

 

Calico 파일 수정


 

 

이때, 앞서 설치한 네트워크 플러그인인 Calico의 IP forwarding 설정을 True로 바꿔줘야 한다.

Calico의 기본 상태인 allow_ip_forwarding이 false로 되어 있으면, UPF가 gNB(N3)에서 받은 트래픽을 데이터 네트워크(N6)로 전달하지 못한다.

그래서 Calico 설정 파일(/etc/cni/net.d/10-calico.conflist 등)에서 allow_ip_forwarding: true로 값을 바꿔야 한다.

이렇게 해야 UPF가 IP 패킷을 포워딩하고 라우팅할 수 있게 되어 사용자 트래픽이 끝까지 전달된다.

특히 5G 코어 네트워크에서는 UPF가 데이터 평면(Data Plane)의 중심 역할을 하므로 이 설정이 필수적이라서 이 단계는 E2E 데이터 트래픽 경로를 완성하기 위해 꼭 필요한 설정이다.

 

 

 

 

 

최종 E2E 테스트 수행과 결과


이제 UERANSIM이 깔린 VM에서 터미널 2개를 열고, 각 터미널에 build 명령어로 gNB와 UE를 생성하면 UERANSIM에서 가상 gNB와 UE를 생성하고 5G 코어가 연결된다.

 

# gNB 생성
./build/nr-gnb -c config/free5gc-gnb.yaml

 

 

먼저 gNB 설정 파일을 실행하면 gNB가 AMF와 연결되며, NG Setup procedure is successful 로그가 출력된다.

 

# UE 생성
./build/nr-ue -c config/free5gc-ue.yaml

 

 

그다음 UE 설정 파일을 실행하면 UE가 네트워크에 등록되고, PDU 세션이 생성된다.

 

 

 


PDU 세션이 만들어지면 UE와 데이터 네트워크 간 사용자 트래픽 경로가 활성화된다.
마지막으로 uesimtun0라는 가상 터널 인터페이스가 생성되어 UE 트래픽이 이 인터페이스를 통해 전달된다.

 

# ping 테스트
ping -I uesimtun0 8.8.8.8

 

 

이제 master-node에서 ping 명령을 날려보면, UERANSIM으로 생성된 가상 UE 인터페이스인 uesimtun0를 통해 외부 네트워크로 패킷이 전송된다.
여기서 사용된 명령어 ping –I uesimtun0 8.8.8.8는 UE 입장에서 8.8.8.8(Google DNS)까지의 연결을 테스트하는 것이다.

ping 응답이 정상적으로 돌아오면 UE → gNB → 5G Core → 데이터 네트워크로 이어지는 E2E 경로가 정상 동작함을 의미한다.
이는 PDU 세션이 올바르게 설정되고 데이터 평면이 활성화되었음을 확인할 수 있다.
결국 이 과정을 통해 5G 코어 네트워크의 E2E 연결이 성공적으로 검증된다.

 

 

 

최종 Demo 영상은 아래와 같다.