summaryrefslogtreecommitdiffstats
path: root/docs/vACL/INSTALL.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/vACL/INSTALL.rst')
-rw-r--r--docs/vACL/INSTALL.rst205
1 files changed, 131 insertions, 74 deletions
diff --git a/docs/vACL/INSTALL.rst b/docs/vACL/INSTALL.rst
index e00c6b24..7f21fc1f 100644
--- a/docs/vACL/INSTALL.rst
+++ b/docs/vACL/INSTALL.rst
@@ -12,165 +12,222 @@ vACL Compilation
After downloading (or doing a git clone) in a directory (samplevnf)
-###### Dependencies
-* DPDK 16.04: Downloaded and installed via vnf_build.sh or manually from [here](http://fast.dpdk.org/rel/dpdk-16.04.tar.xz)
-Both the options are available as part of vnf_build.sh below.
-* libpcap-dev
-* libzmq
-* libcurl
-
-###### Environment variables
-
+-------------
+Dependencies
+-------------
+
+- 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/)
+- libpcap-dev
+- libzmq
+- libcurl
+
+---------------------
+Environment variables
+---------------------
Apply all the additional patches in 'patches/dpdk_custom_patch/' and build dpdk
::
- export RTE_SDK=<dpdk 16.04 directory>
+
+ export RTE_SDK=<dpdk directory>
export RTE_TARGET=x86_64-native-linuxapp-gcc
This is done by vnf_build.sh script.
Auto Build:
-==========
+===========
$ ./tools/vnf_build.sh in samplevnf root folder
-Follow the steps in the screen from option [1] --> [8] and select option [7]
+Follow the steps in the screen from option [1] --> [9] and select option [8]
to build the vnfs.
-It will automatically download DPDK 16.04 and any required patches and will setup
-everything and build vACL VNFs.
+It will automatically download selected DPDK version and any required patches
+and will setup everything and build vACL VNFs.
Following are the options for setup:
::
- ----------------------------------------------------------
- Step 1: Environment setup.
- ----------------------------------------------------------
- [1] Check OS and network connection
+ ----------------------------------------------------------
+ Step 1: Environment setup.
+ ----------------------------------------------------------
+ [1] Check OS and network connection
+ [2] Select DPDK RTE version
- ----------------------------------------------------------
- Step 2: Download and Install
- ----------------------------------------------------------
- [2] Agree to download
- [3] Download packages
- [4] Download DPDK zip (optional, use it when option 4 fails)
- [5] Install DPDK
- [6] Setup hugepages
+ ----------------------------------------------------------
+ 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 VNF
- ----------------------------------------------------------
- [7] Build VNF
+ ----------------------------------------------------------
+ Step 3: Build VNFs
+ ----------------------------------------------------------
+ [8] Build all VNFs (vACL, vCGNAPT, vFW, UDP_Replay)
- [8] Exit Script
+ [9] Exit Script
An vACL executable will be created at the following location
samplevnf/VNFs/vACL/build/vACL
Manual Build:
-============
-1. Download DPDK 16.04 from dpdk.org
- - http://dpdk.org/browse/dpdk/snapshot/dpdk-16.04.zip
-2. unzip dpdk-16.04 and apply dpdk patch
- - cd dpdk-16.04
- - patch -p0 < VNF_CORE/patches/dpdk_custom_patch/rte_pipeline.patch
- - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-management.patch
- - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-Rx-hang-when-disable-LLDP.patch
- - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-status-change-interrupt.patch
- - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-VF-bonded-device-link-down.patch
+=============
+1. Download DPDK supported version from dpdk.org
+
+ - http://dpdk.org/browse/dpdk/snapshot/dpdk-$DPDK_RTE_VER.zip
+
+2. unzip dpdk-$DPDK_RTE_VER.zip and apply dpdk patches only in case of 16.04
+ (Not required for other DPDK versions)
+
+ - cd dpdk
+
+ - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-management.patch
+ - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-Rx-hang-when-disable-LLDP.patch
+ - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-status-change-interrupt.patch
+ - patch -p1 < VNF_CORE/patches/dpdk_custom_patch/i40e-fix-VF-bonded-device-link-down.patch
+ - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/disable-acl-debug-logs.patch
+ - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/set-log-level-to-info.patch
+
- build dpdk
- - make config T=x86_64-native-linuxapp-gcc O=x86_64-native-linuxapp-gcc
- - cd x86_64-native-linuxapp-gcc
- - make
+
+ - make config T=x86_64-native-linuxapp-gcc O=x86_64-native-linuxapp-gcc
+ - cd x86_64-native-linuxapp-gcc
+ - make
+
- 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
- - 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.
+
+ - 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
+ - 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.
+
3. Setup Environment Variable
- - export RTE_SDK=<samplevnf>/dpdk-16.04
+
+ - export RTE_SDK=<samplevnf>/dpdk
- export RTE_TARGET=x86_64-native-linuxapp-gcc
- export VNF_CORE=<samplevnf>
- or using ./toot/setenv.sh
+
+ or using ./tools/setenv.sh
+
4. Build vACL VNFs
+
- cd <samplevnf>/VNFs/vACL
- make clean
- make
+
5. The vACL executable will be created at the following location
+
- <samplevnf>/VNFs/vACL/build/vACL
Run
====
-Setup Port to run VNF:
----------------------
+Setup Port to run VNF
+----------------------
+
::
- 1. cd <samplevnf>/dpdk-16.04
- 3. ./tool/dpdk_nic_bind.py --status <--- List the network device
- 2. ./tool/dpdk_nic_bind.py -b igb_uio <PCI Port 0> <PCI Port 1>
+
+ For DPDK versions 16.04
+ 1. cd <samplevnf>/dpdk
+ 2. ./tools/dpdk_nic_bind.py --status <--- List the network device
+ 3. ./tools/dpdk_nic_bind.py -b igb_uio <PCI Port 0> <PCI Port 1>
.. _More details: http://dpdk.org/doc/guides-16.04/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules
+ For DPDK versions 16.11
+ 1. cd <samplevnf>/dpdk
+ 2. ./tools/dpdk-devbind.py --status <--- List the network device
+ 3. ./tools/dpdk-devbind.py -b igb_uio <PCI Port 0> <PCI Port 1>
+ .. _More details: http://dpdk.org/doc/guides-16.11/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules
+
+ For DPDK versions 17.xx
+ 1. cd <samplevnf>/dpdk
+ 2. ./usertools/dpdk-devbind.py --status <--- List the network device
+ 3. ./usertools/dpdk-devbind.py -b igb_uio <PCI Port 0> <PCI Port 1>
+ .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules
+
+
Make the necessary changes to the config files to run the vACL VNF
- eg: ports_mac_list = 00:00:00:30:21:00 00:00:00:30:21:00
+ eg: ports_mac_list = 00:00:00:30:21:00 00:00:00:30:21:00
-ACL
---------------
+-----------------
+ACL run commands
+-----------------
Update the configuration according to system configuration.
::
+
./build/vACL -p <port mask> -f <config> -s <script> - SW_LoadB
+
./build/vACL -p <port mask> -f <config> -s <script> -hwlb <num_WT> - HW_LoadB
Run IPv4
-----------
+--------
+
::
- Software LoadB
- --------------
+
+ Software LoadB
+
cd <samplevnf>/VNFs/vACL/
+
./build/vACL -p 0x3 -f ./config/IPv4_swlb_acl_1LB_1t.cfg -s ./config/ IPv4_swlb_acl.tc
- Hardware LoadB
- --------------
+ Hardware LoadB
+
cd <samplevnf>/VNFs/vACL/
+
./build/vACL -p 0x3 -f ./config/IPv4_hwlb_acl_1LB_1t.cfg -s ./config/IPv4_hwlb_acl.tc --hwlb 1
Run IPv6
----------
+--------
+
::
+
Software LoadB
- --------------
+
cd <samplevnf>/VNFs/vACL/
+
./build/vACL -p 0x3 -f ./config/IPv6_swlb_acl_1LB_1t.cfg -s ./config/IPv6_swlb_acl.tc
Hardware LoadB
- --------------
+
cd <samplevnf>/VNFs/vACL/
+
./build/vACL -p 0x3 -f ./config/IPv6_hwlb_acl_1LB_1t.cfg -s ./config/IPv6_hwlb_acl.tc --hwlb 1
-vACL execution on BM & SRIOV:
+vACL execution on BM & SRIOV
--------------------------------
+To run the VNF, execute the following
+
::
- To run the VNF, execute the following:
+
samplevnf/VNFs/vACL# ./build/vACL -p 0x3 -f ./config/IPv4_swlb_acl_1LB_1t.cfg -s ./config/ IPv4_swlb_acl.tc
+
Command Line Params:
-p PORTMASK: Hexadecimal bitmask of ports to configure
-f CONFIG FILE: vACL configuration file
-s SCRIPT FILE: vACL script file
-vACL execution on OVS:
+vACL execution on OVS
-------------------------
+To run the VNF, execute the following:
+
::
- To run the VNF, execute the following:
+
samplevnf/VNFs/vACL# ./build/vACL -p 0x3 -f ./config/IPv4_swlb_acl_1LB_1t.cfg -s ./config/ IPv4_swlb_acl.tc --disable-hw-csum
+
Command Line Params:
-p PORTMASK: Hexadecimal bitmask of ports to configure
-f CONFIG FILE: vACL configuration file
-s SCRIPT FILE: vACL script file
---disable-hw-csum :Disable TCP/UDP hw checksum
+ --disable-hw-csum :Disable TCP/UDP hw checksum