summaryrefslogtreecommitdiffstats
path: root/doc/book-enea-nfv-access-getting-started/doc/device_configuration_and_provisioning.xml
blob: 861c7398ea93e701af4d48e8c7feb8aa2cab4c27 (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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="configuration_provision">
  <title>Device Configuration and Provisioning</title>

  <section id="man_config">
    <title>Manual Configuration</title>

    <para>This section describes how to connect to an instance of NFV Access
    installed on a specific target, and how to setup the virtual
    infrastructure manually.</para>

    <para><emphasis role="bold">How to add a board to the management system
    </emphasis></para>

    <para>Add the boards running NFV Access to the management system. This is
    done by using the <literal>Devices -&gt; Manage -&gt; Add</literal> menu.
    Supply information about the board running NFV Access, and set the
    parameters that will be used to connect to the board. The relevant
    parameters are described below:</para>

    <itemizedlist>
      <listitem>
        <para>Type. The type of device to be added, i.e <literal>Enea
        universal uCPE </literal>.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <listitem>
        <para>Name. The name by which the device is referred to in the uCPE
        Manager.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <listitem>
        <para>IP Address. IP address of the device. If a device is installed
        under a local/private network and not directly visible to the uCPE
        Manager machine, the Gateway IP of the private network must be
        used.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <listitem>
        <para>SSH Port. The NETCONF Port used for communications. This is a
        relevant parameter if the standard NETCONF SSH (i.e. not Call-Home) is
        being used. Default is set to 22.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <listitem>
        <para>SSH User Name. The user name for SSH connectivity. Default user
        is <literal>root</literal>.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <listitem>
        <para>SSH Password. Leave this blank.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <listitem>
        <para>Device Calls Home. This checkbox indicates the direction of
        device communications. In the Manual Configuration, leave this box
        blank. For more info about how to add a device please refer to
      <link linkend="adding_a_device">Zero Touch Provisioning, Adding a Device</link>.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <listitem>
        <para>Device ID. The unique instance ID of the device. This is what
        links a device to its day-0 configuration (stored in the offline
        configuration system). It is a required field if you want to perform
        Zero-Touch Provisioning.</para>
      </listitem>
    </itemizedlist>
  </section>

  <section id="host_int_net_config">
    <title>Host Interfaces and Network Configuration</title>

    <para>The uCPE Manager can list network interfaces found on a device
    (Device -&gt; Configuration -&gt; OpenVSwitch -&gt; Host Interface
    Caps):</para>

    <figure>
      <title>Host Interface Caps</title>

      <mediaobject>
        <imageobject>
          <imagedata align="center" fileref="images/host_interface_caps.png"
                     scale="55" />
        </imageobject>
      </mediaobject>
    </figure>

    <para>Network interfaces can be set in three modes: DPDK, SR-IOV and
    PCI-Passthrough.</para>

    <section id="dpdk_interface">
      <title>DPDK Interface Type</title>

      <para>Configuring a physical interface in DPDK mode will require a
      DPDK-based application (e.g. OVS-DPDK) in order to access and use the
      interface. An interface set as DPDK can be attached to an OVS-DPDK
      bridge (Device -&gt; Configuration -&gt; OpenVSwitch -&gt; Host
      Interfaces -&gt; Add):</para>

      <figure>
        <title>DPDK Host Interface</title>

        <mediaobject>
          <imageobject>
            <imagedata align="center" fileref="images/dpdk_interface_type.png"
                       scale="90" />
          </imageobject>
        </mediaobject>
      </figure>

      <para>For DPDK mode, the user must set following fields:</para>

      <itemizedlist>
        <listitem>
          <para>Source: PCI address of the physical interface</para>
        </listitem>

        <listitem>
          <para>Type: dpdk</para>
        </listitem>

        <listitem>
          <para>Networking-type: dpdk</para>
        </listitem>

        <listitem>
          <para>Dpdk-type: kernel module that allow user space access of
          physical interface</para>
        </listitem>
      </itemizedlist>

      <para>Create an OpenVSwitch bridge (<literal>ovsbr0</literal>) on the
      device that uses a DPDK interface, by selecting the "Add" button from
      Bridges tab (Device -&gt; Configuration -&gt; OpenVSwitch-&gt;
      Bridges):</para>

      <figure>
        <title>OVS bridge</title>

        <mediaobject>
          <imageobject>
            <imagedata align="center" fileref="images/ovs_bridge.png"
                       scale="95" />
          </imageobject>
        </mediaobject>
      </figure>
    </section>

    <section id="sriov_interface_type">
      <title>SR-IOV Interface Type</title>

      <para>SR-IOV mode will create a number of virtual functions on host that
      can be used to route traffic to VMs (Device -&gt; Configuration -&gt;
      OpenVSwitch -&gt; Host Interfaces -&gt; Add):</para>

      <figure>
        <title>SR-IOV Interface Type</title>

        <mediaobject>
          <imageobject>
            <imagedata align="center"
                       fileref="images/sriov_interface_type.png" scale="90" />
          </imageobject>
        </mediaobject>
      </figure>
    </section>

    <section id="pci_interface_type">
      <title>PCI Passthrough Interface Type</title>

      <para>For PCI Passthrough the user does not have to configure a physical
      interface, instead simply select the PCI address and connect it to a
      virtual port at the VNF instantiation step.</para>
    </section>
  </section>

  <section id="zero_touch_prov">
    <title>Zero Touch Provisioning</title>

    <para>Zero-Touch Provisioning (ZTP) is an alternative to Manual
    configuration. ZTP refers to the process by which, when a device starts up
    for the first time, its initial configuration is pushed down by an
    external management system, so that it is setup for proper operation
    without additional manual intervention by an operator.</para>

    <para>A variety of operations can occur as part of ZTP such as initial
    device setup, configuration of managed objects, etc. The goal is to set up
    a device to the maximum possible extent without forcing an operator to be
    physically present (initially) to manage the device.</para>

    <para>In order to create a static configuration supporting ZTP, the uCPE
    Manager user needs to identify the <literal>Device ID</literal> of the
    machine running NFV Access.</para>

    <para>During the automatic installation process when the
    <literal>Automatic install</literal> step is reached, enter the option
    menu <literal>Customize kernel parameters</literal> and set the
    <literal>uCPE Manager IP address</literal>. Please check <xref
    linkend="install_ena_stick" />, for how to set the uCPE Manager IP address
    at boot time. The Device ID will be listed in the installer under the
    <literal>Customize kernel parameters</literal> menu.</para>

    <para>With the address parameter set, run
    <literal>list_deviceID.sh</literal> after NFV Access is installed and
    booted, to get the device ID of the target.</para>

    <note>
      <para>It is possible to let NFV Access know the uCPE Manager IP address
      at run-time by setting <literal>vcpemgr=&lt;IP&gt;</literal> as a kernel
      boot parameter in the grub configuration file. Reboot is required after
      this update. For additional information about grub configuration, please
      refer to the Enea NFV Access Reference Guide provided with your release.</para>

      <para>This step needs to be done each time the uCPE Manager host changes
      the IP address.</para>
    </note>

    <para>An offline configuration can be prepared in advance for the uCPE
    Manager to setup the infrastructure on the device.</para>

    <section id="adding_a_device">
      <title>Adding a Device</title>

      <para>The uCPE Manager must be configured to bring the target device
      under management. This is done by selecting <literal>Device Calls
      Home</literal> checkbox when adding a device. When Device Calls
      Home checkbox is checked, the device will initiate a
      connection by opening a socket to the uCPE Manager for NETCONF
      traffic (over SSH), while the uCPE Manager waits for device connection.</para>
      
      <para>For more info about how to add a device please refer to 
      <link linkend="man_config">Manual Configuration</link>.</para>
    </section>

    <section id="offline_configuration">
      <title>Offline Configuration</title>

      <para>The Offline Configuration subsystem is used to pre-populate a
      configuration for a device that will be brought under management at a
      future point in time. When creating an offline configuration store, an
      optional<literal> Device ID</literal> can be specified - this ID
      uniquely identifies the device to be initialized.</para>

      <para>Use the GUI (shown below) launched by the <literal>Applications
      -&gt; Offline Config -&gt; Add</literal> menu:</para>

      <figure>
        <title>Onboard New VNF</title>

        <mediaobject>
          <imageobject>
            <imagedata align="center" fileref="images/offline_config.png"
                       scale="80" />
          </imageobject>
        </mediaobject>
      </figure>

      <para>Specify the exact value of the <literal>Device ID</literal> in the
      required field. This will tag the device needed for the initial
      configuration provided by the offline configuration store. Choose
      <literal>Merge</literal> as the Default Upload Method if you do not want
      any boot configuration set on the device, to be wiped out. Selecting
      <literal>Replace</literal> will set the entire device configuration to
      match values in the offline configuration.</para>

      <para>After creating the Offline Config Store, access the device through
      <literal> Applications -&gt; offline config -&gt; Config App</literal>
      and provision it with the required initial configuration. This operation
      mirrors what happens during regular offline configuration.</para>

      <para>Now that the store has been provisioned successfully, it is ready
      to send this configuration to the device when it first comes
      online.</para>
    </section>

    <section id="initial_communications">
      <title>Initial Communications</title>

      <para>There are two possible paths to this process, depending upon
      whether or not NETCONF Call-Home functionality is used:</para>

      <orderedlist>
        <listitem>
          <para>If Call-Home is not enabled/supported, the uCPE Manager
          creates a SSH session to the device over the port configured through
          the <literal>Add Device </literal> process (default 830). It then
          initiates NETCONF communications over this session.</para>
        </listitem>

        <listitem>
          <para>If the device uses Call-Home, it creates a socket connection
          to port 4334 on the management system which runs the uCPE Manager.
          The uCPE Manager then creates a SSH session over this socket and
          initiates NETCONF communications as a client.</para>
        </listitem>
      </orderedlist>

      <para>Once communications with the device have been established, the
      Device Manager will try and connect to it.</para>
    </section>
  </section>

  <section id="vnf_management">
    <title>VNF Management</title>

    <para>As the acting vnf manager, the uCPE Manager is responsible for
    handling the life-cycles of VNFs that are instantiated and run on the
    various uCPE hosts. The vnf manager module is written so as to be able to
    manage multiple VNF types. Along with it is provided a generic
    infrastructure to allow the end-user to introduce new VNF types
    dynamically into the system. This allows for third-party VNFs to be added
    over time to an existing network infrastructure without having to perform
    an expensive upgrade of the vnf manager itself.</para>

    <para>The process of VNF Onboarding consists of providing the system with
    sufficient information and resources related to the VNF such that it can
    instantiate a flavor of the VNF on the target, configure and scale it as
    appropriate, heal and upgrade it when necessary and tear it down at the
    right moment.</para>

    <para>The vnf manager subsystem in the uCPE Manager inserts a menu item in
    the toolbar, called <literal>VNF</literal> as shown in the screen-shot
    below.</para>

    <figure>
      <title>VNF Management</title>

      <mediaobject>
        <imageobject>
          <imagedata align="center" fileref="images/vnf_management.png"
                     scale="80" />
        </imageobject>
      </mediaobject>
    </figure>

    <para>Selecting this menu item gives you the following options:</para>

    <itemizedlist>
      <listitem>
        <para><literal>Descriptors</literal>: Choosing this option lets you
        manage the VNF Descriptors catalog. The vnf manager maintains a
        catalog of all VNFs that can be instantiated and managed by the
        system. Before you can use a new VNF, you need to onboard it into the
        catalog.</para>
      </listitem>

      <listitem>
        <para><literal>Instances</literal>: Choosing this option lets you
        instantiate (or destroy) VNFs on a given uCPE host (the
        <literal>target</literal>)..</para>
      </listitem>

      <listitem>
        <para><literal>Events</literal>: Choosing this option displays all the
        events that are related to VNF lifecycle management. Whenever a VNF
        state changes (i.e. it is
        created/destroyed/stopped/started/paused/resumed), a state change
        event is generated in the uCPE Manager. The screen shown when this
        option is chosen displays all events in the system, filtered to show
        only VNF state change notifications.</para>
      </listitem>
    </itemizedlist>

    <section id="onboarding_a_vnf">
      <title>Onboarding a VNF</title>

      <para>The VNF descriptor catalog table provides a button that allows you
      to onboard a new (third-party) VNF bundle into the catalog.</para>

      <figure>
        <title>Onboard New VNF</title>

        <mediaobject>
          <imageobject>
            <imagedata align="center"
                       fileref="images/onboarding_a_new_vnf.png" scale="70" />
          </imageobject>
        </mediaobject>
      </figure>

      <para>You can onboard using one of the following methods:</para>

      <itemizedlist>
        <listitem>
          <para>Onboard a VNF Package.</para>
        </listitem>

        <listitem>
          <para>Directly onboard a VNF VM Image (such as a QCOW) using the
          onboarding wizard.</para>
        </listitem>
      </itemizedlist>

      <section id="onboarding_a_bundled_vnf">
        <title>Onboarding a bundled VNF package</title>

        <para><emphasis role="bold">How to onboard a VNF onto the uCPE
        Manager</emphasis></para>

        <orderedlist>
          <listitem>
            <para>Click the <literal>On-board</literal> button.</para>
          </listitem>

          <listitem>
            <para>When prompted by the following UI, make sure the
            <literal>VNF Package</literal> radio button is selected.</para>
          </listitem>

          <listitem>
            <para>Click <literal>Choose File</literal> and choose the VNF
            Package ZIP archive, e.g <literal>VProbe.zip</literal>, which
            represents the VNF bundle.</para>
          </listitem>

          <listitem>
            <para>Click <literal>Send</literal>.</para>
          </listitem>
        </orderedlist>

        <figure>
          <title>Onboarding a bundled VNF package</title>

          <mediaobject>
            <imageobject>
              <imagedata align="center"
                         fileref="images/onboard_a_vnf_send.png" scale="70" />
            </imageobject>
          </mediaobject>
        </figure>

        <para>This will cause the vnf manager to do the following: Upload the
        ZIP file and stage it in a temporary location. Unzip it and verify its
        contents. Extract the various components and stash them in the
        appropriate location(s) for use by the uCPE Manager, so that the VNF
        can be treated by the uCPE Manager as a device. Then to add the VNF
        descriptor to the VNF Descriptor Catalog.</para>

        <para>Once these operations are complete, you will be provided with a
        success message.</para>
      </section>

      <section id="onboarding_a_bundled_vnf_wizard">
        <title>Onboarding a VNF VM Image using the Onboarding Wizard</title>

        <para><emphasis role="bold">How to onboard a VNF onto the uCPE Manager
        using the Onboarding Wizard</emphasis></para>

        <orderedlist>
          <listitem>
            <para>Click the <literal>On-board</literal> button.</para>
          </listitem>

          <listitem>
            <para>When prompted by the following UI, make sure the
            <literal>VNF Image</literal> radio button is selected.</para>
          </listitem>
        </orderedlist>

        <para>If you click the <literal>VM Image</literal> radio button at the
        top of the onboarding screen, you will get a pop-up containing fields
        which you can fill, suppling the necessary information about the VNF.
        After providing the information and pressing the onboard button, the
        uCPE Manager will create the VNF package and onboard it.</para>

        <figure>
          <title>Onboard a VNF using the Wizard</title>

          <mediaobject>
            <imageobject>
              <imagedata align="center"
                         fileref="images/onboard_a_vnf_image.png" scale="70" />
            </imageobject>
          </mediaobject>
        </figure>

        <para><emphasis role="bold">Main fields</emphasis></para>

        <itemizedlist>
          <listitem>
            <para><emphasis role="bold">VM Image File.</emphasis> This is the
            Virtual Machine image file for the VNF itself. Typically, it is a
            QCOW image. Press <literal>Choose File</literal> and select the
            image to be uploaded.</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold">Image Format</emphasis>. Select the
            format which matches the image file.</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold">VNF Type Name.</emphasis> This is the
            name that will be used to identify this VNF. It will be shown in
            the VNF tables.</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold">Description.</emphasis> This field
            contains any description you want to provide. It is only displayed
            in the GUI tables in the uCPE Manager.</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold">Version</emphasis>. This is the
            version of the current VNF that you are hosting. It's used to
            distinguish this VNF from other versions of the same type.</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold">Memory in MB.</emphasis> This is the
            amount of memory (in megabytes) that will be provided to this type
            of VNF when it is instantiated. To determine the value for this
            field, consult the VNF vendor.</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold">Num of CPUs.</emphasis> The number of
            CPUs that will be dedicated to an instance of this VNF when
            created. To determine the value for this field, consult the VNF
            vendor.</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold">Storage in GB.</emphasis> How much
            disk space to provide an instance of this VNF. To determine the
            value for this field, consult the VNF vendor.</para>
          </listitem>
        </itemizedlist>

        <para><emphasis role="bold">Interfaces Table</emphasis></para>

        <figure>
          <title>Interfaces Table</title>

          <mediaobject>
            <imageobject>
              <imagedata align="center" fileref="images/interfaces_table.png"
                         scale="70" />
            </imageobject>
          </mediaobject>
        </figure>

        <para>Click on the <literal>Interfaces</literal> tab to show the
        Interfaces table.</para>

        <para>This table will contain the interfaces required by this VNF to
        be configured, when creating an instance. Consult the VNF vendor to
        determine which and how many are required. Each interface requires a
        name, and optionally a description, used by the uCPE Manager
        only.</para>

        <para><emphasis role="bold">Cloud-Init Tab</emphasis></para>

        <para>Click the <literal>Clout Init</literal> tab to provide the
        Clout-Init configuration.</para>

        <figure>
          <title>Cloud-Init Tab</title>

          <mediaobject>
            <imageobject>
              <imagedata align="center" fileref="images/cloud_init_tab.png"
                         scale="70" />
            </imageobject>
          </mediaobject>
        </figure>

        <para>As shown in the picture above, there are three fields that need
        to be populated: Cloud-Init Datasource, Cloud-Init Disk Type and the
        Content Files Table.</para>

        <para>To onboard the VNF you must specify the Cloud-Init datasource
        that the VNF uses. You can get this information from the VNF Vendor.
        Choose one of the following methods to specify the datasource:</para>

        <itemizedlist>
          <listitem>
            <para><emphasis role="bold">ConfigDrive</emphasis>. This method
            allows you to provide any number of content-data files containing
            Cloud-Init data.</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold">NoCloud</emphasis>. This is a simpler
            method that uses only one cloud init file (User-Data).</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold">ISO</emphasis>. Pre-cooked cloud-init
            image. This image must be created by user according to VNF
            requirements.</para>
          </listitem>
        </itemizedlist>

        <para>The Cloud-Init Disk Type field must be set to either
        <literal>Disk</literal>, or <literal>CD-ROM</literal>, depending on
        what the VNF requires. You can get this information from the VNF
        Vendor.</para>

        <para>The Content Files Table is used ONLY if you chose
        <literal>ConfigDrive</literal> as the Cloud-Init Datasource. For each
        content file added, you must provide a <literal>Path</literal>. When a
        user uses the uCPE Manager to create an instance of one of these VNFs,
        they will be prompted to provide a data file for each entry in this
        table. Each type of VNF will require different cloud-init files, e.g.:
        a license file.</para>

        <para>Consult with the VNF vendor to determine what is required for
        the VNF you are onboarding.</para>

        <figure>
          <title>Content Files Table example</title>

          <mediaobject>
            <imageobject>
              <imagedata align="center"
                         fileref="images/content_files_table.png" scale="70" />
            </imageobject>
          </mediaobject>
        </figure>

        <para><emphasis role="bold">Properties Tab</emphasis></para>

        <para>In this table, you can enter values for properties that will be
        used during instantiation of the VNF. The values will augment the
        default values in the Domain.XML file used by libvirt/virsh (running
        in NFV Access) when creating an instance of the VNF. These property
        names are well known to the uCPE NFV Access software, and more will be
        added in future versions. You will need to consult with the VNF Vendor
        or ENEA support for values needed by specific VNFs.</para>

        <figure>
          <title>Properties Tab</title>

          <mediaobject>
            <imageobject>
              <imagedata align="center" fileref="images/properties_tab.png"
                         scale="70" />
            </imageobject>
          </mediaobject>
        </figure>

        <para><emphasis role="bold">Property Values</emphasis></para>

        <para><literal>numHugePages</literal> defines the number of huge
        memory pages the VNF uses (for DPDK).</para>
      </section>
    </section>

    <section id="instantiating_a_vnf">
      <title>Instantiating a VNF</title>

      <para>Once the VNF bundle has been onboarded, you can instantiate a VNF
      on a specific uCPE host:</para>

      <para>Launch the <literal>VNF instance</literal> table by choosing the
      <literal>Instances</literal> option from the <literal>VNF</literal>
      menu. This will display the table of VNF instances controlled by the VNF
      Manager. Hit the <literal>Add</literal> button to create a new
      instance:</para>

      <figure>
        <title>Instantiating a VNF</title>

        <mediaobject>
          <imageobject>
            <imagedata align="center" fileref="images/instantiate_a_vnf.png"
                       scale="70" />
          </imageobject>
        </mediaobject>
      </figure>

      <para>There are a number of parameters to be supplied before the VNF can
      be instantiated:</para>

      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">Name</emphasis>. The name of the
          VNF.</para>
        </listitem>

        <listitem>
          <para><emphasis role="bold">VNF Type</emphasis>. The name of the
          on-boarded VNF bundle. In this case <literal>VProbe</literal>
          VNF.</para>
        </listitem>

        <listitem>
          <para><emphasis role="bold">Flavor</emphasis>. The flavor of VNF (as
          specified in the descriptor) you would like to instantiate.</para>
        </listitem>

        <listitem>
          <para><emphasis role="bold">VIM</emphasis>. This stands for
          <literal> Virtual Infrastructure Manager</literal>, the target host
          on which to instantiate a VNF, i.e. the target uCPE host that will
          run this VNF.</para>
        </listitem>

        <listitem>
          <para><emphasis role="bold">Device Name</emphasis>. The name by
          which the VNF will be known in the uCPE Manager, if the
          <literal>Manage Device</literal> checkbox is checked. If unchecked,
          the VNF will not be shown as a managed device in the uCPE
          Manager.</para>
        </listitem>

        <listitem>
          <para><emphasis role="bold">Instantiation Parameters</emphasis>.
          This section contains all the parameters a user needs to supply when
          instantiating a VNF of this type. The <literal>VProbe</literal> VNF
          needs to specify network information (network name and IP address)
          for two separate interfaces. Every VNF type will have a different UI
          section here.</para>
        </listitem>

        <listitem>
          <para><emphasis role="bold">Auto-start</emphasis>. If checked, the
          VNF will be stopped and started when unreachable. When the VIM
          reports that it has lost connection to the VNF, the uCPE Manager
          will ask the VIM to terminate the VM and then start it up again. If
          unchecked, only a <literal>Disconnected</literal> notification will
          appear in the uCPE Manager.</para>
        </listitem>
      </itemizedlist>

      <para>Hitting the <literal>Create</literal> button will cause the VNF to
      be instantiated and run on the uCPE target specified above. The
      following operations will now take place:</para>

      <orderedlist>
        <listitem>
          <para>Check if the uCPE already has the VNF Flavor definition in its
          flavor store; if not create a new Flavor definition on the
          uCPE.</para>
        </listitem>

        <listitem>
          <para>Check if the uCPE already has the VNF image in its image
          store; if not, upload the image and create a new Image definition on
          the uCPE.</para>
        </listitem>

        <listitem>
          <para>Take in the user parameters and create the following:</para>

          <itemizedlist>
            <listitem>
              <para><emphasis role="bold">Networking information.</emphasis>
              Use the <literal>VnfGuiProcessorIf</literal> class<literal>
              getConnectionInfo()</literal> method to convert user parameters
              into networking information objects (refer to Section 6.1 for
              the <literal>VProbe</literal> VNF).</para>
            </listitem>
          </itemizedlist>

          <itemizedlist>
            <listitem>
              <para><emphasis role="bold">Cloud-init.</emphasis> Use generic
              VNF instance information in conjunction with the networking
              information objects from above and invoke the
              <literal>getCloudInitData()</literal> method on the
              <literal>VnfProcessorIf</literal> class (refer to Section 6.2
              for how this is done for the <literal>VProbe</literal> VNF). The
              cloud-init data is the script that will be executed by the VNF
              when it starts up for the first time only. It is responsible for
              setting up the initial system configuration to what is required
              by the VNF to run correctly, setting up the network interfaces,
              static IP addresses, etc.</para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Make the uCPE create the VNF with the specified image, flavor
          and cloud-init data via a NETCONF request and wait for the VNF to be
          created and booted up.</para>
        </listitem>

        <listitem>
          <para>If successful, optionally add the newly created VNF as a
          device in the uCPE Manager.</para>
        </listitem>
      </orderedlist>

      <para>Selecting the<literal> VNF -&gt; Events</literal> menu will show
      that the VNF was created and a connection was established:</para>

      <figure>
        <title>VNF Events menu</title>

        <mediaobject>
          <imageobject>
            <imagedata align="center" fileref="images/instantiate_a_vnf4.png"
                       scale="70" />
          </imageobject>
        </mediaobject>
      </figure>
    </section>
  </section>
</chapter>