1 .. This work is licensed under a Creative Commons Attribution 4.0 International
3 .. http://creativecommons.org/licenses/by/4.0
4 .. (c) OPNFV, National Center of Scientific Research "Demokritos" and others.
6 ============================
7 vFW - Installation Guide
8 ============================
14 After downloading (or doing a git clone) in a directory (samplevnf)
17 * DPDK 16.04: Downloaded and installed via vnf_build.sh or manually from [here](http://fast.dpdk.org/rel/dpdk-16.04.tar.xz)
18 Both the options are available as part of vnf_build.sh below.
23 ###### Environment variables
25 Apply all the additional patches in 'patches/dpdk_custom_patch/' and build dpdk
28 export RTE_SDK=<dpdk 16.04 directory>
29 export RTE_TARGET=x86_64-native-linuxapp-gcc
31 This is done by vnf_build.sh script.
35 $ ./tools/vnf_build.sh in samplevnf root folder
37 Follow the steps in the screen from option [1] --> [8] and select option [7]
39 It will automatically download DPDK 16.04 and any required patches and will setup
40 everything and build vFW VNFs.
42 Following are the options for setup:
46 ----------------------------------------------------------
47 Step 1: Environment setup.
48 ----------------------------------------------------------
49 [1] Check OS and network connection
51 ----------------------------------------------------------
52 Step 2: Download and Install
53 ----------------------------------------------------------
56 [4] Download DPDK zip (optional, use it when option 4 fails)
60 ----------------------------------------------------------
62 ----------------------------------------------------------
67 An vFW executable will be created at the following location
68 samplevnf/VNFs/vFW/build/vFW
73 1. Download DPDK 16.04 from dpdk.org
74 - http://dpdk.org/browse/dpdk/snapshot/dpdk-16.04.zip
75 2. unzip dpdk-16.04 and apply dpdk patch
77 - patch -p0 < VNF_CORE/patches/dpdk_custom_patch/rte_pipeline.patch
78 - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-management.patch
79 - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-Rx-hang-when-disable-LLDP.patch
80 - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-status-change-interrupt.patch
81 - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-VF-bonded-device-link-down.patch
83 - make config T=x86_64-native-linuxapp-gcc O=x86_64-native-linuxapp-gcc
84 - cd x86_64-native-linuxapp-gcc
87 - For 1G/2M hugepage sizes, for example 1G pages, the size must be specified
88 explicitly and can also be optionally set as the default hugepage size for
89 the system. For example, to reserve 8G of hugepage memory in the form of
90 eight 1G pages, the following options should be passed to the kernel:
91 * default_hugepagesz=1G hugepagesz=1G hugepages=8 hugepagesz=2M hugepages=2048
92 - Add this to Go to /etc/default/grub configuration file.
93 - Append "default_hugepagesz=1G hugepagesz=1G hugepages=8 hugepagesz=2M hugepages=2048"
94 to the GRUB_CMDLINE_LINUX entry.
95 3. Setup Environment Variable
96 - export RTE_SDK=<samplevnf>/dpdk-16.04
97 - export RTE_TARGET=x86_64-native-linuxapp-gcc
98 - export VNF_CORE=<samplevnf>
99 or using ./toot/setenv.sh
101 - cd <samplevnf>/VNFs/vFW
104 5. The vFW executable will be created at the following location
105 - <samplevnf>/VNFs/vFW/build/vFW
110 Setup Port to run VNF:
111 ----------------------
113 1. cd <samplevnf>/dpdk-16.04
114 3. ./tool/dpdk_nic_bind.py --status <--- List the network device
115 2. ./tool/dpdk_nic_bind.py -b igb_uio <PCI Port 0> <PCI Port 1>
116 .. _More details: http://dpdk.org/doc/guides-16.04/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules
118 Make the necessary changes to the config files to run the vFW VNF
119 eg: ports_mac_list = 00:00:00:30:21:01 00:00:00:30:21:00
123 Update the configuration according to system configuration.
126 ./vFW -p <port mask> -f <config> -s <script> - SW_LoadB
127 ./vFW -p <port mask> -f <config> -s <script> -hwlb <num_WT> - HW_LoadB
135 cd <samplevnf>/VNFs/vFW/
136 ./build/vFW -p 0x3 -f ./config/VFW_SWLB_IPV4_SinglePortPair_4Thread.cfg -s ./config/VFW_SWLB_IPV4_SinglePortPair_script.tc
141 cd <samplevnf>/VNFs/vFW/
142 ./build/vFW -p 0x3 -f ./config/VFW_HWLB_IPV4_SinglePortPair_4Thread.cfg -s ./config/VFW_HWLB_IPV4_SinglePortPair_script.cfg --hwlb 4
149 cd <samplevnf>/VNFs/vFW
150 ./build/vFW -p 0x3 -f ./config/VFW_SWLB_IPV6_SinglePortPair_4Thread.cfg -s ./config/VFW_SWLB_IPV6_SinglePortPair_script.tc
155 cd <samplevnf>/VNFs/vFW/
156 ./build/vFW -p 0x3 -f ./config/VFW_HWLB_IPV6_SinglePortPair_4Thread.cfg -s ./config/VFW_HWLB_IPV6_SinglePortPair_script.tc --hwlb 4
158 vFW execution on BM & SRIOV:
159 --------------------------------
161 To run the VNF, execute the following:
162 samplevnf/VNFs/vFW# ./build/vFW -p 0x3 -f ./config/VFW_SWLB_IPV4_SinglePortPair_4Thread.cfg -s ./config/VFW_SWLB_IPV4_SinglePortPair_script.tc
164 -p PORTMASK: Hexadecimal bitmask of ports to configure
165 -f CONFIG FILE: vFW configuration file
166 -s SCRIPT FILE: vFW script file
168 vFW execution on OVS:
169 -------------------------
171 To run the VNF, execute the following:
172 samplevnf/VNFs/vFW# ./build/vFW -p 0x3 -f ./config/VFW_SWLB_IPV4_SinglePortPair_4Thread.cfg -s ./config/VFW_SWLB_IPV4_SinglePortPair_script.tc --disable-hw-csum
174 -p PORTMASK: Hexadecimal bitmask of ports to configure
175 -f CONFIG FILE: vFW configuration file
176 -s SCRIPT FILE: vFW script file
177 --disable-hw-csum :Disable TCP/UDP hw checksum