From 2dd65cf55254d47873b114fec466e67b4130d3ec Mon Sep 17 00:00:00 2001 From: Anand B Jyoti Date: Tue, 3 Oct 2017 10:50:41 +0530 Subject: Docs: Review and update the docs for E-release JIRA: SAMPLEVNF-82 Review and update the the E-release docsuments. Change-Id: I1eeb0dead18559b8f05039b81512d944a862bbb4 Signed-off-by: Anand B Jyoti --- docs/testing/developer/design/01-Overview.rst | 4 +- .../developer/design/02-Get_started_Guide.rst | 14 +- .../developer/requirements/03-Requirements.rst | 19 +- docs/testing/user/userguide/01-introduction.rst | 11 +- docs/testing/user/userguide/02-methodology.rst | 2 +- docs/testing/user/userguide/03-architecture.rst | 10 +- docs/testing/user/userguide/04-installation.rst | 73 +++-- .../user/userguide/05-How_to_run_SampleVNFs.rst | 239 +++++++------- .../user/userguide/06-How_to_use_REST_api.rst | 280 ++++++++++++++++ docs/testing/user/userguide/07-Config_files.rst | 360 +++++++++++++++++++++ docs/testing/user/userguide/index.rst | 2 + 11 files changed, 850 insertions(+), 164 deletions(-) create mode 100644 docs/testing/user/userguide/06-How_to_use_REST_api.rst create mode 100644 docs/testing/user/userguide/07-Config_files.rst (limited to 'docs/testing') diff --git a/docs/testing/developer/design/01-Overview.rst b/docs/testing/developer/design/01-Overview.rst index e4c7a984..a1ae66af 100644 --- a/docs/testing/developer/design/01-Overview.rst +++ b/docs/testing/developer/design/01-Overview.rst @@ -26,7 +26,7 @@ real life use-case based testing and NFVi characterization for the same. The sample VNFs are Open Source approximations* of Telco grade VNF’s using optimized VNF + NFVi Infrastructure libraries, with Performance Characterization of Sample† Traffic Flows. * * Not a commercial product. Encourage the community to contribute and close the feature gaps. - * † No Vendor/Proprietary Workloads + * † No Vendor/Proprietary Workloads It helps to facilitate deterministic & repeatable bench-marking on Industry standard high volume Servers. It augments well with a Test Infrastructure @@ -46,6 +46,6 @@ Integrate into CI tool chain and existing test frameworks for VNF feature and de Testability: ----------- Network Service Testing framework added into the Yardstick will be used as a test -tool for Functional/Performance verification of all the sample VNFs. +tool for Functional/Performance verification of all the sample VNFs. Planning to extend the same to FuncTest and Models project to include the testcases related to sample VNFs. diff --git a/docs/testing/developer/design/02-Get_started_Guide.rst b/docs/testing/developer/design/02-Get_started_Guide.rst index 4bcff899..995a2270 100644 --- a/docs/testing/developer/design/02-Get_started_Guide.rst +++ b/docs/testing/developer/design/02-Get_started_Guide.rst @@ -59,11 +59,11 @@ In this way, individual commits can be traced to JIRA issues and we also know wh commits were used to resolve a JIRA issue. If you want to contribute to samplevnf, you can pick a issue from SampleVNF's JIRA dashboard or you can create you own issue and submit it to JIRA. - + Submitting code to Gerrit Installing and configuring Git and Git-Review is necessary in order to submit code to Gerrit. The Getting to the code page will provide you with some help for that. - + Comitting the code with Git Open a terminal window and set the project's directory to the working directory using the cd command. In this case "/home/opnfv/samplevnf" is the path to the samplevnf project folder on my computer. @@ -97,11 +97,11 @@ it is time to actually commit your work to your local Git repository. :: git commit --signoff -m "Title of change - + Test of change that describes in high level what was done. There is a lot of documentation in code so you do not need to repeat it here. - + JIRA: SAMPLEVNF-XXX" The message that is required for the commit should follow a specific set of rules. @@ -122,7 +122,7 @@ This will automatically push your local commit into Gerrit. Code review You can add Samplevnf committers and contributors to review your codes. - + Modifying the code under review in Gerrit At the same time the code is being reviewed in Gerrit, you may need to edit it to make some changes and then send it back for review. The following steps go through the procedure. @@ -132,7 +132,7 @@ The 'status' command is very helpful at this point as it provides an overview of :: git status The output of the command provides us with the files that have been modified after the latest commit. - + You can now stage the files that have been modified as part of the Gerrit code review edition/modification/improvement using git add command. It is now time to commit the newly modified files, but the objective here is not to @@ -144,7 +144,7 @@ You can achieve that with the '--amend' option on the 'commit' command: If the commit was successful, the 'status' command should not return the updated files as about to be commited. - + The final step consists in pushing the newly modified commit to Gerrit. :: diff --git a/docs/testing/developer/requirements/03-Requirements.rst b/docs/testing/developer/requirements/03-Requirements.rst index ce43e06a..dab07a6e 100644 --- a/docs/testing/developer/requirements/03-Requirements.rst +++ b/docs/testing/developer/requirements/03-Requirements.rst @@ -25,7 +25,7 @@ Connected to the DUT is an IXIA* or Software Traffic generator like pktgen or TR simulation platform to generate packet traffic to the DUT ports and determine the throughput/latency at the tester side. -Below are the supported/tested (:term `VNF`) deployment type. +Below are the supported/tested (:term:`VNF`) deployment type. .. image:: images/deploy_type.png :width: 800px :alt: SampleVNF supported topology @@ -67,22 +67,27 @@ Hardware & Software Ingredients Network Topology for testing VNFs --------------------------------- + The ethernet cables should be connected between traffic generator and the VNF server (BM, SRIOV or OVS) setup based on the test profile. The connectivity could be -1. Single port pair : One pair ports used for traffic - :: + +- Single port pair : One pair ports used for traffic + +:: e.g. Single port pair link0 and link1 of VNF are used TG:port 0 <------> VNF:Port 0 TG:port 1 <------> VNF:Port 1 -2. Multi port pair : More than one pair of traffic - :: +- Multi port pair : More than one pair of traffic + +:: + e.g. Two port pair link 0, link1, link2 and link3 of VNF are used TG:port 0 <------> VNF:Port 0 TG:port 1 <------> VNF:Port 1 - TG:port 2 <------> VNF:Port 2 + TG:port 2 <------> VNF:Port 2 TG:port 3 <------> VNF:Port 3 -For openstack/Standalone virtualization, installation please refer the openstack guide and ovs-dpdk/sriov github. +For openstack/Standalone virtualization, installation please refer the openstack guide and ovs-dpdk/sriov github. (TBA - Add link to guide) diff --git a/docs/testing/user/userguide/01-introduction.rst b/docs/testing/user/userguide/01-introduction.rst index 1a60fb58..ab79e931 100755 --- a/docs/testing/user/userguide/01-introduction.rst +++ b/docs/testing/user/userguide/01-introduction.rst @@ -20,16 +20,15 @@ The project's goal is to provides a placeholder for various sample VNF reference architecture and optimization methods related to VNF/Network service for high performance VNFs. This project provides benefits to other OPNFV projects like Functest, Models, yardstick etc to perform real life -use-case based testing and VNF/NFVi characterization for the same. +use-case based testing and VNF/ Network Function Virtualization Infrastructure +(:term:`NFVI`) characterization for the same. The Project's scope to create a repository of sample VNFs to help VNF -benchmarking and NFVi characterization with real world traffic and host a +benchmarking and NFVI characterization with real world traffic and host a common development environment for developing the VNF using optimized libraries. -Also, Develop a test framework in yardstick to enable -Virtual Network Function (:term:`VNF`) / Network Function Virtualization Infrastructure -(:term:`NFVI`) verification. +Also, develop a test framework in yardstick to enable VNF/NFVI verification. -*SampleVNF* is used in OPNFV for characterization of NFVi/VNF on OPNFV infrastructure +*SampleVNF* is used in OPNFV for characterization of NFVI/VNF on OPNFV infrastructure and some of the OPNFV features. .. seealso:: Pharos_ for information on OPNFV community labs and this diff --git a/docs/testing/user/userguide/02-methodology.rst b/docs/testing/user/userguide/02-methodology.rst index 07e9e7ce..5550fec9 100644 --- a/docs/testing/user/userguide/02-methodology.rst +++ b/docs/testing/user/userguide/02-methodology.rst @@ -22,7 +22,7 @@ related to VNF/Network service for high performance VNFs. The sample VNFs are Open Source approximations* of Telco grade :term:`VNF` using optimized VNF + NFVi Infrastructure libraries, with Performance Characterization of Sample† Traffic Flows. • * Not a commercial product. Encourage the community to contribute and close the feature gaps. -• † No Vendor/Proprietary Workloads +• † No Vendor/Proprietary Workloads ETSI-NFV ======== diff --git a/docs/testing/user/userguide/03-architecture.rst b/docs/testing/user/userguide/03-architecture.rst index d8b81c60..3654c43a 100755 --- a/docs/testing/user/userguide/03-architecture.rst +++ b/docs/testing/user/userguide/03-architecture.rst @@ -30,8 +30,8 @@ of Sample† Traffic Flows. * Not a commercial product. Encourage the community to contribute and close the feature gaps. † No Vendor/Proprietary Workloads -t helpsIt helps to facilitate deterministic & repeatable bench-marking on Industry -standard high volume Servers. It augments well with a Test Infrastructure to +It helps to facilitate deterministic & repeatable bench-marking on Industry +standard high volume Servers. It augments well with a Test infrastructure to help facilitate consistent/repeatable methodologies for characterizing & validating the sample VNFs through OPEN SOURCE VNF approximations and test tools. The VNFs belongs to this project are never meant for field deployment. @@ -40,7 +40,7 @@ All the VNF source code part of this project requires Apache License Version 2.0 Supported deployment: ---------------------- * Bare-Metal - All VNFs can run on a Bare-Metal DUT -* Standalone Virtualization: All VNFs can run on SV like VPP as switch, ovs, +* Standalone Virtualization(SV): All VNFs can run on SV like VPP as switch, ovs, ovs-dpdk, srioc * Openstack: Latest Openstack supported @@ -75,7 +75,7 @@ VNF supported Packet pROcessing eXecution Engine (PROX) which is a DPDK application. PROX can do operations on packets in a highly configurable manner. The PROX application is also displaying performance statistics that can - be used for performance investigations. + be used for performance investigations. Intel® DPPD - PROX is an application built on top of DPDK which allows creating software architectures, such as the one depicted below, through small and readable configuration files. @@ -106,7 +106,7 @@ SampleVNF Directory structure user guides and SampleVNF descriptions. *tools/* - Currently contains tools to build image for VMs which are deployed - by Heat. Currently contains helper scripts like install, setup env + by Heat. Currently contains helper scripts like install, setup env *VNFs/* - all VNF source code directory. diff --git a/docs/testing/user/userguide/04-installation.rst b/docs/testing/user/userguide/04-installation.rst index d7c26c9d..9a31ecdc 100644 --- a/docs/testing/user/userguide/04-installation.rst +++ b/docs/testing/user/userguide/04-installation.rst @@ -10,7 +10,7 @@ Abstract -------- This project provides a placeholder for various sample VNF -(Virtual Network Function (:term `VNF`)) development which includes example +(Virtual Network Function (:term:`VNF`)) development which includes example reference architecture and optimization methods related to VNF/Network service for high performance VNFs. The sample VNFs are Open Source approximations* of Telco grade VNF’s using @@ -20,21 +20,21 @@ of Sample† Traffic Flows. :: * Not a commercial product. Encourage the community to contribute and close the feature gaps. - † No Vendor/Proprietary Workloads + † No Vendor/Proprietary Workloads SampleVNF supports installation directly in Ubuntu. The installation procedure are detailed in the sections below. The steps needed to run SampleVNF are: 1) Install and Build SampleVNF. - 2) deploy the VNF on the target and modify the config based on the Network under test + 2) Deploy the VNF on the target and modify the config based on the Network under test 3) Run the traffic generator to generate the traffic. Prerequisites ------------- -Supported Test setup: --------------------- +Supported Test setup +^^^^^^^^^^^^^^^^^^^^^ The device under test (DUT) consists of a system following; * A single or dual processor and PCH chip, except for System on Chip (SoC) cases * DRAM memory size and frequency (normally single DIMM per channel) @@ -45,18 +45,19 @@ Connected to the DUT is an IXIA* or Software Traffic generator like pktgen or TR simulation platform to generate packet traffic to the DUT ports and determine the throughput/latency at the tester side. -Below are the supported/tested (:term `VNF`) deployment type. +Below are the supported/tested (:term:`VNF`) deployment type. .. image:: images/deploy_type.png :width: 800px :alt: SampleVNF supported topology Hardware & Software Ingredients -------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SUT requirements: -^^^^^^^^^^^^^^^^ + :: + +-----------+------------------+ | Item | Description | +-----------+------------------+ @@ -72,8 +73,9 @@ SUT requirements: +-----------+------------------+ Boot and BIOS settings: -^^^^^^^^^^^^^^^^^^^^^^ + :: + +------------------+---------------------------------------------------+ | Boot settings | default_hugepagesz=1G hugepagesz=1G hugepages=16 | | | hugepagesz=2M hugepages=2048 isolcpus=1-11,22-33 | @@ -97,49 +99,58 @@ The ethernet cables should be connected between traffic generator and the VNF se SRIOV or OVS) setup based on the test profile. The connectivity could be -1) Single port pair : One pair ports used for traffic - :: + +1) Single port pair : One pair ports used for traffic + +:: + e.g. Single port pair link0 and link1 of VNF are used TG:port 0 <------> VNF:Port 0 TG:port 1 <------> VNF:Port 1 2) Multi port pair : More than one pair of traffic - :: + +:: + e.g. Two port pair link 0, link1, link2 and link3 of VNF are used TG:port 0 <------> VNF:Port 0 TG:port 1 <------> VNF:Port 1 - TG:port 2 <------> VNF:Port 2 + TG:port 2 <------> VNF:Port 2 TG:port 3 <------> VNF:Port 3 For correalted traffic, use below configuration TG_1:port 0 <------> VNF:Port 0 VNF:Port 1 <------> TG_2:port 0 (UDP Replay) (TG_2(UDP_Replay) reflects all the traffic on the given port) - * Bare-Metal - Refer: http://fast.dpdk.org/doc/pdf-guides/ to setup the DUT for VNF to run - * Standalone Virtualization - PHY-VM-PHY +* Bare-Metal + Refer: http://fast.dpdk.org/doc/pdf-guides/ to setup the DUT for VNF to run + +* Standalone Virtualization - PHY-VM-PHY * SRIOV Refer below link to setup sriov https://software.intel.com/en-us/articles/using-sr-iov-to-share-an-ethernet-port-among-multiple-vms - * OVS_DPDK + * OVS_DPDK Refer below link to setup ovs-dpdk http://docs.openvswitch.org/en/latest/intro/install/general/ http://docs.openvswitch.org/en/latest/intro/install/dpdk/ * Openstack Use any OPNFV installer to deploy the openstack. - + Build VNFs on the DUT: ---------------------- + 1) Clone sampleVNF project repository - git clone https://git.opnfv.org/samplevnf - Auto Build - Using script to build VNFs - ^^^^^^^^^^ - * Interactive options: +Auto Build - Using script to build VNFs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * Interactive options: + :: + ./tools/vnf_build.sh -i Follow the steps in the screen from option [1] –> [9] and select option [8] to build the vnfs. @@ -169,33 +180,37 @@ Build VNFs on the DUT: [9] Exit Script * non-Interactive options: + :: + ./tools/vnf_build.sh -s -d= - Manual Build - ^^^^^^^^^^^^ +Manual Build +^^^^^^^^^^^^ + :: - 1.Download DPDK supported version from dpdk.org + + 1. Download DPDK supported version from dpdk.org http://dpdk.org/browse/dpdk/snapshot/dpdk-$DPDK_RTE_VER.zip unzip dpdk-$DPDK_RTE_VER.zip and apply dpdk patches only in case of 16.04 (Not required for other DPDK versions) cd dpdk make config T=x86_64-native-linuxapp-gcc O=x86_64-native-linuxapp-gcc cd x86_64-native-linuxapp-gcc make -j - 2.Setup huge pages + 2. 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 - 3.Add this to Go to /etc/default/grub configuration file. + 3. 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. - 4.Setup Environment Variable + 4. Setup Environment Variable export RTE_SDK=/dpdk export RTE_TARGET=x86_64-native-linuxapp-gcc export VNF_CORE= or using ./tools/setenv.sh - 5.Build vACL VNFs + 5. Build vACL VNFs cd /VNFs/vACL make clean make @@ -205,7 +220,9 @@ Build VNFs on the DUT: 2) Standalone virtualization/Openstack: Build VM image from script in yardstick + :: + 1) git clone https://git.opnfv.org/yardstick 2) cd yardstick and run ./tools/yardstick-img-modify tools/ubuntu-server-cloudimg-samplevnf-modify.sh diff --git a/docs/testing/user/userguide/05-How_to_run_SampleVNFs.rst b/docs/testing/user/userguide/05-How_to_run_SampleVNFs.rst index b5880645..29c76e69 100644 --- a/docs/testing/user/userguide/05-How_to_run_SampleVNFs.rst +++ b/docs/testing/user/userguide/05-How_to_run_SampleVNFs.rst @@ -9,8 +9,8 @@ SampleVNF - How to run Prerequisites ------------- -Supported Test setup: --------------------- +Supported Test setup +^^^^^^^^^^^^^^^^^^^^ The device under test (DUT) consists of a system following; * A single or dual processor and PCH chip, except for System on Chip (SoC) cases * DRAM memory size and frequency (normally single DIMM per channel) @@ -21,18 +21,18 @@ Connected to the DUT is an IXIA* or Software Traffic generator like pktgen or TR simulation platform to generate packet traffic to the DUT ports and determine the throughput/latency at the tester side. -Below are the supported/tested (:term `VNF`) deployment type. +Below are the supported/tested (:term:`VNF`) deployment type. .. image:: images/deploy_type.png :width: 800px :alt: SampleVNF supported topology Hardware & Software Ingredients -------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SUT requirements: -^^^^^^^^^^^^^^^^ -:: + + +-----------+------------------+ | Item | Description | +-----------+------------------+ @@ -48,8 +48,8 @@ SUT requirements: +-----------+------------------+ Boot and BIOS settings: -^^^^^^^^^^^^^^^^^^^^^^ -:: + + +------------------+---------------------------------------------------+ | Boot settings | default_hugepagesz=1G hugepagesz=1G hugepages=16 | | | hugepagesz=2M hugepages=2048 isolcpus=1-11,22-33 | @@ -73,7 +73,8 @@ The ethernet cables should be connected between traffic generator and the VNF se SRIOV or OVS) setup based on the test profile. The connectivity could be -1) Single port pair : One pair ports used for traffic + +1) Single port pair : One pair ports used for traffic :: e.g. Single port pair link0 and link1 of VNF are used TG:port 0 <------> VNF:Port 0 @@ -84,7 +85,7 @@ The connectivity could be e.g. Two port pair link 0, link1, link2 and link3 of VNF are used TG:port 0 <------> VNF:Port 0 TG:port 1 <------> VNF:Port 1 - TG:port 2 <------> VNF:Port 2 + TG:port 2 <------> VNF:Port 2 TG:port 3 <------> VNF:Port 3 For correalted traffic, use below configuration @@ -92,7 +93,7 @@ The connectivity could be VNF:Port 1 <------> TG_2:port 0 (UDP Replay) (TG_2(UDP_Replay) reflects all the traffic on the given port) * Bare-Metal - Refer: http://fast.dpdk.org/doc/pdf-guides/ to setup the DUT for VNF to run + Refer: http://fast.dpdk.org/doc/pdf-guides/ to setup the DUT for VNF to run * Standalone Virtualization - PHY-VM-PHY * SRIOV @@ -111,12 +112,12 @@ Setup Traffic generator ----------------------- Step 0: Preparing hardware connection - :: + Connect Traffic generator and VNF system back to back as shown in previous section TRex port 0 ↔ (VNF Port 0) ↔ (VNF Port 1) ↔ TRex port 1 Step 1: Setting up Traffic generator (TRex) - :: + TRex Software preparations ^^^^^^^^^^^^^^^^^^^^^^^^^^ * Install the OS (Bare metal Linux, not VM!) @@ -131,13 +132,19 @@ Step 1: Setting up Traffic generator (TRex) Build SampleVNFs ----------------- + Step 2: Procedure to build SampleVNFs - :: + a) Clone sampleVNF project repository - git clone https://git.opnfv.org/samplevnf b) Build VNFs - Auto Build - ^^^^^^^^^^ - * Interactive options: + +Auto Build +^^^^^^^^^^ + +* Interactive options: + +:: + ./tools/vnf_build.sh -i Follow the steps in the screen from option [1] –> [9] and select option [8] to build the vnfs. It will automatically download selected DPDK version and any required patches and will setup everything and build VNFs. @@ -156,18 +163,27 @@ Step 2: Procedure to build SampleVNFs [5] Download DPDK zip [6] Build and Install DPDK [7] Setup hugepages + [8] Download civetweb ---------------------------------------------------------- Step 3: Build VNFs ---------------------------------------------------------- - [8] Build all VNFs (vACL, vCGNAPT, vFW, UDP_Replay, DPPD-PROX) + [9] Build all VNFs (vACL, vCGNAPT, vFW, UDP_Replay, DPPD-PROX) + + [10] Exit Script + + +* Non-Interactive options: + +:: - [9] Exit Script - * non-Interactive options: ./tools/vnf_build.sh -s -d= - Manual Build - ^^^^^^^^^^^^ +Manual Build +^^^^^^^^^^^^ + +:: + 1) Download DPDK supported version from dpdk.org http://dpdk.org/browse/dpdk/snapshot/dpdk-$DPDK_RTE_VER.zip unzip dpdk-$DPDK_RTE_VER.zip and apply dpdk patches only in case of 16.04 (Not required for other DPDK versions) @@ -175,22 +191,30 @@ Step 2: Procedure to build SampleVNFs make config T=x86_64-native-linuxapp-gcc O=x86_64-native-linuxapp-gcc cd x86_64-native-linuxapp-gcc make - 2) Setup huge pages + + 2) Download civetweb 1.9 version from the following link + https://sourceforge.net/projects/civetweb/files/1.9/CivetWeb_V1.9.zip + unzip CivetWeb_V1.9.zip + mv civetweb-master civetweb + cd civetweb + make lib + + 3) 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 - 3) Add this to Go to /etc/default/grub configuration file. + 4) 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. - 4) Setup Environment Variable + 5) Setup Environment Variable export RTE_SDK=/dpdk export RTE_TARGET=x86_64-native-linuxapp-gcc export VNF_CORE= or using ./tools/setenv.sh - 5) Build VNFs + 6) Build VNFs cd make or to build individual VNFs @@ -200,18 +224,27 @@ Step 2: Procedure to build SampleVNFs The vFW executable will be created at the following location /VNFs/vFW/build/vFW + Virtual Firewall - How to run ----------------------------- Step 3: Bind the datapath ports to DPDK + +a) Bind ports to DPDK + :: - a) Bind ports to DPDK + For DPDK versions 17.xx 1) cd /dpdk 2) ./usertools/dpdk-devbind.py --status <--- List the network device 3) ./usertools/dpdk-devbind.py -b igb_uio - .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules - b) Prepare script to enalble VNF to route the packets + .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules + + +b) Prepare script to enalble VNF to route the packets + + :: + cd /VNFs/vFW/config Open -> VFW_SWLB_SinglePortPair_script.tc. Replace the bold items based on your setting. @@ -245,12 +278,20 @@ Step 3: Bind the datapath ports to DPDK p vfw add 2 8 8 0 65535 0 65535 0 0 1 p vfw add 2 8 8 0 65535 0 65535 0 0 0 p vfw applyruleset - c) Run below cmd to launch the VNF. Please make sure both hugepages and ports to be used are bind to dpdk. + + +c) Run below cmd to launch the VNF. Please make sure both hugepages and ports to be used are bind to dpdk. + + :: + cd /VNFs/vFW/ ./build/vFW -p 0x3 -f ./config/VFW_SWLB_SinglePortPair_4Thread.cfg -s ./config/VFW_SWLB_SinglePortPair_script.tc + step 4: Run Test using traffic geneator + :: + On traffic generator system: cd Update the bench.py to generate the traffic. @@ -268,18 +309,27 @@ step 4: Run Test using traffic geneator start -f stl/bench.py -m 50% --port 0 3 -t size=590,vm=var1 For more details refer: https://trex-tgn.cisco.com/trex/doc/trex_stateless_bench.html + Virtual Access Control list - How to run ---------------------------------------- Step 3: Bind the datapath ports to DPDK + +a) Bind ports to DPDK + :: - a) Bind ports to DPDK + For DPDK versions 17.xx 1) cd /dpdk 2) ./usertools/dpdk-devbind.py --status <--- List the network device 3) ./usertools/dpdk-devbind.py -b igb_uio .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules - b) Prepare script to enalble VNF to route the packets + + +b) Prepare script to enalble VNF to route the packets + + :: + cd /VNFs/vACL/config Open -> IPv4_swlb_acl.tc. Replace the bold items based on your setting. @@ -313,80 +363,20 @@ Step 3: Bind the datapath ports to DPDK p acl add 2 8 8 0 65535 0 65535 0 0 1 p acl add 2 8 8 0 65535 0 65535 0 0 0 p acl applyruleset - c) Run below cmd to launch the VNF. Please make sure both hugepages and ports to be used are bind to dpdk. - cd /VNFs/vFW/ - ./build/vFW -p 0x3 -f ./config/IPv4_swlb_acl_1LB_1t.cfg -s ./config/IPv4_swlb_acl.tc. -step 4: Run Test using traffic geneator - :: - On traffic generator system: - cd - Update the bench.py to generate the traffic. - class STLBench(object): - ip_range = {} - ip_range['src'] = {'start': '', 'end': ''} - ip_range['dst'] = {'start': '', 'end': ''} - cd - Run the TRex server: sudo ./t-rex-64 -i -c 7 - In another shell run TRex console: trex-console - The console can be run from another computer with -s argument, --help for more info. - Other options for TRex client are automation or GUI - In the console, run "tui" command, and then send the traffic with commands like: - start -f stl/bench.py -m 50% --port 0 3 -t size=590,vm=var1 - For more details refer: https://trex-tgn.cisco.com/trex/doc/trex_stateless_bench.html +c) Run below cmd to launch the VNF. Please make sure both hugepages and ports to be used are bind to dpdk. -Virtual Access Control list - How to run ----------------------------------------- - -Step 3: Bind the datapath ports to DPDK :: - a) Bind ports to DPDK - For DPDK versions 17.xx - 1) cd /dpdk - 2) ./usertools/dpdk-devbind.py --status <--- List the network device - 3) ./usertools/dpdk-devbind.py -b igb_uio - .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules - b) Prepare script to enalble VNF to route the packets - cd /VNFs/vACL/config - Open -> IPv4_swlb_acl.tc. Replace the bold items based on your setting. - - link 0 config 8 - link 0 up - link 1 down - link 1 config 8 - link 1 up - ; routeadd - routeadd net 0 0xff000000 - routeadd net 1 0xff000000 + cd /VNFs/vFW/ + ./build/vFW -p 0x3 -f ./config/IPv4_swlb_acl_1LB_1t.cfg -s ./config/IPv4_swlb_acl.tc. - ; IPv4 static ARP; disable if dynamic arp is enabled. - p 1 arpadd 0 - p 1 arpadd 1 - p action add 0 accept - p action add 0 fwd 0 - p action add 0 count - p action add 1 accept - p action add 1 fwd 1 - p action add 1 count - p action add 2 drop - p action add 2 count - p action add 0 conntrack - p action add 1 conntrack - p action add 2 conntrack - p action add 3 conntrack - ; IPv4 rules - p acl add 1 8 8 0 65535 67 69 0 0 2 - p acl add 2 8 8 0 65535 0 65535 0 0 1 - p acl add 2 8 8 0 65535 0 65535 0 0 0 - p acl applyruleset - c) Run below cmd to launch the VNF. Please make sure both hugepages and ports to be used are bind to dpdk. - cd /VNFs/vACL/ - ./build/vACL -p 0x3 -f ./config/IPv4_swlb_acl_1LB_1t.cfg -s ./config/IPv4_swlb_acl.tc. step 4: Run Test using traffic geneator + :: + On traffic generator system: cd Update the bench.py to generate the traffic. @@ -404,18 +394,27 @@ step 4: Run Test using traffic geneator start -f stl/bench.py -m 50% --port 0 3 -t size=590,vm=var1 For more details refer: https://trex-tgn.cisco.com/trex/doc/trex_stateless_bench.html + vCGNAPT - How to run ----------------------------------------- +-------------------- Step 3: Bind the datapath ports to DPDK + + a) Bind ports to DPDK + :: - a) Bind ports to DPDK + For DPDK versions 17.xx 1) cd /dpdk 2) ./usertools/dpdk-devbind.py --status <--- List the network device 3) ./usertools/dpdk-devbind.py -b igb_uio - .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules - b) Prepare script to enalble VNF to route the packets + .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules + + + b) Prepare script to enalble VNF to route the packets + + :: + cd /VNFs/vCGNAPT/config Open -> sample_swlb_2port_2WT.tc Replace the bold items based on your setting. @@ -436,17 +435,24 @@ Step 3: Bind the datapath ports to DPDK ; IPv4 static ARP; disable if dynamic arp is enabled. p 1 arpadd 0 p 1 arpadd 1 - For dynamic cgnapt. Please use UDP_Replay as one of the traffic generator + For dynamic cgnapt. Please use UDP_Replay as one of the traffic generator (TG1) (port 0) --> (port 0) VNF (CGNAPT) (Port 1) --> (port0)(UDPReplay) - c) Run below cmd to launch the VNF. Please make sure both hugepages and ports to be used are bind to dpdk. + + c) Run below cmd to launch the VNF. Please make sure both hugepages and ports to be used are bind to dpdk. + + :: + cd /VNFs/vCGNAPT/ ./build/vCGNAPT -p 0x3 -f ./config/sample_swlb_2port_2WT.cfg -s ./config/sample_swlb_2port_2WT.tc step 4: Run Test using traffic geneator - :: + On traffic generator system: + + :: + cd Update the bench.py to generate the traffic. @@ -463,24 +469,35 @@ step 4: Run Test using traffic geneator start -f stl/bench.py -m 50% --port 0 3 -t size=590,vm=var1 For more details refer: https://trex-tgn.cisco.com/trex/doc/trex_stateless_bench.html + UDP_Replay - How to run ---------------------------------------- Step 3: Bind the datapath ports to DPDK + + a) Bind ports to DPDK + :: - a) Bind ports to DPDK + For DPDK versions 17.xx 1) cd /dpdk 2) ./usertools/dpdk-devbind.py --status <--- List the network device 3) ./usertools/dpdk-devbind.py -b igb_uio - .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules - b) Run below cmd to launch the VNF. Please make sure both hugepages and ports to be used are bind to dpdk. + .. _More details: http://dpdk.org/doc/guides-17.05/linux_gsg/build_dpdk.html#binding-and-unbinding-network-ports-to-from-the-kernel-modules + + b) Run below cmd to launch the VNF. Please make sure both hugepages and ports to be used are bind to dpdk. + + :: + cd /VNFs/UDP_Replay/ cmd: ./build/UDP_Replay -c 0x7 -n 4 -w -w -- --no-hw-csum -p --config='(port, queue, cpucore)' e.g ./build/UDP_Replay -c 0x7 -n 4 -w 0000:07:00.0 -w 0000:07:00.1 -- --no-hw-csum -p 0x3 --config='(0, 0, 1)(1, 0, 2)' + step 4: Run Test using traffic geneator - :: + + :: + On traffic generator system: cd Update the bench.py to generate the traffic. @@ -503,6 +520,7 @@ PROX - How to run Description ^^^^^^^^^^^ + This is PROX, the Packet pROcessing eXecution engine, part of Intel(R) Data Plane Performance Demonstrators, and formerly known as DPPD-BNG. PROX is a DPDK-based application implementing Telco use-cases such as @@ -511,6 +529,7 @@ finer grained network functions like QoS, Routing, load-balancing... Compiling and running this application ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + This application supports DPDK 16.04, 16.11, 17.02 and 17.05. The following commands assume that the following variables have been set: @@ -519,6 +538,7 @@ export RTE_TARGET=x86_64-native-linuxapp-gcc Example: DPDK 17.05 installation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * git clone http://dpdk.org/git/dpdk * cd dpdk * git checkout v17.05 @@ -526,12 +546,14 @@ Example: DPDK 17.05 installation PROX compilation ^^^^^^^^^^^^^^^^ + The Makefile with this application expects RTE_SDK to point to the root directory of DPDK (e.g. export RTE_SDK=/root/dpdk). If RTE_TARGET has not been set, x86_64-native-linuxapp-gcc will be assumed. Running PROX ^^^^^^^^^^^^ + After DPDK has been set up, run make from the directory where you have extracted this application. A build directory will be created containing the PROX executable. The usage of the application is shown @@ -540,6 +562,7 @@ been bound to the DPDK provided igb_uio driver. Refer to the "Getting Started Guide - DPDK" document for more details. :: + Usage: ./build/prox [-f CONFIG_FILE] [-l LOG_FILE] [-p] [-o DISPLAY] [-v] [-a|-e] [-m|-s|-i] [-n] [-w DEF] [-q] [-k] [-d] [-z] [-r VAL] [-u] [-t] -f CONFIG_FILE : configuration file to load, ./prox.cfg by default -l LOG_FILE : log file name, ./prox.log by default diff --git a/docs/testing/user/userguide/06-How_to_use_REST_api.rst b/docs/testing/user/userguide/06-How_to_use_REST_api.rst new file mode 100644 index 00000000..c2c8836e --- /dev/null +++ b/docs/testing/user/userguide/06-How_to_use_REST_api.rst @@ -0,0 +1,280 @@ +.. 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. + +======================================================== +REST API - Readme +======================================================== + +Introduction +=============== +As the internet industry progresses creating REST API becomes more concrete +with emerging best Practices. RESTful web services don’t follow a prescribed +standard except fpr the protocol that is used which is HTTP, its important +to build RESTful API in accordance with industry best practices to ease +development & increase client adoption. + +In REST Architecture everything is a resource. RESTful web services are light +weight, highly scalable and maintainable and are very commonly used to +create APIs for web-based applications. + +Here are important points to be considered: + + * GET operations are read only and are safe. + * PUT and DELETE operations are idempotent means their result will + always same no matter how many times these operations are invoked. + * PUT and POST operation are nearly same with the difference lying + only in the result where PUT operation is idempotent and POST + operation can cause different result. + + +REST API in SampleVNF +===================== + +In SampleVNF project VNF’s are run under different contexts like BareMetal, +SRIOV, OVS & Openstack etc. It becomes difficult to interact with the +VNF’s using the command line interface provided by the VNF’s currently. + +Hence there is a need to provide a web interface to the VNF’s running in +different environments through the REST api’s. REST can be used to modify +or view resources on the server without performing any server-side +operations. + +REST api on VNF’s will help adapting with the new automation techniques +being adapted in yardstick. + +Web server integration with VNF’s +================================== + +In order to implement REST api’s in VNF one of the first task is to +identify a simple web server that needs to be integrated with VNF’s. +For this purpose “civetweb” is identified as the web server That will +be integrated with the VNF application. + +CivetWeb is an easy to use, powerful, C/C++ embeddable web server with +optional CGI, SSL and Lua support. CivetWeb can be used by developers +as a library, to add web server functionality to an existing application. + +Civetweb is a project forked out of Mongoose. CivetWeb uses an [MITlicense]. +It can also be used by end users as a stand-alone web server. It is available +as single executable, no installation is required. + +In our project we will be integrating civetweb into each of our VNF’s. +Civetweb exposes a few functions which are used to resgister custom handlers +for different URI’s that are implemented. +Typical usage is shown below + + +VNF Application init() +========================= + +Initialize the civetweb library +================================ + +mg_init_library(0); + +Start the web server +===================== +ctx = mg_start(NULL, 0, options); + + +Once the civetweb server is started we can register our URI’s as show below +mg_set_request_handler(ctx, "/config", static_cfg_handler, 0); + +In the above example “/config” is the URI & static_cfg_handler() is +the handler that gets called when a user invokes this URI through +the HTTP client. API's have been mostly implemented for existing VNF's +like vCGNAPT, vFW & vACL. you might want to implement custom handlers +for your VNF. + +URI definition for different VNF’s +=================================== + +:: + +URI REST Method Arguments Description +=========================================================================================================================== +/vnf GET None Displays top level methods available + +/vnf/config GET None Displays the current config set + POST pci_white_list: Command success/failure + num_worker(o): + vnf_type(o): + pkt_type (o): + num_lb(o): + sw_lb(o): + sock_in(o): + hyperthread(o) : + +/vnf/config/arp GET None Displays ARP/ND info + POST action: Command success/failure + ipv4/ipv6:
+ portid: <> + macaddr: <> for add + +/vnf/config/link GET None + POST link_id:<> Command success/failure + state: <1/0> + +/vnf/config/link/ GET None + POST Command success/failure + ipv4/ipv6:
+ depth: <> + +/vnf/config/route GET None Displays gateway route entries + POST portid: <> Adds route entries for default gateway + nhipv4/nhipv6: + depth: <> + type:"net/host" + +/vnf/config/rules(vFW/vACL only) GET None Displays the methods /load/clear +/vnf/config/rules/load GET None Displays if file was loaded + PUT