Skip to content
  1. Jan 26, 2020
  2. Jan 25, 2020
  3. Jan 24, 2020
  4. Jan 23, 2020
    • David S. Miller's avatar
      Merge branch 'net-sched-add-Flow-Queue-PIE-packet-scheduler' · 6d9f6e67
      David S. Miller authored
      Gautam Ramakrishnan says:
      
      ====================
      net: sched: add Flow Queue PIE packet scheduler
      
      Flow Queue PIE packet scheduler
      
      This patch series implements the Flow Queue Proportional
      Integral controller Enhanced (FQ-PIE) active queue
      Management algorithm. It is an enhancement over the PIE
      algorithm. It integrates the PIE aqm with a deficit round robin
      scheme.
      
      FQ-PIE is implemented over the latest version of PIE which
      uses timestamps to calculate queue delay with an additional
      option of using average dequeue rate to calculate the queue
      delay. This patch also adds a memory limit of all the packets
      across all queues to a default value of 32Mb.
      
       - Patch #1
         - Creates pie.h and moves all small functions and structures
           common to PIE and FQ-PIE here. The functions are all made
           inline.
       - Patch #2 - #8
         - Addresses code formatting, indentation, comment changes
           and rearrangement of structure members.
       - Patch #9
         - Refactors sch_pie.c by changing arguments to
           calculate_probability(), [pie_]drop_early() and
           pie_process_dequeue() to make it generic enough to
           be used by sch_fq_pie.c. These functions are exported
           to be used by sch_fq_pie.c.
       - Patch #10
         - Adds the FQ-PIE Qdisc.
      
      For more information:
      https://tools.ietf.org/html/rfc8033
      
      
      
      Changes from v6 to v7
       - Call tcf_block_put() when destroying the Qdisc as suggested
         by Jakub Kicinski.
      
      Changes from v5 to v6
       - Rearranged struct members according to their access pattern
         and to remove holes.
      
      Changes from v4 to v5
       - This patch series breaks down patch 1 of v4 into
         separate logical commits as suggested by David Miller.
      
      Changes from v3 to v4
       - Used non deprecated version of nla_parse_nested
       - Used SZ_32M macro
       - Removed an unused variable
       - Code cleanup
       All suggested by Jakub and Toke.
      
      Changes from v2 to v3
       - Exported drop_early, pie_process_dequeue and
         calculate_probability functions from sch_pie as
         suggested by Stephen Hemminger.
      
      Changes from v1 ( and RFC patch) to v2
       - Added timestamp to calculate queue delay as recommended
         by Dave Taht
       - Packet memory limit implemented as recommended by Toke.
       - Added external classifier as recommended by Toke.
       - Used NET_XMIT_CN instead of NET_XMIT_DROP as the return
         value in the fq_pie_qdisc_enqueue function.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6d9f6e67
    • Mohit P. Tahiliani's avatar
      net: sched: add Flow Queue PIE packet scheduler · ec97ecf1
      Mohit P. Tahiliani authored
      
      
      Principles:
        - Packets are classified on flows.
        - This is a Stochastic model (as we use a hash, several flows might
                                      be hashed to the same slot)
        - Each flow has a PIE managed queue.
        - Flows are linked onto two (Round Robin) lists,
          so that new flows have priority on old ones.
        - For a given flow, packets are not reordered.
        - Drops during enqueue only.
        - ECN capability is off by default.
        - ECN threshold (if ECN is enabled) is at 10% by default.
        - Uses timestamps to calculate queue delay by default.
      
      Usage:
      tc qdisc ... fq_pie [ limit PACKETS ] [ flows NUMBER ]
                          [ target TIME ] [ tupdate TIME ]
                          [ alpha NUMBER ] [ beta NUMBER ]
                          [ quantum BYTES ] [ memory_limit BYTES ]
                          [ ecnprob PERCENTAGE ] [ [no]ecn ]
                          [ [no]bytemode ] [ [no_]dq_rate_estimator ]
      
      defaults:
        limit: 10240 packets, flows: 1024
        target: 15 ms, tupdate: 15 ms (in jiffies)
        alpha: 1/8, beta : 5/4
        quantum: device MTU, memory_limit: 32 Mb
        ecnprob: 10%, ecn: off
        bytemode: off, dq_rate_estimator: off
      
      Signed-off-by: default avatarMohit P. Tahiliani <tahiliani@nitk.edu.in>
      Signed-off-by: default avatarSachin D. Patil <sdp.sachin@gmail.com>
      Signed-off-by: default avatarV. Saicharan <vsaicharan1998@gmail.com>
      Signed-off-by: default avatarMohit Bhasi <mohitbhasi1998@gmail.com>
      Signed-off-by: default avatarLeslie Monis <lesliemonis@gmail.com>
      Signed-off-by: default avatarGautam Ramakrishnan <gautamramk@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ec97ecf1
    • Mohit P. Tahiliani's avatar
      net: sched: pie: export symbols to be reused by FQ-PIE · 5205ea00
      Mohit P. Tahiliani authored
      
      
      This patch makes the drop_early(), calculate_probability() and
      pie_process_dequeue() functions generic enough to be used by
      both PIE and FQ-PIE (to be added in a future commit). The major
      change here is in the way the functions take in arguments. This
      patch exports these functions and makes FQ-PIE dependent on
      sch_pie.
      
      Signed-off-by: default avatarMohit P. Tahiliani <tahiliani@nitk.edu.in>
      Signed-off-by: default avatarLeslie Monis <lesliemonis@gmail.com>
      Signed-off-by: default avatarGautam Ramakrishnan <gautamramk@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5205ea00
    • Mohit P. Tahiliani's avatar
      net: sched: pie: fix alignment in struct instances · 00ea2fb7
      Mohit P. Tahiliani authored
      
      
      Make the alignment in the initialization of the struct instances
      consistent in the file.
      
      Signed-off-by: default avatarMohit P. Tahiliani <tahiliani@nitk.edu.in>
      Signed-off-by: default avatarLeslie Monis <lesliemonis@gmail.com>
      Signed-off-by: default avatarGautam Ramakrishnan <gautamramk@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      00ea2fb7
    • Mohit P. Tahiliani's avatar
      net: sched: pie: fix commenting · 55f780c4
      Mohit P. Tahiliani authored
      Fix punctuation and logical mistakes in the comments. The
      logical mistake was that "dequeue_rate" is no longer the default
      way to calculate queuing delay and is not needed. The default
      way to calculate queue delay was changed in commit cec2975f
      
      
      ("net: sched: pie: enable timestamp based delay calculation").
      
      Signed-off-by: default avatarMohit P. Tahiliani <tahiliani@nitk.edu.in>
      Signed-off-by: default avatarLeslie Monis <lesliemonis@gmail.com>
      Signed-off-by: default avatarGautam Ramakrishnan <gautamramk@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      55f780c4