Eric Dumazet
30927520db
tcp_cubic: better follow cubic curve after idle period
...
Jana Iyengar found an interesting issue on CUBIC :
The epoch is only updated/reset initially and when experiencing losses.
The delta "t" of now - epoch_start can be arbitrary large after app idle
as well as the bic_target. Consequentially the slope (inverse of
ca->cnt) would be really large, and eventually ca->cnt would be
lower-bounded in the end to 2 to have delayed-ACK slow-start behavior.
This particularly shows up when slow_start_after_idle is disabled
as a dangerous cwnd inflation (1.5 x RTT) after few seconds of idle
time.
Jana initial fix was to reset epoch_start if app limited,
but Neal pointed out it would ask the CUBIC algorithm to recalculate the
curve so that we again start growing steeply upward from where cwnd is
now (as CUBIC does just after a loss). Ideally we'd want the cwnd growth
curve to be the same shape, just shifted later in time by the amount of
the idle period.
Reported-by: Jana Iyengar <jri@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: Sangtae Ha <sangtae.ha@gmail.com>
Cc: Lawrence Brakmo <lawrence@brakmo.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-09-10 10:58:33 -07:00
..
netfilter
netfilter: nf_dup{4, 6}: fix build error when nf_conntrack disabled
2015-09-02 16:28:06 -07:00
af_inet.c
net: Make table id type u32
2015-09-01 14:32:44 -07:00
ah4.c
ah4: Fix error return in ah_input().
2015-08-25 13:38:50 -07:00
arp.c
net: Fix up inet_addr_type checks
2015-08-13 22:43:21 -07:00
cipso_ipv4.c
ipv4: coding style: comparison for inequality with NULL
2015-04-03 12:11:15 -04:00
datagram.c
net: Set sk_txhash from a random number
2015-07-29 22:44:04 -07:00
devinet.c
net/ipv4: suppress NETDEV_UP notification on address lifetime update
2015-07-28 23:38:13 -07:00
esp4.c
esp4: Switch to new AEAD interface
2015-05-28 11:23:20 +08:00
fib_frontend.c
net: Make table id type u32
2015-09-01 14:32:44 -07:00
fib_lookup.h
ipv4: consider TOS in fib_select_default
2015-07-24 22:46:11 -07:00
fib_rules.c
net: ipv6: use common fib_default_rule_pref
2015-09-09 14:19:50 -07:00
fib_semantics.c
net: Make table id type u32
2015-09-01 14:32:44 -07:00
fib_trie.c
net: FIB tracepoints
2015-08-29 13:05:16 -07:00
fou.c
fou: reject IPv6 config
2015-08-29 13:07:54 -07:00
gre_demux.c
gre: Remove support for sharing GRE protocol hook.
2015-08-10 14:03:54 -07:00
gre_offload.c
ipv4: coding style: comparison for inequality with NULL
2015-04-03 12:11:15 -04:00
icmp.c
net: Add support for VRFs to inetpeer cache
2015-08-28 13:32:36 -07:00
igmp.c
IGMP: Inhibit reports for local multicast groups
2015-08-28 13:28:47 -07:00
inet_connection_sock.c
inet: fix potential deadlock in reqsk_queue_unlink()
2015-08-13 22:46:22 -07:00
inet_diag.c
net: inet_diag: always export IPV6_V6ONLY sockopt for listening sockets
2015-07-10 23:25:24 -07:00
inet_fragment.c
inet: frags: remove INET_FRAG_EVICTED and use list_evictor for the test
2015-07-26 21:00:15 -07:00
inet_hashtables.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-07-23 00:41:16 -07:00
inet_lro.c
inet_timewait_sock.c
inet: inet_twsk_deschedule factorization
2015-07-09 15:12:20 -07:00
inetpeer.c
net: Add helper function to compare inetpeer addresses
2015-08-28 13:32:36 -07:00
ip_forward.c
ip: reject too-big defragmented DF-skb when forwarding
2015-05-25 00:08:48 -04:00
ip_fragment.c
net: Add support for VRFs to inetpeer cache
2015-08-28 13:32:36 -07:00
ip_gre.c
ip_tunnels: record IP version in tunnel info
2015-08-29 13:07:54 -07:00
ip_input.c
dst: Metadata destinations
2015-07-21 10:39:05 -07:00
ip_options.c
ipv4: coding style: comparison for inequality with NULL
2015-04-03 12:11:15 -04:00
ip_output.c
net: Use VRF index for oif in ip_send_unicast_reply
2015-08-13 22:43:21 -07:00
ip_sockglue.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-06-24 02:58:51 -07:00
ip_tunnel.c
ip_gre: Add support to collect tunnel metadata.
2015-08-10 14:03:54 -07:00
ip_tunnel_core.c
ip-tunnel: Use API to access tunnel metadata options.
2015-08-31 12:28:56 -07:00
ip_vti.c
ip_vti/ip6_vti: Preserve skb->mark after rcv_cb call
2015-05-28 06:23:32 +02:00
ipcomp.c
ipv4: coding style: comparison for equality with NULL
2015-04-03 12:11:15 -04:00
ipconfig.c
net: ipv4: increase dhcp inter device timeout
2015-08-12 16:40:22 -07:00
ipip.c
ip_gre: Add support to collect tunnel metadata.
2015-08-10 14:03:54 -07:00
ipmr.c
net: ipv6: use common fib_default_rule_pref
2015-09-09 14:19:50 -07:00
Kconfig
geneve: Consolidate Geneve functionality in single module.
2015-08-27 15:42:48 -07:00
Makefile
geneve: Consolidate Geneve functionality in single module.
2015-08-27 15:42:48 -07:00
netfilter.c
netfilter: don't use module_init/exit in core IPV4 code
2015-06-16 14:12:34 -04:00
ping.c
ipv6: Nonlocal bind
2015-07-09 21:09:10 -07:00
proc.c
net: track success and failure of TCP PMTU probing
2015-07-21 22:36:33 -07:00
protocol.c
raw.c
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2015-04-13 18:18:05 -04:00
route.c
ip_tunnels: convert the mode field of ip_tunnel_info to flags
2015-08-29 13:07:54 -07:00
syncookies.c
tcp: get_cookie_sock() consolidation
2015-06-07 15:19:52 -07:00
sysctl_net_ipv4.c
IGMP: Inhibit reports for local multicast groups
2015-08-28 13:28:47 -07:00
tcp.c
tcp: fix slow start after idle vs TSO/GSO
2015-08-25 11:22:50 -07:00
tcp_bic.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_cdg.c
tcp: do not slow start when cwnd equals ssthresh
2015-07-09 14:22:52 -07:00
tcp_cong.c
tcp: use dctcp if enabled on the route to the initiator
2015-08-31 12:34:00 -07:00
tcp_cubic.c
tcp_cubic: better follow cubic curve after idle period
2015-09-10 10:58:33 -07:00
tcp_dctcp.c
net: tcp: dctcp_update_alpha() fixes.
2015-06-10 23:28:33 -07:00
tcp_diag.c
sock_diag: implement a get_info handler for inet
2015-06-15 19:49:22 -07:00
tcp_fastopen.c
tcp: Do not call tcp_fastopen_reset_cipher from interrupt context
2015-06-23 02:38:10 -07:00
tcp_highspeed.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_htcp.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_hybla.c
tcp: do not slow start when cwnd equals ssthresh
2015-07-09 14:22:52 -07:00
tcp_illinois.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_input.c
tcp: use dctcp if enabled on the route to the initiator
2015-08-31 12:34:00 -07:00
tcp_ipv4.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-08-13 16:23:11 -07:00
tcp_lp.c
tcp_memcontrol.c
tcp_metrics.c
net: Add helper function to compare inetpeer addresses
2015-08-28 13:32:36 -07:00
tcp_minisocks.c
inet: inet_twsk_deschedule factorization
2015-07-09 15:12:20 -07:00
tcp_offload.c
tcp: reserve tcp_skb_mss() to tcp stack
2015-06-11 16:33:10 -07:00
tcp_output.c
tcp: generate CA_EVENT_TX_START on data frames
2015-09-10 10:58:33 -07:00
tcp_probe.c
tcp_scalable.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_timer.c
tcp: do not export tcp_init_xmit_timers()
2015-07-09 21:44:38 -07:00
tcp_vegas.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_vegas.h
tcp: prepare CC get_info() access from getsockopt()
2015-04-29 17:10:38 -04:00
tcp_veno.c
tcp: add tcp_in_slow_start helper
2015-07-09 14:22:52 -07:00
tcp_westwood.c
tcp_westwood: fix tcp_westwood_info()
2015-05-05 19:50:09 -04:00
tcp_yeah.c
tunnel4.c
udp.c
udp: Handle VRF device in sendmsg
2015-08-13 22:43:20 -07:00
udp_diag.c
sock_diag: specify info_size per inet protocol
2015-06-15 19:49:22 -07:00
udp_impl.h
net: Remove iocb argument from sendmsg and recvmsg
2015-03-02 13:06:31 -05:00
udp_offload.c
ipv4: coding style: comparison for inequality with NULL
2015-04-03 12:11:15 -04:00
udp_tunnel.c
tunnel: introduce udp_tun_rx_dst()
2015-08-27 15:42:47 -07:00
udplite.c
xfrm4_input.c
netfilter: Pass socket pointer down through okfn().
2015-04-07 15:25:55 -04:00
xfrm4_mode_beet.c
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
ipv4: hash net ptr into fragmentation bucket selection
2015-03-25 14:07:04 -04:00
xfrm4_output.c
netfilter: Pass socket pointer down through okfn().
2015-04-07 15:25:55 -04:00
xfrm4_policy.c
xfrm: Use VRF master index if output device is enslaved
2015-08-25 11:25:09 -07:00
xfrm4_protocol.c
xfrm4_state.c
xfrm4_tunnel.c