man > tc-etf(8)

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 network 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 configured 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 con‐
       figure  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 information.

       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)  applica‐
       tions,  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  con‐
       trollers.

       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 measuring time and sched‐
              uling 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
              nanoseconds.  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 dur‐
              ing 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 interface so  time-based
              transmission  arbitration  is  enabled in the controller. This feature is commonly re‐
              ferred to as "Launch Time" or "Time-Based Scheduling" by the documentation of  network
              interface 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  associated  with  the
              packet.


EXAMPLES
       ETF is used to enforce a Quality of Service. It controls when each packets 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 number 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 sched‐
       ule 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 AT intel.com>
       Vinicius Costa Gomes <vinicius.gomes AT intel.com>

iproute2                                     05 Jul 2018                                      ETF(8)
tc-etf(8) □✕
NAME SYNOPSIS
] [ deadline_mode ] [ offload ]
DESCRIPTION PARAMETERS EXAMPLES AUTHORS

Generated by phpman v4.11.2-35-gf98a251 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-10-07 13:14 @216.73.217.162
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!

^_top_^