package frenetic

  1. Overview
  2. Docs
The Frenetic Programming Language and Runtime System

Install

Dune Dependency

Authors

Maintainers

Sources

5.0.5.tar.gz
md5=baf754df13a759c32f2c86a1b6f328da
sha512=80140900e7009ccab14b25e244fe7edab87d858676f8a4b3799b4fea16825013cf68363fe5faec71dd54ba825bb4ea2f812c2c666390948ab217ffa75d9cbd29

doc/frenetic.netkat/Frenetic_netkat/Fdd/index.html

Module Frenetic_netkat.FddSource

Forwarding Decision Diagrams

FDD's are an extension of Binary Decision Diagrams (BDD's). NetKAT predicates, which are mostly based on OpenFlow matches, are just binary formulas after all. An FDD extends a BDD by (1) using OpenFlow actions at the leaves instead of binary values True and False (2) using complete header matches instead of individual bit matches.

As in BDD's, field ordering is important to prevent combinatorial explosions. Fortunately we can exploit what goes in real FDD's to get decent heuristics. Nevertheless, the field ordering is part of the data structure and can also be set manually by the programming through compiler options.

Basically, the flow goes: you turn NetKAT into an FDD, then an FDD into a Flow Table. See paper "A Fast Compiler for NetKAT" (http://www.cs.cornell.edu/~jnfoster/papers/netkat-compiler.pdf) for details and theory behind it. FDD's are nice because you can operate on them using the full well-established theory of BDD's.

Sourcemodule Field : sig ... end
Sourcemodule Value : sig ... end

In a BDD, each node is an implicit predicate, "variable = true". In a FDD, each node is a test of a field against a particular value, as in EthSrc = "FE:89:00:12:34:12". The edges are either true or false just like in a BDD. But we also use values in modifcations - as in "port := 2". Note only Const and Mask are really used by OpenFlow. Both Pipe and Query are translated to the pseudoport Controller.

Sourceexception FieldValue_mismatch of Field.t * Value.t
Sourcemodule Pattern : sig ... end
Sourcemodule Action : sig ... end
Sourcemodule FDD : sig ... end
OCaml

Innovation. Community. Security.