Releases: medianetlab/NEF_emulator
Releases · medianetlab/NEF_emulator
v2.2.3
v2.2.2
v2.2.1
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
v2.1.0
v2.0.0
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
OAuth2TwoTokensBearerthat overridesOAuth2class 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 ofdocker-compose. The changes are applied in the Makefile to help developers. - Create env variables for nginx ports 👉
NGINX_HTTPNGINX_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
--pulltobuild-no-cachethis forces docker to check and pull newer versions of the images during build
v1.6.2
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
jsonfiles 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_PORTCAPIF_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-resetcommand
v1.6.1
UI changes
- Upgrade coreui bootstrat admin template to v.4.2.1
NEF APIs / backend
- Change status code from
403to401for invalid credentials - Create environment variable for MongoClient host 👉
MONGO_CLIENT
Docker 🐳
- Addition of
services_defaultnetwork in docker-compose. Individual services are now connected to services_default network. Environmental variableEXTERNAL_NETdefines if this network is external or not (trueorfalse)
Libraries
- 🪛 Fix poetry installer - deprecated (different URL for poetry installation)
- Import
evolved5g ^0.8.3library - Change
requestsfrom^2.27.0👉^2.26.0 - Change
pytestfrom^5.4.1👉 ```>6``
v1.6.0
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_CONNECTIVITYeventUE_REACHABILITYevent
- ➕ 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
- MongoClient instance from pymongo module is created once in
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
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.jsto version1.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.jsminor fix to display error details correctly in the toast message- 🪛 fix
/mapjs console errors caused by the UEs layer-checkbox (access tonullmarker) - 🪛 fix
/mapUEs buttons: handle case of UEs with no paths assigned /dashboardpage change: instead of 2 consecutive API requests on UESave👇:- 1 API request to assign path everytime the user selects something different
- 1 API request on
Savebutton
/mappage: add type-of-service column to datatable (cells now displayMonitoring Event APIorAsSession With QoS API)/login: add "hit enter --> submit form" functionality/register: add "hit enter --> submit form" functionality- add
NEFlogo - move part of
login.jscode toapp.js(more clean approach + addedapp.default_redirectvariable) maps.js: increase timeouts to 60 sec (edge case with >200 UEs, start/stop takes time)maps.js: addapi_get_moving_UEs()to only retrieve moving UEs ➡ move part ofui_map_paint_UEs()toui_map_paint_moving_UEs()app.js: moveapi_test_token()outside document.ready() for quicker user auth checks401page 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: optimizehelper_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-uesnow 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.py➡ue_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: addpool_size=150, max_overflow=20tocreate_engine( ... )- fix
NoneTypeexception on MonitoringEvent one time request when cell is None - Add middleware to return custom response header
X-Process-Timethat counts request-response proccesing time - Split callbacks in two files 👉 From
send_callback.py➡monitoring_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=200todocker-compose - MonitoringEvent: migration from postgreSQL to MongoDB 👇
- fix
check_numberOfReportsfunction accordingly
- fix
Libraries
- upgrade
leaflet.js(1.7.1to1.8.0)