Fix releng-tox Jenkins job
[samplevnf.git] / docs / testing / user / userguide / 03-installation.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International
2 .. License.
3 .. http://creativecommons.org/licenses/by/4.0
4 .. (c) OPNFV, Intel Corporation and others.
5
6 SampleVNF Installation
7 ======================
8 .. _RapidScripting: https://wiki.opnfv.org/display/SAM/Rapid+scripting
9 .. _XtestingDocumentation: https://xtesting.readthedocs.io/en/latest/
10
11 Abstract
12 --------
13 The installation procedures described below will result in the deployment of
14 all SW components needed to run the benchmarking procedures as defined in ETSI
15 GS NFV-TST009 on top of an NFVI instance that is the subject of this characterization.
16 Xtesting in combination with the rapid scripts and the PROX tool will be used to achieve this.
17
18 The steps needed to run the benchmarking are:
19   1) Identify a machine on which you will install the containers to support the testing
20   2) Clone the samplevnf project on that machine
21   3) Deploy the testing VMs (hosting PROX tool) (Or containers)
22   4) Deploy your own Xtesting toolchain.
23   5) Build the test container that will drive the TST009 testing
24   6) Publish your container on your local repository
25   7) Execute the testing
26
27 In this chapter, we will cover the first 6 installation steps.
28
29 Prerequisites
30 -------------
31
32 Supported Test setup
33 ^^^^^^^^^^^^^^^^^^^^
34 The device under test (DUT) is an NFVI instance on which we can deploy PROX instances.
35 A PROX instance is a machine that:
36
37   * has a management interface that can be reached from the test container
38   * has one or more data plane interfaces on a dataplane network.
39   * can be a container, a VM or a bare metal machine. We just need to be able to ssh into the
40     PROX machine from the test container.
41   * is optimized for data plane traffic.
42   * will measure the throughput that is offered through its dataplane interface(s)
43
44 There are no requirements on the NFVI instance itself. Of course, the measured throughput will
45 depend heavily on the NFVI characteristics.
46 In this release, we are supporting an automated deployment of the PROX instance on an NFVI that
47 provides the OpenStack Heat interface. You could also deploy the PROX instances using other
48 mechanisms. As long as you provide the necessary files describing these instances, the execution
49 of the test can also be done automatically (steps 4-7) and hence be executed on different DUTs,
50 e.g. VMWare, K8s, bare metal, ...
51
52 Below is the basic picture of the deployment needed for the testing.
53
54 .. image:: images/rapid.png
55    :width: 800px
56    :alt: supported topology
57
58 Different test scenario's can now be executed by deploying the PROX machines on different systems:
59   * The generator machine could be deployed on a well defined compute node, that has network access
60     to the other nodes through the TOR. The generated traffic is very similar to external traffic.
61   * The Generator and the Swap instance could be on the same compute node to test E-W traffic between
62     2 instance on the same compute node
63   * The Generator and the Swap instance could be on a different compute node
64
65 Many VMs can be deployed before the test is running: each test case can then use different pairs of
66 PROX instances to test all the above scenarios
67
68 Hardware & Software Ingredients
69 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
70
71 The only requirement is to have the PROX instances running. There are no stringent requirements to be able
72 to run the test. Of course, the dataplane performance will heavily depend on the underlying NFVI HW & SW
73
74 Installation Steps
75 ------------------
76
77 Step 1: Identify a machine on which you will install the containers
78 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
79 This machine will need enough resources to install the Xtesting framework and needs to be enabled
80 for containers.
81 From a network point of view, it will need to have access to the PROX instances: That means it will need
82 to be able to ssh into these machines and that the network also needs to allow for TCP port 8474 traffic.
83
84 When using the automation to create the VM through the Heat Stack API, this machine also needs to be able
85 to execute the OpenStack API. Alternatively, the creation of the VMs can be executed on another machine, but
86 this will involve some manual file copying.
87
88 Step 2: Clone the samplevnf project on that machine
89 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
90
91 .. code-block:: console
92
93      git clone https://git.opnfv.org/samplevnf
94
95 Go to the relevant directory in this repository: samplevnf/VNFs/DPPD-PROX/helper-scripts/rapid/
96
97 Step 3: Deploy the testing VMs
98 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
99 In this step, we will be deploying 2 or more instances that host the PROX tool. At the end of this step,
100 the instances will be running and an environment file (default name: rapid.env) will be created. This file
101 will have all information needed to run the actual test. You can do this step manually on all kinds of
102 platforms (OpenStack, VMWare, K8s, bare metal, ...), but the automation tools described in the rest of this
103 paragraph will using OpenStack Heat yaml files.
104 First, a PROX qcow2 image needs to be downloaded.
105
106 .. code-block:: console
107
108      wget http://artifacts.opnfv.org/samplevnf/jerma/prox_jerma.qcow2
109
110 This image can also be created mannualy by following instructions in RapidScripting_,
111 in the section "Creating an image" 
112 Now upload this image to Openstack:
113
114 .. code-block:: console
115
116      openstack image create  --disk-format qcow2 --container-format bare --file prox_jerma.qcow2 rapidVM
117
118 Now run createrapid.sh to create the stack. This process takes the config_file as input. Details can be found in
119 RapidScripting_, in the section "Deploying the VMs"
120
121 .. code-block:: console
122
123      ./createrapid.sh
124
125 At the end of this step, VMs should be running and the rapid.env and rapid_key.pem files should be available.
126
127 Step 4: Deploy your own Xtesting toolchain
128 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
129 Install Xtesting as described in XtestingDocumentation_.
130 First goto the xtesting directory in samplevnf/VNFs/DPPD-PROX/helper-scripts/rapid/xtesting (this was cloned
131 in step 2)
132
133 .. code-block:: console
134
135      virtualenv xtesting
136      . xtesting/bin/activate
137      pip install ansible
138      ansible-galaxy install collivier.xtesting
139      ansible-playbook site.yaml
140      deactivate
141      rm -r xtesting
142
143 Step 5: Build the test container that will drive the TST009 testing
144 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
145 Go to the directory samplevnf/VNFs/DPPD-PROX/helper-scripts/rapid/xtesting
146 While building this container, some files will be copied into the container image. Two of these files
147 are generated by Step 3: rapid.env and rapid_key.pem and reside in the samplevnf/VNFs/DPPD-PROX/helper-scripts/rapid/.
148 Please copy them into the xtesting directory.
149 The 3rd file that will be copied is testcases.yaml.
150
151 .. code-block:: console
152
153      docker build -t 127.0.0.1:5000/rapidxt .
154
155 Step 6: Publish your container on your local repository
156 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
157
158 .. code-block:: console
159
160      docker push  127.0.0.1:5000/rapidxt
161
162 You are now ready to execute the testing