Subject: Recent NetBSD network code improvements
To: None <netbsd-announce@NetBSD.ORG>
From: Jason Thorpe <thorpej@NetBSD.ORG>
List: netbsd-announce
Date: 04/30/1998 19:50:11
Hi folks...
This is just a quick note to announce some cool new features to NetBSD's
networking code, recently introduced in NetBSD-current.
* The TCP initial congestion window (IW) has been made a
tunable variable. This will facilitate migration to the
new TCP initial window when finalized by the Internet
Engineering Task Force.
The IW may be tuned by the sysctl variable net.inet.tcp.init_win.
A value of 0 indicates that the Floyd ~4K IW formula will be
used to compute the IW. Otherwise, the variable indicates the
number of maximum-sized packets.
Contact: Jason R. Thorpe <thorpej@netbsd.org>
* The Hughes/Touch/Heidemann Congestion Window Monitoring
algorithm has been added to TCP. This eliminates line-rate
bursts that can congest network links and routers. It works
by counting the number of outstanding (unacknowedged) packets
on the wire, and allowing that many packets plus a burst
value additional packets when more data is to be transmitted
on a TCP connection. As long as a connection keeps transmitting,
congestion window space is available. As soon as a connection
stops transmitting, the available congestion window quickly
decays back to the burst value. This policy has often been
described as "use it or lose it". It can be especially helpful
on World Wide Web servers which implement HTTP/1.1, which has
lingering connections, which have a high tendency to go idle.
CWM may be enabled in your kernel by setting the sysctl variable
net.inet.tcp.cwm to 1. The burst value may be tuned by setting
the sysctl variable net.inet.tcp.cwm_burstsize. The default
burst size is 4 packets, as documented in the CWM Internet Draft.
Contact: Jason R. Thorpe <thorpej@netbsd.org>
* Path MTU Discovery has been improved. The most significant
improvement over NetBSD 1.3 is that routes added by the Path
MTU Discovery engine now properly time out.
In support of this, a general route timer framework as been
added to the NetBSD kernel.
Path MTU Discovery may be enabled by the sysctl variable
net.inet.ip.mtudisc. The timeout period, expressed in
seconds, may be modified by the sysctl variable
net.inet.ip.mtudisctimeout.
Contact: Kevin M. Lahey <kml@netbsd.org>
* The RFC1323 PAWS/Timestamps/Window Scale implementation in
NetBSD's TCP has been brought up to full spec with the
lastest RFC1323.bis.
In addition, a finer-grained control over RFC1323 extensions
is now supported. RFC1323 may be enabled by the sysctl variable
net.inet.tcp.rfc1323. If that variable is enabled, timestamps
and window scaling are enabled via the net.inet.tcp.timestamps
and net.inet.tcp.win_scale sysctl variables, respectively.
Contact: Kevin M. Lahey <kml@netbsd.org>
Jason R. Thorpe <thorpej@netbsd.org>
* Hooks for zero-copy and other optimizations have been added
to the socket layer. In combination with the new virtual
memory system, UVM, these hooks could potentially provide
greatly improved performance for many network applications.
Watch for more work in this exciting area!
Contact: Matt Thomas <matt@netbsd.org>
* The TCP segment reassembly code has been completely rewritten.
The new code supports segment concatenation, which will improve
performance for out-of-order packets, and also forms the building
blocks of RFC2018 Selective Acknowledgement support.
Contact: Matt Thomas <matt@netbsd.org>
* IP flow recognition and fast IP forwarding support has been
added. This enables PC-class hardware to forward packets
at full line rate with very little CPU utilization. Initial
testing showed forwarding rates of over 140,000 packets per
second with no appreciable increase in system load! Support
for fast-forwarding over Ethernet and FDDI exists now, and
support for fast-forwarding over ATM and Hippi is planned for
the near future. There's more work yet to do, but this is
very exciting stuff!
Contact: Matt Thomas <matt@netbsd.org>
* Support for spoofing link-level addresses has been added
to the Berkeley Packet Filter. This is useful in many
applications where protocols require specific MAC source
addresses. This code was contributed by Greg Smith of
the Numerical Aerospace Simulation Facility, NASA Ames
Research Center.
Contact: Jason R. Thorpe <thorpej@netbsd.org>
* inetd(8) has been modified to allow specification of listen
socket buffer sizes in /etc/inetd.conf. This is useful for
TCP servers that wish to advertise large windows requiring
window scale factors (window scale must be advertised during
the connection handshake, which is why the socket buffer size
must be set on the listen socket). This can improve TCP
performance greatly in some situations.
Contact: Jason R. Thorpe <thorpej@netbsd.org>
And remember, technical discussions about NetBSD's networking code
take place on the tech-net@netbsd.org mailing list. To subscribe,
send mail to majordomo@netbsd.org with the message body:
subscribe tech-net
Until next time...
-- The NetBSD Network Code Hackers