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 (26 w, 2 d)

Recent Activity

Fri, Mar 29

rscheff_gmx.at added inline comments to D18624: improvements to support code for RFC6675.
Fri, Mar 29, 9:45 AM
rscheff_gmx.at updated the diff for D18624: improvements to support code for RFC6675.
  • fixing curly bracket if branch
  • semantically moving check for new sack data to tcp_input
  • fixed wrong deref to TO struct
Fri, Mar 29, 9:42 AM
rscheff_gmx.at updated the diff for D18624: improvements to support code for RFC6675.
  • adding delivered_data from PRR patch
  • retiring last_sack_ack
  • Revert "retiring last_sack_ack"
  • renamed variables, cleaned spurious comments, removed superfluous lines
  • whitespace and comment changes
  • lots of debugging code.
  • cleaning up RFC6675 patch
  • minor style edits, expanded rescue rexmt comment
  • Merge branch 'master' into rfc6675
  • - missed line during cleanup
  • - adding conditional to enter FR on partial ACK
  • - rearranged logic check to streamline in-sequence processing
  • - monitor ssthresh also
  • maxseg uninitialized after the goto.
  • - do not re-enter rfc6675 fastrecovery while in FR
  • check for FR rather than empty scoreboard, the latter can happen
  • assign maxseg in special case check as late
  • Merge branch 'master' into rfc6675
  • removing logging and test code before arc diff
Fri, Mar 29, 9:01 AM
rscheff_gmx.at added a comment to D19334: Receiver Side DSACK (RFC2883) implementation.

Ready to land.

Fri, Mar 29, 8:37 AM

Wed, Mar 27

rscheff_gmx.at added a comment to D19334: Receiver Side DSACK (RFC2883) implementation.

Need to look into RACK stack and apply similar changes.

Wed, Mar 27, 5:58 PM

Mon, Mar 25

rscheff_gmx.at added a reviewer for D18892: Phase 2 to add Proportional Rate Reduction (RFC6937) to FreeBSD: hiren.
Mon, Mar 25, 3:43 PM

Feb 27 2019

rscheff_gmx.at added a reviewer for D19118: Add Boundary and Overflow checks in Cubic formulas: chengc_netapp.com.
Feb 27 2019, 8:56 PM
rscheff_gmx.at added a reviewer for D18954: Implement Cubic-specific After-Idle reaction: chengc_netapp.com.
Feb 27 2019, 8:56 PM

Feb 24 2019

rscheff_gmx.at added a comment to D19334: Receiver Side DSACK (RFC2883) implementation.

packetdrill test script

Feb 24 2019, 9:51 PM
rscheff_gmx.at created D19334: Receiver Side DSACK (RFC2883) implementation.
Feb 24 2019, 9:46 PM
rscheff_gmx.at retitled D19329: address possible illegal SACK block after FIN when client keeps sending data from don't update rcv_nxt if socket can not receive. to address possible illegal SACK block after FIN when client keeps sending data.
Feb 24 2019, 2:06 PM
rscheff_gmx.at created D19329: address possible illegal SACK block after FIN when client keeps sending data.
Feb 24 2019, 1:52 PM

Feb 23 2019

rscheff_gmx.at added a comment to D18960: Patch to MFC TCP reassembly rewrite to stable/11.

Quick comment: DSACKs are not working in HEAD. Potentially, the tlenp is set to zero for the duplicate segment, so that tcp_update_sack_list is not called to build the DSACK entry to the next ACK. If this is the reason, this patch may break DSACK in BSD11

Feb 23 2019, 10:06 AM

Feb 18 2019

rscheff_gmx.at created D19234: fix cwnd increase for empty acks when not doing ABC.
Feb 18 2019, 10:15 AM
rscheff_gmx.at updated the diff for D19000: Avoid cwnd update for SYN sequence space.
  • Merge branch 'master' into fix-not-rfc3465
  • - remove non-abc fix for cong-avoidance cwnd increase on empty acks
Feb 18 2019, 10:01 AM

Feb 11 2019

rscheff_gmx.at added inline comments to D8253: Cubic changes for improved loss recovery..
Feb 11 2019, 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
Feb 11 2019, 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;

Feb 11 2019, 1:25 PM

Feb 8 2019

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.

Feb 8 2019, 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)
Feb 8 2019, 2:36 PM
rscheff_gmx.at updated the test plan for D19118: Add Boundary and Overflow checks in Cubic formulas.
Feb 8 2019, 2:27 PM
rscheff_gmx.at created D19118: Add Boundary and Overflow checks in Cubic formulas.
Feb 8 2019, 2:27 PM

Feb 7 2019

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

Splitting off the interger overflow changes into another Diff.

Feb 7 2019, 9:21 PM

Feb 6 2019

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

Feb 5 2019

rscheff_gmx.at updated the diff for D17614: RFC6582 - prevent cwnd to collapse down to 1 mss after exiting recovery.
  • prepare to land
Feb 5 2019, 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.

Feb 5 2019, 1:01 PM · transport

Feb 3 2019

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
Feb 3 2019, 6:06 PM
rscheff_gmx.at added inline comments to rS331567: CC Cubic: fix underflow for cubic_cwnd().
Feb 3 2019, 6:05 PM

Feb 2 2019

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.

Feb 2 2019, 9:36 AM

Jan 31 2019

rscheff_gmx.at created D19047: TCP Dynamic Burst Limit.
Jan 31 2019, 6:42 PM
rscheff_gmx.at added inline comments to D19000: Avoid cwnd update for SYN sequence space.
Jan 31 2019, 2:41 PM
rscheff_gmx.at updated the diff for D19000: Avoid cwnd update for SYN sequence space.
  • typo
Jan 31 2019, 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
Jan 31 2019, 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?

Jan 31 2019, 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.

Jan 31 2019, 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.

Jan 31 2019, 9:12 AM

Jan 30 2019

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.

Jan 30 2019, 8:35 PM

Jan 29 2019

rscheff_gmx.at added inline comments to D18897: Add a simple port filter to SIFTR.
Jan 29 2019, 7:54 PM
rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.
  • prevent integer overflows of cwnd
Jan 29 2019, 7:36 PM
rscheff_gmx.at added inline comments to D18954: Implement Cubic-specific After-Idle reaction.
Jan 29 2019, 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)
Jan 29 2019, 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

Jan 29 2019, 11:37 AM

Jan 28 2019

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.

Jan 28 2019, 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
Jan 28 2019, 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
Jan 28 2019, 12:28 PM
rscheff_gmx.at updated the summary of D19000: Avoid cwnd update for SYN sequence space.
Jan 28 2019, 11:21 AM
rscheff_gmx.at created D19000: Avoid cwnd update for SYN sequence space.
Jan 28 2019, 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:

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

Jan 27 2019

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.

Jan 27 2019, 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).

Jan 27 2019, 10:13 PM
rscheff_gmx.at added inline comments to D18897: Add a simple port filter to SIFTR.
Jan 27 2019, 11:40 AM
rscheff_gmx.at added inline comments to D18974: Use exponential backoff also for SYN segments.
Jan 27 2019, 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.

Jan 27 2019, 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.

Jan 27 2019, 12:26 AM

Jan 26 2019

rscheff_gmx.at updated the diff for D18985: New SACK (RFC6675).
  • missed to revert tcpcb variable name used during testing
Jan 26 2019, 9:38 PM
rscheff_gmx.at set the repository for D18954: Implement Cubic-specific After-Idle reaction to rS FreeBSD src repository.
Jan 26 2019, 9:34 PM
rscheff_gmx.at created D18985: New SACK (RFC6675).
Jan 26 2019, 9:29 PM
rscheff_gmx.at abandoned D18963: explicit NewReno module dependency.
Jan 26 2019, 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.

Jan 26 2019, 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
Jan 26 2019, 4:37 PM
rscheff_gmx.at updated the diff for D18954: Implement Cubic-specific After-Idle reaction.
  • typo
Jan 26 2019, 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)
Jan 26 2019, 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

Jan 26 2019, 8:00 AM

Jan 25 2019

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

Jan 25 2019, 7:43 PM
rscheff_gmx.at created D18963: explicit NewReno module dependency.
Jan 25 2019, 6:14 PM
rscheff_gmx.at added inline comments to D18954: Implement Cubic-specific After-Idle reaction.
Jan 25 2019, 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:

Jan 25 2019, 2:06 PM
rscheff_gmx.at added inline comments to D18954: Implement Cubic-specific After-Idle reaction.
Jan 25 2019, 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

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

Jan 24 2019

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.

Jan 24 2019, 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.

Jan 24 2019, 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.

Jan 24 2019, 5:57 PM
rscheff_gmx.at created D18940: Consolidate Initial Window calculations.
Jan 24 2019, 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