electrocucaracha / cFW-demo

Cloud-Native Firewall Virtual Network Function
3 stars 4 forks source link

The darkstat graphs doesn't show anything #2

Closed mahsa-frj closed 6 months ago

mahsa-frj commented 2 years ago

Hi Victor Morales, Thanks for your efforts to provide this use case. We've run the vFW_CNF_cds demo on ONAP. Given that the darkstat graphs on that demo are empty, we decided to run this demo. We've run cfw-demo. All containers are running and up and every interfaces in vppctl console are up but unfortunately the graphs on darkstat are empty too. We couldn't find what the problem is. Could you please help us to resolve this issue?

Thanks in advanced

electrocucaracha commented 2 years ago

Hi @mahsa-frj

All depends on the demo that you're running. For vFW-demo, I'd check the status of the sink service

$ vagrant ssh sink -- systemctl status sink.service
● vsink.service - LSB: Start daemon at boot time
   Loaded: loaded (/etc/init.d/vsink.sh; generated)
   Active: active (exited) since Tue 2022-08-30 18:48:37 UTC; 12min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2889 ExecStart=/etc/init.d/vsink.sh start (code=exited, status=0/SUCCESS)

Aug 30 18:48:37 sink systemd[1]: Starting LSB: Start daemon at boot time...
Aug 30 18:48:37 sink vsink.sh[2889]: Starting vsink.sh
Aug 30 18:48:37 sink sudo[2891]:     root : TTY=unknown ; PWD=/opt ; USER=root ; COMMAND=./v_sink_init.sh
Aug 30 18:48:37 sink sudo[2891]: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 30 18:48:37 sink systemd[1]: Started LSB: Start daemon at boot time.
Aug 30 18:48:37 sink sudo[2891]: pam_unix(sudo:session): session closed for user root

and the output of the curl command

$ curl 192.168.20.250:667
<!DOCTYPE html>
<html>
<head>
<title>Graphs (darkstat eth1)</title>
<meta name="generator" content="darkstat 3.0.719">
<meta name="robots" content="noindex, noarchive">
<link rel="stylesheet" href="./style.css" type="text/css">
<script src="./graph.js" type="text/javascript"></script>
</head>
<body>
<div class="menu">
<ul class="menu"><li class="label">darkstat 3.0.719</li><li><a href="./">graphs</a></li><li><a href="./hosts/">hosts</a></li><li><a href="https://unix4lyfe.org/darkstat/">homepage</a></li></ul>
</div>
<div class="content">
<h2 class="pageheader">Graphs</h2>
<p>
<b>Measuring for</b> <span id="rf">15 mins, 6 secs</span><b>, since</b> 2022-08-30 18:48:36 UTC+0000<b>.</b><br>
<b>Seen</b> <span id="tb">3,440</span> <b>bytes, in</b> <span id="tp">27</span> <b>packets.</b> (<span id="pc">489</span> <b>captured,</b> <span id="pd">0</span> <b>dropped)</b><br>
</p>
<div id="graphs">
Graphs require JavaScript.
<script type="text/javascript">
//<![CDATA[
var graph_width = 320;
var graph_height = 200;
var bar_gap = 1;
var graphs_uri = "graphs.xml";
var graphs = [
 { id:"g0", name:"seconds", title:"last 60 seconds", bar_secs:1 },
 { id:"g1", name:"minutes", title:"last 60 minutes", bar_secs:60 },
 { id:"g2", name:"hours", title:"last 24 hours", bar_secs:3600 },
 { id:"g3", name:"days", title:"last 31 days", bar_secs:86400 }
];
window.onload = graphs_init;
//]]>
</script>
</div>
</div>
</body>
</html>

Make sure that darkstat is pointing to the right interface.

Don't forget to verify the status of the other services.

$ vagrant ssh firewall -- systemctl status firewall.service
● vfirewall.service - LSB: Start daemon at boot time
   Loaded: loaded (/etc/init.d/vfirewall.sh; generated)
   Active: active (running) since Tue 2022-08-30 18:50:10 UTC; 16min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 11144 ExecStart=/etc/init.d/vfirewall.sh start (code=exited, status=0/SUCCESS)
    Tasks: 34 (limit: 4915)
   CGroup: /system.slice/vfirewall.service
           ├─11281 /bin/sh - /opt/honeycomb/sample-distribution-1.6.0/honeycomb
           ├─11284 java -Xms256m -Xmx256m -jar /opt/honeycomb/sample-distribution-1.6.0/sample-distribution-1.6.0.jar
           ├─11297 /bin/bash ./go-client.sh
           └─11300 ./vpp_measurement_reporter 10.0.4.1 8081 eth1

Aug 30 19:06:50 firewall EVEL[11300]: Enter evel_batch_add_event {
Aug 30 19:06:50 firewall EVEL[11300]: | Adding Batch event
Aug 30 19:06:50 firewall EVEL[11300]: Exit evel_batch_add_event }
Aug 30 19:06:50 firewall EVEL[11300]: Enter evel_post_event {
Aug 30 19:06:50 firewall EVEL[11300]: | RBW: Ring Buffer Write message at 0x5596b07ad520
Aug 30 19:06:50 firewall EVEL[11300]: | RBW: got lock. NR=1 NW=98 SZ=100
Aug 30 19:06:50 firewall EVEL[11300]: | RBW: 97 items in buffer
Aug 30 19:06:50 firewall EVEL[11300]: | RBW: next write location is 99
Aug 30 19:06:50 firewall EVEL[11300]: | RBW: released lock
Aug 30 19:06:50 firewall EVEL[11300]: Exit evel_post_event }
$ vagrant ssh packetgen -- systemctl status packetgen.service
● vpacketgen.service - LSB: Start daemon at boot time
   Loaded: loaded (/etc/init.d/vpacketgen.sh; generated)
   Active: active (running) since Tue 2022-08-30 18:49:47 UTC; 18min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 6907 ExecStart=/etc/init.d/vpacketgen.sh start (code=exited, status=0/SUCCESS)
    Tasks: 34 (limit: 4915)
   CGroup: /system.slice/vpacketgen.service
           ├─7014 /bin/sh - /opt/honeycomb/honeycomb
           ├─7017 java -Xms256m -Xmx256m -jar /opt/honeycomb/sample-distribution-1.6.0.jar
           ├─7053 /bin/bash ./run_traffic_fw_demo.sh
           └─7119 sleep 300

Aug 30 18:49:47 packetgen systemd[1]: Starting LSB: Start daemon at boot time...
Aug 30 18:49:47 packetgen vpacketgen.sh[6907]: Starting vpacketgen.sh
Aug 30 18:49:47 packetgen sudo[6909]:     root : TTY=unknown ; PWD=/opt ; USER=root ; COMMAND=./v_packetgen_init.sh
Aug 30 18:49:47 packetgen sudo[6909]: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 30 18:49:47 packetgen systemd[1]: Started LSB: Start daemon at boot time.

For this project, I have some issues to provision process, apparently it's using the management network which eventually causes problems to do ssh. I'm still figuring out possible solutions.

electrocucaracha commented 2 years ago

@mahsa-frj I double-checked the scripts used by the containers as well as I updated them (BTW, they need some fixes and improvements in upstream). Apparently, the packet-generator has some issues during runtime. I'm still investigating why vppctl tool can read and execute the file

mahsa-frj commented 2 years ago

Hi @electrocucaracha Thanks for your explanation in details. We've run the vFW-demo and everything is OK. Packets are steering properly from packetgen VM to sink VM. We are investigating cFW-demo too. Thanks

mahsanaru commented 2 years ago

Hi @electrocucaracha ,

Regarding the issue you mentioned, we resolved it when the script was moved to /opt/pg_streams/ and it was executed with full path address:

vppctl exec /opt/pg_streams/stream_fw_udp

But even after the script is executed the graph is empty. It seems the parts where "vppctl tap connect " command is run fail as well because vppctl doesn't understand the tap command.

electrocucaracha commented 2 years ago

Hi @electrocucaracha ,

Regarding the issue you mentioned, we resolved it when the script was moved to /opt/pg_streams/ and it was executed with full path address:

vppctl exec /opt/pg_streams/stream_fw_udp

Ok, I can't change the code to use absolute paths and see if that fixes the problem.

But even after the script is executed the graph is empty. It seems the parts where "vppctl tap connect " command is run fail as well because vppctl doesn't understand the tap command.

Regarding those errors, I noticed that similar errors are displayed in the vpacketgen service, but in that case the graphs are populated. That's why I tried to update the instructions with what ONAP has.

mahsanaru commented 2 years ago

Thank you for your answer. I have to emphasis that the stream_fw_udp script only worked in '/opt/pg_streams/' directory for me. I tested other directories as well but it didn't work (I don't understand why).

Also, there are some minor issues in the code. For example, the build process starts with packetgen that has dependency on the vpp. So, the build fails. Also, the version of libcurl4-gnutls-dev package you used in packetgen and firewall no longer exists in the repository. The same goes for ca-certificate package in the vpp.

electrocucaracha commented 2 years ago

Got it, I've submitted the patches for those issues. BTW, the code contains some CI tasks which cover some use cases, if you find any other issue please send me the PR to fix it.