# Traffic Classification in Software-Defined Networking Using Genetic Programming Tools
## 2 Material and Methods
### Theoretical Framework
#### 2.1.3 ML-Based Traffic Classification Methods in SDN and Related Works
[2], namely, classifying traffic according to its type (HTTP, mail, and streaming). Using three common machine learning algorithms, SVM, NB, and the nearest centroid, they achieved an accuracy of over 90%. The advanced characteristics of SDN, namely the overall network view, programmability, and functionality splitting of the data and control plane, have piqued the interest of the research community in implementing new QoS provisioning concepts. [PERSON] et al. [24] proposed a hybrid classifier implemented by a neural network combined with a particle swarm optimization algorithm (NN-PSO) to improve QoS in an underwater sensor network. Using a publicly available dataset and implementing three different classifiers (Feed-Forward Neural Network (FNN), LR, and NB), they achieve enhanced accuracy. Furthermore, SDN architecture promises ease and flexibility in network management, and researchers are applying traffic taxonomy to contribute to this direction. [PERSON] and [PERSON] [25] developed and implemented a traffic classification model to classify data traffic for management purposes. The model can be run in real time, is implemented on the controller side, and uses six classical classification algorithms to categorize packets. The drawbacks of this approach include the limitations of non-typical traffic detection, the number of features used, and the role of data normalization in the performance of the classification model. Recognizing the problems of port-based and DPI techniques, [PERSON] and [PERSON] [26] have proposed a deep learning-based solution for the dynamic discovery of elephant flows. This classification enables optimal and efficient resource allocation and ensures optimal QoS in the SDN system. The flows are distinguished into two categories by applying DNN, CNN, LSTM, and deep autoencoder algorithms. For the experimental evaluation, the measurable characteristics (such as flow size and packet size) were collected from three distinct datasets. The range of the flow detection rate is 98.17% to 98.78%. The method is computationally demanding, but it is quite resilient and can be implemented on the controller side. In [9], the authors attempt to optimize traffic engineering by adding a traffic classification module to the RYU controller. Despite the benefits of SDN technology and the ability to manage from a single central point, it is still vulnerable to attacks, tampering, and disasters. According to [PERSON] et al. [27], implementing a traffic classification technique can help detect DDoS attacks on an SDN network. Thus, they propose the use of GenClass, a tool based on classification rules generated by the Grammatical Evolution method. The authors demonstrate experimentally that the results of GenClass are better than other similar classification methods. Table 1 summarizes the related work. For every study, we state information about the network problem examined by the authors, the ML model and ML algorithm that were used, the type of traffic that they tried to classify, the used dataset, the feauters that were chosen as input to the classifier, the target performance metrics, the used SDN controller (if any), the network topology (if any), and the metric accuracy. The metric accuracy represents the best result of all the investigated ML algorithms. As shown in Table 1, there are a large number of efforts in the scientific literature to study traffic classification in the SDN emerging paradigm. Most of them utilize supervised ML classical algorithms such as SVM, k-MN, DT, LR, etc., while others adopt more recent approaches such as GenClass. Only a few of the researchers implement measurements using SDN controllers and particular topologies. The most commonly used metrics are accuracy, precision, recall, and F1-score. It is worth noting that accuracy can be improved, and this is achieved in our work by using the GenClass tool.