VNFRQTS - Fixing the metadata
[vnfrqts/requirements.git] / docs / Chapter5 / Heat / ONAP Heat Networking.rst
1 .. Licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. Copyright 2017 AT&T Intellectual Property.  All rights reserved.
4
5 .. _ONAP Heat Networking:
6
7 ONAP Heat Networking
8 -----------------------
9
10 ONAP defines two types of networks: External Networks and Internal Networks.
11
12 External Networks
13 ^^^^^^^^^^^^^^^^^^^^
14
15 An ONAP external network is created by using VID or by invoking SO directly
16 to instantiate the network.
17 External networks are orchestrated separately, independent of VNFs.
18 A network instantiated via VID or by invoking SO directly is managed by
19 ONAP and is inventoried in AAI.
20
21 An external network can be created by using one of the following
22 resources:
23
24 - ``OS::Neutron::Net``
25 - ``OS::Neutron::ProviderNet``
26 - ``OS::ContrailV2::VirtualNetwork``
27
28 An external network **MAY** be used to
29
30 - Connect a VM in a VNF to VMs in another VNF
31 - Connect a VM in a VNF to an external gateway or external router
32 - Connect a VM in a VNF to other VMs in the same VNF
33
34 An external network may be designed to perform
35
36 - All three functions listed above or
37 - Perform only two functions listed above or
38 - Perform only one function listed above
39
40 .. req::
41     :id: R-16968
42     :target: VNF
43     :keyword: MUST NOT
44     :validation_mode: static
45     :updated: frankfurt
46
47     A VNF's Heat Orchestration Templates **MUST NOT** include heat
48     resources to create an ONAP external network.
49
50     An ONAP external network **MUST** be instantiated by using VID
51     or by invoking SO directly.
52
53
54 .. req::
55     :id: R-00606
56     :target: VNF
57     :keyword: MAY
58     :updated: frankfurt
59
60     A VNF **MAY** be connected to zero, one or more than one ONAP external
61     network.
62
63 .. req::
64     :id: R-57424
65     :target: VNF
66     :keyword: MAY
67     :validation_mode: none
68     :updated: frankfurt
69
70     A VNF's port connected to an ONAP external network **MAY**
71     use the port for the purpose of
72
73     - Connecting a VM in the VNF to VMs in another VNF and/or
74     - Connecting a VM in the VNF to an external gateway or external router
75       and/or
76     - Connecting a VM in the VNF to other VMs in the same VNF
77
78 .. req::
79     :id: R-99794
80     :target: VNF
81     :keyword: MUST
82     :validation_mode: none
83     :updated: frankfurt
84
85     An ONAP external network **MUST** have one subnet. An external network
86     **MAY** have more than one subnet.
87
88 ONAP enforces a naming convention for
89 resource IDs and resource property
90 parameters associated with
91 external networks. :ref:`ONAP Heat Resource ID and Parameter Naming Convention`
92 provides additional details.
93
94 Internal Networks
95 ^^^^^^^^^^^^^^^^^^^^
96
97 An ONAP internal network is created by the VNF's Heat Orchestration Template.
98 That is, the VNF's Heat Orchestration Template contains the heat resources to
99 instantiate the network.
100 An ONAP internal network is not inventoried by AAI and can not be managed
101 independently of the VNF.
102
103 An ONAP internal network MUST only be used for connecting a VM in the
104 VNF to other VMs in the same VNF.
105
106 An ONAP internal network MUST NOT be used for connecting a VM in the VNF to
107 VMs in another VNF or connecting a VM in the VNF to an external gateway and/or
108 external router.
109
110 The reason for this is for operational simplicity.  An ONAP internal network
111 will be deleted when the VNF that created the network (referred to as VNF A)
112 is deleted.  If a different VNF (referred to as VNF B) attaches to the ONAP
113 internal network created by VNF A, then VNF B must be deleted prior VNF A.
114
115 In addition, if an ONAP internal network is used to connect two (or more) VNFs,
116 there is no record in AAI inventory.  This could lead to additional
117 operational complications.
118
119 .. req::
120     :id: R-87096
121     :target: VNF
122     :keyword: MAY
123     :updated: frankfurt
124
125     A VNF **MAY** contain zero, one or more than one ONAP internal network.
126
127 .. req::
128     :id: R-35666
129     :target: VNF
130     :keyword: MUST
131     :validation_mode: static
132     :updated: frankfurt
133
134     If a VNF has an ONAP internal network, the VNF's Heat Orchestration
135     Template **MUST** include the heat resources to create the
136     ONAP internal network.
137
138     A VNF's ONAP internal network is created using Neutron Heat Resources
139     (e.g., ``OS::Neutron::Net``, ``OS::Neutron::Subnet``,
140     ``OS::Neutron::ProviderNet``) and/or
141     Contrail Heat Resources (e.g., ``OS::ContrailV2::VirtualNetwork``,
142     ``OS::ContrailV2::NetworkIpam``).
143
144
145 .. req::
146     :id: R-52425
147     :target: VNF
148     :keyword: MUST
149     :validation_mode: none
150     :updated: frankfurt
151
152     A VNF's port connected to an ONAP internal network **MUST**
153     use the port for the purpose of reaching VMs in the same VNF.
154
155 .. req::
156     :id: R-46461
157     :target: VNF
158     :keyword: MUST NOT
159     :validation_mode: none
160     :updated: frankfurt
161
162     A VNF's port connected to an ONAP internal network **MUST NOT**
163     use the port
164     for the purpose of reaching VMs in another VNF and/or an
165     external gateway and/or
166     external router.
167
168 .. req::
169     :id: R-16241
170     :target: VNF
171     :keyword: MUST
172     :validation_mode: static
173     :updated: frankfurt
174
175     A VNF's ONAP internal network **MUST** have one subnet.
176     A VNF's ONAP internal network **MAY** have more than one subnet.
177
178 .. req::
179     :id: R-86972
180     :target: VNF
181     :keyword: SHOULD
182     :updated: frankfurt
183
184     A VNF **SHOULD** create the ONAP internal network in the VNF's Heat
185     Orchestration Template's Base Module.
186
187
188 .. req::
189     :id: R-22688
190     :target: VNF
191     :keyword: MUST
192     :validation_mode: static
193     :updated: frankfurt
194
195     When a VNF's Heat Orchestration Template creates an ONAP internal network
196     (per the ONAP definition, see Requirements R-52425 and R-46461
197     and R-35666) and the ONAP internal network needs to be shared between
198     modules within a VNF, the ONAP
199     internal network **MUST** be created either in the
200
201     * the base module
202     * a nested YAML file invoked by the base module
203
204     and the base module **MUST** contain an output parameter that provides
205     either the network UUID or network name.
206
207     * If the network UUID value is used to reference the network, the output
208       parameter name in the base module **MUST** follow the naming convention
209       ``int_{network-role}_net_id``
210     * If the network name in is used to reference the network, the output
211       parameter name in the base template **MUST** follow the naming convention
212       ``int_{network-role}_net_name``
213
214     The ``{network-role}`` **MUST** be the network-role of the ONAP
215     internal network created in the Base Module.
216
217     The Base Module Output Parameter MUST be declared in the ``parameters:``
218     section of the Incremental Module(s) where the ``OS::Neutron::Port``
219     resource(s) is attaching to the ONAP internal network.
220
221 ONAP does not programmatically enforce a naming convention for
222 parameters for internal network. However, a naming convention is
223 provided that must be followed.
224 :ref:`ONAP Heat Resource ID and Parameter Naming Convention`
225 provides additional details.
226