Skip to content

Releases: EVOLVED-5G/NEF_emulator

v2.2.3

15 Nov 08:24
1656a2f
Compare
Choose a tag to compare

Summary:

  • Minor fixes on service initialisation

v2.2.2

02 Jun 08:54
Compare
Choose a tag to compare

Summary:

  • Split jwt token authorisation for NEF and CAPIF. If NEF is deployed as a standalone component then only nef token authorisation is required. If capif is integrated with nef, jwt token acquired from CAPIF is required commit
  • Create initial data for the simulation scenario based on the default scenario (on build)

v2.1.1

04 May 11:26
7927082
Compare
Choose a tag to compare

Summary:

  • Revert to previous service description files for CAPIF Core Function (commit: b1e3cea)
  • Fix port number in service description files

v2.1.0

28 Apr 09:21
cd48f2a
Compare
Choose a tag to compare

Summary:

  • Add functionality to support CAPIF Core Function's logging service
  • Avoid db connections within the threads (optimisation)
  • Fix token causing 403 error in mapbox front-end

v2.0.0

02 Mar 08:33
23aefb2
Compare
Choose a tag to compare

Summary:

  • Addition of nginx reverse proxy. Default ports are 8090 for http and 4443 for https
  • Support of server side authentication based on self signed certificates using openssl
  • Support TLS encryption
  • Two step authorisation using OAuth2.0 (jwt tokens) both generated from CAPIF and NEF
  • Migration to python 3.10
  • Compatible with Docker Compose v2.0.0

NEF APIs / backend

  • new class OAuth2TwoTokensBearer that overrides OAuth2 class based on FastAPI's OAuth2PasswordBearer to support two tokens bearer to authorise either NEF or CAPIF jtw tokens (commiteaccf0f)
  • ⛔ breaking change: the exposed port 8888 is deprecated. All traffic is routed through the reverse proxy via dynamically defined ports. The default ports are 8090 for http and 4443 for https

Docker 🐳

  • ⛔ breaking change: Compatible with Docker Compose V2. CLI commands are now used by replacing the hyphen (-) with a space, using docker compose, instead of docker-compose. The changes are applied in the Makefile to help developers.
  • Create env variables for nginx ports 👉NGINX_HTTP NGINX_HTTPS
  • Create env variable for nginx hostname 👉NEF_HOST
  • Create env variable to enable token verification generated by CAPIF, if CAPIF is used. 👉USE_PUBLIC_KEY_VERIFICATION

Libraries

  • Migrate to python 3.10 (from ^3.9.7 👉 ~3.10)
  • Downgrade pyOpenSSL (from 23.0.0 👉 22.1.0) to be compatible with evolved5g SDK
  • Upgrade emails (from ^0.5.15 👉 ^0.6) to be compatible with python 3.10

Other

  • ✔ Add option --pull to build-no-cache this forces docker to check and pull newer versions of the images during build

v1.6.2

15 Feb 22:12
e73b78f
Compare
Choose a tag to compare

NEF APIs / backend

  • Create environment variable for MongoClient host 👉 MONGO_CLIENT
  • Add publish service from evolved5g library to publish the service APIs into CAPIF
  • Add service description json files to support the publish service
  • Fix LOCATION_REPORTING one time requests bug (commit e27c824)

Docker 🐳

  • Change mongo service in docker-compose 👉mongo_nef
  • Create env variables for CAPIF hostname 👉CAPIF_HOST
  • Create env variables for CAPIF ports 👉CAPIF_HTTP_PORT CAPIF_HTTP_PORT

Libraries

  • 🪛 Fix python version incompatibility between docker-image and poetry (from 3.9.7 👉 ^3.9.7)

Other

  • ✔ Add /app/app/core/certificates folder to save certificates from CAPIF locally
  • ✔ Creation of Test descriptions for UE_REACHABILITY and LOSS_OF_CONNECTIVITY events on Monitoring Event API /docs/test_plan
  • 🪛 Fix python make db-reset command

v1.6.1.

27 Oct 14:14
f0574cb
Compare
Choose a tag to compare

UI changes

  • Upgrade coreui bootstrat admin template to v.4.2.1

NEF APIs / backend

  • Change status code from 403 to 401 for invalid credentials
  • Create environment variable for MongoClient host 👉 MONGO_CLIENT

Docker 🐳

  • Addition of services_default network in docker-compose. Individual services are now connected to services_default network. Environmental variable EXTERNAL_NET defines if this network is external or not (true or false)

Libraries

  • 🪛 Fix poetry installer - deprecated (different URL for poetry installation)
  • Import evolved5g ^0.8.3 library
  • Change requests from ^2.27.0 👉 ^2.26.0
  • Change pytest from ^5.4.1 👉 >6

v1.6.0

23 Aug 07:55
94e9438
Compare
Choose a tag to compare

Summary:

  • This version focuses on specific enchancements for both AsSessionWithQoS and Monitoring Event APIs
  • AsSessionWithQoS API:
    • Provision of periodic reports, (NetApp indicates the reporting period in sec)
  • MonitoringEvent API:
    • Addition of LOSS_OF_CONNECTIVITY event, Network detects that the UE is no longer reachable for either signalling or user plane communication. The NetApp may provide a Maximum Detection Time, which indicates the maximum period of time without any communication with the UE (after the UE is considered to be unreachable by the network)
    • Addition of UE_REACHABILITY event, which indicates when the UE becomes reachable (for sending downlink data to the UE)

UI changes

  • 👉 replace common html blocks with reusable Jinja2 templates (header, sidebar, footer)

Backend

  • ➕ Addition of two events on MonitoringEvent API/api/v1/3gpp-monitoring-event/v1/{scsAsId}/subscriptions 👇
    • LOSS_OF_CONNECTIVITY event
    • UE_REACHABILITY event
  • ➕ Addition of periodic reports for AsSessionWithQoS API/api/v1/3gpp-as-session-with-qos/v1/{scsAsId}/subscriptions

Database

  • Optimization on MongoDB 👇
    • MongoClient instance from pymongo module is created once in backend/app/app/db/session.py

Other

  • make logs-backend : display the logs only in the backend service
  • make logs-mongo : display the logs only for mongo service

v1.5.0

24 Jun 14:11
489208f
Compare
Choose a tag to compare

Summary:

  • changes and optimizations for making NEF_emulator capable of running bigger scenarios
  • UE movement approach change:
    • old: iterate over all path-points and simulate speed by using sleep() (LOW=1sec HIGH=0.1sec)
    • new: constantly use sleep(1sec) and simulate speed by skipping (or not) path-points
    • more on the pros/cons of this approach can be found at the relative source code section, the old one is commented out
  • update of leaflet.js to version 1.8.0 (we've indetified a bug when closing mark tooltips, it's supposed to be fixed by the maintainers of the project at the upcoming release)

UI changes

  • dashboard-cells.js minor fix to display error details correctly in the toast message
  • 🪛 fix /map js console errors caused by the UEs layer-checkbox (access to null marker)
  • 🪛 fix /map UEs buttons: handle case of UEs with no paths assigned
  • /dashboard page change: instead of 2 consecutive API requests on UE Save 👇:
    • 1 API request to assign path everytime the user selects something different
    • 1 API request on Save button
  • /map page: add type-of-service column to datatable (cells now display Monitoring Event API or AsSession With QoS API)
  • /login: add "hit enter --> submit form" functionality
  • /register: add "hit enter --> submit form" functionality
  • add NEF logo
  • move part of login.js code to app.js (more clean approach + added app.default_redirect variable)
  • maps.js: increase timeouts to 60 sec (edge case with >200 UEs, start/stop takes time)
  • maps.js: add api_get_moving_UEs() to only retrieve moving UEs ➡ move part of ui_map_paint_UEs() to ui_map_paint_moving_UEs()
  • app.js: move api_test_token() outside document.ready() for quicker user auth checks
  • 401 page redirect: when the token can't be validated the user is redirected to a 401 Unauthorized page and after a few seconds is redirected to /login. Previously, the user was redirected to login without being notified.
  • map.js: optimize helper_check_path_is_already_painted( path_id ) by replacing the simple array of painted paths with a key-value object

Backend

  • ⛔ for optimization purposes, the UEs movement is handled in memory (no more intensive read/writes to Postgres) 👇
  • api/v1/ue_movement/state-ues now returns moving UEs information only. It helps with the edge cases of having many UEs and only a few of them actually moving around
  • create new module/file for threads utils.pyue_movement.py
    • /utils/state-loop/{{supi}}/ue_movement/state-loop/{{supi}}
    • /utils/start-loop/ue_movement/start-loop
    • /utils/stop-loop/ue_movement/stop-loop
  • utils.py: add a 2nd approach for making the UEs move within their path and control their speed (see #2eb19f8)
  • SQLAlchemy: add pool_size=150, max_overflow=20 to create_engine( ... )
  • fix NoneType exception on MonitoringEvent one time request when cell is None
  • Add middleware to return custom response header X-Process-Time that counts request-response proccesing time
  • Split callbacks in two files 👉 From send_callback.pymonitoring_callbacks.py + qos_callback.py
  • fix callback notification for QoS after the transition from db to memory

Database

  • postgreSQL add command: -c shared_buffers=256MB -c max_connections=200 to docker-compose
  • MonitoringEvent: migration from postgreSQL to MongoDB 👇
    • fix check_numberOfReports function accordingly

Libraries

  • upgrade leaflet.js (1.7.1 to 1.8.0)

v1.4.1

23 May 14:06
bcbce43
Compare
Choose a tag to compare

Migration to Python 3.9

(see commit: 2ef55ed)

  • updated tiangolo/uvicorn -gunicorn -fastapi:python3.9 (from 3.7)
  • updated python = "3.9.7" (from 3.7)
  • updated uvicorn = "^0.17.6" (from 0.15.0)
  • updated fastapi = "^0.78.0" (from 0.54.1)
  • updated pymongo = "^4.1.0" (from 3.12.1)
  • updated requests = "^2.27.0" (from 2.23.0)
  • updated gunicorn = "^20.1.0" (from 20.0.4)
  • removed celery = "^4.4.2"
  • removed alembic = "^1.4.2"
  • removed GeoAlchemy2 = "^0.9.4"

📄 docs

  • add documentation for the UI (historical context, naming conventions, front-end libraries & approaches used etc...)

Backend

  • 🚫🤚 Forbid user to update cells while UEs are moving
  • Add timeout values in requests.request 👇
    • Timeout values according to https://docs.pythonrequests.org/en/master/user/advanced/#timeouts
    • Fixes "hanging" UEs problem: when subscribing to NEF APIs, specific IPs included in the notificationDestination URL caused timeouts. Since the default for Python Requests is None (wait until the connection is closed) the UE "freezes" until the request times out and the exception is finally caught.