Page MenuHomeFreeBSD

rscheff_gmx.at (Richard Scheffenegger)
User

Projects

User Details

User Since
Oct 18 2018, 9:44 PM (70 w, 9 h)

Recent Activity

Tue, Feb 18

rscheff_gmx.at accepted D23742: Use NET_TASK_INIT() and NET_GROUPTASK_INIT() for drivers that process incoming packets in taskqueue context..

Other than the above, that fixed the panic in dummynet.

Tue, Feb 18, 4:13 PM
rscheff_gmx.at added a comment to D23742: Use NET_TASK_INIT() and NET_GROUPTASK_INIT() for drivers that process incoming packets in taskqueue context..

There is something similar in sys/netpfil/pf/pf.c:880: TASK_INIT(&V_pf_overloadtask, 0, pf_overload_task, curvnet);

Tue, Feb 18, 4:10 PM
rscheff_gmx.at added a comment to D23599: Add missing EPOCH(9) wrapper in ipfw.

panic: Assertion in_epoch(net_epoch_preempt) failed at /root/freebsd-master/freebsd/sys/netpfil/ipfw/ip_dn_io.c:745
cpuid = 0
time = 1582039197
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe00084ff890
vpanic() at vpanic+0x185/frame 0xfffffe00084ff8f0
panic() at panic+0x43/frame 0xfffffe00084ff950
dummynet_send() at dummynet_send+0x43/frame 0xfffffe00084ff990
dummynet_task() at dummynet_task+0x31e/frame 0xfffffe00084ffa00
taskqueue_run_locked() at taskqueue_run_locked+0xaa/frame 0xfffffe00084ffa80
taskqueue_thread_loop() at taskqueue_thread_loop+0xc2/frame 0xfffffe00084ffab0
fork_exit() at fork_exit+0x80/frame 0xfffffe00084ffaf0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe00084ffaf0

  • trap 0, rip = 0, rsp = 0, rbp = 0 ---

KDB: enter: panic
Uptime: 7m36s

Tue, Feb 18, 3:52 PM
rscheff_gmx.at added a comment to D23599: Add missing EPOCH(9) wrapper in ipfw.

IPFW/Dummynet appears to now panic with EPOCH assertions (netpfil/ip_dn_*)

Tue, Feb 18, 3:48 PM

Mon, Feb 17

rscheff_gmx.at updated the diff for D23687: Fix sporadic odd MSS values when TCP HostCache is not in use.
  • always return sane struct in tcp_hc_get
Mon, Feb 17, 8:34 AM

Sat, Feb 15

rscheff_gmx.at added a comment to D23687: Fix sporadic odd MSS values when TCP HostCache is not in use.

We are using a commercial compiler suite internally, using a complex build toolchain and automation, but traditionally ignore warnings in the fbsd code around possibly uninitialized variables. Setting them explicitly to zero does silence these two instances. But the normal fbsd build doesn't throw errors around such instances (and gcc / clang may even emit initialization code under the hood).

Sat, Feb 15, 8:27 AM

Fri, Feb 14

rscheff_gmx.at closed D22704: Remove superfluous trailing whitespaces in TCP source files.

rrs took no prisoners, and cleaned up all trailing whitespaces all over the place (even more extensively, as this Diff was only fixing up tcp_*).
With the referenced commits, everything in sys/netinet/*, cc/*, tcp_stacks/* has been addressed and no more trailing whitespaces can be found yet.

Fri, Feb 14, 9:04 PM
rscheff_gmx.at updated the diff for D23687: Fix sporadic odd MSS values when TCP HostCache is not in use.
  • fix the uninit hc_metrics_lite issue with belt and suspenders
Fri, Feb 14, 5:15 PM
rscheff_gmx.at created D23687: Fix sporadic odd MSS values when TCP HostCache is not in use.
Fri, Feb 14, 3:05 PM

Wed, Feb 12

rscheff_gmx.at created D23655: Cubic: prevent abrupt cwnd jumps after slow start.
Wed, Feb 12, 8:46 PM
rscheff_gmx.at added a comment to D23645: ECN incorrectly set.

Good catch!

Wed, Feb 12, 1:13 PM

Sat, Feb 1

rscheff_gmx.at added a comment to D23453: Correct some typos in sourcesfiles.

Most of these only address typos in comments - which are all fine.

Sat, Feb 1, 8:59 PM

Thu, Jan 30

rscheff_gmx.at added a comment to D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.

This fixes https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=243590

Thu, Jan 30, 10:28 PM
rscheff_gmx.at added a comment to D23353: ECN and CUBIC do not play well together in very congested networks.

addressed all of Michael's comments

Thu, Jan 30, 8:39 PM
rscheff_gmx.at updated the diff for D23353: ECN and CUBIC do not play well together in very congested networks.

use int32_t (kernel) max instead of ulmax

Thu, Jan 30, 8:38 PM

Mon, Jan 27

rscheff_gmx.at added a comment to D23160: Fixing RTO timer during SACK loss recovery.

I suspect this snippet here is not working as intended:

Mon, Jan 27, 9:36 PM
rscheff_gmx.at updated the diff for D23160: Fixing RTO timer during SACK loss recovery.
  • and also resetting the timeout backoff counter
Mon, Jan 27, 9:35 PM
rscheff_gmx.at updated the diff for D23160: Fixing RTO timer during SACK loss recovery.
  • Merge branch 'master' into fix-sack-rto
  • ensure that persist and retransmit timers are not running in parallel
Mon, Jan 27, 9:30 PM

Sun, Jan 26

rscheff_gmx.at updated the test plan for D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.
Sun, Jan 26, 9:06 PM
rscheff_gmx.at updated the diff for D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.
  • also mark fresh window probes to be sent with ECT
Sun, Jan 26, 8:56 PM
rscheff_gmx.at created D23373: Handle ECN handshake in simultaneous open.
Sun, Jan 26, 8:12 PM
rscheff_gmx.at added inline comments to D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.
Sun, Jan 26, 6:50 PM
rscheff_gmx.at created D23371: Retain only mutually supported TCP options after simultaneous SYN.
Sun, Jan 26, 6:38 PM

Sat, Jan 25

rscheff_gmx.at added a comment to D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.

What RFC3168 asks to do is to send out the CWR flag together with the byte at [snd_max+1]. Thus setting snd_recover to snd_max (before CWR could have arrived on the other end) can lead to premature exit of congrecovery - while the other end still has the ECE latched. That would result in 2 back to back congestion control reactions.

Sat, Jan 25, 10:46 PM
rscheff_gmx.at updated the diff for D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.
  • keep comment in RACK in-sync too
Sat, Jan 25, 10:37 PM
rscheff_gmx.at updated the diff for D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.
  • add CWR-on-new-data related changes to RACK
Sat, Jan 25, 10:33 PM
rscheff_gmx.at added a comment to D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.

While testing this patch in detail, I found another issue: as ECN recovery doesn't really keep the snd_una to the left, the current EXIT_RECOVERY code will leave recovery on a full ack when no data was outstanding at the time, the ece was received.

Sat, Jan 25, 10:22 PM
rscheff_gmx.at updated the diff for D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.
  • fix snd_recover for ECN handling
Sat, Jan 25, 10:22 PM
rscheff_gmx.at added inline comments to D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.
Sat, Jan 25, 6:28 PM
rscheff_gmx.at updated the diff for D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.
  • Merge branch 'master' into fix-3168-cwr
Sat, Jan 25, 6:22 PM
rscheff_gmx.at created D23364: Send CWR only on new data, as per sec. 6.1.2 of RFC3168.
Sat, Jan 25, 6:15 PM
rscheff_gmx.at added a comment to D23353: ECN and CUBIC do not play well together in very congested networks.

https://tools.ietf.org/html/rfc6582 Appendix B gives the rationale for cwnd to have a lower bound of 2 MSS (addresses the potential additional delay due to a running delayed ACK timeout on the receiver side).

Sat, Jan 25, 4:38 PM
rscheff_gmx.at added a comment to D23281: Reduce Delayed ACK timeout to 40ms.

Probably more than adjusting it completely dynamically. OTOH, traditionally the delayed ACK timeout is typically hardcoded in other stacks also.

Sat, Jan 25, 4:30 PM
rscheff_gmx.at added a comment to D23119: Send CWR whenever a ECN-enabled session runs into RTO.

MFC to stable/12, stable/11 was suggested on the bugtracker...

Sat, Jan 25, 4:26 PM

Fri, Jan 24

rscheff_gmx.at added a comment to D23353: ECN and CUBIC do not play well together in very congested networks.

Test script to provoke the issue:

Fri, Jan 24, 9:15 PM
rscheff_gmx.at created D23353: ECN and CUBIC do not play well together in very congested networks.
Fri, Jan 24, 9:14 PM

Jan 21 2020

rscheff_gmx.at added a comment to D22877: libalias: Add support for RFC 6598/Carrier Grade NAT subnets.

As for testing, you can perhaps use the packetdrill utility with these variables, to use a specific IP(v4/v6) version, and specific local and remote (simulated) IP address hosts over the TUN interface. I assume ipfw would apply to TUN interfaces just like regular interfaces even though they are only ephemeral in existance, during the test:

Jan 21 2020, 10:34 AM

Jan 20 2020

rscheff_gmx.at requested changes to D4294: modernize TCP constants.
Jan 20 2020, 6:42 PM · transport
rscheff_gmx.at created D23281: Reduce Delayed ACK timeout to 40ms.
Jan 20 2020, 6:34 PM
rscheff_gmx.at added a comment to D8021: Correctness fixes to Cubic .

I believe most of these changes have been superceded by the set of patches in this area put in recently.

Jan 20 2020, 5:51 PM

Jan 19 2020

rscheff_gmx.at requested changes to D7821: Preserve ECN bits when merging frames in LRO.

Also, I would suggest to make the IPv6 TOS shift/mask a seperate Diff, and apply that to all the places where iptos is needed in the TCP stacks (plural) currently.

Jan 19 2020, 7:45 PM
rscheff_gmx.at added a comment to D7821: Preserve ECN bits when merging frames in LRO.

Is this still alive? As ECN has become more interesting recently, something like this is probably needed for RFC3168 ECN flows.

Jan 19 2020, 7:43 PM
rscheff_gmx.at added a comment to D7986: Simplify cubic_ack_received.

Is this diff still alive? With all the cubic fixes that went in recently, this patch may need to be rewritten to apply cleanly.

Jan 19 2020, 7:33 PM
rscheff_gmx.at added a comment to D19960: Remove support for RFC2675.

So, reading the comments on the 6man WG, it appears that noone has big concerns around making RFC2675 historic?

Jan 19 2020, 7:21 PM
rscheff_gmx.at accepted D8251: Comment changes for recent TCP optimizations.

Always in for improved documentation.

Jan 19 2020, 7:04 PM
rscheff_gmx.at added a comment to D12487: Combine LROed mbufs for a single call to if_input().

Can this diff be abandoned if no one is interested in following up - to clean up the clutter of the essential transport reviews?

Jan 19 2020, 6:31 PM
rscheff_gmx.at added inline comments to D18811: nuke sack_newdata.
Jan 19 2020, 5:16 PM
rscheff_gmx.at added reviewers for D18811: nuke sack_newdata: jtl, thj.
Jan 19 2020, 1:20 PM
rscheff_gmx.at added a comment to D18811: nuke sack_newdata.

On the question of validation - in the three places where sack_newdata is currently used (1x tcp_do_segment, 1x tcp_output, 1x tcp_sack_partialack, I placed KASSERTS(sack_newdata == snd_recover) and run the dsack and sack test cases from the packetdrill suite.

Jan 19 2020, 1:20 PM

Jan 18 2020

rscheff_gmx.at added a comment to D22670: Send immediate ACK on receipt of CWR.

The packetdrill script to validate this fix with newreno

// Testing ECN - immediate ACK on CWR (D22670)
Jan 18 2020, 10:56 PM

Jan 17 2020

rscheff_gmx.at added a comment to D22704: Remove superfluous trailing whitespaces in TCP source files.

This patch was generated mostly manually, with

grep "[ \t]*$" tcp*
Jan 17 2020, 10:26 PM
rscheff_gmx.at added a comment to D23230: Implement ECN+ (RFC5562) and ECN++ feature (draft-generalized-ecn).

A suite of packetdrill test cases, to validate all combinations between ECN (disabled, enabled, passive), ECN++ (disabled, ECN+, ECN++), Client with and without ECN capability, Active and passive session setup.

Jan 17 2020, 11:41 AM
rscheff_gmx.at created D23230: Implement ECN+ (RFC5562) and ECN++ feature (draft-generalized-ecn).
Jan 17 2020, 11:28 AM
rscheff_gmx.at updated the summary of D23228: Fix passive ECN negotiation.
Jan 17 2020, 10:57 AM
rscheff_gmx.at created D23228: Fix passive ECN negotiation.
Jan 17 2020, 10:54 AM
rscheff_gmx.at added a comment to D23119: Send CWR whenever a ECN-enabled session runs into RTO.

A packetdrill script to test both D23119 and D23118

// Testing ECT on SACK rexmit and CWR on RTO
Jan 17 2020, 2:00 AM

Jan 16 2020

rscheff_gmx.at added a comment to D8349: Setting ssthresh more accurately on loss..

@sbruno: is there any log as to why the revert happend?

Jan 16 2020, 10:42 PM
rscheff_gmx.at accepted D23212: Fix server side TCP fast open.

I can distinctively remember that i deliberately have that special case where the two last parameters are identical in the first DSACK patch.

Jan 16 2020, 10:11 PM
rscheff_gmx.at added a comment to D18892: Phase 2 to add Proportional Rate Reduction (RFC6937) to FreeBSD.

This patch needs additional unit testing, to verify that this patch does what it claims to do, and have no detrimental side effects.

Jan 16 2020, 9:37 PM
rscheff_gmx.at added a comment to D23212: Fix server side TCP fast open.

There is a special case handling in DSACK when start and end (2nd and 3rd param) are equal. Placing the todrop before the block will prevent DSACKs from generated if the last in-sequence packet was sent twice (is to be dsacked).

Jan 16 2020, 7:58 PM
rscheff_gmx.at created D23208: Remove DSACK debug logging.
Jan 16 2020, 4:52 PM
rscheff_gmx.at added a member for transport: rscheff_gmx.at.
Jan 16 2020, 4:17 PM

Jan 14 2020

rscheff_gmx.at added a comment to D23160: Fixing RTO timer during SACK loss recovery.

Note this was found in FBSD11.

Jan 14 2020, 9:43 AM
rscheff_gmx.at added a comment to D23160: Fixing RTO timer during SACK loss recovery.

Just found, that RFC2582, last paragraph of section 4 mentions the "slow-but-steady" reset (re-arm) of the RTO after each partial ack in the context of SACK:

Jan 14 2020, 12:14 AM
rscheff_gmx.at created D23160: Fixing RTO timer during SACK loss recovery.
Jan 14 2020, 12:00 AM

Jan 12 2020

rscheff_gmx.at added a comment to D23118: Fix IP ECN codepoint for SACK retransmissions (RFC3168).

Randall, can you please validate that this is sufficient for the RACK stack?

Jan 12 2020, 11:17 AM
rscheff_gmx.at updated the diff for D23118: Fix IP ECN codepoint for SACK retransmissions (RFC3168).
  • rexmit w/o ip ect mark now in rack too
Jan 12 2020, 11:15 AM
rscheff_gmx.at updated the diff for D23119: Send CWR whenever a ECN-enabled session runs into RTO.
  • rto cwr now in rack too
Jan 12 2020, 11:09 AM

Jan 10 2020

rscheff_gmx.at added a comment to D23119: Send CWR whenever a ECN-enabled session runs into RTO.

In addition, since the RTO retransmission is not CWR-marked and cwnd is reduced to 1 MSS, ECE remains set by the receiver under RFC3168.

Jan 10 2020, 8:20 AM
rscheff_gmx.at added a comment to D23118: Fix IP ECN codepoint for SACK retransmissions (RFC3168).

Testing and validating Cubic with ECN (and implicitly SACK) over two simulated congestion points (one with ECN, one loss-based).

Jan 10 2020, 8:14 AM
rscheff_gmx.at created D23119: Send CWR whenever a ECN-enabled session runs into RTO.
Jan 10 2020, 12:35 AM

Jan 9 2020

rscheff_gmx.at created D23118: Fix IP ECN codepoint for SACK retransmissions (RFC3168).
Jan 9 2020, 11:54 PM

Dec 6 2019

rscheff_gmx.at added a comment to D22704: Remove superfluous trailing whitespaces in TCP source files.

Why would cleaning up trailing whitespaces make MFCing harder? Other than possibly adding one adjacent line?

Dec 6 2019, 12:35 PM
rscheff_gmx.at updated the diff for D22704: Remove superfluous trailing whitespaces in TCP source files.
  • 2nd pass scrub for trailing spaces
Dec 6 2019, 10:24 AM
rscheff_gmx.at updated the summary of D22704: Remove superfluous trailing whitespaces in TCP source files.
Dec 6 2019, 10:00 AM
rscheff_gmx.at created D22704: Remove superfluous trailing whitespaces in TCP source files.
Dec 6 2019, 9:57 AM
rscheff_gmx.at added a comment to D18892: Phase 2 to add Proportional Rate Reduction (RFC6937) to FreeBSD.

Note that the above diff will *not* compile by itself, as it is dependent on D18624. It should therefore only be applies after the necessary changes to improve the SACK scoreboard accounting and supporting code there.

Dec 6 2019, 5:59 AM
rscheff_gmx.at updated the diff for D18892: Phase 2 to add Proportional Rate Reduction (RFC6937) to FreeBSD.
  • minimal diff for prr only
Dec 6 2019, 5:56 AM
rscheff_gmx.at added a comment to D22438: Improve NewReno after_idle ssthresh per RFC2861 Sec.2.

expanded the comment to reference RFC2861 as for the rationale to adjust the ssthresh here also. Since this is dependent on D21798 (restrict unbounded cwnd growth), should this be mentioned also?

Dec 6 2019, 5:13 AM
rscheff_gmx.at updated the diff for D22438: Improve NewReno after_idle ssthresh per RFC2861 Sec.2.
  • adding comment referencing relevant RFC
Dec 6 2019, 5:10 AM
rscheff_gmx.at added inline comments to D22644: Fix the CE reflector receiver state machine in DCTCP.
Dec 6 2019, 5:01 AM
rscheff_gmx.at updated the diff for D22644: Fix the CE reflector receiver state machine in DCTCP.
  • removing the CCF_IPHDR_CE latch, since that is in D19143
Dec 6 2019, 4:59 AM

Dec 5 2019

rscheff_gmx.at added inline comments to D22644: Fix the CE reflector receiver state machine in DCTCP.
Dec 5 2019, 9:02 AM
rscheff_gmx.at updated the diff for D22644: Fix the CE reflector receiver state machine in DCTCP.
  • dctcp specific immediate ack on cwr
  • adjust comment around dctcp_ecnpkt_handler. Keep acknow for CWR in preparation of refactory of ECN handling
Dec 5 2019, 9:02 AM
rscheff_gmx.at added a comment to D22670: Send immediate ACK on receipt of CWR.

Also note, that the reduction in cwnd is not necessarily with a FBSD stack. The DCTCP code for example restricts the lower bound that cwnd may collapse to, to no less than 2 MSS. However, if a FBSD receiver interacts with a different TCP stack on the sender, e.g. one that allows shinking cwnd down to 1 MSS, or perhaps one that uses pacing to support fractional MSS cwnd (eg. 1/2 MSS cwnd -> send one segment every 2 RTTs), getting timely feedbacks on potential critical segments (as an application may stall on the delivery of those) can be vital to have good responsiveness.

Dec 5 2019, 8:38 AM
rscheff_gmx.at updated the diff for D22670: Send immediate ACK on receipt of CWR.
  • make identical change to RACK
Dec 5 2019, 8:29 AM

Dec 4 2019

rscheff_gmx.at added reviewers for D18985: New SACK (RFC6675): rgrimes, chengc_netapp.com, thj.
Dec 4 2019, 8:07 PM
rscheff_gmx.at added reviewers for D18624: improvements to support code for RFC6675: thj, rgrimes, chengc_netapp.com.
Dec 4 2019, 8:06 PM
rscheff_gmx.at added reviewers for D18892: Phase 2 to add Proportional Rate Reduction (RFC6937) to FreeBSD: chengc_netapp.com, tuexen, jtl, thj, rgrimes.
Dec 4 2019, 8:05 PM
rscheff_gmx.at updated the test plan for D22644: Fix the CE reflector receiver state machine in DCTCP.
Dec 4 2019, 2:40 PM
rscheff_gmx.at updated the test plan for D22670: Send immediate ACK on receipt of CWR.
Dec 4 2019, 2:40 PM
rscheff_gmx.at created D22670: Send immediate ACK on receipt of CWR.
Dec 4 2019, 2:39 PM

Dec 3 2019

rscheff_gmx.at created D22644: Fix the CE reflector receiver state machine in DCTCP.
Dec 3 2019, 4:42 PM

Nov 22 2019

rscheff_gmx.at updated the diff for D21798: Restrict cwnd growth on app-limited flows.
  • using ctf_flight_size instead of tcp_compute_pipe in rack
Nov 22 2019, 11:04 AM
rscheff_gmx.at updated the diff for D22497: Moving all ECN related flags to flags2.
  • renaming unused flags
Nov 22 2019, 5:57 AM
rscheff_gmx.at created D22497: Moving all ECN related flags to flags2.
Nov 22 2019, 5:53 AM

Nov 21 2019

rscheff_gmx.at updated the diff for D22429: Addition of flag bit definitions in preparation of AccECN.
  • remove ACE flag from TF and keep flag bits reserved
Nov 21 2019, 10:04 PM
rscheff_gmx.at added inline comments to D22429: Addition of flag bit definitions in preparation of AccECN.
Nov 21 2019, 9:48 PM

Nov 19 2019

rscheff_gmx.at added inline comments to D21798: Restrict cwnd growth on app-limited flows.
Nov 19 2019, 10:26 AM
rscheff_gmx.at updated the diff for D21798: Restrict cwnd growth on app-limited flows.
  • add single 3rd level indentation space to long if clause
Nov 19 2019, 10:25 AM