├── .gitignore
├── docs
├── images
│ ├── oai_final_logo.png
│ ├── OAICN-Network-Deployment-Explanation.png
│ └── OAI-MAGMA-NSA-Demo-Network-configuration.png
├── DEPLOY_HOME_MAGMA_MME.md
├── GENERATE_TRAFFIC.md
├── RETRIEVE_OFFICIAL_IMAGES_MAGMA.md
├── DEPLOY_PRE_REQUESITES_MAGMA.md
├── CONFIGURE_NETWORKS_MAGMA.md
├── BUILD_IMAGES.md
├── NSA_SUPPORT_OAI_RAN.md
└── BUILD_IMAGES_MAGMA_MME.md
├── ci-scripts
├── dsTesterDockerCompose
│ ├── .gitignore
│ ├── spgwc-healthy-check.sh
│ ├── spgwu-healthy-check.sh
│ ├── hss-healthy-check.sh
│ ├── mme-healthy-check.sh
│ ├── redis_extern.conf
│ ├── mme-cfg.sh
│ ├── mme.conf.tplt
│ ├── docker-compose.tplt
│ └── mme_fd.sprint.conf
├── oai-ran-sanity-check
│ ├── ue.env
│ ├── hss.env
│ ├── spgwu.env
│ ├── mme.env
│ ├── spgwc.env
│ ├── enb.env
│ ├── redis-extern.conf
│ ├── mme-old.env
│ └── mme-entrypoint.sh
├── fail.sh
├── Jenkinsfile-Magma-OAI-Check-Master
├── Dockerfile.traffic.generator.ubuntu18.04
├── Dockerfile.traffic.generator.rhel8
├── jenkinsStats.py
├── pcap_check.py
├── Jenkinsfile-Magma-OAI-DsTester
└── Jenkinsfile-Magma-Sanity-Check
├── .gitmodules
├── NOTICE
├── docker-compose
├── magma-mme-demo
│ ├── redis_extern.conf
│ ├── mme-cfg.sh
│ ├── mme.conf
│ ├── docker-compose.yml
│ ├── mme_fd.sprint.conf
│ └── README.md
└── inria-oai-mme-legacy
│ └── docker-compose.yml
├── LICENSE
├── CHANGELOG.md
├── CONTRIBUTING.md
├── scripts
└── syncComponents.sh
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | DS-TEST-RESULTS
2 | archives
3 | fed_docker_logs.zip
4 | test_results_oai_epc.html
5 |
--------------------------------------------------------------------------------
/docs/images/oai_final_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OPENAIRINTERFACE/openair-epc-fed/HEAD/docs/images/oai_final_logo.png
--------------------------------------------------------------------------------
/ci-scripts/dsTesterDockerCompose/.gitignore:
--------------------------------------------------------------------------------
1 | docker-compose.yml
2 | hss-entrypoint-sleep.sh
3 | oai_db.cql
4 | spgwc-entrypoint-sleep.sh
5 | spgwu-entrypoint-sleep.sh
6 |
--------------------------------------------------------------------------------
/docs/images/OAICN-Network-Deployment-Explanation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OPENAIRINTERFACE/openair-epc-fed/HEAD/docs/images/OAICN-Network-Deployment-Explanation.png
--------------------------------------------------------------------------------
/docs/images/OAI-MAGMA-NSA-Demo-Network-configuration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OPENAIRINTERFACE/openair-epc-fed/HEAD/docs/images/OAI-MAGMA-NSA-Demo-Network-configuration.png
--------------------------------------------------------------------------------
/ci-scripts/dsTesterDockerCompose/spgwc-healthy-check.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | STATUS=0
4 | NB_UNREPLACED_AT=`cat /openair-spgwc/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true`
5 | if [ $NB_UNREPLACED_AT -ne 0 ]
6 | then
7 | STATUS=-1
8 | fi
9 |
10 | exit $STATUS
11 |
--------------------------------------------------------------------------------
/ci-scripts/dsTesterDockerCompose/spgwu-healthy-check.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | STATUS=0
4 | NB_UNREPLACED_AT=`cat /openair-spgwc/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true`
5 | if [ $NB_UNREPLACED_AT -ne 0 ]
6 | then
7 | STATUS=-1
8 | fi
9 |
10 | exit $STATUS
11 |
--------------------------------------------------------------------------------
/ci-scripts/oai-ran-sanity-check/ue.env:
--------------------------------------------------------------------------------
1 | TZ=Europe/Paris
2 | RFSIMULATOR=192.168.61.80
3 | MCC=208
4 | MNC=96
5 | SHORT_IMSI=0100000001
6 | LTE_KEY=fec86ba6eb707ed08905757b1bb44b8f
7 | OPC=c42449363bbad02b66d16bc975d77cc1
8 | MSISDN=001011234561010
9 | HPLMN=20896
10 | USE_ADDITIONAL_OPTIONS=--rfsim -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1
11 |
--------------------------------------------------------------------------------
/ci-scripts/oai-ran-sanity-check/hss.env:
--------------------------------------------------------------------------------
1 | TZ=Europe/Paris
2 | REALM=openairinterface.org
3 | HSS_FQDN=hss.openairinterface.org
4 | PREFIX=/openair-hss/etc
5 | cassandra_Server_IP=192.168.61.66
6 | OP_KEY=1006020f0a478bf6b699f15c062e42b3
7 | LTE_K=fec86ba6eb707ed08905757b1bb44b8f
8 | APN1=oai.ipv4
9 | APN2=internet
10 | FIRST_IMSI=208960100000001
11 | NB_USERS=10
12 |
13 |
--------------------------------------------------------------------------------
/ci-scripts/oai-ran-sanity-check/spgwu.env:
--------------------------------------------------------------------------------
1 | TZ=Europe/Paris
2 | PID_DIRECTORY=/var/run
3 | INSTANCE=1
4 | SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
5 | PGW_INTERFACE_NAME_FOR_SGI=eth0
6 | SGW_INTERFACE_NAME_FOR_SX=eth0
7 | SPGWC0_IP_ADDRESS=192.168.61.70
8 | NETWORK_UE_IP=12.0.0.0/24
9 | NETWORK_UE_NAT_OPTION=yes
10 | MCC=208
11 | MNC=96
12 | MNC03=096
13 | TAC=1
14 | GW_ID=1
15 | REALM=openairinterface.org
16 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "component/oai-hss"]
2 | path = component/oai-hss
3 | url = https://github.com/OPENAIRINTERFACE/openair-hss.git
4 | [submodule "component/oai-spgwc"]
5 | path = component/oai-spgwc
6 | url = https://github.com/OPENAIRINTERFACE/openair-spgwc.git
7 | [submodule "component/oai-spgwu-tiny"]
8 | path = component/oai-spgwu-tiny
9 | url = https://github.com/OPENAIRINTERFACE/openair-spgwu-tiny.git
10 |
--------------------------------------------------------------------------------
/ci-scripts/oai-ran-sanity-check/mme.env:
--------------------------------------------------------------------------------
1 | TZ=Europe/Paris
2 | REALM=openairinterface.org
3 | PREFIX=/magma-mme/etc
4 | HSS_HOSTNAME=hss
5 | HSS_FQDN=hss.openairinterface.org
6 | HSS_REALM=openairinterface.org
7 | MME_FQDN=mme.openairinterface.org
8 | FEATURES=mme_oai
9 | MCC=208
10 | MNC=96
11 | TAC0=1
12 | HSS_IP_ADDR=192.168.61.67
13 | REDIS_IP_ADDR=192.168.61.69
14 | MME_S1_IP_ADDR=192.168.61.68
15 | SPGWC0_IP_ADDR=192.168.61.70
16 |
--------------------------------------------------------------------------------
/ci-scripts/oai-ran-sanity-check/spgwc.env:
--------------------------------------------------------------------------------
1 | TZ=Europe/Paris
2 | SGW_INTERFACE_NAME_FOR_S11=eth0
3 | PGW_INTERFACE_NAME_FOR_SX=eth0
4 | DEFAULT_DNS_IPV4_ADDRESS=192.168.18.129
5 | DEFAULT_DNS_SEC_IPV4_ADDRESS=8.8.4.4
6 | PUSH_PROTOCOL_OPTION=true
7 | APN_NI_1=oai.ipv4
8 | APN_NI_2=oai.ipv4_2
9 | DEFAULT_APN_NI_1=oai.ipv4
10 | UE_IP_ADDRESS_POOL_1=12.0.0.2 - 12.0.0.254
11 | UE_IP_ADDRESS_POOL_2=12.1.1.2 - 12.1.1.254
12 | MCC=208
13 | MNC=96
14 | MNC03=096
15 | TAC=1
16 | GW_ID=1
17 | REALM=openairinterface.org
18 |
--------------------------------------------------------------------------------
/NOTICE:
--------------------------------------------------------------------------------
1 | Openair-epc-fed is distributed under 3-Clause BSD License
2 |
3 | However, it also includes third party-software indicated below.
4 |
5 | - component/oai-spgwc is distributed under OAI Public License V1.0.
6 | see component/oai-spgwc/LICENSE for more details
7 |
8 | - component/oai-spgwu-tiny is distributed under OAI Public License V1.0.
9 | see component/oai-spgwu-tiny/LICENSE for more details
10 |
11 | Also each component may use also 3rd party-software. Check in each component the NOTICE file.
12 |
--------------------------------------------------------------------------------
/ci-scripts/dsTesterDockerCompose/hss-healthy-check.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | STATUS=0
4 | NB_UNREPLACED_AT=`cat /openair-hss/etc/*.json /openair-hss/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true`
5 | if [ $NB_UNREPLACED_AT -ne 0 ]
6 | then
7 | STATUS=-1
8 | fi
9 |
10 | NB_GENERATED_CERTIFICATES=`ls /openair-hss/etc/cacert.pem /openair-hss/etc/hss.cert.pem /openair-hss/etc/hss.key.pem | grep -c pem || true`
11 | if [ $NB_GENERATED_CERTIFICATES -ne 3 ]
12 | then
13 | STATUS=-1
14 | fi
15 |
16 | exit $STATUS
17 |
--------------------------------------------------------------------------------
/ci-scripts/oai-ran-sanity-check/enb.env:
--------------------------------------------------------------------------------
1 | TZ=Europe/Paris
2 | USE_FDD_MONO=yes
3 | RFSIMULATOR=enb
4 | ENB_NAME=eNB-rf-sim
5 | MCC=208
6 | MNC=96
7 | MNC_LENGTH=2
8 | TAC=1
9 | UTRA_BAND_ID=7
10 | DL_FREQUENCY_IN_MHZ=2680
11 | UL_FREQUENCY_OFFSET_IN_MHZ=120
12 | NID_CELL=10
13 | NB_PRB=25
14 | MME_S1C_IP_ADDRESS=192.168.61.68
15 | ENB_S1C_IF_NAME=eth0
16 | ENB_S1C_IP_ADDRESS=192.168.61.80
17 | ENB_S1U_IF_NAME=eth0
18 | ENB_S1U_IP_ADDRESS=192.168.61.80
19 | ENB_X2_IP_ADDRESS=192.168.61.80
20 | FLEXRAN_ENABLED=no
21 | FLEXRAN_INTERFACE_NAME=eth0
22 | FLEXRAN_IPV4_ADDRESS=192.168.61.68
23 | USE_ADDITIONAL_OPTIONS=--rfsim
24 |
--------------------------------------------------------------------------------
/ci-scripts/dsTesterDockerCompose/mme-healthy-check.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | STATUS=0
4 | NB_UNREPLACED_AT=`cat /magma-mme/etc/*.conf | grep -c @ || true`
5 | if [ $NB_UNREPLACED_AT -ne 0 ]
6 | then
7 | STATUS=-1
8 | fi
9 |
10 | NB_GENERATED_CERTIFICATES=`ls /magma-mme/etc/mme.cacert.pem /magma-mme/etc/mme.cakey.pem /magma-mme/etc/mme.cert.pem /magma-mme/etc/mme.key.pem | grep -c pem || true`
11 | if [ $NB_GENERATED_CERTIFICATES -ne 4 ]
12 | then
13 | STATUS=-1
14 | fi
15 |
16 | NB_NOT_FOUND_PACKAGES=`ldd /magma-mme/bin/oai_mme /magma-mme/bin/sctpd | egrep -c "not found" || true`
17 | if [ $NB_NOT_FOUND_PACKAGES -ne 0 ]
18 | then
19 | STATUS=-1
20 | fi
21 |
22 | exit $STATUS
23 |
--------------------------------------------------------------------------------
/docker-compose/magma-mme-demo/redis_extern.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2016-present, Facebook, Inc.
3 | # All rights reserved.
4 | #
5 | # This source code is licensed under the BSD-style license found in the
6 | # LICENSE file in the root directory of this source tree. An additional grant
7 | # of patent rights can be found in the PATENTS file in the same directory.
8 |
9 | # Jinja template for Redis configuration
10 | # See the default config file for options and explanations:
11 | # https://github.com/antirez/redis/blob/unstable/redis.conf
12 |
13 | # TODO: make sensible, production-aware config decisions
14 |
15 | bind 192.168.61.148
16 | port 6380
17 |
18 | daemonize no
19 | loglevel notice
20 |
21 | timeout 0
22 | databases 1
23 |
24 | dbfilename redis_dump.rdb
25 | dir /data
26 |
27 | # Save the DB on disk
28 |
29 | save 900 1
30 |
31 | save 300 10
32 |
33 | save 60 1000
34 |
--------------------------------------------------------------------------------
/ci-scripts/dsTesterDockerCompose/redis_extern.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2016-present, Facebook, Inc.
3 | # All rights reserved.
4 | #
5 | # This source code is licensed under the BSD-style license found in the
6 | # LICENSE file in the root directory of this source tree. An additional grant
7 | # of patent rights can be found in the PATENTS file in the same directory.
8 |
9 | # Jinja template for Redis configuration
10 | # See the default config file for options and explanations:
11 | # https://github.com/antirez/redis/blob/unstable/redis.conf
12 |
13 | # TODO: make sensible, production-aware config decisions
14 |
15 | bind 192.168.61.195
16 | port 6380
17 |
18 | daemonize no
19 | loglevel notice
20 |
21 | timeout 0
22 | databases 1
23 |
24 | dbfilename redis_dump.rdb
25 | dir /data
26 |
27 | # Save the DB on disk
28 |
29 | save 900 1
30 |
31 | save 300 10
32 |
33 | save 60 1000
34 |
--------------------------------------------------------------------------------
/ci-scripts/oai-ran-sanity-check/redis-extern.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (c) 2016-present, Facebook, Inc.
3 | # All rights reserved.
4 | #
5 | # This source code is licensed under the BSD-style license found in the
6 | # LICENSE file in the root directory of this source tree. An additional grant
7 | # of patent rights can be found in the PATENTS file in the same directory.
8 |
9 | # Jinja template for Redis configuration
10 | # See the default config file for options and explanations:
11 | # https://github.com/antirez/redis/blob/unstable/redis.conf
12 |
13 | # TODO: make sensible, production-aware config decisions
14 |
15 | bind 192.168.61.69
16 | port 6380
17 |
18 | daemonize no
19 | loglevel notice
20 |
21 | timeout 0
22 | databases 1
23 |
24 | dbfilename redis_dump.rdb
25 | dir /data
26 |
27 | # Save the DB on disk
28 |
29 | save 900 1
30 |
31 | save 300 10
32 |
33 | save 60 1000
34 |
--------------------------------------------------------------------------------
/ci-scripts/fail.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #/*
3 | # * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
4 | # * contributor license agreements. See the NOTICE file distributed with
5 | # * this work for additional information regarding copyright ownership.
6 | # * The OpenAirInterface Software Alliance licenses this file to You under
7 | # * the OAI Public License, Version 1.1 (the "License"); you may not use this file
8 | # * except in compliance with the License.
9 | # * You may obtain a copy of the License at
10 | # *
11 | # * http://www.openairinterface.org/?page_id=698
12 | # *
13 | # * Unless required by applicable law or agreed to in writing, software
14 | # * distributed under the License is distributed on an "AS IS" BASIS,
15 | # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # * See the License for the specific language governing permissions and
17 | # * limitations under the License.
18 | # *-------------------------------------------------------------------------------
19 | # * For more information about the OpenAirInterface (OAI) Software Alliance:
20 | # * contact@openairinterface.org
21 | # */
22 |
23 | exit -1
24 |
--------------------------------------------------------------------------------
/ci-scripts/dsTesterDockerCompose/mme-cfg.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -x
4 | cd /magma-mme/scripts
5 |
6 | INSTANCE=1
7 | PREFIX='/magma-mme/etc'
8 | MY_REALM='openairinterface.org'
9 |
10 | declare -A MME_CONF
11 |
12 | pushd $PREFIX
13 | cp mme_fd.conf.tmplt mme_fd.conf
14 |
15 | MME_CONF[@MME_S6A_IP_ADDR@]="192.168.61.196"
16 | MME_CONF[@INSTANCE@]=$INSTANCE
17 | MME_CONF[@PREFIX@]=$PREFIX
18 | MME_CONF[@REALM@]=$MY_REALM
19 | MME_CONF[@MME_FQDN@]="mme.${MME_CONF[@REALM@]}"
20 | MME_CONF[@HSS_HOSTNAME@]='hss'
21 | MME_CONF[@HSS_FQDN@]="${MME_CONF[@HSS_HOSTNAME@]}.${MME_CONF[@REALM@]}"
22 | MME_CONF[@HSS_REALM@]=$MY_REALM
23 | MME_CONF[@HSS_IP_ADDR@]="192.168.61.194"
24 |
25 | for K in "${!MME_CONF[@]}"; do
26 | egrep -lRZ "$K" $PREFIX/mme_fd.conf | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
27 | ret=$?;[[ ret -ne 0 ]] && echo "Tried to replace $K with ${MME_CONF[$K]}"
28 | done
29 |
30 | sed -i -e "s@etc/freeDiameter@etc@" /magma-mme/etc/mme_fd.conf
31 | sed -i -e "s@bind: 127.0.0.1@bind: 192.168.61.195@" /etc/magma/redis.yml
32 | # Generate freeDiameter certificate
33 | popd
34 | ./check_mme_s6a_certificate $PREFIX mme.${MME_CONF[@REALM@]}
35 | set +x
36 |
37 | sleep infinity
38 |
--------------------------------------------------------------------------------
/docker-compose/magma-mme-demo/mme-cfg.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | INSTANCE=1
4 | PREFIX='/magma-mme/etc'
5 | MY_REALM='openairinterface.org'
6 |
7 | declare -A MME_CONF
8 |
9 | pushd $PREFIX
10 | MME_CONF[@MME_S6A_IP_ADDR@]="192.168.61.149"
11 | MME_CONF[@INSTANCE@]=$INSTANCE
12 | MME_CONF[@PREFIX@]=$PREFIX
13 | MME_CONF[@REALM@]=$MY_REALM
14 | MME_CONF[@MME_FQDN@]="mme.${MME_CONF[@REALM@]}"
15 | MME_CONF[@HSS_HOSTNAME@]='hss'
16 | MME_CONF[@HSS_FQDN@]="${MME_CONF[@HSS_HOSTNAME@]}.${MME_CONF[@REALM@]}"
17 | MME_CONF[@HSS_IP_ADDR@]="192.168.61.130"
18 |
19 | cp mme_fd.conf.tmplt $PREFIX/mme_fd.conf
20 |
21 | for K in "${!MME_CONF[@]}"; do
22 | egrep -lRZ "$K" $PREFIX/mme_fd.conf | xargs -0 -l sed -i -e "s|$K|${MME_CONF[$K]}|g"
23 | ret=$?;[[ ret -ne 0 ]] && echo "Tried to replace $K with ${MME_CONF[$K]}"
24 | done
25 |
26 | sed -i -e "s@etc/freeDiameter@etc@" /magma-mme/etc/mme_fd.conf
27 | sed -i -e "s@bind: 127.0.0.1@bind: 192.168.61.148@" /etc/magma/redis.yml
28 | # Generate freeDiameter certificate
29 | popd
30 | ./check_mme_s6a_certificate $PREFIX mme.${MME_CONF[@REALM@]}
31 |
32 | cd /magma-mme
33 | nohup /magma-mme/bin/sctpd > /var/log/sctpd.log 2>&1 &
34 | sleep 5
35 | /magma-mme/bin/oai_mme -c /magma-mme/etc/mme.conf
36 |
--------------------------------------------------------------------------------
/ci-scripts/oai-ran-sanity-check/mme-old.env:
--------------------------------------------------------------------------------
1 | TZ=Europe/Paris
2 | REALM=openairinterface.org
3 | PREFIX=/openair-mme/etc
4 | HSS_HOSTNAME=hss
5 | HSS_FQDN=hss.openairinterface.org
6 | HSS_REALM=openairinterface.org
7 | MME_FQDN=mme.openairinterface.org
8 | MCC=208
9 | MNC=96
10 | HSS_IP_ADDR=192.168.61.67
11 | MME_S1_IP_ADDR=192.168.61.68
12 | SPGWC0_IP_ADDR=192.168.61.70
13 | INSTANCE=1
14 | PID_DIRECTORY=/var/run
15 | MME_GID=32768
16 | MME_CODE=3
17 | TAC_0=1
18 | TAC_1=2
19 | TAC_2=3
20 | MME_S6A_IP_ADDR=192.168.61.68
21 | MME_INTERFACE_NAME_FOR_S1_MME=eth0
22 | MME_IPV4_ADDRESS_FOR_S1_MME=192.168.61.68
23 | MME_INTERFACE_NAME_FOR_S11=eth0
24 | MME_IPV4_ADDRESS_FOR_S11=192.168.61.68
25 | MME_INTERFACE_NAME_FOR_S10=lo
26 | MME_IPV4_ADDRESS_FOR_S10=127.0.0.10
27 | OUTPUT=CONSOLE
28 | SGW_IPV4_ADDRESS_FOR_S11_0=192.168.61.70
29 | PEER_MME_IPV4_ADDRESS_FOR_S10_0=0.0.0.0
30 | PEER_MME_IPV4_ADDRESS_FOR_S10_1=0.0.0.0
31 | MCC_SGW_0=208
32 | MNC3_SGW_0=096
33 | TAC_LB_SGW_0=01
34 | TAC_HB_SGW_0=00
35 | MCC_MME_0=208
36 | MNC3_MME_0=096
37 | TAC_LB_MME_0=02
38 | TAC_HB_MME_0=00
39 | MCC_MME_1=208
40 | MNC3_MME_1=096
41 | TAC_LB_MME_1=03
42 | TAC_HB_MME_1=00
43 | TAC_LB_SGW_TEST_0=03
44 | TAC_HB_SGW_TEST_0=00
45 | SGW_IPV4_ADDRESS_FOR_S11_TEST_0=0.0.0.0
46 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | For OpenAir-HSS software
4 |
5 | Redistribution and use in source and binary forms, with or without modification,
6 | are permitted provided that the following conditions are met:
7 |
8 | 1. Redistributions of source code must retain the above copyright notice, this
9 | list of conditions and the following disclaimer.
10 |
11 | 2. Redistributions in binary form must reproduce the above copyright notice,
12 | this list of conditions and the following disclaimer in the documentation and/or
13 | other materials provided with the distribution.
14 |
15 | 3. Neither the name of the copyright holder nor the names of its contributors
16 | may be used to endorse or promote products derived from this software without
17 | specific prior written permission.
18 |
19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 |
30 |
--------------------------------------------------------------------------------
/docs/DEPLOY_HOME_MAGMA_MME.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | |
9 |
10 | OpenAirInterface Core Network : MAGMA MME based Deployment
11 | |
12 |
13 |
14 |
15 | # Why you should use this deployment? #
16 |
17 | - You want the latest updates:
18 | - the `master` branch on the `magma` project is updated every day with new features, bug fixes...
19 | - You expect the whole EPC to be running for hours and days without any restart
20 |
21 | **2021/07/28 Update: you have now the choice to either pull images or build your-self.**
22 |
23 | **2022/02/25 Update: MAGMA-MME can now be used with a full OAI stack to perform OAI RF simulation.**
24 |
25 | **Table of Contents**
26 |
27 | 1. [Pre-requisites](./DEPLOY_PRE_REQUESITES_MAGMA.md)
28 | 2. Getting the images
29 | 1. [Retrieving the Container Images](./RETRIEVE_OFFICIAL_IMAGES_MAGMA.md)
30 | 2. [Building the Container Images](./BUILD_IMAGES_MAGMA_MME.md)
31 | 3. [Deploying with MAGMA-MME using docker-compose](../docker-compose/magma-mme-demo/README.md)
32 | 4. [Verify/Correct your network environment](./CONFIGURE_NETWORKS_MAGMA.md)
33 | 5. [Demo made during 2021 MAGMA-dev conference](./NSA_SUPPORT_OAI_RAN.md)
34 |
--------------------------------------------------------------------------------
/ci-scripts/Jenkinsfile-Magma-OAI-Check-Master:
--------------------------------------------------------------------------------
1 | #!/bin/groovy
2 | /*
3 | * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
4 | * contributor license agreements. See the NOTICE file distributed with
5 | * this work for additional information regarding copyright ownership.
6 | * The OpenAirInterface Software Alliance licenses this file to You under
7 | * the OAI Public License, Version 1.1 (the "License"); you may not use this file
8 | * except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.openairinterface.org/?page_id=698
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | *-------------------------------------------------------------------------------
19 | * For more information about the OpenAirInterface (OAI) Software Alliance:
20 | * contact@openairinterface.org
21 | */
22 |
23 | def magma_job = params.magma_job_name
24 |
25 | pipeline {
26 | agent {
27 | label 'master'
28 | }
29 | stages {
30 | stage ('Trigger MAGMA pipeline') {
31 | steps {
32 | script {
33 | localStatus = build job: magma_job,
34 | parameters: [
35 | booleanParam(name: 'REGRESSION_TEST', value: true)
36 | ], propagate: false
37 | localResult = localStatus.getResult()
38 | echo "${magma_job} Slave Job status is ${localResult}"
39 | if (localStatus.resultIsBetterOrEqualTo('SUCCESS')) {
40 | echo "${magma_job} Slave Job is OK"
41 | } else {
42 | error "${magma_job} Slave Job is OK"
43 | }
44 | }
45 | }
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # RELEASE NOTES: #
2 |
3 | ## v1.2.0 -- February 2022 ##
4 |
5 | * `FEDERATION LEVEL`:
6 | - Obsolescence of Legacy OAI-MME
7 | * `HSS`:
8 | - Build fixes
9 | - Docker image layer optimization
10 | * `SPGWC`:
11 | - Build fixes
12 | - Docker image layer optimization
13 | - Association trigger
14 | - Sanitize leak and UE configurable MTU
15 | - IE NWI dotted formatting
16 | - IE UPF Features
17 | - Custom UPF FQDN support
18 | * `SPGWU-TINY`:
19 | - Build fixes
20 | - Docker image layer optimization
21 |
22 | ## v1.1.5 -- December 2021 ##
23 |
24 | * `SPGWU-TINY`:
25 | - Disable association request if NF registration is enabled
26 |
27 | ## v1.1.4 -- October 2021 ##
28 |
29 | * `SPGWU-TINY`:
30 | - Fix build issue
31 | - Fix GTPU DL encapsulation: 8 extraneous bytes
32 |
33 | ## v1.1.3 -- October 2021 ##
34 |
35 | * `HSS`:
36 | - Fix build on external git sub-modules that are using `main` as master branch name
37 | - Code clean-up with no more cppcheck errors
38 | * `SPGWU-TINY`:
39 | - Adding 5G features
40 | - HTTP2 support
41 |
42 | ## v1.1.2 -- July 2021 ##
43 |
44 | * `FEDERATION LEVEL`:
45 | - DOC: cleanup, update and fixes on tutorials
46 | * `HSS`:
47 | - Enable Dual-Registration- 5G-Indicator flag in S6a/ULR
48 | - Fix users' provision in case of multi-pdn
49 | - Adding correct TZ env var to dockerfiles
50 | - Improved Continuous Integration
51 | * `SPGWC`:
52 | - Sanitize leak fixes
53 | - Adding correct TZ env var to dockerfiles
54 | - Improved Continuous Integration
55 | * `SPGWU-TINY`:
56 | - Adding 5G features
57 | - NRF discovery and FQDN support
58 |
59 | ## v1.1.1 -- February 2021 ##
60 |
61 | * `HSS`:
62 | - Cloud-native support
63 | - RHEL8 support
64 | - Proper build in release mode
65 | * `SPGWC`:
66 | - Cloud-native support
67 | - RHEL8 support
68 | - A lot of bug fixes
69 | - UE MTU
70 | - CSR Collision fix
71 | - ...
72 | - Last release before change to a JSON-based configuration file and Multi-SPGW-U-instance support
73 | * `SPGWU-TINY`:
74 | - GTP-U extension headers for 5G support
75 | - disabled by default for 4G usage
76 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to OpenAir-CN #
2 |
3 | We want to make contributing to this project as easy and transparent as possible.
4 |
5 | Please refer to the steps described on our website: [How to contribute to OAI](https://www.openairinterface.org/?page_id=112)
6 |
7 | 1. Sign and return a Contributor License Agreement to OAI team.
8 | 2. Create an account on [GitHub](https://github.com).
9 | 3. Provide the identifiant of this account to the OAI team (mailto:contact@openairinterface.org) so you have developer rights on this repository.
10 | 4. The policies are described in these wiki pages: [OAI Policies](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/oai-policies-home)
11 | - You can fork onto another hosting system. But we will **NOT** accept a pull request from a forked repository.
12 | * This decision was made for the license reasons.
13 | * The Continuous Integration will reject your pull request.
14 | - All pull requests SHALL have **`develop`** branch as target branch.
15 |
16 | ## License ##
17 |
18 | By contributing to OpenAirInterface, you agree that your contributions will be licensed under the [LICENSE](LICENSE) file in the root directory of this source tree.
19 |
20 | ## Continuous Integration process ##
21 |
22 | 1. You push your modified code with the new branch onto our [official GitHub repository](https://github.com/OPENAIRINTERFACE/openair-epd-fed).
23 | - Please make the name of the branch explicit and short.
24 | 2. You create a pull request from the [dedicated web page](https://github.com/OPENAIRINTERFACE/openair-epd-fed/pulls).
25 | - The `target` (`base` in the web-page) branch **SHALL be `develop`**.
26 | - The `source` (`compare` in the web-page) branch is your branch.
27 | 3. Our Continuous Integration (CI) process will be triggered automatically on your proposed modified code and check the validity.
28 | - Check build
29 | - Check some formatting rules
30 | - Run a bunch of tests
31 | 4. If at least one of these steps fails, you will have to push corrections onto your source branch.
32 | - The step 3. will be again automatically triggered on this new commit.
33 | - Please wait that your run is finished before committing and pushing new modifications on your source branch.
34 | - That will allow fairness on the CI usage to other contributors.
35 | 4. When this automated process passes, one of our CI administrators will review your changes or assign a senior contributor
36 | to do a peer-review.
37 | 5. Once the peer reviewer accepts your modification, one of our CI administrators will accept and merge your pull request
38 | - The CI will run again on the new `develop` branch commit.
39 | - The source branch WILL be deleted by one of our CI administrators.
40 |
41 |
--------------------------------------------------------------------------------
/ci-scripts/Dockerfile.traffic.generator.ubuntu18.04:
--------------------------------------------------------------------------------
1 | #/*
2 | # * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
3 | # * contributor license agreements. See the NOTICE file distributed with
4 | # * this work for additional information regarding copyright ownership.
5 | # * The OpenAirInterface Software Alliance licenses this file to You under
6 | # * the OAI Public License, Version 1.1 (the "License"); you may not use this file
7 | # * except in compliance with the License.
8 | # * You may obtain a copy of the License at
9 | # *
10 | # * http://www.openairinterface.org/?page_id=698
11 | # *
12 | # * Unless required by applicable law or agreed to in writing, software
13 | # * distributed under the License is distributed on an "AS IS" BASIS,
14 | # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # * See the License for the specific language governing permissions and
16 | # * limitations under the License.
17 | # *-------------------------------------------------------------------------------
18 | # * For more information about the OpenAirInterface (OAI) Software Alliance:
19 | # * contact@openairinterface.org
20 | # */
21 | #---------------------------------------------------------------------
22 | #
23 | # Dockerfile for the Open-Air-Interface SMF service
24 | # Valid for Ubuntu-18.04 (bionic)
25 | #
26 | #---------------------------------------------------------------------
27 |
28 | #---------------------------------------------------------------------
29 | # BUILDER IMAGE
30 | #---------------------------------------------------------------------
31 | FROM ubuntu:bionic as trf-gen-builder
32 |
33 | ENV DEBIAN_FRONTEND=noninteractive
34 | ENV TZ=Europe/Paris
35 | RUN apt-get update && \
36 | DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
37 | DEBIAN_FRONTEND=noninteractive apt-get install --yes \
38 | build-essential \
39 | git \
40 | wget \
41 | libpthread-stubs0-dev \
42 | && rm -rf /var/lib/apt/lists/*
43 |
44 | WORKDIR /
45 | RUN wget --tries=3 https://iperf.fr/download/source/iperf-2.0.5-source.tar.gz && \
46 | gzip -cd iperf-2.0.5-source.tar.gz | tar -xvf -
47 |
48 | WORKDIR /iperf-2.0.5
49 | RUN sed -i -e "s@#include