Page MenuHomeFreeBSD

rscheff_gmx.at (Richard Scheffenegger)
User

Projects

User does not belong to any projects.

User Details

User Since
Oct 18 2018, 9:44 PM (17 w, 3 d)

Recent Activity

Mon, Feb 11

rscheff_gmx.at added inline comments to D8253: Cubic changes for improved loss recovery..
Mon, Feb 11, 8:16 PM
rscheff_gmx.at updated the diff for D19118: Add Boundary and Overflow checks in Cubic formulas.
  • replace one division with a multiplication, with proper brackets. Taken from D8021
Mon, Feb 11, 1:52 PM
rscheff_gmx.at added a comment to D8021: Correctness fixes to Cubic .

Replacing two divisions by one multiplication and one division in cubic.h looks good;

Mon, Feb 11, 1:25 PM

Fri, Feb 8

rscheff_gmx.at added a comment to D19118: Add Boundary and Overflow checks in Cubic formulas.

While splitting these overflow checks out from the other Diff, I found that there is another typecast overflow, and potential negative overflow in cubic_cwnd.

Fri, Feb 8, 4:56 PM
rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.
  • removed overflow and boundary checks (see D19118 for details)
Fri, Feb 8, 2:36 PM
rscheff_gmx.at updated the test plan for D19118: Add Boundary and Overflow checks in Cubic formulas.
Fri, Feb 8, 2:27 PM
rscheff_gmx.at created D19118: Add Boundary and Overflow checks in Cubic formulas.
Fri, Feb 8, 2:27 PM

Thu, Feb 7

rscheff_gmx.at added a comment to D18954: Implement Cubic-specific After-Idle reaction.

Splitting off the interger overflow changes into another Diff.

Thu, Feb 7, 9:21 PM

Wed, Feb 6

rscheff_gmx.at added inline comments to D18954: Implement Cubic-specific After-Idle reaction.
Wed, Feb 6, 5:18 PM

Tue, Feb 5

rscheff_gmx.at updated the diff for D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.
  • prepare to land
Tue, Feb 5, 7:51 PM · transport
rscheff_gmx.at added a comment to D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.

Over the last two or three weeks, we have run a large number of performance regression tests including this patch, in particular again workloads with frequent app-stalls (no additional data to send for about an RTO interval). That type of workload very often causes burst to be transmitted, including self-inflicted packet drops.

Tue, Feb 5, 1:01 PM · transport

Sun, Feb 3

rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.
  • sys/libkern.h has implicit typecast to (int) for min/max. Need to use ulmin/ulmax for (long)
  • fixing the limit check from D14141
Sun, Feb 3, 6:06 PM
rscheff_gmx.at added inline comments to rS331567: CC Cubic: fix underflow for cubic_cwnd().
Sun, Feb 3, 6:05 PM

Sat, Feb 2

rscheff_gmx.at added a comment to D19047: TCP Dynamic Burst Limit.

According to this https://www.ietf.org/proceedings/88/slides/slides-88-tcpm-9.pdf Linux - at least at some point - also used a dynamic limit with pipe (inflight) as an input parameter: maxburst = pipe +3.

Sat, Feb 2, 9:36 AM

Thu, Jan 31

rscheff_gmx.at created D19047: TCP Dynamic Burst Limit.
Thu, Jan 31, 6:42 PM
rscheff_gmx.at added inline comments to D19000: Avoid cwnd update for SYN sequence space.
Thu, Jan 31, 2:41 PM
rscheff_gmx.at updated the diff for D19000: Avoid cwnd update for SYN sequence space.
  • typo
Thu, Jan 31, 11:47 AM
rscheff_gmx.at updated the diff for D19000: Avoid cwnd update for SYN sequence space.
  • consolidate snd_una adjustment for SYN bit
  • set snd_wnd in the generic case in rack
Thu, Jan 31, 10:49 AM
rscheff_gmx.at added a comment to D19000: Avoid cwnd update for SYN sequence space.

RACK already increments snd_una to deal with FASTOPEN. Consolidate the snd_una++ in the code then?

Thu, Jan 31, 9:43 AM
rscheff_gmx.at added a comment to D19033: Initialise snd_wnd on the server side always before processing the ack.

RACK seems to have a similar code in rack_do_syn_recv.

Thu, Jan 31, 9:36 AM
rscheff_gmx.at accepted D19033: Initialise snd_wnd on the server side always before processing the ack.

Maybe a break in line 2433 is actually missing for the original issue (just another thought; browsing the history doesn't show that though). In any case, this change looks sensible enough.

Thu, Jan 31, 9:12 AM

Wed, Jan 30

rscheff_gmx.at added a comment to D19033: Initialise snd_wnd on the server side always before processing the ack.

So, what you are saying is that this issue here bascially masked the problem reported in PR235256 from happening when window scale was not negotiated.
At least that's what I'm observing, and what the code appears to be saying.

Wed, Jan 30, 8:35 PM

Tue, Jan 29

rscheff_gmx.at added inline comments to D18897: Add a simple port filter to SIFTR.
Tue, Jan 29, 7:54 PM
rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.
  • prevent integer overflows of cwnd
Tue, Jan 29, 7:36 PM
rscheff_gmx.at added inline comments to D18954: Implement Cubic-specific After-Idle reaction.
Tue, Jan 29, 1:05 PM
rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.
  • dragging ticks_last_cong along (restricting to INT_MAX)
Tue, Jan 29, 1:02 PM
rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.

For sufficiently large values of wmax, the calculation in w_tf suffers
for integer overflows in intermediate calculation steps

Tue, Jan 29, 11:37 AM

Mon, Jan 28

rscheff_gmx.at added a comment to D19000: Avoid cwnd update for SYN sequence space.

The validation scripts for RACK, which was actually similarly affected.

Mon, Jan 28, 1:42 PM
rscheff_gmx.at updated the diff for D19000: Avoid cwnd update for SYN sequence space.
  • adding RACK to the SYN bit sequence space fix
Mon, Jan 28, 12:37 PM
rscheff_gmx.at updated the diff for D18996: Disallow broken ECN TCP stacks from using ECN.
  • adding RACK stack to ECN handshake check
  • trailing whitespace
Mon, Jan 28, 12:28 PM
rscheff_gmx.at updated the summary of D19000: Avoid cwnd update for SYN sequence space.
Mon, Jan 28, 11:21 AM
rscheff_gmx.at created D19000: Avoid cwnd update for SYN sequence space.
Mon, Jan 28, 11:11 AM
rscheff_gmx.at added a comment to D18996: Disallow broken ECN TCP stacks from using ECN.

Here are two test scripts to validate both the proper behavior of ECN as a client, against a conformant RFC3168 client, as well as a non-conformant client which reflects back all header flags as received:

Mon, Jan 28, 10:33 AM
rscheff_gmx.at added a reviewer for D18996: Disallow broken ECN TCP stacks from using ECN: tuexen.
Mon, Jan 28, 10:33 AM
rscheff_gmx.at created D18996: Disallow broken ECN TCP stacks from using ECN.
Mon, Jan 28, 1:56 AM

Sun, Jan 27

rscheff_gmx.at accepted D18974: Use exponential backoff also for SYN segments.

Ok, I've could not remember that there are already hardcoded exceptions for TCP options alreads. Since there is precedent that this is an accepted path to deal with special cases (such as ECN++ against a legacy Linux box, should the stack start doing ECN++, of course), i remove my objection.

Sun, Jan 27, 10:31 PM
rscheff_gmx.at added a comment to D18940: Consolidate Initial Window calculations.

I was just starting to validate something around RTO, and found, that the effective IW is now actually 11 SMSS, not 10 MSS, when NOT doing ABC (net.inet.tcp.rfc3465=0).

Sun, Jan 27, 10:13 PM
rscheff_gmx.at added inline comments to D18897: Add a simple port filter to SIFTR.
Sun, Jan 27, 11:40 AM
rscheff_gmx.at added inline comments to D18974: Use exponential backoff also for SYN segments.
Sun, Jan 27, 8:17 AM
rscheff_gmx.at added a comment to D18624: improvements to support code for RFC6675.

A packetdrill script to verfiy the proper operation of the 6675 pipe calculation.

Sun, Jan 27, 12:33 AM
rscheff_gmx.at added a comment to D18985: New SACK (RFC6675).

Packetdrill script to validate both new functionalities of Rescue Retransmission, as well as PartialAck with 3 MSS Sack Block to enter Loss Recovery.

Sun, Jan 27, 12:26 AM

Sat, Jan 26

rscheff_gmx.at updated the diff for D18985: New SACK (RFC6675).
  • missed to revert tcpcb variable name used during testing
Sat, Jan 26, 9:38 PM
rscheff_gmx.at set the repository for D18954: Implement Cubic-specific After-Idle reaction to rS FreeBSD src repository.
Sat, Jan 26, 9:34 PM
rscheff_gmx.at created D18985: New SACK (RFC6675).
Sat, Jan 26, 9:29 PM
rscheff_gmx.at abandoned D18963: explicit NewReno module dependency.
Sat, Jan 26, 8:20 PM
rscheff_gmx.at added a comment to D18954: Implement Cubic-specific After-Idle reaction.

This packetdrill script can reliably reproduce the observed issue.

Sat, Jan 26, 4:55 PM
rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.
  • dangling else; operation validated w/ packetdrill unit testing
Sat, Jan 26, 4:37 PM
rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.
  • typo
Sat, Jan 26, 9:16 AM
rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.
  • update cwnd with w_tf only when it is larger (avoid transmission stalls)
Sat, Jan 26, 9:07 AM
rscheff_gmx.at added a comment to D18940: Consolidate Initial Window calculations.

packet drill test script for validating that RW == IW after idle

Sat, Jan 26, 8:00 AM

Fri, Jan 25

rscheff_gmx.at added a comment to D18811: nuke sack_newdata.

Here is one Patch, where the "wrong" variable name holding recovery has been used for SACK in the past: rS132417

Fri, Jan 25, 7:43 PM
rscheff_gmx.at created D18963: explicit NewReno module dependency.
Fri, Jan 25, 6:14 PM
rscheff_gmx.at added inline comments to D18954: Implement Cubic-specific After-Idle reaction.
Fri, Jan 25, 4:41 PM
rscheff_gmx.at added a comment to D18954: Implement Cubic-specific After-Idle reaction.

For the application and client receive window limited case I would like to gather some feedback on my thoughs around this:

Fri, Jan 25, 2:06 PM
rscheff_gmx.at added inline comments to D18954: Implement Cubic-specific After-Idle reaction.
Fri, Jan 25, 1:45 PM
rscheff_gmx.at updated the diff for D18940: Consolidate Initial Window calculations.

Include RACK in consolidation effort, tcp_compute_initcwnd and tcp_maxseg in rack_after_idle

Fri, Jan 25, 1:33 PM
rscheff_gmx.at set the repository for D18954: Implement Cubic-specific After-Idle reaction to rS FreeBSD src repository.
Fri, Jan 25, 1:11 PM
rscheff_gmx.at created D18954: Implement Cubic-specific After-Idle reaction.
Fri, Jan 25, 1:10 PM

Thu, Jan 24

rscheff_gmx.at added a comment to D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.

Looking at D8225, that all seems to be code while in loss recovery. This patch is to restore a sane minimum cwnd once exiting loss recovery - so I don't see how these would be directly related.

Thu, Jan 24, 10:16 PM · transport
rscheff_gmx.at added a comment to D18940: Consolidate Initial Window calculations.

Here is a sample siftr log, prior to the patch. A simple utility is transmitting 1MB once per second, with the pause in between transfers well above the idle time.

Thu, Jan 24, 8:19 PM
rscheff_gmx.at accepted D18941: RTO.Initial = 1 second for TCP.

Should be adding RFC6298 to https://wiki.freebsd.org/TransportProtocols/tcp_rfc_compliance too...
Good that RFC2988 is marked obsolete there already - but i think that is only tracking the RFC state, not the state of which RFC the stack mostly conforms to.

Thu, Jan 24, 5:57 PM
rscheff_gmx.at created D18940: Consolidate Initial Window calculations.
Thu, Jan 24, 10:14 AM

Jan 18 2019

rscheff_gmx.at updated the diff for D18897: Add a simple port filter to SIFTR.
  • line wrap6
Jan 18 2019, 10:33 PM
rscheff_gmx.at updated the diff for D18897: Add a simple port filter to SIFTR.
  • line wrap
Jan 18 2019, 10:32 PM
rscheff_gmx.at updated the diff for D18897: Add a simple port filter to SIFTR.
  • let us not forget on IPv6
  • have sysctl check the port number range directly
Jan 18 2019, 10:30 PM
rscheff_gmx.at added a comment to D18811: nuke sack_newdata.

Received a PM from tuexen. The Q was, why it is safe to nuke sack_newdata and completely replace it everywhere with snd_recover.

Jan 18 2019, 10:12 PM
rscheff_gmx.at updated the summary of D18885: Make SIFTR work again.
Jan 18 2019, 9:02 PM
rscheff_gmx.at added reviewers for D18897: Add a simple port filter to SIFTR: imp, brooks.
Jan 18 2019, 8:09 PM
rscheff_gmx.at added a reviewer for D18897: Add a simple port filter to SIFTR: chengc_netapp.com.
Jan 18 2019, 7:43 PM
rscheff_gmx.at created D18897: Add a simple port filter to SIFTR.
Jan 18 2019, 7:32 PM
rscheff_gmx.at updated the diff for D18885: Make SIFTR work again.
  • remove port filter
  • revert variable initialization (happening twice)
Jan 18 2019, 7:18 PM
rscheff_gmx.at added a comment to D18892: Phase 2 to add Proportional Rate Reduction (RFC6937) to FreeBSD.

Are you aware of the RACK stack in /usr/src/sys/netinet/tcp_stacks/? It probably does everything you want

Jan 18 2019, 7:11 PM
rscheff_gmx.at added a comment to D18885: Make SIFTR work again.

Shall I split off the port filter into a seperate Diff?

Jan 18 2019, 6:46 PM
rscheff_gmx.at added inline comments to D18885: Make SIFTR work again.
Jan 18 2019, 6:43 PM
rscheff_gmx.at updated the diff for D18885: Make SIFTR work again.
  • removing stack variable
  • adding check to avoid potential memory leak
  • adding error value if enabling or disabling is not possible, if trying the action twice in a row
Jan 18 2019, 6:43 PM
rscheff_gmx.at created D18892: Phase 2 to add Proportional Rate Reduction (RFC6937) to FreeBSD.
Jan 18 2019, 4:45 PM
rscheff_gmx.at updated the diff for D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.
  • fixing trailing whitespaces
Jan 18 2019, 3:22 PM · transport
rscheff_gmx.at updated the diff for D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.
  • remove siftr patch
Jan 18 2019, 3:19 PM · transport
rscheff_gmx.at updated the diff for D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.
  • fixing trailing whitespaces
Jan 18 2019, 3:14 PM · transport
rscheff_gmx.at updated the diff for D18885: Make SIFTR work again.
  • No need to check for uint32 smaller than zero
Jan 18 2019, 2:52 PM
rscheff_gmx.at added inline comments to D18885: Make SIFTR work again.
Jan 18 2019, 2:38 PM
rscheff_gmx.at added a comment to D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.

Here is the output of the now functional siftr, without and with the patch;

Jan 18 2019, 12:09 PM · transport
rscheff_gmx.at updated the summary of D18885: Make SIFTR work again.
Jan 18 2019, 11:01 AM
rscheff_gmx.at created D18885: Make SIFTR work again.
Jan 18 2019, 10:57 AM

Jan 16 2019

rscheff_gmx.at added a comment to D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.

I have been testing this patch against a stable/11 build. Over a 1Gb/s link with emulated 40ms RTT and (10^-4) loss rate, I use iperf from a FreeBSD node to send traffic to a 4.15.0-39-generic Ubuntu16.04 client.

[...]

Using siftr, I still see the single MSS cwnd, and sometimes with a 40ms delay to update a second cwnd. The full cwnd log is attached.

The congestion control in use is newreno.

timestamp cwnd ssthresh
...
1.92838096618652 115052 70875
1.92838382720947 1448 56940 <<< single MSS
1.96786689758301 2896 56940 <<< 40ms delay
1.96786999702454 4344 56940
1.96787786483765 5792 56940
1.96788096427917 7240 56940

Jan 16 2019, 12:08 AM · transport

Jan 10 2019

rscheff_gmx.at created D18811: nuke sack_newdata.
Jan 10 2019, 3:17 PM
rscheff_gmx.at added a reviewer for D18624: improvements to support code for RFC6675: tuexen.
Jan 10 2019, 1:26 PM

Jan 3 2019

rscheff_gmx.at added a comment to D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.

Attached is a tcptrace of a real-world observed issue, where the lack of RFC6582 results in cwnd shrinking down to 1 MSS, followed by delayed ACK timeout and congestion avoidance growth of cwnd (1 MSS per RTT).

Jan 3 2019, 9:09 AM · transport

Dec 24 2018

rscheff_gmx.at raised a concern with rS136151: - Estimate the amount of data in flight in sack recovery and use it.

The variable sack_newdata really is "RecoveryPoint" in RFC3517/RFC6675 when in SACK context, while RFC3782 calls this "recover" in the NewReno context.

Dec 24 2018, 1:02 AM

Dec 22 2018

rscheff_gmx.at updated the diff for D18624: improvements to support code for RFC6675.
  • Another accounting oversight. RFC6675 allows a partial ack with SACK info to immediately enter fast recovery, where this could result in inappropriate tracking of sacked_bytes.
Dec 22 2018, 8:46 PM
rscheff_gmx.at updated the diff for D18624: improvements to support code for RFC6675.
  • fixed accounting error with partial or cumulative acks
Dec 22 2018, 8:25 PM
rscheff_gmx.at updated the diff for D18624: improvements to support code for RFC6675.
  • lots of debugging code.
Dec 22 2018, 8:11 PM

Dec 20 2018

rscheff_gmx.at updated the diff for D18624: improvements to support code for RFC6675.
  • whitespace and comment changes
Dec 20 2018, 7:54 PM
rscheff_gmx.at created D18624: improvements to support code for RFC6675.
Dec 20 2018, 7:44 PM

Dec 18 2018

rscheff_gmx.at added a comment to D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.

This packetdrill script should complete without error, when IW10 and the above patch are applied, for a SACK session, or non-SACK session.

Dec 18 2018, 4:15 PM · transport

Dec 15 2018

rscheff_gmx.at updated the diff for D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.

Minor comment edit
and moving to GIT/Phabricator/ARC workflow

Dec 15 2018, 8:40 PM · transport

Nov 29 2018

rscheff_gmx.at added a reviewer for D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery: chengc_netapp.com.
Nov 29 2018, 10:33 PM · transport
rscheff_gmx.at added reviewers for D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery: tuexen, rrs, hiren.
Nov 29 2018, 10:08 PM · transport
rscheff_gmx.at accepted D18375: Improve receive window autoscaling for TCP.

Thanks for the updates comments!

Nov 29 2018, 5:47 PM
rscheff_gmx.at added a comment to D18375: Improve receive window autoscaling for TCP.

Only nit in the comment to this patch:

Nov 29 2018, 11:01 AM