updated NOS code on thumper
- To: firstname.lastname@example.org
- Subject: updated NOS code on thumper
- From: email@example.com (Phil Karn)
- Date: Tue, 29 Jan 91 06:32:01 UTC
It's been quite some time since I last put a snapshot of my code on thumper,
so I did so today. It's in /pub/ka9q/nos/src0127.zip.
I haven't been as active over the past month due to the holidays, an
encounter with the oral surgeon (who excavated two thoroughly impacted
wisdom teeth) and (since the 16th) a powerful addiction to CNN that I am
only now beginning to shake...
Anyway, just to summarize a few of the things I have been hacking on:
1. Improved clock routines. As advertised, all of the timer routines now
deal with times in milliseconds, and I've hacked all of the drivers to
conform. However, this requires all of the timer routines to do internal
tick<->millisecond conversions, and because of the PC's utterly braindamaged
clock design, it's hard to do this accurately and efficiently.
It turns out that you can convert the PC/AT's raw 8254 clocks (generated by
a 3.579545... MHz NTSC color burst crystal divided by 3) exactly into
milliseconds by multiplying by 11 and dividing by 13,125. So last night I
wrote long-division and long-multiplication routines to do this. (This was
necessary because concatenating the 32-bit "Clock" variable with the 8254's
internal 16-bit count register produces 48 bits, too wide for native C
arithmetic.) It has yet to be seen whether these routines are acceptably
Also, it appears that there's still a bug somewhere in my code that reads the
8254 chip, so I recommend that you set "isat off" until I fix it. Otherwise
you can end up with negative TCP RTT values and other weird things.
2. I've installed some of Van Jacobson's latest recommendations for TCP
congestion window control, as culled from his notes at the Vancouver IETF
meeting. In particular:
"fast recovery" - if you're transmitting into a large window and you
suddenly see a series of 3 "do-nothing" ACKs come back, chances are that the
packet pointed to by the ACKs was lost. So retransmit it and then resume
filling the window.
If the connection has been idle for more than one round trip interval,
restart slow-start (set the congestion window back to 1 packet).
3. The PI card driver is included. I'm running it here and it seems to
work quite well with my WA4DSY modem.
4. The "hop check" command has a -n option to suppress inverse domain
5. I've done a little performance tuning on the SLIP and PPP receive
deframers. They're still not really able to keep up with a 9600 baud line
when running on a 8Mhz V20, so I guess it's time to upgrade my packet
switch to a 386SX...