Gavin McCullagh
2072c228c9
[TCP]: use non-delayed ACK for congestion control RTT
...
When a delayed ACK representing two packets arrives, there are two RTT
samples available, one for each packet. The first (in order of seq
number) will be artificially long due to the delay waiting for the
second packet, the second will trigger the ACK and so will not itself
be delayed.
According to rfc1323, the SRTT used for RTO calculation should use the
first rtt, so receivers echo the timestamp from the first packet in
the delayed ack. For congestion control however, it seems measuring
delayed ack delay is not desirable as it varies independently of
congestion.
The patch below causes seq_rtt and last_ackt to be updated with any
available later packet rtts which should have less (and hopefully
zero) delack delay. The rtt value then gets passed to
ca_ops->pkts_acked().
Where TCP_CONG_RTT_STAMP was set, effort was made to supress RTTs from
within a TSO chunk (!fully_acked), using only the final ACK (which
includes any TSO delay) to generate RTTs. This patch removes these
checks so RTTs are passed for each ACK to ca_ops->pkts_acked().
For non-delay based congestion control (cubic, h-tcp), rtt is
sometimes used for rtt-scaling. In shortening the RTT, this may make
them a little less aggressive. Delay-based schemes (eg vegas, veno,
illinois) should get a cleaner, more accurate congestion signal,
particularly for small cwnds. The congestion control module can
potentially also filter out bad RTTs due to the delayed ack alarm by
looking at the associated cnt which (where delayed acking is in use)
should probably be 1 if the alarm went off or greater if the ACK was
triggered by a packet.
Signed-off-by: Gavin McCullagh <[email protected] >
Acked-by: Ilpo J�rvinen <[email protected] >
Signed-off-by: David S. Miller <[email protected] >
2007-12-29 19:11:21 -08:00
..
ipvs
[IPVS]: Fix sched registration race when checking for name collision.
2007-12-05 05:37:27 -08:00
netfilter
[NETFILTER]: nf_conntrack_ipv4: fix module parameter compatibility
2007-12-26 19:36:33 -08:00
af_inet.c
[NET]: Forget the zero_it argument of sk_alloc()
2007-11-01 00:39:31 -07:00
ah4.c
cleanup asm/scatterlist.h includes
2007-11-02 08:47:06 +01:00
arp.c
[IPV4] ARP: Remove not used code
2007-12-19 23:38:11 -08:00
cipso_ipv4.c
[NetLabel]: correct usage of RCU locking
2007-10-26 04:29:08 -07:00
datagram.c
devinet.c
[IPV4]: Swap the ifa allocation with the"ipv4_devconf_setall" call
2007-12-11 02:45:25 -08:00
esp4.c
[IPv4] ESP: Discard dummy packets introduced in rfc4303
2007-12-11 02:45:26 -08:00
fib_frontend.c
[IPV4]: OOPS with NETLINK_FIB_LOOKUP netlink socket
2007-12-21 02:01:53 -08:00
fib_hash.c
[NET]: Make core networking code use seq_open_private
2007-10-10 16:55:33 -07:00
fib_lookup.h
fib_rules.c
[INET]: Small possible memory leak in FIB rules
2007-11-10 22:12:03 -08:00
fib_semantics.c
[NETLINK]: Introduce nested and byteorder flag to netlink attribute
2007-10-10 16:49:16 -07:00
fib_trie.c
remove asm/bitops.h includes
2007-10-19 11:53:41 -07:00
icmp.c
[INET]: Unexport icmpmsg_statistics
2007-10-26 04:06:08 -07:00
igmp.c
[NET]: Make core networking code use seq_open_private
2007-10-10 16:55:33 -07:00
inet_connection_sock.c
[INET]: Justification for local port range robustness.
2007-10-18 22:00:17 -07:00
inet_diag.c
[INET]: Fix inet_diag dead-lock regression
2007-12-03 15:51:25 +11:00
inet_fragment.c
[INET]: Consolidate frag queues freeing
2007-10-17 19:48:26 -07:00
inet_hashtables.c
[INET]: Remove per bucket rwlock in tcp/dccp ehash table.
2007-11-07 04:15:11 -08:00
inet_lro.c
[LRO]: fix lro_gen_skb() alignment
2007-12-05 05:37:32 -08:00
inet_timewait_sock.c
[INET]: Remove per bucket rwlock in tcp/dccp ehash table.
2007-11-07 04:15:11 -08:00
inetpeer.c
[INET]: Use list_head-s in inetpeer.c
2007-11-12 21:27:28 -08:00
ip_forward.c
[IPV4]: Uninline netfilter okfns
2007-10-15 12:26:35 -07:00
ip_fragment.c
[NET]: Fix uninitialised variable in ip_frag_reasm()
2007-10-17 21:37:22 -07:00
ip_gre.c
[IPV4] ip_gre: set mac_header correctly in receive path
2007-12-20 00:10:33 -08:00
ip_input.c
[IPV4]: Uninline netfilter okfns
2007-10-15 12:26:35 -07:00
ip_options.c
ip_output.c
[IPV4]: Consolidate the ip cork destruction in ip_output.c
2007-11-07 04:08:25 -08:00
ip_sockglue.c
[IPV4]: Clean the ip_sockglue.c from some ugly ifdefs
2007-11-07 04:08:55 -08:00
ipcomp.c
[IPSEC]: Fix crypto_alloc_comp error checking
2007-11-07 04:15:03 -08:00
ipconfig.c
[IPV4] Fix ip=dhcp regression
2007-12-28 13:39:11 -08:00
ipip.c
[NET]: Treat the sign of the result of skb_headroom() consistently
2007-10-23 21:27:55 -07:00
ipmr.c
[NET]: Make core networking code use seq_open_private
2007-10-10 16:55:33 -07:00
Kconfig
typo fixes
2007-10-20 01:34:40 +02:00
Makefile
[INET]: Collect frag queues management objects together
2007-10-15 12:26:39 -07:00
netfilter.c
[NETFILTER]: Replace sk_buff ** with sk_buff *
2007-10-15 12:26:29 -07:00
proc.c
[NET]: Define infrastructure to keep 'inuse' changes in an efficent SMP/NUMA way.
2007-11-07 04:08:57 -08:00
protocol.c
raw.c
[IPV4]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure
2007-11-07 04:08:58 -08:00
route.c
[IPV4]: Remove prototype of ip_rt_advice
2007-12-07 01:07:38 -08:00
syncookies.c
sysctl_net_ipv4.c
[TCP]: Problem bug with sysctl_tcp_congestion_control function
2007-11-19 23:28:21 -08:00
tcp.c
[INET]: Remove per bucket rwlock in tcp/dccp ehash table.
2007-11-07 04:15:11 -08:00
tcp_bic.c
[TCP]: Remove num_acked>0 checks from cong.ctrl mods pkts_acked
2007-10-10 16:47:55 -07:00
tcp_cong.c
tcp_cubic.c
[TCP]: Remove num_acked>0 checks from cong.ctrl mods pkts_acked
2007-10-10 16:47:55 -07:00
tcp_diag.c
[INET]: Let inet_diag and friends autoload
2007-10-22 02:59:54 -07:00
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_illinois.c
[TCP] illinois: Incorrect beta usage
2007-11-30 01:10:55 +11:00
tcp_input.c
[TCP]: use non-delayed ACK for congestion control RTT
2007-12-29 19:11:21 -08:00
tcp_ipv4.c
[IPV4] TCPMD5: Use memmove() instead of memcpy() because we have overlaps.
2007-11-20 17:30:31 -08:00
tcp_lp.c
tcp_minisocks.c
[TCP]: Move sack_ok access to obviously named funcs & cleanup
2007-10-10 16:48:00 -07:00
tcp_output.c
[TCP]: NAGLE_PUSH seems to be a wrong way around
2007-12-05 05:37:31 -08:00
tcp_probe.c
[NET]: Make /proc/net per network namespace
2007-10-10 16:49:06 -07:00
tcp_scalable.c
tcp_timer.c
[TCP]: Move sack_ok access to obviously named funcs & cleanup
2007-10-10 16:48:00 -07:00
tcp_vegas.c
[TCP] vegas: Fix a bug in disabling slow start by gamma parameter.
2007-10-29 22:37:25 -07:00
tcp_vegas.h
tcp_veno.c
tcp_westwood.c
tcp_yeah.c
tunnel4.c
[INET]: Cleanup the xfrm4_tunnel_(un)register
2007-11-10 21:48:54 -08:00
udp.c
[IPV4]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure
2007-11-07 04:08:58 -08:00
udp_impl.h
[UDP]: Randomize port selection.
2007-10-10 16:48:31 -07:00
udplite.c
[IPV4]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure
2007-11-07 04:08:58 -08:00
xfrm4_input.c
[IPSEC]: Rename mode to outer_mode and add inner_mode
2007-10-17 21:35:51 -07:00
xfrm4_mode_beet.c
[IPSEC]: Add missing BEET checks
2007-10-17 21:31:50 -07:00
xfrm4_mode_transport.c
[IPSEC]: Use IPv6 calling convention as the convention for x->mode->output
2007-10-10 16:55:54 -07:00
xfrm4_mode_tunnel.c
[IPSEC]: Add missing BEET checks
2007-10-17 21:31:50 -07:00
xfrm4_output.c
[IPSEC]: Rename mode to outer_mode and add inner_mode
2007-10-17 21:35:51 -07:00
xfrm4_policy.c
[IPSEC]: Rename mode to outer_mode and add inner_mode
2007-10-17 21:35:51 -07:00
xfrm4_state.c
[IPSEC]: Store afinfo pointer in xfrm_mode
2007-10-17 21:33:12 -07:00
xfrm4_tunnel.c
[IPSEC]: Move tunnel parsing for IPv4 out of xfrm4_input
2007-10-17 21:28:53 -07:00