Provided by: iproute2_6.1.0-1ubuntu6_amd64 bug

NAME

       CBS - Credit Based Shaper (CBS) Qdisc

SYNOPSIS

       tc  qdisc  ...  dev  dev  parent  classid  [  handle major: ] cbs idleslope idleslope sendslope sendslope
       hicredit hicredit locredit locredit [ offload 0|1 ]

DESCRIPTION

       The CBS (Credit Based Shaper) qdisc implements the shaping algorithm  defined  by  the  IEEE  802.1Q-2014
       Section 8.6.8.2, which applies a well defined rate limiting method to the traffic.

       This  queueing discipline is intended to be used by TSN (Time Sensitive Networking) applications, the CBS
       parameters are  derived  directly  by  what  is  described  by  the  Annex  L  of  the  IEEE  802.1Q-2014
       Specification. The algorithm and how it affects the latency are detailed there.

       CBS  is  meant to be installed under another qdisc that maps packet flows to traffic classes, one example
       is mqprio(8).

PARAMETERS

       idleslope
              Idleslope is the rate of credits that is accumulated (in kilobits per second)  when  there  is  at
              least  one  packet  waiting  for  transmission.  Packets are transmitted when the current value of
              credits is equal or greater than zero. When there is no packet to be  transmitted  the  amount  of
              credits is set to zero. This is the main tunable of the CBS algorithm and represents the bandwidth
              that will be consumed.  Note that when calculating idleslope,  the  entire  packet  size  must  be
              considered, including headers from all layers (i.e. MAC framing and any overhead from the physical
              layer), as described by IEEE 802.1Q-2014 section 34.4.

              As an example, for an ethernet frame carrying 284 bytes of payload, and with  no  VLAN  tags,  you
              must  add  14  bytes  for the Ethernet headers, 4 bytes for the Frame check sequence (CRC), and 20
              bytes for the L1 overhead: 12 bytes of interpacket gap, 7 bytes of preamble and 1 byte of start of
              frame  delimiter.  That  results  in  322  bytes for the total packet size, which is then used for
              calculating the idleslope.

       sendslope
              Sendslope is the rate of credits that is depleted (it should be a negative number of kilobits  per
              second)  when  a  transmission  is  occurring.  It can be calculated as follows, (IEEE 802.1Q-2014
              Section 8.6.8.2 item g):

              sendslope = idleslope - port_transmit_rate

       hicredit
              Hicredit defines the maximum amount of credits  (in  bytes)  that  can  be  accumulated.  Hicredit
              depends on the characteristics of interfering traffic, 'max_interference_size' is the maximum size
              of any burst of traffic that can  delay  the  transmission  of  a  frame  that  is  available  for
              transmission for this traffic class, (IEEE 802.1Q-2014 Annex L, Equation L-3):

              hicredit = max_interference_size * (idleslope / port_transmit_rate)

       locredit
              Locredit  is  the  minimum  amount of credits that can be reached. It is a function of the traffic
              flowing through this qdisc (IEEE 802.1Q-2014 Annex L, Equation L-2):

              locredit = max_frame_size * (sendslope / port_transmit_rate)

       offload
              When offload is 1, cbs(8) will try to configure the network interface so the CBS algorithm runs in
              the controller. The default is 0.

EXAMPLES

       CBS  is  used  to  enforce a Quality of Service by limiting the data rate of a traffic class, to separate
       packets into traffic classes the user may choose mqprio(8), and configure it like this:

       # tc qdisc add dev eth0 handle 100: parent root mqprio num_tc 3 \
            map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \
            queues 1@0 1@1 2@2 \
            hw 0

       To replace the current queuing disciple by CBS in the current queueing discipline  connected  to  traffic
       class number 0, issue:

       # tc qdisc replace dev eth0 parent 100:4 cbs \
            locredit -1470 hicredit 30 sendslope -980000 idleslope 20000

       These  values are obtained from the following parameters, idleslope is 20mbit/s, the transmission rate is
       1Gbit/s and the maximum interfering frame size is 1500 bytes.

AUTHORS

       Vinicius Costa Gomes <vinicius.gomes@intel.com>