Initial commit
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
This commit is contained in:
107
5g-uulm-network-monitoring/README.md.old
Normal file
107
5g-uulm-network-monitoring/README.md.old
Normal file
@@ -0,0 +1,107 @@
|
||||
# 5G-IANA: UULM Network Monitoring
|
||||
|
||||
This repository contains the CI/CD and Dockerfiles necessary to build
|
||||
the UULM Network Monitoring Tool.
|
||||
|
||||
For demonstration purposes we need to send a command to `videoprobe`
|
||||
before it starts running, so we can deploy it beforehand. To do this
|
||||
simply run the following command:
|
||||
|
||||
``` bash
|
||||
curl -X GET -H "Content-Type: application/json" -d "{\"node_ip\": [\"<obu-node endpoint>\",\"<pqos endpoint>\"], \"stream_ip\": \"<ping target>\", \"stream_url\": \"<stream url>"}" http://<videoprobe ip/port>/demo/start
|
||||
|
||||
```
|
||||
|
||||
- node<sub>ip</sub>: A list of API endpoints `videorprobe` should send
|
||||
the collected data to i.e. \_\[<http://192.168.0.149:8001/upload>,
|
||||
<http://192.168.0.149:8002/upload%5D_>.
|
||||
- stream<sub>ip</sub>: The IP `videoprobe` measures the latency to.
|
||||
Usually this is the same as IP as the `stream_url` i.e.
|
||||
<u>192.168.0.149</u>.
|
||||
- stream<u>url: The full path to the nginx-proxy thats hosting a rtmp
|
||||
stream i.e. <sub>rtmp</sub>://192.168.0.149/live/test</u>.
|
||||
|
||||
## Testing Locally
|
||||
|
||||
When testing locally we may host the videostream provider and the
|
||||
consumer on the same device. This is not the case for the deployment on
|
||||
the 5G-IANA platform, where we put them on different clusters (see
|
||||
[file:maestro-compose.yml](maestro-compose.yml)). All files regarding
|
||||
local testing can be found in [file:local/](local/).
|
||||
|
||||
1. Make sure to have the GNSS Dongle connected as a device at
|
||||
`/dev/ttyACM0`. If it has another name, change the entry in
|
||||
[local-docker-compose.yml](local-docker-compose.yml) accordingly.
|
||||
2. Run `docker compose -f local-docker-compose.yml up --build` to
|
||||
build/run all of the `*Dockerfiles`.
|
||||
3. For the current version, which is built for the demonstration, we
|
||||
need to run the `curl` command to provide `videoprobe` with the
|
||||
endpoint to which it'll send the data.
|
||||
|
||||
Usually that would be the `obu-node` container. For local testing we are
|
||||
using [file:app.py](app.py). Adjust the port accordingly in the curl
|
||||
command so it looks roughly like this:
|
||||
|
||||
``` bash
|
||||
# Another example: curl -X GET -H "Content-Type: application/json" -d "{\"node_ip\": [\"https://webhook.site/30ffd7cd-0fa5-4391-8725-c05a1bf48a75/upload/\"], \"stream_ip\": \"192.168.30.248\", \"stream_url\": \"rtmp://192.168.30.248:32731/live/test\"}" http://192.168.30.248:31234/demo/start
|
||||
curl -X GET -H "Content-Type: application/json" -d "{\"node_ip\": [\"http://192.168.0.149:8001/upload\",\"http://192.168.0.149:8002/upload\"], \"stream_ip\": \"192.168.0.149\", \"stream_url\": \"rtmp://192.168.0.149/live/test\"}" http://192.168.0.149:8000/demo/start
|
||||
```
|
||||
|
||||
Given your devices IP is `192.168.100.2`
|
||||
|
||||
1. Once running you can do either of the following:
|
||||
1. Simulate DMLOs `get_data_stats` by running the following
|
||||
command:
|
||||
`curl -X GET -H "Content-Type: application/json" -d "{\"id\": 1}" http://<IP of videoprobe>:8000/data_collection/get_data_stats`
|
||||
|
||||
## Running on 5G-IANA
|
||||
|
||||
When testing locally we are hosting the videostream provider and the
|
||||
consumer on the same device. This is not the case for the deployment on
|
||||
the 5G-IANA platform, where we put them on different clusters (see
|
||||
[file:maestro-compose.yml](maestro-compose.yml)).
|
||||
|
||||
1. Make sure OBUs are connected by running the following command on the
|
||||
MEC: `kubectl get nodes # UULM-OBU1 and UULM-OBU2 should be present`
|
||||
2. Make sure the OBUs each have a GNSS receiver connected to them. If
|
||||
there are no devices called `/dev/ttyACM0` on each OBU, change the
|
||||
entries in the
|
||||
[docker-compose.yml](docker-compose.yml)/[maestro-compose.yml](maestro-compose.yml)
|
||||
accordingly to the actual name of the GNSS receivers and redeploy
|
||||
the images. A possibly easier alternative would be to unplug the
|
||||
GNSS receiver, reboot the machine and plug it back in, if possible.
|
||||
3. Find out the IPs for the OBUs and run
|
||||
`curl -X GET -H "Content-Type: application/json" -d "{\"ip\": http://192.168.100.2:32123/upload}" http://192.168.100.2:8000/demo/start`
|
||||
on each of them. `192.168.100.2` being a placeholder for their
|
||||
respective IPs, 32123 being a placeholder for the port the
|
||||
`obu-node` container is listening on for data-uploads and port 8000
|
||||
being a placeholder for videoprobe listening on for the start
|
||||
command.
|
||||
|
||||
## Open internal Ports
|
||||
|
||||
- **1935**: RTMP of `web` providing `sender`-stream
|
||||
- **8000**: Endpoint of `videoprobe`
|
||||
|
||||
## Configurations/Environment Variables
|
||||
|
||||
- STREAM<sub>URL</sub>: The URL of a rtmp based video stream. In this
|
||||
environment it is to be `web`.
|
||||
- RUST<sub>LOG</sub>: The logging level of the network monitoring tool
|
||||
itself.
|
||||
- ROCKET<sub>CONFIG</sub>: Might as well be constant, but specifies the
|
||||
path for the configuration of the API endpoint of `videoprobe`.
|
||||
- VP<sub>TARGET</sub>: The API endpoint to upload the collected data to
|
||||
with with a `POST` request. This is variable should not be used during
|
||||
the demonstration.
|
||||
- CMD: Needed as an alternative to using the `command:` keyword, which
|
||||
is usually used to overwrite a containers entrypoint.
|
||||
- GNSS<sub>ENABLED</sub>: Used for choosing whether the videoprobe
|
||||
should be running with "dry gps". Dry GPS means that the tool will be
|
||||
running without GPS capabilities in case the user is sure that there
|
||||
is no GNSS device present or satalite connectivity can't be ensured.
|
||||
- GNSS<sub>DEV</sub>: The path of the mounted GNSS Device. Needed to
|
||||
start gpsd inside of the container. Changes to it should also be
|
||||
applied to the corresponding
|
||||
[file:local-docker-compose.yml](local-docker-compose.yml) and
|
||||
[file:docker-compose.yml](docker-compose.yml).
|
||||
Reference in New Issue
Block a user