dwww Home | Manual pages | Find package

ETF(8)                               Linux                               ETF(8)

NAME
       ETF - Earliest TxTime First (ETF) Qdisc

SYNOPSIS
       tc  qdisc  ...  dev  dev  parent  classid  [ handle major: ] etf clockid
       clockid [ delta delta_nsecs ] [ deadline_mode ] [ offload ]

DESCRIPTION
       The ETF (Earliest TxTime First) qdisc allows applications to control the
       instant when a packet should be dequeued from the traffic control  layer
       into  the  netdevice. If offload is configured and supported by the net-
       work interface card, the it will also control  when  packets  leave  the
       network controller.

       ETF  achieves that by buffering packets until a configurable time before
       their transmission time (i.e. txtime, or deadline), which can be config-
       ured through the delta option.

       The qdisc uses a rb-tree internally so packets are always  'ordered'  by
       their  txtime  and will be dequeued following the (next) earliest txtime
       first.

       It relies on the SO_TXTIME socket option and the SCM_TXTIME CMSG in each
       packet field to configure the behavior of time  dependent  sockets:  the
       clockid  to  be  used as a reference, if the expected mode of txtime for
       that socket is deadline or strict mode, and if packet  drops  should  be
       reported  on  the  socket's error queue. See socket(7) for more informa-
       tion.

       The etf qdisc will drop any packets with a txtime in the past, or  if  a
       packet expires while waiting for being dequeued.

       This  queueing  discipline is intended to be used by TSN (Time Sensitive
       Networking) applications, and it exposes a traffic shaping functionality
       that is commonly documented as "Launch Time" or "Time-Based  Scheduling"
       by vendors and the documentation of network interface controllers.

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

PARAMETERS
       clockid
              Specifies the clock to be used by qdisc's internal timer for mea-
              suring time and scheduling events. The qdisc expects that packets
              passing through it to be using this same clockid as the reference
              of their txtime timestamps. It  will  drop  packets  coming  from
              sockets that do not comply with that.

              For more information about time and clocks on Linux, please refer
              to time(7) and clock_gettime(3).

       delta
              After  enqueueing or dequeueing a packet, the qdisc will schedule
              its next wake-up time for the next txtime minus this delta value.
              This means delta can be used as a fudge factor for the  scheduler
              latency  of  a  system.  This value must be specified in nanosec-
              onds.  The default value is 0 nanoseconds.

       deadline_mode
              When deadline_mode is set, the qdisc will handle  txtime  with  a
              different semantics, changed from a 'strict' transmission time to
              a  deadline.   In  practice,  this  means during the dequeue flow
              etf(8) will set the txtime of the packet being dequeued to 'now'.
              The default is for this option to be disabled.

       offload
              When offload is set, etf(8) will try to configure the network in-
              terface so time-based transmission arbitration is enabled in  the
              controller. This feature is commonly referred to as "Launch Time"
              or "Time-Based Scheduling" by the documentation of network inter-
              face controllers.  The default is for this option to be disabled.

       skip_sock_check
              etf(8)  currently  drops  any packet which does not have a socket
              associated with it or if  the  socket  does  not  have  SO_TXTIME
              socket  option  set. But, this will not work if the launchtime is
              set by another entity inside the kernel (e.g. some other  Qdisc).
              Setting the skip_sock_check will skip checking for a socket asso-
              ciated with the packet.

EXAMPLES
       ETF is used to enforce a Quality of Service. It controls when each pack-
       ets should be dequeued and transmitted, and can be used for 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 queueing discipline by ETF in traffic class  num-
       ber 0, issue:

       # tc qdisc replace dev eth0 parent 100:1 etf \
            clockid CLOCK_TAI delta 300000 offload

       With  the  options above, etf will be configured to use CLOCK_TAI as its
       clockid_t, will schedule packets for 300 us  before  their  txtime,  and
       will  enable  the  functionality  on that in the network interface card.
       Deadline mode will not be configured for this mode.

AUTHORS
       Jesus Sanchez-Palencia <jesus.sanchez-palencia@intel.com>
       Vinicius Costa Gomes <vinicius.gomes@intel.com>

iproute2                          05 Jul 2018                            ETF(8)

Generated by dwww version 1.16 on Sat Oct 3 04:26:51 CEST 2026.