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
       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  kilo-
              bits  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  band-
              width  that will be consumed.  Note that when calculating idles-
              lope, the entire packet size must be considered, including head-
              ers 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  Eth-
              ernet  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 16:47:19 CET 2025.