I'm new to OpenFlow and have just started studying Software Defined Networking. I have found a multiple websites mentioning that queues and meters are complementary to each other, and that they should not be thought of as replacements for one another. However, I could not find any source explaining the difference between their functionalities. Also, how are queues and meters in OpenFlow related to each other? Why is their relationship defined as "complementary"?
On the one hand, OpenFlow Queues:
- Guarantee minimum and maximum bandwidth for egress traffic.
- Are applied per port.
- Apply both traffic policing and traffic shaping, by dropping traffic exceeding the bandwidth limit or buffering to delay packets and eliminate peaks.
- Are not managed (create, delete, edit) by OpenFlow, but from OF-Config, OVSDB or specific tools in the scope of the switch operating system.
- OpenFlow is only able to query queue statistics from the switch.
On the other hand, OpenFlow meters:
- Guarantee only maximum bandwidth for ingress traffic.
- Are applied per flow.
- Are completely managed by OpenFlow (create, edit, delete).
- If the limit is reached, then the switch can either drop the excess traffic (traffic policing) or increase the drop precedence of the DSCP field of the packet's IP header (see Assured Forwarding behaviour in RFC 2597)
Summing up, queues and meters are complementary since queues meters allows you to control traffic per port and implement traffic shaping, while meters allow you to limit specific flows and pave the way for more complex QoS policies by utilising the DSCP fields and DiffServ.
- Section "5.7 Meter Table": https://www.opennetworking.org/wp-content/uploads/2013/04/openflow-spec-v1.3.1.pdf
- This paper demonstrates how queues and meters are combined to provide QoS: https://ieeexplore.ieee.org/document/7797664