Provided by: iproute2_5.15.0-1ubuntu2_amd64 bug

NAME

       gate - Stream Gate Action

SYNOPSIS

       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> ]

DESCRIPTION

       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.

PARAMETERS

       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.

EXAMPLES

       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

AUTHORS

       Po Liu <Po.Liu@nxp.com>