Siena Fast Forwarding Documentation (v. 2.0.1)
Public Member Functions | Static Public Member Functions | List of all members
siena::FwdTable Class Referenceabstract

implementation of a forwarding table based on an improved "counting" algorithm. More...

#include <fwdtable.h>

Inheritance diagram for siena::FwdTable:
Inheritance graph
[legend]
Collaboration diagram for siena::FwdTable:
Collaboration graph
[legend]

Public Member Functions

virtual void set_preprocess_rounds (unsigned int)=0
 Determines the number of pre-processing rounds applied to every message.
 
virtual unsigned int get_preprocess_rounds () const =0
 Returns the current number of pre-processing rounds.
 
- Public Member Functions inherited from siena::AttributesFIB
virtual void ifconfig (InterfaceId, const Predicate &)=0
 Associates a predicate to an interface. More...
 
virtual void match (const Message &, MatchHandler &) const =0
 Processes a message, calling the output() function on the given MatchHandler object for each matching interface. More...
 
- Public Member Functions inherited from siena::FIB
virtual ~FIB ()
 Destroys the forwarding including all its internal data structures.
 
virtual void consolidate ()
 Prepares the forwarding table for matching. More...
 
virtual void clear ()=0
 Clears the forwarding table. More...
 
virtual void clear_recycle ()=0
 Clears the forwarding table. More...
 
virtual size_t allocated_bytesize () const =0
 Memory allocated by the forwarding table. More...
 
virtual size_t bytesize () const =0
 Memory used by the forwarding table. More...
 

Static Public Member Functions

static FwdTablecreate ()
 Creates a FwdTable object.
 

Detailed Description

implementation of a forwarding table based on an improved "counting" algorithm.

This class implements the index structure and matching algorithm described in "Forwarding in a Content-Based Network", Proceedings of ACM SIGCOMM 2003. p. 163-174. Karlsruhe, Germany. August, 2003.

In addition, this algorithm includes a number of improvements. The most notable one uses a fast containment check between the set of attribute names in the message and the constraint names of a candidate filter. If the check is negative, that is, if the set of attribute names is not a superset of the set of names of a candidate filter, then the algorithm does not even bother to "count" the number of matched constraints for that filter. The test is based on a representation of the set of names consisting of a Bloom filter.

Another improvement uses static counters to implement a faster but non-reentrant counting algorithm. This variant can be selected with the –with-non-reentrant-counters option at configure-time.

Examples:
forwarding_messages.cc.