--- man/man8/tc-cake.8 | 530 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 530 insertions(+) create mode 100644 man/man8/tc-cake.8
diff --git a/man/man8/tc-cake.8 b/man/man8/tc-cake.8 new file mode 100644 index 0000000..92b4e41 --- /dev/null +++ b/man/man8/tc-cake.8 @@ -0,0 +1,530 @@ +.TH CAKE 8 "15 October 2015" "iproute2" "Linux" +.SH NAME +CAKE \- COMMON Applications Kept Enhanced (CAKE) +.SH SYNOPSIS +.B tc qdisc ... cake +.br + [ +.B bandwidth RATE +| +.B unlimited +| +.B autorate_ingress +] +.br + [ +.B rtt +TIME | +.B datacenter +| +.B lan +| +.B metro +| +.B regional +| +.B internet +| +.B oceanic +| +.B satellite +| +.B interplanetary +] +.br + [ +.B besteffort +| +.B squash +| +.B precedence +| +.B diffserv8 +| +.B diffserv4 +| +.B diffserv3 +| +.B diffserv-llt +] +.br + [ +.B flowblind +| +.B srchost +| +.B dsthost +| +.B hosts +| +.B flows +| +.B dual-srchost +| +.B dual-dsthost +| +.B triple-isolate +] +.br + [ +.B nat +| +.B nonat +] +.br + [ +.B ptm +| +.B atm +| +.B noatm +] +.br + [ +.B overhead BYTES +| +.B conservative +| +.B raw +] +.br + [ +.B mpu +BYTES +] +.br + [ +.B memlimit +SIZE +] + +.SH DESCRIPTION +CAKE (Common Applications Kept Enhanced) is a shaping queue discipline which uses both AQM and FQ. +It combines COBALT, which is an AQM algorithm combining Codel and BLUE, +a shaper which operates in deficit mode, and a variant of DRR for flow isolation. +An 8-way set-associative hashing is used to virtually eliminate hash collisions. +Priority queuing is available through a simplified diffserv implementation. +Overhead compensation for various encapsulation schemes is tightly integrated. + +All settings are optional; the default settings are chosen to be sensible in most common deployments. +Most people will only need to set the +.B bandwidth +parameter to get useful results, but reading the +.B Overhead Compensation +and +.B Round Trip Time +sections is strongly encouraged. + + +.SH SHAPER PARAMETERS +CAKE uses a deficit-mode shaper, which does not exhibit the initial burst typical of token-bucket shapers. +It will automatically burst precisely as much as required to maintain the configured throughput. +As such, it is very straightforward to configure. +.PP +.B unlimited +(default) +.br + No limit on the bandwidth. +.PP +.B bandwidth +RATE +.br + Set the shaper bandwidth. See +.BR tc(8) +or examples below for details of the RATE value. +.PP +.B autorate_ingress +.br + Automatic capacity estimation based on traffic arriving at this qdisc. +This is most likely to be useful with cellular links, which tend to change quality randomly. A +.B bandwidth +parameter can be used in conjunction to specify an initial estimate. +The shaper will periodically be set to a bandwidth slightly below the estimated rate. +This estimator cannot estimate the bandwidth of links downstream of itself. + +.SH OVERHEAD COMPENSATION PARAMETERS +The size of each packet on the wire may differ from that seen by Linux. +The following parameters allow CAKE to compensate for this difference by internally considering +each packet to be bigger than Linux informs it. +To assist users who are not expert network engineers, keywords have been provided +to represent a number of common link technologies. + +.SS Manual Overhead Specification +.B overhead +BYTES +.br + Adds BYTES to the size of each packet. BYTES may be negative; values between -64 and 256 (inclusive) are accepted. +.PP +.B mpu +BYTES +.br + Rounds each packet (including overhead) up to a minimum length BYTES. BYTES may not be negative; values between 0 and 256 (inclusive) are accepted. +.PP +.B atm +.br + Compensates for ATM cell framing, which is normally found on ADSL links. This is performed after the +.B overhead +parameter above. ATM uses fixed 53-byte cells, each of which can carry 48 bytes payload. +.PP +.B ptm +.br + Compensates for PTM encoding, which is normally found on VDSL2 links and uses a 64b/65b encoding scheme. +.PP +.B noatm +.br + Disables ATM and PTM compensation. + +.SS Failsafe Overhead Keywords +These two keywords are provided for quick-and-dirty setup. Use them if you can't be bothered to read the rest of this section. +.PP +.B raw +(default) +.br + Turns off all overhead compensation in CAKE. The packet size reported by Linux will be used directly. +.PP + Other overhead keywords may be added after "raw". The effect of this is to make the overhead compensation operate +relative to the reported packet size, not the underlying IP packet size. +.PP +.B conservative +.br + Compensates for more overhead than is likely to occur on any widely-deployed link technology. +.br + Equivalent to +.B overhead 48 atm. + +.SS ADSL Overhead Keywords +Most ADSL modems have a way to check which framing scheme is in use. +Often this is also specified in the settings document provided by the ISP. +The keywords in this section are intended to correspond with these sources of information. +All of them implicitly set the +.B atm +flag. +.PP +.B pppoa-vcmux +.br + Equivalent to +.B overhead 10 atm +.PP +.B pppoa-llc +.br + Equivalent to +.B overhead 14 atm +.PP +.B pppoe-vcmux +.br + Equivalent to +.B overhead 32 atm +.PP +.B pppoe-llcsnap +.br + Equivalent to +.B overhead 40 atm +.PP +.B bridged-vcmux +.br + Equivalent to +.B overhead 24 atm +.PP +.B bridged-llcsnap +.br + Equivalent to +.B overhead 32 atm +.PP +.B ipoa-vcmux +.br + Equivalent to +.B overhead 8 atm +.PP +.B ipoa-llcsnap +.br + Equivalent to +.B overhead 16 atm +.PP +See also the Ethernet Correction Factors section below. + +.SS VDSL2 Overhead Keywords +ATM was dropped from VDSL2 in favour of PTM, which is a much more straightforward framing scheme. +Some ISPs retained PPPoE for compatibility with their existing back-end systems. +.PP +.B pppoe-ptm +.br + Equivalent to +.B overhead 27 ptm +.PP +.B bridged-ptm +.br + Equivalent to +.B overhead 19 ptm +.PP +See also the Ethernet Correction Factors section below. + +.SS DOCSIS Cable Overhead Keyword +DOCSIS is the universal standard for providing Internet service over cable-TV infrastructure. + +In this case, the actual on-wire overhead is less important than the packet size the head-end equipment uses for shaping and metering. +This is specified to be an Ethernet frame including the CRC (aka FCS). +.PP +.B docsis +.br + Equivalent to +.B overhead 18 mpu 64 noatm + +.SS Ethernet Overhead Keywords +.PP +.B ethernet +.br + Accounts for Ethernet's preamble, inter-frame gap, and Frame Check Sequence. Use this keyword when the bottleneck being shaped for is an actual Ethernet cable. +.br + Equivalent to +.B overhead 38 mpu 84 noatm +.PP +.B ether-vlan +.br + Adds 4 bytes to the overhead compensation, accounting for a VLAN header appended to the Ethernet frame header. NB: Some ISPs use one or even two of these within PPPoE; this keyword may be repeated as necessary to express this. + +.SH ROUND TRIP TIME PARAMETERS +Active Queue Management (AQM) consists of embedding congestion signals in the packet flow, which +receivers use to instruct senders to slow down when the queue is persistently occupied. CAKE +uses ECN signalling when available, and packet drops otherwise, according to a combination of the +Codel and BLUE AQM algorithms called COBALT. + +Very short latencies require a very rapid AQM response to adequately control latency. +However, such a rapid response tends to impair throughput when the actual RTT is relatively long. +CAKE allows specifying the RTT it assumes for tuning various parameters. Actual RTTs within +an order of magnitude of this will generally work well for both throughput and latency management. +.PP +.B rtt +TIME +.br + Manually specify an RTT. +.PP +.B datacenter +.br + For extremely high-performance networks only. Equivalent to +.B rtt 100us. +.PP +.B lan +.br + For typical Ethernet and Wi-Fi networks, at home or in the office. Don't use this +when shaping for an Internet access link. Equivalent to +.B rtt 1ms. +.PP +.B metro +.br + For traffic mostly within a single city. Equivalent to +.B rtt 10ms. +.PP +.B regional +.br + For traffic mostly within a European-sized country. Equivalent to +.B rtt 30ms. +.PP +.B internet +(default) +.br + This is suitable for typical Internet traffic. Equivalent to +.B rtt 100ms. +.PP +.B oceanic +.br + For Internet traffic with generally above-average latency, such as that suffered by Australasian residents. Equivalent to +.B rtt 300ms. +.PP +.B satellite +.br + For traffic via geostationary satellites. Equivalent to +.B rtt 1000ms. +.PP +.B interplanetary +.br + So named because Jupiter is about 1 light-hour from Earth. Use this to (almost) completely disable AQM actions. Equivalent to +.B rtt 3600s. + +.SH FLOW ISOLATION PARAMETERS +With flow isolation enabled, CAKE places packets from different flows into different queues, +each of which carries its own AQM state. Packets from each queue are then delivered fairly, +according to a DRR++ algorithm which minimises latency for "sparse" flows. CAKE uses a set-associative +hashing algorithm to minimise flow collisions. + +These keywords specify whether fairness based on source address, destination address, +individual flows, or any combination of those is desired. +.PP +.B flowblind +.br + Disables flow isolation; all traffic passes through a single queue for each tin. +.PP +.B srchost +.br + Flows are defined only by source address. Could be useful on the egress path of an ISP backhaul. +.PP +.B dsthost +.br + Flows are defined only by destination address. Could be useful on the ingress path of an ISP backhaul. +.PP +.B hosts +.br + Flows are defined by source-destination host pairs. This is host isolation, rather than flow isolation. +.PP +.B flows +.br + Flows are defined by the entire 5-tuple of source address, destination address, transport +protocol, source port and destination port. This is the type of flow isolation performed by +SFQ and fq_codel. +.PP +.B dual-srchost +.br + Flows are defined by the 5-tuple, and fairness is applied first over source addresses, then +over individual flows. Good for use on egress traffic from a LAN to the internet, where it'll +prevent any one LAN host from monopolising the uplink, regardless of the number of flows they use. +.PP +.B dual-dsthost +.br + Flows are defined by the 5-tuple, and fairness is applied first over destination addresses, then +over individual flows. Good for use on ingress traffic to a LAN from the internet, where it'll +prevent any one LAN host from monopolising the downlink, regardless of the number of flows they use. +.PP +.B triple-isolate +(default) +.br + Flows are defined by the 5-tuple, and fairness is applied over source *and* destination addresses +intelligently (ie. not merely by host-pairs), and also over individual flows. Use this if you're +not certain whether to use dual-srchost or dual-dsthost; it'll do both jobs at once, preventing +any one host on *either* side of the link from monopolising it with a large number of flows. +.PP +.B nat +.br + Instructs Cake to perform a NAT lookup before applying flow-isolation rules, to determine the true +addresses and port numbers of the packet, to improve fairness between hosts "inside" the NAT. This +has no practical effect in "flowblind" or "flows" modes, or if NAT is performed on a different host. +.PP +.B nonat +(default) +.br + Cake will not perform a NAT lookup. Flow isolation will be performed using the addresses and +port numbers directly visible to the interface Cake is attached to. + +.SH PRIORITY QUEUE PARAMETERS +CAKE can divide traffic into "tins" based on the Diffserv field. Each tin has its own independent +set of flow-isolation queues, and is serviced based on a WRR algorithm. To avoid perverse Diffserv +marking incentives, tin weights have a "priority sharing" value when bandwidth used by that tin is +below a threshold, and a lower "bandwidth sharing" value when above. Bandwidth is compared against +the threshold using the same algorithm as the deficit-mode shaper. + +Detailed customisation of tin parameters is not provided. The following presets perform all necessary +tuning, relative to the current shaper bandwidth and RTT settings. +.PP +.B besteffort +.br + Disables priority queuing by placing all traffic in one tin. +.PP +.B precedence +.br + Enables legacy interpretation of TOS "Precedence" field. Use of this preset on the modern Internet is firmly discouraged. +.PP +.B diffserv-llt +.br + Provides a "Latency-Loss Tradeoff" implementation with five tins: +.br + Low Loss (TOS1, TOS2), 100% threshold, increased Codel target. +.br + Best Effort (general), 100% threshold, normal Codel target & interval. +.br + Low Latency (TOS4, TOS5, VA, EF), 100% threshold, reduced Codel interval. +.br + Bulk (CS1), 6.25% threshold, normal Codel target & interval. +.br + Net Control (CS6, CS7), 6.25% threshold, increased Codel target & interval. +.PP +.B diffserv4 +.br + Provides a general-purpose Diffserv implementation with four tins: +.br + Bulk (CS1), 6.25% threshold, generally low priority. +.br + Best Effort (general), 100% threshold. +.br + Video (AF4x, AF3x, CS3, AF2x, CS2, TOS4, TOS1), 50% threshold. +.br + Voice (CS7, CS6, EF, VA, CS5, CS4), 25% threshold. +.PP +.B diffserv3 +(default) +.br + Provides a simple, general-purpose Diffserv implementation with three tins: +.br + Bulk (CS1), 6.25% threshold, generally low priority. +.br + Best Effort (general), 100% threshold. +.br + Voice (CS7, CS6, EF, VA, TOS4), 25% threshold, reduced Codel interval. + +.SH OTHER PARAMETERS +.B memlimit +LIMIT +.br + Limit the memory consumed by Cake to LIMIT bytes. Note that this does not +translate directly to queue size, as there is some overhead in the data +structures containing the packets, especially for small packets. + + By default, the limit is calculated based on the bandwidth and RTT settings. + + +.SH EXAMPLES +#tc qdisc add dev enp3s0 root cake bandwidth 30mbit +.br +#tc -s qdisc show dev enp3s0 +.br +qdisc cake 8001: root refcnt 2 bandwidth 30Mbit diffserv4 flows rtt 100.0ms raw + Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) + backlog 0b 0p requeues 0 +capacity estimate: 30Mbit +.br + Tin 0 Tin 1 Tin 2 Tin 3 +.br + thresh 30Mbit 28125Kbit 22500Kbit 7500Kbit +.br + target 5.0ms 5.0ms 5.0ms 5.0ms +.br +interval 100.0ms 100.0ms 100.0ms 100.0ms +.br +Pk-delay 0us 0us 0us 0us +.br +Av-delay 0us 0us 0us 0us +.br +Sp-delay 0us 0us 0us 0us +.br + pkts 0 0 0 0 +.br + bytes 0 0 0 0 +.br +way-inds 0 0 0 0 +.br +way-miss 0 0 0 0 +.br +way-cols 0 0 0 0 +.br + drops 0 0 0 0 +.br + marks 0 0 0 0 +.br +Sp-flows 0 0 0 0 +.br +Bk-flows 0 0 0 0 +.br +last-len 0 0 0 0 +.br +max-len 0 0 0 0 +.br + + +.SH SEE ALSO +.BR tc (8), +.BR tc-codel (8), +.BR tc-fq_codel (8), +.BR tc-red (8) + +.SH AUTHORS +CAKE was implemented by Jonathan Morton, with contributions from Dave Taht, +Kevin Darbyshire-Bryant, Toke Hoiland-Jorgensen and Loganaden Velvindron. +This manual page was written by Loganaden Velvindron. Please report corrections +to the Linux Networking mailing list <[email protected]>. -- 2.7.4 _______________________________________________ Cake mailing list [email protected] https://lists.bufferbloat.net/listinfo/cake
