1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-28 11:57:28 +00:00
freebsd/sys/netinet
Lawrence Stewart 47f44cdd93 Some correctness and robustness fixes related to CUBIC's mean RTT estimate:
- The mean RTT is updated at the end of each congestion epoch, but if we switch
  to congestion avoidance within the first epoch (e.g. if ssthresh was primed
  from the hostcache), we'll trigger a divide by zero panic in
  cubic_ack_received(). Set the mean to the min in cubic_record_rtt() if the
  mean is less than the min to ensure we have a sane mean for use in this
  situation. This fixes the panic reported by Nick Hibma.

- Adjust conditions under which we update the mean RTT in cubic_post_recovery()
  to ensure a low latency path won't yield an RTT of less than 1. This avoids
  another potential divide by zero panic when running CUBIC in networks with
  sub-millisecond latencies.

- Remove the "safety" assignment of min into mean when we don't update the mean
  because of failed conditions. The above change to the conditions for updating
  the mean ensures the safety issue is addressed and I feel it is better to keep
  our previous mean estimate around if we can't update than to revert to the
  min.

- Initialise the mean RTT to 1 on connection startup to act as a safety belt if
  a situation we haven't considered and addressed with the above changes were to
  crop up in the wild.

Sponsored by:	FreeBSD Foundation
Reported and tested by:	Nick Hibma
Discussed with:	David Hayes <dahayes at swin edu au>
MFC after:	5 weeks
X-MFC with:	r216114
2011-01-21 05:19:47 +00:00
..
cc Some correctness and robustness fixes related to CUBIC's mean RTT estimate: 2011-01-21 05:19:47 +00:00
ipfw Use a blocking malloc() to initialize the dummynet taskq. 2011-01-13 17:02:39 +00:00
libalias Standardise all Swinburne related copyright/licence statements throughout the 2010-11-12 00:44:18 +00:00
accf_data.c
accf_dns.c
accf_http.c
cc.h Make the CC framework more VIMAGE friendly by adding the machinery to allow 2010-11-16 09:34:31 +00:00
icmp6.h
icmp_var.h
if_atm.c Bring back (most of) NATM to avoid further bitrot after r186119. 2010-12-15 22:58:45 +00:00
if_atm.h
if_ether.c Un-break the build: use the correct format specifier for sizeof() 2011-01-12 23:07:51 +00:00
if_ether.h
igmp_var.h
igmp.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
igmp.h
in_cksum.c
in_debug.c Add initial inet DDB support for show in_ifaddr and show sin commands which 2010-10-24 22:02:36 +00:00
in_gif.c
in_gif.h
in_mcast.c
in_pcb.c Make sure to always do source address selection on 2011-01-08 22:33:46 +00:00
in_pcb.h
in_proto.c Allow carp(4) to be loaded as a kernel module. Follow precedent set by 2010-08-11 00:51:50 +00:00
in_rmx.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
in_systm.h
in_var.h
in.c Use time_uptime instead of non-monotonic time_second to drive ARP 2010-11-30 15:57:00 +00:00
in.h Make the RPC specific __rpc_inet_ntop() and __rpc_inet_pton() general 2010-09-24 15:01:45 +00:00
ip6.h Fix more continuous/contiguous typos (cf. r215955) 2010-11-27 21:51:39 +00:00
ip_carp.c Redo r166423. It is important not only skip freeing multicast 2010-11-24 05:24:36 +00:00
ip_carp.h Unbreak LINT by moving all carp hooks to net/if.c / netinet/ip_carp.h, with 2010-08-11 20:18:19 +00:00
ip_divert.c Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:13 +00:00
ip_divert.h
ip_dummynet.h
ip_ecn.c
ip_ecn.h
ip_encap.c
ip_encap.h
ip_fastfwd.c Use correct field to track statistics counting error as bad header length. 2010-12-05 01:09:48 +00:00
ip_fw.h The first customer of the SO_USER_COOKIE option: 2010-11-12 13:05:17 +00:00
ip_gre.c
ip_gre.h
ip_icmp.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
ip_icmp.h
ip_id.c
ip_input.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
ip_ipsec.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
ip_ipsec.h
ip_mroute.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
ip_mroute.h
ip_options.c Use ifa_ifwithaddr_check() rather than ifa_ifwithaddr() as we are not 2010-10-14 12:32:49 +00:00
ip_options.h
ip_output.c Try to catch a possible divide-by-zero as early as possible if "mtu" is 0 2010-12-31 21:47:11 +00:00
ip_var.h MFp4 CH=183052 183053 183258: 2010-09-02 17:43:44 +00:00
ip.h
pim_var.h
pim.h
raw_ip.c Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:13 +00:00
sctp_asconf.c Define and use SCTP_SSN_GE, SCTP_SSN_GT, SCTP_TSN_GE, SCTP_TSN_GT macros 2010-12-30 21:32:35 +00:00
sctp_asconf.h Delay the assignment of a path for DATA chunk until they hit 2010-09-15 23:10:45 +00:00
sctp_auth.c Fix a locking issue which shows up when the code is used 2010-09-19 11:42:16 +00:00
sctp_auth.h
sctp_bsd_addr.c Code cleanup: Use LIST_FOREACH, LIST_FOREACH_SAFE, TAILQ_FOREACH, 2010-12-30 16:56:20 +00:00
sctp_bsd_addr.h
sctp_cc_functions.c Cleanup the management of CC functions. 2011-01-19 22:10:35 +00:00
sctp_constants.h Fix it so we align with new socket API draft for 2011-01-20 12:40:09 +00:00
sctp_crc32.c Simplify sctp_delayed_cksum() a bit. 2010-11-14 14:37:20 +00:00
sctp_crc32.h Fix the the SCTP_WITH_NO_CSUM option when used in combination with 2010-08-29 18:50:30 +00:00
sctp_dtrace_declare.h Adds new dtrace for cwnd functions and lay's 2010-11-25 13:39:55 +00:00
sctp_dtrace_define.h Adds new dtrace for cwnd functions and lay's 2010-11-25 13:39:55 +00:00
sctp_header.h
sctp_indata.c Define and use SCTP_SSN_GE, SCTP_SSN_GT, SCTP_TSN_GE, SCTP_TSN_GT macros 2010-12-30 21:32:35 +00:00
sctp_indata.h
sctp_input.c Bugfix: Make sure that the COMM_UP notificatin is delivered first also 2011-01-02 10:27:27 +00:00
sctp_input.h
sctp_lock_bsd.h
sctp_os_bsd.h Fix typos. 2010-11-09 10:59:09 +00:00
sctp_os.h
sctp_output.c Define and use SCTP_SSN_GE, SCTP_SSN_GT, SCTP_TSN_GE, SCTP_TSN_GT macros 2010-12-30 21:32:35 +00:00
sctp_output.h Delay the assignment of a path for DATA chunk until they hit 2010-09-15 23:10:45 +00:00
sctp_pcb.c Cleanup the management of CC functions. 2011-01-19 22:10:35 +00:00
sctp_pcb.h Fix the switching on/off of CMT using sysctl and socket option. 2010-08-28 17:59:51 +00:00
sctp_peeloff.c Fix the switching on/off of CMT using sysctl and socket option. 2010-08-28 17:59:51 +00:00
sctp_peeloff.h
sctp_structs.h Fix a bug where also the number of non-renegable gap reports 2010-12-04 19:29:49 +00:00
sctp_sysctl.c Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:13 +00:00
sctp_sysctl.h Provide a possibility to configure the inital congestion window to the 2010-12-22 19:04:14 +00:00
sctp_timer.c Define and use SCTP_SSN_GE, SCTP_SSN_GT, SCTP_TSN_GE, SCTP_TSN_GT macros 2010-12-30 21:32:35 +00:00
sctp_timer.h Remove two functions which are not used. 2010-11-07 17:50:56 +00:00
sctp_uio.h Fix it so we align with new socket API draft for 2011-01-20 12:40:09 +00:00
sctp_usrreq.c Improve comments. 2011-01-20 13:53:34 +00:00
sctp_var.h
sctp.h Add an SCTP socket option to retrieve the number of timeouts 2010-11-16 22:16:38 +00:00
sctputil.c Cleanup the management of CC functions. 2011-01-19 22:10:35 +00:00
sctputil.h Do not have the MTU table twice in the code. Therefore move the 2010-11-07 18:50:35 +00:00
siftr.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
tcp_debug.c
tcp_debug.h
tcp_fsm.h
tcp_hostcache.c sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:50 +00:00
tcp_hostcache.h
tcp_input.c Reset the last_sack_ack SACK hint for TCP input processing to ensure that the 2011-01-10 06:12:01 +00:00
tcp_lro.c Trim extra spaces before tabs. 2011-01-07 21:40:34 +00:00
tcp_lro.h Trim extra spaces before tabs. 2011-01-07 21:40:34 +00:00
tcp_offload.c
tcp_offload.h
tcp_output.c - Add some helper hook points to the TCP stack. The hooks allow Khelp modules to 2010-12-28 12:13:30 +00:00
tcp_reass.c Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:13 +00:00
tcp_sack.c Add a new sack hint to track the most recent and highest sacked sequence number. 2010-12-28 03:27:20 +00:00
tcp_seq.h
tcp_subr.c Specify a CTLTYPE_FOO so that a future sysctl(8) change does not need 2011-01-18 21:14:13 +00:00
tcp_syncache.c sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:53:50 +00:00
tcp_syncache.h Trim extra spaces before tabs. 2011-01-07 21:40:34 +00:00
tcp_timer.c Trim extra spaces before tabs. 2011-01-07 21:40:34 +00:00
tcp_timer.h Remove the TCP inflight bandwidth limiter as announced in r211315 2010-09-16 21:06:45 +00:00
tcp_timewait.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
tcp_usrreq.c Trim extra spaces before tabs. 2011-01-07 21:40:34 +00:00
tcp_var.h Fixe some whitespace nits that were introduced in r216758. 2011-01-11 01:32:08 +00:00
tcp.h Add new, per connection, statistics for TCP, including: 2010-11-17 18:55:12 +00:00
tcpip.h
toedev.h
udp_usrreq.c Fix style 9 nit that snuck in when I 2011-01-19 20:57:08 +00:00
udp_var.h Trim extra spaces before tabs. 2011-01-07 21:40:34 +00:00
udp.h Trim extra spaces before tabs. 2011-01-07 21:40:34 +00:00