diff --git a/.env b/.env
index 9dc4c9a..daef540 100644
--- a/.env
+++ b/.env
@@ -15,6 +15,7 @@ HSS_IP=172.22.0.3
# PCRF
PCRF_IP=172.22.0.4
+PCRF_BIND_PORT=3873
# SGW
SGWC_IP=172.22.0.5
@@ -23,6 +24,8 @@ SGWU_ADVERTISE_IP=172.22.0.6
# SMF
SMF_IP=172.22.0.7
+SMF_DNS1=8.8.8.8
+SMF_DNS2=8.8.4.4
# UPF
UPF_IP=172.22.0.8
@@ -57,15 +60,19 @@ MYSQL_IP=172.22.0.17
# PYHSS
PYHSS_IP=172.22.0.18
+PYHSS_BIND_PORT=3875
# ICSCF
ICSCF_IP=172.22.0.19
+ICSCF_BIND_PORT=3869
# SCSCF
SCSCF_IP=172.22.0.20
+SCSCF_BIND_PORT=3870
# PCSCF
PCSCF_IP=172.22.0.21
+PCSCF_BIND_PORT=3871
# SRSLTE ENB
SRS_ENB_IP=172.22.0.22
diff --git a/README.md b/README.md
index 7b7beae..edc34a7 100644
--- a/README.md
+++ b/README.md
@@ -59,6 +59,8 @@ cd ..
set -a
source .env
docker-compose build --no-cache
+sudo ufw disable
+sudo sysctl -w net.ipv4.ip_forward=1
```
4G deployment:
diff --git a/external-ims-deploy.yaml b/external-ims-deploy.yaml
new file mode 100644
index 0000000..1e02a67
--- /dev/null
+++ b/external-ims-deploy.yaml
@@ -0,0 +1,327 @@
+version: '3'
+services:
+ mongo:
+ image: mongo:6.0
+ container_name: mongo
+ command: --bind_ip 0.0.0.0
+ env_file:
+ - .env
+ volumes:
+ - mongodbdata:/data/db
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "27017/udp"
+ - "27017/tcp"
+ networks:
+ default:
+ ipv4_address: ${MONGO_IP}
+ webui:
+ image: docker_open5gs
+ container_name: webui
+ depends_on:
+ - mongo
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=webui
+ volumes:
+ - ./webui:/mnt/webui
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "3000/tcp"
+ ports:
+ - "3000:3000/tcp"
+ networks:
+ default:
+ ipv4_address: ${WEBUI_IP}
+ hss:
+ image: docker_open5gs
+ container_name: hss
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=hss-1
+ volumes:
+ - ./hss:/mnt/hss
+ - ./log:/open5gs/install/var/log/open5gs
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ depends_on:
+ - mongo
+ expose:
+ - "3868/tcp"
+ - "3868/sctp"
+ - "5868/tcp"
+ - "5868/sctp"
+ networks:
+ default:
+ ipv4_address: ${HSS_IP}
+ sgwc:
+ image: docker_open5gs
+ depends_on:
+ - smf
+ - upf
+ container_name: sgwc
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=sgwc-1
+ volumes:
+ - ./sgwc:/mnt/sgwc
+ - ./log:/open5gs/install/var/log/open5gs
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "2123/udp"
+ - "8805/udp"
+ networks:
+ default:
+ ipv4_address: ${SGWC_IP}
+ sgwu:
+ image: docker_open5gs
+ depends_on:
+ - smf
+ - upf
+ container_name: sgwu
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=sgwu-1
+ volumes:
+ - ./sgwu:/mnt/sgwu
+ - ./log:/open5gs/install/var/log/open5gs
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "8805/udp"
+ - "2152/udp"
+ # ports:
+ # - "${SGWU_ADVERTISE_IP}:2152:2152/udp"
+ networks:
+ default:
+ ipv4_address: ${SGWU_IP}
+ smf:
+ image: docker_open5gs
+ container_name: smf
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=smf-1
+ volumes:
+ - ./smf:/mnt/smf
+ - ./log:/open5gs/install/var/log/open5gs
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "3868/tcp"
+ - "3868/sctp"
+ - "5868/tcp"
+ - "5868/sctp"
+ - "8805/udp"
+ - "2123/udp"
+ - "7777/tcp"
+ - "9091/tcp"
+ networks:
+ default:
+ ipv4_address: ${SMF_IP}
+ upf:
+ image: docker_open5gs
+ depends_on:
+ - smf
+ container_name: upf
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=upf-1
+ volumes:
+ - ./upf:/mnt/upf
+ - ./log:/open5gs/install/var/log/open5gs
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "2152/udp"
+ - "8805/udp"
+ - "9091/tcp"
+ cap_add:
+ - NET_ADMIN
+ privileged: true
+ # sysctls:
+ # - net.ipv4.ip_forward=1
+ # - net.ipv6.conf.all.disable_ipv6=0
+ network_mode: host
+ mme:
+ image: docker_open5gs
+ depends_on:
+ - hss
+ - sgwc
+ - sgwu
+ - smf
+ - upf
+ - osmomsc
+ container_name: mme
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=mme-1
+ volumes:
+ - ./mme:/mnt/mme
+ - ./log:/open5gs/install/var/log/open5gs
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "3868/tcp"
+ - "3868/sctp"
+ - "5868/tcp"
+ - "5868/sctp"
+ - "36412/sctp"
+ - "2123/udp"
+ - "9091/tcp"
+ # ports:
+ # - "36412:36412/sctp"
+ networks:
+ default:
+ ipv4_address: ${MME_IP}
+ pcrf:
+ image: docker_open5gs
+ container_name: pcrf
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=pcrf-1
+ depends_on:
+ - mongo
+ volumes:
+ - ./pcrf:/mnt/pcrf
+ - ./log:/open5gs/install/var/log/open5gs
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "${PCRF_BIND_PORT}/tcp"
+ - "${PCRF_BIND_PORT}/sctp"
+ - "5868/tcp"
+ - "5868/sctp"
+ # ports:
+ # - "${PCRF_BIND_PORT}:${PCRF_BIND_PORT}/sctp"
+ # - "${PCRF_BIND_PORT}:${PCRF_BIND_PORT}/tcp"
+ networks:
+ default:
+ ipv4_address: ${PCRF_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}
+ mysql:
+ build: ./mysql
+ image: docker_mysql
+ container_name: mysql
+ env_file:
+ - .env
+ volumes:
+ - dbdata:/var/lib/mysql
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "3306/tcp"
+ networks:
+ default:
+ ipv4_address: ${MYSQL_IP}
+ pyhss:
+ build: ./pyhss
+ image: docker_pyhss
+ container_name: pyhss
+ dns: ${DNS_IP}
+ volumes:
+ - ./pyhss:/mnt/pyhss
+ - ./pyhss/logs:/pyhss/log/
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ env_file:
+ - .env
+ depends_on:
+ - dns
+ - mysql
+ expose:
+ - "${PYHSS_BIND_PORT}/tcp"
+ - "${PYHSS_BIND_PORT}/sctp"
+ ports:
+ # - "${PYHSS_BIND_PORT}:${PYHSS_BIND_PORT}/sctp"
+ # - "${PYHSS_BIND_PORT}:${PYHSS_BIND_PORT}/tcp"
+ - "8080:8080/tcp"
+ networks:
+ default:
+ ipv4_address: ${PYHSS_IP}
+ osmomsc:
+ build: ./osmomsc
+ image: docker_osmomsc
+ container_name: osmomsc
+ volumes:
+ - ./osmomsc:/mnt/osmomsc
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=osmomsc-1
+ depends_on:
+ - osmohlr
+ expose:
+ - "29118/sctp"
+ - "2775/tcp"
+ networks:
+ default:
+ ipv4_address: ${OSMOMSC_IP}
+ osmohlr:
+ build: ./osmohlr
+ image: docker_osmohlr
+ container_name: osmohlr
+ volumes:
+ - ./osmohlr:/mnt/osmohlr
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ env_file:
+ - .env
+ environment:
+ - COMPONENT_NAME=osmohlr-1
+ expose:
+ - "4222/tcp"
+ networks:
+ default:
+ ipv4_address: ${OSMOHLR_IP}
+ metrics:
+ build: ./metrics
+ image: docker_metrics
+ container_name: metrics
+ env_file:
+ - .env
+ volumes:
+ - ./metrics:/mnt/metrics
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ expose:
+ - "9090/tcp"
+ ports:
+ - "9090:9090/tcp"
+ networks:
+ default:
+ ipv4_address: ${METRICS_IP}
+networks:
+ default:
+ ipam:
+ config:
+ - subnet: ${TEST_NETWORK}
+volumes:
+ mongodbdata: {}
+ dbdata: {}
diff --git a/icscf/icscf.xml b/icscf/icscf.xml
index 5fd38ef..597aa82 100644
--- a/icscf/icscf.xml
+++ b/icscf/icscf.xml
@@ -15,9 +15,9 @@
MaxAuthSessionTimeout="3600"
>
-
+
-
+
diff --git a/icscf/icscf_init.sh b/icscf/icscf_init.sh
index 32a10d3..cd39250 100755
--- a/icscf/icscf_init.sh
+++ b/icscf/icscf_init.sh
@@ -86,6 +86,8 @@ sed -i 's|MYSQL_IP|'$MYSQL_IP'|g' /etc/kamailio_icscf/icscf.cfg
sed -i 's|ICSCF_IP|'$ICSCF_IP'|g' /etc/kamailio_icscf/icscf.xml
sed -i 's|IMS_DOMAIN|'$IMS_DOMAIN'|g' /etc/kamailio_icscf/icscf.xml
+sed -i 's|PYHSS_BIND_PORT|'$PYHSS_BIND_PORT'|g' /etc/kamailio_icscf/icscf.xml
+sed -i 's|ICSCF_BIND_PORT|'$ICSCF_BIND_PORT'|g' /etc/kamailio_icscf/icscf.xml
# Sync docker time
#ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
diff --git a/pcrf/pcrf.conf b/pcrf/pcrf.conf
index f1306d5..356374e 100644
--- a/pcrf/pcrf.conf
+++ b/pcrf/pcrf.conf
@@ -29,6 +29,7 @@ Realm = "EPC_DOMAIN";
# The port this peer is listening on for incoming connections (TCP and SCTP).
# Default: 3868. Use 0 to disable.
#Port = 3868;
+Port = PCRF_BIND_PORT;
# The port this peer is listening on for incoming TLS-protected connections (TCP and SCTP).
# See TLS_old_method for more information about TLS flavours.
@@ -261,6 +262,6 @@ LoadExtension = "LD_LIBRARY_PATH/freeDiameter/dict_dcca_3gpp.fdx";
#ConnectPeer = "aaa.wide.ad.jp";
#ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
ConnectPeer = "smf.EPC_DOMAIN" { ConnectTo = "SMF_IP"; Port = 3868; No_TLS; };
-ConnectPeer = "pcscf.IMS_DOMAIN" { ConnectTo = "PCSCF_IP"; Port = 3871; No_TLS; };
+ConnectPeer = "pcscf.IMS_DOMAIN" { ConnectTo = "PCSCF_IP"; Port = PCSCF_BIND_PORT; No_TLS; };
##############################################################
diff --git a/pcrf/pcrf_init.sh b/pcrf/pcrf_init.sh
index 5c12e75..a276507 100755
--- a/pcrf/pcrf_init.sh
+++ b/pcrf/pcrf_init.sh
@@ -41,7 +41,9 @@ sed -i 's|PCRF_IP|'$PCRF_IP'|g' install/etc/freeDiameter/pcrf.conf
sed -i 's|SMF_IP|'$SMF_IP'|g' install/etc/freeDiameter/pcrf.conf
sed -i 's|EPC_DOMAIN|'$EPC_DOMAIN'|g' install/etc/freeDiameter/pcrf.conf
sed -i 's|IMS_DOMAIN|'$IMS_DOMAIN'|g' install/etc/freeDiameter/pcrf.conf
+sed -i 's|PCRF_BIND_PORT|'$PCRF_BIND_PORT'|g' install/etc/freeDiameter/pcrf.conf
sed -i 's|PCSCF_IP|'$PCSCF_IP'|g' install/etc/freeDiameter/pcrf.conf
+sed -i 's|PCSCF_BIND_PORT|'$PCSCF_BIND_PORT'|g' install/etc/freeDiameter/pcrf.conf
sed -i 's|LD_LIBRARY_PATH|'$LD_LIBRARY_PATH'|g' install/etc/freeDiameter/pcrf.conf
sed -i 's|EPC_DOMAIN|'$EPC_DOMAIN'|g' install/etc/freeDiameter/make_certs.sh
diff --git a/pcscf/pcscf.xml b/pcscf/pcscf.xml
index 6179e2f..73b79b5 100644
--- a/pcscf/pcscf.xml
+++ b/pcscf/pcscf.xml
@@ -14,9 +14,9 @@
DefaultAuthSessionTimeout="3600"
MaxAuthSessionTimeout="3600"
>
-
+
-
+
diff --git a/pcscf/pcscf_init.sh b/pcscf/pcscf_init.sh
index ef0c3bc..18e056f 100755
--- a/pcscf/pcscf_init.sh
+++ b/pcscf/pcscf_init.sh
@@ -76,6 +76,8 @@ sed -i 's|MYSQL_IP|'$MYSQL_IP'|g' /etc/kamailio_pcscf/pcscf.cfg
sed -i 's|PCSCF_IP|'$PCSCF_IP'|g' /etc/kamailio_pcscf/pcscf.xml
sed -i 's|IMS_DOMAIN|'$IMS_DOMAIN'|g' /etc/kamailio_pcscf/pcscf.xml
sed -i 's|EPC_DOMAIN|'$EPC_DOMAIN'|g' /etc/kamailio_pcscf/pcscf.xml
+sed -i 's|PCRF_BIND_PORT|'$PCRF_BIND_PORT'|g' /etc/kamailio_pcscf/pcscf.xml
+sed -i 's|PCSCF_BIND_PORT|'$PCSCF_BIND_PORT'|g' /etc/kamailio_pcscf/pcscf.xml
sed -i 's|RTPENGINE_IP|'$RTPENGINE_IP'|g' /etc/kamailio_pcscf/kamailio_pcscf.cfg
diff --git a/pyhss/config.yaml b/pyhss/config.yaml
index 2487ef1..49d2fd0 100644
--- a/pyhss/config.yaml
+++ b/pyhss/config.yaml
@@ -5,7 +5,7 @@ hss:
bind_ip: ["PYHSS_IP"]
#Port to listen on (Same for TCP & SCTP)
- bind_port: 3868
+ bind_port: PYHSS_BIND_PORT
#Value to populate as the OriginHost in Diameter responses
OriginHost: "hss.IMS_DOMAIN"
diff --git a/pyhss/pyhss_init.sh b/pyhss/pyhss_init.sh
index 6591964..86c70ea 100755
--- a/pyhss/pyhss_init.sh
+++ b/pyhss/pyhss_init.sh
@@ -50,6 +50,7 @@ cp /mnt/pyhss/default_ifc.xml ./
cp /mnt/pyhss/default_sh_user_data.xml ./
sed -i 's|PYHSS_IP|'$PYHSS_IP'|g' ./config.yaml
+sed -i 's|PYHSS_BIND_PORT|'$PYHSS_BIND_PORT'|g' ./config.yaml
sed -i 's|IMS_DOMAIN|'$IMS_DOMAIN'|g' ./config.yaml
sed -i 's|OP_MCC|'$MCC'|g' ./config.yaml
sed -i 's|OP_MNC|'$MNC'|g' ./config.yaml
diff --git a/scscf/scscf.xml b/scscf/scscf.xml
index f09f172..d282882 100644
--- a/scscf/scscf.xml
+++ b/scscf/scscf.xml
@@ -14,9 +14,9 @@
DefaultAuthSessionTimeout="3600"
MaxAuthSessionTimeout="3600"
>
-
+
-
+
diff --git a/scscf/scscf_init.sh b/scscf/scscf_init.sh
index a6f5c0c..2fd4a23 100755
--- a/scscf/scscf_init.sh
+++ b/scscf/scscf_init.sh
@@ -73,6 +73,8 @@ sed -i 's|MYSQL_IP|'$MYSQL_IP'|g' /etc/kamailio_scscf/scscf.cfg
sed -i 's|SCSCF_IP|'$SCSCF_IP'|g' /etc/kamailio_scscf/scscf.xml
sed -i 's|IMS_DOMAIN|'$IMS_DOMAIN'|g' /etc/kamailio_scscf/scscf.xml
+sed -i 's|PYHSS_BIND_PORT|'$PYHSS_BIND_PORT'|g' /etc/kamailio_scscf/scscf.xml
+sed -i 's|SCSCF_BIND_PORT|'$SCSCF_BIND_PORT'|g' /etc/kamailio_scscf/scscf.xml
# Sync docker time
#ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
diff --git a/smf/smf.conf b/smf/smf.conf
index 2f3b3fd..3677b43 100644
--- a/smf/smf.conf
+++ b/smf/smf.conf
@@ -260,7 +260,7 @@ LoadExtension = "LD_LIBRARY_PATH/freeDiameter/dict_dcca_3gpp.fdx";
# Examples:
#ConnectPeer = "aaa.wide.ad.jp";
#ConnectPeer = "old.diameter.serv" { TcTimer = 60; TLS_old_method; No_SCTP; Port=3868; } ;
-ConnectPeer = "pcrf.EPC_DOMAIN" { ConnectTo = "PCRF_IP"; Port = 3868; No_TLS; };
+ConnectPeer = "pcrf.EPC_DOMAIN" { ConnectTo = "PCRF_IP"; Port = PCRF_BIND_PORT; No_TLS; };
##############################################################
diff --git a/smf/smf.yaml b/smf/smf.yaml
index 8e4c545..41726ce 100644
--- a/smf/smf.yaml
+++ b/smf/smf.yaml
@@ -35,13 +35,13 @@ smf:
dnn: ims
dev: ogstun2
dns:
- - 8.8.8.8
- - 8.8.4.4
+ - SMF_DNS1
+ - SMF_DNS2
- 2001:4860:4860::8888
- 2001:4860:4860::8844
p-cscf:
- PCSCF_IP
- mtu: 1400
+ mtu: 1410
metrics:
- addr: SMF_IP
port: 9091
diff --git a/smf/smf_4g.yaml b/smf/smf_4g.yaml
index 1108da5..0b26735 100644
--- a/smf/smf_4g.yaml
+++ b/smf/smf_4g.yaml
@@ -32,13 +32,13 @@ smf:
dnn: ims
dev: ogstun2
dns:
- - 8.8.8.8
- - 8.8.4.4
+ - SMF_DNS1
+ - SMF_DNS2
- 2001:4860:4860::8888
- 2001:4860:4860::8844
p-cscf:
- PCSCF_IP
- mtu: 1400
+ mtu: 1410
metrics:
- addr: SMF_IP
port: 9091
diff --git a/smf/smf_init.sh b/smf/smf_init.sh
index a7d8af1..0105f6f 100755
--- a/smf/smf_init.sh
+++ b/smf/smf_init.sh
@@ -48,17 +48,18 @@ sed -i 's|SMF_IP|'$SMF_IP'|g' install/etc/open5gs/smf.yaml
sed -i 's|SCP_IP|'$SCP_IP'|g' install/etc/open5gs/smf.yaml
sed -i 's|NRF_IP|'$NRF_IP'|g' install/etc/open5gs/smf.yaml
sed -i 's|UPF_IP|'$UPF_IP'|g' install/etc/open5gs/smf.yaml
+sed -i 's|SMF_DNS1|'$SMF_DNS1'|g' install/etc/open5gs/smf.yaml
+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|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
+sed -i 's|PCRF_BIND_PORT|'$PCRF_BIND_PORT'|g' install/etc/freeDiameter/smf.conf
sed -i 's|LD_LIBRARY_PATH|'$LD_LIBRARY_PATH'|g' install/etc/freeDiameter/smf.conf
sed -i 's|EPC_DOMAIN|'$EPC_DOMAIN'|g' install/etc/freeDiameter/make_certs.sh
-
-
# Generate TLS certificates
./install/etc/freeDiameter/make_certs.sh install/etc/freeDiameter
diff --git a/srslte/enb.conf b/srslte/enb.conf
index 1aa9c47..d370fb4 100644
--- a/srslte/enb.conf
+++ b/srslte/enb.conf
@@ -74,7 +74,7 @@ rx_gain = 40
#device_name = lime
#device_args = index=0,cal=all,refclk=10e6
#device_args = index=0,cal=none,refclk=10e6
-#device_args = clock=external
+device_args = clock=external
#device_name = auto