diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/book-enea-nfv-access-example-usecases/doc/clav_vnf_examples.xml | 374 |
1 files changed, 206 insertions, 168 deletions
diff --git a/doc/book-enea-nfv-access-example-usecases/doc/clav_vnf_examples.xml b/doc/book-enea-nfv-access-example-usecases/doc/clav_vnf_examples.xml index f8ac57d..a4f011f 100644 --- a/doc/book-enea-nfv-access-example-usecases/doc/clav_vnf_examples.xml +++ b/doc/book-enea-nfv-access-example-usecases/doc/clav_vnf_examples.xml | |||
@@ -8,34 +8,44 @@ | |||
8 | <section id="prere_clav_vnf"> | 8 | <section id="prere_clav_vnf"> |
9 | <title>Prerequisites</title> | 9 | <title>Prerequisites</title> |
10 | 10 | ||
11 | <para>The following files are needed for this example use case:</para> | 11 | <para>The following files provided with your Enea NFV Access release are |
12 | needed for this example use case: <remark>FIXME - These filenames may need | ||
13 | to be updated</remark></para> | ||
12 | 14 | ||
13 | <itemizedlist> | 15 | <itemizedlist> |
14 | <listitem> | 16 | <listitem> |
15 | <para><literal>enea-nfv-access-vnf-qemux86-64.qcow2</literal>. This | 17 | <para><literal>enea-nfv-access-vnf-qemux86-64.wic.qcow2</literal></para> |
16 | image is provided with your release.</para> | ||
17 | </listitem> | 18 | </listitem> |
18 | 19 | ||
19 | <listitem> | 20 | <listitem> |
20 | <para><literal>clavister-cos-stream-<version>-virtual-x64-generic.qcow2</literal>. | 21 | <para><literal>clavister-cos-stream-<version>-virtual-x64-generic.qcow2</literal></para> |
21 | This image is provided with your release.</para> | ||
22 | </listitem> | 22 | </listitem> |
23 | 23 | ||
24 | <listitem> | 24 | <listitem> |
25 | <para>License for the Clavister VNF (needed as Cloud-Init content in | 25 | <para><literal>clavister_cloudinit.cfg</literal></para> |
26 | the Cloud-Init tab). This file is available through the VNF | 26 | </listitem> |
27 | provider.</para> | 27 | |
28 | <listitem> | ||
29 | <para><literal>enea-vnf-iperf-client.cfg</literal></para> | ||
30 | </listitem> | ||
31 | |||
32 | <listitem> | ||
33 | <para><literal>enea-vnf-iperf-server.cfg</literal></para> | ||
28 | </listitem> | 34 | </listitem> |
29 | </itemizedlist> | 35 | </itemizedlist> |
30 | </section> | 36 | </section> |
31 | 37 | ||
32 | <section id="clav_vnf"> | 38 | <section id="clav_vnf"> |
33 | <title>Clavister VNF using Open vSwitch Bridge</title> | 39 | <title>Clavister VNF using an Open vSwitch Bridge</title> |
34 | 40 | ||
35 | <para>In this use-case, uCPE device 1 will run the Clavister VNF and an | 41 | <para>In this use-case, uCPE device 1 runs the Clavister VNF, while uCPE |
36 | Open vSwitch bridge, while uCPE device 2 will run two iPerf VNFs.</para> | 42 | device 2 runs two Enea NFV Access VNFs with iPerf client and server |
43 | applications. The uCPE devices are connected using OVS-DPDK bridges. | ||
44 | </para> | ||
37 | 45 | ||
38 | <figure> | 46 | <remark>FIXME: New image needed</remark> |
47 | |||
48 | <figure condition="hidden"> | ||
39 | <title>Clavister VNF using Open vSwitch Bridge Overview</title> | 49 | <title>Clavister VNF using Open vSwitch Bridge Overview</title> |
40 | 50 | ||
41 | <mediaobject> | 51 | <mediaobject> |
@@ -49,38 +59,21 @@ | |||
49 | <section id="clav_vnf_setup_1"> | 59 | <section id="clav_vnf_setup_1"> |
50 | <title>Use-case Setup</title> | 60 | <title>Use-case Setup</title> |
51 | 61 | ||
52 | <para><emphasis role="bold">Configuring Network Interfaces on uCPE | 62 | <para><emphasis role="bold">Network Configuration:</emphasis></para> |
53 | devices:</emphasis></para> | ||
54 | 63 | ||
55 | <orderedlist> | 64 | <orderedlist> |
56 | <listitem> | 65 | <listitem> |
57 | <para>From the uCPE Manager select uCPE device 1, then access | 66 | <para>Select uCPE device 1, access <literal>Configuration</literal>, add the network |
58 | <literal>Configuration</literal> -> | 67 | interface that will be used and configure it for DPDK.</para> |
59 | <literal>OpenVSwitch</literal> -> <literal>Host | ||
60 | Interfaces</literal> -> <literal>Add.</literal></para> | ||
61 | </listitem> | ||
62 | |||
63 | <listitem> | ||
64 | <para>Select the network interface that will be used to connect to | ||
65 | uCPE device 2. Configure it for DPDK, and click | ||
66 | <literal>Create</literal> to send the configuration to that uCPE | ||
67 | device.</para> | ||
68 | </listitem> | ||
69 | |||
70 | <listitem> | ||
71 | <para>Create an Open vSwitch bridge (<literal>ovsbr0</literal>) with | ||
72 | one DPDK interface, by selecting the <literal>Add</literal> button | ||
73 | from the <literal>Bridges</literal> tab.</para> | ||
74 | </listitem> | 68 | </listitem> |
75 | 69 | ||
76 | <listitem> | 70 | <listitem> |
77 | <para>Once the bridge creation popup appears, fill-in the required | 71 | <para>Create an OVS bridge and attach the DPDK network |
78 | fields and add the physical interface.</para> | 72 | interface.</para> |
79 | </listitem> | 73 | </listitem> |
80 | 74 | ||
81 | <listitem> | 75 | <listitem> |
82 | <para>Repeat the steps above on uCPE device 2, using one DPDK | 76 | <para>Repeat the steps above for uCPE device 2.</para> |
83 | interface and creating another OVS bridge.</para> | ||
84 | </listitem> | 77 | </listitem> |
85 | </orderedlist> | 78 | </orderedlist> |
86 | 79 | ||
@@ -88,103 +81,200 @@ | |||
88 | 81 | ||
89 | <orderedlist> | 82 | <orderedlist> |
90 | <listitem> | 83 | <listitem> |
91 | <para>Select <literal>VNF</literal> -> | 84 | <para>Onboard the Clavister VNF by filling the required fields with the following |
92 | <literal>Descriptor</literal> -> | 85 | values:</para> |
93 | <literal>On-board</literal>.</para> | ||
94 | </listitem> | ||
95 | |||
96 | <listitem> | ||
97 | <para>Select the <literal>VM Image</literal> radio button.</para> | ||
98 | </listitem> | ||
99 | |||
100 | <listitem> | ||
101 | <para>Provide the path to the qcow image by selecting | ||
102 | <literal>Browse</literal> from <literal>VM image file</literal> | ||
103 | option.</para> | ||
104 | </listitem> | ||
105 | |||
106 | <listitem> | ||
107 | <para>Fill the required fields below and press | ||
108 | <literal>Onboard</literal>:</para> | ||
109 | 86 | ||
110 | <itemizedlist spacing="compact"> | 87 | <itemizedlist spacing="compact"> |
111 | <listitem> | 88 | <listitem> |
112 | <para><emphasis role="bold">Memory in MB</emphasis>: 1024</para> | 89 | <para><emphasis role="bold">VM Image File</emphasis>: Provide |
90 | the path to the Clavister VNF qcow2 image</para> | ||
113 | </listitem> | 91 | </listitem> |
114 | 92 | ||
115 | <listitem> | 93 | <listitem> |
116 | <para><emphasis role="bold">Nr. of CPUs</emphasis>: 1</para> | 94 | <para><emphasis role="bold">Memory in MB</emphasis>: 1024</para> |
117 | </listitem> | 95 | </listitem> |
118 | 96 | ||
119 | <listitem> | 97 | <listitem> |
120 | <para><emphasis role="bold">Storage in GB</emphasis>: 10</para> | 98 | <para><emphasis role="bold">Num of CPUs</emphasis>: 4</para> |
121 | </listitem> | 99 | </listitem> |
122 | </itemizedlist> | ||
123 | </listitem> | ||
124 | </orderedlist> | ||
125 | |||
126 | <para><emphasis role="bold">Instantiating the VNFs:</emphasis></para> | ||
127 | |||
128 | <itemizedlist> | ||
129 | <listitem> | ||
130 | <para><emphasis role="bold">A) Instantiate the Clavister VNF on uCPE | ||
131 | device 1:</emphasis></para> | ||
132 | 100 | ||
133 | <orderedlist> | ||
134 | <listitem> | 101 | <listitem> |
135 | <para>Select uCPE device 1, then from the top toolbar: | 102 | <para><emphasis role="bold">Storage in GB</emphasis>: 20</para> |
136 | <literal>VNF</literal> -> <literal>Instances</literal> -> | ||
137 | <literal>Add</literal>.</para> | ||
138 | </listitem> | 103 | </listitem> |
139 | 104 | ||
140 | <listitem> | 105 | <listitem> |
141 | <para>Fill in the required information about the Clavister VNF, | 106 | <para><emphasis role="bold">Interfaces</emphasis>: Add 2 |
142 | (the default network configuration can be used) and select | 107 | interfaces</para> |
143 | <literal>Create</literal>.</para> | ||
144 | </listitem> | 108 | </listitem> |
145 | </orderedlist> | ||
146 | </listitem> | ||
147 | 109 | ||
148 | <listitem> | ||
149 | <para><emphasis role="bold">B) Instantiate two Enea VNFs (one as the | ||
150 | client and one as the server) on uCPE device 2:</emphasis></para> | ||
151 | |||
152 | <orderedlist> | ||
153 | <listitem> | 110 | <listitem> |
154 | <para>Select uCPE device 2, then from the top toolbar: | 111 | <para><emphasis role="bold">Cloud-init Datasource</emphasis>: |
155 | <literal>VNF</literal> -> <literal>Instances</literal> -> | 112 | ConfigDrive</para> |
156 | <literal>Add</literal>.</para> | ||
157 | </listitem> | 113 | </listitem> |
158 | 114 | ||
159 | <listitem> | 115 | <listitem> |
160 | <para>In the new <literal>VNF Instance</literal> window, select | 116 | <para><emphasis role="bold">Cloud-init Disk Type</emphasis>: |
161 | the Enea VNF from the dropdown menu, configure it to act as a | 117 | disk</para> |
162 | server by unchecking the <literal>Client mode IPerf</literal> | ||
163 | box, and then click <literal>Create</literal>.</para> | ||
164 | </listitem> | 118 | </listitem> |
119 | </itemizedlist> | ||
120 | </listitem> | ||
165 | 121 | ||
166 | <listitem> | 122 | <listitem> |
167 | <para>Select <literal>Add</literal> once more, enable the | 123 | <para>Onboard the Enea VNF by filling the required fields with the following values: |
168 | <literal>Client mode IPerf</literal> checkbox this time, and | 124 | <itemizedlist spacing="compact"> |
169 | click <literal>Create</literal> to instantiate the second | 125 | <listitem> |
170 | <literal>iPerf VNF</literal> as a client, and to run it in | 126 | <para><emphasis role="bold">VM Image File</emphasis>: Provide |
171 | client mode.</para> | 127 | the path to the Enea NFV Access VNF qcow2 image</para> |
172 | </listitem> | 128 | </listitem> |
173 | </orderedlist> | 129 | |
130 | <listitem> | ||
131 | <para><emphasis role="bold">Memory in MB</emphasis>: | ||
132 | 2048</para> | ||
133 | </listitem> | ||
134 | |||
135 | <listitem> | ||
136 | <para><emphasis role="bold">Num of CPUs</emphasis>: 2</para> | ||
137 | </listitem> | ||
138 | |||
139 | <listitem> | ||
140 | <para><emphasis role="bold">Storage in GB</emphasis>: | ||
141 | 10</para> | ||
142 | </listitem> | ||
143 | |||
144 | <listitem> | ||
145 | <para><emphasis role="bold">Interfaces</emphasis>: Add 1 | ||
146 | interface</para> | ||
147 | </listitem> | ||
148 | |||
149 | <listitem> | ||
150 | <para><emphasis role="bold">Cloud-init Datasource</emphasis>: | ||
151 | NoCloud</para> | ||
152 | </listitem> | ||
153 | |||
154 | <listitem> | ||
155 | <para><emphasis role="bold">Cloud-init Disk Type</emphasis>: | ||
156 | disk</para> | ||
157 | </listitem> | ||
158 | </itemizedlist></para> | ||
174 | </listitem> | 159 | </listitem> |
175 | </itemizedlist> | 160 | </orderedlist> |
161 | |||
162 | <para><emphasis role="bold">Instantiating the VNFs:</emphasis></para> | ||
163 | |||
164 | <para><orderedlist> | ||
165 | <listitem> | ||
166 | <para>Instantiate the Clavister VNF on uCPE device 1 using the | ||
167 | required fields below:</para> | ||
168 | |||
169 | <itemizedlist spacing="compact"> | ||
170 | <listitem> | ||
171 | <para><emphasis role="bold">Name</emphasis>: clavister</para> | ||
172 | </listitem> | ||
173 | |||
174 | <listitem> | ||
175 | <para><emphasis role="bold">VNF Type</emphasis>: Select | ||
176 | Clavister VNF</para> | ||
177 | </listitem> | ||
178 | |||
179 | <listitem> | ||
180 | <para><emphasis role="bold">uCPE Device</emphasis>: Select | ||
181 | uCPE device 1</para> | ||
182 | </listitem> | ||
183 | |||
184 | <listitem> | ||
185 | <para><emphasis role="bold">Cloud Init File</emphasis>: | ||
186 | Provide the path to the Clavister cloud-init file.</para> | ||
187 | </listitem> | ||
188 | |||
189 | <listitem> | ||
190 | <para><emphasis role="bold">Interfaces</emphasis>: Set the interface type | ||
191 | to <literal>DPDK</literal> and select the OVS bridge created | ||
192 | above, for both interfaces.</para> | ||
193 | </listitem> | ||
194 | </itemizedlist> | ||
195 | </listitem> | ||
196 | |||
197 | <listitem> | ||
198 | <para>Instantiate the Enea iPerf server VNF on uCPE device 2 by filling | ||
199 | the required fields with the values below:</para> | ||
200 | |||
201 | <itemizedlist spacing="compact"> | ||
202 | <listitem> | ||
203 | <para><emphasis role="bold">Name</emphasis>: | ||
204 | iperf_server</para> | ||
205 | </listitem> | ||
206 | |||
207 | <listitem> | ||
208 | <para><emphasis role="bold">VNF Type</emphasis>: Select Enea | ||
209 | NFV Access VNF</para> | ||
210 | </listitem> | ||
211 | |||
212 | <listitem> | ||
213 | <para><emphasis role="bold">uCPE Device</emphasis>: Select | ||
214 | uCPE device 2</para> | ||
215 | </listitem> | ||
216 | |||
217 | <listitem> | ||
218 | <para><emphasis role="bold">Cloud Init File</emphasis>: | ||
219 | Provide the path to the Enea VNF IPerf server cloud-init | ||
220 | file.</para> | ||
221 | </listitem> | ||
222 | |||
223 | <listitem> | ||
224 | <para><emphasis role="bold">Interfaces</emphasis>: Set the interface type to | ||
225 | <literal>DPDK</literal> and select the OVS bridge created above.</para> | ||
226 | </listitem> | ||
227 | </itemizedlist> | ||
228 | </listitem> | ||
229 | |||
230 | <listitem> | ||
231 | <para>Instantiate the Enea iPerf client VNF on uCPE device 2 by | ||
232 | filling the required fields with the values below:</para> | ||
233 | |||
234 | <itemizedlist spacing="compact"> | ||
235 | <listitem> | ||
236 | <para><emphasis role="bold">Name</emphasis>: | ||
237 | iperf_client</para> | ||
238 | </listitem> | ||
239 | |||
240 | <listitem> | ||
241 | <para><emphasis role="bold">VNF Type</emphasis>: Select Enea | ||
242 | NFV Access VNF</para> | ||
243 | </listitem> | ||
244 | |||
245 | <listitem> | ||
246 | <para><emphasis role="bold">uCPE Device</emphasis>: Select | ||
247 | uCPE device 2</para> | ||
248 | </listitem> | ||
249 | |||
250 | <listitem> | ||
251 | <para><emphasis role="bold">Cloud Init File</emphasis>: | ||
252 | Provide the path to the Enea VNF iPerf client cloud-init | ||
253 | file.</para> | ||
254 | </listitem> | ||
255 | |||
256 | <listitem> | ||
257 | <para><emphasis role="bold">Interfaces</emphasis>: Set the interface | ||
258 | type to <literal>DPDK</literal> and select the OVS bridge created above.</para> | ||
259 | </listitem> | ||
260 | </itemizedlist> | ||
261 | </listitem> | ||
262 | </orderedlist></para> | ||
176 | </section> | 263 | </section> |
177 | 264 | ||
178 | <section id="test_clav_uc_1"> | 265 | <section id="test_clav_uc_1"> |
179 | <title>Testing the Use-case</title> | 266 | <title>Testing the Use-case</title> |
180 | 267 | ||
181 | <para>In order to check that traffic is forwarded between the two VNFs, | 268 | <para>SSH to uCPE device 2 (Username: root) and connect to the IPerf |
182 | connect to the iPerf VNF client console: <literal>SSH</literal> -> | 269 | client VNF console:</para> |
183 | <literal>user</literal> (root) -> <literal>Connect</literal> and run | ||
184 | the following:</para> | ||
185 | 270 | ||
186 | <programlisting>virsh list | 271 | <programlisting>virsh list |
187 | virsh console | 272 | virsh console <id of iperf client></programlisting> |
273 | |||
274 | <para>In order to check that traffic is forwarded between the VNFs, run | ||
275 | the following:</para> | ||
276 | |||
277 | <programlisting># qemux86-64 login: root | ||
188 | root@qemux86-64:~# iperf3 -c 192.168.10.10</programlisting> | 278 | root@qemux86-64:~# iperf3 -c 192.168.10.10</programlisting> |
189 | </section> | 279 | </section> |
190 | </section> | 280 | </section> |
@@ -192,11 +282,13 @@ root@qemux86-64:~# iperf3 -c 192.168.10.10</programlisting> | |||
192 | <section id="clav_example_sriov"> | 282 | <section id="clav_example_sriov"> |
193 | <title>Clavister VNF using SR-IOV</title> | 283 | <title>Clavister VNF using SR-IOV</title> |
194 | 284 | ||
195 | <para>In this use-case, uCPE device 1 will run the iPerf server and iPerf | 285 | <para>The following use-case is essentially the same as the one detailed above, |
196 | client VNFs using SR-IOV, while uCPE device 2 will run the Clavister VNF | 286 | in this scenario however, the uCPE devices are connected using SR-IOV, |
197 | using SR-IOV with two virtual functions (vf1 and vf2):</para> | 287 | with two virtual functions.</para> |
288 | |||
289 | <remark>FIXME: New image needed</remark> | ||
198 | 290 | ||
199 | <figure> | 291 | <figure condition="hidden"> |
200 | <title>Clavister VNF using SR-IOV Overview</title> | 292 | <title>Clavister VNF using SR-IOV Overview</title> |
201 | 293 | ||
202 | <mediaobject> | 294 | <mediaobject> |
@@ -210,88 +302,34 @@ root@qemux86-64:~# iperf3 -c 192.168.10.10</programlisting> | |||
210 | <section id="clav_vnf_setup_2"> | 302 | <section id="clav_vnf_setup_2"> |
211 | <title>Use-case Setup</title> | 303 | <title>Use-case Setup</title> |
212 | 304 | ||
213 | <para><emphasis role="bold">Configuring Network Interfaces on uCPE | 305 | <para><emphasis role="bold">Network Configuration:</emphasis></para> |
214 | devices:</emphasis></para> | ||
215 | 306 | ||
216 | <orderedlist> | 307 | <orderedlist> |
217 | <listitem> | 308 | <listitem> |
218 | <para>On uCPE device 2, create an SR-IOV configuration with 2 | 309 | <para>Select uCPE device 1, access <literal>Configuration</literal>, |
219 | virtual functions by selecting <literal>Configuration</literal> | 310 | add the network interface that will be used and configure it for SR-IOV. |
220 | -> <literal>OpenVSwitch</literal> -> <literal>Host | 311 | For <literal>sriov-mode</literal> select "adapter-pool" and "sriov-num-vfs:2".</para> |
221 | Interfaces</literal> -> <literal>Add</literal>.</para> | ||
222 | |||
223 | <figure condition="hidden"> | ||
224 | <title>SR-IOV configuration with 2 virtual functions</title> | ||
225 | |||
226 | <mediaobject> | ||
227 | <imageobject> | ||
228 | <imagedata align="center" | ||
229 | fileref="images/sriov_configuration.png" scale="80" /> | ||
230 | </imageobject> | ||
231 | </mediaobject> | ||
232 | </figure> | ||
233 | </listitem> | 312 | </listitem> |
234 | 313 | ||
235 | <listitem> | 314 | <listitem> |
236 | <para>On uCPE device 1, create an SR-IOV interface as done in step | 315 | <para>Repeat the step above for uCPE device 2.</para> |
237 | 1.</para> | ||
238 | </listitem> | ||
239 | |||
240 | <listitem> | ||
241 | <para>Create the iPerf server on uCPE device 1 and select | ||
242 | <literal>SrIovAdapterPool</literal> as an Interface type.</para> | ||
243 | </listitem> | ||
244 | |||
245 | <listitem> | ||
246 | <para>Create the iPerf client on uCPE device 1. Select | ||
247 | <literal>SrIovAdapterPool</literal> as an Interface type and tick | ||
248 | the <literal>Client mode IPerf</literal> checkbox.</para> | ||
249 | </listitem> | 316 | </listitem> |
250 | </orderedlist> | 317 | </orderedlist> |
251 | 318 | ||
252 | <para><emphasis role="bold">Onboarding the VNFs:</emphasis></para> | 319 | <para><emphasis role="bold">Onboarding the VNFs:</emphasis></para> |
253 | 320 | ||
254 | <para>????</para> | 321 | <para>See the onboarding parameters in the use-case above.</para> |
255 | 322 | ||
256 | <para><emphasis role="bold">Instantiating the VNFs:</emphasis></para> | 323 | <para><emphasis role="bold">Instantiating the VNFs:</emphasis></para> |
257 | 324 | ||
258 | <orderedlist> | 325 | <para>Use the same instantiation parameters as above, but select |
259 | <listitem> | 326 | interface type <literal>SrIovAdapterPool</literal> instead.</para> |
260 | <para>Instantiate the Clavister VNF on uCPE device 2: | ||
261 | <literal>VNF</literal> -> <literal>Instances</literal> -> | ||
262 | <literal>Add</literal>.</para> | ||
263 | </listitem> | ||
264 | |||
265 | <listitem> | ||
266 | <para>Select <literal>SrIovAdapterPool</literal> as an Interface | ||
267 | type for both Interface 1 type and 2 type, before clicking | ||
268 | <literal>Create</literal>.</para> | ||
269 | |||
270 | <figure condition="hidden"> | ||
271 | <title>Instantiating the Clavister VNF on uCPE device 2</title> | ||
272 | |||
273 | <mediaobject> | ||
274 | <imageobject> | ||
275 | <imagedata align="center" fileref="images/srlov_adap_pool.png" | ||
276 | scale="70" /> | ||
277 | </imageobject> | ||
278 | </mediaobject> | ||
279 | </figure> | ||
280 | </listitem> | ||
281 | </orderedlist> | ||
282 | </section> | 327 | </section> |
283 | 328 | ||
284 | <section id="test_clav_uc_2"> | 329 | <section id="test_clav_uc_2"> |
285 | <title>Testing the Use-case</title> | 330 | <title>Testing the Use-case</title> |
286 | 331 | ||
287 | <para>In order to check that traffic is forwarded between the VNFs, | 332 | <para>Use the same test instructions as detailed in the use-case above.</para> |
288 | connect to the iPerf VNF client console by using: <literal>SSH</literal> | ||
289 | -> <literal>user</literal> (root) -><literal>Connect</literal> and | ||
290 | run the following commands:</para> | ||
291 | |||
292 | <programlisting>virsh list | ||
293 | virsh console | ||
294 | root@qemux86-64:~# iperf3 -c 192.168.10.10</programlisting> | ||
295 | </section> | 333 | </section> |
296 | </section> | 334 | </section> |
297 | </chapter> \ No newline at end of file | 335 | </chapter> \ No newline at end of file |