Skip to content

Releases: medianetlab/NEF_emulator

v2.2.3

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

Summary:

  • Minor fixes on service initialisation

v2.2.2

02 Jun 08:52
Compare
Choose a tag to compare
Merge branch 'develop'

v2.2.1

01 Jun 12:51
50f7aaa
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:22
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:19
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:32
2f11171
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:09
dc083a2
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:08
5dfbbd7
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:49
05a4cb0
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:09
565b02d
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)