diff --git a/.gitignore b/.gitignore index c00bba9f..ef552965 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,7 @@ # Traces traces/* + +*.DS_Store +*.idea/ +*.vscode/* \ No newline at end of file diff --git a/pcap_analysis/.dockerignore b/pcap_analysis/.dockerignore new file mode 100644 index 00000000..e0cc78f0 --- /dev/null +++ b/pcap_analysis/.dockerignore @@ -0,0 +1,27 @@ +**/__pycache__ +**/.venv +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/bin +**/charts +**/docker-compose* +**/compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md diff --git a/pcap_analysis/Dockerfile b/pcap_analysis/Dockerfile new file mode 100644 index 00000000..61e89f90 --- /dev/null +++ b/pcap_analysis/Dockerfile @@ -0,0 +1,23 @@ +# For more information, please refer to https://aka.ms/vscode-docker-python +FROM python:3.12-slim + +# Keeps Python from generating .pyc files in the container +ENV PYTHONDONTWRITEBYTECODE=1 + +# Turns off buffering for easier container logging +ENV PYTHONUNBUFFERED=1 + +# Install pip requirements +COPY requirements.txt . +RUN python -m pip install -r requirements.txt + +WORKDIR /app +COPY . /app + +# Creates a non-root user with an explicit UID and adds permission to access the /app folder +# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers +RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app +USER appuser + +# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug +CMD ["python", "process_pcap.py"] diff --git a/pcap_analysis/README b/pcap_analysis/README new file mode 100644 index 00000000..b1a76c4f --- /dev/null +++ b/pcap_analysis/README @@ -0,0 +1,5 @@ +To run, + +docker build -t pcap . && docker run -it --rm -v /$(pwd)/..:/host pcap:latest + +if path error, put in absolute route to the working directory in place of $(pwd) with spaces escaped with \ diff --git a/pcap_analysis/docker-compose.debug.yml b/pcap_analysis/docker-compose.debug.yml new file mode 100644 index 00000000..7d9a9bad --- /dev/null +++ b/pcap_analysis/docker-compose.debug.yml @@ -0,0 +1,11 @@ +version: '3.4' + +services: + pcapanalysis: + image: pcapanalysis + build: + context: . + dockerfile: ./Dockerfile + command: ["sh", "-c", "pip install debugpy -t /tmp && python /tmp/debugpy --wait-for-client --listen 0.0.0.0:5678 process_pcap.py "] + ports: + - 5678:5678 diff --git a/pcap_analysis/docker-compose.yml b/pcap_analysis/docker-compose.yml new file mode 100644 index 00000000..4e984ec7 --- /dev/null +++ b/pcap_analysis/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3.4' + +services: + pcapanalysis: + image: pcapanalysis + build: + context: . + dockerfile: ./Dockerfile diff --git a/pcap_analysis/plots/bandwidth_alternate-baseline_no_udp-frr_no_udp.png b/pcap_analysis/plots/bandwidth_alternate-baseline_no_udp-frr_no_udp.png new file mode 100644 index 00000000..0e81b592 Binary files /dev/null and b/pcap_analysis/plots/bandwidth_alternate-baseline_no_udp-frr_no_udp.png differ diff --git a/pcap_analysis/plots/bandwidth_alternate-baseline_udp-frr.png b/pcap_analysis/plots/bandwidth_alternate-baseline_udp-frr.png new file mode 100644 index 00000000..4b376956 Binary files /dev/null and b/pcap_analysis/plots/bandwidth_alternate-baseline_udp-frr.png differ diff --git a/pcap_analysis/plots/bandwidth_primary-baseline_no_udp-frr_no_udp.png b/pcap_analysis/plots/bandwidth_primary-baseline_no_udp-frr_no_udp.png new file mode 100644 index 00000000..91e95229 Binary files /dev/null and b/pcap_analysis/plots/bandwidth_primary-baseline_no_udp-frr_no_udp.png differ diff --git a/pcap_analysis/plots/bandwidth_primary-baseline_udp-frr.png b/pcap_analysis/plots/bandwidth_primary-baseline_udp-frr.png new file mode 100644 index 00000000..0df2e3cc Binary files /dev/null and b/pcap_analysis/plots/bandwidth_primary-baseline_udp-frr.png differ diff --git a/pcap_analysis/plots/delay_all-baseline_no_udp-frr_no_udp.png b/pcap_analysis/plots/delay_all-baseline_no_udp-frr_no_udp.png new file mode 100644 index 00000000..8e5a0185 Binary files /dev/null and b/pcap_analysis/plots/delay_all-baseline_no_udp-frr_no_udp.png differ diff --git a/pcap_analysis/plots/delay_all-baseline_udp-frr.png b/pcap_analysis/plots/delay_all-baseline_udp-frr.png new file mode 100644 index 00000000..fa761785 Binary files /dev/null and b/pcap_analysis/plots/delay_all-baseline_udp-frr.png differ diff --git a/pcap_analysis/plots/delay_alternate-baseline_no_udp-frr_no_udp.png b/pcap_analysis/plots/delay_alternate-baseline_no_udp-frr_no_udp.png new file mode 100644 index 00000000..1259fc22 Binary files /dev/null and b/pcap_analysis/plots/delay_alternate-baseline_no_udp-frr_no_udp.png differ diff --git a/pcap_analysis/plots/delay_alternate-baseline_udp-frr.png b/pcap_analysis/plots/delay_alternate-baseline_udp-frr.png new file mode 100644 index 00000000..71c3815b Binary files /dev/null and b/pcap_analysis/plots/delay_alternate-baseline_udp-frr.png differ diff --git a/pcap_analysis/plots/delay_primary-baseline_no_udp-frr_no_udp.png b/pcap_analysis/plots/delay_primary-baseline_no_udp-frr_no_udp.png new file mode 100644 index 00000000..eaf54deb Binary files /dev/null and b/pcap_analysis/plots/delay_primary-baseline_no_udp-frr_no_udp.png differ diff --git a/pcap_analysis/plots/delay_primary-baseline_udp-frr.png b/pcap_analysis/plots/delay_primary-baseline_udp-frr.png new file mode 100644 index 00000000..ace8a6e3 Binary files /dev/null and b/pcap_analysis/plots/delay_primary-baseline_udp-frr.png differ diff --git a/pcap_analysis/process_pcap.py b/pcap_analysis/process_pcap.py new file mode 100644 index 00000000..190ba422 --- /dev/null +++ b/pcap_analysis/process_pcap.py @@ -0,0 +1,231 @@ +import base64 +import os +import sys +from scapy.all import * +import matplotlib.pyplot as plt + + +def read_pcap(filename): + packets = [] + data = scapy.utils.PcapReader(filename) + for packet in data: + packets.append(packet) + # print(packet.getlayer('TCP').options) + return packets + + +def get_IP(packets): + sender_IP = packets[0].getlayer('IP').src + receiver_IP = packets[0].getlayer('IP').dst + return sender_IP, receiver_IP + + +# def packet_transfer_time(sender_packets, receiver_packets): +# timestamp = [] +# completion_time = [] +# stream_direction = [] +# +# for sender_packet in sender_packets: +# for receiver_packet in receiver_packets: +# if (sender_packet.getlayer('TCP').seq == receiver_packet.getlayer('TCP').seq) and ( +# sender_packet.getlayer('TCP').ack == receiver_packet.getlayer('TCP').ack) and ( +# sender_packet.getlayer('IP').src == receiver_packet.getlayer('IP').src) and ( +# sender_packet.getlayer('IP').dst == receiver_packet.getlayer('IP').dst) and ( +# sender_packet.getlayer('TCP').window == receiver_packet.getlayer('TCP').window) and ( +# sender_packet.getlayer('TCP').options == receiver_packet.getlayer('TCP').options) and ( +# sender_packet.getlayer('TCP').options[0][1] == receiver_packet.getlayer('TCP').options[0][1]): +# if sender_packet.time > receiver_packet.time: +# completion_time.append(sender_packet.time - receiver_packet.time) +# stream_direction.append('down') +# else: +# completion_time.append(receiver_packet.time - sender_packet.time) +# stream_direction.append('up') +# timestamp.append(sender_packet.time) +# break +# +# return timestamp, completion_time, stream_direction + + +def flow_completion_time(packets): + TCP_FIN = 0x01 + TCP_ACK = 0x10 + # the hex code for flags in TCP is as above + + # print(packets[0][TCP].flags) + for pkt in packets: + if TCP in pkt: + if pkt[TCP].flags & TCP_FIN and pkt[TCP].flags & TCP_ACK: + return pkt.time + return None + + +# def save_plot(timestamp, completion_time, stream_direction): +# os.makedirs("/host/pcap_analysis/plots", exist_ok=True) +# plt.plot(timestamp, completion_time, label=stream_direction, marker='o') +# plt.xlabel("time stamp of the sender of the packet") +# plt.ylabel("transfer completion time") +# +# plt.savefig("/host/pcap_analysis/plots/completion_time-timestamp.png") + + +def record_flow_completion_time(source_directory, result_directory, mode): + variables = os.listdir(source_directory) + results = [] + for variable in variables: + if os.path.isdir(os.path.join(source_directory, variable)): + queue_sizes = os.listdir(source_directory + variable) + for queue_size in queue_sizes: + if os.path.isdir(os.path.join(source_directory + variable + "/" + queue_size)) and queue_size != '99': + senderPackets = read_pcap( + source_directory + variable + "/" + queue_size + "/" + "baseline-no-udp/-TrafficSender-1.pcap") + fc_time = flow_completion_time(senderPackets) + results.append(("baseline_no_udp", queue_size, fc_time, variable)) + + senderPackets = read_pcap( + source_directory + variable + "/" + queue_size + "/" + "baseline-udp/-TrafficSender-1.pcap") + fc_time = flow_completion_time(senderPackets) + results.append(("baseline_udp", queue_size, fc_time, variable)) + + senderPackets = read_pcap( + source_directory + variable + "/" + queue_size + "/" + "frr-no-udp/-TrafficSender-1.pcap") + fc_time = flow_completion_time(senderPackets) + results.append(("frr_no_udp", queue_size, fc_time, variable)) + + senderPackets = read_pcap( + source_directory + variable + "/" + queue_size + "/" + "frr/-TrafficSender-1.pcap") + fc_time = flow_completion_time(senderPackets) + results.append(("frr", queue_size, fc_time, variable)) + + filepath = os.path.join(result_directory, f"{mode}.txt") + with open(filepath, 'w') as f: + for result in results: + f.write(str(result) + "\n") + + return results + + +def plot_flow_completion_time(results, mode, cases): + sorted_results = sorted(results, + key=lambda x: int(x[3].split('Kbps')[0]) if 'Kbps' in x[3] else int(x[3].split('ms')[0])) + figure, axes = plt.subplots(figsize=(10, 6)) + + marker_styles = {'baseline': {'marker': 'o', 'colour': 'black'}, + '20': {'marker': 's', 'colour': 'blue'}, + '40': {'marker': '^', 'colour': 'green'}, + '60': {'marker': 'v', 'colour': 'purple'}, + '80': {'marker': 'x', 'colour': 'brown'}, + '99': {'marker': 'd', 'colour': 'red'} + } + + legend_handles = {} + legend_labels = {} + + points_dict = {} + + for result in sorted_results: + if result is not None and result[2] is not None: + if cases[0] == result[0]: + marker_style = marker_styles.get('baseline') + axes.plot(result[3], result[2], label=result[1], marker=marker_style['marker'], + color=marker_style['colour'], linestyle='-') + + if 'baseline' not in legend_handles: + legend_handles['baseline'], = axes.plot([], [], marker=marker_style['marker'], + color=marker_style['colour'], linestyle='-') + legend_labels['baseline'] = 'baseline' + + key = (result[0], result[1]) + if key not in points_dict: + points_dict[key] = [] + points_dict[key].append(result) + + if cases[1] == result[0]: + marker_style = marker_styles.get(result[1]) + axes.plot(result[3], result[2], label=result[1], marker=marker_style['marker'], + color=marker_style['colour'], linestyle='-') + + if result[1] not in legend_handles: + legend_handles[result[1]], = axes.plot([], [], marker=marker_style['marker'], + color=marker_style['colour'], linestyle='-') + legend_labels[result[1]] = result[1] + + key = (result[0], result[1]) + if key not in points_dict: + points_dict[key] = [] + points_dict[key].append(result) + + for key, points in points_dict.items(): + for i in range(1, len(points)): + if points[i][0] == cases[0]: + axes.plot([points[i - 1][3], points[i][3]], [points[i - 1][2], points[i][2]], + color=marker_styles['baseline']['colour'], linestyle='-') + else: + axes.plot([points[i - 1][3], points[i][3]], [points[i - 1][2], points[i][2]], + color=marker_styles[points[i][1]]['colour'], linestyle='-') + + axes.set_xlabel(mode) + axes.set_ylabel("flow completion time in seconds") + + axes.set_title(f"flow completion for {mode}, {cases[0]} and {cases[1]}") + + handles = [legend_handles[key] for key in sorted(legend_handles.keys())] + labels = [legend_labels[key] for key in sorted(legend_handles.keys())] + figure.legend(handles, labels, loc='upper left', fontsize='large', title='Legend') + + figure.subplots_adjust(left=0.2) + # figure.tight_layout() + + figure.savefig(f"/host/pcap_analysis/plots/{mode}-{cases[0]}-{cases[1]}.png", dpi=300) + + +if __name__ == '__main__': + os.makedirs("/host/pcap_analysis/results", exist_ok=True) + os.makedirs("/host/pcap_analysis/plots", exist_ok=True) + + bandwidth_primary_results = record_flow_completion_time("/host/experiments/bandwidth-primary/", + "/host/pcap_analysis/results", "bandwidth_primary") + plot_flow_completion_time(bandwidth_primary_results, "bandwidth_primary", ['baseline_no_udp', 'frr_no_udp']) + # no udp + plot_flow_completion_time(bandwidth_primary_results, "bandwidth_primary", ['baseline_udp', 'frr']) + # with udp + + bandwidth_alternate_results = record_flow_completion_time("/host/experiments/bandwidth-alternate/", + "/host/pcap_analysis/results", "bandwidth_alternate") + plot_flow_completion_time(bandwidth_alternate_results, "bandwidth_alternate", ['baseline_no_udp', 'frr_no_udp']) + plot_flow_completion_time(bandwidth_alternate_results, "bandwidth_alternate", ['baseline_udp', 'frr']) + + delay_all_results = record_flow_completion_time("/host/experiments/delay-all/", + "/host/pcap_analysis/results", "delay_all") + plot_flow_completion_time(delay_all_results, "delay_all", ['baseline_no_udp', 'frr_no_udp']) + plot_flow_completion_time(delay_all_results, "delay_all", ['baseline_udp', 'frr']) + + delay_primary_results = record_flow_completion_time("/host/experiments/delay-primary/", + "/host/pcap_analysis/results", "delay_primary") + plot_flow_completion_time(delay_primary_results, "delay_primary", ['baseline_no_udp', 'frr_no_udp']) + plot_flow_completion_time(delay_primary_results, "delay_primary", ['baseline_udp', 'frr']) + + delay_alternate_results = record_flow_completion_time("/host/experiments/delay-alternate/", + "/host/pcap_analysis/results", "delay_alternate") + plot_flow_completion_time(delay_alternate_results, "delay_alternate", ['baseline_no_udp', 'frr_no_udp']) + plot_flow_completion_time(delay_alternate_results, "delay_alternate", ['baseline_udp', 'frr']) + + # results = [] + # + # for file in files: + # if file.endswith(".pcap"): + # senderPackets = read_pcap("traces/" + file) + # senderIP, receiverIP = get_IP(senderPackets) + # + # # timestamp, completion_time, stream_direction = packet_transfer_time(sender_packets, receiver_packets) + # + # fc_time = flow_completion_time(senderPackets) + # result = file + ":" + str(fc_time) + "\n" + # print(result) + # results.append(result) + # # save_plot(timestamp, completion_time, stream_direction) + # + # os.makedirs("/host/pcap_analysis/results", exist_ok=True) + # + # with open("/host/pcap_analysis/results/results.txt", "w") as f: + # for result in results: + # f.write(result) diff --git a/pcap_analysis/requirements.txt b/pcap_analysis/requirements.txt new file mode 100644 index 00000000..5044e1fa --- /dev/null +++ b/pcap_analysis/requirements.txt @@ -0,0 +1,4 @@ +# To ensure app dependencies are ported from your virtual environment/host machine into your container, run 'pip freeze > requirements.txt' in the terminal to overwrite this file + +scapy +matplotlib \ No newline at end of file diff --git a/pcap_analysis/results/bandwidth_alternate.txt b/pcap_analysis/results/bandwidth_alternate.txt new file mode 100644 index 00000000..0d398b33 --- /dev/null +++ b/pcap_analysis/results/bandwidth_alternate.txt @@ -0,0 +1,80 @@ +('baseline_no_udp', '60', Decimal('6.390986'), '800Kbps') +('baseline_udp', '60', Decimal('8.900453'), '800Kbps') +('frr_no_udp', '60', Decimal('3.233893'), '800Kbps') +('frr', '60', Decimal('3.636093'), '800Kbps') +('baseline_no_udp', '20', Decimal('6.390986'), '800Kbps') +('baseline_udp', '20', Decimal('8.900453'), '800Kbps') +('frr_no_udp', '20', Decimal('2.946426'), '800Kbps') +('frr', '20', Decimal('3.501319'), '800Kbps') +('baseline_no_udp', '80', Decimal('6.390986'), '800Kbps') +('baseline_udp', '80', Decimal('8.900453'), '800Kbps') +('frr_no_udp', '80', Decimal('3.262639'), '800Kbps') +('frr', '80', Decimal('4.251466'), '800Kbps') +('baseline_no_udp', '40', Decimal('6.390986'), '800Kbps') +('baseline_udp', '40', Decimal('8.900453'), '800Kbps') +('frr_no_udp', '40', Decimal('3.018293'), '800Kbps') +('frr', '40', Decimal('3.306693'), '800Kbps') +('baseline_no_udp', '60', Decimal('6.390986'), '1000Kbps') +('baseline_udp', '60', Decimal('8.900453'), '1000Kbps') +('frr_no_udp', '60', Decimal('3.047039'), '1000Kbps') +('frr', '60', Decimal('4.745221'), '1000Kbps') +('baseline_no_udp', '20', Decimal('6.390986'), '1000Kbps') +('baseline_udp', '20', Decimal('8.900453'), '1000Kbps') +('frr_no_udp', '20', Decimal('2.817066'), '1000Kbps') +('frr', '20', Decimal('5.015125'), '1000Kbps') +('baseline_no_udp', '80', Decimal('6.390986'), '1000Kbps') +('baseline_udp', '80', Decimal('8.900453'), '1000Kbps') +('frr_no_udp', '80', Decimal('3.104533'), '1000Kbps') +('frr', '80', Decimal('5.043573'), '1000Kbps') +('baseline_no_udp', '40', Decimal('6.390986'), '1000Kbps') +('baseline_udp', '40', Decimal('8.900453'), '1000Kbps') +('frr_no_udp', '40', Decimal('2.903306'), '1000Kbps') +('frr', '40', Decimal('4.245994'), '1000Kbps') +('baseline_no_udp', '60', Decimal('6.390986'), '200Kbps') +('baseline_udp', '60', Decimal('8.900453'), '200Kbps') +('frr_no_udp', '60', Decimal('3.751333'), '200Kbps') +('frr', '60', Decimal('6.023146'), '200Kbps') +('baseline_no_udp', '20', Decimal('6.390986'), '200Kbps') +('baseline_udp', '20', Decimal('8.900453'), '200Kbps') +('frr_no_udp', '20', Decimal('3.666266'), '200Kbps') +('frr', '20', Decimal('5.896239'), '200Kbps') +('baseline_no_udp', '80', Decimal('6.390986'), '200Kbps') +('baseline_udp', '80', Decimal('8.900453'), '200Kbps') +('frr_no_udp', '80', Decimal('3.780079'), '200Kbps') +('frr', '80', Decimal('6.534879'), '200Kbps') +('baseline_no_udp', '40', Decimal('6.390986'), '200Kbps') +('baseline_udp', '40', Decimal('8.900453'), '200Kbps') +('frr_no_udp', '40', Decimal('6.108559'), '200Kbps') +('frr', '40', Decimal('7.952719'), '200Kbps') +('baseline_no_udp', '60', Decimal('6.390986'), '600Kbps') +('baseline_udp', '60', Decimal('8.900453'), '600Kbps') +('frr_no_udp', '60', Decimal('3.236239'), '600Kbps') +('frr', '60', Decimal('5.426933'), '600Kbps') +('baseline_no_udp', '20', Decimal('6.390986'), '600Kbps') +('baseline_udp', '20', Decimal('8.900453'), '600Kbps') +('frr_no_udp', '20', Decimal('2.948773'), '600Kbps') +('frr', '20', Decimal('3.091626'), '600Kbps') +('baseline_no_udp', '80', Decimal('6.390986'), '600Kbps') +('baseline_udp', '80', Decimal('8.900453'), '600Kbps') +('frr_no_udp', '80', Decimal('3.263813'), '600Kbps') +('frr', '80', Decimal('4.438213'), '600Kbps') +('baseline_no_udp', '40', Decimal('6.390986'), '600Kbps') +('baseline_udp', '40', Decimal('8.900453'), '600Kbps') +('frr_no_udp', '40', Decimal('3.022399'), '600Kbps') +('frr', '40', Decimal('4.931786'), '600Kbps') +('baseline_no_udp', '60', Decimal('6.390986'), '400Kbps') +('baseline_udp', '60', Decimal('8.900453'), '400Kbps') +('frr_no_udp', '60', Decimal('2.882919'), '400Kbps') +('frr', '60', Decimal('4.140639'), '400Kbps') +('baseline_no_udp', '20', Decimal('6.390986'), '400Kbps') +('baseline_udp', '20', Decimal('8.900453'), '400Kbps') +('frr_no_udp', '20', Decimal('3.076373'), '400Kbps') +('frr', '20', Decimal('4.464826'), '400Kbps') +('baseline_no_udp', '80', Decimal('6.390986'), '400Kbps') +('baseline_udp', '80', Decimal('8.900453'), '400Kbps') +('frr_no_udp', '80', Decimal('2.963146'), '400Kbps') +('frr', '80', Decimal('4.420373'), '400Kbps') +('baseline_no_udp', '40', Decimal('6.390986'), '400Kbps') +('baseline_udp', '40', Decimal('8.900453'), '400Kbps') +('frr_no_udp', '40', Decimal('3.075786'), '400Kbps') +('frr', '40', Decimal('5.853919'), '400Kbps') diff --git a/pcap_analysis/results/bandwidth_primary.txt b/pcap_analysis/results/bandwidth_primary.txt new file mode 100644 index 00000000..e4b87301 --- /dev/null +++ b/pcap_analysis/results/bandwidth_primary.txt @@ -0,0 +1,48 @@ +('baseline_no_udp', '60', Decimal('6.390986'), '150Kbps') +('baseline_udp', '60', Decimal('8.900453'), '150Kbps') +('frr_no_udp', '60', Decimal('3.236239'), '150Kbps') +('frr', '60', Decimal('5.426933'), '150Kbps') +('baseline_no_udp', '20', Decimal('6.390986'), '150Kbps') +('baseline_udp', '20', Decimal('8.900453'), '150Kbps') +('frr_no_udp', '20', Decimal('2.948773'), '150Kbps') +('frr', '20', Decimal('3.091626'), '150Kbps') +('baseline_no_udp', '80', Decimal('6.390986'), '150Kbps') +('baseline_udp', '80', Decimal('8.900453'), '150Kbps') +('frr_no_udp', '80', Decimal('3.263813'), '150Kbps') +('frr', '80', Decimal('4.438213'), '150Kbps') +('baseline_no_udp', '40', Decimal('6.390986'), '150Kbps') +('baseline_udp', '40', Decimal('8.900453'), '150Kbps') +('frr_no_udp', '40', Decimal('3.022399'), '150Kbps') +('frr', '40', Decimal('4.931786'), '150Kbps') +('baseline_no_udp', '60', Decimal('2.343226'), '300Kbps') +('baseline_udp', '60', Decimal('5.846693'), '300Kbps') +('frr_no_udp', '60', Decimal('2.573199'), '300Kbps') +('frr', '60', Decimal('2.815066'), '300Kbps') +('baseline_no_udp', '20', Decimal('2.343226'), '300Kbps') +('baseline_udp', '20', Decimal('5.846693'), '300Kbps') +('frr_no_udp', '20', Decimal('1.897653'), '300Kbps') +('frr', '20', Decimal('1.947653'), '300Kbps') +('baseline_no_udp', '80', Decimal('2.343226'), '300Kbps') +('baseline_udp', '80', Decimal('5.846693'), '300Kbps') +('frr_no_udp', '80', Decimal('3.004400'), '300Kbps') +('frr', '80', Decimal('2.588719'), '300Kbps') +('baseline_no_udp', '40', Decimal('2.343226'), '300Kbps') +('baseline_udp', '40', Decimal('5.846693'), '300Kbps') +('frr_no_udp', '40', Decimal('2.616319'), '300Kbps') +('frr', '40', Decimal('2.701146'), '300Kbps') +('baseline_no_udp', '60', None, '75Kbps') +('baseline_udp', '60', Decimal('10.067200'), '75Kbps') +('frr_no_udp', '60', Decimal('4.491760'), '75Kbps') +('frr', '60', None, '75Kbps') +('baseline_no_udp', '20', None, '75Kbps') +('baseline_udp', '20', Decimal('10.067200'), '75Kbps') +('frr_no_udp', '20', Decimal('5.720426'), '75Kbps') +('frr', '20', Decimal('7.686906'), '75Kbps') +('baseline_no_udp', '80', None, '75Kbps') +('baseline_udp', '80', Decimal('10.067200'), '75Kbps') +('frr_no_udp', '80', Decimal('4.355466'), '75Kbps') +('frr', '80', Decimal('10.067200'), '75Kbps') +('baseline_no_udp', '40', None, '75Kbps') +('baseline_udp', '40', Decimal('10.067200'), '75Kbps') +('frr_no_udp', '40', Decimal('4.272693'), '75Kbps') +('frr', '40', Decimal('5.272506'), '75Kbps') diff --git a/pcap_analysis/results/delay_all.txt b/pcap_analysis/results/delay_all.txt new file mode 100644 index 00000000..2a7beed9 --- /dev/null +++ b/pcap_analysis/results/delay_all.txt @@ -0,0 +1,48 @@ +('baseline_no_udp', '60', Decimal('6.506596'), '2ms') +('baseline_udp', '60', Decimal('8.440879'), '2ms') +('frr_no_udp', '60', Decimal('2.584346'), '2ms') +('frr', '60', Decimal('3.662106'), '2ms') +('baseline_no_udp', '20', Decimal('6.506596'), '2ms') +('baseline_udp', '20', Decimal('8.440879'), '2ms') +('frr_no_udp', '20', Decimal('2.440613'), '2ms') +('frr', '20', Decimal('2.819733'), '2ms') +('baseline_no_udp', '80', Decimal('6.506596'), '2ms') +('baseline_udp', '80', Decimal('8.440879'), '2ms') +('frr_no_udp', '80', Decimal('2.276026'), '2ms') +('frr', '80', Decimal('2.468293'), '2ms') +('baseline_no_udp', '40', Decimal('6.506596'), '2ms') +('baseline_udp', '40', Decimal('8.440879'), '2ms') +('frr_no_udp', '40', Decimal('2.541226'), '2ms') +('frr', '40', Decimal('3.209306'), '2ms') +('baseline_no_udp', '60', Decimal('5.960079'), '100ms') +('baseline_udp', '60', Decimal('8.814053'), '100ms') +('frr_no_udp', '60', Decimal('6.693119'), '100ms') +('frr', '60', Decimal('7.901839'), '100ms') +('baseline_no_udp', '20', Decimal('5.960079'), '100ms') +('baseline_udp', '20', Decimal('8.814053'), '100ms') +('frr_no_udp', '20', Decimal('5.328293'), '100ms') +('frr', '20', Decimal('5.480079'), '100ms') +('baseline_no_udp', '80', Decimal('5.960079'), '100ms') +('baseline_udp', '80', Decimal('8.814053'), '100ms') +('frr_no_udp', '80', Decimal('6.290719'), '100ms') +('frr', '80', Decimal('8.015546'), '100ms') +('baseline_no_udp', '40', Decimal('5.960079'), '100ms') +('baseline_udp', '40', Decimal('8.814053'), '100ms') +('frr_no_udp', '40', Decimal('6.420666'), '100ms') +('frr', '40', Decimal('6.970586'), '100ms') +('baseline_no_udp', '60', Decimal('6.390986'), '20ms') +('baseline_udp', '60', Decimal('8.900453'), '20ms') +('frr_no_udp', '60', Decimal('3.236239'), '20ms') +('frr', '60', Decimal('5.426933'), '20ms') +('baseline_no_udp', '20', Decimal('6.390986'), '20ms') +('baseline_udp', '20', Decimal('8.900453'), '20ms') +('frr_no_udp', '20', Decimal('2.948773'), '20ms') +('frr', '20', Decimal('3.091626'), '20ms') +('baseline_no_udp', '80', Decimal('6.390986'), '20ms') +('baseline_udp', '80', Decimal('8.900453'), '20ms') +('frr_no_udp', '80', Decimal('3.263813'), '20ms') +('frr', '80', Decimal('4.438213'), '20ms') +('baseline_no_udp', '40', Decimal('6.390986'), '20ms') +('baseline_udp', '40', Decimal('8.900453'), '20ms') +('frr_no_udp', '40', Decimal('3.022399'), '20ms') +('frr', '40', Decimal('4.931786'), '20ms') diff --git a/pcap_analysis/results/delay_alternate.txt b/pcap_analysis/results/delay_alternate.txt new file mode 100644 index 00000000..f5de1268 --- /dev/null +++ b/pcap_analysis/results/delay_alternate.txt @@ -0,0 +1,96 @@ +('baseline_no_udp', '60', Decimal('6.390986'), '40ms') +('baseline_udp', '60', Decimal('8.900453'), '40ms') +('frr_no_udp', '60', Decimal('3.013226'), '40ms') +('frr', '60', Decimal('3.856906'), '40ms') +('baseline_no_udp', '20', Decimal('6.390986'), '40ms') +('baseline_udp', '20', Decimal('8.900453'), '40ms') +('frr_no_udp', '20', Decimal('2.713919'), '40ms') +('frr', '20', Decimal('4.073279'), '40ms') +('baseline_no_udp', '80', Decimal('6.390986'), '40ms') +('baseline_udp', '80', Decimal('8.900453'), '40ms') +('frr_no_udp', '80', Decimal('3.130746'), '40ms') +('frr', '80', Decimal('3.765386'), '40ms') +('baseline_no_udp', '40', Decimal('6.390986'), '40ms') +('baseline_udp', '40', Decimal('8.900453'), '40ms') +('frr_no_udp', '40', Decimal('3.096933'), '40ms') +('frr', '40', Decimal('3.411519'), '40ms') +('baseline_no_udp', '60', Decimal('6.390986'), '80ms') +('baseline_udp', '60', Decimal('8.900453'), '80ms') +('frr_no_udp', '60', Decimal('3.561306'), '80ms') +('frr', '60', Decimal('4.803066'), '80ms') +('baseline_no_udp', '20', Decimal('6.390986'), '80ms') +('baseline_udp', '20', Decimal('8.900453'), '80ms') +('frr_no_udp', '20', Decimal('2.247733'), '80ms') +('frr', '20', Decimal('2.414586'), '80ms') +('baseline_no_udp', '80', Decimal('6.390986'), '80ms') +('baseline_udp', '80', Decimal('8.900453'), '80ms') +('frr_no_udp', '80', Decimal('3.420746'), '80ms') +('frr', '80', Decimal('4.650079'), '80ms') +('baseline_no_udp', '40', Decimal('6.390986'), '80ms') +('baseline_udp', '40', Decimal('8.900453'), '80ms') +('frr_no_udp', '40', Decimal('3.584453'), '80ms') +('frr', '40', Decimal('3.193146'), '80ms') +('baseline_no_udp', '60', Decimal('6.390986'), '100ms') +('baseline_udp', '60', Decimal('8.900453'), '100ms') +('frr_no_udp', '60', Decimal('3.334506'), '100ms') +('frr', '60', Decimal('7.730426'), '100ms') +('baseline_no_udp', '20', Decimal('6.390986'), '100ms') +('baseline_udp', '20', Decimal('8.900453'), '100ms') +('frr_no_udp', '20', Decimal('2.745199'), '100ms') +('frr', '20', Decimal('3.017493'), '100ms') +('baseline_no_udp', '80', Decimal('6.390986'), '100ms') +('baseline_udp', '80', Decimal('8.900453'), '100ms') +('frr_no_udp', '80', Decimal('3.205146'), '100ms') +('frr', '80', Decimal('6.189919'), '100ms') +('baseline_no_udp', '40', Decimal('6.390986'), '100ms') +('baseline_udp', '40', Decimal('8.900453'), '100ms') +('frr_no_udp', '40', Decimal('2.572719'), '100ms') +('frr', '40', Decimal('3.108506'), '100ms') +('baseline_no_udp', '60', Decimal('6.390986'), '60ms') +('baseline_udp', '60', Decimal('8.900453'), '60ms') +('frr_no_udp', '60', Decimal('2.963866'), '60ms') +('frr', '60', Decimal('4.019199'), '60ms') +('baseline_no_udp', '20', Decimal('6.390986'), '60ms') +('baseline_udp', '20', Decimal('8.900453'), '60ms') +('frr_no_udp', '20', Decimal('2.141519'), '60ms') +('frr', '20', Decimal('2.275653'), '60ms') +('baseline_no_udp', '80', Decimal('6.390986'), '60ms') +('baseline_udp', '80', Decimal('8.900453'), '60ms') +('frr_no_udp', '80', Decimal('2.986959'), '60ms') +('frr', '80', Decimal('4.663493'), '60ms') +('baseline_no_udp', '40', Decimal('6.390986'), '60ms') +('baseline_udp', '40', Decimal('8.900453'), '60ms') +('frr_no_udp', '40', Decimal('3.191253'), '60ms') +('frr', '40', Decimal('5.007173'), '60ms') +('baseline_no_udp', '60', Decimal('6.390986'), '20ms') +('baseline_udp', '60', Decimal('8.900453'), '20ms') +('frr_no_udp', '60', Decimal('3.236239'), '20ms') +('frr', '60', Decimal('5.426933'), '20ms') +('baseline_no_udp', '20', Decimal('6.390986'), '20ms') +('baseline_udp', '20', Decimal('8.900453'), '20ms') +('frr_no_udp', '20', Decimal('2.948773'), '20ms') +('frr', '20', Decimal('3.091626'), '20ms') +('baseline_no_udp', '80', Decimal('6.390986'), '20ms') +('baseline_udp', '80', Decimal('8.900453'), '20ms') +('frr_no_udp', '80', Decimal('3.263813'), '20ms') +('frr', '80', Decimal('4.438213'), '20ms') +('baseline_no_udp', '40', Decimal('6.390986'), '20ms') +('baseline_udp', '40', Decimal('8.900453'), '20ms') +('frr_no_udp', '40', Decimal('3.022399'), '20ms') +('frr', '40', Decimal('4.931786'), '20ms') +('baseline_no_udp', '60', Decimal('6.390986'), '0ms') +('baseline_udp', '60', Decimal('8.900453'), '0ms') +('frr_no_udp', '60', Decimal('2.889386'), '0ms') +('frr', '60', Decimal('4.923359'), '0ms') +('baseline_no_udp', '20', Decimal('6.390986'), '0ms') +('baseline_udp', '20', Decimal('8.900453'), '0ms') +('frr_no_udp', '20', Decimal('2.756319'), '0ms') +('frr', '20', Decimal('3.414959'), '0ms') +('baseline_no_udp', '80', Decimal('6.390986'), '0ms') +('baseline_udp', '80', Decimal('8.900453'), '0ms') +('frr_no_udp', '80', Decimal('2.903306'), '0ms') +('frr', '80', Decimal('3.899199'), '0ms') +('baseline_no_udp', '40', Decimal('6.390986'), '0ms') +('baseline_udp', '40', Decimal('8.900453'), '0ms') +('frr_no_udp', '40', Decimal('2.658959'), '0ms') +('frr', '40', Decimal('3.586479'), '0ms') diff --git a/pcap_analysis/results/delay_primary.txt b/pcap_analysis/results/delay_primary.txt new file mode 100644 index 00000000..975cb74b --- /dev/null +++ b/pcap_analysis/results/delay_primary.txt @@ -0,0 +1,96 @@ +('baseline_no_udp', '60', Decimal('5.081786'), '40ms') +('baseline_udp', '60', None, '40ms') +('frr_no_udp', '60', Decimal('2.966959'), '40ms') +('frr', '60', Decimal('3.597253'), '40ms') +('baseline_no_udp', '20', Decimal('5.081786'), '40ms') +('baseline_udp', '20', None, '40ms') +('frr_no_udp', '20', Decimal('3.079999'), '40ms') +('frr', '20', Decimal('3.410399'), '40ms') +('baseline_no_udp', '80', Decimal('5.081786'), '40ms') +('baseline_udp', '80', None, '40ms') +('frr_no_udp', '80', Decimal('3.026399'), '40ms') +('frr', '80', Decimal('3.785839'), '40ms') +('baseline_no_udp', '40', Decimal('5.081786'), '40ms') +('baseline_udp', '40', None, '40ms') +('frr_no_udp', '40', Decimal('2.954533'), '40ms') +('frr', '40', Decimal('6.114773'), '40ms') +('baseline_no_udp', '60', Decimal('4.849359'), '80ms') +('baseline_udp', '60', Decimal('9.567173'), '80ms') +('frr_no_udp', '60', Decimal('3.961306'), '80ms') +('frr', '60', Decimal('4.596133'), '80ms') +('baseline_no_udp', '20', Decimal('4.849359'), '80ms') +('baseline_udp', '20', Decimal('9.567173'), '80ms') +('frr_no_udp', '20', Decimal('3.774453'), '80ms') +('frr', '20', Decimal('5.761813'), '80ms') +('baseline_no_udp', '80', Decimal('4.849359'), '80ms') +('baseline_udp', '80', Decimal('9.567173'), '80ms') +('frr_no_udp', '80', Decimal('3.961306'), '80ms') +('frr', '80', Decimal('4.229333'), '80ms') +('baseline_no_udp', '40', Decimal('4.849359'), '80ms') +('baseline_udp', '40', Decimal('9.567173'), '80ms') +('frr_no_udp', '40', Decimal('3.788826'), '80ms') +('frr', '40', Decimal('4.736853'), '80ms') +('baseline_no_udp', '60', Decimal('4.934373'), '100ms') +('baseline_udp', '60', Decimal('9.469573'), '100ms') +('frr_no_udp', '60', Decimal('3.686959'), '100ms') +('frr', '60', Decimal('4.937599'), '100ms') +('baseline_no_udp', '20', Decimal('4.934373'), '100ms') +('baseline_udp', '20', Decimal('9.469573'), '100ms') +('frr_no_udp', '20', Decimal('3.775706'), '100ms') +('frr', '20', Decimal('3.842479'), '100ms') +('baseline_no_udp', '80', Decimal('4.934373'), '100ms') +('baseline_udp', '80', Decimal('9.469573'), '100ms') +('frr_no_udp', '80', Decimal('3.784506'), '100ms') +('frr', '80', Decimal('4.461679'), '100ms') +('baseline_no_udp', '40', Decimal('4.934373'), '100ms') +('baseline_udp', '40', Decimal('9.469573'), '100ms') +('frr_no_udp', '40', Decimal('3.686959'), '100ms') +('frr', '40', Decimal('6.422719'), '100ms') +('baseline_no_udp', '60', Decimal('4.649359'), '60ms') +('baseline_udp', '60', Decimal('9.577146'), '60ms') +('frr_no_udp', '60', Decimal('3.190053'), '60ms') +('frr', '60', Decimal('3.729413'), '60ms') +('baseline_no_udp', '20', Decimal('4.649359'), '60ms') +('baseline_udp', '20', Decimal('9.577146'), '60ms') +('frr_no_udp', '20', Decimal('3.247546'), '60ms') +('frr', '20', Decimal('3.206346'), '60ms') +('baseline_no_udp', '80', Decimal('4.649359'), '60ms') +('baseline_udp', '80', Decimal('9.577146'), '60ms') +('frr_no_udp', '80', Decimal('3.305039'), '60ms') +('frr', '80', Decimal('3.954293'), '60ms') +('baseline_no_udp', '40', Decimal('4.649359'), '60ms') +('baseline_udp', '40', Decimal('9.577146'), '60ms') +('frr_no_udp', '40', Decimal('3.163839'), '60ms') +('frr', '40', Decimal('7.520399'), '60ms') +('baseline_no_udp', '60', Decimal('6.390986'), '20ms') +('baseline_udp', '60', Decimal('8.900453'), '20ms') +('frr_no_udp', '60', Decimal('3.236239'), '20ms') +('frr', '60', Decimal('5.426933'), '20ms') +('baseline_no_udp', '20', Decimal('6.390986'), '20ms') +('baseline_udp', '20', Decimal('8.900453'), '20ms') +('frr_no_udp', '20', Decimal('2.948773'), '20ms') +('frr', '20', Decimal('3.091626'), '20ms') +('baseline_no_udp', '80', Decimal('6.390986'), '20ms') +('baseline_udp', '80', Decimal('8.900453'), '20ms') +('frr_no_udp', '80', Decimal('3.263813'), '20ms') +('frr', '80', Decimal('4.438213'), '20ms') +('baseline_no_udp', '40', Decimal('6.390986'), '20ms') +('baseline_udp', '40', Decimal('8.900453'), '20ms') +('frr_no_udp', '40', Decimal('3.022399'), '20ms') +('frr', '40', Decimal('4.931786'), '20ms') +('baseline_no_udp', '60', Decimal('6.164159'), '0ms') +('baseline_udp', '60', Decimal('8.449306'), '0ms') +('frr_no_udp', '60', Decimal('2.613199'), '0ms') +('frr', '60', Decimal('2.930133'), '0ms') +('baseline_no_udp', '20', Decimal('6.164159'), '0ms') +('baseline_udp', '20', Decimal('8.449306'), '0ms') +('frr_no_udp', '20', Decimal('2.340853'), '0ms') +('frr', '20', Decimal('4.144053'), '0ms') +('baseline_no_udp', '80', Decimal('6.164159'), '0ms') +('baseline_udp', '80', Decimal('8.449306'), '0ms') +('frr_no_udp', '80', Decimal('2.657066'), '0ms') +('frr', '80', Decimal('3.339013'), '0ms') +('baseline_no_udp', '40', Decimal('6.164159'), '0ms') +('baseline_udp', '40', Decimal('8.449306'), '0ms') +('frr_no_udp', '40', Decimal('2.555706'), '0ms') +('frr', '40', Decimal('3.339919'), '0ms')