This webpage contains additional material of the paper:
“Real-Time Classification of Real-Time Communications“
Published in IEEE Transactions on Network and Service Management, July 2022
Authors: Gianluca Perna, Dena Markudova, Martino Trevisan, Michela Meo, Paolo Garza, Maurizio Munafò, Giovanna Carofiglio
The data
You can find the dataset and the classifiers on this link:
The link contains:
- webex_dataset.csv – a csv file of all 96 features described in the paper, the timestamps, label and video quality calculated for all Webex traffic
- webex_classifier_trained.pkl – a pickle file of the trained classifier for Webex
- jitsi_dataset.csv – a csv file of all 96 features described in the paper, the timestamps, label and video quality calculated for all Jitsi traffic
- jitsi_classifier_trained.pkl – a pickle file of the trained classifier for Jitsi
Note that the classifiers are trained on a subset of their respective dataset (a training set) using only 8 features for Webex and 4 features for Jitsi, as explained in the paper. The time aggregation in the provided csv files is 1s.
Features used for Webex | Features used for Jitsi |
---|---|
interarrival_len_unique_percent len_udp_p25 len_udp_p70 len_udp_p75 len_udp_len_unique_percent rtp_interarrival_p30 rtp_interarrival_len_unique_percent rtp_marker_sum_check | len_udp_mean len_udp_p25 len_udp_len_unique_percent rtp_interarrival_len_unique_percent |
The code
The tool used to calculate the features from raw pcap files and log files, by the name of Retina, is available on Github:
All the features
For those interested of the full list of features, before doing feature selection, here is a table:
Group | Features | Support | Support Error | Description |
---|---|---|---|---|
label | [0,1,2,3,4,5,6,7] | -1 | Class label | |
Interarrival | Difference between the currently packet time and the previous one | |||
interarrival_std | [0, +inf) | -1 | Interarrival standard deviation (Jitter) | |
interarrival_mean | [0, +inf) | -1 | Interarrival mean | |
interarrival_min | [0, +inf) | -1 | Interarrival min | |
interarrival_max | [0, +inf) | -1 | Interarrival max | |
interarrival_count | [0, +inf) | -1 | Counter of how many interarrival we have in a second (should be the same with num_packet) | |
interarrival_kurtosis | [0, +inf) | -1 | Kurtosis | |
interarrival_skew | [0, +inf) | -1 | Skewness | |
interarrival_moment3 | [0, +inf) | -1 | Third moment | |
interarrival_moment4 | [0, +inf) | -1 | Forth moment | |
interarrival_max_min_diff | [0, +inf) | -1 | Difference between max and min value in a second of flow | |
interarrival_max_min_R | [0.5, 1] | -1 | max/(max+min) | |
interarrival_min_max_R | [0, 0.5] | -1 | min/(min+max) | |
interarrival_len_unique_percent | % | -1 | % of how many value are different in a second of flow | |
interarrival_max_value_count_percent | % | -1 | % of the times that the maximum value appear in a second of flow | |
Lenght UDP | statistics about UDP lenght of packets | |||
kbps | [0, +inf) | -1 | bitrate | |
len_udp_std | [0, 1500^2] | -1 | Standard deviation of length of udp packets in a second of flow | |
len_udp_mean | [0, 1500] | -1 | Mean of lenght of udp packets in a second of flow | |
len_udp_min | [0, 1500] | -1 | minimum value of length of udp in a second of flow | |
len_udp_max | [0, 1500] | -1 | maximum value of length of udp in a second of flow | |
num_packets | [0, +inf) | -1 | number of packets in a second of flow | |
len_udp_kurtosis | [0, 1500] | -1 | ||
len_udp_skew | [0, 1500] | -1 | ||
len_udp_moment3 | [0, 1500] | -1 | ||
len_udp_moment4 | [0, 1500] | -1 | ||
len_udp_max_min_diff | [0, 1500] | -1 | ||
len_udp_max_min_R | [0.5, 1] | -1 | ||
len_udp_min_max_R | [0, 0.5] | -1 | ||
len_udp_len_unique_percent | % | -1 | ||
len_udp_max_value_count_percent | % | -1 | ||
Interlength | Statistics about difference between length of current packet and the previous one | |||
interlength_udp_std | (-inf, +inf) | – | ||
interlength_udp_mean | (-inf, +inf) | – | ||
interlength_udp_min | (-inf, +inf) | – | ||
interlength_udp_max | (-inf, +inf) | – | ||
interlength_udp_count | (-inf, +inf) | – | ||
interlength_udp_kurtosis | (-inf, +inf) | – | ||
interlength_udp_skew | (-inf, +inf) | – | ||
interlength_udp_moment3 | (-inf, +inf) | – | ||
interlength_udp_moment4 | (-inf, +inf) | – | ||
interlength_udp_max_min_diff | (-inf, +inf) | – | ||
interlength_udp_max_min_R | [0.5, 1] | -1 | ||
interlength_udp_min_max_R | [0, 0.5] | -1 | ||
interlength_udp_len_unique_percent | % | -1 | ||
interlength_udp_max_value_count_percent | % | -1 | ||
RTP inter timestamp | Difference between the currently packet rtp timestamp and the previous one | |||
rtp_inter_timestamp_num_zeros | [0, +inf) | -1 | ||
rtp_inter_timestamp_std | [0, 2^64] | -1 | ||
rtp_inter_timestamp_mean | [-2^32, 2^32] | -1 | ||
rtp_interarrival_min | [-2^32, 2^32] | -1 | ||
rtp_interarrival_max | [-2^32, 2^32] | -1 | ||
rtp_interarrival_count | [-2^32, 2^32] | -1 | ||
rtp_interarrival_kurtosis | (-inf, +inf) | – | ||
rtp_interarrival_skew | (-inf, +inf) | – | ||
rtp_interarrival_moment3 | (-inf, +inf) | – | ||
rtp_interarrival_moment4 | (-inf, +inf) | – | ||
rtp_interarrival_max_min_diff | (-inf, +inf) | – | ||
rtp_interarrival_max_min_R | [0.5, 1] | -1 | ||
rtp_interarrival_min_max_R | [0, 0.5 | -1 | ||
rtp_interarrival_len_unique_percent | % | -1 | ||
rtp_interarrival_max_value_count_percent | % | -1 | ||
rtp_marker_sum_check | [0, +inf) | -1 | ||
rtp_seq_num_packet_loss | % | -1 | ||
rtp_csrc_csrc_agg | – | -1 | ||
Inter time sequence | Difference between the sequence number and rtp timestamp of the current packet | |||
inter_time_sequence_std | (-inf, +inf) | – | ||
inter_time_sequence_mean | (-inf, +inf) | – | ||
inter_time_sequence_max | (-inf, +inf) | – | ||
inter_time_sequence_count | (-inf, +inf) | – | ||
inter_time_sequence_kurtosis | (-inf, +inf) | – | ||
inter_time_sequence_skew | (-inf, +inf) | – | ||
inter_time_sequence_moment3 | (-inf, +inf) | – | ||
inter_time_sequence_moment4 | (-inf, +inf) | – | ||
inter_time_sequence_max_min_diff | (-inf, +inf) | – | ||
inter_time_sequence_max_min_R | [0.5, 1] | -1 | ||
inter_time_sequence_min_max_R | [0, 0.5] | -1 | ||
inter_time_sequence_len_unique_percent | % | -1 | ||
inter_time_sequence_max_value_count_pe,rcent | % | -1 | ||
inter_time_sequence_min | (-inf, +inf) | – |
Hope you enjoyed this post and the paper itself! For more info you can always contact us by email.