Skip to content
Tom Barbette edited this page Jul 28, 2023 · 9 revisions

Elements

This page lists Click element classes that have manual page documentation.

By function: Basic Sources and Sinks - Basic Classification and Selection - Basic Packet Transfer - Counters - Context Sybsystem - Flow Subsystem - Timestamps - Basic Packet Modification - Packet Storage - Active Queue Management - Packet Scheduling - Traffic Shaping - Information Elements - Network Devices - Host and Socket Communication - Ethernet - ARP - IPv4 - IPv4 Routing - ICMP - Network Address Translation - TCP - UDP - GTP - Applications - Trace Manipulation - TCP/IP Measurement - Aggregates - IPv6 - IPsec - CRCs - Paint Annotations - Research elements - Annotations - Debugging - Control - Thread Management - Tunneling - Regression Tests - Grid - Paint2 - Wifi - Wireless AccessPoint - Wireless Station - Miscellaneous

Alphabetical list

Basic Sources and Sinks

  • Discard — drops all packets
  • DiscardNoFree — drops all packets, but does not free any of them.
  • DiscardNoFreeBuffer — drops all packets, but does not free their buffers. The packet descriptor (Packet object) is recycled though.
  • Idle — discards packets
  • InfiniteSource — generates packets whenever scheduled
  • RandomSource — generates random packets whenever scheduled
  • RatedSource — generates packets at specified rate
  • SimpleIdle — discards packets
  • TimedSink — periodically pulls and drops a packet
  • TimedSource — periodically generates a packet

Basic Classification and Selection

Basic Packet Transfer

  • Hub — duplicates packets like a hub
  • Null — null element: passes packets unchanged
  • Null1 — copy of Null
  • PullNull — pull-only null element
  • PushNull — push-only null element
  • Tee — duplicates packets

Counters

Context Sybsystem

  • CTXDispatcher
  • CTXIPRoute — IP routing table using the flow system
  • HTTPIn — entry point of an HTTP path in the stack of the middlebox
  • HTTPOut — exit point of an HTTP path in the stack of the middlebox
  • IPIn — entry point of an IP path in the stack of the middlebox
  • IPOut — exit point of an IP path in the stack of the middlebox
  • MidStat — Count the number of bytes and packets in sessions.
  • SimpleTCPReorder — Reorders TCP packets for the ctx subsystem
  • SimpleTCPRetransmitter — Retransmit TCP packets for the ctx subsystem
  • TCPClientAck — ACKs TCP packet, for the CTX subsystem.
  • TCPIn — entry point of a TCP path in the stack of the middlebox
  • TCPOut — exit point of a TCP path in the stack of the middlebox
  • UDPOut — entry point of an IP path in the stack of the middlebox
  • WordMatcher — Remove/mask word in payload.

Flow Subsystem

  • ConsistencyCheck — Check flow consistency
  • CrossRSS — Simulator for CrossRSS. See the CoNEXT Poster.
  • FlowAcquire — Acquire one flow reference count the first time a flow passes by
  • FlowCounter — Counts the number of flows and packets per flow
  • FlowHyperScan — Flow-based IDS using the HyperScan library
  • FlowIPLoadBalancer — TCP & UDP load-balancer, without SNAT
  • FlowIPLoadBalancerReverse — Reverse side for FlowIPLoadBalancerReverse.
  • FlowIPManager — FCB packet classifier - cuckoo shared-by-all-threads
  • FlowIPManager_DPDK — FCB packet classifier - cuckoo per-thread
  • FlowIPManagerMP — FCB packet classifier, cuckoo thread-safe implementation of DPDK.
  • FlowL2LoadBalancer — TCP & UDP load-balancer, without SNAT
  • FlowLock — Flock the downards path per-flow, so packets of the same flow cannot go further at the same time.
  • FlowPaint — sets packet FlowPaint annotations
  • FlowPrint — Displays information about the FCB stack
  • FlowRateLimiter — Counts the number of packets per flow and let packet through only if it has at least N packets.
  • FlowSwitch — Port load-balancer
  • IPLoadBalancer — TCP&UDP load-balancer, without SNAT
  • L2LoadBalancer — Stateless L2 load-balancer
  • SFMaker — Delay packets up to DELAY in the hope that bursts can be merged. Then sends packets by (eventually) merged bursts, reordered by flow priority.
  • StoreFlowID — Store a flow identifier in each packet
  • TCPReorder — Reorders TCP packets. Compatible with the flow subsystem.

Timestamps

Basic Packet Modification

  • Align — aligns packet data
  • Clipboard — copies data from one packet to another
  • FlowStrip — FlowStrips bytes from front of packets
  • FlowUnstrip — FlowUnstrips bytes from front of packets
  • MoveData — changes packet data
  • Pad — extend packet length
  • RandomBitErrors — changes packet data with some probability
  • Reframe — reframes a fragmented stream of packets
  • Resize — adjust packet length.
  • Search — Strip the head of the packet up to pattern to be found in the packet content.
  • StoreAnno — changes packet data
  • StoreData — changes packet data
  • Strip — strips bytes from front of packets
  • StripToNetworkHeader — strips everything preceding network header
  • Truncate — limit packet length
  • TruncateIPPayload — limit payload length
  • Unstrip — unstrips bytes from front of packets
  • UnstripAnno — Unstrip the number of bytes specified by an annotation from front of packets

Packet Storage

Active Queue Management

  • AdaptiveRED — drops packets according to Adaptive RED
  • CoDel — drops packets according to CoDel
  • RED — drops packets according to RED

Packet Scheduling

Traffic Shaping

Information Elements

Network Devices

  • DPDKInfo — Set DPDK global parameters.
  • FromDevice — reads packets from network device (Linux kernel)
  • FromDevice.u — reads packets from network device (user-level)
  • FromDPDKDevice — reads packets from network device using DPDK (user-level)
  • FromDPDKRing — reads packets from a circular ring buffer using DPDK (user-level)
  • FromNetmapDevice
  • FromSimDevice.u — reads packets from a simulator device
  • FromUserDevice — Emit packets written to a character device.
  • PollDevice — polls packets from network device (kernel)
  • ToDevice — sends packets to network device (Linux kernel)
  • ToDevice.u — sends packets to network device (user-level)
  • ToDPDKDevice — sends packets to network device using Intel's DPDK (user-level)
  • ToDPDKRing — sends packets to a circular ring buffer using DPDK (user-level).
  • ToSimDevice.u — sends packets to simulated network device
  • ToUserDevice — Pass packets to user-level programs via a character device.

Host and Socket Communication

  • FromHost — reads packets from Linux
  • FromHost.u — interface to /dev/net/tun or ethertap (user-level)
  • FromRawSocket — reads raw IP packets from safe raw socket (user-level)
  • FromSocket — reads data from socket (user-level)
  • IPFlowRawSockets — creates separate sockets for each TCP/UDP flow
  • KernelFilter — block kernel from handling packets
  • KernelTap — interface to /dev/tap or ethertap (user-level)
  • KernelTun — interface to /dev/tun or ethertap (user-level)
  • McastSocket — a multicast UDP socket transport (user-level)
  • MonitoringReportSocket — a socket transport (user-level)
  • RawSocket — transports raw IP packets via safe raw sockets (user-level)
  • Socket — a socket transport (user-level)
  • ToHost — sends packets to Linux
  • ToHost.u — sends packets to Linux via Universal TUN/TAP device.
  • ToHostSniffers — sends packets to Linux packet sniffers
  • ToNetmapDevice
  • ToRawSocket — sends IP packets through a safe raw socket (user-level)
  • ToSocket — sends data to socket (user-level)
  • UMLSwitch — Connects to a UML switch daemon

Ethernet

ARP

  • ARPAdvertiser — periodically generates ARP replies using information from an ARP table
  • ARPFaker — periodically generates an ARP reply
  • ARPPrint — pretty-prints ARP packets a la tcpdump
  • ARPQuerier — encapsulates IP packets in Ethernet headers found via ARP
  • ARPResponder — generates responses to ARP queries
  • ARPTable — stores IP-to-Ethernet mappings
  • CheckARPHeader — checks ARP header

IPv4

IPv4 Routing

ICMP

Network Address Translation

TCP

UDP

GTP

Applications

Trace Manipulation

TCP/IP Measurement

Aggregates

IPv6

IPsec

CRCs

  • CheckCRC32 — checks packet CRC32s
  • SetCRC32 — calculates CRC32 and prepends to packet

Paint Annotations

  • CheckPaint — checks packets' paint annotation
  • ExactPaintSwitch — classifies packets by paint annotation
  • Paint — sets packet paint annotations
  • PaintRR — sends packet stream to one of the output ports chosen per-packet
  • PaintSwitch — sends packet stream to output chosen per-packet
  • PaintTee — duplicates packets with given paint annotation

Research elements

Annotations

Debugging

Control

Thread Management

Tunneling

  • CheckGREHeader — checks GRE header
  • ERSPANDecap — decapsulate the ERSPAN packet and set the SPAN ID in the aggregate annotation, and the timestamp if defined in the timestamp anno
  • GREEncap — encapsulates packets in static GRE header
  • StripGREHeader — strips outermost GRE header

Regression Tests

  • AtomicTest — Test atomic variables implementation
  • BatchTest — Displays push packet or push batch depending on the type of function called
  • BatchTest — Displays push packet or push batch depending on the type of function called
  • BigHashMapTest — runs regression tests for BigHashMap
  • BigintTest — Test multiple-precision multiply and divide with some simple tests.
  • BitvectorTest — runs regression tests for Bitvector
  • CheckPacket — check packets against a specification
  • CLPTest — runs regression tests for CLP command line parser
  • ComparePackets — compare packets in pairs
  • ConfParseTest — run regression tests for configuration parsing
  • CounterTest — Call read_atomic on the counter in a certain proportion regarding the batch it passes.
  • CryptoTest — runs regression tests for cryptography functions
  • DDIOTune — Tune the DDIO capacity based on the input number of ways.
  • DequeTest — runs regression tests for Deque
  • DevirtualizeTest — runs regression tests for click-devirtualize
  • ErrorTest — runs regression tests for error handling
  • FlowWorkPackage — Do some heavy work (N random number computation) per-flow. The weight of a flow is selected randomly per-flow. So some flows are heavy, some flows are light.
  • FunctionTest — runs regression tests for other Click functions
  • HandlerTask — associated with a do-nothing Task
  • HashTableMPTest — runs regression tests for HashTable<K, V>
  • HashTableTest — runs regression tests for HashTable<K, V>
  • HeapTest — runs regression tests for heap functions
  • JsonTest — runs regression tests for Json
  • ListTest — runs regression tests for List<T, link>
  • MTDieTest — Runs regression tests for router stopping in multithreaded Click.
  • NeighborhoodTest — check ElementNeighborhoodVisitor functionality
  • NotifierDebug — useful for debugging notification
  • NotifierTest — run regression tests for Notifier
  • NullTask — associated with a do-nothing Task
  • PacketTest — runs regression tests for Packet
  • QueueThreadTest1 — runs regression tests for Queue threading
  • QueueThreadTest2 — runs regression tests for Queue threading
  • QueueYankTest — check packets against a specification
  • RCUTest — runs regression tests for click_rcu
  • SchedOrderTest — remembers scheduling order
  • SortTest — runs regression tests for click_qsort
  • StringTest — runs regression tests for String
  • TaskThreadTest — runs Task stress test
  • TimerTest — runs regression tests for Timer
  • TokenBucketTest — runs regression tests for token bucket
  • UpstreamNotifier — null element with an upstream notifier
  • VectorTest — runs regression tests for Vector
  • WorkPackage — Compute a random number for a certain amount of W time, and makes N accesses to

Grid

Paint2

  • Paint2 — sets packet Paint2 annotations

tunnel

  • ERSPANDecap — decapsulate the ERSPAN packet and set the SPAN ID in the aggregate annotation, and the timestamp if defined in the timestamp anno

Wifi

  • AssociationRequester — Sends 802.11 association requests when poked.
  • AssociationResponder — Respond to 802.11 association requests.
  • AthdescDecap — Pulls the click_wifi_athdesc header from a packet and stores it in Packet::anno()
  • AthdescEncap — Pushes the click_wifi_radiotap header on a packet based on information in Packet::anno()
  • AutoRateFallback — ARF wireless bit-rate selection algorithm
  • AvailableRates — Tracks bit-rate capabilities of other stations.
  • BeaconScanner — Listens for 802.11 beacons and sends probe requests.
  • BeaconSource — Send 802.11 beacons.
  • BeaconTracker — Tracks beacon from an Access Point
  • EtherCount — Track each ethernet source.
  • ExtraDecap — Pulls the click_wifi_extra header from a packet and stores it in Packet::anno()
  • ExtraEncap — Pushes the click_wifi_extra header on a packet based on information in Packet::anno()
  • FilterFailures — Filters unicast packets that failed to be acknowledged
  • FilterPhyErr — Filters packets that failed the 802.11 CRC check.
  • FilterTX — Filter out wireless transmission feedback packets
  • LinkTable — Keeps a Link state database and calculates Weighted Shortest Path for other elements
  • MadwifiRate — Madwifi wireless bit-rate selection algorithm
  • OpenAuthRequeser — Sends 802.11 open authentication requests when poked.
  • OpenAuthResponder — Respond to 802.11 open authentication requests.
  • PacketStore — Log transmit feedback stats for later analysis.
  • Prism2Decap — Pulls the prism2 header from a packet and store information in Packet::anno()
  • Prism2Encap — Pushes a Prism2 header onto a packet based on information stored in Packet::anno()
  • ProbeRequester — Sends 802.11 probe requests
  • ProbeResponder — Respond to 802.11 probe packets.
  • ProbeTXRate — Madwifi wireless bit-rate selection algorithm
  • PushAnno — Pushes Packet::anno() onto front of packet.
  • RadiotapDecap — Pulls the click_wifi_radiotap header from a packet and stores it in Packet::anno()
  • RadiotapEncap — Pushes the click_wifi_radiotap header on a packet based on information in Packet::anno()
  • ReadAnno — Pulls annotation from packet and stores it in Packet::anno()
  • RXStats — Track RSSI for each ethernet source.
  • SetNoAck — Sets the No-Ack bit in tx-flags
  • SetRTS — Enable/disable RTS/CTS for a packet
  • SetTXPower — Sets the transmit power for a packet.
  • SetTXRate — Sets the bit-rate for a packet.
  • WepDecap — Turns 802.11 packets into ethernet packets
  • WepEncap — Turns 802.11 packets into ethernet packets
  • WifiDecap — Turns 802.11 packets into ethernet packets.
  • WifiDefrag — Reassembles 802.11 fragments.
  • WifiDupeFilter — Filters out duplicate 802.11 packets based on their sequence number.
  • WifiEncap — Converts ethernet packets to 802.11 packets with a LLC header.
  • WifiFragment — Reassembles 802.11 fragments.
  • WifiSeq — Sets the 802.11 sequence number in a packet.
  • WirelessInfo — Tracks 802.11 configuration information (ssid, etc).

Wireless AccessPoint

Wireless Station

Miscellaneous

Alphabetical list

Clone this wiki locally