Siena Fast Forwarding Documentation (v. 1.13.0)
Classes | Typedefs | Enumerations
siena Namespace Reference

name space for Siena. More...

Classes

class  MatchHandler
 hook for the output function for matching interfaces. More...
 
class  MatchMessageHandler
 hook for the output function for matching interfaces. More...
 
class  ForwardingTable
 The heart of the forwarding table. More...
 
class  string_t
 string type. More...
 
class  value
 interface of a generic value in the Siena data model. More...
 
class  attribute
 interface of a generic attribute in the Siena data model. More...
 
class  constraint
 interface of a generic constraint in the Siena data model. More...
 
class  message
 interface of a generic message in the Siena data model. More...
 
class  filter
 interface of a generic filter in the Siena data model. More...
 
class  predicate
 interface of a generic predicate in the Siena data model. More...
 
class  FwdTable
 implementation of a forwarding table based on an improved "counting" algorithm. More...
 
class  BTable
 implementation of the forwarding table based on Bloom filters. More...
 
class  SortedBTable
 implementation of the forwarding table based on Bloom filters. More...
 
class  BCTable
 implementation of the forwarding table based on Bloom filters and counting algorithm. More...
 
class  BXTable
 implementation of the forwarding table based on Bloom filters and a data structure used for matching called XDD. More...
 
class  BDDBTableBase
 implementation of the forwarding table based on Bloom filters and BDDs. This is the common structure of the BDD-based algorithm. More...
 
class  BDDBTable
 implementation of the forwarding table based on Bloom filters. This implementation consolidates each predicate into a BDD, which is then used for matching. More...
 
class  ZDDBTable
 implementation of the forwarding table based on Bloom filters. This implementation consolidates each predicate into a ZDD, which is then used for matching. More...
 
class  BTrieTable
 implementation of the forwarding table based on Bloom filters. More...
 

Typedefs

typedef unsigned int if_t
 Interface type. More...
 
typedef unsigned int ifid_t
 inteface identifier within the matching algorithm. More...
 
typedef long long int int_t
 
typedef double double_t
 
typedef bool bool_t
 

Enumerations

enum  operator_id {
  eq_id = 1, lt_id = 2, gt_id = 3, sf_id = 4,
  pf_id = 5, ss_id = 6, any_id = 7, ne_id = 8,
  re_id = 9
}
 operator identifier for Siena. More...
 
enum  type_id {
  string_id = 1, int_id = 2, double_id = 3, bool_id = 4,
  anytype_id = 5
}
 type dentifiers in the Siena data model. More...
 

Detailed Description

name space for Siena.

This namespace groups all the types and functionalities assiciated with Siena, including:

  1. the basic Siena model that defines atomic types, attributes, constraints, messages, filters, and predicates

  2. the forwarding module

  3. the routing module

Typedef Documentation

typedef bool siena::bool_t

boolean type.

typedef double siena::double_t

double type.

typedef unsigned int siena::if_t

Interface type.

For simplicity, an interface is represented by a number. This is an explicit design choice. More information can be associated with an interface through a secondary data structure (a vector or anything else).

typedef unsigned int siena::ifid_t

inteface identifier within the matching algorithm.

As opposed to if_t which identifies user-specified interface numbers, this is going to be used for the identification of interfaces within the matching algorithm, which may require a set of contiguous identifiers. So, for example, the user may specify interfaces 6, 78, and 200, while the internal identification would be 0, 1, and 2 respectively (or similar). I treat it as a different type (from if_t) because I don't want to mix them up (now that I write this, I'm not even sure the compiler would complain. Oh well.)

typedef long long int siena::int_t

integer type.

Enumeration Type Documentation

operator identifier for Siena.

Siena defines some of the most common operators (or binary relations). operator_id is the type of operator identifiers. The values for operator_id are those operators supported by the Siena Fast Forwarding algorithm.

Enumerator
eq_id 

equals

lt_id 

less than.

less than. Integers and doubles are ordered as usual, strings are sorted in lexicographical order. For booleans, false < true.

gt_id 

greater than

sf_id 

suffix

suffix. x sf_id y is true if y is a suffix of x. For example, "software" sf_id "ware" == true, while "software" sf_id "w" == false. sf_id is defined for strings only.

pf_id 

prefix

prefix. x pf_id y is true if y is a prefix of x. For example, "software" pf_id "soft" == true, while "software" pf_id "of" == false. pf_id is defined for strings only.

ss_id 

contains substring

contains substring. x ss_id y is true if y is a substring of x. For example, "software" ss_id "war" == true, while "software" ss_id "hard" == false. ss_id is defined for strings only.

any_id 

any value

Tests only the existence of a given attribute.

ne_id 

not equal

re_id 

matches regular expression

matches regular expression. <em>x</em> <code>re_id</code> <em>y</em>
is true if <em>y</em> is a regular expression that matches <em>x</em>.  
For example, <code>"software" re_id "([ot][fw])+a" == true</code>, while
<code>"software" ss_id "o.{1,2}are$" == false</code>. <code>re_id</code>

is defined for strings only. GNU extended regular expressions are completely supported except for backreferences – that is, these are regular expression that can be described with a finite-state automaton or, equivalently, by a Chomsky type-3 grammars.

type dentifiers in the Siena data model.

Siena defines some common basic data types, including numbers, booleans, and strings. type_id defines identifiers for these types.

Enumerator
string_id 

string identifier.

int_id 

integer identifier.

double_id 

double identifier.

bool_id 

bool identifier.

anytype_id 

generic type identifier