Eric Dumazet
ddecf0f4db
net_sched: sfq: add optional RED on top of SFQ
...
Adds an optional Random Early Detection on each SFQ flow queue.
Traditional SFQ limits count of packets, while RED permits to also
control number of bytes per flow, and adds ECN capability as well.
1) We dont handle the idle time management in this RED implementation,
since each 'new flow' begins with a null qavg. We really want to address
backlogged flows.
2) if headdrop is selected, we try to ecn mark first packet instead of
currently enqueued packet. This gives faster feedback for tcp flows
compared to traditional RED [ marking the last packet in queue ]
Example of use :
tc qdisc add dev $DEV parent 1:1 handle 10: est 1sec 4sec sfq \
limit 3000 headdrop flows 512 divisor 16384 \
redflowlimit 100000 min 8000 max 60000 probability 0.20 ecn
qdisc sfq 10: parent 1:1 limit 3000p quantum 1514b depth 127 headdrop
flows 512/16384 divisor 16384
ewma 6 min 8000b max 60000b probability 0.2 ecn
prob_mark 0 prob_mark_head 4876 prob_drop 6131
forced_mark 0 forced_mark_head 0 forced_drop 0
Sent 1175211782 bytes 777537 pkt (dropped 6131, overlimits 11007
requeues 0)
rate 99483Kbit 8219pps backlog 689392b 456p requeues 0
In this test, with 64 netperf TCP_STREAM sessions, 50% using ECN enabled
flows, we can see number of packets CE marked is smaller than number of
drops (for non ECN flows)
If same test is run, without RED, we can check backlog is much bigger.
qdisc sfq 10: parent 1:1 limit 3000p quantum 1514b depth 127 headdrop
flows 512/16384 divisor 16384
Sent 1148683617 bytes 795006 pkt (dropped 0, overlimits 0 requeues 0)
rate 98429Kbit 8521pps backlog 1221290b 841p requeues 0
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Stephen Hemminger <shemminger@vyatta.com>
CC: Dave Taht <dave.taht@gmail.com>
Tested-by: Dave Taht <dave.taht@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-01-12 20:05:28 -08:00
..
9p
net/9p: Convert net/9p protocol dumps to tracepoints
2011-10-24 11:13:12 -05:00
bluetooth
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-next
2012-01-10 15:44:17 -05:00
caif
caif-spi: Bugfix for dump upon device removal
2011-12-06 13:34:12 -05:00
irda
iucv
af_iucv: get rid of state IUCV_SEVERED
2011-12-20 14:05:03 -05:00
netfilter
Merge branch 'nf-next' of git://1984.lsi.us.es/net-next
2011-12-25 02:21:45 -05:00
netns
per-netns ipv4 sysctl_tcp_mem
2011-12-12 19:04:11 -05:00
nfc
NFC: Export a new attribute nfcid1 in target info
2012-01-04 14:30:43 -05:00
phonet
net: dont hold rtnl mutex during netlink dump callbacks
2011-05-02 15:26:28 -07:00
sctp
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2011-12-23 17:13:56 -05:00
tc_act
act_api.h
net: sched: constify tcf_proto and tc_action
2011-07-06 02:52:16 -07:00
addrconf.h
ipv6: Check RA for sllao when configuring optimistic ipv6 address (v2)
2012-01-04 15:53:20 -05:00
af_ieee802154.h
af_rxrpc.h
net: Remove __KERNEL__ cpp checks from include/net
2011-04-24 10:54:56 -07:00
af_unix.h
af_unix: Move CINQ/COUTQ code to helpers
2011-12-30 16:45:45 -05:00
ah.h
arp.h
ipv6: Use universal hash for NDISC.
2011-12-28 15:06:58 -05:00
atmclip.h
atm: clip: Use device neigh support on top of "arp_tbl".
2011-11-30 18:51:03 -05:00
ax25.h
atomic: use <linux/atomic.h>
2011-07-26 16:49:47 -07:00
ax88796.h
cfg80211-wext.h
cfg80211: remove unused wext handler exports
2011-08-08 14:26:29 -04:00
cfg80211.h
cfg80211: Return beacon loss count in station
2011-12-19 14:34:13 -05:00
checksum.h
cipso_ipv4.h
doc: Update the email address for Paul Moore in various source files
2011-08-01 17:58:33 -07:00
cls_cgroup.h
compat.h
net: Add sendmmsg socket system call
2011-05-05 11:10:14 -07:00
datalink.h
dcbevent.h
dcb: Add stub routines for !CONFIG_DCB
2011-10-06 15:49:51 -04:00
dcbnl.h
dcb: add DCBX mode to event notifier attributes
2011-10-06 15:49:51 -04:00
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h
dsa: Include linux/if_ether.h to fix build error
2011-12-01 11:41:06 -05:00
dsfield.h
dst.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2011-12-23 17:13:56 -05:00
dst_ops.h
net: Rename the dst_opt default_mtu method to mtu
2011-11-26 14:29:50 -05:00
esp.h
ethoc.h
fib_rules.h
flow.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2011-12-23 17:13:56 -05:00
flow_keys.h
flow_dissector: use a 64bit load/store
2011-11-29 13:17:03 -05:00
garp.h
garp: remove last synchronize_rcu() call
2011-05-12 17:46:56 -04:00
gen_stats.h
genetlink.h
genetlink: Add genl_notify()
2011-12-03 09:35:05 -08:00
gre.h
icmp.h
ipv4: reduce percpu needs for icmpmsg mibs
2011-11-09 16:04:20 -05:00
ieee80211_radiotap.h
wireless: move ieee80211chan2mhz macro
2011-11-11 12:32:50 -05:00
ieee802154.h
6LoWPAN: add fragmentation support
2011-11-14 00:19:42 -05:00
ieee802154_netdev.h
if_inet6.h
ipv6: updates to privacy addresses per RFC 4941.
2011-08-01 18:05:00 -07:00
inet6_connection_sock.h
inet: Pass flowi to ->queue_xmit().
2011-05-08 15:28:28 -07:00
inet6_hashtables.h
net: use IS_ENABLED(CONFIG_IPV6)
2011-12-11 18:25:16 -05:00
inet_common.h
inet_connection_sock.h
net: rename sk_clone to sk_clone_lock
2011-11-08 17:07:07 -05:00
inet_ecn.h
inet: add rfc 3168 extract in front of INET_ECN_encapsulate()
2011-10-22 01:25:23 -04:00
inet_frag.h
inet_hashtables.h
atomic: use <linux/atomic.h>
2011-07-26 16:49:47 -07:00
inet_sock.h
net: use IS_ENABLED(CONFIG_IPV6)
2011-12-11 18:25:16 -05:00
inet_timewait_sock.h
inet: remove rcu protection on tw_net
2011-12-14 13:34:55 -05:00
inetpeer.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2011-12-02 13:49:21 -05:00
ip.h
net: use IS_ENABLED(CONFIG_IPV6)
2011-12-11 18:25:16 -05:00
ip6_checksum.h
ip6_fib.h
IPv6: Avoid taking write lock for /proc/net/ipv6_route
2011-12-30 17:07:33 -05:00
ip6_route.h
Merge branch 'nf-next' of git://1984.lsi.us.es/net-next
2011-12-25 02:21:45 -05:00
ip6_tunnel.h
ip_fib.h
ipv4: Call fib_select_default() only when actually necessary.
2011-04-14 15:05:22 -07:00
ip_vs.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2012-01-02 18:56:49 -05:00
ipcomp.h
ipconfig.h
ipip.h
ipv6.h
ipv6: Add fragment reporting to ipv6_skip_exthdr().
2011-12-03 09:35:10 -08:00
ipx.h
net: Remove __KERNEL__ cpp checks from include/net
2011-04-24 10:54:56 -07:00
iw_handler.h
lapb.h
wan: make LAPB callbacks const
2011-09-16 19:20:20 -04:00
lib80211.h
include: replace linux/module.h with "struct module" wherever possible
2011-10-31 19:32:32 -04:00
llc.h
atomic: use <linux/atomic.h>
2011-07-26 16:49:47 -07:00
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
bonding,llc: Fix structure sizeof incompatibility for some PDUs
2011-05-13 15:13:24 -04:00
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2012-01-08 13:21:22 -08:00
mip6.h
mld.h
ndisc.h
ipv6: Create fast inline ipv6 neigh lookup just like ipv4.
2011-12-28 15:41:23 -05:00
neighbour.h
ipv6: Use universal hash for NDISC.
2011-12-28 15:06:58 -05:00
net_namespace.h
net: use IS_ENABLED(CONFIG_IPV6)
2011-12-11 18:25:16 -05:00
net_ratelimit.h
net: Kill ratelimit.h dependency in linux/net.h
2011-05-27 13:41:33 -04:00
netdma.h
netevent.h
net: Remove __KERNEL__ cpp checks from include/net
2011-04-24 10:54:56 -07:00
netlabel.h
doc: Update the email address for Paul Moore in various source files
2011-08-01 17:58:33 -07:00
netlink.h
netlink: clarify attribute length check documentation
2011-11-04 17:48:23 -04:00
netprio_cgroup.h
netprio_cgroup: Fix build break
2011-11-23 15:52:58 -05:00
netrom.h
nexthop.h
nl802154.h
p8022.h
ping.h
net: ping: fix build failure
2011-05-17 14:16:58 -04:00
pkt_cls.h
pkt_sched.h
net: sched: constify tcf_proto and tc_action
2011-07-06 02:52:16 -07:00
protocol.h
net: use IS_ENABLED(CONFIG_IPV6)
2011-12-11 18:25:16 -05:00
psnap.h
raw.h
rawv6.h
net: Remove __KERNEL__ cpp checks from include/net
2011-04-24 10:54:56 -07:00
red.h
net_sched: sfq: add optional RED on top of SFQ
2012-01-12 20:05:28 -08:00
regulatory.h
cfg80211: pass DFS region to drivers through reg_notifier()
2011-11-21 16:20:41 -05:00
request_sock.h
tcp: Change possible SYN flooding messages
2011-09-15 14:49:43 -04:00
rose.h
route.h
route: struct rtable can be const in rt_is_input_route and rt_is_output_route
2011-11-26 14:29:51 -05:00
rtnetlink.h
rtnetlink: Compute and store minimum ifinfo dump size
2011-06-09 20:38:07 -07:00
sch_generic.h
net: sch_generic remove redundant use of <linux/module.h>
2011-10-31 19:32:25 -04:00
scm.h
af_unix: dont send SCM_CREDENTIALS by default
2011-09-28 13:29:50 -04:00
secure_seq.h
tcp: add const qualifiers where possible
2011-10-21 05:22:42 -04:00
slhc_vj.h
snmp.h
Merge branch 'for-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2012-01-09 13:08:28 -08:00
sock.h
net: sk_update_clone is only used in net/core/sock.c
2012-01-08 23:44:26 -08:00
stp.h
tcp.h
tcp: Replace constants with #define macros
2011-12-21 01:03:23 -05:00
tcp_memcontrol.h
tcp buffer limitation: per-cgroup limit
2011-12-12 19:04:11 -05:00
tcp_states.h
timewait_sock.h
transp_v6.h
net: relax PKTINFO non local ipv6 udp xmit check
2011-08-30 17:39:01 -04:00
udp.h
net: use IS_ENABLED(CONFIG_IPV6)
2011-12-11 18:25:16 -05:00
udplite.h
udplite: fast-path computation of checksum coverage
2011-10-17 19:07:30 -04:00
wext.h
wimax.h
net: wimax: Remove of unused 'rfkill_input' pointer
2011-06-24 17:50:44 -07:00
wpan-phy.h
x25.h
x25device.h
xfrm.h
net: remove ipv6_addr_copy()
2011-11-22 16:43:32 -05:00