Review and finalize platformoverview
[opnfvdocs.git] / docs / platformoverview / softwarearchitecture.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. (c) OPNFV, Huawei
4
5 ===========================
6 OPNFV Platform Architecture
7 ===========================
8
9 .. ==> Add reference links from https://wiki.opnfv.org/releases/brahmaputra/releasedocs
10
11 .. ==> All links should point to release docs, not to OPNFV-Wiki or artifacts.
12
13
14 OPNFV Lab Infrastructure
15 ========================
16
17 The `Pharos Project <https://www.opnfv.org/developers/pharos>`_ provides a lab infrastructure
18 that is geographically and technically diverse.
19 Labs instantiate **bare-metal** and **virtual** environments that are accessed remotely by the
20 community and used for OPNFV platform and feature development, builds, deploys and testing.
21 This will greatly assist in developing a highly robust and stable OPNFV platform
22 with well understood performance characteristics.
23
24 Community labs are hosted by OPNFV member companies on a voluntary basis.
25 The Linux Foundation also hosts an OPNFV lab that provides centralised CI
26 and other production resources which are linked to community labs.
27 Future lab capabilities will include the ability easily automate deploy and test of any
28 OPNFV install scenario in any lab environemnt as well as a *Virtual Lab* for
29 developer on-boarding with minimal effort.
30
31 .. ==> I am not sure this is the best place to include this.
32
33
34 Software architecture
35 =====================
36
37 This section will provide information which upstream projects, versions and components are
38 integrated in the release to implement OPNFV requirement. You can find a requirement list
39 `here <http://artifacts.opnfv.org/genesisreq/docs/requirements.pdf>`_.
40
41 OpenStack
42 ---------
43
44 .. ==> didn't understand Chris' suggestion about reducing the heading level for these sub-topics
45
46 OPNFV uses OpenStack as cloud management system.
47 Brahmaputra is based on OpenStack Liberty Release.
48 The set of sub-projects varies slightly depending on the installer.
49
50 .. ==> If possible replace the list of OpenStack components here by a link to an
51 .. appropriate document
52 .. (http://artifacts.opnfv.org/genesisreq/review/10155/requirements/component-support.html
53 .. was suggested, but this is different infomation.)
54
55 The following table shows which components are deployed.
56
57 +------------+----------------+-----------+-----------+-----------+-----------+
58 | services   | type           | Apex      | Compass   | Fuel      | Joid      |
59 +============+================+===========+===========+===========+===========+
60 | ceilometer | metering       | Available | Available | Available | Available |
61 +------------+----------------+-----------+-----------+-----------+-----------+
62 | cinder     | volume         | Available | Available | Available | Available |
63 +------------+----------------+-----------+-----------+-----------+-----------+
64 | cloud      | cloudformation | ---       | Available | Available | Available |
65 +------------+----------------+-----------+-----------+-----------+-----------+
66 | glance     | image          | Available | Available | Available | Available |
67 +------------+----------------+-----------+-----------+-----------+-----------+
68 | heat       | orchestration  | Available | Available | Available | Available |
69 +------------+----------------+-----------+-----------+-----------+-----------+
70 | keystone   | identity       | Available | Available | Available | Available |
71 +------------+----------------+-----------+-----------+-----------+-----------+
72 | neutron    | network        | Available | Available | Available | Available |
73 +------------+----------------+-----------+-----------+-----------+-----------+
74 | nova       | compute        | Available | Available | Available | Available |
75 +------------+----------------+-----------+-----------+-----------+-----------+
76 | swift      | object-store   | Available | ---       | Available | Available |
77 +------------+----------------+-----------+-----------+-----------+-----------+
78
79 .. This table is created by outputs from jenkins functest log, components registering at keystone
80 .. would prefer a table per scenario.
81
82 Some of the sub-projects are not deployed in all scenarios.
83
84 .. end of the part to be replaced by link if possible.
85
86 Note that additional components of OpenStack are used as part of deployment tools and test frameworks
87 (Fuel, Tempest, Rally).
88
89 For more information about the OpenStack features and usage refer to the
90 `official OpenStack documentation page <http://docs.openstack.org/>`_.
91 Please ensure that you have the Liberty release selected at the
92 ``More Releases & Languages`` drop down menu.
93
94 Operating System
95 ----------------
96
97 OPNFV uses Linux on all target machines. Depending on the installers, different
98 distributions are supported.
99
100 Ubuntu 14 supported by Fuel, Compass and Joid installers
101 CentOS 7 supported by Apex and Compass
102
103
104 SDN Controllers
105 ---------------
106
107 OPNFV Brahmaputra release supports different SDN controllers.
108 Some scenarios don't use an SDN controller but rely just on **Neutron** networking capabilities.
109
110 Depending on the SDN controller you are using, the featureset will vary.
111 Brahmaputra also provides scenarios without an SDN controller, just using OpenStack Neutron.
112
113 The OpenDaylight project is a collaborative open source project that aims to accelerate
114 adoption of Software-Defined Networking (SDN) and Network Functions Virtualization
115 (NFV) with a transparent approach that fosters new innovation.
116
117 **OpenDaylight** is an SDN controller that aims to accelerate
118 adoption of Software-Defined Networking (SDN) and Network Functions Virtualization
119 (NFV) with a transparent approach that fosters new innovation.
120 OpenDaylight runs within a JVM and is installed in OPNFV within a container and integrated with OpenStack
121 using the ODL device driver. The Brahmaputra release of OPNFV integrates the Beryllium release.
122 You can find more information about OpenDaylight among the release artifacts at the
123 `Downloads page <https://www.opendaylight.org/downloads>`_.
124 Please ensure you are using the Beryllium documentation.
125
126 **ONOS** is an SDN controller written in Java with a distributed architecture with special focus to
127 support scalability, fault tolerance and hardware and software upgrades without
128 interrupting network traffic.
129 More information on the internal design of ONOS may be found in
130 `User's Guide <https://wiki.onosproject.org/display/ONOS/User's+Guide>`_ and
131 `Architecture+Guide <https://wiki.onosproject.org/display/ONOS/Architecture+Guide>`_ on the
132 `wiki of the ONOS project <https://wiki.onosproject.org>`_.
133 ONOS is integrated to OPNFV using a framework ONOSFW and Neutron plugins. Details can be found in the
134 ONOS specific OPNFV documents,
135
136 `Design guide <http://artifacts.opnfv.org/onosfw/brahmaputra/docs/design/design.pdf>`_,
137 `User guide <http://artifacts.opnfv.org/onosfw/brahmaputra/docs/userguide/index.html>`_ and
138 `Config guide <http://artifacts.opnfv.org/onosfw/brahmaputra/docs/configguide/index.html>`_.
139
140 .. **OpenContrail** SDN controller will be supported in the next drop of the Brahmaputra release.
141
142
143 Data Plane
144 ----------
145
146 OPNFV extends Linux's virtual networking capabilies by using virtual switch
147 and router components including improving those components by requirements
148 specific to telco use cases.
149
150 For instance some scenarios use **OpenVSwich**
151 to replace Linux bridges as it offers advantages in terms of mobility, hardware
152 integration and use by network controllers. OPNFV leverages these by upgrade
153 to a specific installation using user-space datapath. This includes changes to
154 other dataplane components, including libvirt, qemu, DPDK etc.
155 Please find more information in
156 `OVSNFV User's Guide <http://artifacts.opnfv.org/ovsnfv/docs/userguides/userguides.pdf>`_
157
158 .. ==> need input, if we mention other components
159
160 Other Components
161 ----------------
162
163 **KVM**
164
165 NFV infrastructure has special requirements on hypervisors with respect of
166 interrupt latency (timing correctness and packet latency in data plane) and
167 live migration.
168
169 Besides additional software changes, this requires
170 some adjustments to system configuration
171 information, like hardware, BIOS, OS, etc.
172
173 .. KVM4NFV is one implementation, we have three implementations of the OS virtualization layer
174 .. to capture here.
175 .. ==> need more input
176
177 Please find more information at
178 `KVM4NFV project documentation <http://artifacts.opnfv.org/kvmfornfv/docs/all/all.pdf>`_
179
180 .. As it is a platform overview I think if we mention KVM as hypervisor we should focus on which version we are using and how as opposed to the OPNFV project that deals with KVM itself.
181
182
183
184 Deployment Architecture
185 =======================
186
187 OPNFV starts with a typical configuration with 3 controller nodes running
188 OpenStack, SDN, etc. and a minimum of 2 compute nodes for deployment of VNFs.
189 A detailed description of this 5 node configuration can be found in pharos documentation.
190
191 The 3 controller nodes allow to provide an HA configuration. The number of compute
192 nodes can be increased dynamically after the initial deployment.
193
194 OPNFV can be deployed on bare metal or in a virtual environment, where each of the hosts
195 is a virtual machine and provides the virtual resources using nested virtualization.
196
197 The initial deployment is done using a so-called "jumphost". This server (either bare metal
198 or virtual) is first installed with the installer program that then installs OpenStack
199 and other components on the controller nodes and compute nodes. See the
200 `OPNFV user guide <http://artifacts.opnfv.org/opnfvdocs/brahmaputra/docs/userguide/userguide.pdf>`_
201 for more details.
202
203 .. Editors note:
204 .. In a second level of detail, describe how software is distributed over the 3 controller
205 .. nodes, compute nodes and other hardware.
206
207
208 In Brahmaputra, different scenarios can be deployed to provide the different feature sets, e.g.
209 HA, IPV6, BGPVPN, KVM, or select the different implementations, e.g. SDN controllers.
210
211 .. ==> Is it described somewhere what we mean by scenarios? If yes, then the original text is better.
212 .. If not, I would give a brief overview here to describe the term.
213
214 The following scenarios are supported, some of them can be deployed using different installers.
215
216 * nosdn-nofeature
217 * odl_l2-ha
218 * odl_l3-ha
219 * odl_l2-bgpvpn-noha
220 * onos-ha
221 * nosdn-ovs-ha
222 * nosdn-kvm-ha
223 * nosdn-ovs_kvm-ha
224
225 Please find more information at
226 `<https://wiki.opnfv.org/functextnexttaks>`_
227
228 .. ==> As soon as better information is available, the list can be replaced by a link to e.g.
229 .. http://artifacts.opnfv.org/opnfvdocs/brahmaputra/docs/configguide/configoptions.html#opnfv-scenario-s.
230
231
232 .. Dynamic View
233 .. ============
234
235 .. Editors note: we might skip this section completely for Brahmaputra.
236
237 .. Or we provide rather short statements. In later versions, we have to describe which
238 .. software is involved in which way during:
239
240 .. * VNF Life Cycle (onboarding, instantiate, scaling): we can reference to other documents
241 .. * Hardware Life Cycle (mainly how to add compute nodes, but also other cases)
242 .. * ...
243
244
245
246
247