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