# Artificial Intelligence Enabled Routing in Software Defined Networking
## 2 Related Works  
Packets passing through a route from source to destination nodes encounter various delay types [23], such as processing, queuing, transmission, and propagation delays. Packet delay causes packet loss and throughput degradation during transmission. SDN routing schemes are generally classified into two types, namely, static and dynamic. With static routing, the well-known Dijkstra algorithm [24] considered only edge weights in the associated network topology to find the shortest path for data transmission. The authors of [25] extended the Dijkstra algorithm by taking into account node weights to select a route that is better than the shortest path in terms of distance. Besides, the authors of [26] used depth-first search to find multiple paths from source-to-destination nodes in a hierarchical network topology then determined the best path using worst-fit searching. However, a selected route will not change with static routing unless a link breakup is detected. To avoid excessive single-link burden and packet loss caused by static routing due to diversified network conditions, such as burst traffic, link breakups, and device crashes, dynamic routing schemes have been proposed. [PERSON] et al. [27] proposed a dynamic routing scheme with load-balanced path configuration. [PERSON] et al. [28] calculated each path utilization at the controller with link utilizations being received periodically from the data plane, and then changed the forwarding path, if necessary. The authors of [29] presented an effective dynamic routing mechanism with which the controller is aware of each link status and connected port number between any two switches in the data plane through the link layer discovery protocol [30]. The connected port number was then used to configure the corresponding flow entry on each switch according to a route selection algorithm. To reduce packet loss during path reconfiguration, rerouting was triggered when the link utilization of the current path exceeds 80%. Although dynamic routing can perform rerouting under certain pre-defined conditions by periodically monitoring the status of each data flow, problems concerning a suitable monitoring period duration and the lack of learning ability from past experiences to avoid similar but ineffective path decisions remain unsolved. The authors of [31] emphasized that the monitoring period duration has a significant impact on network performance. A monitoring period that is too short may cause excessive communication burden on the southbound interface. By contrast, a monitoring period that is too long may cause the control plane to obtain outdated information from the data plane. Therefore, the monitoring period duration is crucial for dynamic routing. Besides, the configuration of an alternative path in the data plane is time consuming. That is, data transmission through the original path may result in packet loss due to link congestion before the completion of the alternative path configuration. Furthermore, the system traffic load usually varies with time. Given Figure 5 as an example, the selected path can afford data transmission from 10 to 50 s in the case of light load. However, the selected path may cause congestion in the case of heavy load at about 60 s. Although the control plane can find an alternative path to alleviate congestion, the alternative path will be rerouted to the previously-selected path due to the shortest path selection from 70 to 110 s. At approximately 120 s, link congestion may occur again in the case of heavy load. Meanwhile, an alternative path same as the one decided at 60 s is selected again. In other words, dynamic routing schemes are blind to past experiences and thus lack learning abilities. In recent years, several routing mechanisms [32; 33; 34; 35; 36; 37; 38] combined with AI technology have been proposed to enhance learning ability from past experiences and smart route-decision capability, thereby improving overall network performance.