Add docker-compose.yml for l2sim-4g
This commit is contained in:
@@ -0,0 +1,305 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
cassandra:
|
||||||
|
image: cassandra:2.1
|
||||||
|
container_name: l2sim4g-cassandra
|
||||||
|
networks:
|
||||||
|
private_net:
|
||||||
|
ipv4_address: 192.168.68.2
|
||||||
|
environment:
|
||||||
|
CASSANDRA_CLUSTER_NAME: "OAI HSS Cluster"
|
||||||
|
CASSANDRA_ENDPOINT_SNITCH: GossipingPropertyFileSnitch
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "nodetool status"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
db_init:
|
||||||
|
image: cassandra:2.1
|
||||||
|
container_name: l2sim4g-db-init
|
||||||
|
depends_on: [cassandra]
|
||||||
|
deploy:
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
max_attempts: 10
|
||||||
|
networks:
|
||||||
|
private_net:
|
||||||
|
ipv4_address: 192.168.68.4
|
||||||
|
volumes:
|
||||||
|
- ./oai_db.cql:/home/oai_db.cql
|
||||||
|
entrypoint: /bin/bash -c "cqlsh --file /home/oai_db.cql 192.168.68.2 && echo 'OK'"
|
||||||
|
|
||||||
|
oai_hss:
|
||||||
|
image: oai-hss:latest
|
||||||
|
container_name: l2sim4g-oai-hss
|
||||||
|
privileged: true
|
||||||
|
depends_on: [cassandra]
|
||||||
|
networks:
|
||||||
|
private_net:
|
||||||
|
ipv4_address: 192.168.68.3
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.61.2
|
||||||
|
environment:
|
||||||
|
REALM: openairinterface.org
|
||||||
|
HSS_FQDN: hss.openairinterface.org
|
||||||
|
PREFIX: /openair-hss/etc
|
||||||
|
cassandra_Server_IP: 192.168.68.2
|
||||||
|
OP_KEY: 1006020f0a478bf6b699f15c062e42b3
|
||||||
|
LTE_K: fec86ba6eb707ed08905757b1bb44b8f
|
||||||
|
APN1: oai.ipv4
|
||||||
|
APN2: internet
|
||||||
|
FIRST_IMSI: 208960100000001
|
||||||
|
NB_USERS: 10
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep oai_hss"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:6.0.5
|
||||||
|
container_name: l2sim4g-redis
|
||||||
|
privileged: true
|
||||||
|
networks:
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.61.6
|
||||||
|
volumes:
|
||||||
|
- ./redis_extern.conf:/usr/local/etc/redis/redis.conf
|
||||||
|
entrypoint: /bin/bash -c "redis-server /usr/local/etc/redis/redis.conf"
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "redis-cli -h 192.168.61.6 -p 6380 ping"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
magma_mme:
|
||||||
|
image: magma-mme:latest
|
||||||
|
container_name: l2sim4g-magma-mme
|
||||||
|
hostname: mme
|
||||||
|
privileged: true
|
||||||
|
depends_on: [oai_hss, redis]
|
||||||
|
networks:
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.61.3
|
||||||
|
environment:
|
||||||
|
TZ: Europe/Paris
|
||||||
|
REALM: openairinterface.org
|
||||||
|
PREFIX: /openair-mme/etc
|
||||||
|
HSS_HOSTNAME: hss
|
||||||
|
HSS_FQDN: hss.openairinterface.org
|
||||||
|
HSS_REALM: openairinterface.org
|
||||||
|
MME_FQDN: mme.openairinterface.org
|
||||||
|
FEATURES: mme_oai
|
||||||
|
volumes:
|
||||||
|
- ./mme_fd.sprint.conf:/magma-mme/etc/mme_fd.conf.tmplt
|
||||||
|
- ./mme.conf:/magma-mme/etc/mme.conf
|
||||||
|
- ./entrypoint.sh:/magma-mme/bin/entrypoint.sh
|
||||||
|
entrypoint: /bin/bash -c "/magma-mme/bin/entrypoint.sh"
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep oai_mme"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
oai_spgwc:
|
||||||
|
image: oai-spgwc:latest
|
||||||
|
privileged: true
|
||||||
|
depends_on: [magma_mme]
|
||||||
|
container_name: l2sim4g-oai-spgwc
|
||||||
|
networks:
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.61.4
|
||||||
|
environment:
|
||||||
|
TZ: Europe/Paris
|
||||||
|
SGW_INTERFACE_NAME_FOR_S11: eth0
|
||||||
|
PGW_INTERFACE_NAME_FOR_SX: eth0
|
||||||
|
DEFAULT_DNS_IPV4_ADDRESS: 172.21.3.100
|
||||||
|
DEFAULT_DNS_SEC_IPV4_ADDRESS: 8.8.4.4
|
||||||
|
PUSH_PROTOCOL_OPTION: 'true'
|
||||||
|
APN_NI_1: oai.ipv4
|
||||||
|
APN_NI_2: oai.ipv4_2
|
||||||
|
DEFAULT_APN_NI_1: oai.ipv4
|
||||||
|
UE_IP_ADDRESS_POOL_1: '12.0.0.2 - 12.0.0.254'
|
||||||
|
UE_IP_ADDRESS_POOL_2: '12.1.1.2 - 12.1.1.254'
|
||||||
|
MCC: '208'
|
||||||
|
MNC: '96'
|
||||||
|
MNC03: '096'
|
||||||
|
TAC: 1
|
||||||
|
GW_ID: 1
|
||||||
|
REALM: openairinterface.org
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep oai_spgwc"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
oai_spgwu:
|
||||||
|
image: oai-spgwu-tiny:latest
|
||||||
|
privileged: true
|
||||||
|
container_name: l2sim4g-oai-spgwu-tiny
|
||||||
|
depends_on: [oai_spgwc]
|
||||||
|
networks:
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.61.5
|
||||||
|
environment:
|
||||||
|
TZ: Europe/Paris
|
||||||
|
PID_DIRECTORY: /var/run
|
||||||
|
INSTANCE: 1
|
||||||
|
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP: eth0
|
||||||
|
PGW_INTERFACE_NAME_FOR_SGI: eth0
|
||||||
|
SGW_INTERFACE_NAME_FOR_SX: eth0
|
||||||
|
SPGWC0_IP_ADDRESS: 192.168.61.4
|
||||||
|
NETWORK_UE_IP: '12.0.0.0/24'
|
||||||
|
NETWORK_UE_NAT_OPTION: 'yes'
|
||||||
|
MCC: '208'
|
||||||
|
MNC: '96'
|
||||||
|
MNC03: '096'
|
||||||
|
TAC: 1
|
||||||
|
GW_ID: 1
|
||||||
|
REALM: openairinterface.org
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep oai_spgwu"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
trf_gen:
|
||||||
|
image: trf-gen:production
|
||||||
|
privileged: true
|
||||||
|
container_name: l2sim4g-trf-gen
|
||||||
|
networks:
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.61.11
|
||||||
|
entrypoint: /bin/bash -c "ip route add 12.0.0.0/24 via 192.168.61.5 dev eth0; sleep infinity"
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "ping -c 2 192.168.61.5"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
oai_enb:
|
||||||
|
image: oai-enb:develop
|
||||||
|
privileged: true
|
||||||
|
container_name: l2sim4g-oai-enb
|
||||||
|
network_mode: "host"
|
||||||
|
environment:
|
||||||
|
TZ: Europe/Paris
|
||||||
|
USE_NFAPI_VNF: 'yes'
|
||||||
|
ENB_NAME: enb-l2sim-vnf
|
||||||
|
MCC: '208'
|
||||||
|
MNC: '96'
|
||||||
|
MNC_LENGTH: 2
|
||||||
|
TAC: 1
|
||||||
|
UTRA_BAND_ID: 7
|
||||||
|
DL_FREQUENCY_IN_MHZ: 2680
|
||||||
|
UL_FREQUENCY_OFFSET_IN_MHZ: 120
|
||||||
|
NID_CELL: 10
|
||||||
|
NB_PRB: 25
|
||||||
|
MME_S1C_IP_ADDRESS: 192.168.61.3
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1_MME: eth0
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1_MME: 192.168.61.1
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1U: eth0
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1U: 192.168.61.1
|
||||||
|
ENB_IPV4_ADDRESS_FOR_X2C: 192.168.61.1
|
||||||
|
FLEXRAN_ENABLED: 'no'
|
||||||
|
FLEXRAN_INTERFACE_NAME: eth0
|
||||||
|
FLEXRAN_IPV4_ADDRESS: 192.168.61.1
|
||||||
|
LOCAL_S_IF_NAME: 'lo:'
|
||||||
|
REMOTE_S_ADDRESS: 127.0.0.1
|
||||||
|
LOCAL_S_ADDRESS: 127.0.0.2
|
||||||
|
USE_ADDITIONAL_OPTIONS: --MACRLCs.[0].scheduler_mode "default" --log_config.global_log_options level,nocolor,time
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep lte-softmodem"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
proxy:
|
||||||
|
image: oai-lte-multi-ue-proxy:latest
|
||||||
|
privileged: true
|
||||||
|
container_name: "l2sim4g-proxy"
|
||||||
|
network_mode: "host"
|
||||||
|
environment:
|
||||||
|
TZ: Europe/Paris
|
||||||
|
command: "/oai-lte-multi-ue-proxy/bin/proxy 1"
|
||||||
|
depends_on:
|
||||||
|
- oai_enb
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep proxy"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
oai_ue1:
|
||||||
|
image: oai-lte-ue:develop
|
||||||
|
privileged: true
|
||||||
|
container_name: l2sim4g-oai-lte-ue1
|
||||||
|
network_mode: "host"
|
||||||
|
environment:
|
||||||
|
TZ: Europe/Paris
|
||||||
|
USE_NFAPI: 'yes'
|
||||||
|
OPENAIR_DIR: /opt/oai-nr-ue
|
||||||
|
MCC: '208'
|
||||||
|
MNC: '96'
|
||||||
|
SHORT_IMSI: '0100000001'
|
||||||
|
LTE_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'
|
||||||
|
OPC: 'c42449363bbad02b66d16bc975d77cc1'
|
||||||
|
MSISDN: '001011234561010'
|
||||||
|
HPLMN: 20896
|
||||||
|
UE_NFAPI_IF_NAME: eno1
|
||||||
|
ENB_IP_ADDRESS: 127.0.0.1
|
||||||
|
LTE_UE_IP_ADDRESS: 127.0.0.1
|
||||||
|
USE_ADDITIONAL_OPTIONS: --L2-emul 5 --nokrnmod 1 --num-ues 1 --node-number 2 --log_config.global_log_options level,nocolor,time
|
||||||
|
volumes:
|
||||||
|
- ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
oai_ue2:
|
||||||
|
image: oai-lte-ue:develop
|
||||||
|
privileged: true
|
||||||
|
container_name: l2sim4g-oai-lte-ue2
|
||||||
|
network_mode: "host"
|
||||||
|
environment:
|
||||||
|
TZ: Europe/Paris
|
||||||
|
USE_NFAPI: 'yes'
|
||||||
|
OPENAIR_DIR: /opt/oai-nr-ue
|
||||||
|
MCC: '208'
|
||||||
|
MNC: '96'
|
||||||
|
SHORT_IMSI: '0100000002'
|
||||||
|
LTE_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'
|
||||||
|
OPC: 'c42449363bbad02b66d16bc975d77cc1'
|
||||||
|
MSISDN: '001011234561010'
|
||||||
|
HPLMN: 20896
|
||||||
|
UE_NFAPI_IF_NAME: eno1
|
||||||
|
ENB_IP_ADDRESS: 127.0.0.1
|
||||||
|
LTE_UE_IP_ADDRESS: 127.0.0.1
|
||||||
|
USE_ADDITIONAL_OPTIONS: --L2-emul 5 --nokrnmod 1 --num-ues 1 --node-number 3 --log_config.global_log_options level,nocolor,time
|
||||||
|
volumes:
|
||||||
|
- ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
networks:
|
||||||
|
private_net:
|
||||||
|
name: l2sim4g-oai-private-net
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 192.168.68.0/26
|
||||||
|
driver_opts:
|
||||||
|
com.docker.network.bridge.name: "l2sim4g-private"
|
||||||
|
public_net:
|
||||||
|
name: l2sim4g-oai-public-net
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 192.168.61.0/26
|
||||||
|
driver_opts:
|
||||||
|
com.docker.network.bridge.name: "l2sim4g-public"
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
INSTANCE=1
|
||||||
|
PREFIX='/magma-mme/etc'
|
||||||
|
MY_REALM='openairinterface.org'
|
||||||
|
|
||||||
|
declare -A MME_CONF
|
||||||
|
|
||||||
|
pushd $PREFIX
|
||||||
|
MME_CONF[@MME_S6A_IP_ADDR@]="192.168.61.3"
|
||||||
|
MME_CONF[@INSTANCE@]=$INSTANCE
|
||||||
|
MME_CONF[@PREFIX@]=$PREFIX
|
||||||
|
MME_CONF[@REALM@]=$MY_REALM
|
||||||
|
MME_CONF[@MME_FQDN@]="mme.${MME_CONF[@REALM@]}"
|
||||||
|
MME_CONF[@HSS_HOSTNAME@]='hss'
|
||||||
|
MME_CONF[@HSS_FQDN@]="${MME_CONF[@HSS_HOSTNAME@]}.${MME_CONF[@REALM@]}"
|
||||||
|
MME_CONF[@HSS_IP_ADDR@]="192.168.61.2"
|
||||||
|
|
||||||
|
cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
|
||||||
|
|
||||||
|
for K in "${!MME_CONF[@]}"; do
|
||||||
|
egrep -lRZ "$K" $PREFIX/mme_fd.conf | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
|
||||||
|
ret=$?;[[ ret -ne 0 ]] && echo "Could not replace $K with ${MME_CONF[$K]}"
|
||||||
|
done
|
||||||
|
|
||||||
|
sed -i -e "s@etc/freeDiameter@etc@" /magma-mme/etc/mme_fd.conf
|
||||||
|
sed -i -e "s@bind: 127.0.0.1@bind: 192.168.61.6@" /etc/magma/redis.yml
|
||||||
|
# Generate freeDiameter certificate
|
||||||
|
popd
|
||||||
|
cd /magma-mme/scripts
|
||||||
|
./check_mme_s6a_certificate $PREFIX mme.${MME_CONF[@REALM@]}
|
||||||
|
|
||||||
|
cd /magma-mme
|
||||||
|
nohup /magma-mme/bin/sctpd > /var/log/sctpd.log 2>&1 &
|
||||||
|
sleep 5
|
||||||
|
/magma-mme/bin/oai_mme -c /magma-mme/etc/mme.conf
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
# generated by generate_mme_config_script.py
|
||||||
|
MME :
|
||||||
|
{
|
||||||
|
REALM = "openairinterface.org"
|
||||||
|
PID_DIRECTORY = "/var/run";
|
||||||
|
MAXENB = 8; # power of 2
|
||||||
|
MAXUE = 16; # power of 2
|
||||||
|
RELATIVE_CAPACITY = 10;
|
||||||
|
|
||||||
|
EMERGENCY_ATTACH_SUPPORTED = "no";
|
||||||
|
UNAUTHENTICATED_IMSI_SUPPORTED = "no";
|
||||||
|
|
||||||
|
# EPS network feature support
|
||||||
|
EPS_NETWORK_FEATURE_SUPPORT_IMS_VOICE_OVER_PS_SESSION_IN_S1 = "no"; # DO NOT CHANGE
|
||||||
|
EPS_NETWORK_FEATURE_SUPPORT_EMERGENCY_BEARER_SERVICES_IN_S1_MODE = "no"; # DO NOT CHANGE
|
||||||
|
EPS_NETWORK_FEATURE_SUPPORT_LOCATION_SERVICES_VIA_EPC = "no"; # DO NOT CHANGE
|
||||||
|
EPS_NETWORK_FEATURE_SUPPORT_EXTENDED_SERVICE_REQUEST = "no"; # DO NOT CHANGE
|
||||||
|
|
||||||
|
# Display statistics about whole system (expressed in seconds)
|
||||||
|
MME_STATISTIC_TIMER = 10;
|
||||||
|
IP_CAPABILITY = "IPV4"; # UE PDN_TYPE
|
||||||
|
USE_STATELESS = "";
|
||||||
|
|
||||||
|
INTERTASK_INTERFACE :
|
||||||
|
{
|
||||||
|
# max queue size per task
|
||||||
|
ITTI_QUEUE_SIZE = 2000000;
|
||||||
|
};
|
||||||
|
|
||||||
|
S6A :
|
||||||
|
{
|
||||||
|
S6A_CONF = "/magma-mme/etc/mme_fd.conf"; # YOUR MME freeDiameter config file path
|
||||||
|
HSS_HOSTNAME = "hss.openairinterface.org";
|
||||||
|
HSS_REALM = "openairinterface.org";
|
||||||
|
};
|
||||||
|
|
||||||
|
# ------- SCTP definitions
|
||||||
|
SCTP :
|
||||||
|
{
|
||||||
|
# Number of streams to use in input/output
|
||||||
|
SCTP_INSTREAMS = 8;
|
||||||
|
SCTP_OUTSTREAMS = 8;
|
||||||
|
};
|
||||||
|
|
||||||
|
# ------- S1AP definitions
|
||||||
|
S1AP :
|
||||||
|
{
|
||||||
|
# outcome drop timer value (seconds)
|
||||||
|
S1AP_OUTCOME_TIMER = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
# ------- MME served GUMMEIs
|
||||||
|
GUMMEI_LIST = (
|
||||||
|
{ MCC="208" ; MNC="96"; MME_GID="32768" ; MME_CODE="3"; }
|
||||||
|
);
|
||||||
|
|
||||||
|
# ------- MME served TAIs
|
||||||
|
TAI_LIST = (
|
||||||
|
{MCC="208" ; MNC="96"; TAC = "1"; }
|
||||||
|
);
|
||||||
|
|
||||||
|
TAC_LIST = (
|
||||||
|
{MCC="208" ; MNC="96"; TAC = "1"; }
|
||||||
|
);
|
||||||
|
|
||||||
|
CSFB :
|
||||||
|
{
|
||||||
|
NON_EPS_SERVICE_CONTROL = "OFF";
|
||||||
|
CSFB_MCC = "208";
|
||||||
|
CSFB_MNC = "96";
|
||||||
|
LAC = "1";
|
||||||
|
};
|
||||||
|
NAS :
|
||||||
|
{
|
||||||
|
ORDERED_SUPPORTED_INTEGRITY_ALGORITHM_LIST = [ "EIA2" , "EIA1" , "EIA0" ];
|
||||||
|
ORDERED_SUPPORTED_CIPHERING_ALGORITHM_LIST = [ "EEA0" , "EEA1" , "EEA2" ];
|
||||||
|
T3402 = 1 # in minutes (default is 12 minutes)
|
||||||
|
T3412 = 54 # in minutes (default is 54 minutes, network dependent)
|
||||||
|
T3422 = 6 # in seconds (default is 6s)
|
||||||
|
T3450 = 6 # in seconds (default is 6s)
|
||||||
|
T3460 = 6 # in seconds (default is 6s)
|
||||||
|
T3470 = 6 # in seconds (default is 6s)
|
||||||
|
T3485 = 8 # UNUSED in seconds (default is 8s)
|
||||||
|
T3486 = 8 # UNUSED in seconds (default is 8s)
|
||||||
|
T3489 = 4 # UNUSED in seconds (default is 4s)
|
||||||
|
T3495 = 8 # UNUSED in seconds (default is 8s)
|
||||||
|
};
|
||||||
|
|
||||||
|
SGS :
|
||||||
|
{
|
||||||
|
TS6_1 = 10 # in seconds (default is 10s)
|
||||||
|
TS8 = 4 # in seconds (default is 4s)
|
||||||
|
TS9 = 2 # in seconds (default is 4s)
|
||||||
|
TS10 = 4 # in seconds (default is 4s)
|
||||||
|
TS13 = 4 # in seconds (default is 4s)
|
||||||
|
};
|
||||||
|
|
||||||
|
NETWORK_INTERFACES :
|
||||||
|
{
|
||||||
|
MME_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||||
|
MME_IPV4_ADDRESS_FOR_S1_MME = "192.168.61.3/24";
|
||||||
|
MME_INTERFACE_NAME_FOR_S11_MME = "eth0";
|
||||||
|
MME_IPV4_ADDRESS_FOR_S11_MME = "192.168.61.3/24";
|
||||||
|
MME_PORT_FOR_S11_MME = 2123;
|
||||||
|
};
|
||||||
|
|
||||||
|
LOGGING :
|
||||||
|
{
|
||||||
|
OUTPUT = "CONSOLE";
|
||||||
|
THREAD_SAFE = "no";
|
||||||
|
COLOR = "no";
|
||||||
|
|
||||||
|
SCTP_LOG_LEVEL = "ERROR";
|
||||||
|
GTPV1U_LOG_LEVEL = "INFO";
|
||||||
|
SPGW_APP_LOG_LEVEL = "INFO";
|
||||||
|
UDP_LOG_LEVEL = "INFO";
|
||||||
|
S1AP_LOG_LEVEL = "DEBUG";
|
||||||
|
NAS_LOG_LEVEL = "INFO";
|
||||||
|
MME_APP_LOG_LEVEL = "DEBUG";
|
||||||
|
GTPV2C_LOG_LEVEL = "INFO";
|
||||||
|
S11_LOG_LEVEL = "DEBUG";
|
||||||
|
S6A_LOG_LEVEL = "DEBUG";
|
||||||
|
UTIL_LOG_LEVEL = "INFO";
|
||||||
|
MSC_LOG_LEVEL = "ERROR";
|
||||||
|
ITTI_LOG_LEVEL = "ERROR";
|
||||||
|
MME_SCENARIO_PLAYER_LOG_LEVEL = "ERROR";
|
||||||
|
ASN1_VERBOSITY = "INFO";
|
||||||
|
};
|
||||||
|
|
||||||
|
S-GW :
|
||||||
|
{
|
||||||
|
SGW_IPV4_ADDRESS_FOR_S11 = "192.168.61.4";
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,169 @@
|
|||||||
|
# -------- Local ---------
|
||||||
|
|
||||||
|
# Uncomment if the framework cannot resolv it.
|
||||||
|
Identity = "@MME_FQDN@";
|
||||||
|
Realm = "@REALM@";
|
||||||
|
|
||||||
|
# TLS configuration (see previous section)
|
||||||
|
TLS_Cred = "@PREFIX@/freeDiameter/mme.cert.pem",
|
||||||
|
"@PREFIX@/freeDiameter/mme.key.pem";
|
||||||
|
TLS_CA = "@PREFIX@/freeDiameter/mme.cacert.pem";
|
||||||
|
|
||||||
|
# Disable use of TCP protocol (only listen and connect in SCTP)
|
||||||
|
# Default : TCP enabled
|
||||||
|
No_SCTP;
|
||||||
|
|
||||||
|
# This option is ignored if freeDiameter is compiled with DISABLE_SCTP option.
|
||||||
|
# Prefer TCP instead of SCTP for establishing new connections.
|
||||||
|
# This setting may be overwritten per peer in peer configuration blocs.
|
||||||
|
# Default : SCTP is attempted first.
|
||||||
|
Prefer_TCP;
|
||||||
|
|
||||||
|
|
||||||
|
No_IPv6;
|
||||||
|
|
||||||
|
# Overwrite the number of SCTP streams. This value should be kept low,
|
||||||
|
# especially if you are using TLS over SCTP, because it consumes a lot of
|
||||||
|
# resources in that case. See tickets 19 and 27 for some additional details on
|
||||||
|
# this.
|
||||||
|
# Limit the number of SCTP streams
|
||||||
|
SCTP_streams = 3;
|
||||||
|
|
||||||
|
|
||||||
|
# By default, freeDiameter acts as a Diameter Relay Agent by forwarding all
|
||||||
|
# messages it cannot handle locally. This parameter disables this behavior.
|
||||||
|
NoRelay;
|
||||||
|
|
||||||
|
# Use RFC3588 method for TLS protection, where TLS is negociated after CER/CEA exchange is completed
|
||||||
|
# on the unsecure connection. The alternative is RFC6733 mechanism, where TLS protects also the
|
||||||
|
# CER/CEA exchange on a dedicated secure port.
|
||||||
|
# This parameter only affects outgoing connections.
|
||||||
|
# The setting can be also defined per-peer (see Peers configuration section).
|
||||||
|
# Default: use RFC6733 method with separate port for TLS.
|
||||||
|
|
||||||
|
#TLS_old_method;
|
||||||
|
|
||||||
|
AppServThreads = 4;
|
||||||
|
|
||||||
|
# Specify the addresses on which to bind the listening server. This must be
|
||||||
|
# specified if the framework is unable to auto-detect these addresses, or if the
|
||||||
|
# auto-detected values are incorrect. Note that the list of addresses is sent
|
||||||
|
# in CER or CEA message, so one should pay attention to this parameter if some
|
||||||
|
# adresses should be kept hidden.
|
||||||
|
ListenOn = "@MME_S6A_IP_ADDR@";
|
||||||
|
|
||||||
|
Port = 3870;
|
||||||
|
SecPort = 5870;
|
||||||
|
|
||||||
|
# -------- Extensions ---------
|
||||||
|
|
||||||
|
# Uncomment (and create rtd.conf) to specify routing table for this peer.
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/rt_default.fdx" : "rtd.conf";
|
||||||
|
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/_sample.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/app_acct.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/app_diameap.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/app_radgw.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/app_redirect.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/app_sip.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dbg_interactive.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dbg_monitor.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dbg_msg_dumps.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dbg_msg_timings.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dbg_rt.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_3gpp2_avps.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_CreditControl.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_CxDx.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_Gx.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_NAS.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_Ro.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_Rx.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_S6mS6n.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_SGd.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_SLh.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_Sd.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_Sh.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_T4.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_T6aT6bT7.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_Tsp.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_dcca.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_dcca_3gpp.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_dcca_starent.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_draftload_avps.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_eap.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_etsi283034_avps.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_legacy_xml.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_mip6a.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_mip6i.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_nas_mipv6.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_nasreq.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4004_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4006bis_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4072_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4590_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5447_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5580_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5777_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5778_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6734_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6942_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7155_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7683_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7944_avps.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_sip.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29061_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29128_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29154_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29173_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29212_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29214_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29215_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29217_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29229_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29272_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29273_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29329_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29336_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29337_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29338_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29343_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29344_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29345_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29368_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29468_avps.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_ts32299_avps.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/rt_busypeers.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/rt_default.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/rt_ereg.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/rt_ignore_dh.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/rt_load_balance.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/rt_randomize.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/rt_redirect.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/test_acct.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/test_app.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/test_hss.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/test_netemul.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/test_rt_any.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/test_sip.fdx";
|
||||||
|
#LoadExtension = "/usr/local/lib/freeDiameter/dict_Rf.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_S6as6d.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_S6t.fdx";
|
||||||
|
LoadExtension = "/usr/local/lib/freeDiameter/dict_S6c.fdx";
|
||||||
|
|
||||||
|
|
||||||
|
# -------- Peers ---------
|
||||||
|
|
||||||
|
# The framework will actively attempt to establish and maintain a connection
|
||||||
|
# with the peers listed here.
|
||||||
|
# For only accepting incoming connections, see the acl_wl.fx extension.
|
||||||
|
|
||||||
|
# ConnectPeer
|
||||||
|
# Declare a remote peer to which this peer must maintain a connection.
|
||||||
|
# In addition, this allows specifying non-default parameters for this peer only
|
||||||
|
# (for example disable SCTP with this peer, or use RFC3588-flavour TLS).
|
||||||
|
# Note that by default, if a peer is not listed as a ConnectPeer entry, an
|
||||||
|
# incoming connection from this peer will be rejected. If you want to accept
|
||||||
|
# incoming connections from other peers, see the acl_wl.fdx? extension which
|
||||||
|
# allows exactly this.
|
||||||
|
|
||||||
|
ConnectPeer= "@HSS_FQDN@" { ConnectTo = "@HSS_IP_ADDR@"; No_SCTP ; No_IPv6; Prefer_TCP; No_TLS; port = 3868;};
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
CREATE KEYSPACE IF NOT EXISTS vhss WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '1'};
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.users_imsi (
|
||||||
|
imsi text PRIMARY KEY,
|
||||||
|
access_restriction int,
|
||||||
|
idmmeidentity int,
|
||||||
|
imei text,
|
||||||
|
imei_sv text,
|
||||||
|
key text,
|
||||||
|
lipa_permissions text,
|
||||||
|
mme_cap int,
|
||||||
|
mmehost text,
|
||||||
|
mmeidentity_idmmeidentity int,
|
||||||
|
mmerealm text,
|
||||||
|
ms_ps_status text,
|
||||||
|
msisdn bigint,
|
||||||
|
niddvalidity text,
|
||||||
|
nir_dest_host text,
|
||||||
|
nir_dest_realm text,
|
||||||
|
opc text,
|
||||||
|
pgw_id int,
|
||||||
|
rand text,
|
||||||
|
rfsp_index varint,
|
||||||
|
sqn bigint,
|
||||||
|
subscription_data text,
|
||||||
|
ue_reachability varint,
|
||||||
|
urrp_mme varint,
|
||||||
|
user_identifier text,
|
||||||
|
visited_plmnid text);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.msisdn_imsi (
|
||||||
|
msisdn bigint PRIMARY KEY,
|
||||||
|
imsi text
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.global_ids (
|
||||||
|
table_name text PRIMARY KEY,
|
||||||
|
id counter);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.mmeidentity_host (
|
||||||
|
mmehost text PRIMARY KEY,
|
||||||
|
idmmeidentity int,
|
||||||
|
mmerealm text,
|
||||||
|
ue_reachability varint,
|
||||||
|
mmeisdn text);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.mmeidentity (
|
||||||
|
idmmeidentity int PRIMARY KEY,
|
||||||
|
mmehost text,
|
||||||
|
mmerealm text,
|
||||||
|
ue_reachability varint,
|
||||||
|
mmeisdn text);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.events (
|
||||||
|
scef_id text,
|
||||||
|
scef_ref_id bigint,
|
||||||
|
extid text,
|
||||||
|
monitoring_event_configuration text,
|
||||||
|
monitoring_type int,
|
||||||
|
msisdn bigint,
|
||||||
|
user_identifier text,
|
||||||
|
primary key (scef_id, scef_ref_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.events_msisdn (
|
||||||
|
msisdn bigint,
|
||||||
|
scef_id text,
|
||||||
|
scef_ref_id bigint,
|
||||||
|
primary key (msisdn, scef_id, scef_ref_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.events_extid (
|
||||||
|
extid text,
|
||||||
|
scef_id text,
|
||||||
|
scef_ref_id bigint,
|
||||||
|
primary key (extid, scef_id, scef_ref_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.extid (
|
||||||
|
extid text primary key
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.extid_imsi (
|
||||||
|
extid text,
|
||||||
|
imsi text,
|
||||||
|
primary key (extid, imsi)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS vhss.extid_imsi_xref (
|
||||||
|
imsi text,
|
||||||
|
extid text,
|
||||||
|
primary key (imsi, extid)
|
||||||
|
);
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2016-present, Facebook, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This source code is licensed under the BSD-style license found in the
|
||||||
|
# LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
# of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
|
||||||
|
# Jinja template for Redis configuration
|
||||||
|
# See the default config file for options and explanations:
|
||||||
|
# https://github.com/antirez/redis/blob/unstable/redis.conf
|
||||||
|
|
||||||
|
# TODO: make sensible, production-aware config decisions
|
||||||
|
|
||||||
|
bind 192.168.61.6
|
||||||
|
port 6380
|
||||||
|
|
||||||
|
daemonize no
|
||||||
|
loglevel notice
|
||||||
|
|
||||||
|
timeout 0
|
||||||
|
databases 1
|
||||||
|
|
||||||
|
dbfilename redis_dump.rdb
|
||||||
|
dir /data
|
||||||
|
|
||||||
|
# Save the DB on disk
|
||||||
|
|
||||||
|
save 900 1
|
||||||
|
|
||||||
|
save 300 10
|
||||||
|
|
||||||
|
save 60 1000
|
||||||
Reference in New Issue
Block a user