관리 메뉴

소나기

[5G] 오픈소스 5G core 갖고 놀기 : Free5GC 본문

연구

[5G] 오픈소스 5G core 갖고 놀기 : Free5GC

moyoung 2022. 9. 29. 07:08

 

글의 목적: Free5GC 소스 디버깅 한글 튜토리얼 제작

 

Free5GC 설치 및 디버깅 환경 만들기

  1. 환경설정 및 각종 라이브러리 설치

환경설정: 언제나 환경설정은 가장 중요하고 가장 힘들다. 특히 처음해보는 작업이라면 더더욱 그렇다. 하지만 한번 정확한 환경설정을 확인하고 알게되면 그 다음부터는 자동화 해서 스크립트 하나 돌리는 것으로 끝난다. 혹시 스크립트 돌리는 법을 모른다면 스크립트 작성법에 대한 간단한 개요 정도 확인하는걸 추천한다.

 

우선 환경설정. 아래 내가 환경설정 할때 설치하는 각종 라이브러리와 프로그램을 추가했다.

sudo apt update
sudo apt install vim git wireshark net-tools -y
sudo apt install docker.io -y 
sudo apt install docker-compose -y 
sudo apt install python3-pip -y
sudo apt install libpcsclite-dev -y 
sudo apt-get install gcc swig dialog -y
sudo apt install -y python3-pip pcscd pcsc-tools libpcsclite-dev python3-pyscard python3-cmd2 libusb-1.0-0-dev

# 파이썬 라이브러리를 설치해준다
sudo pip3 install serial pycrypto pyscard  cryptography scapy pyrad

# 만약에 현재 Go가 설치되어 있다면 삭제 후 1.14.4 버전으로 재설치 한다.
# this assumes your current version of Go is in the default location
sudo rm -rf /usr/local/go
wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
sudo tar -C /usr/local -zxvf go1.14.4.linux-amd64.tar.gz

# Go가 없을경우 아래 대로 설치하고 환경설정을 마친다.
wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
sudo tar -C /usr/local -zxvf go1.14.4.linux-amd64.tar.gz
mkdir -p ~/go/{bin,pkg,src}
# The following assume that your shell is bash
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin:$GOROOT/bin' >> ~/.bashrc
echo 'export GO111MODULE=auto' >> ~/.bashrc
source ~/.bashrc
 

 

2. CryptoMobile 설치

 

간단하다. 아래대로 설치하면 특별한 에러 없이 넘어간다. 혹시 에러가 발생한다면 python3 버전을 잘 확인해봐야 한다.

cd ~/
git clone https://github.com/mitshell/CryptoMobile.git
cd ~/CryptoMobile/ && sudo python3 setup.py install
 

3. gtp5g 설치 : 반드시 필요한 요소들을 모두 설치해준다.

cd ~/
git clone https://github.com/free5gc/gtp5g.git
cd ~/gtp5g && make clean && make && sudo make install
 

4. free5gc-compose 설치

 

free5gc-compose는 free5GC 의 모든 컴포넌트를 각각 도커 컨테이너로 실행시키는 스크립트다. OAI 5G도 이런 방식을 사용하고 있는데 둘의 차이점은 OAI 5G 는 C/C++을 기반으로 하고 Free5GC는 Go를 기반으로 한다는 점이다. 나는 해당 repository를 fork해서 빌드할때 나의 설정파일로 실행시킨다. 설정파일은 각 컨테이너별로 하나씩 있어서 수정하려면 모든 파일을 다 손봐야 한다.

cd ~/
git clone git@github.com:limlynn/free5gc-compose.git
cd ~/free5gc-compose && sudo make base && sudo docker-compose build
 

 

5. 이제 내가 커스터마이징 컴포넌트를 다운받는다. 나는 미리 해당 repo를 fork해서 내가 디버깅 가능한 환경을 구축해두었다. 이 폴더 안에는 각 구성요소들이 submodule 로 들어있다. 폴더 하나하나가 5G core시스템의 구성요소인 것이다. 예를들어 구성요소중 ausf를 수정하고 싶다면 나처럼 기존 폴더를 삭제하고 나의 파일로 다시 폴더를 덮어 씌운 뒤 컴파일을 한다. ~/free5gc/NFs 이 폴더에 모든 구성요소들이 해당이름으로 저장되어 있다.

cd ~/
git clone git@github.com:limlynn/free5gc.git
cd ~/free5gc/NFs && rm -rf ausf && git clone git@github.com:limlynn/ausf.git
cd ~/ && make ausf
 

make ausf를 하게 되면 ausf 실행파일이 ~/free5gc/bin/ 아래에 생긴다. 해당파일을 ausf 도커로 복사 한 뒤 재시작 하게 되면 내가 빌드한 실행파일로 실행이 된다.

make ausf 
sudo docker cp ~/free5gc/bin/ausf ausf:/free5gc 
sudo docker restart ausf
 

'연구' 카테고리의 다른 글

AI 자동완성 글쓰기 : InferKit 사용후기  (1) 2022.10.05
논문 읽는 법  (0) 2013.07.22
Comments