# tc-gate

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


* * *