-
-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Configurable transport layer SACKs (for node-datachannel) #247
Comments
Edit: See #247 (comment), probably don't do this. Turns out its as easy as setting: import * as NodeDataChannel from "node-datachannel";
// Force SCTP settings.
NodeDataChannel.setSctpSettings({
delayedSackTime: 1_000,
}); In this example the server is sending at about ~29Hz: Before:The default SACK setting from After:Setting |
Edit: After hastily rolling this out to staging server I can now see, in fact, under real world conditions this absolutely wrecks net performance. See the netgraphs below, latency variance / jitter goes to through the roof. This could be because we're running a separate reliable datachannel on the same connection (SCTP settings apply to all channels), and that channels buffering frames block the main thread, etc. Not going to spend too much time on this, just going to revert for now and assume |
What tool were you using for the second network stream image? @reececomo |
No tool unfortunately - it's just a lil debugging overlay we added 🙈 Stats log from the netcode wrapper into |
Summary
When sending packets @ 60Hz from Chrome, our Geckos.io server is responding at the transport layer ~40Hz, at about 107 bytes each.
Configuring delayedSackTime?
There's a comment in node-datachannel with settings to increase the SACK delay window via
delayedSackTime=
, see murat-dogan/node-datachannel#34 (comment) - although I'm a little out of my depth here. Based on the comments inlibdatachannel
it looks like they've increased the default delay from 200ms to 20ms.Example
chrome://webrtc-internals/
output:The text was updated successfully, but these errors were encountered: