Fast Path QoS - Traffic Conditioner is a fast path trTCM which helps implementing QoS on your network.
Fast Path QoS - Traffic Conditioner marks packets as either Green, Yellow, or Red. You can then process packets accordingly (by dropping red packets, for example).
Fast Path QoS - Traffic Conditioner operates in Color-Aware Mode (in which packets may have been previously colored) or in In Color-Blind Mode (in which are not precolored).
- RFC 4115 trTCM
- Color-aware and color-blind support
- Per packets or per bytes accounting
- FPN-SDK traffic conditioner API
- Exception Rate Limitation to limit the rate of packets sent as exceptions from fast path to Linux
The implementation is based on RFC 4115. The operation of the marker is described by two token generation rates, CIR and EIR, and two token bucket sizes, CBS and EBS.
|Token bucket generation rate||Token bucket size|
The number or token buckets is:
- incremented periodically, and,
- decremented whenever a packet meets a bucket’s criteria (i.e., if its size in less than or equal to the size corresponding to the number or tokens).
The rate at which the counter is decremented determines the average bandwidth. The value of the threshold determines the burstiness (intermittent increases and decreases in frequency of packet transmission).
The buckets status evolves over time, as illustrated in the table below:
|Time||Committed Traffic Token Bucket||Excess Traffic Token Bucket|
|t||As long as the token count is lower than the CBS, it is incremented by one CIR times per second.||As long as the token count is lower than the EBS, it is incremented by one EIR times per second.|
In the simplest case (green packet in color-aware mode), packets are processed as follows:
- If a green packet meets the Committed Traffic Token Bucket’s criteria, it remains marked as green.
- If a green packet does not meet the Committed Traffic Token Bucket’s criteria, but does meet the Excess Traffic Token Buckets criteria, it is marked as orange.
- If a green packet does not meet the Committed Traffic Token Bucket’s criteria, nor the Excess Traffic Token Buckets criteria, it is marked as red.
In addition to the RFC units, the API proposes to count either per-bytes or per-packets, and to rely or not on current packet color (color-aware or color-blind).
The algorithm is as follows, with Tc(t) and Te(t) the current number of tokens for the Committed Traffic Token Bucket and Excess Traffic Token Bucket respectively:
- When a green packet of size B (B = 1 in case of per-packets counting) arrives
at time t, then
- if Tc(t) - B > 0, the packet is marked green, and Tc(t) is decremented by B
- else if Te(t) - B > 0, the packet is marked yellow, and Te(t) is decremented by B
- else the packet is marked red.
- When a yellow packet of size B arrives at time t, then
- if Te(t) - B > 0, the packet is marked yellow, and Te(t) is decremented by B
- else the packet is marked red.
- In color-blind operation, the algorithm assumes that the packet is marked green.
Features implemented in the fast path use the traffic conditioner API:
- Rate limitation of exceptions packets (MCORE_TC_ERL option)
- Rate limitation of packets received(/sent) on(/from) the specified interface (both physical and virtual interface)