Click-1.2.0 released
Eddie Kohler
kohler at aciri.org
Thu May 3 16:18:04 EDT 2001
Hello all,
We're happy to announce the release of version 1.2.0 of the Click software.
This version has bug fixes, enhancements, and new elements. The biggest
change was the integration of SMP Click, which allows multiple threads to
simultaneously process packets through a Click router! This was designed
and implemented by Benjie Chen and Robert Morris; a paper in USENIX '01
(accessible from our Web site) describes their work.
There are incompatible changes with previous releases. Many of these
changes were required to support SMP Click. See ChangeLog and NEWS files
for details; the NEWS for version 1.2.0 is appended below.
The Click web site is
http://www.pdos.lcs.mit.edu/click/
This site has a tarball for download, an HTMLified change log, and
instructions for accessing our code via anonymous CVS.
As always, we welcome bug reports, patches, suggestions, and so forth.
Write click at pdos.lcs.mit.edu
Eddie Kohler
Click jerk
Click NEWS
* General
** Added support for Click multithreading: multiple processors processing
packets through the Click configuration simultaneously. This required
extensive source code changes and adding optional locks to several
elements. Turn multithreading on at configure time with
`--enable-multithread=[NTHREADS]'. Most elements in ip, standard, and
linuxmodule are synchronized. SMP safe elements are marked with
ELEMENT_MT_SAFE(elementname) at the end of the .cc file. See
http://www.pdos.lcs.mit.edu/papers/click:usenix01/ for a paper on SMP
Click.
** Multithreading: User can use StaticThreadSched or SortedTaskSched
elements
to assign schedulable elements such as PollDevice and ToDevice to
different
threads.
** Multithreading: Queue is not synchronized, but MSQueue and CPUQueue
elements are SMP safe queue implementations. LookupIPRoute is not
synchronized. Should use LookupIPRouteMP instead.
** Multithreading: ARPQuerier and IPRewriter have been synchronzied using
spinlocks and readwrite locks.
** Added FastTCPFlows, FastUDPSrc, and FastUDPFlows elements. These
elements
can be used to generate test traffic.
** Added preliminary support for cross-compilation. Everyone loves Doug!!
** Many bug fixes, and being careful about out-of-memory situations.
** Added support for special Intel-only assembly instructions, which make
things faster. Turn it on at configure time with `--enable-intel-cpu'.
* Kernel driver
** Changed device polling interface: sk_buff recycling moved out of
individual device drivers and into Click (linuxmodule/skbmgr.cc). This
requires a different 2.2.18 patch. You will need to apply the patch in
this distribution and recompile.
** Added a polling Intel EEPro 1000 gigabit driver, which can receive or
send up to 1.3 million 64 byte packets per second.
** Added `accessible' and `priority' module parameters (see
click-install(1)'s `--private' and `--priority' options).
* Elements
** Kernel module device elements changed to use the new polling interface.
See above.
** Added MarkIPCE element for ECN support.
** Added ECN syntax (`ip ect' and `ip ce') and `ip ttl' to IPFilter and
IPClassifier.
** Added DriverManager element that says how to handle please_stop_driver()
events.
** Added keyword arguments to Print, IPPrint, InfiniteSource, RatedSource,
RED, TimedSource, ....
** Added ChatterSocket, DRRSched, PrintOld, PushNull, PullNull, and
SetTimestamp elements.
** Real number parsing functions handle overflow and rounding better.
** IPRewriter garbage collection optimizations from Benjie.
** Added AddressTranslator, ProtocolTranslator46, ProtocolTranslator64
elements that can translate between IPv6 networks and IPv4
networks.
* Tools
** Added click-mkmindriver(1).
** click-align(1) and click-devirtualize(1) bug fixes.
** Add `-C CLICKPATH' argument to all relevant tools.
* C++ API changes
** Added preliminary programmer documentation in Texinfo format
(doc/click.texi). Removed old Element and Connection man pages, which
were obsolete.
** The Element class no longer inherents from `ElementLink'. Elements that
wish to be scheduled must include and initialize a `Task' object.
** Changed TimerHook type to `void (*)(Timer *, void *)'.
** Added Element methods `flow_code' and `configuration'.
** Renamed `Element::Connection' class to `Element::Port'.
** Other changes.
More information about the click
mailing list