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

implementation of the forwarding table based on Bloom filters. More...

#include <btable.h>

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

Static Public Member Functions

static BTablecreate ()
 create and initialize a BTable.
 

Additional Inherited Members

- 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...
 

Detailed Description

implementation of the forwarding table based on Bloom filters.

This implementation is based on an encoding of messages and filters that transforms a message m in a set Sm and a filter f in set Sf such that if m matches f then Sm contains Sf. Sets are then represented with Bloom filters that admit a compact representation and a fast matching operation. The matching algorithm is then based on a simple linear scan of the encoded filters.

This implementation is provided primarily for experimental purposes. Because of the nature of both the encoding of messages and filters into sets, and the representation of sets with Bloom filters, this implementation can not provide an exact match. In fact, this implementation produces false positives, which means that a message might be forwarded to more interfaces than the ones it actually matches. However, this implementation does not produce false negatives. This means that a message will always go to all the interfaces whose predicate match the message.