MAN-J
Man PagesPricing
LoginGet Started
tc-etf(8)
Original
English • 121 lines
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 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
       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) 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
	      measuring 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
	      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 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
	      interface 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
	      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 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)

tc-etf(8)

ETF \- Earliest TxTime First (ETF) Qdisc

0popularity

System Information

iproute2 1.0.0
Updated 05 Jul 2018
Maintained by Unknown

Actions