kernel-fxtec-pro1x/net/sched
Hagen Paul Pfeifer 7bc0f28c7a netem: rate extension
Currently netem is not in the ability to emulate channel bandwidth. Only static
delay (and optional random jitter) can be configured.

To emulate the channel rate the token bucket filter (sch_tbf) can be used.  But
TBF has some major emulation flaws. The buffer (token bucket depth/rate) cannot
be 0. Also the idea behind TBF is that the credit (token in buckets) fills if
no packet is transmitted. So that there is always a "positive" credit for new
packets. In real life this behavior contradicts the law of nature where
nothing can travel faster as speed of light. E.g.: on an emulated 1000 byte/s
link a small IPv4/TCP SYN packet with ~50 byte require ~0.05 seconds - not 0
seconds.

Netem is an excellent place to implement a rate limiting feature: static
delay is already implemented, tfifo already has time information and the
user can skip TBF configuration completely.

This patch implement rate feature which can be configured via tc. e.g:

	tc qdisc add dev eth0 root netem rate 10kbit

To emulate a link of 5000byte/s and add an additional static delay of 10ms:

	tc qdisc add dev eth0 root netem delay 10ms rate 5KBps

Note: similar to TBF the rate extension is bounded to the kernel timing
system. Depending on the architecture timer granularity, higher rates (e.g.
10mbit/s and higher) tend to transmission bursts. Also note: further queues
living in network adaptors; see ethtool(8).

Signed-off-by: Hagen Paul Pfeifer <hagen@jauu.net>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@drr.davemloft.net>
2011-11-30 23:18:35 -05:00
..
act_api.c net: Fix files explicitly needing to include module.h 2011-10-31 19:30:28 -04:00
act_csum.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
act_gact.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
act_ipt.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
act_mirred.c net_sched: fix port mirror/redirect stats reporting 2011-08-17 20:10:20 -07:00
act_nat.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
act_pedit.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
act_police.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
act_simple.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
act_skbedit.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
cls_api.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
cls_basic.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
cls_cgroup.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
cls_flow.c cls_flow: use skb_flow_dissect() 2011-11-28 19:09:28 -05:00
cls_fw.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
cls_route.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
cls_rsvp.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.h pkt_sched: cls_rsvp.h was outdated 2011-09-15 14:49:43 -04:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_tcindex.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
cls_u32.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
em_cmp.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
em_meta.c net: remove SK_ROUTE_CAPS from meta ematch 2011-07-14 14:45:59 -07: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_sched: cleanups 2011-01-19 23:31:12 -08:00
Kconfig networking: NET_CLS_ROUTE4 depends on INET 2011-05-19 19:23:28 -04:00
Makefile pkt_sched: QFQ - quick fair queue scheduler 2011-04-04 11:10:24 -07:00
sch_api.c net: sched: constify tcf_proto and tc_action 2011-07-06 02:52:16 -07:00
sch_atm.c net: remove interrupt.h inclusion from netdevice.h 2011-06-06 22:55:11 -07:00
sch_blackhole.c pkt_sched: Add qdisc->ops->peek() implementation. 2008-10-31 00:45:55 -07:00
sch_cbq.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_choke.c sch_choke: use skb_flow_dissect() 2011-11-29 13:17:03 -05:00
sch_drr.c net_sched: accurate bytes/packets stats/rates 2011-01-20 23:31:33 -08:00
sch_dsmark.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_fifo.c net_sched: reduce fifo qdisc size 2011-03-03 11:10:02 -08:00
sch_generic.c net: Add queue state xoff flag for stack 2011-11-29 12:46:19 -05:00
sch_gred.c net_sched: cleanups 2011-01-19 23:31:12 -08:00
sch_hfsc.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_htb.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sch_ingress.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_mq.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
sch_mqprio.c net: Fix files explicitly needing to include module.h 2011-10-31 19:30:28 -04:00
sch_multiq.c net: Add queue state xoff flag for stack 2011-11-29 12:46:19 -05:00
sch_netem.c netem: rate extension 2011-11-30 23:18:35 -05:00
sch_prio.c net_sched: prio: use qdisc_dequeue_peeked 2011-08-09 21:52:11 -07:00
sch_qfq.c pkt_sched: QFQ - quick fair queue scheduler 2011-04-04 11:10:24 -07:00
sch_red.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_sfb.c sch_sfb: use skb_flow_dissect() 2011-11-28 19:09:28 -05:00
sch_sfq.c sch_sfq: use skb_flow_dissect() 2011-11-29 13:17:03 -05:00
sch_tbf.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-24 14:09:35 -08:00
sch_teql.c net: Add queue state xoff flag for stack 2011-11-29 12:46:19 -05:00