enodebd CWMP ACS extracted from Magma

Clone this repo:
  1. 31ebdb5 AETHER-3648 Support loglevel configuration in enodebd by Wei-Yu Chen · 2 years, 6 months ago master 0.2.4
  2. cb8ebb8 AETHER-3609: enodebd configuration / health status read fail by Wei-Yu Chen · 2 years, 7 months ago 0.2.3
  3. 8d06416 AETHER-3573 Simplify configuration files in enodebd by Wei-Yu Chen · 2 years, 7 months ago 0.2.2
  4. f90b16b Update Dockerfile to expose service ports by Wei-Yu Chen · 2 years, 7 months ago 0.2.1
  5. b91af85 AETHER-3321 Refactor configuration code in enodebd by Wei-Yu Chen · 2 years, 9 months ago 0.2.0

ENODEBD

eNodeB daemon is an Automatic Configuration Server (ACS) which forks from Facebook Magma project. It currently tested with Sercomm eNodeB P27-SCE4255W small cell.

Install & Run

# The all command will create a virtual environment, install protoc and compile the proto files
make all
# Enter the virtual environment
. venv/bin/activate

# Run enodebd
python main.py

Configuration

We have these configuration files for configuring eNodeBD service.

  1. override_configs/gateway.mconfig

The enodebd will generate the empty configuration to config service, and it will load override_configs/gateway.mconfig to fill in the empty configuration.

  1. magma_configs/acs_common.yml

The acs_common.yml will hold the default value for all eNodeBs, like as the PLMN may be a shared value among all eNodeBs.

  1. magma_configs/serial_numbers/2009CW5000019.yml

The serial_number.yml will have the customized value for each configurable parameters. The value in serial_number.yml will override the value defines in gateway.mconfig and acs_common.yml when corresponding eNodeB connects (base on the serial number provided by eNodeB).

Prometheus Support

The following example configuration can start a Prometheus container for monitoring data sent by enodebd. The enodebd will start prometheus server on port 8000 by default.

# prometheus configuration - prometheus.yml
global:
  scrape_interval: 15s
  external_labels:
    monitor: 'codelab-monitor'

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      # The 8000 is the default port of prometheus client of enodebd
      - targets: ['172.17.0.1:8000']

... and start prometheus container with docker command.

$ docker run -p 9090:9090 -v /home/ubuntu/magma-enodebd-new/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

License

This project is under 3-Clause BSD license.