summaryrefslogtreecommitdiffstats
path: root/docs/testing/user/userguide/04-installation.rst
blob: 5b8b9322c86ef30e017d74cdaa6a91edfae76da9 (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
.. This work is licensed under a Creative Commons Attribution 4.0 International
.. License.
.. http://creativecommons.org/licenses/by/4.0
.. (c) OPNFV, Intel Corporation and others.

SampleVNF Installation
======================


Abstract
--------

This project provides a placeholder for various sample VNF
(Virtual Network Function (:term `VNF`)) development which includes example
reference architecture and optimization methods related to VNF/Network service
for high performance VNFs.
The sample VNFs are Open Source approximations* of Telco grade VNF’s using
optimized VNF + NFVi Infrastructure libraries, with Performance Characterization
of Sample† Traffic Flows.

::
  • * Not a commercial product. Encourage the community to contribute and close the feature gaps.
  • † No Vendor/Proprietary Workloads 

SampleVNF supports installation directly in Ubuntu. The installation procedure
are detailed in the sections below.

The steps needed to run SampleVNF are:
1. Install and Build SampleVNF.
2. deploy the VNF on the target and modify the config based on the
   Network under test
3. Run the traffic generator to generate the traffic.

Prerequisites
-------------

Supported Test setup:
--------------------
The device under test (DUT) consists of a system following;
  * A single or dual processor and PCH chip, except for System on Chip (SoC) cases
  * DRAM memory size and frequency (normally single DIMM per channel)
  * Specific Intel Network Interface Cards (NICs)
  * BIOS settings noting those that updated from the basic settings
  * DPDK build configuration settings, and commands used for tests
Connected to the DUT is an IXIA* or Software Traffic generator like pktgen or TRex,
simulation platform to generate packet traffic to the DUT ports and
determine the throughput/latency at the tester side.

Below are the supported/tested (:term `VNF`) deployment type.
.. image:: images/deploy_type.png
   :width: 800px
   :alt: SampleVNF supported topology

Hardware & Software Ingredients
-------------------------------
.. code-block:: console
   +-----------+------------------+
   | Item      | Description      |
   +-----------+------------------+
   | Memory    | Min 20GB         |
   +-----------+------------------+
   | NICs      | 2 x 10G          |
   +-----------+------------------+
   | OS        | Ubuntu 16.04 LTS |
   +-----------+------------------+
   | kernel    |  4.4.0-34-generic|
   +-----------+------------------+
   |DPD        | 17.02            |
   +-----------+------------------+

   Boot and BIOS settings
   +------------------+---------------------------------------------------+
   | Boot settings    | default_hugepagesz=1G hugepagesz=1G hugepages=16  |
   |                  | hugepagesz=2M hugepages=2048 isolcpus=1-11,22-33  |
   |                  | nohz_full=1-11,22-33 rcu_nocbs=1-11,22-33         |
   |                  | Note: nohz_full and rcu_nocbs is to disable Linux*|
   |                  | kernel interrupts, and it’s import                |
   +------------------+---------------------------------------------------+
   |BIOS              | CPU Power and Performance Policy <Performance>    |
   |                  | CPU C-state Disabled                              |
   |                  | CPU P-state Disabled                              |
   |                  | Enhanced Intel® Speedstep® Tech Disabled          |
   |                  | Hyper-Threading Technology (If supported) Enable  |
   |                  | Virtualization Techology Enable                   |
   |                  | Coherency Enable                                  |
   |                  | Turbo Boost Disabled                              |
   +------------------+---------------------------------------------------+

Network Topology for testing VNFs
---------------------------------
The ethernet cables should be connected between traffic generator and the VNF server (BM,
SRIOV or OVS) setup based on the test profile.

The connectivity could be
1. Single port pair : One pair ports used for traffic 
   ::
     e.g. Single port pair link0 and link1 of VNF are used
     TG:port 0 ------ VNF:Port 0
     TG:port 1 ------ VNF:Port 1

2. Multi port pair :  More than one pair of traffic
   ::
     e.g. Two port pair link 0, link1, link2 and link3 of VNF are used
     TG:port 0 ------ VNF:Port 0
     TG:port 1 ------ VNF:Port 1
     TG:port 2 ------ VNF:Port 2 
     TG:port 3 ------ VNF:Port 3

 * Bare-Metal
   Refer: http://fast.dpdk.org/doc/pdf-guides/ to setup the DUT for VNF to run 

 * Standalone Virtualization - PHY-VM-PHY
   * SRIOV
     Refer below link to setup sriov
     https://software.intel.com/en-us/articles/using-sr-iov-to-share-an-ethernet-port-among-multiple-vms

   * OVS/OVS/DPDK
     Refer below link to setup ovs/ovs-dpdk
     http://docs.openvswitch.org/en/latest/intro/install/general/
     http://docs.openvswitch.org/en/latest/intro/install/dpdk/

 * Openstack
     Use OPNFV installer to deploy the openstack.
    

Build VNFs on the DUT:
----------------------
 * Clone sampleVNF project repository  - git clone https://git.opnfv.org/samplevnf
 Auto Build
 ----------
   * Interactive options: 
         ::
           ./tools/vnf_build.sh -i
           Follow the steps in the screen from option [1] –> [9] and
           select option [8] to build the vnfs.
           It will automatically download selected DPDK version and any
           required patches and will setup everything and build VNFs.

           Following are the options for setup:
           ----------------------------------------------------------
            Step 1: Environment setup.
            ----------------------------------------------------------
            [1] Check OS and network connection
            [2] Select DPDK RTE version

          ----------------------------------------------------------
           Step 2: Download and Install
           ----------------------------------------------------------
           [3] Agree to download
           [4] Download packages
           [5] Download DPDK zip
           [6] Build and Install DPDK
           [7] Setup hugepages

           ----------------------------------------------------------
            Step 3: Build VNFs
            ----------------------------------------------------------
            [8] Build all VNFs (vACL, vCGNAPT, vFW, UDP_Replay, DPPD-PROX)

            [9] Exit Script
    * non-Interactive options:
          ::
            ./tools/vnf_build.sh -s -d=<dpdk version eg 17.02>
Manual Build
------------
   ::
      1.Download DPDK supported version from dpdk.org
        http://dpdk.org/browse/dpdk/snapshot/dpdk-$DPDK_RTE_VER.zip
        unzip dpdk-$DPDK_RTE_VER.zip and apply dpdk patches only in case of 16.04 (Not required for other DPDK versions)
        cd dpdk
        make config T=x86_64-native-linuxapp-gcc O=x86_64-native-linuxapp-gcc
        cd x86_64-native-linuxapp-gcc
        make -j
      2.Setup huge pages
        For 1G/2M hugepage sizes, for example 1G pages, the size must be specified
        explicitly and can also be optionally set as the default hugepage size
        for the system. For example, to reserve 8G of hugepage memory in the form
        of eight 1G pages, the following options should be passed to the
        kernel: * default_hugepagesz=1G hugepagesz=1G hugepages=8 hugepagesz=2M hugepages=2048
      3.Add this to Go to /etc/default/grub configuration file.
        Append “default_hugepagesz=1G hugepagesz=1G hugepages=8 hugepagesz=2M hugepages=2048”to the GRUB_CMDLINE_LINUX entry.
      4.Setup Environment Variable
        export RTE_SDK=<samplevnf>/dpdk
        export RTE_TARGET=x86_64-native-linuxapp-gcc
        export VNF_CORE=<samplevnf>
        or using ./tools/setenv.sh
      5.Build vACL VNFs
        cd <samplevnf>/VNFs/vACL
        make clean
        make
        The vACL executable will be created at the following location
        <samplevnf>/VNFs/vACL/build/vACL

Standalone virtualization/Openstack:
 ::
  * Build image from yardstick
    git clone https://git.opnfv.org/yardstick
  * cd yardstick and run
    ./tools/yardstick-img-modify tools/ubuntu-server-cloudimg-samplevnf-modify.sh

To run VNFs. Please refer chapter `05-How_to_run_SampleVNFs.rst`