diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/captures/for_seeing_same_length_for_tcp_and_quic_packets/capture_20250208163100.pcap b/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/captures/for_seeing_same_length_for_tcp_and_quic_packets/capture_20250208163100.pcap new file mode 100644 index 0000000000000000000000000000000000000000..0414b5a0f8d1194d0c29b5e171d388fe227fd9a2 Binary files /dev/null and b/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/captures/for_seeing_same_length_for_tcp_and_quic_packets/capture_20250208163100.pcap differ diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/captures/for_seeing_same_length_for_tcp_and_quic_packets/sslkeylogfile_20250208163100.log b/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/captures/for_seeing_same_length_for_tcp_and_quic_packets/sslkeylogfile_20250208163100.log new file mode 100644 index 0000000000000000000000000000000000000000..cef2c6aaf3e51c333bc4f84d68efdbd899f3d067 --- /dev/null +++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/captures/for_seeing_same_length_for_tcp_and_quic_packets/sslkeylogfile_20250208163100.log @@ -0,0 +1,20 @@ +SERVER_HANDSHAKE_TRAFFIC_SECRET 2cbc5714e6d25d52b582dac3d932bb88b1ff49eaff6f7ac0a9f6715c4fd4528d 68097c0ebd4c5d014448de9ea50b037d0370fea113af0f6b64c0700fbf29eaad35482cc39c1b95ed289b448cbeeee4d4 +CLIENT_HANDSHAKE_TRAFFIC_SECRET 2cbc5714e6d25d52b582dac3d932bb88b1ff49eaff6f7ac0a9f6715c4fd4528d 52613ffe3afd4ebf603f301e58d4c0a33268098b01335ac8e8f99b6335dd8a2c20d4747b78c677dd7daeabf09d2dc7b7 +EXPORTER_SECRET 2cbc5714e6d25d52b582dac3d932bb88b1ff49eaff6f7ac0a9f6715c4fd4528d b6d5532d20b7149fbfc7d7a2cd66160812cbd9279520991d08ff26a35fd0435130bf6823ff14536825005aff80973581 +SERVER_TRAFFIC_SECRET_0 2cbc5714e6d25d52b582dac3d932bb88b1ff49eaff6f7ac0a9f6715c4fd4528d 6c8560d756b9607c38626a285d32f6147f397cf5967ca3feebbf2194e2b231fe171e0278fe9def67c83f65e34c94f508 +CLIENT_TRAFFIC_SECRET_0 2cbc5714e6d25d52b582dac3d932bb88b1ff49eaff6f7ac0a9f6715c4fd4528d 3aadfca10b7bb787f46ed32c70fef3658a45cd98d509712d5aa616eb37e9f6f34ff7d8af0a2596471124d8d56af5a191 +SERVER_HANDSHAKE_TRAFFIC_SECRET 0a8221ff45245a0e211968805d1dbbe17c3585cae6c81ac7746be9e96d1a2ab1 62ebda5863617810d812cca9e3485754bd28e50cd87b9693c28b8519f3ee3c2dd6473ec510bb092b71e94f4f7303bc9b +CLIENT_HANDSHAKE_TRAFFIC_SECRET 0a8221ff45245a0e211968805d1dbbe17c3585cae6c81ac7746be9e96d1a2ab1 c2bff011805145f93530008093597abc3a6093d3e7cb42d69ef7b59df2ca2d93c440fc0b598042641ee0047bd62d9cd2 +EXPORTER_SECRET 0a8221ff45245a0e211968805d1dbbe17c3585cae6c81ac7746be9e96d1a2ab1 1c53f6f5e7652c9f19662cc1c7d7a8742120845efcb2349e860d08f8116bb41ee2aaeb0faf0b31d45fe21e4d7c8bb2d8 +SERVER_TRAFFIC_SECRET_0 0a8221ff45245a0e211968805d1dbbe17c3585cae6c81ac7746be9e96d1a2ab1 27bf0448aaecb58f4102d1d6a66640084df2c19faa7f669874a547b6a6821b185d16732cb340f57a9ffeb2a70dc08674 +CLIENT_TRAFFIC_SECRET_0 0a8221ff45245a0e211968805d1dbbe17c3585cae6c81ac7746be9e96d1a2ab1 6e6c671722c01c51a6ab05bc681ddd7d86d7df84365feef768ee28b567e15818de357b662ad9c1fd9f9d7164e9ef2603 +SERVER_HANDSHAKE_TRAFFIC_SECRET be85cc1be51d80e8c99363869e702c2bb38f7d3fa69314db4c2bb16c30e1cc9f 1d52b13d392bb9228c8e25dd0380212b428ac155f1a3309394793edefaec389dee0c7aa6b5dca8d74e92a3ccedeee319 +CLIENT_HANDSHAKE_TRAFFIC_SECRET be85cc1be51d80e8c99363869e702c2bb38f7d3fa69314db4c2bb16c30e1cc9f b9a525f69108ab2a699eb78079f5903cc6d4784403cf3e1887db5929ffa20d60e588351ddea2ded115e711128c6871f6 +EXPORTER_SECRET be85cc1be51d80e8c99363869e702c2bb38f7d3fa69314db4c2bb16c30e1cc9f d4c8ba0fbff53c4340b08b54a929760ec86746b4624f2fb7fcbdac4f50dda25a6fdfefe3325056bf736cf4710239cf2d +SERVER_TRAFFIC_SECRET_0 be85cc1be51d80e8c99363869e702c2bb38f7d3fa69314db4c2bb16c30e1cc9f dc9ee2b26ec9c87923c3f01f6d7377f0d058f707ce3b9468197fc88b6030fec13f35ebe29f3ccf7ce95c720fd7969e07 +CLIENT_TRAFFIC_SECRET_0 be85cc1be51d80e8c99363869e702c2bb38f7d3fa69314db4c2bb16c30e1cc9f ced72edb7ae9ed0b2aaff6fc44a73bef38de64bb62d399cd7a50127636733e4478aff465ec859cb04244e889c8ac7aee +SERVER_HANDSHAKE_TRAFFIC_SECRET 64b8cfadd89a6e3114a4183834f3f46233c57c7cba07e185fdaf8bb6b9a34de5 464b905bc47a6e02ea8dd673143d80ca005d14e185860cd583bf31087838b3789edac6ea91969aadcef832b2f71d758c +CLIENT_HANDSHAKE_TRAFFIC_SECRET 64b8cfadd89a6e3114a4183834f3f46233c57c7cba07e185fdaf8bb6b9a34de5 acc0803dd3466d42587c60d39bf4094f62184a198c28031ae158d58038c7c2a796e07008907afe1147f5f9fa34a57ea0 +EXPORTER_SECRET 64b8cfadd89a6e3114a4183834f3f46233c57c7cba07e185fdaf8bb6b9a34de5 14bb5a4fab40f2ad2b953d19bab8754f3407d57ad914cf52b38b186d678f99099c95314aefd20809921fb9184e08aa95 +SERVER_TRAFFIC_SECRET_0 64b8cfadd89a6e3114a4183834f3f46233c57c7cba07e185fdaf8bb6b9a34de5 32f583574d3dd967669f4c80841673d8522df0c629c7fb35d933ad45fb3b3d3e5b939b6f89a40568a7620c655896f851 +CLIENT_TRAFFIC_SECRET_0 64b8cfadd89a6e3114a4183834f3f46233c57c7cba07e185fdaf8bb6b9a34de5 51e0277a31fda722b55c5e5d5388c6f92869e687afc183c133b9b8b6ce68b9bd88f8317a39d5ead4de9588ce0d9ae9c0 diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/qlogdir/cquiche-mlkem512.sqlog b/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/qlogdir/cquiche-mlkem512.sqlog index 26f88eb5e3bf71e9c862fad5dd720a7b4cb63706..5fff3e3ed6c74b03609bf80d8ce8a18e2fac7033 100644 --- a/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/qlogdir/cquiche-mlkem512.sqlog +++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/saved/qlogdir/cquiche-mlkem512.sqlog @@ -1,15 +1,15 @@ -{"qlog_version":"0.3","qlog_format":"JSON-SEQ","title":"cquiche_s_timer qlog","description":"cquiche_s_timer qlog id=697e5c45a7ae1da114051c9999be198620088ec9","trace":{"vantage_point":{"type":"client"},"title":"cquiche_s_timer qlog","description":"cquiche_s_timer qlog id=697e5c45a7ae1da114051c9999be198620088ec9","configuration":{"time_offset":0.0}}} +{"qlog_version":"0.3","qlog_format":"JSON-SEQ","title":"cquiche_s_timer qlog","description":"cquiche_s_timer qlog id=38cf05b47b0b37542df8dc4316081f8f9ee3fd7d","trace":{"vantage_point":{"type":"client"},"title":"cquiche_s_timer qlog","description":"cquiche_s_timer qlog id=38cf05b47b0b37542df8dc4316081f8f9ee3fd7d","configuration":{"time_offset":0.0}}} {"time":0.0,"name":"transport:parameters_set","data":{"owner":"local","tls_cipher":"None","disable_active_migration":false,"max_idle_timeout":30000,"max_udp_payload_size":1200,"ack_delay_exponent":3,"max_ack_delay":25,"active_connection_id_limit":2,"initial_max_data":10000000,"initial_max_stream_data_bidi_local":1000000,"initial_max_stream_data_bidi_remote":1000000,"initial_max_stream_data_uni":1000000,"initial_max_streams_bidi":100,"initial_max_streams_uni":100}} -{"time":0.008598,"name":"transport:packet_sent","data":{"header":{"packet_type":"initial","packet_number":0,"version":"1","scil":20,"dcil":16,"scid":"697e5c45a7ae1da114051c9999be198620088ec9","dcid":"2f977b4d5ac9d82da8d97d2b903a6aa9"},"raw":{"length":1098,"payload_length":1035},"send_at_time":0.008598,"frames":[{"frame_type":"crypto","offset":0,"length":1031}]}} -{"time":0.008598,"name":"recovery:metrics_updated","data":{"smoothed_rtt":333.0,"rtt_variance":166.5,"congestion_window":12000,"bytes_in_flight":1098,"ssthresh":18446744073709551615}} -{"time":0.68416804,"name":"transport:packet_received","data":{"header":{"packet_type":"initial","packet_number":0,"version":"1","scil":20,"dcil":20,"scid":"0000000000002001c44bf0a77f8432798a7f4832","dcid":"697e5c45a7ae1da114051c9999be198620088ec9"},"raw":{"length":1200,"payload_length":852},"frames":[{"frame_type":"ack","ack_delay":0.0,"acked_ranges":[[0,0]]},{"frame_type":"crypto","offset":0,"length":826}]}} -{"time":0.68416804,"name":"recovery:metrics_updated","data":{"min_rtt":0.67557,"smoothed_rtt":0.67557,"latest_rtt":0.67557,"rtt_variance":0.337785,"bytes_in_flight":0}} -{"time":0.791948,"name":"transport:packet_received","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":20,"dcil":20,"scid":"0000000000002001c44bf0a77f8432798a7f4832","dcid":"697e5c45a7ae1da114051c9999be198620088ec9"},"raw":{"length":298,"payload_length":249},"frames":[{"frame_type":"crypto","offset":0,"length":228}]}} -{"time":0.80144596,"name":"transport:packet_received","data":{"header":{"packet_type":"handshake","packet_number":1,"version":"1","scil":20,"dcil":20,"scid":"0000000000002001c44bf0a77f8432798a7f4832","dcid":"697e5c45a7ae1da114051c9999be198620088ec9"},"raw":{"length":612,"payload_length":563},"frames":[{"frame_type":"crypto","offset":228,"length":11},{"frame_type":"crypto","offset":239,"length":385},{"frame_type":"crypto","offset":624,"length":80},{"frame_type":"crypto","offset":704,"length":52}]}} -{"time":0.80144596,"name":"transport:parameters_set","data":{"owner":"remote","tls_cipher":"Some(AES256_GCM)","original_destination_connection_id":"2f977b4d5ac9d82da8d97d2b903a6aa9","stateless_reset_token":"2810d617b6c5e9341ae5de9c9fdbfe1b","disable_active_migration":false,"max_idle_timeout":75000,"max_udp_payload_size":65527,"ack_delay_exponent":3,"max_ack_delay":25,"active_connection_id_limit":2,"initial_max_data":8585216,"initial_max_stream_data_bidi_local":65536,"initial_max_stream_data_bidi_remote":65536,"initial_max_stream_data_uni":65536,"initial_max_streams_bidi":128,"initial_max_streams_uni":3}} -{"time":1.2092669,"name":"transport:packet_sent","data":{"header":{"packet_type":"initial","packet_number":1,"version":"1","scil":20,"dcil":20,"scid":"697e5c45a7ae1da114051c9999be198620088ec9","dcid":"0000000000002001c44bf0a77f8432798a7f4832"},"raw":{"length":73,"payload_length":6},"send_at_time":1.2092669,"frames":[{"frame_type":"ack","ack_delay":0.065,"acked_ranges":[[0,0]]}]}} -{"time":1.2092669,"name":"recovery:metrics_updated","data":{"pacing_rate":22203472}} -{"time":1.2092669,"name":"transport:packet_sent","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":20,"dcil":20,"scid":"697e5c45a7ae1da114051c9999be198620088ec9","dcid":"0000000000002001c44bf0a77f8432798a7f4832"},"raw":{"length":127,"payload_length":61},"send_at_time":1.2092669,"frames":[{"frame_type":"ack","ack_delay":0.052,"acked_ranges":[[0,1]]},{"frame_type":"crypto","offset":0,"length":52}]}} -{"time":1.2092669,"name":"recovery:metrics_updated","data":{"bytes_in_flight":127}} -{"time":1.2681559,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":0},"raw":{"length":48,"payload_length":10},"send_at_time":1.2681559,"frames":[{"frame_type":"connection_close","error_space":"application_error","error_code":0,"reason":"kthxbye"}]}} -{"time":1.2681559,"name":"recovery:metrics_updated","data":{"bytes_in_flight":175}} +{"time":0.018517999,"name":"transport:packet_sent","data":{"header":{"packet_type":"initial","packet_number":0,"version":"1","scil":20,"dcil":16,"scid":"38cf05b47b0b37542df8dc4316081f8f9ee3fd7d","dcid":"8af447d7eba160b4f5bddc7270a59bef"},"raw":{"length":1098,"payload_length":1035},"send_at_time":0.018517999,"frames":[{"frame_type":"crypto","offset":0,"length":1031}]}} +{"time":0.018517999,"name":"recovery:metrics_updated","data":{"smoothed_rtt":333.0,"rtt_variance":166.5,"congestion_window":12000,"bytes_in_flight":1098,"ssthresh":18446744073709551615}} +{"time":204.14677,"name":"transport:packet_received","data":{"header":{"packet_type":"initial","packet_number":0,"version":"1","scil":20,"dcil":20,"scid":"00000000000010014430020ae1c41277123b3d1c","dcid":"38cf05b47b0b37542df8dc4316081f8f9ee3fd7d"},"raw":{"length":1200,"payload_length":852},"frames":[{"frame_type":"ack","ack_delay":0.0,"acked_ranges":[[0,0]]},{"frame_type":"crypto","offset":0,"length":826}]}} +{"time":204.14677,"name":"recovery:metrics_updated","data":{"min_rtt":204.12825,"smoothed_rtt":204.12825,"latest_rtt":204.12825,"rtt_variance":102.064125,"bytes_in_flight":0}} +{"time":204.73093,"name":"transport:packet_received","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":20,"dcil":20,"scid":"00000000000010014430020ae1c41277123b3d1c","dcid":"38cf05b47b0b37542df8dc4316081f8f9ee3fd7d"},"raw":{"length":298,"payload_length":249},"frames":[{"frame_type":"crypto","offset":0,"length":228}]}} +{"time":204.75575,"name":"transport:packet_received","data":{"header":{"packet_type":"handshake","packet_number":1,"version":"1","scil":20,"dcil":20,"scid":"00000000000010014430020ae1c41277123b3d1c","dcid":"38cf05b47b0b37542df8dc4316081f8f9ee3fd7d"},"raw":{"length":610,"payload_length":561},"frames":[{"frame_type":"crypto","offset":228,"length":11},{"frame_type":"crypto","offset":239,"length":384},{"frame_type":"crypto","offset":623,"length":79},{"frame_type":"crypto","offset":702,"length":52}]}} +{"time":204.75575,"name":"transport:parameters_set","data":{"owner":"remote","tls_cipher":"Some(AES256_GCM)","original_destination_connection_id":"8af447d7eba160b4f5bddc7270a59bef","stateless_reset_token":"ccdf20b1a7675d440f8375e878a17716","disable_active_migration":false,"max_idle_timeout":75000,"max_udp_payload_size":65527,"ack_delay_exponent":3,"max_ack_delay":25,"active_connection_id_limit":2,"initial_max_data":8585216,"initial_max_stream_data_bidi_local":65536,"initial_max_stream_data_bidi_remote":65536,"initial_max_stream_data_uni":65536,"initial_max_streams_bidi":128,"initial_max_streams_uni":3}} +{"time":206.04721,"name":"transport:packet_sent","data":{"header":{"packet_type":"initial","packet_number":1,"version":"1","scil":20,"dcil":20,"scid":"38cf05b47b0b37542df8dc4316081f8f9ee3fd7d","dcid":"00000000000010014430020ae1c41277123b3d1c"},"raw":{"length":73,"payload_length":6},"send_at_time":206.04721,"frames":[{"frame_type":"ack","ack_delay":0.238,"acked_ranges":[[0,0]]}]}} +{"time":206.04721,"name":"recovery:metrics_updated","data":{"pacing_rate":73483}} +{"time":206.04721,"name":"transport:packet_sent","data":{"header":{"packet_type":"handshake","packet_number":0,"version":"1","scil":20,"dcil":20,"scid":"38cf05b47b0b37542df8dc4316081f8f9ee3fd7d","dcid":"00000000000010014430020ae1c41277123b3d1c"},"raw":{"length":128,"payload_length":62},"send_at_time":206.04721,"frames":[{"frame_type":"ack","ack_delay":0.166,"acked_ranges":[[0,1]]},{"frame_type":"crypto","offset":0,"length":52}]}} +{"time":206.04721,"name":"recovery:metrics_updated","data":{"bytes_in_flight":128}} +{"time":206.1397,"name":"transport:packet_sent","data":{"header":{"packet_type":"1RTT","packet_number":0},"raw":{"length":48,"payload_length":10},"send_at_time":206.1397,"frames":[{"frame_type":"connection_close","error_space":"application_error","error_code":0,"reason":"kthxbye"}]}} +{"time":206.1397,"name":"recovery:metrics_updated","data":{"bytes_in_flight":176}} diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/analyze_packets.py b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/analyze_packets.py index cc9580eb088c1fca0e32b7aa1f47666bd63a2d03..01bd92c4260e00b4e3bb384b0b624ed2584613aa 100644 --- a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/analyze_packets.py +++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/analyze_packets.py @@ -166,6 +166,7 @@ def get_packets_sent_by_node(udp_packets_df): # print(df.info()) print(df) + return df def analyze_udp_packets(kem_id_df): @@ -326,4 +327,5 @@ def map_tls_handshake_types(handshake_types): ] -main() +if __name__ == "__main__": + main() diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/generate_graphs.py b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/generate_graphs.py index 73038e39ea0a7c845a250d850bb58988117336ef..22af8fbabb85ab90406fdc28d2c6ebf6b8a8d124 100755 --- a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/generate_graphs.py +++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/generate_graphs.py @@ -14,7 +14,7 @@ import scipy import helper_scripts.helper_functions as helper_functions import helper_scripts.performance_eval_of_oqs as performance_eval_of_oqs -RESULTS_DIR = "saved/results-run-20250126-vm-p16" +RESULTS_DIR = "saved/results-run-20250207-vm-p16" FILTER_RESULTS = [] PLOTS_DIR = "plots" FEATHERS_DIR = "feathers" @@ -897,7 +897,7 @@ def plot_distributions(data): def plot_multiple_violin_plots(data, filtered: bool = False): os.makedirs( - f"{PLOTS_DIR}/distributions/filtered/multiple-violin-plots", + f"{PLOTS_DIR}/distributions/multiple-violin-plots/filtered/", mode=0o777, exist_ok=True, ) @@ -1115,6 +1115,7 @@ def plot_distributions(data): fontsize="small", ) + plt.tight_layout() plt.savefig( f"{PLOTS_DIR}/distributions/cdf/per-sec-level/{subdir_string}cdf-for-{row['scenario']}-{row['protocol']}-{row['sec_level']}-{param_value}{graph_name_extension}.pdf" ) diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/helper_scripts/setup_ns.sh b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/helper_scripts/setup_ns.sh index 068c1ba4d45dfa2417dcac95d94aba9d4d9c1ac3..094da536469ecfc1872066e10b4aa7458a36bd96 100755 --- a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/helper_scripts/setup_ns.sh +++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/helper_scripts/setup_ns.sh @@ -32,6 +32,10 @@ for i in $(seq 1 ${NUMBER_OF_NETWORK_NAMESPACES}); do address ${CLIENT_VETH_LL_ADDR} \ netns ${CLIENT_NS} + # Set MTU to 1252 -> comparable to minimal 1200 max_datagram_size in QUIC + ip netns exec ${SERVER_NS} ip link set dev ${SERVER_VETH} mtu 1252 + ip netns exec ${CLIENT_NS} ip link set dev ${CLIENT_VETH} mtu 1252 + ip netns exec ${SERVER_NS} \ ip link set dev ${SERVER_VETH} up ip netns exec ${SERVER_NS} \ diff --git a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/queries.py b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/queries.py index 59bbcd4f22cf3218e6d25ea7538bf6b41eccb90a..46ca25fea8aa60753a62cc46db5bb0b430bfdb12 100644 --- a/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/queries.py +++ b/pq-tls-benchmark-framework/emulation-exp/code/kex/scripts/queries.py @@ -1,16 +1,19 @@ +import math import pandas as pd FEATHERS_DIR = "feathers" import generate_graphs as gg import helper_scripts.helper_functions as hf +import analyze_packets as ap def main(): data = pd.read_feather(f"{FEATHERS_DIR}/data.feather") # data = pd.read_feather(f"{FEATHERS_DIR}/data_run_20241028.feather") - static_scenario_statistical_analysis(data) + p_no_one_sec_delay() + # static_scenario_statistical_analysis(data) # median_of_all_static_runs_per_algorithm(data) # stats_of_qtl95_of_packetloss(data) # error_count_and_rate(data) @@ -20,6 +23,58 @@ def main(): # print_kem_ids() +def p_no_one_sec_delay(): + udp_packets_df = pd.read_feather("feathers/udp_packets.feather") + df = ap.get_packets_sent_by_node(udp_packets_df) + + print("\n\n No one second delay") + df = df.drop(columns=["length_public_key", "length_ciphertext"]) + # print(df) + df["cic"] = df["client_sent_packets_with_crypto_count"] - 1 + df["sic"] = df["server_sent_packets_with_crypto_count"] + df = df.drop( + columns=[ + "client_sent_packets_with_crypto_count", + "server_sent_packets_with_crypto_count", + ] + ) + + df = df.query("cic <= 10 and sic <= 10") + + def calc_p(cic, sic, l): + """ + Calculates the probability p_noOneSec. + + Args: + cic: client initial count. + sic: server initial count. + l: loss probability. + + Returns: + p_noOneSec as defined in the thesis. + """ + + term1 = (1 - l) ** cic * (1 - l ** (sic + (cic - 1))) + term2 = 0 + + # range: upper is not inclusive, in math symbol SUM it is inclusive + for i in range(1, cic): + term2 += ( + math.comb(cic, i) * (1 - l) ** (cic - i) * l**i * (1 - l ** (cic - i)) + ) + + return term1 + term2 + + # print(df) + + for l in [0.01, 0.05, 0.10, 0.20]: + df[f"p_noOneSec_{l}"] = df.apply( + lambda row: calc_p(row["cic"], row["sic"], l), axis=1 + ) + + print(df) + + def static_scenario_statistical_analysis(data): ldata = data print("Static scenario statistical analysis") @@ -105,12 +160,19 @@ def error_count_and_rate(data): ldata = ldata.query("error_count > 0") print("Total index length with error count > 0") print(len(ldata.index)) - print("Error count describe") + print("Data with error count > 0 describe error_count") print(ldata["error_count"].describe()) + print("How much each scenario has error count > 0") print(ldata["scenario"].value_counts()) - # print(ldata["scenario"].unique()) # all 10 scenarios - print("With error count > 1") - ldata = ldata.query("error_count > 1") + print("How much each protocol has error count > 0") + print(ldata["protocol"].value_counts()) + print("How much each scenario protocol combinanation has error count > 0") + print(ldata.groupby(["scenario", "protocol"]).size()) + print("How much each kem_alg has error count > 0") + print(ldata["kem_alg"].value_counts()) + + print("With error count > 3") + ldata = ldata.query("error_count > 12") print( ldata[ [