# tc-gate(8) - man - phpMan

[GATE(8)](https://www.chedong.com/phpMan.php/man/GATE/8/markdown)                                         Linux                                        [GATE(8)](https://www.chedong.com/phpMan.php/man/GATE/8/markdown)



## 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  "cy‐
              cle-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 sched‐
              uling 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  for‐
              mat:

              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 over‐
              limited. "-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 traf‐
       fic  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 dura‐
       tion.

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



iproute2                                     12 Mar 2020                                     [GATE(8)](https://www.chedong.com/phpMan.php/man/GATE/8/markdown)
