From ace8eb4ab1be468fc960f62c9dae2f10ba217989 Mon Sep 17 00:00:00 2001 From: Guilherme Werner Date: Sat, 14 Sep 2024 15:50:15 +0000 Subject: [PATCH] Initial tests and analysis --- scripts/test.sh | 4 + servers/java/run.sh | 0 src/graphs.py | 137 +++++++++++++++++++++++ trace/average_latency_comparison.png | Bin 0 -> 20692 bytes trace/average_packet_size_comparison.png | Bin 0 -> 24690 bytes trace/bedrock-60s.csv | 2 + trace/java-60s.csv | 2 + trace/tcp_packet_distribution.png | Bin 0 -> 29371 bytes trace/total_packets_comparison.png | Bin 0 -> 22017 bytes 9 files changed, 145 insertions(+) create mode 100644 scripts/test.sh mode change 100644 => 100755 servers/java/run.sh create mode 100644 src/graphs.py create mode 100644 trace/average_latency_comparison.png create mode 100644 trace/average_packet_size_comparison.png create mode 100644 trace/bedrock-60s.csv create mode 100644 trace/java-60s.csv create mode 100644 trace/tcp_packet_distribution.png create mode 100644 trace/total_packets_comparison.png diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100644 index 0000000..60da057 --- /dev/null +++ b/scripts/test.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +sudo tshark -a duration:60 -f "port 25565" -w ./trace/java-60s.pcap +sudo tshark -a duration:60 -f "port 19132" -w ./trace/bedrock-60s.pcap diff --git a/servers/java/run.sh b/servers/java/run.sh old mode 100644 new mode 100755 diff --git a/src/graphs.py b/src/graphs.py new file mode 100644 index 0000000..0f0a15c --- /dev/null +++ b/src/graphs.py @@ -0,0 +1,137 @@ +# Copyright (c) 2024 Guilherme Werner +# SPDX-License-Identifier: MIT + +import pyshark +import pandas as pd +import matplotlib.pyplot as plt + +max_packets = 10000 +trace_files = ["bedrock-60s", "java-60s"] + +metrics_dict = { + "test_name": [], + "total_packets": [], + "average_packet_size_kb": [], + "total_acks": [], + "total_syns": [], + "average_latency_ms": [] +} + +for trace_file in trace_files: + capture = pyshark.FileCapture(f"./trace/{trace_file}.pcap", keep_packets=False) + + data = [] + packet_count = 0 + + for packet in capture: + if "IP" in packet: + try: + timestamp = float(packet.sniff_timestamp) + # Tamanho do pacote em bytes + packet_size = int(packet.length) + + if "TCP" in packet: + ack_flag = int(packet.tcp.flags_ack) if hasattr(packet.tcp, "flags_ack") else 0 + syn_flag = int(packet.tcp.flags_syn) if hasattr(packet.tcp, "flags_syn") else 0 + else: + ack_flag = 0 + syn_flag = 0 + + data.append({ + "timestamp": timestamp, + "packet_size": packet_size, + "ack_flag": ack_flag, + "syn_flag": syn_flag + }) + + packet_count += 1 + + if packet_count >= max_packets: + break + except AttributeError: + continue + + df = pd.DataFrame(data) + + # Calcular a latência em segundos e converter para milissegundos + df["latency"] = df["timestamp"].diff() * 1000 + + total_packets = len(df) + average_packet_size = df["packet_size"].mean() + total_acks = df["ack_flag"].sum() + total_syns = df["syn_flag"].sum() + average_latency = df["latency"].mean() + + metrics_dict["test_name"].append(trace_file) + metrics_dict["total_packets"].append(total_packets) + metrics_dict["average_packet_size_kb"].append(average_packet_size) + metrics_dict["total_acks"].append(total_acks) + metrics_dict["total_syns"].append(total_syns) + metrics_dict["average_latency_ms"].append(round(average_latency, 2)) + + metrics_df = pd.DataFrame([{ + "total_packets": total_packets, + "average_packet_size_kb": average_packet_size, + "total_acks": total_acks, + "total_syns": total_syns, + "average_latency_ms": round(average_latency, 2) + }]) + + metrics_df.to_csv(f"./trace/{trace_file}.csv", index=False) + +metrics_df_all = pd.DataFrame(metrics_dict) + +test_labels = {"java-60s": "Java (60s)", "bedrock-60s": "Bedrock (60s)"} + +# Gráfico do total de pacotes +plt.figure(figsize=(12, 6)) +metrics_df_all.plot(kind="bar", x="test_name", y="total_packets", legend=False) +plt.title("Total de Pacotes por Teste") +plt.xlabel("Teste") +plt.ylabel("Total de Pacotes") +plt.xticks(ticks=range(len(test_labels)), labels=[test_labels[file] for file in trace_files], rotation=45) +plt.tight_layout() +plt.savefig("./trace/total_packets_comparison.png") +plt.close() + +# Gráfico do tamanho médio dos pacotes +plt.figure(figsize=(12, 6)) +metrics_df_all.plot(kind="bar", x="test_name", y="average_packet_size_kb", legend=False) +plt.title("Tamanho Médio dos Pacotes por Teste") +plt.xlabel("Teste") +plt.ylabel("Tamanho Médio dos Pacotes (kB)") +plt.xticks(ticks=range(len(test_labels)), labels=[test_labels[file] for file in trace_files], rotation=45) +plt.tight_layout() +plt.savefig("./trace/average_packet_size_comparison.png") +plt.close() + +# Gráfico da latência média +plt.figure(figsize=(12, 6)) +metrics_df_all.plot(kind="bar", x="test_name", y="average_latency_ms", legend=False) +plt.title("Latência Média por Teste") +plt.xlabel("Teste") +plt.ylabel("Latência Média (ms)") +plt.xticks(ticks=range(len(test_labels)), labels=[test_labels[file] for file in trace_files], rotation=45) +plt.tight_layout() +plt.savefig("./trace/average_latency_comparison.png") +plt.close() + +# Gráfico de Pizza para TCP - Dados vs Controle +# Filtrar apenas pacotes TCP +tcp_df = df[df["ack_flag"] > 0] + +# Calcular os pacotes de dados (não são ACKs) +data_packets = len(df) - tcp_df.shape[0] +control_packets = tcp_df.shape[0] # Inclui ACKs, SYNs, etc. + +# Proporções +sizes = [data_packets, control_packets] +labels = ['Dados', 'Controle'] + +plt.figure(figsize=(8, 8)) +plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140, colors=['#ff9999','#66b3ff']) +plt.title('Distribuição dos Pacotes TCP: Dados vs Controle') +plt.savefig("./trace/tcp_packet_distribution.png") +plt.close() + +print("Métricas e gráficos comparativos salvos.") diff --git a/trace/average_latency_comparison.png b/trace/average_latency_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..26315346594b16e66d19e19467a9c1c80d496b72 GIT binary patch literal 20692 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 literal 0 HcmV?d00001 diff --git a/trace/average_packet_size_comparison.png b/trace/average_packet_size_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..4db4b69cd6ec1b1d3c017e1a76b9c3b2ce390de9 GIT binary patch literal 24690 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 XHyN7v70luMe@aR2i0sP)y4U{)2iZ>i literal 0 HcmV?d00001 diff --git a/trace/bedrock-60s.csv b/trace/bedrock-60s.csv new file mode 100644 index 0000000..b36da6d --- /dev/null +++ b/trace/bedrock-60s.csv @@ -0,0 +1,2 @@ +total_packets,average_packet_size_kb,total_acks,total_syns,average_latency_ms +10000,1101.6974,0,0,0.99 diff --git a/trace/java-60s.csv b/trace/java-60s.csv new file mode 100644 index 0000000..c14573c --- /dev/null +++ b/trace/java-60s.csv @@ -0,0 +1,2 @@ +total_packets,average_packet_size_kb,total_acks,total_syns,average_latency_ms +10000,707.9825,9800,400,0.1 diff --git a/trace/tcp_packet_distribution.png b/trace/tcp_packet_distribution.png new file mode 100644 index 0000000000000000000000000000000000000000..972d34d62b03af7a9d0dc3fbf395758f5c5d3705 GIT binary patch literal 29371 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
y>^_%ri6h5` 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 PJ;+$!d>?I(%jN$87JEH7 literal 0 HcmV?d00001 diff --git a/trace/total_packets_comparison.png b/trace/total_packets_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..b0454ee5717d9d6e427f399920ab33e0da234510 GIT binary patch literal 22017 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 K828J`U;hvOte?~X literal 0 HcmV?d00001