Skip to content

Conversation

@CarlosBeltranQ
Copy link
Collaborator

@CarlosBeltranQ CarlosBeltranQ commented Nov 13, 2025

Added SYN Flooding to SST Testbed

When the user launches the SYN Flood attack using the DoSSYN keyword, client will call a function in send_syn.cpp called send_syn_packets().

send_syn_packets() will create the headers and socket necessary to send syn packets to Auth.

Metric Logging

Added the ability to track metrics for the DoS and DDoS attacks by adding an optional -metrics flag when running ./client.

The metric log files are put into a file in the SST_Testbed/metric_logs/ directory.

These files are CSV files and the values they hold are the:

  1. Experiment ID
  2. Start Timestamp
  3. End Timestamp
  4. Successes
  5. Failures
  6. Average Duration
  7. Minimum Duration
  8. Maximum Duration
  9. Attempt Rate
  10. Success Rate

For more details about each of these values, please visit SST_Testbed/lib/README.md.

Plot Generators

A plot.py file was added in SST_Testbed/plot_generators/ that plots given metric files. These plots will extract the latency and throughput information from the metric log files and plot them on graphs.

The graphs will have either latency, in milliseconds, or throughput, in attempts per second, plotted on the y-axis and the number of malicious clients plotted on the x-axis.

latency is the average duration of each operation during an attack, in milliseconds.

throughput is the number of attempted operations during an attack, per second.

CarlosBeltranQ and others added 29 commits October 13, 2025 16:13
…tion send_one_syn(). Also created send_syn.hpp
Copy link
Collaborator Author

@CarlosBeltranQ CarlosBeltranQ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added SYN Flooding capabilities to Scenario. Plus, Metric Logging for all the DDoS attack types and Python files that plot given metric files.

}
total_read += bytes_read;
}

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Double check here.

@hokeun hokeun marked this pull request as ready for review December 22, 2025 20:04
Comment on lines 19 to 21
using namespace std::chrono;
return duration_cast<microseconds>(system_clock::now().time_since_epoch())
.count();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
using namespace std::chrono;
return duration_cast<microseconds>(system_clock::now().time_since_epoch())
.count();
return duration_cast<microseconds>(std::chrono::system_clock::now().time_since_epoch())
.count();

#include <iomanip>
#include <mutex>

using namespace std;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest removing using namespace std; and always explicitly using std::blah.

}

void metrics_end_row_and_write(MetricsRow& r) {
using namespace std::chrono;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto here for removing using namespace std::chrono;

2. Run `mkdir build && cd build`

3. Run `cmake ..`.
3. Run `cmake ..`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add award winning on top of readme. @CarlosBeltranQ

@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
1 Security Hotspot

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants