## 3 Related Work  
We classify the prior work on long flow load balancing into two parts: Traffic information collection and traffic scheduling. For traffic information collection, the simplest separation between long and short flows has to pay a high price in practice, due to the expansion of datacenter server scale and the acceleration of network rate. At present, there are three categories methods of long flow detection. As shown in Table 1, They are active measurement, passive statistics and sampling. 1. Active measurement Active measurement method is usually realized by Openflow protocol [23], such as Hierarchiacal Statistics Pulling [12]. The SDN controller sends Read-State messages periodically to the switches, then receives feedback containing the packets, bytes and duration for each flow. If the controller sets a long flow detection threshold and the received result of a flow exceeds the threshold, the flow is diagnosed as long flow. Nevertheless, collecting flow information on each switch brings huge communication cost to the controller. 2. Passive statistics The passive statistics method requires changing switch hardware, by adding a statistical module to each switch. Like DevoFlow [24], The function of statical module is to count the information on each flow. If the statistics of a certain flow exceeds the threshold of the long flow detection, the notification to controller is triggered. This method reduces the communication cost between controller and switches. 3. Sampling The sampling method is a universal approach to collect traffic information. However, for long flow detection, the existing solution often does not meet the requirements of long flow detection accuracy and suffers from feasibility issues [25]. FlowMon fisrt captured the suspicious long flow through coarse-grained sampling method optimized the TCAM resource allocation [26]. For traffic scheduling, there are two main methods for solving datacenter network long flow load balancing, namely, slice spraying and active scheduling. \begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Method** & **Accuracy** & **Cost** & **Complexity** & **Hardware Changes** \\ \hline Active measurement & High & High & Easy & No \\ Passive statistics & High & Low & Difficult & Yes \\ Sampling & Low & Mid & Easy & Yes \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Comparison of current long flow detection methods. Slice the spraying method forwards flow at the packet level, making the load on each link balanced, e.g., TinyFlow [27]. However, slice spraying can cause packets that are out of order, which affects the actual performance of the network. [PERSON] [28] advocated Load balances distributively at the granularity of flows instead of packets, avoiding excessive packet reordering [29]. For active scheduling, previous researchers have also given many different solutions. Hedera [12] was a centralized dynamic traffic scheduling algorithm, using a fixed polling cycle to sample network traffic, which is the earliest research paper based on the SDN architecture. By default, Hedera uses ECMP to forward traffic. After the switch discovers a long flow in the network, it sends the long flow information to the centralized scheduler. The scheduler will perform unified scheduling on all the long flows, and deliver the scheduling results to the switches in the form of OpenFlow flow entries. The switches forward the long flows indicated by the flow entries in the flow table. Otherwise, the switch forwards according to the ECMP mechanism. Hedera's centralized scheduling algorithm is very effective in theory, however, it does not completely solve the problem of traffic balancing in practice. The main reason for this phenomenon is that Hedera assumes competition between long flows leads to network congestion. In fact, short flow can compete due to high instantaneous rates, resulting in network congestion. Moreover, Hedera's long flow detection mechanism will also increase the network burden. DiffFlow was an improved scheme based on the Hedera algorithm.