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

name space for Siena. More...

Classes

class  MatchHandler
 hook for the output function for matching interfaces. More...
 
class  FIB
 Basic services of a forwarding table. More...
 
class  AttributesFIB
 A forwarding table for the attribute-based, single-tree model. More...
 
class  TagsFIB
 A forwarding table for the tag-based, single-tree model. More...
 
class  String
 binary string type. More...
 
class  Value
 interface of a generic value in the attribute-based data model. More...
 
class  Attribute
 interface of a generic attribute in the attribute-based data model. More...
 
class  Constraint
 interface of a generic constraint in the attribute-based data model. More...
 
class  BadConstraint
 error condition for an invalid constraint. More...
 
class  Message
 interface of a generic message in the attribute-based data model. More...
 
class  Filter
 interface of a generic filter in the attribute-based data model. More...
 
class  Predicate
 interface of a generic predicate in the attribute-based 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  BVTable
 implementation of the forwarding table based on Bloom filters and a data structure used for matching called XDD. More...
 
class  BXTable
 implementation of the forwarding table based on Bloom filters and a data structure used for matching called XDD. More...
 
class  BDDBTable
 implementation of the forwarding table based on Bloom filters. This implementation consolidates each predicate into a binary decision diagram (BDD) that is then used for matching. More...
 
class  ZDDBTable
 implementation of the forwarding table based on Bloom filters. This implementation consolidates each predicate into a zero-suppressed decision diagram (ZDD), which is then used for matching. More...
 
class  BTrieTable
 Implementation of TagsFIB based on an encoding of tag sets as Bloom filters represented as a trie. More...
 
class  Tag
 interface of a generic tag in the Siena data model. More...
 
class  TagSet
 interface of a generic tag set in the tag-based data model. More...
 
class  TagSetList
 interface of a generic predicate in the "tagset" Siena data model. More...
 
class  TagsTable
 Implementation of TagsFIB based on an encoding of tag sets as Bloom filters represented as a trie. More...
 
class  TTable
 a very simple implementation of a TagsFIB. More...
 

Typedefs

typedef unsigned int InterfaceId
 Interface type. More...
 
typedef long int Int
 
typedef double Double
 
typedef bool Bool
 

Enumerations

enum  OperatorId {
  EQ = 1, LT = 2, GT = 3, SF = 4,
  PF = 5, SS = 6, ANY = 7, NE = 8,
  RE = 9
}
 operator identifier for the attributes-based data model. More...
 
enum  TypeId {
  STRING = 1, INT = 2, DOUBLE = 3, BOOL = 4,
  ANYTYPE = 5
}
 type dentifiers in the attributes-based data model. More...
 

Detailed Description

name space for Siena.

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

  1. The attributes data model, including its atomic types, attributes, constraints, messages, filters, and predicates.

  2. The tags data model, including tags, tag sets, and lists of tag sets.

  3. The forwarding modules, including all forwarding schemes and algorithms.

  4. The routing modules.

Typedef Documentation

typedef bool siena::Bool

boolean type.

typedef double siena::Double

double type.

typedef long int siena::Int

integer type.

typedef unsigned int siena::InterfaceId

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

Enumeration Type Documentation

operator identifier for the attributes-based data model.

Siena defines some of the most common operators (or binary relations) for the atomic types (strings, numbers, etc.) of the attributes data model. OperatorId is the type of operator identifiers.

Enumerator
EQ 

equals.

Ordinary equality relation for basic types.

LT 

less than.

Less-than ordering relation. Integers and doubles are ordered as usual, strings are ordered lexicographically. For booleans, false is less-than true.

GT 

greater than.

See Also
LT
SF 

suffix.

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

PF 

prefix

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

SS 

contains substring

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

ANY 

any value

Tests only the existence of a given attribute.

NE 

not equal

Matches different values. Notice, however, that a constraint with this operator would still require that the attribute exist, and that the values be of compatible types.

RE 

matches regular expression

Matches a regular expression. <em>x</em> <code>RE</code> <em>y</em>
is true if <em>y</em> is a regular expression that matches <em>x</em>.  
For example, <code>"software" RE "([ot][fw])+a" == true</code>, while
<code>"software" SS "o.{1,2}are$" == false</code>. <code>RE</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 attributes-based data model.

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

See Also
Value::type()
Enumerator
STRING 

string identifier.

INT 

integer identifier.

DOUBLE 

double identifier.

BOOL 

bool identifier.

ANYTYPE 

generic type identifier