Traffic shaping (also known as "packet shaping") is a computer network traffic management technique which delays some or all datagrams to bring them into compliance with a desired traffic profile. Traffic shaping is used to optimize or guarantee performance, improve latency, and/or increase usable bandwidth for some kinds of packets by delaying other kinds. It is often confused with traffic policing, the distinct but related practice of packet dropping and packet marking.
The most common type of traffic shaping is application-based traffic shaping. In application-based traffic shaping, fingerprinting tools are first used to identify applications of interest, which are then subject to shaping policies. Some controversial cases of application-based traffic shaping include P2P bandwidth throttling. Many application protocols use encryption to circumvent application-based traffic shaping. Another type of traffic shaping is route-based traffic shaping. Route-based traffic shaping is conducted based on previous-hop or next-hop information.
Functionality
If a link becomes saturated to the point where there is a significant level of contention (either upstream or downstream) latency can rise substantially. Traffic shaping can be used to prevent this from occurring and keep latency in check. Traffic shaping provides a means to control the volume of traffic being sent into a network in a specified period (bandwidth throttling), or the maximum rate at which the traffic is sent (rate limiting), or more complex criteria such as GCRA. This control can be accomplished in many ways and for many reasons; however traffic shaping is always achieved by delaying packets. Traffic shaping is commonly applied at the network edges to control traffic entering the network, but can also be applied by the traffic source (for example, computer or network card) or by an element in the network.
Uses
Traffic shaping is sometimes applied by traffic sources to ensure the traffic they send complies with a contract which may be enforced in the network by a policer.
It is widely used for network traffic engineering, and appears in domestic ISPs' networks as one of several Internet Traffic Management Practices (ITMPs). Some ISPs may use traffic shaping against peer-to-peer file-sharing networks, such as BitTorrent.
Nodes in an IP network which buffer packets before sending on a link which is at capacity result in an unintended traffic shaping effect. This can appear at for example a low bandwidth link (such as dial-up), a particularly expensive WAN link or satellite hop.
Traffic shaping is often used in combination with:
- Differentiated services, Integrated services — including traffic classification and prioritization.
- Weighted round robin (WRR) scheduling
- Random early detection (RED) queueing, Weighted RED (WRED) and RED In/Out (RIO) — Lessens the possibility of port queue buffer tail drops and this lowers the likelihood of TCP global synchronization.
- A number of port queue buffers.
- VLAN tagging IEEE 802.1q
Implementation
A traffic shaper works by delaying metered traffic such that each packet complies with the relevant traffic contract. Metering may be implemented with for example the leaky bucket or token bucket algorithms (the former typically in ATM and the latter in IP networks). Metered packets or cells are then stored in a FIFO buffer for each separately shaped class, until they can be transmitted in compliance with the prevailing traffic contract. This may occur immediately (if the traffic arriving at the shaper is already compliant), after some delay (waiting in the buffer until its scheduled release time) or never (in case of buffer overflow).
Overflow condition
All traffic shaper implementations have a finite buffer, and must cope with the case where the buffer is full. A simple and common approach is to drop traffic arriving while the buffer is full (tail drop), thus resulting in traffic policing as well as shaping. A more sophisticated implementation could apply a dropping algorithm such as Random Early Discard; a crude alternative would be to allow overflowing traffic through unshaped.
Traffic classification
Simple traffic shaping schemes shape all traffic uniformly by rate. More sophisticated shapers first classify traffic. Traffic classification categorises traffic (for example, based on port number or protocol). Different classes can then be shaped separately to achieve a desired effect.
Self-limiting sources
A self-limiting source produces traffic which never exceeds some upper bound, for example media sources which cannot transmit faster than their encoded rate allows. Self-limiting sources shape the traffic they generate to a greater or lesser degree. Congestion control mechanisms can also affect traffic shaping of sorts - for example TCP's window mechanism implements a variable rate constraint related to bandwidth-delay product.
TCP Nice, a modified version of TCP developed by researchers at the University of Texas at Austin, allows applications to request that certain TCP connections be managed by the operating system as near zero-cost background transfers, or "nice" flows. Such flows interfere only minimally with foreground (non-nice) flows, while reaping a large fraction of spare network bandwidth.
Relationship to traffic management
Traffic shaping is a specific technique and one of several which combined constitute Bandwidth management. Current common usage, particularly in discussion of domestic Internet service provision, frequently confuses traffic shaping with traffic management and traffic policing, with classification policies and in general with any measure deliberately taken by an ISP which is detrimental to some user's IP traffic performance.
ISPs and traffic management
See bandwidth throttling, bandwidth management, and also Teletraffic engineering in broadband networks
Traffic shaping is of interest especially to Internet Service Providers (ISPs). Their high-cost, high-traffic networks are their major assets, and as such, are the focus of all their attentions. They sometimes use traffic shaping to optimize the use of their network, sometimes by intelligently shaping traffic according to importance, other times by discouraging uses of applications by harsh means. There are those who believe it is not the ISP's place to decide what is "important"; in such cases per-client traffic shaping is more effective without creating potential controversies about what traffic is being controlled.
Benefits to the ISP
To ISPs, mere protocol identification (classification) gives the intangible yet significant benefit of seeing what internet traffic is flowing through the network. From this they can see which subscribers are doing what on their network and can target services to the subscriber base they have attracted. However, as time progresses, more and more protocols are using tunneling and encryption to defeat these methods. Also, many protocols are very difficult or impossible to detect. In such cases, per-client shaping is more effective. By establishing policies based on the IP or IP grouping of a client, ISPs ensure that end users cannot defeat shaping by disguising protocols or encrypting their traffic.
In addition, intelligent shaping schemes can guarantee a particular Quality of Service (often measured in jitter, packet loss, and latency) for an application or a user while still allowing other traffic to use all remaining bandwidth. This allows ISPs to offer Differentiated services and to upsell existing services to subscribers (such as offering minimum-latency computer gaming for an additional fee on top of basic internet).
More importantly, shaping allows ISPs to tier their services using software, reducing their costs and increasing the menu of products they can offer.
For Wireless ISP's, particularly those who use Wifi-based protocols, Congestive collapse is a serious problem. Due to the unfortunate nature of Wifi when several stations are all trying to access a single access point at once, once the load is past roughly 95% channel load, the throughput starts to drop dramatically. Whilst the channel stays at the same usage (roughly 99%), the throughput just gets slower and slower due to the number of retries. TCP performance may be greatly impacted by the long delay over the wireless link caused by the congestion at the access point. A long delay can cause expiration of the TCP RTO timer at the sender's side and then force TCP into slow-start. On the other hand, if the long delay is experienced on the ACK path, it could cause the so-called "ACK compression", which will disturb the synchronization between the TCP sender and the TCP receiver. Multiple compressed ACKs if passing through the wireless access point all together can clock-out the same amount of large packets from the TCP sender and all of them may arrive at the wireless bottleneck in a short time and further worsen the congestion there. Therefore, traffic shaping should be seriously considered on a WISP in order to avoid these possible performance impacts.
Enterprises
Most companies with remote offices are now connected via a Wide area network (WAN). Applications tend to become centrally hosted at the head office and remote offices are expected to pull data from central databases and server farms. As applications become more hungry in terms of bandwidth and prices of dedicated circuits being relatively high in most areas of the world, instead of increasing the size of their WAN circuits, companies feel the need to properly manage their circuits to make sure business-oriented traffic gets priority over best-effort traffic. Traffic shaping is thus a good means for companies to avoid purchasing additional bandwidth while properly managing these resources.
Alternatives to traffic shaping in this regards are application acceleration and WAN optimization and compression, which are fundamentally different from traffic shaping. Traffic shaping defines bandwidth rules whereas application acceleration using multiple techniques like a TCP Performance Enhancing Proxy. WAN optimization and compression (WOC) on the other hand would use compression and differential algorithms and techniques to compress data streams or send only differences in file updates. The latter is quite effective for chatty protocols like CIFS.