LXC/LXDコンテナ上にEPC環境を構築しました。
利用するEPCはNextEPCとなります。
NextEPCに含まれるサービスは以下の通りです。
mme
hss
sgw
pgw
pcrf
webui
また、以下2つの内容が理解できていることを前提に記載しますので、LXC/LXD環境などは既に構築済みの状態からスタートします。
CentOS7でLXC/LXDのコンテナ環境構築 - Metonymical Deflection
LXC/LXDコンテナのネットワーク設定方法 - Metonymical Deflection
1.環境
1-1.VMWare
筐体 : 自作PC CPU : Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz VMWare : VMware(R) Workstation 12 Pro 12.5.9 build-7535481 OS : CentOS7.5(1804) Kernel : 3.10.0-862.el7.x86_64 Installed Environment Groups : Minimal Install
1-2.全体構成
今回用意するlxcコンテナはUbuntu18.04となります。
公式サイトを読む限りCentOS7のコンテナでもいけそうなのですが、ビルドが必要っぽいので。
ロードマップには、いずれRPMも公開される旨、記載されていました。
1-3.全体の流れ
lxcコンテナ準備
NextEPCインストール
NextEPCのWebUIにアクセス
2.lxcコンテナ準備準備
2-1.Ubuntu18.04のコンテナ作成
今回はimages:からではなく、ubuntu:からコンテナイメージを引っ張ってきます。
lxc image list ubuntu: | grep 18.04 lxc launch ubuntu:18.04/amd64 lxc8041 出力例 [root@c757 ~]# lxc image list ubuntu: | grep 18.04 | b (9 more) | 7a4f7e85f1fa | yes | ubuntu 18.04 LTS amd64 (release) (20181024) | x86_64 | 174.40MB | Oct 24, 2018 at 12:00am (UTC) | | b/arm64 (4 more) | 50fed56edee1 | yes | ubuntu 18.04 LTS arm64 (release) (20181024) | aarch64 | 158.29MB | Oct 24, 2018 at 12:00am (UTC) | | b/armhf (4 more) | bf45f28d0dca | yes | ubuntu 18.04 LTS armhf (release) (20181024) | armv7l | 157.74MB | Oct 24, 2018 at 12:00am (UTC) | | b/i386 (4 more) | 3867042a618e | yes | ubuntu 18.04 LTS i386 (release) (20181024) | i686 | 176.20MB | Oct 24, 2018 at 12:00am (UTC) | | b/ppc64el (4 more) | 852f241c93e1 | yes | ubuntu 18.04 LTS ppc64el (release) (20181024) | ppc64le | 182.86MB | Oct 24, 2018 at 12:00am (UTC) | | b/s390x (4 more) | a987004cb9f9 | yes | ubuntu 18.04 LTS s390x (release) (20181024) | s390x | 166.14MB | Oct 24, 2018 at 12:00am (UTC) | ~一部省略~ [root@c757 ~]# lxc launch ubuntu:18.04/amd64 lxc8041 Creating lxc8041 Starting lxc8041 [root@c757 ~]# lxc list +-----------+---------+---------------------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-----------+---------+---------------------+------+------------+-----------+ | lxc8041 | RUNNING | 10.150.81.57 (eth0) | | PERSISTENT | | +-----------+---------+---------------------+------+------------+-----------+
2-2.コンテナのネットワーク設定
lxc8041のeth1をlxdbr30にアタッチします。
lxc network list lxc network attach lxdbr30 lxc8041 eth1 lxc network list 出力例 [root@c757 ~]# lxc network list +---------+----------+---------+-------------+---------+ | NAME | TYPE | MANAGED | DESCRIPTION | USED BY | +---------+----------+---------+-------------+---------+ | ens33 | physical | NO | | 0 | +---------+----------+---------+-------------+---------+ | ens34 | physical | NO | | 0 | +---------+----------+---------+-------------+---------+ | lxdbr0 | bridge | YES | | 2 | +---------+----------+---------+-------------+---------+ | lxdbr30 | bridge | YES | | 0 | +---------+----------+---------+-------------+---------+ [root@c757 ~]# lxc network attach lxdbr30 lxc8041 eth1 [root@c757 ~]# lxc network list +---------+----------+---------+-------------+---------+ | NAME | TYPE | MANAGED | DESCRIPTION | USED BY | +---------+----------+---------+-------------+---------+ | ens33 | physical | NO | | 0 | +---------+----------+---------+-------------+---------+ | ens34 | physical | NO | | 0 | +---------+----------+---------+-------------+---------+ | lxdbr0 | bridge | YES | | 2 | +---------+----------+---------+-------------+---------+ | lxdbr30 | bridge | YES | | 1 | +---------+----------+---------+-------------+---------+
2-3.ubuntuのネットワーク設定
lxc8041のeth1に固定IPを設定します。
IPアドレスは各自の環境に合わせてください。
[root@c757 ~]# lxc exec lxc8041 vi /etc/netplan/50-cloud-init.yaml # This file is generated from information provided by # the datasource. Changes to it will not persist across an instance. # To disable cloud-init's network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: version: 2 ethernets: eth0: dhcp4: true eth1: dhcp4: false addresses: [192.168.30.50/24] dhcp6: false
設定反映後にIPアドレスが設定されているかを確認し一旦再起動します。
lxc exec lxc8041 netplan apply lxc list lxc exec lxc8041 reboot 出力例 [root@c757 ~]# lxc exec lxc8041 netplan apply [root@c757 ~]# lxc list +-----------+---------+----------------------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-----------+---------+----------------------+------+------------+-----------+ | lxc8041 | RUNNING | 192.168.30.50 (eth1) | | PERSISTENT | | | | | 10.150.81.57 (eth0) | | | | +-----------+---------+----------------------+------+------------+-----------+ [root@c757 ~]# lxc exec lxc8041 reboot
3.NextEPCインストール
3-1.NextEPCのインストール
lxc exec lxc8041 bash apt-get update add-apt-repository ppa:acetcom/nextepc apt-get -y install nextepc
ホストOS上からコンテナのbashへ移動
aptアップデート
リポジトリ登録
NextEPCのインストール
注意事項
リポジトリ登録時に以下のようにEnterキーを押すよう促してくるので、そのままEnterキーを押下してください。
root@lxc8041:~# add-apt-repository ppa:acetcom/nextepc NextEPC is a C-language Open Source implementation of the 3GPP Evolved ?Packet Core, i.e. the core network of an LTE network.(http://nextepc.org) More info: https://launchpad.net/~acetcom/+archive/ubuntu/nextepc Press [ENTER] to continue or Ctrl-c to cancel adding it.
3-2.NextEPCのWebUIインストール
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - apt-get -y install nodejs curl -sL http://nextepc.org/static/webui/install | sudo -E bash -
NodeSource Node.js 8.x のスクリプトインストール
nodejsインストール
NextEPCのWebUIインストール
3-3.サービスの有効化
systemctl enable nextepc-mmed systemctl enable nextepc-sgwd systemctl enable nextepc-pgwd systemctl enable nextepc-hssd systemctl enable nextepc-pcrfd systemctl enable nextepc-webui reboot
各種サービスの有効化
一旦再起動
3-4.サービスの起動確認
再起動後、サービスが起動するまで3分程度待ってください。
再起動直後のステータス
[root@c757 ~]# lxc list +-----------+---------+----------------------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-----------+---------+----------------------+------+------------+-----------+ | lxc8041 | RUNNING | 192.168.30.50 (eth1) | | PERSISTENT | | | | | 10.150.81.57 (eth0) | | | | +-----------+---------+----------------------+------+------------+-----------+
再起動3分後のステータス
pgwtunインターフェースが表示されていればOKです。
[root@c757 ~]# lxc list +-----------+---------+----------------------+------------------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-----------+---------+----------------------+------------------+------------+-----------+ | lxc8041 | RUNNING | 45.45.0.1 (pgwtun) | cafe::1 (pgwtun) | PERSISTENT | | | | | 192.168.30.50 (eth1) | | | | | | | 10.150.81.57 (eth0) | | | | +-----------+---------+----------------------+------------------+------------+-----------+
4.NextEPCのWebUIにアクセス
4-2.Subscriber情報の登録
IMSIの登録
APNの登録
以上です。
6.最後に
以下のサイトを参考にさせて頂きました。
Home - LXDドキュメント翻訳プロジェクトNextEPC | Guides | Installation
Raspberry Pi 3上にLTEコア網(Evolved Packet Core:EPC)機能を構築してみた(Raspberry Pi 3+ubuntu16.04 LTS+NextEPC)
メインは公式サイトですが、@m0ch1m0ch1さんの記事が大変良くまとめられています。
ラズパイ上で動くならコンテナ上でも動くかな?と思ってやってみましたが、何とか動くところまでは確認できました。
基地局側の環境を用意するのは、USRPなどが必要となってくるようで、少々敷居が高いのですが、タイミングをみて検証したいなと思っています。
あとはキャリアのSGWと接続テストとかやってみて上手くいきそうであれば、IoT用途に特化したPGWとしては有効活用できそうな気がしています。
また、OAI(Open Air Interface)などにも興味が湧いてきたので、折をみて検証したいなと考えています。
Home · Wiki · oai / openairinterface5G · GitLab