Page MenuHomeFreeBSD

rscheff (Richard Scheffenegger)
User

Projects

User Details

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

Recent Activity

Today

rscheff committed R10:71cc98ba7352: tcp: Add prr_out in preparation for PRR/nonSACK and LRD (authored by rscheff).
tcp: Add prr_out in preparation for PRR/nonSACK and LRD
Mon, Mar 8, 11:27 AM
rscheff committed R10:7ab9fef1be9d: tcp: remove a superfluous local var in tcp_sack_partialack() (authored by rscheff).
tcp: remove a superfluous local var in tcp_sack_partialack()
Mon, Mar 8, 11:24 AM
rscheff committed R10:d90bba73a2e4: tcp: remove incorrect reset of SACK variable in PRR (authored by rscheff).
tcp: remove incorrect reset of SACK variable in PRR
Mon, Mar 8, 11:22 AM

Fri, Mar 5

rscheff closed D29058: tcp: Add prr_out in preparation for PRR/nonSACK and LRD.
Fri, Mar 5, 11:43 PM
rscheff committed R10:e53138694aa4: tcp: Add prr_out in preparation for PRR/nonSACK and LRD (authored by rscheff).
tcp: Add prr_out in preparation for PRR/nonSACK and LRD
Fri, Mar 5, 11:43 PM
rscheff updated the diff for D29058: tcp: Add prr_out in preparation for PRR/nonSACK and LRD.
  • add prr_out in preparation for PRR/nonSACK and LRD
  • fix style nit
Fri, Mar 5, 11:36 PM
rscheff committed R10:9a13d9dceee2: tcp: remove a superfluous local var in tcp_sack_partialack() (authored by rscheff).
tcp: remove a superfluous local var in tcp_sack_partialack()
Fri, Mar 5, 5:24 PM
rscheff closed D29088: remove a superfluous local var.
Fri, Mar 5, 5:24 PM
rscheff closed D29083: [tcp:] remove incorrect reset of sack variable in prr.
Fri, Mar 5, 5:19 PM
rscheff committed R10:4a8f3aad37dd: tcp: remove incorrect reset of SACK variable in PRR (authored by rscheff).
tcp: remove incorrect reset of SACK variable in PRR
Fri, Mar 5, 5:19 PM
rscheff added a comment to D29083: [tcp:] remove incorrect reset of sack variable in prr.

yes, after this particular assignment was commented out (effectively) yesterday evening, to collect some detailed logs when this may occur, this change is the functional equivalend.

Fri, Mar 5, 3:53 PM
rscheff requested review of D29088: remove a superfluous local var.
Fri, Mar 5, 3:46 PM
rscheff updated the diff for D29083: [tcp:] remove incorrect reset of sack variable in prr.
  • remove cleanup
Fri, Mar 5, 3:42 PM
rscheff requested review of D29083: [tcp:] remove incorrect reset of sack variable in prr.
Fri, Mar 5, 3:14 PM
rscheff added a comment to D29069: pfctl: Add missing 'va' code point name.

I agree with Rod's assessment here.

Fri, Mar 5, 9:47 AM

Thu, Mar 4

rscheff requested review of D29058: tcp: Add prr_out in preparation for PRR/nonSACK and LRD.
Thu, Mar 4, 2:46 PM
rscheff accepted D29056: net: Introduce IPV6_DSCP(), IPV6_ECN() and IPV6_TRAFFIC_CLASS() macros.
Thu, Mar 4, 1:27 PM
rscheff added a comment to D29056: net: Introduce IPV6_DSCP(), IPV6_ECN() and IPV6_TRAFFIC_CLASS() macros.

there are siimilar constructs in the tcp stack, when checking for ECN (extracting the "common, legacy" TOS byte first:

Thu, Mar 4, 12:45 PM
rscheff committed R10:b8ffda0a37e1: tcp: various improvements and fixes to PRR (authored by rscheff).
tcp: various improvements and fixes to PRR
Thu, Mar 4, 12:01 PM
rscheff committed R10:05e742af6f54: calculate prr_out correctly when pipe < ssthresh (authored by rscheff).
calculate prr_out correctly when pipe < ssthresh
Thu, Mar 4, 8:28 AM

Wed, Mar 3

rscheff committed R10:2b43cd2ea26f: Improve PRR initial transmission timing (authored by rscheff).
Improve PRR initial transmission timing
Wed, Mar 3, 7:57 AM

Tue, Mar 2

rscheff committed R10:15a7c88058d4: update the SACK loss recovery to RFC6675, with the following new features: (authored by rscheff).
update the SACK loss recovery to RFC6675, with the following new features:
Tue, Mar 2, 5:14 PM

Mon, Mar 1

rscheff committed R10:0b0f8b359d0b: calculate prr_out correctly when pipe < ssthresh (authored by rscheff).
calculate prr_out correctly when pipe < ssthresh
Mon, Mar 1, 3:53 PM
rscheff closed D28998: Calculate prr_out correctly everywhere.
Mon, Mar 1, 3:53 PM
rscheff requested review of D28998: Calculate prr_out correctly everywhere.
Mon, Mar 1, 2:55 PM
rscheff committed R10:9596751563dc: Include new data sent in PRR calculation (authored by rscheff).
Include new data sent in PRR calculation
Mon, Mar 1, 7:48 AM

Sun, Feb 28

rscheff committed R10:e9071000c9a0: Improve PRR initial transmission timing (authored by rscheff).
Improve PRR initial transmission timing
Sun, Feb 28, 3:15 PM
rscheff closed D28953: Improve PRR initial transmission timing.
Sun, Feb 28, 3:15 PM
rscheff added a comment to D28953: Improve PRR initial transmission timing.

Behavior without this patch:

Sun, Feb 28, 2:34 PM
rscheff committed R10:c0c928636156: TCP_NOOPT may prevent the negotiation of TCP features, which a server (authored by rscheff).
TCP_NOOPT may prevent the negotiation of TCP features, which a server
Sun, Feb 28, 8:23 AM
rscheff committed R10:25fb4c363b29: PRR: Avoid accounting left-edge twice in partial ACK. (authored by rscheff).
PRR: Avoid accounting left-edge twice in partial ACK.
Sun, Feb 28, 8:11 AM
rscheff committed R10:ffbf1b809ef5: Address two incorrect calculations and enhance readability of PRR code (authored by rscheff).
Address two incorrect calculations and enhance readability of PRR code
Sun, Feb 28, 8:09 AM
rscheff committed R10:32ed0ef06b83: PRR: use accurate rfc6675_pipe when enabled (authored by rscheff).
PRR: use accurate rfc6675_pipe when enabled
Sun, Feb 28, 8:07 AM

Sat, Feb 27

rscheff updated the diff for D28972: Use PRR for ECN congestion recovery.
  • set fack for old pipe in prr
Sat, Feb 27, 8:14 PM
rscheff requested review of D28972: Use PRR for ECN congestion recovery.
Sat, Feb 27, 6:55 PM
rscheff added a comment to D28953: Improve PRR initial transmission timing.

The set of other PRR patches is applied also in the first set of statistics? The unnecessarily retransmitted statistics looks interesting - possibly without this, and reordering in the network, PRR would push our retransmissions faster than the original (but reordered) packet arrives at the client. Interesting.

Sat, Feb 27, 5:39 PM
rscheff updated the diff for D28931: Basic Lost Retransmission Detection (LRD).
  • revive basic LRD
  • add tcp_input() logging for prr
  • add cc_cong_signal to LRD trigger condition.
  • make the compiler happy
  • add tunable for LRD
  • track prr sent bytes from prior window for LRD
  • move LRD into dedicated function to reduce clutter
  • nicify comments
Sat, Feb 27, 12:09 PM
rscheff updated the diff for D28953: Improve PRR initial transmission timing.
  • allow one more potential transmit opportunity
Sat, Feb 27, 11:51 AM

Fri, Feb 26

rscheff requested review of D28953: Improve PRR initial transmission timing.
Fri, Feb 26, 11:17 PM
rscheff closed D28941: Include new data sent in PRR calculation.
Fri, Feb 26, 10:01 PM
rscheff committed R10:9e83a6a556ed: Include new data sent in PRR calculation (authored by rscheff).
Include new data sent in PRR calculation
Fri, Feb 26, 10:01 PM
rscheff requested review of D28941: Include new data sent in PRR calculation.
Fri, Feb 26, 5:10 PM
rscheff committed R10:c3aa4ba5dfc0: Ensure cwnd doesn't shrink to zero with PRR (authored by rscheff).
Ensure cwnd doesn't shrink to zero with PRR
Fri, Feb 26, 10:17 AM

Thu, Feb 25

rscheff requested review of D28931: Basic Lost Retransmission Detection (LRD).
Thu, Feb 25, 10:42 PM
rscheff updated the diff for D23230: Implement ECN++ (draft-generalized-ecn).
  • updated timestamp in man file
Thu, Feb 25, 7:38 PM
rscheff updated the diff for D28702: Rename rfc6675_pipe to sack.revised, and enable by default.
  • changing vnet 6675_pipe to newsack
  • rename and shuffle rfc6675_pipe to sack.newsack
  • onboard the cc modules to the change
  • rebase to HEAD
Thu, Feb 25, 7:22 PM
rscheff updated the diff for D28822: Add PRR 6937bis heuristic and remove prr_conservative sysctl.
  • rebase to HEAD
Thu, Feb 25, 7:17 PM
rscheff added a comment to D28822: Add PRR 6937bis heuristic and remove prr_conservative sysctl.

The code above is my current understanding of the 6927bis draft. Note that this will make PRR loss recovery slightly less aggressive especially under heavy loss.

Thu, Feb 25, 6:30 PM
rscheff committed R10:2593f858d7d0: A TCP server has to take into consideration, if TCP_NOOPT is preventing (authored by rscheff).
A TCP server has to take into consideration, if TCP_NOOPT is preventing
Thu, Feb 25, 6:21 PM
rscheff closed D28652: Don't retain TF_RCVD_TSTMP when TF_NOOPT prevents sending timestamps.
Thu, Feb 25, 6:21 PM
rscheff committed R10:31d7a27c6e88: PRR: Avoid accounting left-edge twice in partial ACK. (authored by rscheff).
PRR: Avoid accounting left-edge twice in partial ACK.
Thu, Feb 25, 6:10 PM
rscheff closed D28819: PRR: Avoid accounting left-edge twice in partial ACK..
Thu, Feb 25, 6:10 PM
rscheff closed D28813: Address two incorrect calculations and enhance readability of PRR code.
Thu, Feb 25, 5:35 PM
rscheff committed R10:48396dc77922: Address two incorrect calculations and enhance readability of PRR code (authored by rscheff).
Address two incorrect calculations and enhance readability of PRR code
Thu, Feb 25, 5:35 PM
rscheff added a comment to D28634: Deal with DupACKs of SACK session with missing SACK Blocks.

As discussed in the transport call, checked if TOF_SACK would only be set by tcp_dooption() when TF_SACK_PERMIT was received/send. But this is not the case.

Thu, Feb 25, 4:56 PM
rscheff added a comment to D28634: Deal with DupACKs of SACK session with missing SACK Blocks.

from transport: check if tcp_doopt is tracking incoming sack blocks only, when SACK_PERMIT is enabled, and reduce this to a single check (TOF_SACK presence).

Thu, Feb 25, 3:47 PM
rscheff abandoned D28686: Perform TFO cookie exchange for all TFO cookie requests.
Thu, Feb 25, 2:57 PM

Sun, Feb 21

rscheff requested review of D28822: Add PRR 6937bis heuristic and remove prr_conservative sysctl.
Sun, Feb 21, 12:43 AM

Sat, Feb 20

rscheff retitled D28702: Rename rfc6675_pipe to sack.revised, and enable by default from Rename rfc6675_pipe to sack.newsack, and enable by default to Rename rfc6675_pipe to sack.revised, and enable by default.
Sat, Feb 20, 7:54 PM
rscheff updated the diff for D28702: Rename rfc6675_pipe to sack.revised, and enable by default.
  • change pretty name of sysctl to 'revised'
  • rebase to include PRR pipe calculation
Sat, Feb 20, 7:53 PM
rscheff retitled D28819: PRR: Avoid accounting left-edge twice in partial ACK. from PRR: avoid accounting left-edge twice in parital ack to PRR: Avoid accounting left-edge twice in partial ACK..
Sat, Feb 20, 7:43 PM
rscheff updated the diff for D28819: PRR: Avoid accounting left-edge twice in partial ACK..
  • rebase to HEAD
Sat, Feb 20, 7:38 PM
rscheff closed D28816: Use new SACK Recovery (RFC6675) pipe calculation with PRR.
Sat, Feb 20, 7:24 PM
rscheff committed R10:a8e431e1537d: PRR: use accurate rfc6675_pipe when enabled (authored by rscheff).
PRR: use accurate rfc6675_pipe when enabled
Sat, Feb 20, 7:24 PM
rscheff updated the test plan for D28819: PRR: Avoid accounting left-edge twice in partial ACK..
Sat, Feb 20, 7:07 PM
rscheff requested review of D28819: PRR: Avoid accounting left-edge twice in partial ACK..
Sat, Feb 20, 6:40 PM
rscheff updated the summary of D28816: Use new SACK Recovery (RFC6675) pipe calculation with PRR.
Sat, Feb 20, 5:28 PM
rscheff requested review of D28816: Use new SACK Recovery (RFC6675) pipe calculation with PRR.
Sat, Feb 20, 5:26 PM

Fri, Feb 19

rscheff requested review of D28813: Address two incorrect calculations and enhance readability of PRR code.
Fri, Feb 19, 11:55 PM
rscheff closed D28780: Ensure cwnd doesn't shrink to zero with PRR.
Fri, Feb 19, 1:41 PM
rscheff committed R10:853fd7a2e398: Ensure cwnd doesn't shrink to zero with PRR (authored by rscheff).
Ensure cwnd doesn't shrink to zero with PRR
Fri, Feb 19, 1:41 PM

Thu, Feb 18

rscheff requested review of D28780: Ensure cwnd doesn't shrink to zero with PRR.
Thu, Feb 18, 7:59 PM
rscheff added a comment to D28759: Guard tcp_lro_log with #ifdef TCPHPTS..

Looks to be the same as 0a4f851074a3ca74cd4859c20e7d9807b2aeca65

Thu, Feb 18, 7:53 AM
rscheff added a comment to D28761: tcp_lro_log: mark __unused to avoid unused function warning.

I prefer the traditional approach taken in D28759.

Thu, Feb 18, 7:50 AM

Tue, Feb 16

rscheff accepted D28265: kern: net: remove TCP_LINGERTIME.

looked into uipc_socket.c, sonewconn() does as you mention, and yes, I would agree that the expected behavior should be to retain the settings of the listening socket rather than change this... But I leave it to @tuexen to give the verdict on this.

Tue, Feb 16, 7:32 PM
rscheff added a comment to D28702: Rename rfc6675_pipe to sack.revised, and enable by default.

Certainly, I'm definitely open to suggestions. functional descriptions would be a mouthful, as 6675 has pipe, faster_lossrecovery, and rescue_rexmit.

Tue, Feb 16, 1:58 PM
rscheff requested review of D28702: Rename rfc6675_pipe to sack.revised, and enable by default.
Tue, Feb 16, 1:17 PM
rscheff committed R10:3c40e1d52cd8: update the SACK loss recovery to RFC6675, with the following new features: (authored by rscheff).
update the SACK loss recovery to RFC6675, with the following new features:
Tue, Feb 16, 12:10 PM
rscheff closed D18985: New SACK (RFC6675).
Tue, Feb 16, 12:10 PM
rscheff accepted D18985: New SACK (RFC6675).
Tue, Feb 16, 10:58 AM

Mon, Feb 15

rscheff committed R10:1e76911d62ed: Adding PRR sysctls to tcp(4) man page (authored by rscheff).
Adding PRR sysctls to tcp(4) man page
Mon, Feb 15, 9:57 PM
rscheff committed R10:cef784ce8965: Adding PRR sysctls to tcp(4) man page (authored by rscheff).
Adding PRR sysctls to tcp(4) man page
Mon, Feb 15, 9:50 PM
rscheff added a comment to D28686: Perform TFO cookie exchange for all TFO cookie requests.

The problem is with the negotiation part - a zero length cookie, while acceptable per RFC, still needs to be sent back to a client, for it to send out SYN+data. Otherwise, a regular SYN followed by a PUSH,ACK appears to be happening.

Mon, Feb 15, 5:04 PM
rscheff added a comment to D28686: Perform TFO cookie exchange for all TFO cookie requests.

Glancing at this, the current fastopen infrastructure doesn't seem to have any mechanism to provide shorter key-length keys. The server side key generation is apparently done asynchonously, and reused for all clients requesting TFO. Thus special casing the acceptany when sending out the TFO option, to send out a shorter key there.

Mon, Feb 15, 4:41 PM
rscheff added a comment to D28686: Perform TFO cookie exchange for all TFO cookie requests.

My understanding is that if net.inet.tcp.fastpath.acceptany is set, all cookies are excepted. This includes empty cookies as mentioned in RFC 7413.

Mon, Feb 15, 4:14 PM
rscheff requested review of D28686: Perform TFO cookie exchange for all TFO cookie requests.
Mon, Feb 15, 2:15 PM

Sun, Feb 14

rscheff added inline comments to D28652: Don't retain TF_RCVD_TSTMP when TF_NOOPT prevents sending timestamps.
Sun, Feb 14, 1:00 PM
rscheff updated the diff for D28652: Don't retain TF_RCVD_TSTMP when TF_NOOPT prevents sending timestamps.
  • moving the parallel SYN check further down, to gracefully disable FASTOPEN
Sun, Feb 14, 1:00 PM
rscheff updated the diff for D28652: Don't retain TF_RCVD_TSTMP when TF_NOOPT prevents sending timestamps.
  • remove check in tcp_newtcpcb() again
Sun, Feb 14, 12:24 PM
rscheff added a comment to D28652: Don't retain TF_RCVD_TSTMP when TF_NOOPT prevents sending timestamps.

Programmatically, correct. Which makes me wonder, shouldn't the TF_NOOPT (and other flags) be inherited from a listening socket, when you accept() an incoming connection?

Sun, Feb 14, 12:21 PM
rscheff updated the diff for D28652: Don't retain TF_RCVD_TSTMP when TF_NOOPT prevents sending timestamps.
  • typo
Sun, Feb 14, 9:10 AM
rscheff added a comment to D28652: Don't retain TF_RCVD_TSTMP when TF_NOOPT prevents sending timestamps.

Generalizing, the other options need to be disabled too, in case of a simultaneous SYN. Disabling the request before that, during the tcp_newtcpcb() for an abundance of safety.

Sun, Feb 14, 9:09 AM
rscheff updated the diff for D28652: Don't retain TF_RCVD_TSTMP when TF_NOOPT prevents sending timestamps.
  • consider TF_NOOPT for all SYN options (simultaneous SYN)
Sun, Feb 14, 9:04 AM
rscheff accepted D28656: Fix SEG.SEQ in SYN.ACK when handling SYN in SYN-SENT on socket with TCP_NOOPT enabled..

Good catch.

Sun, Feb 14, 8:38 AM

Sat, Feb 13

rscheff requested review of D28652: Don't retain TF_RCVD_TSTMP when TF_NOOPT prevents sending timestamps.
Sat, Feb 13, 4:55 PM
rscheff added a comment to D18985: New SACK (RFC6675).

FWIW, I did perform a statistically questionable quick "test", comparing this patch (with rfc6675_pipe enabled) against HEAD just running PRR, by effectively browsing over some Alexa Top-343 websites.
Number of RTO went down, exchanged SACK blocks up (which would be expected).
Average and Stdev for flow completion went down (~10%), while median went up slightly (1%). However, this was not a true valid test, as caching and temporary effects could have impacted these results, especially as only the get request itself (with all the headers and redirections) could have improved in goodput.

Sat, Feb 13, 2:00 PM
rscheff added reviewers for D18985: New SACK (RFC6675): kbowling, NetApp.

Further steps discussed in this weeks transport call:

Sat, Feb 13, 11:42 AM
rscheff added a comment to D18985: New SACK (RFC6675).

Validated 6675 style loss recovery entry, and rescue retransmissions using the test script. Addressed an interop issue with PRR (partial ACK with no SACK blocks should be dealt with in sack_partialack, not prr_partialack).

Sat, Feb 13, 11:33 AM
rscheff updated the diff for D18985: New SACK (RFC6675).
  • expand tcp(4) man page to discuss new mechanisms enabled by rfc6675_pipe
  • on partial ack w/o SACK blk, use sack_partial_ack for rescuerexmit
Sat, Feb 13, 11:25 AM
rscheff added a comment to D28645: Remove classful masks from interface addition code..

Should be mentioned in the releasenotes, when it comes to that, since this is a change in behavior exposed to the user.

Sat, Feb 13, 11:05 AM