sonata-nfv / tng-industrial-pilot Goto Github PK
View Code? Open in Web Editor NEW5GTANGO Smart Manufacturing Pilot
5GTANGO Smart Manufacturing Pilot
This issue tracks the results of the weekly pilot tests performed by UPB.
Analyze machine data on a random basis, based on result execute immediate actions.
Leverage Grafana to build dashboards with nice graphs and alerts for the EAE: #43 (comment)
Note: If we have many NS1 (vim-emu case) you will be always logged out if you switch from one Grafana browser window to another. Not a big deal, but don't be surprised.
We should have continues integration (automated testing) for this repo.
The tests should:
./pack.sh
in sdk-projects
2019-01-28 14:51:49 jenkins tango.tngsdk.package.validator:l61 ERROR Skipping validation: tng-sdk-validate not installed?
Test Cases
We assume three test cases for the SM pilot:
Input: Send 100 MQTT messages to NS1 (Probe A)
Tested: NS1 forwards MQTT
Output: Check if 100 MQTT messages are received (Probe B)
Input: Send 100 Euromap63 messages to the Samba share of NS2 (Probe C)
Tested: NS2 translates Euromap63 to MQTT
Output: Check if 100 MQTT messages are received (Probe B)
Input: Send 100 Euromap63 messages to the Samba share of NS2 (Probe C)
Tested: NS2 translates Euromap63 to MQTT, NS2 sends to NS1, NS1 forwards MQTT
Output: Check if 100 MQTT messages are received (Probe B)
FMP must be able to trigger the SP to instantiate NS2.
It is important to do this instantiation with the correct instantiation parameters, e.g., the IP address of the already running NS1 (normal) and NS1 (quarantine).
UI for control of pilot demonstration. Manage machine park layout, add/delete machines.
please ask if information is needed, might be topic for next telco
When deploying the CC processor container through Kubernetes it repeatedly crashes. We should figure out why and fix it.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
ns1-cc-broker-deployment-867484cd6b-s8f7k 1/1 Running 0 8m5s
ns1-cc-processor-deployment-5d64659ff8-b7vnt 1/1 Running 3 8m5s
ns1-eae-deployment-787c944c87-8rcp5 1/1 Running 0 8m4s
ns2-dt-deployment-6f8486884-4x7cw 1/1 Running 0 8m1s
ns2-mdc-deployment-655dfddc7b-jxz6w 1/1 Running 0 8m1s
The logs are not very useful:
tango@fgcn-tango-k8s-2:~$ kubectl logs -f ns1-cc-processor-deployment-5d64659ff8-b7vnt
CC-CDU02 (processor): Starting Azure Cloud Connector ...
Any ideas? Maybe start by adjusting the print statements to use print(..., flush=True)
to ensure output is flushed and shown in the logs for debugging?
seems like a state fetching problem
First concept design created by WEID, to be discussed with UPB on Monday
This is an intermediate step before the pilot is deployed on K8s using 5GTANGO SP, we first want to have a version that is directly deployed on K8s without 5GTANGO.
This issue captures the developments and TODOs for the first working demo we are going to show in Dublin.
Demo will involve: DigitalTwind -> MDC -> CC -> EAE all deployed on vim-emu.
Documentation: https://github.com/sonata-nfv/tng-industrial-pilot/wiki/Pilot-prototype-on-vim-emu
uplink
interface to have IP in NS1 subnetuplink
to the vlan of NS1/mosquitto.log
for now)
docker exec -it mn.vnf_cc.cdu01 mosquitto_sub -h 30.0.1.1 -p 1883 -v -t machines/+/sensors/+
/mqtt_generator.sh
)&
solves it)Provide relevant data for AR maintenance. One idea is to use data from VNF Edge Analytics Engine here.
Detect all attacks on machine network, created once per machine park
This VNF is used in several network services, specific paramter sets are needed.
seems like a state fetching issue
When doing: https://github.com/sonata-nfv/tng-industrial-pilot/wiki/Pilot-prototype-on-vim-emu
The pilot stops working after about 5 minutes.
My first impression is that something between DT and MDC breaks and thus no new messages are published to the broker. The DT and MDC applications as such seem to be still running. Samba? (but this is only a first impression!)
I would assume similar things will happen on K8s.
Need to investigate further ...
This small auxiliary component intents to solve the problem that FSMs are not reachable from the outside making it hard to trigger manual reconfigurations, e.g., from the FMP. The idea is to run this small component next to the FMP. The FMP could access it using a REST API provided by the SDMP-CC. The FSM in turn connects to the SMP-CCS and opens a gRPC server stream connection. Using the the SMP-CCS can trigger actions in the FSM whenever it wants, still the FSM needs not to be reachable from outside. The only assumption here is that the FSM can reach the SMP-CCS, which can easily be realised, e.g., by hosting the SMP-CCS in the public Internet.
Code location: tools/smp-ccs
README and documentation: here
The SMP-CC is deployed at UPB's premises and reachable from the Internet:
curl -X GET fgcn-tango-smp-ctrl.cs.upb.de:9011/api/v1/ssmstatus
{private} {public}
+------------+ +-----------------+
| | | SMP-CC |
| FMP |-----REST------->|(e.g. in Docker) |
| | | |
+------------+ +-----------------+
^ |
| (2) gRPC srv.
| stream
(1) gRPC |
req. |
| |
+ - - - - - - -|- - - - + - - - - - - - +
| v
| +-----------------+ |
| +---------------+-+
| +-+ +---------------+-+ |
+-+ SSM |
| +-----------------+ |
| |
SONATA-NFV MANO
+ - - - - - - - - - - - - - - - - - - - +
{private}
Ports (e.g. fgcn-tango-vpn.cs.upb.de):
See: https://github.com/sonata-nfv/tng-industrial-pilot/wiki/FSM-SSM-Development
configure_event
of the SSM needs to be triggered (implement SMP-CCC callback function)
quarantine_state
quarantine_state=Ture
This should now be possible through: sonata-nfv/son-emu#294
This will be needed for NetSoft'19!
Create a second Wiki page to document the execution of such a scenario.
Challenge: OVS config for uplink port
Not sure if this is really needed. But lets keep it in this issue.
Once triggered, the FSM belonging to the MSF (MDC, Suricata, Filebeat) CNF should restart the CNF and set a new value for the MQTT_BROKER_HOST
env var.
Will require adjusting the code of the FSM here: https://github.com/sonata-nfv/tng-industrial-pilot/blob/master/fsms/mdc-fsm/mdc/mdcfsm.py#L149
Belongs to use case 2: #31
Connects a machine to NS2. The machines provide an ethernet connector, exchange protocol has to be defined.
Prometheus seems to be a perfect fit for this sensor data use case at the edge.
Prometheus either pulls the metrics or needs a separated "pushgateway" to push data to it.
Design: Add a 4. CDU running the push Gateway. Let the CC processor push the metrics received on the broker to Prometheus.
:vimemu
Containersmqttexporter
Will require a bi-directional gRPC streaming connection.
The IDS matches the SMB client names to detect bad clients.
To get this working, we need to set the name of the SMB client (the one running in the IMMS/DT container) to be machine1
(that is the default we agreed for now).
We need to investigate how this can be done. Need to google a bit.
Not an issue in small deployments but becomes problem if many deployments are done.
Check if there is any busy waiting or so?
Testing with the latest version of NS2+IDS, the Kibana server never comes up and trying to access it only shows Kibana server is not ready yet
- even 10min after instantiation.
Example:
Connect and separate machine to machine park (NS1).
The FMP must be able to trigger the remote CC server to trigger/reset the quarantine status of NS2.
This will be done through the REST interface of the CC.
The FMP should also display (and maybe constantly poll) the current quarantine status from the CC.
Notices this today:
If I run 2 instances of NS2 connected to NS1, NS1 receives MQTT messages like these from both NS2 instances:
WIMMS/EM63/DATE 20190613
WIMMS/EM63/TIME 12:34:54
WIMMS/EM63/@ActSimPara1 5
WIMMS/EM63/@ActSimPara2 1.3324
WIMMS/EM63/ActCntCyc 588
WIMMS/EM63/ActCntPrt 587
This does not allow to distinguish which machine sends which message.
So it will make sense to include the source machine name (whatever it is) into the topic, like:
WIMMS/EM63/ActCntPrt/<machine_name>
or
WIMMS/EM63/<machine_name>/ActCntPrt
Using subscribe commands with different wildcards, NS1 can then easily filter by machine etc. e.g.: subscribe WIMMS/EM63/ActTimCyc/+
gets a single metric for all machines. or subscribe WIMMS/EM63/+/m1
gets all metrics for machine m1
etc. etc.
Not sure if I will have time to work on this before the NetSoft demo. Let's see.
Control instance for the management of network services and VNFs based on machine topology defined in the portal.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.