A method for network management, comprising: installing monitoring rules in one or more network devices on a network using an intelligent network middleware; detecting application traffic on the network transparently using an application demand monitor, the application demand monitor computing a traffic matrix corresponding to each application by polling a counter of a monitoring rule associated with the respective application for collecting statistics concerning the network traffic of the respective application; predicting future network demands for the network by analyzing historical and current demands, if a sufficient number of measurements have been performed by the application demand monitor with regard to the application traffic of the plurality of applications updating the monitoring rules once the counters of the monitoring rules are collected; and determining and optimizing network paths to meet network demands and maximize utilization and application performance with minimal congestion on the network by considering a network topology, the application traffic, and the predicted future network demands to compute the paths; wherein updating a monitoring rule comprises: calculate new bandwidth B' for an application, wherein the bandwidth is calculated according to a counter of the monitoring rule associated with the application; if |B-B' |/B is larger than a stability threshold , mark the monitoring rule as unstable, wherein B is the previously calculated bandwidth; if a rule is unstable, the frequency of applying the rule is updated from F to F' where F' = α ∗ F and α is a constant, α > 1. installing monitoring rules in one or more network devices on a network using an intelligent network middleware; detecting application traffic on the network transparently using an application demand monitor, the application demand monitor computing a traffic matrix corresponding to each application by polling a counter of a monitoring rule associated with the respective application for collecting statistics concerning the network traffic of the respective application; predicting future network demands for the network by analyzing historical and current demands, if a sufficient number of measurements have been performed by the application demand monitor with regard to the application traffic of the plurality of applications updating the monitoring rules once the counters of the monitoring rules are collected; and determining and optimizing network paths to meet network demands and maximize utilization and application performance with minimal congestion on the network by considering a network topology, the application traffic, and the predicted future network demands to compute the paths; wherein updating a monitoring rule comprises: calculate new bandwidth B' for an application, wherein the bandwidth is calculated according to a counter of the monitoring rule associated with the application; if |B-B' |/B is larger than a stability threshold , mark the monitoring rule as unstable, wherein B is the previously calculated bandwidth; if a rule is unstable, the frequency of applying the rule is updated from F to F' where F' = α ∗ F and α is a constant, α > 1. calculate new bandwidth B' for an application, wherein the bandwidth is calculated according to a counter of the monitoring rule associated with the application; if |B-B' |/B is larger than a stability threshold , mark the monitoring rule as unstable, wherein B is the previously calculated bandwidth; if a rule is unstable, the frequency of applying the rule is updated from F to F' where F' = α ∗ F and α is a constant, α > 1. <EOS>