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_rsvp6.c
cls_rsvp.c
cls_rsvp.h net_sched: cls: refactor out struct tcf_ext_map 2013-12-18 12:52:07 -05: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
em_cmp.c
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
em_text.c
em_u32.c
ematch.c
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
sch_blackhole.c
sch_cbq.c net_sched: replace pr_warning with pr_warn 2013-12-31 13:50:56 -05:00
sch_choke.c
sch_codel.c
sch_drr.c
sch_dsmark.c sch_dsmark: use correct func name in print messages 2013-12-31 13:50:57 -05:00
sch_fifo.c
sch_fq_codel.c
sch_fq.c net: Change skb_get_rxhash to skb_get_hash 2013-12-17 16:36:21 -05: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
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
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
sch_prio.c
sch_qfq.c
sch_red.c
sch_sfb.c
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