From 75bb5d1b21a5c016c5f505631a3ad7311b995ab9 Mon Sep 17 00:00:00 2001 From: herlesupreeth Date: Sun, 29 Oct 2023 15:54:49 +0100 Subject: [PATCH] Add support for 5G roaming scenario --- .env | 3 ++ README.md | 2 +- amf/amf.yaml | 30 +++++++++----------- amf/amf_init.sh | 4 ++- ausf/ausf.yaml | 22 ++++++--------- ausf/ausf_init.sh | 5 ++-- base/Dockerfile | 2 +- base/open5gs_init.sh | 4 +++ bsf/bsf.yaml | 22 ++++++--------- bsf/bsf_init.sh | 3 ++ dns/5gc_zone | 16 +++++++++++ dns/dns_init.sh | 10 +++++++ dns/named.conf | 5 ++++ mme/mme.yaml | 50 ++++++++++++++++----------------- nrf/nrf.yaml | 16 +++++------ nrf/nrf_init.sh | 7 +++-- nssf/nssf.yaml | 31 ++++++++------------- nssf/nssf_init.sh | 5 ++-- pcf/pcf.yaml | 27 ++++++++---------- pcf/pcf_init.sh | 4 ++- sa-deploy.yaml | 66 ++++++++++++++++++++++++++++++++++++++++++++ scp/scp.yaml | 15 ++++------ scp/scp_init.sh | 4 ++- sepp/sepp.yaml | 25 +++++++++++++++++ sepp/sepp_init.sh | 37 +++++++++++++++++++++++++ sgwc/sgwc.yaml | 13 +++++---- sgwu/sgwu.yaml | 15 +++++----- smf/smf.yaml | 57 +++++++++++++++++--------------------- smf/smf_4g.yaml | 35 ++++++++++++----------- smf/smf_init.sh | 2 ++ udm/udm.yaml | 22 ++++++--------- udm/udm_init.sh | 5 ++-- udr/udr.yaml | 22 ++++++--------- udr/udr_init.sh | 3 ++ upf/upf.yaml | 30 ++++++++++---------- upf/upf_init.sh | 3 ++ 36 files changed, 381 insertions(+), 241 deletions(-) create mode 100644 dns/5gc_zone create mode 100644 sepp/sepp.yaml create mode 100755 sepp/sepp_init.sh diff --git a/.env b/.env index daef540..8e90152 100644 --- a/.env +++ b/.env @@ -127,6 +127,9 @@ METRICS_IP=172.22.0.36 # SRSRAN GNB SRS_GNB_IP=172.22.0.37 +# SEPP +SEPP_IP=172.22.0.38 + # UE IPv4 Subnet Range for APN=internet UE_IPV4_INTERNET=192.168.100.0/24 diff --git a/README.md b/README.md index 883e494..822d4ff 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ RF simulated setups: ``` # Build docker images for open5gs EPC/5GC components git clone https://github.com/herlesupreeth/docker_open5gs -cd docker_open5gs/base +cd docker_open5gs/base && git checkout roaming docker build --no-cache --force-rm -t docker_open5gs . # Build docker images for kamailio IMS components diff --git a/amf/amf.yaml b/amf/amf.yaml index 3adc2bd..e3e39f5 100644 --- a/amf/amf.yaml +++ b/amf/amf.yaml @@ -11,10 +11,17 @@ parameter: amf: sbi: - - addr: AMF_IP - port: 7777 + server: + - address: AMF_IP + port: 7777 + client: + # nrf: + # - uri: http://nrf.FIVEGC_DOMAIN:7777 + scp: + - uri: http://SCP_IP:7777 ngap: - - addr: AMF_IP + server: + - address: AMF_IP guami: - plmn_id: mcc: MCC @@ -40,20 +47,9 @@ amf: full: Open5GS amf_name: open5gs-amf0 metrics: - - addr: AMF_IP - port: 9091 - -scp: - sbi: - - addr: - - SCP_IP - port: 7777 - -nrf: - sbi: - - addr: - - NRF_IP - port: 7777 + server: + - address: AMF_IP + port: 9091 time: t3512: diff --git a/amf/amf_init.sh b/amf/amf_init.sh index 6499de6..e9ed4be 100755 --- a/amf/amf_init.sh +++ b/amf/amf_init.sh @@ -26,12 +26,14 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + cp /mnt/amf/amf.yaml install/etc/open5gs sed -i 's|AMF_IP|'$AMF_IP'|g' install/etc/open5gs/amf.yaml sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/amf.yaml -sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/amf.yaml sed -i 's|MNC|'$MNC'|g' install/etc/open5gs/amf.yaml sed -i 's|MCC|'$MCC'|g' install/etc/open5gs/amf.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/amf.yaml # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/ausf/ausf.yaml b/ausf/ausf.yaml index 59ecc74..c7a25b2 100644 --- a/ausf/ausf.yaml +++ b/ausf/ausf.yaml @@ -11,17 +11,11 @@ parameter: ausf: sbi: - - addr: AUSF_IP - port: 7777 - -scp: - sbi: - - addr: - - SCP_IP - port: 7777 - -nrf: - sbi: - - addr: - - NRF_IP - port: 7777 + server: + - address: ausf.FIVEGC_DOMAIN + port: 7777 + client: +# nrf: +# - uri: http://nrf.FIVEGC_DOMAIN:7777 + scp: + - uri: http://SCP_IP:7777 diff --git a/ausf/ausf_init.sh b/ausf/ausf_init.sh index fcf4919..5192255 100755 --- a/ausf/ausf_init.sh +++ b/ausf/ausf_init.sh @@ -26,10 +26,11 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + cp /mnt/ausf/ausf.yaml install/etc/open5gs -sed -i 's|AUSF_IP|'$AUSF_IP'|g' install/etc/open5gs/ausf.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/ausf.yaml sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/ausf.yaml -sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/ausf.yaml # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/base/Dockerfile b/base/Dockerfile index bd46c0f..fb916a6 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -68,7 +68,7 @@ RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg - # Get open5gs code and install RUN git clone --recursive https://github.com/open5gs/open5gs && cd open5gs && \ - git checkout tags/v2.6.6 && meson build --prefix=`pwd`/install && \ + git checkout roaming-tier3 && meson build --prefix=`pwd`/install && \ ninja -C build && cd build && ninja install && \ mkdir -p /open5gs/install/include diff --git a/base/open5gs_init.sh b/base/open5gs_init.sh index 05a0e98..f6f59dd 100755 --- a/base/open5gs_init.sh +++ b/base/open5gs_init.sh @@ -94,6 +94,10 @@ elif [[ "$COMPONENT_NAME" =~ ^(upf-[[:digit:]]+$) ]]; then echo "Deploying component: '$COMPONENT_NAME'" /mnt/upf/upf_init.sh && \ cd install/bin && ./open5gs-upfd +elif [[ "$COMPONENT_NAME" =~ ^(sepp-[[:digit:]]+$) ]]; then + echo "Deploying component: '$COMPONENT_NAME'" + /mnt/sepp/sepp_init.sh && \ + cd install/bin && ./open5gs-seppd elif [[ "$COMPONENT_NAME" =~ ^(webui) ]]; then echo "Deploying component: '$COMPONENT_NAME'" sleep 10 && /mnt/webui/webui_init.sh diff --git a/bsf/bsf.yaml b/bsf/bsf.yaml index 1cc99ce..1267ec0 100644 --- a/bsf/bsf.yaml +++ b/bsf/bsf.yaml @@ -13,17 +13,11 @@ parameter: bsf: sbi: - - addr: BSF_IP - port: 7777 - -scp: - sbi: - - addr: - - SCP_IP - port: 7777 - -nrf: - sbi: - - addr: - - NRF_IP - port: 7777 + server: + - address: BSF_IP + port: 7777 + client: +# nrf: +# - uri: http://nrf.FIVEGC_DOMAIN:7777 + scp: + - uri: http://SCP_IP:7777 diff --git a/bsf/bsf_init.sh b/bsf/bsf_init.sh index 7310c70..526caa0 100755 --- a/bsf/bsf_init.sh +++ b/bsf/bsf_init.sh @@ -28,11 +28,14 @@ export DB_URI="mongodb://${MONGO_IP}/open5gs" +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + cp /mnt/bsf/bsf.yaml install/etc/open5gs sed -i 's|BSF_IP|'$BSF_IP'|g' install/etc/open5gs/bsf.yaml sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/bsf.yaml sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/bsf.yaml sed -i 's|MONGO_IP|'$MONGO_IP'|g' install/etc/open5gs/bsf.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/bsf.yaml # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/dns/5gc_zone b/dns/5gc_zone new file mode 100644 index 0000000..6bb8be0 --- /dev/null +++ b/dns/5gc_zone @@ -0,0 +1,16 @@ +$ORIGIN FIVEGC_DOMAIN. +$TTL 1W +@ 1D IN SOA localhost. root.localhost. ( + 1 ; serial + 3H ; refresh + 15M ; retry + 1W ; expiry + 1D ) ; minimum + + 1D IN NS 5gcns +5gcns 1D IN A DNS_IP + +nrf 1D IN A NRF_IP +ausf 1D IN A AUSF_IP +udm 1D IN A UDM_IP +sepp 1D IN A SEPP_IP diff --git a/dns/dns_init.sh b/dns/dns_init.sh index e54c024..be73452 100755 --- a/dns/dns_init.sh +++ b/dns/dns_init.sh @@ -27,12 +27,14 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cp /mnt/dns/epc_zone /etc/bind +cp /mnt/dns/5gc_zone /etc/bind cp /mnt/dns/ims_zone /etc/bind cp /mnt/dns/pub_3gpp_zone /etc/bind cp /mnt/dns/e164.arpa /etc/bind cp /mnt/dns/named.conf /etc/bind [ ${#MNC} == 3 ] && EPC_DOMAIN="epc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || EPC_DOMAIN="epc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" [ ${#MNC} == 3 ] && IMS_DOMAIN="ims.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || IMS_DOMAIN="ims.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" [ ${#MNC} == 3 ] && PUB_3GPP_DOMAIN="mnc${MNC}.mcc${MCC}.pub.3gppnetwork.org" || PUB_3GPP_DOMAIN="mnc0${MNC}.mcc${MCC}.pub.3gppnetwork.org" @@ -40,6 +42,13 @@ sed -i 's|EPC_DOMAIN|'$EPC_DOMAIN'|g' /etc/bind/epc_zone sed -i 's|DNS_IP|'$DNS_IP'|g' /etc/bind/epc_zone [ -z "$PCRF_PUB_IP" ] && sed -i 's|PCRF_IP|'$PCRF_IP'|g' /etc/bind/epc_zone || sed -i 's|PCRF_IP|'$PCRF_PUB_IP'|g' /etc/bind/epc_zone +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' /etc/bind/5gc_zone +sed -i 's|DNS_IP|'$DNS_IP'|g' /etc/bind/5gc_zone +sed -i 's|NRF_IP|'$NRF_IP'|g' /etc/bind/5gc_zone +sed -i 's|AUSF_IP|'$AUSF_IP'|g' /etc/bind/5gc_zone +sed -i 's|UDM_IP|'$UDM_IP'|g' /etc/bind/5gc_zone +sed -i 's|SEPP_IP|'$SEPP_IP'|g' /etc/bind/5gc_zone + sed -i 's|IMS_DOMAIN|'$IMS_DOMAIN'|g' /etc/bind/ims_zone sed -i 's|DNS_IP|'$DNS_IP'|g' /etc/bind/ims_zone sed -i 's|PCSCF_IP|'$PCSCF_IP'|g' /etc/bind/ims_zone @@ -56,6 +65,7 @@ sed -i 's|IMS_DOMAIN|'$IMS_DOMAIN'|g' /etc/bind/e164.arpa sed -i 's|DNS_IP|'$DNS_IP'|g' /etc/bind/e164.arpa sed -i 's|EPC_DOMAIN|'$EPC_DOMAIN'|g' /etc/bind/named.conf +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' /etc/bind/named.conf sed -i 's|IMS_DOMAIN|'$IMS_DOMAIN'|g' /etc/bind/named.conf sed -i 's|PUB_3GPP_DOMAIN|'$PUB_3GPP_DOMAIN'|g' /etc/bind/named.conf diff --git a/dns/named.conf b/dns/named.conf index a6ed6ab..8ea1cce 100644 --- a/dns/named.conf +++ b/dns/named.conf @@ -51,3 +51,8 @@ zone "e164.arpa" { type master; file "/etc/bind/e164.arpa"; }; + +zone "FIVEGC_DOMAIN" { + type master; + file "/etc/bind/5gc_zone"; +}; diff --git a/mme/mme.yaml b/mme/mme.yaml index dc1241d..34bc1f1 100644 --- a/mme/mme.yaml +++ b/mme/mme.yaml @@ -6,22 +6,30 @@ parameter: mme: freeDiameter: /open5gs/install/etc/freeDiameter/mme.conf s1ap: - dev: MME_IF + server: + - address: MME_IP gtpc: - dev: MME_IF + server: + - address: MME_IP + client: + sgwc: + - address: SGWC_IP + smf: + - address: SMF_IP sgsap: - addr: OSMOMSC_IP - map: - tai: - plmn_id: - mcc: MCC - mnc: MNC - tac: 1 - lai: - plmn_id: - mcc: MCC - mnc: MNC - lac: 1 + server: + - address: OSMOMSC_IP + map: + tai: + plmn_id: + mcc: MCC + mnc: MNC + tac: 1 + lai: + plmn_id: + mcc: MCC + mnc: MNC + lac: 1 gummei: plmn_id: mcc: MCC @@ -40,17 +48,9 @@ mme: full: Open5GS mme_name: open5gs-mme0 metrics: - - addr: MME_IP - port: 9091 - -sgwc: - gtpc: - addr: SGWC_IP - -smf: - gtpc: - - addr: - - SMF_IP + server: + - address: MME_IP + port: 9091 time: t3412: diff --git a/nrf/nrf.yaml b/nrf/nrf.yaml index ff169da..d110764 100644 --- a/nrf/nrf.yaml +++ b/nrf/nrf.yaml @@ -10,13 +10,11 @@ sbi: parameter: nrf: + serving: # 5G roaming requires PLMN in NRF + - plmn_id: + mcc: MCC + mnc: MNC sbi: - addr: - - NRF_IP - port: 7777 - -scp: - sbi: - addr: - - SCP_IP - port: 7777 + server: + - address: nrf.FIVEGC_DOMAIN + port: 7777 diff --git a/nrf/nrf_init.sh b/nrf/nrf_init.sh index 62fecaa..ea0f4ec 100755 --- a/nrf/nrf_init.sh +++ b/nrf/nrf_init.sh @@ -26,9 +26,12 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + cp /mnt/nrf/nrf.yaml install/etc/open5gs -sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/nrf.yaml -sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/nrf.yaml +sed -i 's|MCC|'$MCC'|g' install/etc/open5gs/nrf.yaml +sed -i 's|MNC|'$MNC'|g' install/etc/open5gs/nrf.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/nrf.yaml # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/nssf/nssf.yaml b/nssf/nssf.yaml index f49bb81..970ed48 100644 --- a/nssf/nssf.yaml +++ b/nssf/nssf.yaml @@ -11,22 +11,15 @@ parameter: nssf: sbi: - - addr: NSSF_IP - port: 7777 - nsi: - - addr: NRF_IP - port: 7777 - s_nssai: - sst: 1 - -scp: - sbi: - - addr: - - SCP_IP - port: 7777 - -nrf: - sbi: - - addr: - - NRF_IP - port: 7777 + server: + - address: NSSF_IP + port: 7777 + client: +# nrf: +# - uri: http://nrf.FIVEGC_DOMAIN:7777 + scp: + - uri: http://SCP_IP:7777 + nsi: + - uri: http://nrf.FIVEGC_DOMAIN:7777 + s_nssai: + sst: 1 diff --git a/nssf/nssf_init.sh b/nssf/nssf_init.sh index f439877..157f2a1 100755 --- a/nssf/nssf_init.sh +++ b/nssf/nssf_init.sh @@ -26,11 +26,12 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + cp /mnt/nssf/nssf.yaml install/etc/open5gs sed -i 's|NSSF_IP|'$NSSF_IP'|g' install/etc/open5gs/nssf.yaml -sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/nssf.yaml sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/nssf.yaml -sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/nssf.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/nssf.yaml # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/pcf/pcf.yaml b/pcf/pcf.yaml index 9aeb5c0..90b279d 100644 --- a/pcf/pcf.yaml +++ b/pcf/pcf.yaml @@ -13,20 +13,15 @@ parameter: pcf: sbi: - - addr: PCF_IP - port: 7777 + server: + - address: PCF_IP + port: 7777 + client: + # nrf: + # - uri: http://nrf.FIVEGC_DOMAIN:7777 + scp: + - uri: http://SCP_IP:7777 metrics: - - addr: PCF_IP - port: 9091 - -scp: - sbi: - - addr: - - SCP_IP - port: 7777 - -nrf: - sbi: - - addr: - - NRF_IP - port: 7777 + server: + - address: PCF_IP + port: 9091 diff --git a/pcf/pcf_init.sh b/pcf/pcf_init.sh index 9778047..f44343e 100755 --- a/pcf/pcf_init.sh +++ b/pcf/pcf_init.sh @@ -28,11 +28,13 @@ export DB_URI="mongodb://${MONGO_IP}/open5gs" +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + cp /mnt/pcf/pcf.yaml install/etc/open5gs sed -i 's|PCF_IP|'$PCF_IP'|g' install/etc/open5gs/pcf.yaml sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/pcf.yaml -sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/pcf.yaml sed -i 's|MONGO_IP|'$MONGO_IP'|g' install/etc/open5gs/pcf.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/pcf.yaml # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/sa-deploy.yaml b/sa-deploy.yaml index d9d3c2e..4bfa0d5 100644 --- a/sa-deploy.yaml +++ b/sa-deploy.yaml @@ -17,6 +17,21 @@ services: networks: default: ipv4_address: ${MONGO_IP} + dns: + build: ./dns + image: docker_dns + container_name: dns + env_file: + - .env + volumes: + - ./dns:/mnt/dns + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + expose: + - "53/udp" + networks: + default: + ipv4_address: ${DNS_IP} webui: image: docker_open5gs container_name: webui @@ -40,6 +55,9 @@ services: nrf: image: docker_open5gs container_name: nrf + dns: ${DNS_IP} + depends_on: + - dns env_file: - .env environment: @@ -57,6 +75,9 @@ services: scp: image: docker_open5gs container_name: scp + dns: ${DNS_IP} + depends_on: + - dns env_file: - .env environment: @@ -76,7 +97,9 @@ services: depends_on: - nrf - scp + - dns container_name: ausf + dns: ${DNS_IP} env_file: - .env environment: @@ -97,7 +120,9 @@ services: - nrf - scp - mongo + - dns container_name: udr + dns: ${DNS_IP} env_file: - .env environment: @@ -117,7 +142,9 @@ services: depends_on: - nrf - scp + - dns container_name: udm + dns: ${DNS_IP} env_file: - .env environment: @@ -138,7 +165,9 @@ services: - nrf - scp - amf + - dns container_name: smf + dns: ${DNS_IP} env_file: - .env environment: @@ -169,7 +198,9 @@ services: - nrf - scp - smf + - dns container_name: upf + dns: ${DNS_IP} env_file: - .env environment: @@ -204,7 +235,9 @@ services: - udr - pcf - bsf + - dns container_name: amf + dns: ${DNS_IP} env_file: - .env environment: @@ -229,7 +262,9 @@ services: - nrf - scp - mongo + - dns container_name: pcf + dns: ${DNS_IP} env_file: - .env environment: @@ -251,7 +286,9 @@ services: - nrf - scp - mongo + - dns container_name: bsf + dns: ${DNS_IP} env_file: - .env environment: @@ -272,7 +309,9 @@ services: - nrf - scp - mongo + - dns container_name: nssf + dns: ${DNS_IP} env_file: - .env environment: @@ -287,6 +326,33 @@ services: networks: default: ipv4_address: ${NSSF_IP} + sepp: + image: docker_open5gs + depends_on: + - nrf + - scp + - dns + container_name: sepp + dns: ${DNS_IP} + env_file: + - .env + environment: + - COMPONENT_NAME=sepp-1 + volumes: + - ./sepp:/mnt/sepp + - ./log:/open5gs/install/var/log/open5gs + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + expose: + - "7777/tcp" + - "7779/tcp" + - "7780/tcp" + # ports: + # - "7779:7779/tcp" + # - "7780:7780/tcp" + networks: + default: + ipv4_address: ${SEPP_IP} metrics: build: ./metrics image: docker_metrics diff --git a/scp/scp.yaml b/scp/scp.yaml index 2a6f6af..51b28fe 100644 --- a/scp/scp.yaml +++ b/scp/scp.yaml @@ -11,12 +11,9 @@ parameter: scp: sbi: - addr: - - SCP_IP - port: 7777 - -nrf: - sbi: - - addr: - - NRF_IP - port: 7777 + server: + - address: SCP_IP + port: 7777 + client: + nrf: + - uri: http://nrf.FIVEGC_DOMAIN:7777 diff --git a/scp/scp_init.sh b/scp/scp_init.sh index 3844a8c..b8bfe7a 100755 --- a/scp/scp_init.sh +++ b/scp/scp_init.sh @@ -26,9 +26,11 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + cp /mnt/scp/scp.yaml install/etc/open5gs sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/scp.yaml -sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/scp.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/scp.yaml # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/sepp/sepp.yaml b/sepp/sepp.yaml new file mode 100644 index 0000000..dfed590 --- /dev/null +++ b/sepp/sepp.yaml @@ -0,0 +1,25 @@ +logger: + file: /open5gs/install/var/log/open5gs/sepp.log + +sepp: + sbi: + server: + - address: SEPP_IP + port: 7777 + client: + scp: + - uri: http://SCP_IP:7777 + n32: + server: + - sender: sepp.FIVEGC_DOMAIN + address: SEPP_IP + port: 7779 + n32f: + address: SEPP_IP + port: 7780 + client: + # sepp: # Configure roaming networks below + # - receiver: sepp.5gc.mnc070.mcc999.3gppnetwork.org + # uri: http://192.168.220.25:7779 + # n32f: + # uri: http://192.168.220.25:7780 diff --git a/sepp/sepp_init.sh b/sepp/sepp_init.sh new file mode 100755 index 0000000..8e998a0 --- /dev/null +++ b/sepp/sepp_init.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# BSD 2-Clause License + +# Copyright (c) 2020, Supreeth Herle +# All rights reserved. + +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: + +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. + +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. + +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + +cp /mnt/sepp/sepp.yaml install/etc/open5gs +sed -i 's|SEPP_IP|'$SEPP_IP'|g' install/etc/open5gs/sepp.yaml +sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/sepp.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/sepp.yaml + +# Sync docker time +#ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/sgwc/sgwc.yaml b/sgwc/sgwc.yaml index 419f6d1..45b779c 100644 --- a/sgwc/sgwc.yaml +++ b/sgwc/sgwc.yaml @@ -5,10 +5,11 @@ parameter: sgwc: gtpc: - - addr: SGWC_IP + server: + - address: SGWC_IP pfcp: - - addr: SGWC_IP - -sgwu: - pfcp: - - addr: SGWU_IP + server: + - address: SGWC_IP + client: + sgwu: + - address: SGWU_IP diff --git a/sgwu/sgwu.yaml b/sgwu/sgwu.yaml index bf84e41..1f515c6 100644 --- a/sgwu/sgwu.yaml +++ b/sgwu/sgwu.yaml @@ -5,11 +5,12 @@ parameter: sgwu: gtpu: - - addr: SGWU_IP - advertise: SGWU_ADVERTISE_IP + server: + - address: SGWU_IP + advertise: SGWU_ADVERTISE_IP pfcp: - - addr: SGWU_IP - -sgwc: - pfcp: - - addr: SGWC_IP + server: + - address: SGWU_IP + client: + sgwc: + - address: SGWC_IP diff --git a/smf/smf.yaml b/smf/smf.yaml index 245f53b..79c0757 100644 --- a/smf/smf.yaml +++ b/smf/smf.yaml @@ -13,27 +13,35 @@ parameter: smf: freeDiameter: /open5gs/install/etc/freeDiameter/smf.conf sbi: - - addr: SMF_IP - port: 7777 + server: + - address: SMF_IP + port: 7777 + client: +# nrf: +# - uri: http://nrf.FIVEGC_DOMAIN:7777 + scp: + - uri: http://SCP_IP:7777 gtpc: - - addr: SMF_IP + server: + - address: SMF_IP gtpu: - - addr: SMF_IP + server: + - address: SMF_IP pfcp: - - addr: SMF_IP - subnet: - - addr: UE_IPV4_INTERNET_TUN_IP + server: + - address: SMF_IP + client: + upf: + - address: UPF_IP + session: + - subnet: UE_IPV4_INTERNET_TUN_IP dnn: internet - dev: ogstun - - addr: 2001:230:cafe::1/48 - dev: ogstun + - subnet: 2001:230:cafe::1/48 dnn: internet - - addr: UE_IPV4_IMS_TUN_IP + - subnet: UE_IPV4_IMS_TUN_IP dnn: ims - dev: ogstun2 - - addr: 2001:230:babe::1/48 + - subnet: 2001:230:babe::1/48 dnn: ims - dev: ogstun2 dns: - SMF_DNS1 - SMF_DNS2 @@ -43,21 +51,6 @@ smf: - PCSCF_IP mtu: 1450 metrics: - - addr: SMF_IP - port: 9091 - -scp: - sbi: - - addr: - - SCP_IP - port: 7777 - -nrf: - sbi: - - addr: - - NRF_IP - port: 7777 - -upf: - pfcp: - - addr: UPF_IP + server: + - address: SMF_IP + port: 9091 diff --git a/smf/smf_4g.yaml b/smf/smf_4g.yaml index 73974be..8ba34df 100644 --- a/smf/smf_4g.yaml +++ b/smf/smf_4g.yaml @@ -13,24 +13,26 @@ parameter: smf: freeDiameter: /open5gs/install/etc/freeDiameter/smf.conf gtpc: - - addr: SMF_IP + server: + - address: SMF_IP gtpu: - - addr: SMF_IP + server: + - address: SMF_IP pfcp: - - addr: SMF_IP - subnet: - - addr: UE_IPV4_INTERNET_TUN_IP + server: + - address: SMF_IP + client: + upf: + - address: UPF_IP + session: + - subnet: UE_IPV4_INTERNET_TUN_IP dnn: internet - dev: ogstun - - addr: 2001:230:cafe::1/48 - dev: ogstun + - subnet: 2001:230:cafe::1/48 dnn: internet - - addr: UE_IPV4_IMS_TUN_IP + - subnet: UE_IPV4_IMS_TUN_IP dnn: ims - dev: ogstun2 - - addr: 2001:230:babe::1/48 + - subnet: 2001:230:babe::1/48 dnn: ims - dev: ogstun2 dns: - SMF_DNS1 - SMF_DNS2 @@ -40,9 +42,6 @@ smf: - PCSCF_IP mtu: 1450 metrics: - - addr: SMF_IP - port: 9091 - -upf: - pfcp: - - addr: UPF_IP + server: + - address: SMF_IP + port: 9091 diff --git a/smf/smf_init.sh b/smf/smf_init.sh index 0105f6f..6dad2e0 100755 --- a/smf/smf_init.sh +++ b/smf/smf_init.sh @@ -32,6 +32,7 @@ export IP_ADDR=$(awk 'END{print $1}' /etc/hosts) export IF_NAME=$(ip r | awk '/default/ { print $5 }') [ ${#MNC} == 3 ] && EPC_DOMAIN="epc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || EPC_DOMAIN="epc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" UE_IPV4_INTERNET_TUN_IP=$(python3 /mnt/smf/ip_utils.py --ip_range $UE_IPV4_INTERNET) UE_IPV4_IMS_TUN_IP=$(python3 /mnt/smf/ip_utils.py --ip_range $UE_IPV4_IMS) @@ -53,6 +54,7 @@ sed -i 's|SMF_DNS2|'$SMF_DNS2'|g' install/etc/open5gs/smf.yaml sed -i 's|UE_IPV4_INTERNET_TUN_IP|'$UE_IPV4_INTERNET_TUN_IP'|g' install/etc/open5gs/smf.yaml sed -i 's|UE_IPV4_IMS_TUN_IP|'$UE_IPV4_IMS_TUN_IP'|g' install/etc/open5gs/smf.yaml sed -i 's|PCSCF_IP|'$PCSCF_IP'|g' install/etc/open5gs/smf.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/smf.yaml sed -i 's|SMF_IP|'$SMF_IP'|g' install/etc/freeDiameter/smf.conf sed -i 's|PCRF_IP|'$PCRF_IP'|g' install/etc/freeDiameter/smf.conf sed -i 's|EPC_DOMAIN|'$EPC_DOMAIN'|g' install/etc/freeDiameter/smf.conf diff --git a/udm/udm.yaml b/udm/udm.yaml index 6665406..f4981d5 100644 --- a/udm/udm.yaml +++ b/udm/udm.yaml @@ -18,17 +18,11 @@ udm: scheme: 2 key: /open5gs/install/etc/open5gs/hnet/secp256r1-2.key sbi: - - addr: UDM_IP - port: 7777 - -scp: - sbi: - - addr: - - SCP_IP - port: 7777 - -nrf: - sbi: - - addr: - - NRF_IP - port: 7777 + server: + - address: udm.FIVEGC_DOMAIN + port: 7777 + client: +# nrf: +# - uri: http://nrf.FIVEGC_DOMAIN:7777 + scp: + - uri: http://SCP_IP:7777 diff --git a/udm/udm_init.sh b/udm/udm_init.sh index f48c7a4..77fa6f8 100755 --- a/udm/udm_init.sh +++ b/udm/udm_init.sh @@ -26,10 +26,11 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + cp /mnt/udm/udm.yaml install/etc/open5gs -sed -i 's|UDM_IP|'$UDM_IP'|g' install/etc/open5gs/udm.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/udm.yaml sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/udm.yaml -sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/udm.yaml cp /mnt/udm/curve25519-1.key install/etc/open5gs/hnet cp /mnt/udm/secp256r1-2.key install/etc/open5gs/hnet diff --git a/udr/udr.yaml b/udr/udr.yaml index 932806d..63408f6 100644 --- a/udr/udr.yaml +++ b/udr/udr.yaml @@ -13,17 +13,11 @@ parameter: udr: sbi: - - addr: UDR_IP - port: 7777 - -scp: - sbi: - - addr: - - SCP_IP - port: 7777 - -nrf: - sbi: - - addr: - - NRF_IP - port: 7777 + server: + - address: UDR_IP + port: 7777 + client: +# nrf: +# - uri: http://nrf.FIVEGC_DOMAIN:7777 + scp: + - uri: http://SCP_IP:7777 diff --git a/udr/udr_init.sh b/udr/udr_init.sh index a691fb5..b359cdb 100755 --- a/udr/udr_init.sh +++ b/udr/udr_init.sh @@ -28,11 +28,14 @@ export DB_URI="mongodb://${MONGO_IP}/open5gs" +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + cp /mnt/udr/udr.yaml install/etc/open5gs sed -i 's|UDR_IP|'$UDR_IP'|g' install/etc/open5gs/udr.yaml sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/udr.yaml sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/udr.yaml sed -i 's|MONGO_IP|'$MONGO_IP'|g' install/etc/open5gs/udr.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/udr.yaml # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/upf/upf.yaml b/upf/upf.yaml index bed4f41..385041e 100644 --- a/upf/upf.yaml +++ b/upf/upf.yaml @@ -5,27 +5,29 @@ parameter: upf: pfcp: - - addr: UPF_IP + server: + - address: UPF_IP + client: + smf: + - address: SMF_IP gtpu: - - addr: UPF_IP - advertise: UPF_ADVERTISE_IP - subnet: - - addr: UE_IPV4_INTERNET_TUN_IP + server: + - address: UPF_IP + advertise: UPF_ADVERTISE_IP + session: + - subnet: UE_IPV4_INTERNET_TUN_IP dev: ogstun dnn: internet - - addr: 2001:230:cafe::1/48 + - subnet: 2001:230:cafe::1/48 dev: ogstun dnn: internet - - addr: UE_IPV4_IMS_TUN_IP + - subnet: UE_IPV4_IMS_TUN_IP dnn: ims dev: ogstun2 - - addr: 2001:230:babe::1/48 + - subnet: 2001:230:babe::1/48 dnn: ims dev: ogstun2 metrics: - - addr: UPF_IP - port: 9091 - -smf: - pfcp: - - addr: SMF_IP + server: + - address: UPF_IP + port: 9091 diff --git a/upf/upf_init.sh b/upf/upf_init.sh index 3512410..ad3c8fb 100755 --- a/upf/upf_init.sh +++ b/upf/upf_init.sh @@ -34,6 +34,8 @@ export IF_NAME=$(ip r | awk '/default/ { print $5 }') python3 /mnt/upf/tun_if.py --tun_ifname ogstun --ipv4_range $UE_IPV4_INTERNET --ipv6_range 2001:230:cafe::/48 python3 /mnt/upf/tun_if.py --tun_ifname ogstun2 --ipv4_range $UE_IPV4_IMS --ipv6_range 2001:230:babe::/48 --nat_rule 'no' +[ ${#MNC} == 3 ] && FIVEGC_DOMAIN="5gc.mnc${MNC}.mcc${MCC}.3gppnetwork.org" || FIVEGC_DOMAIN="5gc.mnc0${MNC}.mcc${MCC}.3gppnetwork.org" + UE_IPV4_INTERNET_TUN_IP=$(python3 /mnt/upf/ip_utils.py --ip_range $UE_IPV4_INTERNET) UE_IPV4_IMS_TUN_IP=$(python3 /mnt/upf/ip_utils.py --ip_range $UE_IPV4_IMS) @@ -43,6 +45,7 @@ sed -i 's|SMF_IP|'$SMF_IP'|g' install/etc/open5gs/upf.yaml sed -i 's|UE_IPV4_INTERNET_TUN_IP|'$UE_IPV4_INTERNET_TUN_IP'|g' install/etc/open5gs/upf.yaml sed -i 's|UE_IPV4_IMS_TUN_IP|'$UE_IPV4_IMS_TUN_IP'|g' install/etc/open5gs/upf.yaml sed -i 's|UPF_ADVERTISE_IP|'$UPF_ADVERTISE_IP'|g' install/etc/open5gs/upf.yaml +sed -i 's|FIVEGC_DOMAIN|'$FIVEGC_DOMAIN'|g' install/etc/open5gs/upf.yaml # Sync docker time #ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone