Enable ECN on multiple operating systems
notes to sort out:
[Tue Jun 21 2011]
What was the name of the bufferbloat-related sysctl parameter on
ECN? I’m drawing a blank. [07:43]
Got your plug?
Up and running.
I have it set to 2 which, as I recall, means “try ECN, but
fallback if it’s not there”
no, it’s worse than that
secondly this only applies to connections initiated from or to
dsack, and sack are good too
But it should help with NAT’ed connections, no?
I just got a guruplug version of openwrt built, but debian is
easier to deal with.
proxied via something like polipo, yes [07:46]
Hmm. But the original problem you had here was that my
Linksys didn’t grok ECN at all, and you had ECN = 1 on your Linux
your router was not passing through the ECN bits - dying
Now you should be able to turn it on on the rest of your
So, if my plug router groks ECN, and I enable ECN on it, I
It’s a flow-control thing, isn’t it?
and have all the relative theoretical chocolaty goodness
marking rather than dropping packets is a theoretical goodness
Right. So, bottom line, I want to enable it on the plug,
enable it (set to 2 or 1) on the various internal machines.
Interesting. Out of the box, the plug’s Debian has:
net.ipv4.tcp_sack = 1
net.ipv4.tcp_dsack = 1
that are the best defaults for yesterday’s internet. The new
The internal Ubuntu servers are similarly
ECN breakage was a real problem
Yes, but, IIRC, ecn=2 is essentially ecn=1, with a fallback
in fact, we’ve fixed ECN, TOS, and Diffserv problems all over
Linux stack in the last month.
Or did I misunderstand your original explanation?
Or I was drunk…
ecn = 0 entirely disabled
ecn = 1 enabled
Right. I got that.
What is ecn=2?
ecn = 2…
I think means accept it if presented but don’t initiate it…
Ah. So, ecn=2 on the router is fine, but I want ecn=1 on
internal client machines.
so ecn=1 is good, and a fallback, like ecn=3 - if it existed,
would have the desired fallback behavior would be good [07:52]
there’s a patch for that coming, I think
Sounds like I should leave the router at 2, in case there
internal machines (e.g., windows breakage) that don’t do ECN.
I’m not aware of ecn=1 breaking on ANYTHING except your old
router. You were the first, the last, and the worst.
I’m just trying to grok this stuff. [07:53]
I’ll try 1 on the router, see what happens.
it helps to have qos on the router that applies it to streams
killing your life, rather than drops it… But that’s not a huge issue
for you as you have bandwidth to burn.
Man, this dream plug is sweet. Tiny, small footprint
electrical), quiet as all fuck, and real *nix, to boot.
thx for tryin it. How does the ‘dreamplug’ feel? Is it a better
answered my question in advance [07:54]
Way better. I resurrected the GuruPlug, via the JTAG. Trying
decide whether I have a use for it.
Or whether I should give it to someone (e.g., Costine) and
yea, I loved the openrd, but the interviening releases of
and guruplug left me cold. I’m also not happy with the wireless chip,
but that’s relatively minor.
spread the love, man….
That’s what I’m thinking. … Okay, time for a conf call. By
my kid should be awake and ready for waffles. [07:55]
BTW, the wireless is working just fine here.
I use rc.local to adjust the params via uapctl.
yea, well, start moving to the edge of the range and then watch
Not an issue here.
- dtaht plans to get one of these puppies too, after bmc is happy for
I have four WAPs in this interference-laden place.
- dtaht is using diversity mesh routing now with babel [07:56]
babel + ahcpd is sweet
sit down, plug in the laptop
it figures out it’s on wired
Something to look into, when I have time. If I ever have
unplug, it figures out you are on wireless
streams, and connections, STAY UP
Okay, time to make that call. Later.
yea, it’s amazing how freeing it is to be able to plug in
also the mesh routing ‘diversity’ means that I have several
route over 5.x ghz and are aps over 2.4, and vice versa… Connect
whenever you get time I wanted to know how that meeting
What meeting? [08:00]
some users group meeting of all the users groups [08:07]
Right. I went to a lot of meetings last week. :-) That
well. We’re moving forward, trying to get common venues, common
calendars, etc. [08:10]
FYI, on Mac OS X: [08:12]
\$ sysctl -a | egrep
heh. THANK YOU [08:22]
- dtaht wanted a mesh network in philly to implement.
Another data point: (dancer:bmc) ~ \$ uname -s -r
(dancer:bmc) ~ \$ sysctl -a | egrep
They’re all different.
I have OpenSolaris here, too. Want that data
- dtaht just had 3 new olpcs arrive and is mildly distracted
They make good nightlights, I’m told.
the 1.5s are better nightlights
the 1.75s (I’m on the list) are cool
I’m trying to convince them to add 5.x ghz support
Every child should have that.
Hmm… SunOS 5.11. sysctl not found… [08:53]
\$ ndd /dev/tcp \?|egrep -i
(read and write)
tcp_ecn_permitted (read and
(sunball:bmc) /etc \$ ndd -get /dev/tcp
(sunball:bmc) /etc \$ ndd -get
(Oracle Solaris Tunable Parameters Reference
ecn: 0 (disabled), 1 (passive enabled), or 2 (active
Same values for SACK
Defaults are as shown above. [09:01]
I just tweeted this: When you’ve spent the last decade
using Linux and BSD, the infrequent foray into Solaris feels like
to Mars. #unix
So if I get you to turn it on, that will only leave about 2
computers left to fix and 10s of thousands or routers left to junk
solaris is like 1998
I don’t even want to think about how one accomplishes
Assuming it’s even possible.
thx for the data I’m going to update the wiki in a bit
Or, for that matter, AIX, which makes Mars seem
do these things have sysctl.conf?
I didn’t see a reference to an ndd.conf
Worth skimming. [09:12]
Of course, Solaris no longer has an /etc/rc.local,
Instead, you’re supposed to create something in
(rc.local is fine), then symlink it to an “S” file in the
runlevel directory (e.g., rc3.d).
I just ran across this:
To set parameters so they remain in effect after you
system, add the parameter values to /etc/system when you want to
configure parameters for all devices in the system.
A startup script can also be used to set a ndd
system reboots. Include the appropriate ndd command in a system
script, such as the /etc/init.d/inetinit file or a customized script
/etc/rc2.d or /etc/rc3.d. Be sure to make a copy of any files
adding the ndd commands. [09:14]
Gotta run. Back later.