update link to upper-constraints.txt
[integration.git] / docs / docs_BBS.rst
1 .. _docs_bbs:
2
3 :orphan:
4
5 BBS (Broadband Service)
6 -----------------------
7
8 Overview
9 ~~~~~~~~
10 The BBS use case proposes using ONAP for the design, provisioning, life-cycle
11 management and assurance of broadband services. BBS focuses on multi-Gigabit
12 Internet Connectivity services based on PON (Passive Optical Network) access
13 technology.
14
15 In Frankfurt release, BBS enables ONAP to
16
17 1. Establish a subscriber's HSIA (High Speed Internet Access) service from an ONT (Optical Network Termination unit) to the Internet drain
18
19    - The HSIA service is designed and deployed using ONAP's design and deployment capabilities
20    - The HSIA service activation is initiated via ONAP's External APIs and orchestrated and controlled using ONAP orchestration and control capabilities. The control capabilities leverage a 3rd party controller to implement the requested actions within the technology domain/location represented by the domain specific SDN management and control function.
21
22 2. Detect the change of location for ONT devices (Nomadic ONT devices)
23
24    - PNF (Re-)Registration for an ONT
25
26      - Subscriber association to an ONT via ONAP's External APIs
27      - ONT association with a expected Access UNI (PON port) when a HSIA service is created/deployed for a subscriber
28      - PNF (Re-)Registration using ONAP's PNF registration capabilities
29
30    - Service location modification that is detected by ONAP's analytic and initiated via the closed loop capabilities
31
32      - The closed loop capabilities invoke a HSIA location change service that
33        is orchestrated and controlled using ONAP capabilities and 3rd party controllers
34
35 |image1|
36
37 **Figure 1. Architecture Overview**
38
39 System View
40 ~~~~~~~~~~~
41 BBS relies on key ONAP components such as External API, SO, AAI, SDC, Policy
42 (APEX engine), DCAE (PRH, BBS Event Processor, VES collector, VES mapper,
43 RESTCONF collector) and SDNC
44
45 |image2|
46
47 **Figure 2. System View**
48
49 System Set Up and configuration
50 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51
52 SO: Custom Workflow Configuration
53 =================================
54
55 ::
56
57   ~/oom/kubernetes# kubectl edit cm dev-so-bpmn-infra-app-configmap
58
59     ## replace "workflow:\n    CreateGenericVNFV1:\n"
60     ## with "workflow:\n    custom:\n        BBS_E2E_Service:\n            sdnc:\n                need: true\n    CreateGenericVNFV1:\n"
61
62   ## Restart the pod
63   ~/oom/kubernetes# kubectl delete po dev-so-so-bpmn-infra-7556d7f6bc-8fthk
64
65
66 As shown below, new entries need to be inserted manually in SO database (mariadb-galera) in order to map a given resource model to a specific BPMN recipe. For instance, the CPE is modeled in SDC as a VF but it is treated as PNF resource by SO by using the handlePNF BPMN recipe. Those entries need to be inserted in catalogdb database > vnf_recipe table.
67
68 IMPORTANT: make sure vnf_recipe.NF_ROLE matches vnf_resource.MODEL_NAME, and vnf_recipe.VERSION_STR matches vnf_resource.MODEL_VERSION.
69
70 ::
71
72   root@onap-rancher-daily:/home/ubuntu# kubectl exec -ti dev-mariadb-galera-0 sh
73   sh-4.2$ mysql -u root -p
74   MariaDB [(none)]> use catalogdb;
75   MariaDB [catalogdb]> INSERT INTO vnf_recipe (NF_ROLE, ACTION, SERVICE_TYPE, VERSION_STR, DESCRIPTION, ORCHESTRATION_URI, VNF_PARAM_XSD, RECIPE_TIMEOUT)
76   VALUES
77     ("InternetProfile", "createInstance", "NF", "1.0", "create InternetProfile", "/mso/async/services/CreateSDNCNetworkResource", '{"operationType":"AccessConnectivity"}', 180000),
78     ("AccessConnectivity", "createInstance", "NF", "1.0", "create AccessConnectivity", "/mso/async/services/CreateSDNCNetworkResource", '{"operationType":"InternetProfile"}', 180000),
79     ("CPE", "createInstance", "NF", "1.0", "create CPE", "/mso/async/services/HandlePNF", NULL, 180000);
80
81   MariaDB [catalogdb]> select * from vnf_recipe where NF_ROLE IN ('AccessConnectivity','InternetProfile', 'CPE');
82   +-------+--------------------+----------------+--------------+-------------+---------------------------+-----------------------------------------------+----------------------------------------+----------------+---------------------+--------------+
83   | id    | NF_ROLE            | ACTION         | SERVICE_TYPE | VERSION_STR | DESCRIPTION               | ORCHESTRATION_URI                             | VNF_PARAM_XSD                          | RECIPE_TIMEOUT | CREATION_TIMESTAMP  | VF_MODULE_ID |
84   +-------+--------------------+----------------+--------------+-------------+---------------------------+-----------------------------------------------+----------------------------------------+----------------+---------------------+--------------+
85   | 10048 | InternetProfile    | createInstance | NF           | 1.0         | create InternetProfile    | /mso/async/services/CreateSDNCNetworkResource | {"operationType":"InternetProfile"}    |        1800000 | 2020-01-20 17:43:07 | NULL         |
86   | 10051 | AccessConnectivity | createInstance | NF           | 1.0         | create AccessConnectivity | /mso/async/services/CreateSDNCNetworkResource | {"operationType":"AccessConnectivity"} |        1800000 | 2020-01-20 17:43:07 | NULL         |
87   | 10054 | CPE                | createInstance | NF           | 1.0         | create CPE                | /mso/async/services/HandlePNF                 | NULL                                   |        1800000 | 2020-01-20 17:43:07 | NULL         |
88   +-------+--------------------+----------------+--------------+-------------+---------------------------+-----------------------------------------------+----------------------------------------+----------------+---------------------+--------------+
89   3 rows in set (0.00 sec)
90
91
92 DMaaP Message Router
93 ====================
94
95 Create the required topics in DMaaP
96
97 ::
98
99   curl -kX POST \
100     https://mr.api.simpledemo.openecomp.org:30226/topics/create \
101     -H 'Accept: application/json' \
102     -H 'Content-Type: application/json' \
103     -H 'cache-control: no-cache' \
104     -d '{
105       "topicName": "unauthenticated.DCAE_CL_OUTPUT",
106       "topicDescription": "",
107       "partitionCount": "",
108       "replicationCount": "3"
109   }'
110
111   curl -kX POST \
112     https://mr.api.simpledemo.openecomp.org:30226/topics/create \
113     -H 'Accept: application/json' \
114     -H 'Content-Type: application/json' \
115     -H 'cache-control: no-cache' \
116     -d '{
117       "topicName": "unauthenticated.CPE_AUTHENTICATION",
118       "topicDescription": "",
119       "partitionCount": "",
120       "replicationCount": "3"
121   }'
122
123   curl -kX POST \
124     https://mr.api.simpledemo.openecomp.org:30226/topics/create \
125     -H 'Accept: application/json' \
126     -H 'Content-Type: application/json' \
127     -H 'cache-control: no-cache' \
128     -d '{
129       "topicName": "unauthenticated.PNF_READY",
130       "topicDescription": "",
131       "partitionCount": "",
132       "replicationCount": "3"
133   }'
134
135   curl -kX POST \
136     https://mr.api.simpledemo.openecomp.org:30226/topics/create \
137     -H 'Accept: application/json' \
138     -H 'Content-Type: application/json' \
139     -H 'cache-control: no-cache' \
140     -d '{
141       "topicName": "unauthenticated.PNF_UPDATE",
142       "topicDescription": "",
143       "partitionCount": "",
144       "replicationCount": "3"
145   }'
146
147   curl -k 'https://mr.api.simpledemo.openecomp.org:30226/topics'
148
149   {
150       "topics": [
151           "org.onap.dmaap.mr.PNF_REGISTRATION",
152           "unauthenticated.DCAE_CL_OUTPUT",
153           "AAI-EVENT",
154           "SDC-DISTR-STATUS-TOPIC-AUTO",
155           "SDC-DISTR-NOTIF-TOPIC-AUTO",
156           "org.onap.dmaap.mr.PNF_READY",
157           "unauthenticated.PNF_READY",
158           "POLICY-PDP-PAP",
159           "unauthenticated.CPE_AUTHENTICATION",
160           "unauthenticated.VES_MEASUREMENT_OUTPUT",
161           "unauthenticated.PNF_UPDATE",
162           "org.onap.dmaap.mr.mirrormakeragent",
163           "__consumer_offsets"
164       ]
165   }
166
167
168 DCAE: BBS Event Processor (BBS-ep)
169 ==================================
170
171 Description: `BBS-ep <https://docs.onap.org/projects/onap-dcaegen2/en/frankfurt/sections/services/bbs-event-processor/index.html?highlight=BBS>`_
172
173 The following BBS event processor blueprint will be used:
174
175 - `k8s-bbs-event-processor.yaml <https://git.onap.org/dcaegen2/platform/blueprints/plain/blueprints/k8s-bbs-event-processor.yaml?h=frankfurt>`_
176
177
178 The BBS-ep deployment procedure:
179
180 ::
181
182   root@onap-nfs:/home/ubuntu# kubectl exec -ti dev-dcae-bootstrap-7599b45c77-czxsx -n onap bash
183   bash-4.2$ cfy install -b bbs-ep -d bbs-ep /blueprints/k8s-bbs-event-processor.yaml
184
185
186 IMPORTANT: Make sure that the configuration of BBS-ep in Consul contains the following version for the close loop policy in order to match the version expected by BBS APEX policy:
187
188 ::
189
190   "application.clVersion": "1.0.2"
191
192
193 DCAE: RESTCONF Collector
194 ========================
195
196 Description: `RESTCONF Collector <https://docs.onap.org/projects/onap-dcaegen2/en/frankfurt/sections/services/restconf/index.html>`_
197
198 The following RESTCONF collector blueprint will be used:
199
200 - `k8s-restconf.yaml <https://git.onap.org/dcaegen2/platform/blueprints/plain/blueprints/k8s-restconf.yaml?h=frankfurt>`_
201
202
203 RESTCONF Collector deployment procedure:
204
205 ::
206
207   root@onap-nfs:/home/ubuntu# kubectl exec -ti dev-dcae-bootstrap-7599b45c77-czxsx -n onap bash
208   bash-4.2$ cfy install -b restconf -d restconf /blueprints/k8s-restconf.yaml
209
210
211 DCAE: VES mapper
212 ================
213
214 Description: `VES Mapper <https://docs.onap.org/projects/onap-dcaegen2/en/frankfurt/sections/services/mapper/index.html>`_
215
216 The following VES mapper blueprint will be used:
217
218 - `k8s-ves-mapper.yaml <https://git.onap.org/dcaegen2/platform/blueprints/tree/blueprints/k8s-ves-mapper.yaml?h=frankfurt>`_
219
220
221 VES Mapper deployment procedure:
222
223 ::
224
225   root@onap-nfs:/home/ubuntu# kubectl exec -ti dev-dcae-bootstrap-7599b45c77-czxsx -n onap bash
226   bash-4.2$ cfy install -b ves-mapper -d ves-mapper /blueprints/k8s-ves-mapper.yaml
227
228
229 DCAE: VES collector
230 ===================
231
232 Configure the mapping of the VES event domain to the correct DMaaP topic in Consul: ves-statechange --> unauthenticated.CPE_AUTHENTICATION
233
234 1. Access Consul UI <http://CONSUL_SERVER_UI:30270/ui/#/dc1/services>
235
236 2. Modify the dcae-ves-collector configuration by adding a new VES domain to DMaaP topic mapping
237
238 ::
239
240   "ves-statechange": {"type": "message_router", "dmaap_info": {"topic_url": "http://message-router:3904/events/unauthenticated.CPE_AUTHENTICATION"}}
241
242 |image3|
243
244 3. Click on UPDATE in order to apply the new configuration
245
246
247 SDNC: BBS DGs (Directed Graphs)
248 ===============================
249
250 Make sure that the following BBS DGs in the SDNC DGBuilder are in Active state
251
252 ::
253
254   bbs-access-connectivity-vnf-topology-operation-create-huawei
255   bbs-access-connectivity-vnf-topology-operation-delete-huawei
256   bbs-internet-profile-vnf-topology-operation-change-huawei
257   bbs-internet-profile-vnf-topology-operation-common-huawei
258   bbs-internet-profile-vnf-topology-operation-create-huawei
259   bbs-internet-profile-vnf-topology-operation-delete-huawei
260   validate-bbs-vnf-input-parameters
261
262 DGBuilder URL: https://sdnc.api.simpledemo.onap.org:30203
263
264
265 Access SDN M&C DG
266 =================
267 Configure Access SDN M&C IP address in SDNC DG using dgbuilder. For instance:
268
269 > GENERIC-RESOURCE-API: bbs-access-connectivity-vnf-topology-operation-create-huawei.json
270 > GENERIC-RESOURCE-API: bbs-access-connectivity-vnf-topology-operation-delete-huawei.json
271
272 1. Export the relevant DG
273
274 2. Modify the IP address
275
276 3. Import back the DG and Activate it
277
278 DGBuilder URL: https://sdnc.api.simpledemo.onap.org:30203
279
280
281 Edge SDN M&C DG
282 ===============
283 Configure Edge SDN M&C IP address in SDNC DG using dgbuilder. For instance:
284
285 > GENERIC-RESOURCE-API: bbs-access-connectivity-vnf-topology-operation-common-huawei.json
286
287 1. Export the relevant DG
288
289 2. Modify the IP address
290
291 3. Import back the DG and Activate it
292
293 DGBuilder URL: https://sdnc.api.simpledemo.onap.org:30203
294
295
296 Add SSL certificate of the 3rd party controller into the SDNC trust store
297 =========================================================================
298
299 ::
300
301   kubectl exec -ti dev-sdnc-0 -n onap -- bash
302
303   openssl s_client -connect <IP_ADDRESS_EXT_CTRL>:<PORT>
304   # copy server certificate and paste in /tmp/<CA_CERT_NAME>.crt
305   sudo keytool -importcert -file /tmp/<CA_CERT_NAME>.crt -alias <CA_CERT_NAME>_key -keystore truststore.onap.client.jks -storepass adminadmin
306   keytool -list -keystore truststore.onap.client.jks -storepass adminadmin | grep <CA_CERT_NAME>
307
308
309 Policy: BBS APEX policy
310 =======================
311
312 Deployment procedure of BBS APEX Policy (master, apex-pdp image v2.3+)
313
314 1. Make Sure APEX PDP is running and in Active state
315
316 ::
317
318   API:  GET
319   URL: {{POLICY-PAP-URL}}/policy/pap/v1/pdps
320
321 2. Create the operational control loop APEX policy type
322
323 ::
324
325   API: POST
326   URL: {{POLICY-API-URL}}/policy/api/v1/policytypes
327   JSON Payload: https://git.onap.org/integration/usecases/bbs/tree/policy/apex/json/bbs_policytypes.json
328
329 3. Create BBS APEX policy
330
331 ::
332
333   API: POST
334   URL: {{POLICY-API-URL}}/policy/api/v1/policytypes/onap.policies.controlloop.operational.Apex/versions/1.0.0/policies
335   JSON Payload: https://git.onap.org/integration/usecases/bbs/tree/policy/apex/json/bbs_create_policy.json
336
337 4. Deploy BBS policy
338
339 ::
340
341   API: POST
342   URL: {{POLICY-PAP-URL}}/policy/pap/v1/pdps/policies
343   JSON Payload: https://git.onap.org/integration/usecases/bbs/tree/policy/apex/json/bbs_simple_deploy.json
344
345 5. Verify the deployment
346
347 ::
348
349   API: GET
350   URL: {{POLICY-API-URL}}/policy/api/v1/policytypes/onap.policies.controlloop.operational.Apex/versions/1.0.0/policies/
351
352
353 Edge Services: vBNG+AAA+DHCP, Edge SDN M&C
354 ==========================================
355
356 Installation and setup instructions: `Swisscom Edge SDN M&C and virtual BNG <https://wiki.onap.org/pages/viewpage.action?pageId=63996962>`_
357
358 References
359 ==========
360
361 Please refer to the following wiki page for further steps related to the BBS service design and instantiation:
362
363 - `BBS Documentation <https://wiki.onap.org/pages/viewpage.action?pageId=75303137#BBSDocumentation(Frankfurt)-BBSServiceConfiguration>`_
364
365 Known Issues
366 ------------
367
368 - E2E Service deletion workflow does not delete the PNF resource in AAI (`SO-2609 <https://jira.onap.org/browse/SO-2609>`_)
369
370 .. |image1| image:: files/bbs/BBS_arch_overview.png
371    :width: 6.5in
372 .. |image2| image:: files/bbs/BBS_system_view.png
373    :width: 6.5in
374 .. |image3| image:: files/bbs/BBS_dcae-ves-collector_config.png
375    :width: 6.5in