## 3 FlexMonitor
### Monitoring Request  
In FlexMonitor, the monitoring requests corresponding to monitoring tasks of upper management applications can be delivered to the monitoring task interpretation part through the northbound \begin{table}
\begin{tabular}{p{56.9 pt} p{56.9 pt} p{56.9 pt} p{56.9 pt} p{56.9 pt}} \hline \hline
**Data Source** &
\begin{tabular}{c} **Monitoring** \\ **Strategy** \\ \end{tabular} & **Approaches** & **Application Scenario** & **Kind of Data** \\ \hline raw packets & switch selection & sampling from the targeted switches & extract the flow features or analyze the content of packets, such as detecting malicious traffic, etc. & the header of packet or the whole packet \\ \hline statistics data & switch selection & polling or sampling from the targeted switches & traffic engineering, hot spot detection, link capacity planning, etc. & port packets/bytes, flow packets/bytes, etc. \\ \hline end-to-end & end-host pair selection & make the active measurements between the targeted end–host pairs & hard to directly obtain the required statistics data from the targeted switches switches & end-to-end latency, end-to-to-to \\ \hline network event triggering message & event definition & define the two factors for network events & some simple network events, such as large flow detection, hot spot detection, etc. & event triggering messages \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Different monitoring data sources in FlexMonitor. interface. To make an effective interpretation, the method of monitoring requests is very important for upper management applications. Obviously, the definition of monitoring requests is a key step to the efficient network monitoring. There are mainly two important aspects during the monitoring request definition. One is that the monitoring request definition needs to accurately and clearly describe the monitoring tasks of upper management applications; the other is that the monitoring request definition needs to be simple, which can be helpful to interpret monitoring tasks of upper management applications. In FlexMonitor, the monitoring tasks can be classified into three major categories. The first category refers to the basic monitoring tasks, which may include flow statistics collection, jitter, latency, link utilization, etc. Each basic monitoring task usually corresponds to many classic scheduler algorithms. In FlexMonitor, the basic monitoring task can choose one of its corresponding scheduler algorithms as the default scheduler algorithm. Besides this, it can also specify a customized scheduler algorithm in the monitoring request of this monitoring task. The second category refers to these monitoring tasks which have been designed considering what monitoring strategies will be adopted and for the chosen monitoring strategy what scheduler or detection algorithms will be adopted. Generally, for some classic network events, their corresponding monitoring solutions have been well studied and corresponding scheduler or detection algorithms tend to be mature and perfect. To simplify the interpretation of monitoring requests, related monitoring strategies and related scheduler or detection algorithms can be initially specified in the form of configure files in FlexMonitor for these monitoring tasks. When the upper management applications need to monitor one of these network events, FlexMonitor can directly adopt the pre-installed monitoring strategy and scheduler or detection algorithm to carry out the monitoring task. The three category refers to the complex monitoring tasks, which belongs to neither the first category nor the second category. If these monitoring tasks are directly carried out, the monitoring implementation may be complex and the monitoring overhead may be high. Therefore, if the upper monitoring applications need to monitor a complex monitoring task, this monitoring task will be broken down into several basic monitoring tasks in FlexMonitor.