summaryrefslogtreecommitdiffstats
path: root/docs/Chapter5/Heat/ONAP Heat Networking.rst
blob: 308a5e35c2acc27387d958be5108d67b228a9320 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
.. Licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 AT&T Intellectual Property.  All rights reserved.

.. _ONAP Heat Networking:

ONAP Heat Networking
-----------------------

ONAP defines two types of networks: External Networks and Internal Networks.

External Networks
^^^^^^^^^^^^^^^^^^^^

ONAP defines an external network in relation to the VNF and not with regard
to the Network Cloud site. External networks may also be referred to as
"inter-VNF" networks.  An external network must connect VMs in a VNF to
VMs in another VNF or an external gateway or external router.

An External Network may be a Neutron Network or a Contrail Network.


.. req::
    :id: R-16968
    :target: VNF
    :keyword: MUST NOT

    A VNF's Heat Orchestration Templates **MUST NOT** include heat
    resources to create external networks.

External networks must be orchestrated separately, independent of the VNF.
This allows the network to be shared by multiple VNFs and managed
independently of VNFs.


.. req::
    :id: R-00606
    :target: VNF
    :keyword: MAY

    A VNF **MAY** be connected to zero, one or more than one external
    networks.

.. req::
    :id: R-57424
    :target: VNF
    :keyword: MUST

    A VNF's port connected to an external network **MUST**
    use the port for the purpose of reaching VMs in another VNF
    and/or an external gateway and/or external router. A VNF's port
    connected to an external network **MAY** use the port for
    the purpose of reaching VMs in the same VNF.

.. req::
    :id: R-29865
    :target: VNF
    :keyword: MUST

    When a VNF connects to an external network, a network role,
    referred to as the '{network-role}' **MUST** be assigned to the
    external network for use in the VNF's Heat Orchestration Template.

.. req::
    :id: R-69014
    :target: VNF
    :keyword: MUST

    When a VNF connects to an external network, a network role, referred
    to as the '{network-role}' **MUST** be assigned to the external network
    for use in the VNF's Heat Orchestration Template.

.. req::
    :id: R-05201
    :target: VNF
    :keyword: MUST

    When a VNF connects to two or more external networks, each external
    network **MUST** be assigned a unique '{network-role}' in the context of
    the VNF for use in the VNF's Heat Orchestration Template.

.. req::
    :id: R-83015
    :target: VNF
    :keyword: MUST

    A VNF's '{network-role}' assigned to an external network **MUST**
    be different than the '{network-role}' assigned to the VNF's internal
    networks, if internal networks exist.

.. req::
    :id: R-99794
    :target: VNF
    :keyword: MUST
    :test: no test found
    :test_case: no test found
    :test_file: no test found

    An external network **MUST** have one subnet. An external network
    **MAY** have more than one subnet.

Note that this document refers to **'{network-role}'** which in reality
is the **'{network-role-tag}'**.  The value of the
'{network-role}' / '{network-role-tag}'
is determined by the designer of the VNF's Heat Orchestration Template and
there is no requirement for '{network-role}' / '{network-role-tag}'
uniqueness across Heat Orchestration Templates for
different VNFs.

When an external network is created by ONAP, the network is assigned a
'{network-role}'.  The '{network-role}' of the network is not required to
match the '{network-role}' of the VNF Heat Orchestration Template.

For example, the VNF Heat Orchestration Template can assign a '{network-role}'
of 'oam' to a network which attaches to an external network with a
'{network-role}' of 'oam_protected_1' .

When the Heat Orchestration Template is on-boarded into ONAP
  * each '{network-role}' value in the Heat Orchestration Template
    is mapped to the '{network-role-tag}' in the ONAP
    data structure.
  * each OS::Neutron::Port is associated with the external network it is
    connecting to, thus creating the VNF Heat Orchestration Template
    '{network-role}' / '{network-role-tag}' to external network '{network-role}'
    mapping.

ONAP enforces a naming convention for parameters associated with
external networks. :ref:`ONAP Heat Resource ID and Parameter Naming Convention`
provides additional details.

Internal Networks
^^^^^^^^^^^^^^^^^^^^

ONAP defines an internal network in relation to the VNF and not with
regard to the Network Cloud site. Internal networks may also be referred
to as "intra-VNF" networks or "private" networks. An internal network
only connects VMs in a single VNF; it must not connect to other VNFs
or an external gateway or router


.. req::
    :id: R-87096
    :target: VNF
    :keyword: MAY

    A VNF **MAY** contain zero, one or more than one internal networks.

.. req::
    :id: R-35666
    :target: VNF
    :keyword: MUST

    If a VNF has an internal network, the VNF Heat Orchestration
    Template **MUST** include the heat resources to create the internal network.

.. req::
    :id: R-86972
    :target: VNF
    :keyword: SHOULD

    A VNF **SHOULD** create the internal network in the VNF's Heat
    Orchestration Template Base Module.

An Internal Network may be created using Neutron Heat Resources and/or
Contrail Heat Resources.


.. req::
    :id: R-52425
    :target: VNF
    :keyword: MUST

    A VNF's port connected to an internal network **MUST** connect
    the port to VMs in the same VNF.

.. req::
    :id: R-46461
    :target: VNF
    :keyword: MUST NOT

    A VNF's port connected to an internal network **MUST NOT** connect
    the port to VMs in another VNF and/or an external gateway and/or
    external router.

.. req::
    :id: R-68936
    :target: VNF
    :keyword: MUST

    When a VNF creates an internal network, a network role, referred to
    as the '{network-role}' **MUST** be assigned to the internal network for
    use in the VNF's Heat Orchestration Template.

.. req::
    :id: R-32025
    :target: VNF
    :keyword: MUST

    When a VNF creates two or more internal networks, each internal
    network **MUST** be assigned a unique '{network-role}' in the context of
    the VNF for use in the VNF's Heat Orchestration Template.

.. req::
    :id: R-69874
    :target: VNF
    :keyword: MUST

    A VNF's '{network-role}' assigned to an internal network **MUST**
    be different than the '{network-role}' assigned to the VNF's external
    networks.

.. req::
    :id: R-16241
    :target: VNF
    :keyword: MUST
    :test: no test found
    :test_case: no test found
    :test_file: no test found

    A VNF's internal network **MUST** have one subnet.
    A VNF's internal network **MAY** have more than one subnet.

.. req::
    :id: R-34726
    :target: VNF
    :keyword: MUST

    If a VNF's port is connected to an internal network and the port
    is created in the same Heat Orchestration Template as the internal network,
    then the port resource **MUST** use a 'get_resource' to obtain
    the network UUID.

.. req::
    :id: R-22688
    :target: VNF
    :keyword: MUST

    If a VNF's port is connected to an internal network and the
    port is created in an Incremental Module and the internal
    network is created in the Base Module then the UUID of the
    internal network **MUST** be exposed
    as a parameter in the 'outputs:' section of the Base Module and the port
    resource **MUST** use a 'get_param' to obtain the network UUID.

ONAP does not programmatically enforce a naming convention for
parameters for internal network. However, a naming convention is
provided that must be followed.
:ref:`ONAP Heat Resource ID and Parameter Naming Convention`
provides additional details.