From 1b0802cbf10ac4d8911f0916d4ba0b02010924c8 Mon Sep 17 00:00:00 2001 From: Vishwesh M Rudramuni Date: Fri, 26 May 2017 11:11:15 +0530 Subject: [SAMPLEVNF] Adding UDP Replay VNF JIRA: SAMPLEVNF-8 This code adds support for UDP Replay which acts as a reflector of all the UDP packets on the requested port. Change-Id: If8330580f58c785736e578e815d15d983ce20209 Signed-off-by: Vishwesh M Rudramuni Signed-off-by: Deepak S --- docs/UDP_Replay/INSTALL.rst | 124 ++++++++++++++++++++++++++++++++++++++ docs/UDP_Replay/README.rst | 71 ++++++++++++++++++++++ docs/UDP_Replay/RELEASE_NOTES.rst | 68 +++++++++++++++++++++ docs/vFW/RELEASE_NOTES.rst | 26 ++++---- 4 files changed, 276 insertions(+), 13 deletions(-) create mode 100644 docs/UDP_Replay/INSTALL.rst create mode 100644 docs/UDP_Replay/README.rst create mode 100644 docs/UDP_Replay/RELEASE_NOTES.rst (limited to 'docs') diff --git a/docs/UDP_Replay/INSTALL.rst b/docs/UDP_Replay/INSTALL.rst new file mode 100644 index 00000000..334f9d8e --- /dev/null +++ b/docs/UDP_Replay/INSTALL.rst @@ -0,0 +1,124 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International +.. License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) OPNFV, National Center of Scientific Research "Demokritos" and others. + +============================ +UDP_Replay - Installation Guide +============================ + + +UDP_Replay 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 + +Apply all the additional patches in 'patches/dpdk_custom_patch/' and build dpdk + +:: + export RTE_SDK= + 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] +to build the vnfs. +It will automatically download DPDK 16.04 and any required patches and will setup +everything and build UDP_Replay. + +Following are the options for setup: + +:: + + ---------------------------------------------------------- + Step 1: Environment setup. + ---------------------------------------------------------- + [1] Check OS and network connection + + ---------------------------------------------------------- + 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 3: Build VNF + ---------------------------------------------------------- + [7] Build VNF + + [8] Exit Script + +An UDP_Replay executable will be created at the following location +samplevnf/VNFs/UDP_Replay/build/UDP_Replay + + +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 + - build dpdk + - 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. +3. Setup Environment Variable + - export RTE_SDK=/dpdk-16.04 + - export RTE_TARGET=x86_64-native-linuxapp-gcc + - export VNF_CORE= + or using ./toot/setenv.sh +4. Build UDP_Replay application + - cd /VNFs/UDP_Replay + - make clean + - make +5. An UDP_Replay executable will be created at the following location + - /VNFs/UDP_Replay/build/UDP_Replay + +Run +==== + +Setup Port to run VNF: +---------------------- +:: + 1. cd /dpdk + 3. ./tool/dpdk_nic_bind.py --status <--- List the network device + 2. ./tool/dpdk_nic_bind.py -b igb_uio + .. _More details: http://dpdk.org/doc/guides-16.04/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules + + +Run UDP_Replay +---------- +:: + cd /VNFs/UDP_Replay + ./build/UDP_Replay -c 0xf -n 4 -- -p 0x1 --config="(0,0,1)" + diff --git a/docs/UDP_Replay/README.rst b/docs/UDP_Replay/README.rst new file mode 100644 index 00000000..f5e2af36 --- /dev/null +++ b/docs/UDP_Replay/README.rst @@ -0,0 +1,71 @@ +.. this work is licensed under a creative commons attribution 4.0 international +.. license. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) opnfv, national center of scientific research "demokritos" and others. + +======================================================== +UDP_Replay +======================================================== + +1 Introduction +============== +This application implements UDP_Replay. The UDP Replay application is a simple example of +packet processing using the DPDK. The application performs UDP replay. This application +is based on l3fwd application from dpdk. Packets are replayed back over the same port as +received. This application is used in VNF approximation. + +2 Compiling the Application +=========================== + +To compile the application: + +Go to the sample application directory: +cd samplevnf/VNF's/UDP_Replay + +export RTE_SDK=/path/to/rte_sdk +cd ${RTE_SDK}/examples/l3fwd +Set the target (a default target is used if not specified). For example: + +export RTE_TARGET=x86_64-native-linuxapp-gcc +See the DPDK Getting Started Guide for possible RTE_TARGET values. + +Build the application: +make + +3 Running the Application +=========================== + +The application has a number of command line options: + +./build/UDP_Replay [EAL options] -- -p PORTMASK + --config(port,queue,lcore)[,(port,queue,lcore)] + +-p PORTMASK: Hexadecimal bitmask of ports to configure +--config (port,queue,lcore)[,(port,queue,lcore)]: Determines which queues from +which ports are mapped to which cores. + +For e.g + +For single port +./build/UDP_Replay -c 0xf -n 4 -- -p 0x1 --config="(0,0,1)" + +For dual port +./build/UDP_Replay -c 0xf -n 4 -- -p 0x3 --config="(0,0,1),(1,0,2)" + +In this command: + +The -l option enables cores 1, 2 +The -p option enables ports 0 and 1 +The –config option enables one queue on each port and maps each (port,queue) +pair to a specific core. The following table shows the mapping in +this example: + +Port Queue lcore Description + 0 0 1 Map queue 0 from port 0 to lcore 1. + 1 0 2 Map queue 0 from port 1 to lcore 2. + +For ARP/ICMP support +use the sample config provided under samplevnf/VNFs/UDP_Replay/sample.cfg + +For e.g +./build/UDP_Replay -c 0xf -n 4 -- -s sample_ipv4.cfg -p 0x1 --config="(0,0,1),(1,0,2)" diff --git a/docs/UDP_Replay/RELEASE_NOTES.rst b/docs/UDP_Replay/RELEASE_NOTES.rst new file mode 100644 index 00000000..0b390b1a --- /dev/null +++ b/docs/UDP_Replay/RELEASE_NOTES.rst @@ -0,0 +1,68 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International +.. License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) OPNFV, National Center of Scientific Research "Demokritos" and others. + +========================================================= +UDP_Replay +========================================================= + +1. Introduction +================ + +This is a beta release for Sample UDP_Replay application. +This UDP_Replay can application can be run independently (refer INSTALL.rst). + +2. User Guide +=============== +Refer to README.rst for further details on UDP_Replay, HLD, features supported, test +plan. For build configurations and execution requisites please refer to +INSTALL.rst. + +3. Feature for this release +=========================== +This release supports following features as part of UDP_Replay: + - L2l3 stack + - Interface Manager + - ARP solicitation & response. implements ARP states + - Implements ICMPv4 support handling echo request/response messages + - ICMPv6 support handling echo request/response messages + - ND handling neighbour solicitation & neighbour advertisement messages + +4. System requirements - OS and kernel version +============================================== +This is supported on Ubuntu 14.04 and Ubuntu 16.04 and kernel version less than 4.5 + + VNFs on BareMetal support: + OS: Ubuntu 14.04 or 16.04 LTS + kernel: < 4.5 + http://releases.ubuntu.com/16.04/ + Download/Install the image: ubuntu-16.04.1-server-amd64.iso + + VNFs on Standalone Hypervisor + HOST OS: Ubuntu 14.04 or 16.04 LTS + http://releases.ubuntu.com/16.04/ + Download/Install the image: ubuntu-16.04.1-server-amd64.iso + - OVS (DPDK) - 2.5 + - kernel: < 4.5 + - Hypervisor - KVM + - VM OS - Ubuntu 16.04/Ubuntu 14.04 + +5. Known Bugs and limitations +============================= + - Hadware Load Balancer feature is supported on fortville nic FW version 4.53 and below. + - Hardware Checksum offload is not supported for IPv6 traffic. + +6. Future Work +============== +Following would be possible enhancement functionalities + - Automatic enable/disable of synproxy + - Support TCP timestamps with synproxy + - FTP ALG integration + - Performance optimization on different platforms + +7. References +============= +Following links provides additional information + .. _QUICKSTART: http://dpdk.org/doc/guides-16.04/linux_gsg/quick_start.html + .. _DPDKGUIDE: http://dpdk.org/doc/guides-16.04/prog_guide/index.html diff --git a/docs/vFW/RELEASE_NOTES.rst b/docs/vFW/RELEASE_NOTES.rst index 0c880042..8f38a9aa 100644 --- a/docs/vFW/RELEASE_NOTES.rst +++ b/docs/vFW/RELEASE_NOTES.rst @@ -42,19 +42,19 @@ This release supports following features as part of vFW: This is supported on Ubuntu 14.04 and Ubuntu 16.04 and kernel version less than 4.5 VNFs on BareMetal support: - OS: Ubuntu 14.04 or 16.04 LTS - kernel: < 4.5 - http://releases.ubuntu.com/16.04/ - Download/Install the image: ubuntu-16.04.1-server-amd64.iso + - OS: Ubuntu 14.04 or 16.04 LTS + - kernel: < 4.5 + - http://releases.ubuntu.com/16.04/ + - Download/Install the image: ubuntu-16.04.1-server-amd64.iso VNFs on Standalone Hypervisor - HOST OS: Ubuntu 14.04 or 16.04 LTS - http://releases.ubuntu.com/16.04/ - Download/Install the image: ubuntu-16.04.1-server-amd64.iso - - OVS (DPDK) - 2.5 - - kernel: < 4.5 - - Hypervisor - KVM - - VM OS - Ubuntu 16.04/Ubuntu 14.04 + - HOST OS: Ubuntu 14.04 or 16.04 LTS + - http://releases.ubuntu.com/16.04/ + - Download/Install the image: ubuntu-16.04.1-server-amd64.iso + - OVS (DPDK) - 2.5 + - kernel: < 4.5 + - Hypervisor - KVM + - VM OS - Ubuntu 16.04/Ubuntu 14.04 5. Known Bugs and limitations ============================= @@ -74,5 +74,5 @@ Following would be possible enhancement functionalities 7. References ============= Following links provides additional information - .. _QUICKSTART: http://dpdk.org/doc/guides-16.04/linux_gsg/quick_start.html - .. _DPDKGUIDE: http://dpdk.org/doc/guides-16.04/prog_guide/index.html + .. _QUICKSTART: http://dpdk.org/doc/guides-16.04/linux_gsg/quick_start.html + .. _DPDKGUIDE: http://dpdk.org/doc/guides-16.04/prog_guide/index.html -- cgit 1.2.3-korg