Merge "OVSDB project Carbon Release Note"
[docs.git] / docs / developer-guide / fabric-as-a-service.rst
1 .. _faas_dev_guide:
2
3 Fabric As A Service
4 ===================
5
6 FaaS (Fabric As A service) has two layers of APIs. We describe the top
7 level API in the user guide. This document focuses on the Fabric level
8 API and describes each API’s semantics and example implementation. The
9 second layer defines an abstraction layer called *''Fabric*'' API. The
10 idea is to abstract network into a topology formed by a collections of
11 fabric objects other than varies of physical devices.Each Fabric object
12 provides a collection of unified services.The top level API enables
13 application developers or users to write applications to map high level
14 model such as GBP, Intent etc… into a logical network model, while the
15 lower level gives the application more control to individual fabric
16 object level. More importantly the Fabric API is more like SP (Service
17 Provider API) a fabric provider or vendor can implement the SPI based on
18 its own Fabric technique such as TRILL, SPB etc …
19
20 For how to use first level API operation, please refer to user guide for
21 more details.
22
23 FaaS Architecture
24 -----------------
25
26 FaaS Architecture is an 3 layered architecture, on the top is the FaaS
27 Application layer, in the middle is the Fabric manager and at the bottom
28 are different types of fabric objects. From bottom up, it is
29
30 Fabric and its controller (Fabric Controller)
31     The Fabric object provides an abstraction of a homogeneous network
32     or portion of the network and also has a built in Fabric controller
33     which provides management plane and control plane for the fabric.
34     The fabric controller implements the services required in Fabric
35     Service and monitor and control the fabric operation.
36
37 Fabric Manager
38     Fabric Manager manages all the fabric objects. also Fabric manager
39     acts as a Unified Fabric Controller which provides inter-connect
40     fabric control and configuration Also Fabric Manager is FaaS API
41     service via Which FaaS user level logical network API (the top level
42     API as mentioned previously) exposed and implemented.
43
44 FaaS renderer for GBP (Group Based Policy)
45     FaaS renderer for GBP is an application of FaaS and provides the
46     rendering service between GBP model and logical network model
47     provided by Fabric Manager.
48
49 Fabric APIs and Interfaces
50 --------------------------
51
52 FaaS APIs have 4 groups as defined below
53
54 Fabric Provisioning API
55     This set of APIs is used to create and remove Fabric Abstractions,
56     in other words, those APIs is to provision the underlay networks and
57     prepare to create overlay network(the logical network) on top of it.
58
59 Fabric Service API
60     This set of APIs is used to create logical network over the Fabrics.
61
62 EndPoint API
63     EndPoint API is used to bind a physical port which is the location
64     of the attachment of an EndPoint happens or will happen.
65
66 OAM API
67     Those APIs are for Operations, Administration and Maintenance
68     purpose and In current release, OAM API is not implemented yet.
69
70 Fabric Provisioning API
71 ~~~~~~~~~~~~~~~~~~~~~~~
72
73 -  `http://${ipaddress}:8181/restconf/operations/fabric:compose-fabric <http://${ipaddress}:8181/restconf/operations/fabric:compose-fabric>`__
74
75 -  `http://${ipaddress}:8181/restconf/operations/fabric:decompose-fabric <http://${ipaddress}:8181/restconf/operations/fabric:decompose-fabric>`__
76
77 -  `http://${ipaddress}:8181/restconf/operations/fabric:get-all-fabrics <http://${ipaddress}:8181/restconf/operations/fabric:get-all-fabrics>`__
78
79 Fabric Service API
80 ~~~~~~~~~~~~~~~~~~
81
82 -  RESTCONF for creating Logical port, switch, router, routing entries
83    and link. Among them, both switches and routers have ports. links
84    connect ports.these 5 logical elements are basic building blocks of a
85    logical network.
86
87    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:create-logical-switch <http://${ipaddress}:8181/restconf/operations/fabric-service:create-logical-switch>`__
88
89    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:rm-logical-switch <http://${ipaddress}:8181/restconf/operations/fabric-service:rm-logical-switch>`__
90
91    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:create-logical-router <http://${ipaddress}:8181/restconf/operations/fabric-service:create-logical-router>`__
92
93    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:rm-logical-router <http://${ipaddress}:8181/restconf/operations/fabric-service:rm-logical-router>`__
94
95    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:add-static-route <http://${ipaddress}:8181/restconf/operations/fabric-service:add-static-route>`__
96
97    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:create-logic-port <http://${ipaddress}:8181/restconf/operations/fabric-service:create-logic-port>`__
98
99    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:rm-logic-port <http://${ipaddress}:8181/restconf/operations/fabric-service:rm-logic-port>`__
100
101    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:create-gateway <http://${ipaddress}:8181/restconf/operations/fabric-service:create-gateway>`__
102
103    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:rm-gateway <http://${ipaddress}:8181/restconf/operations/fabric-service:rm-gateway>`__
104
105    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:port-binding-logical-to-fabric <http://${ipaddress}:8181/restconf/operations/fabric-service:port-binding-logical-to-fabric>`__
106
107    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:port-binding-logical-to-device <http://${ipaddress}:8181/restconf/operations/fabric-service:port-binding-logical-to-device>`__
108
109    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:add-port-function <http://${ipaddress}:8181/restconf/operations/fabric-service:add-port-function>`__
110
111    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:add-acl <http://${ipaddress}:8181/restconf/operations/fabric-service:add-acl>`__
112
113    -  `http://${ipaddress}:8181/restconf/operations/fabric-service:del-acl <http://${ipaddress}:8181/restconf/operations/fabric-service:del-acl>`__
114
115 EndPoint API
116 ~~~~~~~~~~~~
117
118 The following APIs is to bind the physical ports to the logical ports on
119 the logical switches:
120
121 -  `http://${ipaddress}:8181/restconf/operations/fabric-endpoint:register-endpoint <http://${ipaddress}:8181/restconf/operations/fabric-endpoint:register-endpoint>`__
122
123 -  `http://${ipaddress}:8181/restconf/operations/fabric-endpoint:unregister-endpoint <http://${ipaddress}:8181/restconf/operations/fabric-endpoint:unregister-endpoint>`__
124
125 -  `http://${ipaddress}:8181/restconf/operations/fabric-endpoint:locate-endpoint <http://${ipaddress}:8181/restconf/operations/fabric-endpoint:locate-endpoint>`__
126
127 Others API
128 ~~~~~~~~~~
129
130 -  `http://${ipaddress}:8181/restconf/operations/fabric-resource:create-fabric-port <http://${ipaddress}:8181/restconf/operations/fabric-resource:create-fabric-port>`__
131
132 API Reference Documentation
133 ---------------------------
134
135 Go to
136 `http://${ipaddress}:8181/restconf/apidoc/index.html <http://${ipaddress}:8181/restconf/apidoc/index.html>`__
137 and expand on *''FaaS*'' related panel for more APIs.
138