[Click] Click 2.0 RELEASED
Eddie Kohler
kohler at cs.ucla.edu
Sat Jul 16 23:17:53 EDT 2011
Hi all,
See subject. Thanks!
Best,
Eddie
Version 2.0 16.Jul.2011
* New elements: AdjustTimestamp, BlockThread, ClickyInfo, EtherVLANEncap,
HandlerTask, ICMPIPEncap, NullTask, SetVLANAnno, StoreUDPTimeSeqRecord,
StripDSRHeader, StripEtherVLANHeader, TCPFragmenter, UDPIP6Encap,
UnstripDSRHeader.
* Improved elements: ARPQuerier, AddressInfo, BandwidthRatedSplitter,
BandwidthRatedUnqueue, CheckLength, DRRSched, FromDevice linuxmodule,
FromDevice userlevel, FromHost userlevel, FromIPSummaryDump,
FromSimDevice, FromUserDevice, GetIPAddress, HostEtherFilter, IPFilter
("ether" comparisons, faster initialization), InfiniteSource, KernelTun,
LinkUnqueue, RandomSource, RatedSource, RatedSplitter, RatedUnqueue,
Script, SetIPAddress, SetTimestamp, TCPIPSend, TimeSortedSched, ToDevice
userlevel, ToUserDevice, Truncate, Unqueue2, and others.
* Element and tool bug fixes: CheckTCPHeader, CheckUDPHeader, DSRRouteTable
DelayUnqueue, FastUDPSourceIP6, FromHost, FromUserDevice, IP6Encap,
IPAddrRewriter, IPFilter and other classifiers, KernelFilter,
RadiotapDecap, RadixIPLookup, SetIP6DSCP, Socket, ThreadSafeQueue,
TimeSortedSched, ToUserDevice, UDPIPEncap, WifiDecap, click-align,
click-undead, and others.
* Performance improvements
** Tasks: A simplified reschedule implementation and streamlined driver
loop is both faster and less error prone (now calling fast_reschedule()
outside of Element::run_task() is safe).
** Tasks: If a task does no work, delay re-running it. This simple change
improves performance on many configurations, particularly those mixing
file descriptor or timer access and Tasks.
** Timers: A 4-heap improves performance with very large numbers of timers.
** User-level: Device elements default to libpcap even on Linux, offering
improved performance depending on how libpcap was compiled (e.g. packet
mmap support). A packet memory pool suggested by Luigi Rizzo offers
much better performance for packet allocation and freeing.
** The round-robin scheduler (--disable-stride) works again.
** New configure option --enable-bound-port-transfer slightly optimizes
push() and pull() calls (Cliff Frey).
* Language changes
** New "require(library FILE)" allows one Click script to include another
(Christian Kreibich).
** Many-to-one, one-to-many, and many-to-many connections cleanly express
some connection patterns. For example, "c :: Classifier => a1, a2, a3"
means the same as "c :: Classifier; c [0] -> a1; c [1] -> a2; c [2] ->
a3".
** Element groups cleanly express short detours from a connection path.
For example, this:
c :: Classifier(00/01);
x -> c -> y;
c [1] -> Paint(1) -> y;
can be expressed like this:
x -> c :: Classifier(00/01) => (
[0] -> [0]; [1] -> Paint(1) -> [0]
) -> y;
* Multithreading
** Many performance and stability improvements to multithreaded
configurations, particularly at userlevel.
** Lazy Task rescheduling reduces opportunities for bugs.
** Each thread gains its own sets of Timers (and, at user level, selector
file descriptors). An element's Timers are initially scheduled on the
same thread as its Tasks. This should simplify reasoning about
Task/Timer conflicts, and can help improve performance.
* Linuxmodule
** Patchless installs are on by default. Click installs and works without
a patch on many versions of Linux up to 2.6.38.
* Clicky changes
** Per-router styles: ClickyInfo elements let a script specify how it
should be drawn.
** "Run" and "Stop" buttons can execute a configuration.
* Internals
** Args: This new class and its helpers support concise, easy-to-use,
type-safe argument parsing and are strongly preferred to cp_va_kparse in
new code.
** TokenBucket: This new template class supports fast, flexible,
integer-based token bucket rate management.
** Timestamps default to nanosecond precision on many platforms.
** Element::simple_action() can be used for multi-port elements.
** On some platforms, set environment variable CLICK_BACKTRACE to 1 and get
a useful stack backtrace if Click crashes (Cliff Frey).
** Other improvements: more flexible handlers, simple_action, type traits,
faster multi-precision arithmetic, better IPv6 address unparsing.
* Acknowledgements
** Thanks to Cliff Frey for extensive discussion, multithreaded debugging,
802.1Q elements, TokenBucket, TCPFragmenter, bound port transfer, and
others.
** Thanks to Joonwoo Park for Linux kernel module patches.
** Thanks to Jimmy Kjällman and Pekka Nikander for FreeBSD kernel module
support.
** Thanks to Johan Bergs, Jesse Brown, Roman Chertov, Beyers Cronje, Jens
De Wit, Kevin Paul Herbert, Sascha Alexander Jopen, Christian Kreibich,
Bobby Longpocket, Ruben Merz, Derrick Pallas, Roberto Riggio, Luigi
Rizzo, Jim Roewe, Ian Rose, Harald Schiöberg, Florian Sesser, Lalith
Suresh, and Wim Vandenberghe for patches, bug fixes, and new elements.
** Thanks to Dan Aguayo, Mark Allman, Manel Bourguiba, Bart Braem, Lars
Bro, Dmitriy Bubnov, Rémi Clavier, Jonathan Kirchhoff, Dan Levin, José
Pedro Oliveira, Kostas Pelechrinis, Sami Ruponen, Robert Shanks, Robert
Sombrutzki, Patrick Verkaik, Nicholas Weaver, Xianghua Xiao, and
xuhui122000 gmail com for bug reports.
** Thanks to everyone else who supports and uses Click.
More information about the click
mailing list