dwww Home | Manual pages | Find package

CBS(8)                               Linux                               CBS(8)

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 [  of-
       fload 0|1 ]

DESCRIPTION
       The CBS (Credit Based Shaper) qdisc implements the shaping algorithm de-
       fined  by the IEEE 802.1Q-2014 Section 8.6.8.2, which applies a well de-
       fined 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  trans-
              mission.  Packets are transmitted when the current value of cred-
              its  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 pay-
              load, and with no VLAN tags, you must add 14 bytes for the Ether-
              net 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_trans-
              mit_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 in-
              terface 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>

iproute2                          18 Sept 2017                           CBS(8)

Generated by dwww version 1.16 on Tue Dec 16 05:46:06 CET 2025.