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 ============================
13 After downloading (or doing a git clone) in a directory (samplevnf)
19 - DPDK supported versions ($DPDK_RTE_VER = 16.04, 16.11, 17.02 or 17.05). Downloaded and installed via vnf_build.sh or manually from [here] (http://fast.dpdk.org/rel/dpdk-$DPDK_RTE_VER.zip). Both the options are available as part of vnf_build.sh below.
27 Apply all the additional patches in 'patches/dpdk_custom_patch/' and build dpdk
28 (NOTE: required only for DPDK version 16.04).
32 export RTE_SDK=<dpdk directory>
34 export RTE_TARGET=x86_64-native-linuxapp-gcc
36 This is done by vnf_build.sh script.
40 $ ./tools/vnf_build.sh in samplevnf root folder
42 Follow the steps in the screen from option [1] --> [9] and select option [8]
44 It will automatically download selected DPDK version and any required patches
45 and will setup everything and build vFW VNFs.
47 Following are the options for setup:
51 ----------------------------------------------------------
52 Step 1: Environment setup.
53 ----------------------------------------------------------
54 [1] Check OS and network connection
55 [2] Select DPDK RTE version
57 ----------------------------------------------------------
58 Step 2: Download and Install
59 ----------------------------------------------------------
63 [6] Build and Install DPDK
66 ----------------------------------------------------------
68 ----------------------------------------------------------
69 [8] Build all VNFs (vACL, vCGNAPT, vFW, UDP_Replay)
73 An vFW executable will be created at the following location
74 samplevnf/VNFs/vFW/build/vFW
78 1. Download DPDK supported version from dpdk.org
80 - http://dpdk.org/browse/dpdk/snapshot/dpdk-$DPDK_RTE_VER.zip
81 2. unzip dpdk-$DPDK_RTE_VER.zip and apply dpdk patches only in case of 16.04
82 (Not required for other DPDK versions)
86 - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-management.patch
87 - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-Rx-hang-when-disable-LLDP.patch
88 - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-status-change-interrupt.patch
89 - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-VF-bonded-device-link-down.patch
90 - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/disable-acl-debug-logs.patch
91 - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/set-log-level-to-info.patch
94 - make config T=x86_64-native-linuxapp-gcc O=x86_64-native-linuxapp-gcc
95 - cd x86_64-native-linuxapp-gcc
99 - For 1G/2M hugepage sizes, for example 1G pages, the size must be specified
100 explicitly and can also be optionally set as the default hugepage
101 size for the system. For example, to reserve 8G of hugepage memory in
102 the form of eight 1G pages, the following options should be passed
104 * default_hugepagesz=1G hugepagesz=1G hugepages=8 hugepagesz=2M hugepages=2048
105 - Add this to Go to /etc/default/grub configuration file.
106 - Append "default_hugepagesz=1G hugepagesz=1G hugepages=8 hugepagesz=2M hugepages=2048"
107 to the GRUB_CMDLINE_LINUX entry.
109 3. Setup Environment Variable
111 - export RTE_SDK=<samplevnf>/dpdk
112 - export RTE_TARGET=x86_64-native-linuxapp-gcc
113 - export VNF_CORE=<samplevnf>
115 or using ./tools/setenv.sh
119 - cd <samplevnf>/VNFs/vFW
123 5. The vFW executable will be created at the following location
125 - <samplevnf>/VNFs/vFW/build/vFW
130 ----------------------
131 Setup Port to run VNF
132 ----------------------
133 The tools folder and utilities names are different across DPDK versions.
137 For DPDK versions 16.04
138 1. cd <samplevnf>/dpdk
139 2. ./tools/dpdk_nic_bind.py --status <--- List the network device
140 3. ./tools/dpdk_nic_bind.py -b igb_uio <PCI Port 0> <PCI Port 1>
142 .. _More details: http://dpdk.org/doc/guides-16.04/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules
144 For DPDK versions 16.11
145 1. cd <samplevnf>/dpdk
146 2. ./tools/dpdk-devbind.py --status <--- List the network device
147 3. ./tools/dpdk-devbind.py -b igb_uio <PCI Port 0> <PCI Port 1>
149 .. _More details: http://dpdk.org/doc/guides-16.11/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules
151 For DPDK versions 17.xx
152 1. cd <samplevnf>/dpdk
153 2. ./usertools/dpdk-devbind.py --status <--- List the network device
154 3. ./usertools/dpdk-devbind.py -b igb_uio <PCI Port 0> <PCI Port 1>
156 .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules
158 Make the necessary changes to the config files to run the vFW VNF
160 eg: ports_mac_list = 00:00:00:30:21:01 00:00:00:30:21:00
162 ----------------------
163 Firewall Run commands
164 ----------------------
165 Update the configuration according to system configuration.
169 ./vFW -p <port mask> -f <config> -s <script> - SW_LoadB
170 ./vFW -p <port mask> -f <config> -s <script> -hwlb <num_WT> - HW_LoadB
174 To run the vFW in Software LB or Hardware LB with IPv4 traffic
180 cd <samplevnf>/VNFs/vFW/
181 ./build/vFW -p 0x3 -f ./config/VFW_SWLB_IPV4_SinglePortPair_4Thread.cfg -s ./config/VFW_SWLB_IPV4_SinglePortPair_script.tc
186 cd <samplevnf>/VNFs/vFW/
187 ./build/vFW -p 0x3 -f ./config/VFW_HWLB_IPV4_SinglePortPair_4Thread.cfg -s ./config/VFW_HWLB_IPV4_SinglePortPair_script.cfg --hwlb 4
191 To run the vFW in Software LB or Hardware LB with IPvr64 traffic
197 cd <samplevnf>/VNFs/vFW
198 ./build/vFW -p 0x3 -f ./config/VFW_SWLB_IPV6_SinglePortPair_4Thread.cfg -s ./config/VFW_SWLB_IPV6_SinglePortPair_script.tc
203 cd <samplevnf>/VNFs/vFW/
204 ./build/vFW -p 0x3 -f ./config/VFW_HWLB_IPV6_SinglePortPair_4Thread.cfg -s ./config/VFW_HWLB_IPV6_SinglePortPair_script.tc --hwlb 4
206 vFW execution on BM & SRIOV
207 ---------------------------
208 To run the VNF, execute the following
212 samplevnf/VNFs/vFW# ./build/vFW -p 0x3 -f ./config/VFW_SWLB_IPV4_SinglePortPair_4Thread.cfg -s ./config/VFW_SWLB_IPV4_SinglePortPair_script.tc
214 -p PORTMASK: Hexadecimal bitmask of ports to configure
215 -f CONFIG FILE: vFW configuration file
216 -s SCRIPT FILE: vFW script file
223 To run the VNF, execute the following:
224 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
226 -p PORTMASK: Hexadecimal bitmask of ports to configure
227 -f CONFIG FILE: vFW configuration file
228 -s SCRIPT FILE: vFW script file
229 --disable-hw-csum :Disable TCP/UDP hw checksum