|
NAME | SYNOPSIS | DESCRIPTION | PARAMETERS | EXAMPLES | AUTHORS | COLOPHON |
|
|
|
GATE(8) Linux GATE(8)
gate - Stream Gate Action
tc ... action gate
[ base-time BASETIME ] [ clockid CLOCKID ]
sched-entry <gate state> <interval 1> [ <internal
priority> <max octets> ]
sched-entry <gate state> <interval 2> [ <internal
priority> <max octets> ]
sched-entry <gate state> <interval 3> [ <internal
priority> <max octets> ]
......
sched-entry <gate state> <interval N> [ <internal
priority> <max octets> ]
GATE action allows specified ingress frames can be passed at
specific time slot, or be dropped at specific time slot. Tc filter
filters the ingress frames, then tc gate action would specify
which time slot and how many bytes these frames can be passed to
device and which time slot frames would be dropped. Gate action
also assign a base-time to tell when the entry list start. Then
gate action would start to repeat the gate entry list cyclically
at the start base-time. For the software simulation, gate action
requires the user assign reference time clock type.
base-time
Specifies the instant in nanoseconds, defining the time
when the schedule starts. If 'base-time' is a time in the
past, the schedule will start at
base-time + (N * cycle-time)
where N is the smallest integer so the resulting time is
greater than "now", and "cycle-time" is the sum of all the
intervals of the entries in the schedule. Without base-time
specified, will default to be 0.
clockid
Specifies the clock to be used by qdisc's internal timer
for measuring time and scheduling events. Not valid if gate
action is used for offloading filter. For example, tc
filter command with skip_sw parameter.
sched-entry
There may multiple sched-entry parameters in a single
schedule. Each one has the format:
sched-entry <gate state> <interval> [ <internal priority>
<max octets> ]
<gate state> means gate states. 'open' keep gate open,
'close' keep gate close.
<interval> means how much nano seconds for this time slot.
<internal priority> means internal priority value. Present
of the internal receiving queue for this stream. "-1" means
wildcard. <internal priority> and <max octets> can be omit
default to be "-1" which both
value to be "-1" for this <sched-entry>.
<max octets> means how many octets size could pass in this
time slot. Dropped if overlimited. "-1" means wildcard.
<max octets> can be omit default to be "-1" which value to
be "-1" for this <sched-entry>.
Note that <internal priority> and <max octets> are nothing
meaning for gate state is "close" in a "sched-entry". All
frames are dropped when "sched-entry" with "close" state.
The following example shows tc filter frames source ip match to
the 192.168.0.20 will keep the gate open for 200ms and limit the
traffic to 8MB in this sched-entry. Then keep the traffic gate to
be close for 100ms. Frames arrived at gate close state would be
dropped. Then the cycle would run the gate entries periodically.
The schedule will start at instant 200.0s using the reference
CLOCK_TAI. The schedule is composed of two entries each of 300ms
duration.
# tc qdisc add dev eth0 ingress
# tc filter add dev eth0 parent ffff: protocol ip \
flower skip_hw src_ip 192.168.0.20 \
action gate index 2 clockid CLOCK_TAI \
base-time 200000000000ns \
sched-entry open 200000000ns -1 8000000b \
sched-entry close 100000000ns
Following commands is an example to filter a stream source mac
match to the 10:00:80:00:00:00 icmp frames will be dropped at any
time with cycle 200ms. With a default basetime 0 and clockid is
CLOCK_TAI as default.
# tc qdisc add dev eth0 ingress
# tc filter add dev eth0 parent ffff: protocol ip \
flower ip_proto icmp dst_mac 10:00:80:00:00:00 \
action gate index 12 sched-entry close 200000000ns
Po Liu <[email protected]>
This page is part of the iproute2 (utilities for controlling
TCP/IP networking and traffic) project. Information about the
project can be found at
⟨http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2⟩.
If you have a bug report for this manual page, send it to
[email protected], [email protected]. This page was
obtained from the project's upstream Git repository
⟨https://git.kernel.org/pub/scm/network/iproute2/iproute2.git⟩ on
2025-08-11. (At that time, the date of the most recent commit
that was found in the repository was 2025-08-08.) If you discover
any rendering problems in this HTML version of the page, or you
believe there is a better or more up-to-date source for the page,
or you have corrections or improvements to the information in this
COLOPHON (which is not part of the original manual page), send a
mail to [email protected]
iproute2 12 Mar 2020 GATE(8)