[click] Click 1.3pre1 released
Eddie Kohler
kohler at icir.org
Wed Mar 5 22:15:25 EST 2003
Hi all,
We are pleased to announce the release of Click 1.3pre1. This will soon
become the first release in Click's 1.3 series.
There are many improvements relative to the last release. In particular,
the nsclick driver from the University of Colorado, and Michael Neufeld in
particular, has been integrated into the repository. A larger list of
changes is attached.
We would love it if you would test the new release and let us know any
regressions you find.
Thanks to everyone who made this happen!
Eddie
Version 1.3pre1 5.Mar.2003
* Incompatible changes
** The 'Queue' element is now a NotifierQueue. To access a queue without
notification, use 'SimpleQueue'.
** The semantics of IPFilter 'deny' arguments have changed. Now, 'deny'
means the same thing as 'drop'. The old behavior was inappropriately
surprising.
** Deprecated KernelTap element in favor of KernelTun.
** Renamed MergeByTimestamp to TimeSortedSched.
** '--enable-clickfs' is the default. (Clickfs provides a symlink from
/proc/click to /click to make upgrading easier.)
** Removed elements deprecated in 1.2.4. This includes LookupIPRoute,
LookupIPRouteLinux, FromLinux, ToLinux, ToLinuxSniffers, PeekHandlers,
ProbSplitter, and RandomLossage.
** The 'void Element::run_scheduled()' method has been deprecated; use
'bool Element::run_task()' or 'void Element::run_timer()' instead.
'run_task()'s bool return value should be true iff the task managed to
do some useful work. (This helps the adaptive scheduler.)
** HandlerCall's interface has changed. So have the raw functions for
accessing handlers from a Router object.
** Element map files now use an XML format, and are called 'elementmap.xml'
and 'elementmap-PACKAGE.xml', not 'elementmap' and 'elementmap.PACKAGE'.
** LLRPCs now explicitly encode the amount of data they transfer to and
from the caller, using the same mechanism as ioctl(). The local_llrpc()
virtual method has been removed.
** Removed deprecated header files like <click/click_ip.h> (use
<clicknet/ip.h> and similar).
** Changed ICMP structure and macro names in <clicknet/icmp.h>.
** Removed deprecated Element methods and method signatures, including
'Element::uninitialize()', 'Element::configure(const Vector<String> &)',
and 'Element::live_reconfigure(const Vector<String> &)'.
** Click declarations and definitions are now surrounded with CLICK_DECLS
and CLICK_ENDDECLS macros (see any source file for an example). These
macros normally do nothing. In the 'ns' driver, though, they drop all
Click declarations into a separate namespace.
** Removed 'String::operator const char *()', which caused problems with
newer GCCs.
* Drivers
** Add an optional adaptive task scheduler, written initially by Petros
Zerfos <pzerfos at cs.ucla.edu>. Give 'configure' the '--enable-adaptive'
option to turn it on. The adaptive scheduler takes less CPU time when
Click isn't busy, and lets you control the minimum and maximum shares
that Click will take of the CPU. This is particularly useful for the
Linux kernel module, on a uniprocessor, for running user-level programs
(tcpdump, for instance) as well as Click.
** Integrated the 'nsclick' driver from the University of Colorado, and
particularly by Michael Neufeld. This driver lets you integrate a Click
router with an ns simulation; Click can accept ns packets and return
packets to ns. See configure's '--enable-ns' option and the 'ns'
subdirectory.
** Add support for Linux 2.4.20 and a newer Intel E1000 driver (4.3.15).
** Linux kernel module driver notices when other processes are waiting to
access the task list (to unschedule a task, for example), and explicitly
waits to give them a chance.
** Various Linux kernel module bug fixes, including a serious one in the
SKB manager (mismeasured packet sizes could cause a kernel crash
eventually).
** Add 'Task::strong_unschedule()', which moves tasks to the quiescent
thread; that way, tasks will not run even if they are rescheduled.
Useful in the presence of notification.
** Improve performance of add_select() and remove_select() at user level.
* Elements
** Add SetUDPChecksum, TimestampAccum, PaintSwitch, KernelTun, MixedQueue.
** Add a set of elements for trace analysis via a new packet annotation,
the aggregate annotation. Elements include AggregateIPFlows,
ToIPFlowDumps, AggregateIP, AggregateLength, AggregateCounter,
AggregateFilter, AggregateFirst, AggregateLast.
** Added notification support to ToDevice, DelayUnqueue, Unqueue,
ToIPSummaryDump, ToDump.
** FromIPSummaryDump and ToIPSummaryDump: Add optional binary format to
save space and speed processing. Add 'aggregate', 'tcp_opt', 'tcp_sack',
'tcp_window', and 'first_timestamp' content types. FromIPSummaryDump
understands '!flowid' and '!aggregate' lines.
** FromDump and friends support 802.11 link types and the IPv6 Ethernet type.
** Extended or changed functionality for ToDump (optional output port),
Counter (different keyword argument names), CycleCountAccum and
PerfCountAccum (different handler names), ControlSocket (different
select() plan for writes reduces needless spinning; READONLY is a
keyword argument), DelayUnqueue (supports combination of long delays and
fast rates), IPFragmenter (HONOR_DF is a keyword argument), SetIPAddress
(supports live reconfiguration), UDPIPEncap (supports live
reconfiguration), IPGWOptions (lazy packet copying and better behavior
on bad options), ICMPError (accept mnemonic names for ICMP error types
and codes), IPReassembler (optionally emit dead fragments to output 1).
** Bug fixes to FromIPSummaryDump, ToIPSummaryDump, IPReassembler,
FromDump, ICMPRewriter, ICMPPingRewriter, ProgressBar, TCPRewriter,
AddressInfo, ARPResponder, ToHost, ToHostSniffers, Classifier,
InfiniteSource, IPGWOptions, ICMPError, IPOutputCombo.
* Tools
** Add click2xml tool, for translating a Click configuration into an XML
format, and a preliminary version of xml2click, which goes the other
way.
** Changed meaning of click-mkmindriver's `-e' option. Now `-e' means
`--expression' for consistency. `-E' means `--elements'.
** click-install supports the BSD kernel module.
** Bug fixes to click-devirtualize, click-install, click-xform,
click-buildtool.
* Internals
** Add 'typename' where required to support newer GCCs.
** Add Packet::shrink_data(), Packet::icmp_header(), and some others.
** Change interface to BigHashMap iterators and BigHashMap_Arenas.
** At user-level, ErrorHandler supports '%[efgEFG]' conversions for
doubles. To print an element declaration, say '%{element}' (not '%e').
** Bug fixes to CLP, BigHashMap,
** Compiles cleanly on machines with 64-bit longs.
* Acknowledgements
** Thanks to AUTHORS, and (in no particular order) to YongKang Zhu, Filip
Henderieckx, Vlemincx Koen, David Scott Page, Wang Po-Cheng, Adam Smith,
Ryan Menezes, Gordon Lee, Chip Coldwell, Xiao Phong, Jose Vasconcellos,
Tomasz Jaskolski, Bart Samwel, and anyone we've missed.
More information about the click
mailing list