Merge "Exception while topology-manager writes flow:1 root node to operational datast...
[openflowplugin.git] / docs / users / architecture.rst
1 .. _ofp-architecture:
2
3 OpenFlow Plugin Architeture
4 ===========================
5
6 Overview
7 --------
8
9 OpenFlow is a vendor-neutral standard communications interface defined
10 to enable interaction between the control and forwarding layers of an
11 SDN architecture. The OpenFlow plugin project intends to develop a
12 plugin to support implementations of the OpenFlow specification as it
13 develops and evolves. Specifically the project has developed a plugin
14 aiming to support OpenFlow 1.0 and 1.3.x. It can be extended to add
15 support for subsequent OpenFlow specifications. The plugin is based on
16 the Model Driven Service Abstraction Layer (MD-SAL) architecture.
17
18 Goals
19 -----
20
21 -  Southbound plugin and integration of OpenFlow 1.0/1.3.x library.
22
23 -  Ongoing support and integration of the OpenFlow specification.
24
25 -  The plugin should be implemented in an easily extensible manner.
26
27 -  Protocol verification activities will be performed on supported
28    OpenFlow specifications.
29
30 High Level Architecture
31 -----------------------
32
33 .. figure:: ../images/plugin_arch.png
34
35 - **OpenFlowJava**: is a library that implements the OpenFlow codec –
36   it translates OpenFlow messages into their respective internal
37   representations and vice versa.
38
39 - **OpenFlow Plugin**: terminates sessions to OpenFlow switches,
40   provides a per-switch low-level OpenFlow service API (add-modify-flow,
41   delete-flow, etc.)
42
43 - **Statistics Manager**: is responsible for collecting statistics and
44   status from attached OpenFlow switches and storing them into the
45   operational data store for applications’ use. 
46
47 - **Topology Manager**: is responsible for discovering the OpenFlow
48   topology using LLDP and putting them into the operational data store
49   for applications’ use.
50
51 - **Forwarding Rules Manager**: the “top level” OpenFlow module that
52   exposes the OF functionality to controller apps, provides the app-level
53   API. Main entity that manages the OpenFlow switch inventory and the
54   configuration (programming) of flows in switches. It also reconciles
55   user configuration with network state discovered by the OpenFlow plugin.
56
57
58 Security
59 --------
60
61 It is strongly recommended that any production deployments utilising
62 the OpenFlow Plugin do so with **TLS** encryption to protect against
63 various man-in-the-middle attacks. For more details please refer
64 to the :ref:`TLS section of the Operations guide <ofp-tls-guide>`.
65
66 Protocol Coverage
67 -----------------
68
69 Coverage has been moved to a `GoogleDoc Spreadsheet
70 <https://docs.google.com/spreadsheet/ccc?key=0AtpUuSEP8OyMdHNTZjBoM0VjOE9BcGhHMzk3N19uamc&usp=sharing%23gid=2#gid=0>`_
71
72 OF 1.3 Considerations
73 ~~~~~~~~~~~~~~~~~~~~~
74
75 The baseline model is a OF 1.3 model, and the coverage tables primarily
76 deal with OF 1.3. However for OF 1.0, we have a column to indicate
77 either N/A if it doesn’t apply, or whether its been confirmed working.
78
79 OF 1.0 Considerations
80 ~~~~~~~~~~~~~~~~~~~~~
81
82 OF 1.0 is being considered as a switch with: \* 1 Table \* 0 Groups \* 0
83 Meters \* 1 Instruction (Apply Actions) \* and a limited vocabulary of
84 matches and actions.
85