-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Welcome to bromelia-hss wiki!
bromelia-hss is fun to use and absolutely easy to add new functionalities. It is the second official implementation of a Diameter-based protocol application by using the Python's Bromélia library. It is designed to run as Docker containers.
-
hss_app-app
: the entrypoint which connects directly either to MME or to DRA over S6a/S6d interface. Whenever an incoming S6a/S6d Diameter request reaches this container, it processes and fire a query towards to central database. -
hss_app-postgres
: the central database which holds all the subscriber profile. It comes powered with a PostgreSQL database service under the hood. -
hss_app-pgadmin
: the HSS's database administrative point powered with pgAdmin tool.
bromelia-hss implements the ETSI TS 129 272 V15.4.0 (2018-07) technical specification. However, if you need to customize it in any way just go and play around.
Please make sure that you have the latest version. You can download the source code from here or clone the repository:
$ git clone https://github.com/heimiricmr/bromelia-hss.git
Host system
- Linux based distro or MacOS (with support to Python 3.9 or later)
- Python 3.9 or later
- Docker 20.10.7 or later
- docker-compose 1.29.2 or later
Containers dependencies
- Python dependencies (bromelia, psycopg2-binary, pycrypto, pyyaml & sqlalchemy)
- PostgreSQL 11 or later
- pgAdmin 4 or later
NOTE: Bromelia-HSS was developed and tested on an Apple silicon. It is pretty likely work properly in Linux based distros in general.
Once Host system requirements are installed, just go to the project folder and issue the docker-compose
command below.
$ cd bromelia-hss/hss_app
$ docker-compose up -d
Creating network "hss_app_network" with the default driver
Creating hss_app-postgres ... done
Creating hss_app-app ... done
Creating hss_app-pgadmin ... done
Done! You've just instantiated your open source HSS platform! See it.
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5fadc8439936 hss_app_app "./boot.sh" 21 minutes ago Up 21 minutes 0.0.0.0:3870->3870/tcp, :::3870->3870/tcp hss_app-app
765959f22666 dpage/pgadmin4 "/entrypoint.sh" 21 minutes ago Up 21 minutes 443/tcp, 0.0.0.0:15432->80/tcp, :::15432->80/tcp hss_app-pgadmin
244947d7f94d hss_app_postgres "docker-entrypoint.s…" 21 minutes ago Up 21 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp hss_app-postgres
If you want to do integrate it to any real MME, be a production be a staging one, you just need to update the hss_app/app/config.yaml
file with your local and peer nodes defined.
Below you may find firstly the default config.yaml
file followed by an example.
api_version: v1
name: HSS
spec:
- applications:
- vendor_id: VENDOR_ID_3GPP
app_id: DIAMETER_APPLICATION_S6a
mode: Server
watchdog_timeout: 30
local:
ip_address: 0.0.0.0
hostname: hss.epc.mynetwork.com
realm: epc.mynetwork.com
port: 3870
peer:
ip_address: 0.0.0.0
hostname: mme.epc.mynetwork.com
realm: epc.mynetwork.com
port: 3868
api_version: v1
name: HSS
spec:
- applications:
- vendor_id: VENDOR_ID_3GPP
app_id: DIAMETER_APPLICATION_S6a
mode: Server
watchdog_timeout: 30
local:
ip_address: 0.0.0.0
hostname: hss00.epc.mnc000.mcc999.3gppnetwork.org
realm: epc.mnc000.mcc999.3gppnetwork.org
port: 3870
peer:
ip_address: 10.129.241.235
hostname: mme00.epc.mnc000.mcc999.3gppnetwork.org
realm: epc.mnc000.mcc999.3gppnetwork.org
port: 3871
From the local node's perspective, you will change only the hostname
and realm
keys. Do not change the local IP address, because the container must be listening in localhost in order to receive TCP connections. From the peer node's perspective, you will change as per your requirements. It means that depending on the platform you are going to integrate (eg. MME, DRA), you must overwrite all the peer node's 4 keys.
That's pretty much everything you need to know to run it.