remarkable-linux/net/sched
Vijay Subramanian d4b36210c2 net: pkt_sched: PIE AQM scheme
Proportional Integral controller Enhanced (PIE) is a scheduler to address the
bufferbloat problem.

>From the IETF draft below:
" Bufferbloat is a phenomenon where excess buffers in the network cause high
latency and jitter. As more and more interactive applications (e.g. voice over
IP, real time video streaming and financial transactions) run in the Internet,
high latency and jitter degrade application performance. There is a pressing
need to design intelligent queue management schemes that can control latency and
jitter; and hence provide desirable quality of service to users.

We present here a lightweight design, PIE(Proportional Integral controller
Enhanced) that can effectively control the average queueing latency to a target
value. Simulation results, theoretical analysis and Linux testbed results have
shown that PIE can ensure low latency and achieve high link utilization under
various congestion situations. The design does not require per-packet
timestamp, so it incurs very small overhead and is simple enough to implement
in both hardware and software.  "

Many thanks to Dave Taht for extensive feedback, reviews, testing and
suggestions. Thanks also to Stephen Hemminger and Eric Dumazet for reviews and
suggestions.  Naeem Khademi and Dave Taht independently contributed to ECN
support.

For more information, please see technical paper about PIE in the IEEE
Conference on High Performance Switching and Routing 2013. A copy of the paper
can be found at ftp://ftpeng.cisco.com/pie/.

Please also refer to the IETF draft submission at
http://tools.ietf.org/html/draft-pan-tsvwg-pie-00

All relevant code, documents and test scripts and results can be found at
ftp://ftpeng.cisco.com/pie/.

For problems with the iproute2/tc or Linux kernel code, please contact Vijay
Subramanian (vijaynsu@cisco.com or subramanian.vijay@gmail.com) Mythili Prabhu
(mysuryan@cisco.com)

Signed-off-by: Vijay Subramanian <subramanian.vijay@gmail.com>
Signed-off-by: Mythili Prabhu <mysuryan@cisco.com>
CC: Dave Taht <dave.taht@bufferbloat.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-01-06 15:13:01 -05:00
..
act_api.c sched action: make local function static 2014-01-02 03:30:36 -05:00
act_csum.c net_sched: fix a regression in tc actions 2013-12-20 17:06:27 -05:00
act_gact.c net_sched: fix a regression in tc actions 2013-12-20 17:06:27 -05:00
act_ipt.c net_sched: fix a regression in tc actions 2013-12-20 17:06:27 -05:00
act_mirred.c net_sched: fix a regression in tc actions 2013-12-20 17:06:27 -05:00
act_nat.c net_sched: fix a regression in tc actions 2013-12-20 17:06:27 -05:00
act_pedit.c net_sched: fix a regression in tc actions 2013-12-20 17:06:27 -05:00
act_police.c net_sched: fix a regression in tc actions 2013-12-20 17:06:27 -05:00
act_simple.c net_sched: fix a regression in tc actions 2013-12-20 17:06:27 -05:00
act_skbedit.c net_sched: fix a regression in tc actions 2013-12-20 17:06:27 -05:00
cls_api.c net_sched: fix a regression in tcf_proto_lookup_ops() 2013-12-20 17:06:27 -05:00
cls_basic.c net_sched: cls: refactor out struct tcf_ext_map 2013-12-18 12:52:07 -05:00
cls_bpf.c net_sched: cls: refactor out struct tcf_ext_map 2013-12-18 12:52:07 -05:00
cls_cgroup.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next 2014-01-05 20:18:50 -05:00
cls_flow.c net_sched: cls: refactor out struct tcf_ext_map 2013-12-18 12:52:07 -05:00
cls_fw.c net_sched: cls: refactor out struct tcf_ext_map 2013-12-18 12:52:07 -05:00
cls_route.c net_sched: cls: refactor out struct tcf_ext_map 2013-12-18 12:52:07 -05:00
cls_rsvp.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.h net_sched: cls: refactor out struct tcf_ext_map 2013-12-18 12:52:07 -05:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_tcindex.c net_sched: cls: refactor out struct tcf_ext_map 2013-12-18 12:52:07 -05:00
cls_u32.c net_sched: cls: refactor out struct tcf_ext_map 2013-12-18 12:52:07 -05:00
em_canid.c net: em_canid: Ematch rule to match CAN frames according to their identifiers 2012-07-04 13:07:05 +02:00
em_cmp.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
em_ipset.c em_ipset: use dev_net() accessor 2013-10-18 16:23:06 -04:00
em_meta.c net: Change skb_get_rxhash to skb_get_hash 2013-12-17 16:36:21 -05:00
em_nbyte.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
em_text.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
em_u32.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
ematch.c net: Convert net_ratelimit uses to net_<level>_ratelimited 2012-05-15 13:45:03 -04:00
Kconfig net: pkt_sched: PIE AQM scheme 2014-01-06 15:13:01 -05:00
Makefile net: pkt_sched: PIE AQM scheme 2014-01-06 15:13:01 -05:00
sch_api.c net, sch: fix the typo in register_qdisc() 2013-12-31 16:44:10 -05:00
sch_atm.c net_sched: info leak in atm_tc_dump_class() 2013-07-31 15:04:19 -07:00
sch_blackhole.c pkt_sched: Add qdisc->ops->peek() implementation. 2008-10-31 00:45:55 -07:00
sch_cbq.c net_sched: replace pr_warning with pr_warn 2013-12-31 13:50:56 -05:00
sch_choke.c treewide: Add __GFP_NOWARN to k.alloc calls with v.alloc fallbacks 2013-08-20 13:06:40 +02:00
sch_codel.c fq_codel: should use qdisc backlog as threshold 2012-05-16 15:30:26 -04:00
sch_drr.c net_sched: add 64bit rate estimators 2013-06-11 02:51:03 -07:00
sch_dsmark.c sch_dsmark: use correct func name in print messages 2013-12-31 13:50:57 -05:00
sch_fifo.c pkt_sched: Stop using NLA_PUT*(). 2012-04-01 18:11:37 -04:00
sch_fq.c net: Change skb_get_rxhash to skb_get_hash 2013-12-17 16:36:21 -05:00
sch_fq_codel.c net: fq_codel: Fix off-by-one error 2013-03-29 15:32:23 -04:00
sch_generic.c pkt_sched: set root qdisc before change() in attach_default_qdiscs() 2013-12-14 01:20:06 -05:00
sch_gred.c net_sched: replace pr_warning with pr_warn 2013-12-31 13:50:56 -05:00
sch_hfsc.c net_sched: add 64bit rate estimators 2013-06-11 02:51:03 -07:00
sch_hhf.c hhf: make qdisc ops static 2013-12-26 13:29:35 -05:00
sch_htb.c sch_htb: use /* comments 2013-12-31 13:50:57 -05:00
sch_ingress.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_mq.c pkt_sched: give visibility to mq slave qdiscs 2013-12-09 19:54:47 -05:00
sch_mqprio.c pkt_sched: give visibility to mq slave qdiscs 2013-12-09 19:54:47 -05:00
sch_multiq.c net/*: Fix FSF address in file headers 2013-12-06 12:37:57 -05:00
sch_netem.c sch_netem: support of 64bit rates 2013-12-31 14:31:44 -05:00
sch_pie.c net: pkt_sched: PIE AQM scheme 2014-01-06 15:13:01 -05:00
sch_plug.c net_sched: sch_plug: plug_qdisc_ops is static 2012-02-13 16:04:40 -05:00
sch_prio.c pkt_sched: Stop using NLA_PUT*(). 2012-04-01 18:11:37 -04:00
sch_qfq.c pkt_sched: sch_qfq: remove a source of high packet delay/jitter 2013-07-18 13:02:00 -07:00
sch_red.c pkt_sched: Stop using NLA_PUT*(). 2012-04-01 18:11:37 -04:00
sch_sfb.c sch_sfb: Fix missing NULL check 2012-07-12 08:33:18 -07:00
sch_sfq.c net_sched: sfq: put sfq_unlink in a do - while loop 2013-12-10 22:44:52 -05:00
sch_tbf.c sch_tbf: add TBF_BURST/TBF_PBURST attribute 2013-12-26 13:54:22 -05:00
sch_teql.c sch_teql: Convert over to dev_neigh_lookup_skb(). 2012-07-05 01:09:06 -07:00