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
OAuth2TwoTokensBearer
that overridesOAuth2
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 ofdocker-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
tobuild-no-cache
this 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
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
UI changes
- Upgrade coreui bootstrat admin template to v.4.2.1
NEF APIs / backend
- Change status code from
403
to401
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 variableEXTERNAL_NET
defines if this network is external or not (true
orfalse
)
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
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
eventUE_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
- 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.js
to 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.js
minor fix to display error details correctly in the toast message- 🪛 fix
/map
js console errors caused by the UEs layer-checkbox (access tonull
marker) - 🪛 fix
/map
UEs buttons: handle case of UEs with no paths assigned /dashboard
page 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
Save
button
/map
page: add type-of-service column to datatable (cells now displayMonitoring Event API
orAsSession 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 toapp.js
(more clean approach + addedapp.default_redirect
variable) 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 checks401
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
: 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-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.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=20
tocreate_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.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=200
todocker-compose
- MonitoringEvent: migration from postgreSQL to MongoDB 👇
- fix
check_numberOfReports
function accordingly
- fix
Libraries
- upgrade
leaflet.js
(1.7.1
to1.8.0
)