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