Initial commit
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
This commit is contained in:
947
notes.md
Normal file
947
notes.md
Normal file
@@ -0,0 +1,947 @@
|
||||
<!-- markdownlint-disable MD013 MD024 -->
|
||||
|
||||
# Notes
|
||||
|
||||
## Running Network Monitoring and Training
|
||||
|
||||
### mec
|
||||
|
||||
- To start aggregator: `docker run -p 34000:8080 -p 34001:5000 -e FLWR_PORT=8080 -e DMLO_PORT=5000 --name aggregator --rm aggregator:latest`
|
||||
- To start pqos: `docker run --rm --name pqos -e ENDPOINT=https://webhook.site/9ebcf608-2c9a-4302-87e5-5b477831b6b -p 32000:5000 pqos:latest`
|
||||
- To start nmsender: `docker run --rm --cpus=1 -p 31000:1935 --name nginx nginx-stream`
|
||||
|
||||
### Send server_config to aggregator and do client_select
|
||||
|
||||
- config: `curl -X POST -H "Content-Type: application/json" -d '{ "ml_model": "../resources/best_model_no_tuner_40.h5", "num_epochs": 10, "min_working_nodes": 2, "hyperparam_epochs": 5, "hyperparam_batch_size": 2048, "hyperparam_learning_rate": 0.001, "avg_algorithm": "FedAvg", "training_clients_per_round": 2}' http://172.17.0.1:34001/config_server`
|
||||
- client_select: `curl -X GET -H "Content-Type: application/json" -d '{"eligible_clients_ids" : ["1", "2"]}' http://172.17.0.1:34001/select_clients`
|
||||
|
||||
### Run nmclient on obus
|
||||
|
||||
`docker run -p 45000:8000 -e RUST_LOG=info -e ROCKET_CONFIG=/etc/videoprobe/Rocket.toml -e GNSS_DEV=/dev/ttyACM0 -e GNSS_ENABLED=false --name nmcli1 nmcli:latest`
|
||||
`docker run -p 55000:8000 -e RUST_LOG=info -e ROCKET_CONFIG=/etc/videoprobe/Rocket.toml -e GNSS_DEV=/dev/ttyACM0 -e GNSS_ENABLED=false --name nmcli2 nmcli:latest`
|
||||
|
||||
### Send config to nmclients on obus
|
||||
|
||||
`curl -X GET -H "Content-Type: application/json" -d "{\"node_ip\": [\"http://172.17.0.1:41002/upload\"], \"stream_ip\": \"172.17.0.1\", \"stream_url\": \"rtmp://172.17.0.1:31000/live/test\"}" http://172.17.0.1:45000/demo/start`
|
||||
`curl -X GET -H "Content-Type: application/json" -d "{\"node_ip\": [\"http://172.17.0.1:51002/upload\"], \"stream_ip\": \"172.17.0.1\", \"stream_url\": \"rtmp://172.17.0.1:31000/live/test\"}" http://172.17.0.1:55000/demo/start`
|
||||
|
||||
### Start training on Clients
|
||||
|
||||
`docker run --cpus=1 -p 41000:8080 -p 41001:5000 -p 41002:80 -e SERVER_IP_FLWR=172.17.0.1:34000 -e SERVER_IP_AGG=172.17.0.1:34001 -e CLIENT_ID=1 --name client1 --rm obu:latest`
|
||||
`docker run --cpus=1 -p 51000:8080 -p 51001:5000 -p 51002:80 -e SERVER_IP_FLWR=172.17.0.1:34000 -e SERVER_IP_AGG=172.17.0.1:34001 -e CLIENT_ID=2 --name client2 --rm obu:latest`
|
||||
|
||||
## 5G IANA
|
||||
|
||||
Here I'll describe how we deploy this setup onto the 5G IANA platform.
|
||||
|
||||
### Setup Components
|
||||
|
||||
We'll need the following 5 components:
|
||||
|
||||
- nmsender
|
||||
- nmclient
|
||||
- aggregator
|
||||
- obu-node
|
||||
- pqos
|
||||
|
||||
All images are on the custom docker registry: [192.168.100.2:5000/uulm](192.168.100.2:5000/uulm) with
|
||||
the 5g-iana user.
|
||||
|
||||
#### uc6nmsen2 / nmsender
|
||||
|
||||
nmsender is pushed as nginx:v1.2.2 onto the registry. The components name is: uc6nmsen2
|
||||
|
||||
##### General
|
||||
|
||||
Name: uc6nmsen2
|
||||
Architecture: amd64
|
||||
Elasticity Controller: HORIZONTAL
|
||||
|
||||
##### Distribution Parameters
|
||||
|
||||
Docker Image: nginx:v1.2.2
|
||||
|
||||
##### Minimum Execution Requirements
|
||||
|
||||
vCPUs: 1
|
||||
RAM: 2048
|
||||
Storage: 10
|
||||
Hypervisor Type: ESXI
|
||||
|
||||
##### Health Check
|
||||
|
||||
HTTP/Command: ffprobe -v quiet -print_format json -show_streams rtmp://localhost/live/test
|
||||
Time Interval: 10
|
||||
|
||||
##### ~~Container Execution~~
|
||||
|
||||
##### ~~Environment Variables~~
|
||||
|
||||
##### Exposed Interfaces
|
||||
|
||||
uc6nmsen21935: 1935 / Access / TCP/UDP
|
||||
|
||||
##### ~~Required Interfaces~~
|
||||
|
||||
##### ~~Plugins~~
|
||||
|
||||
##### ~~Volumes~~
|
||||
|
||||
##### ~~Devices~~
|
||||
|
||||
##### ~~Labels~~
|
||||
|
||||
##### ~~Advanced Options~~
|
||||
|
||||
#### uc6nmclient / nmclient
|
||||
|
||||
nmclient is pushed as passive_network_monitoring:v1.2.1. The components name is:
|
||||
uc6nmclient
|
||||
|
||||
##### General
|
||||
|
||||
Name: uc6nmclient
|
||||
Architecture: amd64
|
||||
Elasticity Controller: HORIZONTAL
|
||||
|
||||
##### Distribution Parameters
|
||||
|
||||
Docker Image: passive_network_monitoring:v1.2.1
|
||||
|
||||
##### Minimum Execution Requirements
|
||||
|
||||
vCPUs: 1
|
||||
RAM: 512
|
||||
Storage: 10
|
||||
Hypervisor Type: ESXI
|
||||
|
||||
##### Health Check
|
||||
|
||||
HTTP/Command: <http://localhost:8000>
|
||||
Time Interval: 10
|
||||
|
||||
##### ~~Container Execution~~
|
||||
|
||||
##### Environment Variables
|
||||
|
||||
ROCKET_CONFIG: /etc/videoprobe/Rocket.toml
|
||||
GNSS_DEV: /dev/ttyACM0
|
||||
RUST_LOG: info
|
||||
GNSS_ENABLED: true
|
||||
|
||||
##### Exposed Interfaces
|
||||
|
||||
uc6nmclientstatus: 8000 / Access / TCP
|
||||
|
||||
##### ~~Required Interfaces~~
|
||||
|
||||
##### ~~Plugins~~
|
||||
|
||||
##### ~~Volumes~~
|
||||
|
||||
##### ~~Devices~~
|
||||
|
||||
##### ~~Labels~~
|
||||
|
||||
##### ~~Advanced Options~~
|
||||
|
||||
#### uc6aggnode / aggregator
|
||||
|
||||
aggregator is pushed as uc6aggnode:v1.1.0. The component is: uc6aggnode
|
||||
|
||||
##### General
|
||||
|
||||
Name: uc6aggnode
|
||||
Architecture: amd64
|
||||
Elasticity Controller: HORIZONTAL
|
||||
|
||||
##### Distribution Parameters
|
||||
|
||||
Docker Image: uc6aggnode:v0.9.0
|
||||
|
||||
##### Minimum Execution Requirements
|
||||
|
||||
vCPUs: 1
|
||||
RAM: 1024
|
||||
Storage: 10
|
||||
Hypervisor Type: ESXI
|
||||
|
||||
##### Health Check
|
||||
|
||||
HTTP/Command: <http://localhost:8080>
|
||||
Time Interval: 10
|
||||
|
||||
##### ~~Container Execution~~
|
||||
|
||||
##### ~~Environment Variables~~
|
||||
|
||||
##### Exposed Interfaces
|
||||
|
||||
uc6aggnode8080: 8080 / Access / TCP
|
||||
uc6aggnode5000: 5000 / Access / TCP
|
||||
|
||||
##### ~~Required Interfaces~~
|
||||
|
||||
##### ~~Plugins~~
|
||||
|
||||
##### ~~Volumes~~
|
||||
|
||||
##### ~~Devices~~
|
||||
|
||||
##### ~~Labels~~
|
||||
|
||||
##### ~~Advanced Options~~
|
||||
|
||||
#### uc6dmltrain0 / obu-node
|
||||
|
||||
We'll need this twice, with different environment variables
|
||||
obu-node is pushed as training_agent:v1.2.0. The component name is: uc6dmltrain0
|
||||
|
||||
##### General
|
||||
|
||||
Name: uc6dmltrain0
|
||||
Architecture: amd64
|
||||
Elasticity Controller: HORIZONTAL
|
||||
|
||||
##### Distribution Parameters
|
||||
|
||||
Docker Image: training_agent:v1.2.0
|
||||
|
||||
##### Minimum Execution Requirements
|
||||
|
||||
vCPUs: 1
|
||||
RAM: 4096
|
||||
Storage: 4
|
||||
Hypervisor Type: ESXI
|
||||
|
||||
##### Health Check
|
||||
|
||||
HTTP/Command: [ http://localhost:80 ]
|
||||
Time Interval: 10
|
||||
|
||||
##### ~~Container Execution~~
|
||||
|
||||
##### Environment Variables
|
||||
|
||||
- SERVER_IP_FLWR=192.168.100.4:30765
|
||||
- SERVER_IP_AGG=192.168.100.4:31810
|
||||
- CLIENT_ID=0
|
||||
|
||||
##### Exposed Interfaces
|
||||
|
||||
uc6dmltrain08080: 8080 / Access / TCP
|
||||
uc6dmltrain080: 80 / Access / TCP
|
||||
obustart0: 5001 / Access / TCP
|
||||
|
||||
##### ~~Required Interfaces~~
|
||||
|
||||
##### ~~Plugins~~
|
||||
|
||||
##### ~~Volumes~~
|
||||
|
||||
##### ~~Devices~~
|
||||
|
||||
##### ~~Labels~~
|
||||
|
||||
##### ~~Advanced Options~~
|
||||
|
||||
#### uc6dmltrain1 / obu-node
|
||||
|
||||
We'll need this twice, with different environment variables
|
||||
obu-node is pushed as training_agent:v1.2.0. The component name is: uc6dmltrain1
|
||||
|
||||
##### General
|
||||
|
||||
Name: uc6dmltrain1
|
||||
Architecture: amd64
|
||||
Elasticity Controller: HORIZONTAL
|
||||
|
||||
##### Distribution Parameters
|
||||
|
||||
Docker Image: training_agent:v1.2.0
|
||||
|
||||
##### Minimum Execution Requirements
|
||||
|
||||
vCPUs: 1
|
||||
RAM: 4096
|
||||
Storage: 4
|
||||
Hypervisor Type: ESXI
|
||||
|
||||
##### Health Check
|
||||
|
||||
HTTP/Command: [ http://localhost:80 ]
|
||||
Time Interval: 10
|
||||
|
||||
##### ~~Container Execution~~
|
||||
|
||||
##### Environment Variables
|
||||
|
||||
- SERVER_IP_FLWR=192.168.100.4:30765
|
||||
- SERVER_IP_AGG=192.168.100.4:31810
|
||||
- CLIENT_ID=1
|
||||
|
||||
##### Exposed Interfaces
|
||||
|
||||
uc6dmltrain18080: 8080 / Access / TCP
|
||||
uc6dmltrain180: 80 / Access / TCP
|
||||
obustart1: 5001 / Access / TCP
|
||||
|
||||
##### ~~Required Interfaces~~
|
||||
|
||||
##### ~~Plugins~~
|
||||
|
||||
##### ~~Volumes~~
|
||||
|
||||
##### ~~Devices~~
|
||||
|
||||
##### ~~Labels~~
|
||||
|
||||
##### ~~Advanced Options~~
|
||||
|
||||
#### uc6pqos / pqos
|
||||
|
||||
pqos is pushed as uc6pqos:v1.2.0. The component is uc6pqos
|
||||
|
||||
##### General
|
||||
|
||||
Name: uc6pqos
|
||||
Architecture: amd64
|
||||
Elasticity Controller: HORIZONTAL
|
||||
|
||||
##### Distribution Parameters
|
||||
|
||||
Docker Image: uc6pqos:v1.2.0
|
||||
|
||||
##### Minimum Execution Requirements
|
||||
|
||||
vCPUs: 1
|
||||
RAM: 512
|
||||
Storage: 10
|
||||
Hypervisor Type: ESXI
|
||||
|
||||
##### Health Check
|
||||
|
||||
HTTP/Command: [http://localhost:5000]
|
||||
Time Interval: 10
|
||||
|
||||
##### ~~Container Execution~~
|
||||
|
||||
##### Environment Variables
|
||||
|
||||
ENDPOINT: [ https://webhook.site/9ebcf608-2c9a-4302-87e5-5b477831b6b ]
|
||||
|
||||
##### Exposed Interfaces
|
||||
|
||||
uc6pqos5000: 5000 / Access / TCP
|
||||
|
||||
##### ~~Required Interfaces~~
|
||||
|
||||
##### ~~Plugins~~
|
||||
|
||||
##### ~~Volumes~~
|
||||
|
||||
##### ~~Devices~~
|
||||
|
||||
##### ~~Labels~~
|
||||
|
||||
##### ~~Advanced Options~~
|
||||
|
||||
#### uc6dmlarm0 / obu-node
|
||||
|
||||
We'll need this twice, with different environment variables
|
||||
obu-node is pushed as training_agent:v1.2.0. The component name is: uc6dmlarm0
|
||||
|
||||
##### General
|
||||
|
||||
Name: us6dmlarm0
|
||||
Architecture: arm64
|
||||
Elasticity Controller: HORIZONTAL
|
||||
|
||||
##### Distribution Parameters
|
||||
|
||||
Docker Image: training_agent:v1.2.0
|
||||
Docker Username: 5g-iana
|
||||
Docker Password: 5g-iana
|
||||
Custom Docker Registry: [ 192.168.100.2:5000/uulm ]
|
||||
|
||||
##### Minimum Execution Requirements
|
||||
|
||||
vCPUs: 1
|
||||
RAM: 4096
|
||||
Storage: 4
|
||||
Hypervisor Type: ESXI
|
||||
|
||||
##### Health Check
|
||||
|
||||
HTTP/Command: [ http://localhost:80 ]
|
||||
Time Interval: 10
|
||||
|
||||
##### ~~Container Execution~~
|
||||
|
||||
##### Environment Variables
|
||||
|
||||
- SERVER_IP_FLWR=192.168.100.4:30765
|
||||
- SERVER_IP_AGG=192.168.100.4:31810
|
||||
- CLIENT_ID=3
|
||||
|
||||
##### Exposed Interfaces
|
||||
|
||||
uc6dmlarm08080: 8080 / Access / TCP
|
||||
uc6dmlarm080: 80 / Access / TCP
|
||||
obustart3: 5001 / Access / TCP
|
||||
|
||||
##### ~~Required Interfaces~~
|
||||
|
||||
##### ~~Plugins~~
|
||||
|
||||
##### ~~Volumes~~
|
||||
|
||||
##### ~~Devices~~
|
||||
|
||||
##### ~~Labels~~
|
||||
|
||||
##### ~~Advanced Options~~
|
||||
|
||||
#### uc6dmlarm1 / obu-node
|
||||
|
||||
We'll need this twice, with different environment variables
|
||||
obu-node is pushed as training_agent:v1.2.0. The component name is: uc6dmlarm1
|
||||
|
||||
##### General
|
||||
|
||||
Name: uc6dmlarm1
|
||||
Architecture: arm64
|
||||
Elasticity Controller: HORIZONTAL
|
||||
|
||||
##### Distribution Parameters
|
||||
|
||||
Docker Image: training_agent:v1.2.0
|
||||
Docker Username: 5g-iana
|
||||
Docker Password: 5g-iana
|
||||
Custom Docker Registry: [ 192.168.100.2:5000/uulm ]
|
||||
|
||||
##### Minimum Execution Requirements
|
||||
|
||||
vCPUs: 1
|
||||
RAM: 4096
|
||||
Storage: 4
|
||||
Hypervisor Type: ESXI
|
||||
|
||||
##### Health Check
|
||||
|
||||
HTTP/Command: [ http://localhost:80 ]
|
||||
Time Interval: 10
|
||||
|
||||
##### ~~Container Execution~~
|
||||
|
||||
##### Environment Variables
|
||||
|
||||
- SERVER_IP_FLWR=192.168.100.4:31805
|
||||
- SERVER_IP_AGG=192.168.100.4:30760
|
||||
- CLIENT_ID=4
|
||||
|
||||
##### Exposed Interfaces
|
||||
|
||||
uc6dmlarm18080: 8080 / Access / TCP
|
||||
uc6dmlarm180: 80 / Access / TCP
|
||||
obustart4: 5001 / Access / TCP
|
||||
|
||||
##### ~~Required Interfaces~~
|
||||
|
||||
##### ~~Plugins~~
|
||||
|
||||
##### ~~Volumes~~
|
||||
|
||||
##### ~~Devices~~
|
||||
|
||||
##### ~~Labels~~
|
||||
|
||||
##### ~~Advanced Options~~
|
||||
|
||||
#### uc6dmlarm2 / obu-node
|
||||
|
||||
We'll need this twice, with different environment variables
|
||||
obu-node is pushed as training_agent:v1.2.0. The component name is: uc6dmlarm2
|
||||
|
||||
##### General
|
||||
|
||||
Name: uc6dmlarm2
|
||||
Architecture: arm64
|
||||
Elasticity Controller: HORIZONTAL
|
||||
|
||||
##### Distribution Parameters
|
||||
|
||||
Docker Image: training_agent:v1.2.0
|
||||
Docker Username: 5g-iana
|
||||
Docker Password: 5g-iana
|
||||
Custom Docker Registry: [ 192.168.100.2:5000/uulm ]
|
||||
|
||||
##### Minimum Execution Requirements
|
||||
|
||||
vCPUs: 1
|
||||
RAM: 4096
|
||||
Storage: 4
|
||||
Hypervisor Type: ESXI
|
||||
|
||||
##### Health Check
|
||||
|
||||
HTTP/Command: [ http://localhost:80 ]
|
||||
Time Interval: 10
|
||||
|
||||
##### ~~Container Execution~~
|
||||
|
||||
##### Environment Variables
|
||||
|
||||
- SERVER_IP_FLWR=192.168.100.4:30765
|
||||
- SERVER_IP_AGG=192.168.100.4:31810
|
||||
- CLIENT_ID=2
|
||||
|
||||
##### Exposed Interfaces
|
||||
|
||||
uc6dmlarm28080: 8080 / Access / TCP
|
||||
uc6dmlarm280: 80 / Access / TCP
|
||||
obustart2: 5001 / Access / TCP
|
||||
|
||||
##### ~~Required Interfaces~~
|
||||
|
||||
##### ~~Plugins~~
|
||||
|
||||
##### ~~Volumes~~
|
||||
|
||||
##### ~~Devices~~
|
||||
|
||||
##### ~~Labels~~
|
||||
|
||||
##### ~~Advanced Options~~
|
||||
|
||||
### Setup Applications
|
||||
|
||||
#### uc6nmsen2 / uc6nmsen2
|
||||
|
||||
Has uc6nmsen2 with the name uc6nmsen21831.
|
||||
|
||||
#### uc6nmcli2 / uc6nmclient
|
||||
|
||||
Has uc6nmclient with the name us6nmclient1771.
|
||||
|
||||
#### uc6aggnode / uc6aggnode
|
||||
|
||||
Has uc6aggnode with the name uc6aggnode1781.
|
||||
|
||||
#### uc6dmltrain0 / uc6dmltrain0
|
||||
|
||||
Has uc6dmltrain0 with the name uc6dmltrain02031.
|
||||
|
||||
#### uc6dmltrain1 / uc6dmltrain1
|
||||
|
||||
Has uc6dmltrain1 with the name uc6dmltrain1541.
|
||||
|
||||
#### uc6pqos / uc6pqos
|
||||
|
||||
Has uc6pqos with the name uc6pqos1841.
|
||||
|
||||
#### uc6dmlarm0 / uc6dmlarm0
|
||||
|
||||
Has uc6dmlarm0 with the name uc6dmlarm02041.
|
||||
|
||||
#### uc6dmlarm1 / uc6dmlarm1
|
||||
|
||||
Has uc6dmlarm1 with the name uc6dmlarm12051.
|
||||
|
||||
#### uc6dmlarm2 / uc6dmlarm2
|
||||
|
||||
Has uc6dmlarm2 with the name uc6dmlarm22061.
|
||||
|
||||
### Setup Deployment
|
||||
|
||||
#### uc6aggnode6 / uc6aggnode
|
||||
|
||||
##### Configure "uc6aggnode1781" Component
|
||||
|
||||
Select node: 5g-iana-mec
|
||||
|
||||
##### Set the Constraints of "uc6aggnode1781" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
#### uc6nmsender / uc6nmsen2
|
||||
|
||||
##### Configure "uc6nmsen21831" Component
|
||||
|
||||
Select node: 5g-iana-mec
|
||||
|
||||
##### Set the Constraints of "uc6nmsen21831" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
#### uc6pqos0 / uc6pqos
|
||||
|
||||
##### Configure "uc6pqos1841" Component
|
||||
|
||||
Select node: 5g-iana-mec
|
||||
|
||||
##### Set the Constraints of "uc6pqos1841" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
#### uc6nmcli1 / uc6nmcli2
|
||||
|
||||
Select node: uulm-obu1
|
||||
|
||||
##### Set the Constraints of "" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
#### uc6nmcli0 / uc6nmcli2
|
||||
|
||||
##### Configure "" Component
|
||||
|
||||
Select node: uulm-obu0
|
||||
|
||||
##### Set the Constraints of "uc6nmclient1771" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
#### uc6dml90 / uc6dmltrain0
|
||||
|
||||
##### Configure "uc6dmltrain02031" Component
|
||||
|
||||
Select node: uulm-obu0
|
||||
|
||||
##### Set the Constraints of "uc6dmltrain02031" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
#### uc6dml91 / uc6dmltrain1
|
||||
|
||||
##### Configure "uc6dmltrain1541" Component
|
||||
|
||||
Select node: uulm-obu1
|
||||
|
||||
##### Set the Constraints of "uc6dmltrain1541" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
#### uc6dmlarm0 / uc6dmlarm0
|
||||
|
||||
##### Configure "uc6dmlarm02041" Component
|
||||
|
||||
Select node: orin
|
||||
|
||||
##### Set the Constraints of "uc6dmlarm02041" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
#### uc6dmlarm1 / uc6dmlarm1
|
||||
|
||||
##### Configure "uc6dmlarm12051" Component
|
||||
|
||||
Select node: ubuntu
|
||||
|
||||
##### Set the Constraints of "uc6dmlarm12051" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
#### uc6dmlarm2 / uc6dmlarm2
|
||||
|
||||
##### Configure "uc6dmlarm22061" Component
|
||||
|
||||
Select node: links-vobu-1
|
||||
|
||||
##### Set the Constraints of "uc6dmlarm22061" Access Interface
|
||||
|
||||
Radio Service Types: eMBB
|
||||
Uplink Bandwidth: 1
|
||||
Downlink Bandwidth: 10
|
||||
|
||||
### Curl commands
|
||||
|
||||
```sh
|
||||
# towards uc6aggnode
|
||||
curl -X POST -H "Content-Type: application/json" -d '{ "ml_model": "../resources/best_model_no_tuner_40.h5", "num_epochs": 10, "min_working_nodes": 1, "hyperparam_epochs": 5, "hyperparam_batch_size": 2048, "hyperparam_learning_rate": 0.001, "avg_algorithm": "FedAvg", "training_clients_per_round": 1}' http://172.17.0.1:34001/config_server
|
||||
|
||||
curl -X POST -H "Content-Type: application/json" -d '{"eligible_clients_ids" : ["1"]}' http://172.17.0.1:34001/select_clients
|
||||
|
||||
# towards nmcli2
|
||||
curl -X GET -H "Content-Type: application/json" -d "{\"node_ip\": [\"http://172.17.0.1:41002/upload\"], \"stream_ip\": \"172.17.0.1\", \"stream_url\": \"rtmp://172.17.0.1:31000/live/test\"}" http://172.17.0.1:45000/demo/start
|
||||
```
|
||||
|
||||
### Possible Tags
|
||||
|
||||
```sh
|
||||
curl -u 5g-iana:5g-iana -k https://192.168.100.2:5000/v2/uulm/nginx/tags/list
|
||||
{"name":"uulm/nginx","tags":["v1.2.1","v1.1.0","v1.2.2","v1.1.1"]}
|
||||
```
|
||||
|
||||
```sh
|
||||
curl -u 5g-iana:5g-iana -k https://192.168.100.2:5000/v2/uulm/passive_network_monitoring/tags/list
|
||||
{"name":"uulm/passive_network_monitoring","tags":["v1.2.1","v1.1.0","v1.2.0","v1.1.1"]}
|
||||
```
|
||||
|
||||
```sh
|
||||
curl -u 5g-iana:5g-iana -k https://192.168.100.2:5000/v2/uulm/uc6aggnode/tags/list
|
||||
{"name":"uulm/uc6aggnode","tags":["v0.9.0"]}
|
||||
```
|
||||
|
||||
```sh
|
||||
curl -u 5g-iana:5g-iana -k https://192.168.100.2:5000/v2/uulm/training_agent/tags/list
|
||||
{"name":"uulm/training_agent","tags":["v1.1.0","v1.2.0","v1.1.1"]}
|
||||
```
|
||||
|
||||
### Kubernetes Stats
|
||||
|
||||
#### Aggregator node
|
||||
|
||||
```sh
|
||||
nxw@5g-iana-manager:~$ kc get all -n 31ff3ac6-c9c9-454c-8131-f0be06dfd711
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
pod/uc6agg-uc6aggnode1781-eeqsuyvfcx-deployment-767949685b-tlrn8 1/1 Running 4 (44h ago) 45h
|
||||
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
service/uc6agg-uc6aggnode1781-eeqsuyvfcx-service NodePort 10.152.183.223 <none> 8080:30765/TCP,5000:31810/TCP 45h
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||
deployment.apps/uc6agg-uc6aggnode1781-eeqsuyvfcx-deployment 1/1 1 1 45h
|
||||
```
|
||||
|
||||
Curl only from obu or mec
|
||||
Curl to start this: `curl -X POST -H "Content-Type: application/json" -d '{ "ml_model": "../resources/best_model_no_tuner_40.h5", "num_epochs": 10, "min_working_nodes": 2, "hyperparam_epochs": 5, "hyperparam_batch_size": 2048,"hyperparam_learning_rate": 0.001, "avg_algorithm": "FedAvg", "training_clients_per_round": 2}' http://192.168.100.4:31808/config_server`
|
||||
Client Selection: `curl -X GET -H "Content-Type: application/json" -d '{"eligible_clients_ids" : ["0", "1"]}' http://192.168.100.4:31808/select_clients`
|
||||
|
||||
#### uc6dml on uulm-obu0 / uulm-obu1
|
||||
|
||||
##### uulm-obu0
|
||||
|
||||
```sh
|
||||
nxw@5g-iana-manager:~$ kc get all -n 5dcb12b1-a7a9-4b73-b290-a30f1d02b7db
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
service/uc6dmltrain0-uc6dmltrain02031-jekf9nmeui-service NodePort 10.152.183.71 <none> 80:31418/TCP,8080:30402/TCP,5001:32126/TCP 45h
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||
deployment.apps/uc6dmltrain0-uc6dmltrain02031-jekf9nmeui-deployment 0/0 0 0 45h
|
||||
|
||||
NAME DESIRED CURRENT READY AGE
|
||||
replicaset.apps/uc6dmltrain0-uc6dmltrain02031-jekf9nmeui-deployment-7b779477b4 0 0 0 45h
|
||||
```
|
||||
|
||||
##### uulm-obu1
|
||||
|
||||
```sh
|
||||
nxw@5g-iana-manager:~$ kc get all -n 7cc5f73c-e349-493c-a592-9e0e685a0a65
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
service/uc6dmltrain1-uc6dmltrain1541-xtyata0ycb-service NodePort 10.152.183.89 <none> 8080:30022/TCP,80:32174/TCP,5001:31066/TCP 45h
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||
deployment.apps/uc6dmltrain1-uc6dmltrain1541-xtyata0ycb-deployment 0/0 0 0 45h
|
||||
|
||||
NAME DESIRED CURRENT READY AGE
|
||||
replicaset.apps/uc6dmltrain1-uc6dmltrain1541-xtyata0ycb-deployment-bd7d5964b 0 0 0 45h
|
||||
```
|
||||
|
||||
#### PQoS (TODO)
|
||||
|
||||
```sh
|
||||
nxw@5g-iana-manager:~$ kc get all -n e2c74d7f-5de3-47ae-a450-5af3745ba0dc
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
pod/uc6pqos0-uc6pqos1841-chdrqcj0rm-deployment-7546f9455f-qmfx6 0/1 ContainerCreating 0 21s
|
||||
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
service/uc6pqos0-uc6pqos1841-chdrqcj0rm-service NodePort 10.152.183.18 <none> 5000:32119/TCP 21s
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||
deployment.apps/uc6pqos0-uc6pqos1841-chdrqcj0rm-deployment 0/1 1 0 21s
|
||||
|
||||
NAME DESIRED CURRENT READY AGE
|
||||
replicaset.apps/uc6pqos0-uc6pqos1841-chdrqcj0rm-deployment-7546f9455f 1 1 0 21s
|
||||
```
|
||||
|
||||
#### NmSender
|
||||
|
||||
```sh
|
||||
nxw@5g-iana-manager:~$ kc get all -n 1918b480-5b0c-4cf5-aff6-f60d06622251
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
pod/uc6nmsender-uc6nmsen21831-3ebfpbnq83-deployment-64884c7f769pc8s 1/1 Running 0 56m
|
||||
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
service/uc6nmsender-uc6nmsen21831-3ebfpbnq83-service NodePort 10.152.183.30 <none> 1935:31023/TCP 56m
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||
deployment.apps/uc6nmsender-uc6nmsen21831-3ebfpbnq83-deployment 1/1 1 1 56m
|
||||
|
||||
NAME DESIRED CURRENT READY AGE
|
||||
replicaset.apps/uc6nmsender-uc6nmsen21831-3ebfpbnq83-deployment-64884c7f76 1 1 1 56m
|
||||
```
|
||||
|
||||
#### NmCli on uulm-obu0 / uulm-obu1
|
||||
|
||||
##### uulm-obu0
|
||||
|
||||
```sh
|
||||
nxw@5g-iana-manager:~$ kc get all -n a0633f4a-98bb-4dc3-9aff-c0c8b75ccf33
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
pod/uc6nmcli0-uc6nmclient1771-1gyqqtau43-deployment-6d6fc795dfsbvgj 1/1 Running 0 16m
|
||||
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
service/uc6nmcli0-uc6nmclient1771-1gyqqtau43-service NodePort 10.152.183.164 <none> 8000:30637/TCP 16m
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||
deployment.apps/uc6nmcli0-uc6nmclient1771-1gyqqtau43-deployment 1/1 1 1 16m
|
||||
|
||||
NAME DESIRED CURRENT READY AGE
|
||||
replicaset.apps/uc6nmcli0-uc6nmclient1771-1gyqqtau43-deployment-6d6fc795df 1 1 1 16m
|
||||
```
|
||||
|
||||
Curl to start this: `curl -X GET -H "Content-Type: application/json" -d "{\"endpoint_ip\": [\"http://192.168.100.4:31418/upload\", \"https://webhook.site/fbf62890-8c93-426c-bb19-461d8e11ff8c\"], \"ping_ip\": \"192.168.100.4\", \"stream_url\": \"rtmp://192.168.100.4:31023/live/test\"}" http://192.168.100.4:30637/demo/start`
|
||||
|
||||
##### uulm-obu1
|
||||
|
||||
```sh
|
||||
nxw@5g-iana-manager:~$ kc get all -n fa862b87-1d25-4357-bc29-ffcc4aa67907
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
pod/uc6nmcli1-uc6nmclient1771-k9rifya6n3-deployment-84f59b85ccvrn8q 1/1 Running 0 14m
|
||||
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
service/uc6nmcli1-uc6nmclient1771-k9rifya6n3-service NodePort 10.152.183.237 <none> 8000:32334/TCP 14m
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||
deployment.apps/uc6nmcli1-uc6nmclient1771-k9rifya6n3-deployment 1/1 1 1 14m
|
||||
|
||||
NAME DESIRED CURRENT READY AGE
|
||||
replicaset.apps/uc6nmcli1-uc6nmclient1771-k9rifya6n3-deployment-84f59b85cc 1 1 1 14m
|
||||
|
||||
```
|
||||
|
||||
Curl only from obu or mec
|
||||
Curl to start this: `curl -X GET -H "Content-Type: application/json" -d "{\"endpoint_ip\": [\"http://192.168.100.4:32174/upload\", \"https://webhook.site/fbf62890-8c93-426c-bb19-461d8e11ff8c\"], \"ping_ip\": \"192.168.100.4\", \"stream_url\": \"rtmp://192.168.100.4:31023/live/test\"}" http://192.168.100.4:32334/demo/start`
|
||||
|
||||
```json
|
||||
{
|
||||
"endpoint_ip": [
|
||||
"http://192.168.100.4:30956/upload",
|
||||
"http://192.168.100.4:32119/accept_data"
|
||||
],
|
||||
"ping_ip": "192.168.100.4",
|
||||
"stream_url": "rtmp://192.168.100.4:30888/live/test"
|
||||
}
|
||||
```
|
||||
|
||||
## Scripts
|
||||
|
||||
From uulm-obu0, uulm-obu1 or 5g-iana-mec.
|
||||
Get list of repos:
|
||||
`curl -u 5g-iana:5g-iana -k https://192.168.100.2:5000/v2/_catalog`
|
||||
Get tags for a repo:
|
||||
`curl -u 5g-iana:5g-iana -k https://192.168.100.2:5000/v2/uulm/training_agent/tags/list`
|
||||
|
||||
## Issues
|
||||
|
||||
### uulm-obu0 offline
|
||||
|
||||
uulm-obu0 is offline and has been offline for a while.
|
||||
|
||||
### Logs
|
||||
|
||||
Can't access logs from kubernetes on the uulm-obu1
|
||||
|
||||
```sh
|
||||
Error from server: Get "https://172.16.1.11:10250/containerLogs/26f69d2b-bf62-44a6-9346-421d34d376d8/uc6dml9-01-uc6dmltrain541-ccdgt3sqq8-deployment-6896f68c87cgq4r/uc6dml9-01-uc6dmltrain541-ccdgt3sqq8": dial tcp 172.16.1.11:10250: i/o timeout
|
||||
```
|
||||
|
||||
Troubleshooting steps would be
|
||||
|
||||
> I get "i/o timeouts" when calling "microk8s kubectl logs"
|
||||
>
|
||||
> Make sure your hostname resolves correctly to the IP address of your host or localhost. The following error may indicate this misconfiguration:
|
||||
>
|
||||
> microk8s kubectl logs
|
||||
> Error from server: Get "<https://hostname:10250/containerLogs/default/>...": dial tcp host-IP:10250: i/o timeout
|
||||
>
|
||||
> One way to address this issue is to add the hostname and IP details of the host in /etc/hosts. In the case of a multi-node cluster, the /etc/hosts on each machine has to be updated with the details of all cluster nodes.
|
||||
|
||||
But doesn't work
|
||||
|
||||
## todo
|
||||
|
||||
- Agg node testing - Giorgos will test on platform
|
||||
- network monitoring figure out why not our obus are working
|
||||
- check arm deployment of nmclient
|
||||
- deploy nmclient tool on uc1 obus
|
||||
- confirm pqos deployment on obu on our obus
|
||||
|
||||
## Data Collection for NEtwork Monitoring
|
||||
|
||||
```sh
|
||||
curl -X GET -d "{\"id\": 1}" 192.168.200.11:32684/data_collection/get_data_stats
|
||||
curl -X GET -H "Content-Type: application/json" -d "{\"endpoint_ip\": [\"https://webhook.site/85e1c94b-6642-45e2-abd4-59ef11450c2b\"], \"ping_ip\": \"192.168.100.4\", \"stream_url\": \"rtmp://192.168.100.4:31023/live/test\"}" http://192.168.200.11:32684/demo/start
|
||||
```
|
||||
|
||||
## PQoS Final Event
|
||||
|
||||
### Component
|
||||
|
||||
#### General
|
||||
|
||||
- Name: uc6pqos-fe
|
||||
- Architecture: x86
|
||||
- Elasticity controller: HORIZONTAL
|
||||
|
||||
#### Distribution Parameters
|
||||
|
||||
- Docker Image: uc6pqos:v1.3.0
|
||||
- Docker Credentials: <STANDARD>
|
||||
|
||||
#### Minimum Execution Requirements
|
||||
|
||||
- vCPUs: 1
|
||||
- RAM (MB): 512
|
||||
- Storage (GB): 10
|
||||
- Hypervisor Type: ESXI
|
||||
|
||||
#### Health Check
|
||||
|
||||
- HTTP: [http://localhost:5000](http://localhost:5000)
|
||||
- Time Interval (in seconds): 10
|
||||
|
||||
#### Environment variables
|
||||
|
||||
# For testing
|
||||
|
||||
- ENDPOINT: [https://webhook.site/fc612cc3-48a1-418f-8e97-e6b691285892](https://webhook.site/fc612cc3-48a1-418f-8e97-e6b691285892)
|
||||
|
||||
#### Exposed Interfaces
|
||||
|
||||
- uc6pqosfe5000: 5000
|
||||
|
||||
### Application
|
||||
|
||||
- Name: PQoS-finalevent
|
||||
- Component: uc6pqos-fe
|
||||
|
||||
### Instance
|
||||
|
||||
- Name: PQoS-finalevent
|
||||
- Selector Provider: NEXTWORKS-OSS
|
||||
- Application: PQoS-finalevent
|
||||
- Selector node: uulm-obu0 # For Testing
|
||||
- Ingress:
|
||||
- Minimum Bandwidth: eMBB
|
||||
- Radio Service Types: 1
|
||||
- Maximum Bandwidth: 10
|
||||
Reference in New Issue
Block a user