{
    "content": [
        {
            "type": "text",
            "text": "# tc-cake(8) (man)\n\n**Summary:** CAKE - Common Applications Kept Enhanced (CAKE)\n\n## Examples\n\n- `# tc qdisc delete root dev eth0`\n- `# tc qdisc add root dev eth0 cake bandwidth 100Mbit ethernet`\n- `# tc -s qdisc show dev eth0`\n- `qdisc  cake  1:  root  refcnt  2 bandwidth 100Mbit diffserv3 triple-isolate rtt 100.0ms noatm`\n- `overhead 38 mpu 84`\n- `Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)`\n- `backlog 0b 0p requeues 0`\n- `memory used: 0b of 5000000b`\n- `capacity estimate: 100Mbit`\n- `min/max network layer size:        65535 /       0`\n- `min/max overhead-adjusted size:    65535 /       0`\n- `average network hdr offset:            0`\n- `Bulk  Best Effort        Voice`\n- `thresh       6250Kbit      100Mbit       25Mbit`\n- `target          5.0ms        5.0ms        5.0ms`\n- `interval      100.0ms      100.0ms      100.0ms`\n- `pkdelay          0us          0us          0us`\n- `avdelay          0us          0us          0us`\n- `spdelay          0us          0us          0us`\n- `pkts                0            0            0`\n- `bytes               0            0            0`\n- `wayinds            0            0            0`\n- `waymiss            0            0            0`\n- `waycols            0            0            0`\n- `drops               0            0            0`\n- `marks               0            0            0`\n- `ackdrop            0            0            0`\n- `spflows            0            0            0`\n- `bkflows            0            0            0`\n- `unflows            0            0            0`\n- `maxlen             0            0            0`\n- `quantum           300         1514          762`\n- `After some use:`\n- `# tc -s qdisc show dev eth0`\n- `qdisc cake 1: root refcnt 2 bandwidth 100Mbit  diffserv3  triple-isolate  rtt  100.0ms  noatm`\n- `overhead 38 mpu 84`\n- `Sent 44709231 bytes 31931 pkt (dropped 45, overlimits 93782 requeues 0)`\n- `backlog 33308b 22p requeues 0`\n- `memory used: 292352b of 5000000b`\n- `capacity estimate: 100Mbit`\n- `min/max network layer size:           28 /    1500`\n- `min/max overhead-adjusted size:       84 /    1538`\n- `average network hdr offset:           14`\n- `Bulk  Best Effort        Voice`\n- `thresh       6250Kbit      100Mbit       25Mbit`\n- `target          5.0ms        5.0ms        5.0ms`\n- `interval      100.0ms      100.0ms      100.0ms`\n- `pkdelay        8.7ms        6.9ms        5.0ms`\n- `avdelay        4.9ms        5.3ms        3.8ms`\n- `spdelay        727us        1.4ms        511us`\n- `pkts             2590        21271         8137`\n- `bytes         3081804     30302659     11426206`\n- `wayinds            0           46            0`\n- `waymiss            3           17            4`\n- `waycols            0            0            0`\n- `drops              20           15           10`\n- `marks               0            0            0`\n- `ackdrop            0            0            0`\n- `spflows            2            4            1`\n- `bkflows            1            2            1`\n- `unflows            0            0            0`\n- `maxlen          1514         1514         1514`\n- `quantum           300         1514          762`\n\n## See Also\n\n- tc(8)\n- tc-codel(8)\n- tc-fqcodel(8)\n- tc-htb(8)\n\n## Section Outline\n\n- **NAME** (2 lines)\n- **SYNOPSIS** (1 lines) — 1 subsections\n  - tc qdisc ... cake (20 lines)\n- **DESCRIPTION** (12 lines)\n- **SHAPER PARAMETERS** (4 lines) — 2 subsections\n  - unlimited (default) (5 lines)\n  - autorate-ingress (7 lines)\n- **OVERHEAD COMPENSATION PARAMETERS** (6 lines) — 24 subsections\n  - Manual Overhead Specification (8 lines)\n  - atm (4 lines)\n  - ptm (4 lines)\n  - noatm (3 lines)\n  - Failsafe Overhead Keywords (3 lines)\n  - raw (default) (7 lines)\n  - conservative (5 lines)\n  - ADSL Overhead Keywords (5 lines)\n  - pppoa-vcmux (2 lines)\n  - pppoa-llc (2 lines)\n  - pppoe-vcmux (2 lines)\n  - pppoe-llcsnap (2 lines)\n  - bridged-vcmux (2 lines)\n  - bridged-llcsnap (2 lines)\n  - ipoa-vcmux (2 lines)\n  - ipoa-llcsnap (5 lines)\n  - VDSL2 Overhead Keywords (3 lines)\n  - pppoe-ptm (6 lines)\n  - bridged-ptm (7 lines)\n  - DOCSIS Cable Overhead Keyword (6 lines)\n  - docsis (3 lines)\n  - Ethernet Overhead Keywords (1 lines)\n  - ethernet (4 lines)\n  - ether-vlan (5 lines)\n- **ROUND TRIP TIME PARAMETERS** (20 lines) — 8 subsections\n  - datacentre (2 lines)\n  - lan (3 lines)\n  - metro (2 lines)\n  - regional (2 lines)\n  - internet (default) (2 lines)\n  - oceanic (3 lines)\n  - satellite (2 lines)\n  - interplanetary (4 lines)\n- **FLOW ISOLATION PARAMETERS** (8 lines) — 10 subsections\n  - flowblind (2 lines)\n  - srchost (3 lines)\n  - dsthost (3 lines)\n  - hosts (3 lines)\n  - flows (4 lines)\n  - dual-srchost (5 lines)\n  - dual-dsthost (5 lines)\n  - triple-isolate (default) (6 lines)\n  - nat (5 lines)\n  - nonat (default) (4 lines)\n- **PRIORITY QUEUE PARAMETERS** (10 lines) — 4 subsections\n  - besteffort (2 lines)\n  - precedence (3 lines)\n  - diffserv4 (6 lines)\n  - diffserv3 (default) (15 lines)\n- **OTHER PARAMETERS** (9 lines) — 2 subsections\n  - wash (11 lines)\n  - split-gso (10 lines)\n- **OVERRIDING CLASSIFICATION WITH TC FILTERS** (5 lines) — 2 subsections\n  - Tin override (10 lines)\n  - Flow hash override (23 lines)\n- **EXAMPLES** (69 lines)\n- **SEE ALSO** (3 lines)\n- **AUTHORS** (10 lines)\n\n## Full Content\n\n### NAME\n\nCAKE - Common Applications Kept Enhanced (CAKE)\n\n### SYNOPSIS\n\n#### tc qdisc ... cake\n\n[ bandwidth RATE | unlimited* | autorate-ingress ]\n[  rtt  TIME | datacentre | lan | metro | regional | internet* | oceanic | satellite | inter‐‐\nplanetary ]\n[ besteffort | diffserv8 | diffserv4 | diffserv3* ]\n[ flowblind | srchost | dsthost | hosts | flows | dual-srchost | dual-dsthost  |  triple-iso‐‐\nlate* ]\n[ nat | nonat* ]\n[ wash | nowash* ]\n[ split-gso* | no-split-gso ]\n[ ack-filter | ack-filter-aggressive | no-ack-filter* ]\n[ memlimit LIMIT ]\n[ fwmark MASK ]\n[ ptm | atm | noatm* ]\n[ overhead N | conservative | raw* ]\n[ mpu N ]\n[ ingress | egress* ]\n(* marks defaults)\n\n### DESCRIPTION\n\nCAKE  (Common  Applications  Kept  Enhanced) is a shaping-capable queue discipline which uses\nboth AQM and FQ.  It combines COBALT, which is an AQM algorithm combining Codel and  BLUE,  a\nshaper which operates in deficit mode, and a variant of DRR++ for flow isolation.  8-way set-\nassociative hashing is used to virtually eliminate  hash  collisions.   Priority  queuing  is\navailable  through  a  simplified diffserv implementation.  Overhead compensation for various\nencapsulation schemes is tightly integrated.\n\nAll settings are optional; the default settings are chosen to be sensible in most common  de‐\nployments.   Most people will only need to set the bandwidth parameter to get useful results,\nbut reading the Overhead Compensation and Round Trip Time sections is strongly encouraged.\n\n### SHAPER PARAMETERS\n\nCAKE uses a deficit-mode shaper, which does not exhibit the initial burst typical  of  token-\nbucket  shapers.   It  will automatically burst precisely as much as required to maintain the\nconfigured throughput.  As such, it is very straightforward to configure.\n\n#### unlimited (default)\n\nNo limit on the bandwidth.\n\nbandwidth RATE\nSet the shaper bandwidth.  See tc(8) or examples below for details of the RATE value.\n\n#### autorate-ingress\n\nAutomatic capacity estimation based on traffic arriving at this  qdisc.   This  is  most\nlikely  to be useful with cellular links, which tend to change quality randomly.  A bandwidth\nparameter can be used in conjunction to specify an initial estimate.  The shaper will period‐\nically  be set to a bandwidth slightly below the estimated rate.  This estimator cannot esti‐\nmate the bandwidth of links downstream of itself.\n\n### OVERHEAD COMPENSATION PARAMETERS\n\nThe size of each packet on the wire may differ from that seen by Linux.  The following param‐\neters  allow  CAKE to compensate for this difference by internally considering each packet to\nbe bigger than Linux informs it.  To assist users who are not expert network engineers,  key‐\nwords have been provided to represent a number of common link technologies.\n\n#### Manual Overhead Specification\n\noverhead BYTES\nAdds  BYTES  to  the size of each packet.  BYTES may be negative; values between -64 and\n256 (inclusive) are accepted.\n\nmpu BYTES\nRounds each packet (including overhead) up to a minimum length BYTES. BYTES may  not  be\nnegative; values between 0 and 256 (inclusive) are accepted.\n\n#### atm\n\nCompensates  for  ATM cell framing, which is normally found on ADSL links.  This is per‐\nformed after the overhead parameter above.  ATM uses fixed 53-byte cells, each of  which  can\ncarry 48 bytes payload.\n\n#### ptm\n\nCompensates  for PTM encoding, which is normally found on VDSL2 links and uses a 64b/65b\nencoding scheme. It is even more efficient to simply derate the specified shaper bandwidth by\na factor of 64/65 or 0.984. See ITU G.992.3 Annex N and IEEE 802.3 Section 61.3 for details.\n\n#### noatm\n\nDisables ATM and PTM compensation.\n\n#### Failsafe Overhead Keywords\n\nThese two keywords are provided for quick-and-dirty setup.  Use them if you can't be bothered\nto read the rest of this section.\n\n#### raw (default)\n\nTurns off all overhead compensation in CAKE.  The packet size reported by Linux will  be\nused directly.\n\nOther  overhead  keywords  may  be added after \"raw\".  The effect of this is to make the\noverhead compensation operate relative to the reported packet size,  not  the  underlying  IP\npacket size.\n\n#### conservative\n\nCompensates  for more overhead than is likely to occur on any widely-deployed link tech‐\nnology.\nEquivalent to overhead 48 atm.\n\n#### ADSL Overhead Keywords\n\nMost ADSL modems have a way to check which framing scheme is in  use.   Often  this  is  also\nspecified in the settings document provided by the ISP.  The keywords in this section are in‐\ntended to correspond with these sources of information.  All of them implicitly set  the  atm\nflag.\n\n#### pppoa-vcmux\n\nEquivalent to overhead 10 atm\n\n#### pppoa-llc\n\nEquivalent to overhead 14 atm\n\n#### pppoe-vcmux\n\nEquivalent to overhead 32 atm\n\n#### pppoe-llcsnap\n\nEquivalent to overhead 40 atm\n\n#### bridged-vcmux\n\nEquivalent to overhead 24 atm\n\n#### bridged-llcsnap\n\nEquivalent to overhead 32 atm\n\n#### ipoa-vcmux\n\nEquivalent to overhead 8 atm\n\n#### ipoa-llcsnap\n\nEquivalent to overhead 16 atm\n\nSee also the Ethernet Correction Factors section below.\n\n#### VDSL2 Overhead Keywords\n\nATM  was  dropped  from  VDSL2 in favour of PTM, which is a much more straightforward framing\nscheme.  Some ISPs retained PPPoE for compatibility with their existing back-end systems.\n\n#### pppoe-ptm\n\nEquivalent to overhead 30 ptm\n\nPPPoE: 2B PPP + 6B PPPoE +\nETHERNET: 6B dest MAC + 6B src MAC + 2B ethertype + 4B Frame Check Sequence +\nPTM: 1B Start of Frame (S) + 1B End of Frame (Ck) + 2B TC-CRC (PTM-FCS)\n\n#### bridged-ptm\n\nEquivalent to overhead 22 ptm\nETHERNET: 6B dest MAC + 6B src MAC + 2B ethertype + 4B Frame Check Sequence +\nPTM: 1B Start of Frame (S) + 1B End of Frame (Ck) + 2B TC-CRC (PTM-FCS)\n\nSee also the Ethernet Correction Factors section below.\n\n#### DOCSIS Cable Overhead Keyword\n\nDOCSIS is the universal standard for providing Internet service over cable-TV infrastructure.\n\nIn this case, the actual on-wire overhead is less important than the packet size the head-end\nequipment uses for shaping and metering.  This is specified to be an Ethernet frame including\nthe CRC (aka FCS).\n\n#### docsis\n\nEquivalent to overhead 18 mpu 64 noatm\n\n#### Ethernet Overhead Keywords\n\n#### ethernet\n\nAccounts for Ethernet's preamble, inter-frame gap, and Frame Check Sequence.   Use  this\nkeyword when the bottleneck being shaped for is an actual Ethernet cable.\nEquivalent to overhead 38 mpu 84 noatm\n\n#### ether-vlan\n\nAdds 4 bytes to the overhead compensation, accounting for an IEEE 802.1Q VLAN header ap‐\npended to the Ethernet frame header.  NB: Some ISPs use one or even two of these  within  PP‐\nPoE; this keyword may be repeated as necessary to express this.\n\n### ROUND TRIP TIME PARAMETERS\n\nActive  Queue  Management  (AQM) consists of embedding congestion signals in the packet flow,\nwhich receivers use to instruct senders to slow down when the queue is persistently occupied.\nCAKE  uses ECN signalling when available, and packet drops otherwise, according to a combina‐\ntion of the Codel and BLUE AQM algorithms called COBALT.\n\nVery short latencies require a very rapid AQM response to adequately control  latency.   How‐\never,  such  a  rapid  response  tends to impair throughput when the actual RTT is relatively\nlong.  CAKE allows specifying the RTT it assumes for tuning various parameters.  Actual  RTTs\nwithin an order of magnitude of this will generally work well for both throughput and latency\nmanagement.\n\nAt the 'lan' setting and below, the time constants are similar in magnitude to the jitter  in\nthe  Linux  kernel  itself, so congestion might be signalled prematurely. The flows will then\nbecome sparse and total throughput reduced, leaving little or no back-pressure for the  fair‐\nness  logic  to work against. Use the \"metro\" setting for local lans unless you have a custom\nkernel.\n\nrtt TIME\nManually specify an RTT.\n\n#### datacentre\n\nFor extremely high-performance 10GigE+ networks only.  Equivalent to rtt 100us.\n\n#### lan\n\nFor pure Ethernet (not Wi-Fi) networks, at home or in the office.  Don't use  this  when\nshaping for an Internet access link.  Equivalent to rtt 1ms.\n\n#### metro\n\nFor traffic mostly within a single city.  Equivalent to rtt 10ms.\n\n#### regional\n\nFor traffic mostly within a European-sized country.  Equivalent to rtt 30ms.\n\n#### internet (default)\n\nThis is suitable for most Internet traffic.  Equivalent to rtt 100ms.\n\n#### oceanic\n\nFor Internet traffic with generally above-average latency, such as that suffered by Aus‐\ntralasian residents.  Equivalent to rtt 300ms.\n\n#### satellite\n\nFor traffic via geostationary satellites.  Equivalent to rtt 1000ms.\n\n#### interplanetary\n\nSo named because Jupiter is about 1 light-hour from Earth.  Use this  to  (almost)  com‐\npletely disable AQM actions.  Equivalent to rtt 3600s.\n\n### FLOW ISOLATION PARAMETERS\n\nWith  flow isolation enabled, CAKE places packets from different flows into different queues,\neach of which carries its own AQM state.  Packets from each queue are then delivered  fairly,\naccording  to a DRR++ algorithm which minimizes latency for \"sparse\" flows.  CAKE uses a set-\nassociative hashing algorithm to minimize flow collisions.\n\nThese keywords specify whether fairness based on source address, destination  address,  indi‐\nvidual flows, or any combination of those is desired.\n\n#### flowblind\n\nDisables flow isolation; all traffic passes through a single queue for each tin.\n\n#### srchost\n\nFlows  are defined only by source address.  Could be useful on the egress path of an ISP\nbackhaul.\n\n#### dsthost\n\nFlows are defined only by destination address.  Could be useful on the ingress  path  of\nan ISP backhaul.\n\n#### hosts\n\nFlows are defined by source-destination host pairs.  This is host isolation, rather than\nflow isolation.\n\n#### flows\n\nFlows are defined by the entire 5-tuple of source address, destination  address,  trans‐\nport  protocol,  source  port  and destination port.  This is the type of flow isolation per‐\nformed by SFQ and fqcodel.\n\n#### dual-srchost\n\nFlows are defined by the 5-tuple, and fairness is applied first over  source  addresses,\nthen over individual flows.  Good for use on egress traffic from a LAN to the internet, where\nit'll prevent any one LAN host from monopolising the uplink,  regardless  of  the  number  of\nflows they use.\n\n#### dual-dsthost\n\nFlows  are  defined  by  the 5-tuple, and fairness is applied first over destination ad‐\ndresses, then over individual flows.  Good for use on ingress traffic to a LAN from  the  in‐\nternet,  where  it'll  prevent any one LAN host from monopolising the downlink, regardless of\nthe number of flows they use.\n\n#### triple-isolate (default)\n\nFlows are defined by the 5-tuple, and fairness is applied over source *and*  destination\naddresses  intelligently (ie. not merely by host-pairs), and also over individual flows.  Use\nthis if you're not certain whether to use dual-srchost or dual-dsthost; it'll do both jobs at\nonce,  preventing any one host on *either* side of the link from monopolising it with a large\nnumber of flows.\n\n#### nat\n\nInstructs Cake to perform a NAT lookup before applying flow-isolation rules,  to  deter‐\nmine  the  true  addresses  and port numbers of the packet, to improve fairness between hosts\n\"inside\" the NAT.  This has no practical effect in \"flowblind\" or \"flows\" modes, or if NAT is\nperformed on a different host.\n\n#### nonat (default)\n\nCake  will  not  perform  a  NAT lookup.  Flow isolation will be performed using the ad‐\ndresses and port numbers directly visible to the interface Cake is attached to.\n\n### PRIORITY QUEUE PARAMETERS\n\nCAKE can divide traffic into \"tins\" based on the Diffserv field.  Each tin has its own  inde‐\npendent  set  of  flow-isolation  queues, and is serviced based on a WRR algorithm.  To avoid\nperverse Diffserv marking incentives, tin weights have a \"priority sharing\" value when  band‐\nwidth  used  by  that  tin  is  below a threshold, and a lower \"bandwidth sharing\" value when\nabove.  Bandwidth is compared against the threshold using the same algorithm as the  deficit-\nmode shaper.\n\nDetailed  customisation of tin parameters is not provided.  The following presets perform all\nnecessary tuning, relative to the current shaper bandwidth and RTT settings.\n\n#### besteffort\n\nDisables priority queuing by placing all traffic in one tin.\n\n#### precedence\n\nEnables legacy interpretation of TOS \"Precedence\" field.  Use of this preset on the mod‐\nern Internet is firmly discouraged.\n\n#### diffserv4\n\nProvides a general-purpose Diffserv implementation with four tins:\nBulk (CS1, LE in kernel v5.9+), 6.25% threshold, generally low priority.\nBest Effort (general), 100% threshold.\nVideo (AF4x, AF3x, CS3, AF2x, CS2, TOS4, TOS1), 50% threshold.\nVoice (CS7, CS6, EF, VA, CS5, CS4), 25% threshold.\n\n#### diffserv3 (default)\n\nProvides a simple, general-purpose Diffserv implementation with three tins:\nBulk (CS1, LE in kernel v5.9+), 6.25% threshold, generally low priority.\nBest Effort (general), 100% threshold.\nVoice (CS7, CS6, EF, VA, TOS4), 25% threshold, reduced Codel interval.\n\n\nfwmark MASK\nThis  options turns on fwmark-based overriding of CAKE's tin selection.  If set, the op‐\ntion specifies a bitmask that will be applied to the fwmark associated with each  packet.  If\nthe  result  of  this  masking is non-zero, the result will be right-shifted by the number of\nleast-significant unset bits in the mask value, and the result will be used as a the tin num‐\nber  for  that packet.  This can be used to set policies in a firewall script that will over‐\nride CAKE's built-in tin selection.\n\n### OTHER PARAMETERS\n\nmemlimit LIMIT\nLimit the memory consumed by Cake to LIMIT bytes. Note that this does not translate  di‐\nrectly  to  queue  size (so do not size this based on bandwidth delay product considerations,\nbut rather on worst case acceptable memory consumption), as there is  some  overhead  in  the\ndata structures containing the packets, especially for small packets.\n\nBy default, the limit is calculated based on the bandwidth and RTT settings.\n\n#### wash\n\nTraffic  entering your diffserv domain is frequently mis-marked in transit from the per‐\nspective of your network, and traffic exiting yours may be mis-marked from the perspective of\nthe transiting provider.\n\nApply  the wash option to clear all extra diffserv (but not ECN bits), after priority queuing\nhas taken place.\n\nIf you are shaping inbound, and cannot trust the diffserv markings (as is the case  for  Com‐\ncast Cable, among others), it is best to use a single queue \"besteffort\" mode with wash.\n\n#### split-gso\n\nThis  option  controls whether CAKE will split General Segmentation Offload (GSO) super-\npackets into their on-the-wire components and dequeue them individually.\n\nSuper-packets are created by the networking stack to improve  efficiency.   However,  because\nthey are larger they take longer to dequeue, which translates to higher latency for competing\nflows, especially at lower bandwidths. CAKE defaults to splitting GSO packets to achieve  the\nlowest possible latency. At link speeds higher than 10 Gbps, setting the no-split-gso parame‐\nter can increase the maximum achievable throughput by retaining the full GSO packets.\n\n### OVERRIDING CLASSIFICATION WITH TC FILTERS\n\nCAKE supports overriding of its internal classification of  packets  through  the  tc  filter\nmechanism.  Packets  can be assigned to different priority tins by setting the priority field\non the skb, and the flow hashing can be overridden by setting the classid parameter.\n\n#### Tin override\n\nTo assign a priority tin, the major number of the priority field needs to  match  the\nqdisc  handle  of  the cake instance; if it does, the minor number will be interpreted as the\ntin index. For example, to classify all ICMP packets as 'bulk', the following filter  can  be\nused:\n\n# tc qdisc replace dev eth0 handle 1: root cake diffserv3\n# tc filter add dev eth0 parent 1: protocol ip prio 1 \\\nu32 match icmp type 0 0 action skbedit priority 1:1\n\n#### Flow hash override\n\nTo  override flow hashing, the classid can be set. CAKE will interpret the major num‐\nber of the classid as the host hash used in host isolation mode, and the minor number as  the\nflow  hash used for flow-based queueing. One or both of those can be set, and will be used if\nthe relevant flow isolation parameter is set (i.e., the major number will be ignored if  CAKE\nis  not configured in hosts mode, and the minor number will be ignored if CAKE is not config‐\nured in flows mode).\n\nThis example will assign all ICMP packets to the first queue:\n\n# tc qdisc replace dev eth0 handle 1: root cake\n# tc filter add dev eth0 parent 1: protocol ip prio 1 \\\nu32 match icmp type 0 0 classid 0:1\n\nIf only one of the host and flow overrides is set, CAKE will compute the other hash from  the\npacket as normal. Note, however, that the host isolation mode works by assigning a host ID to\nthe flow queue; so if overriding both host and flow, the same flow cannot have more than  one\nhost  assigned.  In  addition,  it is not possible to assign different source and destination\nhost IDs through the override mechanism; if a host ID is assigned, it will be  used  as  both\nsource and destination host.\n\n### EXAMPLES\n\n# tc qdisc delete root dev eth0\n# tc qdisc add root dev eth0 cake bandwidth 100Mbit ethernet\n# tc -s qdisc show dev eth0\nqdisc  cake  1:  root  refcnt  2 bandwidth 100Mbit diffserv3 triple-isolate rtt 100.0ms noatm\noverhead 38 mpu 84\nSent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)\nbacklog 0b 0p requeues 0\nmemory used: 0b of 5000000b\ncapacity estimate: 100Mbit\nmin/max network layer size:        65535 /       0\nmin/max overhead-adjusted size:    65535 /       0\naverage network hdr offset:            0\n\nBulk  Best Effort        Voice\nthresh       6250Kbit      100Mbit       25Mbit\ntarget          5.0ms        5.0ms        5.0ms\ninterval      100.0ms      100.0ms      100.0ms\npkdelay          0us          0us          0us\navdelay          0us          0us          0us\nspdelay          0us          0us          0us\npkts                0            0            0\nbytes               0            0            0\nwayinds            0            0            0\nwaymiss            0            0            0\nwaycols            0            0            0\ndrops               0            0            0\nmarks               0            0            0\nackdrop            0            0            0\nspflows            0            0            0\nbkflows            0            0            0\nunflows            0            0            0\nmaxlen             0            0            0\nquantum           300         1514          762\n\nAfter some use:\n# tc -s qdisc show dev eth0\n\nqdisc cake 1: root refcnt 2 bandwidth 100Mbit  diffserv3  triple-isolate  rtt  100.0ms  noatm\noverhead 38 mpu 84\nSent 44709231 bytes 31931 pkt (dropped 45, overlimits 93782 requeues 0)\nbacklog 33308b 22p requeues 0\nmemory used: 292352b of 5000000b\ncapacity estimate: 100Mbit\nmin/max network layer size:           28 /    1500\nmin/max overhead-adjusted size:       84 /    1538\naverage network hdr offset:           14\n\nBulk  Best Effort        Voice\nthresh       6250Kbit      100Mbit       25Mbit\ntarget          5.0ms        5.0ms        5.0ms\ninterval      100.0ms      100.0ms      100.0ms\npkdelay        8.7ms        6.9ms        5.0ms\navdelay        4.9ms        5.3ms        3.8ms\nspdelay        727us        1.4ms        511us\npkts             2590        21271         8137\nbytes         3081804     30302659     11426206\nwayinds            0           46            0\nwaymiss            3           17            4\nwaycols            0            0            0\ndrops              20           15           10\nmarks               0            0            0\nackdrop            0            0            0\nspflows            2            4            1\nbkflows            1            2            1\nunflows            0            0            0\nmaxlen          1514         1514         1514\nquantum           300         1514          762\n\n### SEE ALSO\n\ntc(8), tc-codel(8), tc-fqcodel(8), tc-htb(8)\n\n### AUTHORS\n\nCake's principal author is Jonathan Morton, with contributions from Tony Ambardar, Kevin Dar‐\nbyshire-Bryant, Toke Høiland-Jørgensen, Sebastian Moeller, Ryan Mounce, Dean Scarff, Nils An‐\ndreas Svee, and Dave Täht.\n\nThis  manual page was written by Loganaden Velvindron. Please report corrections to the Linux\nNetworking mailing list <netdev@vger.kernel.org>.\n\n\n\niproute2                                    19 July 2018                                     CAKE(8)\n\n"
        }
    ],
    "structuredContent": {
        "command": "tc-cake",
        "section": "8",
        "mode": "man",
        "summary": "CAKE - Common Applications Kept Enhanced (CAKE)",
        "synopsis": "",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [
            "# tc qdisc delete root dev eth0",
            "# tc qdisc add root dev eth0 cake bandwidth 100Mbit ethernet",
            "# tc -s qdisc show dev eth0",
            "qdisc  cake  1:  root  refcnt  2 bandwidth 100Mbit diffserv3 triple-isolate rtt 100.0ms noatm",
            "overhead 38 mpu 84",
            "Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)",
            "backlog 0b 0p requeues 0",
            "memory used: 0b of 5000000b",
            "capacity estimate: 100Mbit",
            "min/max network layer size:        65535 /       0",
            "min/max overhead-adjusted size:    65535 /       0",
            "average network hdr offset:            0",
            "Bulk  Best Effort        Voice",
            "thresh       6250Kbit      100Mbit       25Mbit",
            "target          5.0ms        5.0ms        5.0ms",
            "interval      100.0ms      100.0ms      100.0ms",
            "pkdelay          0us          0us          0us",
            "avdelay          0us          0us          0us",
            "spdelay          0us          0us          0us",
            "pkts                0            0            0",
            "bytes               0            0            0",
            "wayinds            0            0            0",
            "waymiss            0            0            0",
            "waycols            0            0            0",
            "drops               0            0            0",
            "marks               0            0            0",
            "ackdrop            0            0            0",
            "spflows            0            0            0",
            "bkflows            0            0            0",
            "unflows            0            0            0",
            "maxlen             0            0            0",
            "quantum           300         1514          762",
            "After some use:",
            "# tc -s qdisc show dev eth0",
            "qdisc cake 1: root refcnt 2 bandwidth 100Mbit  diffserv3  triple-isolate  rtt  100.0ms  noatm",
            "overhead 38 mpu 84",
            "Sent 44709231 bytes 31931 pkt (dropped 45, overlimits 93782 requeues 0)",
            "backlog 33308b 22p requeues 0",
            "memory used: 292352b of 5000000b",
            "capacity estimate: 100Mbit",
            "min/max network layer size:           28 /    1500",
            "min/max overhead-adjusted size:       84 /    1538",
            "average network hdr offset:           14",
            "Bulk  Best Effort        Voice",
            "thresh       6250Kbit      100Mbit       25Mbit",
            "target          5.0ms        5.0ms        5.0ms",
            "interval      100.0ms      100.0ms      100.0ms",
            "pkdelay        8.7ms        6.9ms        5.0ms",
            "avdelay        4.9ms        5.3ms        3.8ms",
            "spdelay        727us        1.4ms        511us",
            "pkts             2590        21271         8137",
            "bytes         3081804     30302659     11426206",
            "wayinds            0           46            0",
            "waymiss            3           17            4",
            "waycols            0            0            0",
            "drops              20           15           10",
            "marks               0            0            0",
            "ackdrop            0            0            0",
            "spflows            2            4            1",
            "bkflows            1            2            1",
            "unflows            0            0            0",
            "maxlen          1514         1514         1514",
            "quantum           300         1514          762"
        ],
        "see_also": [
            {
                "name": "tc",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tc/8/json"
            },
            {
                "name": "tc-codel",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tc-codel/8/json"
            },
            {
                "name": "tc-fqcodel",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tc-fqcodel/8/json"
            },
            {
                "name": "tc-htb",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/tc-htb/8/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 1,
                "subsections": [
                    {
                        "name": "tc qdisc ... cake",
                        "lines": 20
                    }
                ]
            },
            {
                "name": "DESCRIPTION",
                "lines": 12,
                "subsections": []
            },
            {
                "name": "SHAPER PARAMETERS",
                "lines": 4,
                "subsections": [
                    {
                        "name": "unlimited (default)",
                        "lines": 5
                    },
                    {
                        "name": "autorate-ingress",
                        "lines": 7
                    }
                ]
            },
            {
                "name": "OVERHEAD COMPENSATION PARAMETERS",
                "lines": 6,
                "subsections": [
                    {
                        "name": "Manual Overhead Specification",
                        "lines": 8
                    },
                    {
                        "name": "atm",
                        "lines": 4
                    },
                    {
                        "name": "ptm",
                        "lines": 4
                    },
                    {
                        "name": "noatm",
                        "lines": 3
                    },
                    {
                        "name": "Failsafe Overhead Keywords",
                        "lines": 3
                    },
                    {
                        "name": "raw (default)",
                        "lines": 7
                    },
                    {
                        "name": "conservative",
                        "lines": 5
                    },
                    {
                        "name": "ADSL Overhead Keywords",
                        "lines": 5
                    },
                    {
                        "name": "pppoa-vcmux",
                        "lines": 2
                    },
                    {
                        "name": "pppoa-llc",
                        "lines": 2
                    },
                    {
                        "name": "pppoe-vcmux",
                        "lines": 2
                    },
                    {
                        "name": "pppoe-llcsnap",
                        "lines": 2
                    },
                    {
                        "name": "bridged-vcmux",
                        "lines": 2
                    },
                    {
                        "name": "bridged-llcsnap",
                        "lines": 2
                    },
                    {
                        "name": "ipoa-vcmux",
                        "lines": 2
                    },
                    {
                        "name": "ipoa-llcsnap",
                        "lines": 5
                    },
                    {
                        "name": "VDSL2 Overhead Keywords",
                        "lines": 3
                    },
                    {
                        "name": "pppoe-ptm",
                        "lines": 6
                    },
                    {
                        "name": "bridged-ptm",
                        "lines": 7
                    },
                    {
                        "name": "DOCSIS Cable Overhead Keyword",
                        "lines": 6
                    },
                    {
                        "name": "docsis",
                        "lines": 3
                    },
                    {
                        "name": "Ethernet Overhead Keywords",
                        "lines": 1
                    },
                    {
                        "name": "ethernet",
                        "lines": 4
                    },
                    {
                        "name": "ether-vlan",
                        "lines": 5
                    }
                ]
            },
            {
                "name": "ROUND TRIP TIME PARAMETERS",
                "lines": 20,
                "subsections": [
                    {
                        "name": "datacentre",
                        "lines": 2
                    },
                    {
                        "name": "lan",
                        "lines": 3
                    },
                    {
                        "name": "metro",
                        "lines": 2
                    },
                    {
                        "name": "regional",
                        "lines": 2
                    },
                    {
                        "name": "internet (default)",
                        "lines": 2
                    },
                    {
                        "name": "oceanic",
                        "lines": 3
                    },
                    {
                        "name": "satellite",
                        "lines": 2
                    },
                    {
                        "name": "interplanetary",
                        "lines": 4
                    }
                ]
            },
            {
                "name": "FLOW ISOLATION PARAMETERS",
                "lines": 8,
                "subsections": [
                    {
                        "name": "flowblind",
                        "lines": 2
                    },
                    {
                        "name": "srchost",
                        "lines": 3
                    },
                    {
                        "name": "dsthost",
                        "lines": 3
                    },
                    {
                        "name": "hosts",
                        "lines": 3
                    },
                    {
                        "name": "flows",
                        "lines": 4
                    },
                    {
                        "name": "dual-srchost",
                        "lines": 5
                    },
                    {
                        "name": "dual-dsthost",
                        "lines": 5
                    },
                    {
                        "name": "triple-isolate (default)",
                        "lines": 6
                    },
                    {
                        "name": "nat",
                        "lines": 5
                    },
                    {
                        "name": "nonat (default)",
                        "lines": 4
                    }
                ]
            },
            {
                "name": "PRIORITY QUEUE PARAMETERS",
                "lines": 10,
                "subsections": [
                    {
                        "name": "besteffort",
                        "lines": 2
                    },
                    {
                        "name": "precedence",
                        "lines": 3
                    },
                    {
                        "name": "diffserv4",
                        "lines": 6
                    },
                    {
                        "name": "diffserv3 (default)",
                        "lines": 15
                    }
                ]
            },
            {
                "name": "OTHER PARAMETERS",
                "lines": 9,
                "subsections": [
                    {
                        "name": "wash",
                        "lines": 11
                    },
                    {
                        "name": "split-gso",
                        "lines": 10
                    }
                ]
            },
            {
                "name": "OVERRIDING CLASSIFICATION WITH TC FILTERS",
                "lines": 5,
                "subsections": [
                    {
                        "name": "Tin override",
                        "lines": 10
                    },
                    {
                        "name": "Flow hash override",
                        "lines": 23
                    }
                ]
            },
            {
                "name": "EXAMPLES",
                "lines": 69,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "AUTHORS",
                "lines": 10,
                "subsections": []
            }
        ]
    }
}