Real-Time Classification of Real-Time Communications

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:

Data and classifiers

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 WebexFeatures used for Jitsi

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.