Skip to content
  • Eric Dumazet's avatar
    39d01050
    net_sched: sch_fq: add horizon attribute · 39d01050
    Eric Dumazet authored
    
    
    QUIC servers would like to use SO_TXTIME, without having CAP_NET_ADMIN,
    to efficiently pace UDP packets.
    
    As far as sch_fq is concerned, we need to add safety checks, so
    that a buggy application does not fill the qdisc with packets
    having delivery time far in the future.
    
    This patch adds a configurable horizon (default: 10 seconds),
    and a configurable policy when a packet is beyond the horizon
    at enqueue() time:
    - either drop the packet (default policy)
    - or cap its delivery time to the horizon.
    
    $ tc -s -d qd sh dev eth0
    qdisc fq 8022: root refcnt 257 limit 10000p flow_limit 100p buckets 1024
     orphan_mask 1023 quantum 10Kb initial_quantum 51160b low_rate_threshold 550Kbit
     refill_delay 40.0ms timer_slack 10.000us horizon 10.000s
     Sent 1234215879 bytes 837099 pkt (dropped 21, overlimits 0 requeues 6)
     backlog 0b 0p requeues 6
      flows 1191 (inactive 1177 throttled 0)
      gc 0 highprio 0 throttled 692 latency 11.480us
      pkts_too_long 0 alloc_errors 0 horizon_drops 21 horizon_caps 0
    
    v2: fixed an overflow on 32bit kernels in fq_init(), reported
        by kbuild test robot <lkp@intel.com>
    
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    39d01050
    net_sched: sch_fq: add horizon attribute
    Eric Dumazet authored
    
    
    QUIC servers would like to use SO_TXTIME, without having CAP_NET_ADMIN,
    to efficiently pace UDP packets.
    
    As far as sch_fq is concerned, we need to add safety checks, so
    that a buggy application does not fill the qdisc with packets
    having delivery time far in the future.
    
    This patch adds a configurable horizon (default: 10 seconds),
    and a configurable policy when a packet is beyond the horizon
    at enqueue() time:
    - either drop the packet (default policy)
    - or cap its delivery time to the horizon.
    
    $ tc -s -d qd sh dev eth0
    qdisc fq 8022: root refcnt 257 limit 10000p flow_limit 100p buckets 1024
     orphan_mask 1023 quantum 10Kb initial_quantum 51160b low_rate_threshold 550Kbit
     refill_delay 40.0ms timer_slack 10.000us horizon 10.000s
     Sent 1234215879 bytes 837099 pkt (dropped 21, overlimits 0 requeues 6)
     backlog 0b 0p requeues 6
      flows 1191 (inactive 1177 throttled 0)
      gc 0 highprio 0 throttled 692 latency 11.480us
      pkts_too_long 0 alloc_errors 0 horizon_drops 21 horizon_caps 0
    
    v2: fixed an overflow on 32bit kernels in fq_init(), reported
        by kbuild test robot <lkp@intel.com>
    
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Loading