Releases: EVOLVED-5G/NEF_emulator
Releases · EVOLVED-5G/NEF_emulator
v2.2.3
v2.2.2
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
)
v1.4.1
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 isNone
(wait until the connection is closed) the UE "freezes" until the request times out and the exception is finally caught.