summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX
diff options
context:
space:
mode:
Diffstat (limited to 'VNFs/DPPD-PROX')
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/basicrapid.test8
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/centos.json12
-rwxr-xr-xVNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh59
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/config_file2
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/deploycentostools.sh31
-rwxr-xr-xVNFs/DPPD-PROX/helper-scripts/rapid/devbind.sh2
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/genv6.cfg78
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/helper.lua61
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/ipv6.test64
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/l3framerate.test3
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/openstack-rapid.yaml4
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/params_rapid.yaml1
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/rapid-openstack-server.yaml2
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py2
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/rapid_generator_machine.py36
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py8
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/rapid_machine.py12
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/rapid_test.py20
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/rapid_warmuptest.py2
-rw-r--r--VNFs/DPPD-PROX/helper-scripts/rapid/swapv6.cfg47
20 files changed, 362 insertions, 92 deletions
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/basicrapid.test b/VNFs/DPPD-PROX/helper-scripts/rapid/basicrapid.test
index 69a5a309..25561bc4 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/basicrapid.test
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/basicrapid.test
@@ -49,13 +49,17 @@ test=flowsizetest
# all combinations must be meeting the same threshold
# The threshold is expressed in Mpps
pass_threshold=0.1
-imixs=[[64], [64,800],[128]]
+# Each element in the imix list will result in a separate test. Each element
+# is on its turn a list of packet sizes which will be used during one test
+# execution. If you only want to test 1 size, define a list with only one
+# element.
+imixs=[[64],[64,250,800,800]]
# the number of flows in the list need to be powers of 2, max 2^30
# If not a power of 2, we will use the lowest power of 2 that is larger than
# the requested number of flows. e.g. 9 will result in 16 flows
flows=[64,500000]
# Setting one of the following thresholds to infinity (inf)
-# results in the criterion not being evaluated to rate the test as scussesful
+# results in the criterion not being evaluated to rate the test as succesful
drop_rate_threshold = 0.1
lat_avg_threshold = 50
lat_perc_threshold = 80
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/centos.json b/VNFs/DPPD-PROX/helper-scripts/rapid/centos.json
index 92617b86..964de93e 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/centos.json
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/centos.json
@@ -19,28 +19,28 @@
{
"type": "file",
"source": "./check_prox_system_setup.sh",
- "destination": "/home/centos/"
+ "destination": "~/"
},
{
"type": "file",
"source": "./check-prox-system-setup.service",
- "destination": "/home/centos/"
+ "destination": "~/"
},
{
"type": "file",
"source": "./sharkproxlog.sh",
- "destination": "/home/centos/"
+ "destination": "~/"
},
{
"type": "file",
"source": "./deploycentostools.sh",
- "destination": "/home/centos/"
+ "destination": "~/"
},
{
"type": "shell",
"inline": [
- "chmod a+x /home/centos/deploycentostools.sh",
- "/home/centos/deploycentostools.sh -u deploy" ]
+ "chmod a+x ~/deploycentostools.sh",
+ "~/deploycentostools.sh -u deploy" ]
}
]
}
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh b/VNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh
index 8621d1f3..984f0255 100755
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh
@@ -18,37 +18,38 @@ NCPUS="$(lscpu | egrep '^CPU\(s\):' | awk '{ print $2 }')"
MAXCOREID="$((NCPUS-1))"
filename="/etc/tuned/realtime-virtual-guest-variables.conf"
-logfile="/home/centos/prox_system_setup.log"
+#logfile="/home/centos/prox_system_setup.log"
+logfile="/opt/rapid/prox_system_setup.log"
if [ -f "$filename" ]
then
- while read -r line
- do
- case $line in
- isolated_cores=1-$MAXCOREID*)
- echo "Isolated CPU(s) OK, no reboot: $line">>$logfile
- sed -i 's/PubkeyAuthentication no/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
- service sshd restart
- modprobe uio
- insmod /home/centos/dpdk/build/kmod/igb_uio.ko
- exit 0
- ;;
- isolated_cores=*)
- echo "Isolated CPU(s) NOK, change the config and reboot: $line">>$logfile
- sed -i "/^isolated_cores=.*/c\isolated_cores=1-$MAXCOREID" $filename
- tuned-adm profile realtime-virtual-guest
- reboot
- exit 0
- ;;
- *)
- echo "$line"
- ;;
- esac
- done < "$filename"
- echo "isolated_cores=1-$MAXCOREID" >> $filename
- echo "No Isolated CPU(s) defined in config, line added: $line">>$logfile
- tuned-adm profile realtime-virtual-guest
- reboot
+ while read -r line
+ do
+ case $line in
+ isolated_cores=1-$MAXCOREID*)
+ echo "Isolated CPU(s) OK, no reboot: $line">>$logfile
+ sed -i 's/PubkeyAuthentication no/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
+ service sshd restart
+ modprobe uio
+ insmod /opt/rapid/dpdk/build/kmod/igb_uio.ko
+ exit 0
+ ;;
+ isolated_cores=*)
+ echo "Isolated CPU(s) NOK, change the config and reboot: $line">>$logfile
+ sed -i "/^isolated_cores=.*/c\isolated_cores=1-$MAXCOREID" $filename
+ tuned-adm profile realtime-virtual-guest
+ reboot
+ exit 0
+ ;;
+ *)
+ echo "$line"
+ ;;
+ esac
+ done < "$filename"
+ echo "isolated_cores=1-$MAXCOREID" >> $filename
+ echo "No Isolated CPU(s) defined in config, line added: $line">>$logfile
+ tuned-adm profile realtime-virtual-guest
+ reboot
else
- echo "$filename not found.">>$logfile
+ echo "$filename not found.">>$logfile
fi
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/config_file b/VNFs/DPPD-PROX/helper-scripts/rapid/config_file
index c412b616..e5991649 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/config_file
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/config_file
@@ -1,7 +1,7 @@
[OpenStack]
cloud_name = openstackL6
stack_name = rapid
-heat_template = openstack-rapid.yaml
+heat_template= openstack-rapid.yaml
heat_param = params_rapid.yaml
keypair_name = rapid_key
user = centos
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/deploycentostools.sh b/VNFs/DPPD-PROX/helper-scripts/rapid/deploycentostools.sh
index 18b45469..f89d4fe2 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/deploycentostools.sh
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/deploycentostools.sh
@@ -17,20 +17,13 @@
# Directory for package build
BUILD_DIR="/opt/rapid"
-# Directory where the packer tool has copied some files (e.g. check_prox_system_setup.sh)
-# Runtime scripts are assuming ${WORK_DIR} as the directory for PROX. Check the rundir variable in runrapid.py. Should be the same!
-# This variable is defined in 4 different places and should have the same value: centos.json, deploycentostools.sh, check_prox_system_setup.sh and runrapid.py
-WORK_DIR="/home/centos"
DPDK_VERSION="19.05"
PROX_COMMIT="b71a4cfd"
PROX_CHECKOUT="git checkout ${PROX_COMMIT}"
## Next line is overruling the PROX_COMMIT and will replace the version with a very specific patch. Should be commented out
## if you want to use a committed version of PROX with the COMMIT ID specified above
-##PROX_CHECKOUT="git fetch \"https://gerrit.opnfv.org/gerrit/samplevnf\" refs/changes/75/69475/2 && git checkout FETCH_HEAD"
-##Following line has the commit for testing IMIX
-#PROX_CHECKOUT="git fetch \"https://gerrit.opnfv.org/gerrit/samplevnf\" refs/changes/88/69488/3 && git checkout FETCH_HEAD"
-##Following line has the commit for testing IMIX, IPV6, ... It is the merge of all PROX commits on May 12th
-PROX_CHECKOUT="git fetch \"https://gerrit.opnfv.org/gerrit/samplevnf\" refs/changes/59/69859/7 && git checkout FETCH_HEAD"
+##Following line has the commit for testing IMIX, IPV6, ... It is the merge of all PROX commits on May 27th 2020
+PROX_CHECKOUT="git fetch \"https://gerrit.opnfv.org/gerrit/samplevnf\" refs/changes/23/70223/1 && git checkout FETCH_HEAD"
MULTI_BUFFER_LIB_VER="0.52"
export RTE_SDK="${BUILD_DIR}/dpdk-${DPDK_VERSION}"
export RTE_TARGET="x86_64-native-linuxapp-gcc"
@@ -89,9 +82,9 @@ function os_cfg()
# Install the check_tuned_params service to make sure that the grub cmd line has the right cpus in isolcpu. The actual number of cpu's
# assigned to this VM depends on the flavor used. We don't know at this time what that will be.
- ${SUDO} chmod +x ${WORK_DIR}/check_prox_system_setup.sh
- ${SUDO} cp -r ${WORK_DIR}/check_prox_system_setup.sh /usr/local/libexec/
- ${SUDO} cp -r ${WORK_DIR}/check-prox-system-setup.service /etc/systemd/system/
+ ${SUDO} chmod +x ${HOME}/check_prox_system_setup.sh
+ ${SUDO} mv ${HOME}/check_prox_system_setup.sh /usr/local/libexec/
+ ${SUDO} mv ${HOME}/check-prox-system-setup.service /etc/systemd/system/
${SUDO} systemctl daemon-reload
${SUDO} systemctl enable check-prox-system-setup.service
# Following lines are added to fix the following issue: When the VM gets
@@ -155,7 +148,7 @@ function dpdk_install()
tar -xf ./dpdk-${DPDK_VERSION}.tar.xz
popd > /dev/null 2>&1
- ${SUDO} ln -s ${RTE_SDK} ${WORK_DIR}/dpdk
+ ${SUDO} ln -s ${RTE_SDK} ${BUILD_DIR}/dpdk
pushd ${RTE_SDK} > /dev/null 2>&1
make config T=${RTE_TARGET}
@@ -184,6 +177,7 @@ function prox_compile()
# Compile PROX
pushd ${BUILD_DIR}/samplevnf/VNFs/DPPD-PROX
make -j`getconf _NPROCESSORS_ONLN`
+ ${SUDO} cp ${BUILD_DIR}/samplevnf/VNFs/DPPD-PROX/build/app/prox ${HOME}/prox
popd > /dev/null 2>&1
}
@@ -193,10 +187,9 @@ function prox_install()
pushd ${BUILD_DIR} > /dev/null 2>&1
git clone https://git.opnfv.org/samplevnf
pushd ${BUILD_DIR}/samplevnf/VNFs/DPPD-PROX > /dev/null 2>&1
- ${PROX_CHECKOUT}
+ bash -c "${PROX_CHECKOUT}"
popd > /dev/null 2>&1
prox_compile
- ${SUDO} cp ${BUILD_DIR}/samplevnf/VNFs/DPPD-PROX/build/app/prox ${WORK_DIR}/prox
popd > /dev/null 2>&1
}
@@ -206,16 +199,16 @@ function port_info_build()
pushd ${BUILD_DIR}/port_info > /dev/null 2>&1
make
- ${SUDO} cp ${BUILD_DIR}/port_info/build/app/port_info ${WORK_DIR}/port_info
+ ${SUDO} cp ${BUILD_DIR}/port_info/build/app/port_info ${HOME}/port_info
popd > /dev/null 2>&1
}
function create_minimal_install()
{
- ldd ${WORK_DIR}/prox | awk '{ if ($(NF-1) != "=>") print $(NF-1) }' >> ${BUILD_DIR}/list_of_install_components
+ ldd ${HOME}/prox | awk '{ if ($(NF-1) != "=>") print $(NF-1) }' >> ${BUILD_DIR}/list_of_install_components
- echo "${WORK_DIR}/prox" >> ${BUILD_DIR}/list_of_install_components
- echo "${WORK_DIR}/port_info" >> ${BUILD_DIR}/list_of_install_components
+ echo "${HOME}/prox" >> ${BUILD_DIR}/list_of_install_components
+ echo "${HOME}/port_info" >> ${BUILD_DIR}/list_of_install_components
tar -czvhf ${BUILD_DIR}/install_components.tgz -T ${BUILD_DIR}/list_of_install_components
}
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/devbind.sh b/VNFs/DPPD-PROX/helper-scripts/rapid/devbind.sh
index ac6ccaa1..f2e3fe29 100755
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/devbind.sh
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/devbind.sh
@@ -2,7 +2,7 @@ link="$(sudo ip -o link | grep MACADDRESS |cut -d":" -f 2)"
if [ -n "$link" ];
then
echo Need to bind
- sudo ~/dpdk/usertools/dpdk-devbind.py --force --bind igb_uio $(sudo ~/dpdk/usertools/dpdk-devbind.py --status |grep $link | cut -d" " -f 1)
+ sudo /opt/rapid/dpdk/usertools/dpdk-devbind.py --force --bind igb_uio $(sudo /opt/rapid/dpdk/usertools/dpdk-devbind.py --status |grep $link | cut -d" " -f 1)
else
echo Assuming port is already bound to DPDK
fi
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/genv6.cfg b/VNFs/DPPD-PROX/helper-scripts/rapid/genv6.cfg
new file mode 100644
index 00000000..8f5e399b
--- /dev/null
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/genv6.cfg
@@ -0,0 +1,78 @@
+;;
+;; Copyright (c) 2010-2020 Intel Corporation
+;;
+;; Licensed under the Apache License, Version 2.0 (the "License");
+;; you may not use this file except in compliance with the License.
+;; You may obtain a copy of the License at
+;;
+;; http://www.apache.org/licenses/LICENSE-2.0
+;;
+;; Unless required by applicable law or agreed to in writing, software
+;; distributed under the License is distributed on an "AS IS" BASIS,
+;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+;; See the License for the specific language governing permissions and
+;; limitations under the License.
+;;
+
+[lua]
+dofile("parameters.lua")
+
+[eal options]
+-n=4 ; force number of memory channels
+no-output=no ; disable DPDK debug output
+eal=--proc-type auto ${eal}
+
+[port 0]
+name=p0
+rx desc=2048
+tx desc=2048
+vlan=yes
+
+[variables]
+$mbs=8
+
+[defaults]
+mempool size=8K
+
+[global]
+name=${name}
+heartbeat timeout=${heartbeat}
+
+[core 0]
+mode=master
+
+[core $gencores]
+name=gen
+task=0
+mode=gen
+sub mode=ndp
+tx port=p0
+bps=1000
+pkt inline=00 00 01 00 00 01 00 00 02 00 00 02 86 dd 60 00 00 00 00 1a 11 40 ${local_hex_ip1} ${dest_hex_ip1} 13 88 13 88 00 1a 55 7b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+global ipv6=${local_ip1}
+min bulk size=$mbs
+max bulk size=16
+drop=yes
+lat pos=62
+packet id pos=66
+signature pos=72
+signature=0x98765432
+accuracy pos=76
+pkt size=80
+
+
+
+[core $latcores]
+name=lat
+task=0
+mode=lat
+sub mode=ndp
+rx port=p0
+lat pos=62
+accuracy pos=76
+packet id pos=66
+signature=0x98765432
+signature pos=72
+accuracy limit nsec=1000000
+latency bucket size=${bucket_size_exp}
+global ipv6=${local_ip1}
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/helper.lua b/VNFs/DPPD-PROX/helper-scripts/rapid/helper.lua
new file mode 100644
index 00000000..d38bb808
--- /dev/null
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/helper.lua
@@ -0,0 +1,61 @@
+--
+-- Copyright (c) 2010-2020 Intel Corporation
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+function convertIPToHex(ip)
+ local address_chunks = {}
+ if type(ip) ~= "string" then
+ print ("IP ADDRESS ERROR: ", ip)
+ return "IP ADDRESS ERROR"
+ end
+
+ local chunks = {ip:match("^(%d+)%.(%d+)%.(%d+)%.(%d+)$")}
+ if #chunks == 4 then
+ for i,v in ipairs(chunks) do
+ if tonumber(v) > 255 then
+ print ("IPV4 ADDRESS ERROR: ", ip)
+ return "IPV4 ADDRESS ERROR"
+ end
+ address_chunks[#address_chunks + 1] = string.format ("%02x", v)
+ end
+ result = table.concat(address_chunks, " ")
+ print ("Hex IPV4: ", result)
+ return result
+ end
+
+ delimiter = ":"
+ for match in (ip..delimiter):gmatch("(.-)"..delimiter) do
+ if match ~= "" then
+ number = tonumber(match, 16)
+ if number <= 65535 then
+ table.insert(address_chunks, string.format("%02x %02x",number/256,number % 256))
+ end
+ else
+ table.insert(address_chunks, "")
+ end
+ end
+ for i, chunk in ipairs(address_chunks) do
+ if chunk =="" then
+ table.remove(address_chunks, i)
+ for j = 1,(8-#address_chunks) do
+ table.insert(address_chunks, i, "00 00")
+ end
+ break
+ end
+ end
+ result = table.concat(address_chunks, " ")
+ print ("Hex IPV6: ", result)
+ return result
+end
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/ipv6.test b/VNFs/DPPD-PROX/helper-scripts/rapid/ipv6.test
new file mode 100644
index 00000000..2dd571b5
--- /dev/null
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/ipv6.test
@@ -0,0 +1,64 @@
+##
+## Copyright (c) 2010-2019 Intel Corporation
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+##
+
+[TestParameters]
+name = BasicSwapTesting
+number_of_tests = 2
+total_number_of_test_machines = 2
+lat_percentile = 99
+
+[TestM1]
+name = Generator
+config_file = genv6.cfg
+dest_vm = 2
+gencores = [1]
+latcores = [3]
+#bucket_size_exp = 12
+
+[TestM2]
+name = Swap
+config_file = swapv6.cfg
+cores = [1,2]
+#prox_socket = true
+#prox_launch_exit = true
+
+[test1]
+test=warmuptest
+flowsize=512
+imix=[64]
+warmupspeed=1
+warmuptime=2
+
+[test2]
+test=flowsizetest
+# Following parameter defines the success criterium for the test.
+# When this test uses multiple combinations of packet size and flows,
+# all combinations must be meeting the same threshold
+# The threshold is expressed in Mpps
+pass_threshold=0.1
+imixs=[[64], [128]]
+# the number of flows in the list need to be powers of 2, max 2^30
+# If not a power of 2, we will use the lowest power of 2 that is larger than
+# the requested number of flows. e.g. 9 will result in 16 flows
+flows=[64,500000]
+# Setting one of the following thresholds to infinity (inf)
+# results in the criterion not being evaluated to rate the test as succesful
+drop_rate_threshold = 0.1
+lat_avg_threshold = 50
+lat_perc_threshold = 80
+lat_max_threshold = inf
+accuracy = 1
+startspeed = 50
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/l3framerate.test b/VNFs/DPPD-PROX/helper-scripts/rapid/l3framerate.test
index 5b4b914f..67a57ce7 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/l3framerate.test
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/l3framerate.test
@@ -42,6 +42,7 @@ warmuptime=2
test=fixed_rate
imixs=[[64],[128]]
# the number of flows in the list need to be powers of 2, max 2^20
-# Select from following numbers: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576
+# If not a power of 2, we will use the lowest power of 2 that is larger than
+# the requested number of flows. e.g. 9 will result in 16 flows
flows=[1,64]
startspeed=5
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/openstack-rapid.yaml b/VNFs/DPPD-PROX/helper-scripts/rapid/openstack-rapid.yaml
index 2dec7175..1c6fbee4 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/openstack-rapid.yaml
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/openstack-rapid.yaml
@@ -108,8 +108,8 @@ outputs:
data_plane_ips:
description: List of list of list of DataPlane IPs of the VMs
value:
- - {get_attr: [PROXVMs, data_plane_ip]}
- - {get_attr: [PROX2VMs, data_plane_ip]}
+ - {get_attr: [PROXVMs, data_plane_ips]}
+ - {get_attr: [PROX2VMs, data_plane_ips]}
data_plane_macs:
description: List of list of list of DataPlane MACs of the VMs
value:
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/params_rapid.yaml b/VNFs/DPPD-PROX/helper-scripts/rapid/params_rapid.yaml
index 3640905a..7c1884ee 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/params_rapid.yaml
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/params_rapid.yaml
@@ -1,5 +1,6 @@
parameters:
public_net_name: admin_floating_net
+ data_net_name: dataplane-network
PROX_image: rapidVM
my_availability_zone: nova
security_group: prox_security_group
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid-openstack-server.yaml b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid-openstack-server.yaml
index f1b52743..84311e25 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid-openstack-server.yaml
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid-openstack-server.yaml
@@ -72,7 +72,7 @@ outputs:
mngmt_ip:
description: Management IP of the VM
value: {get_attr: [floating_ip, floating_ip_address ]}
- data_plane_ip:
+ data_plane_ips:
description: List of DataPlane IPs of the VM
value:
- {get_attr: [data_port, fixed_ips, 0, ip_address]}
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py
index f5155a57..661554df 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_flowsizetest.py
@@ -126,7 +126,7 @@ class FlowSizeTest(RapidTest):
self.gen_machine.reset_stats()
if self.sut_machine:
self.sut_machine.reset_stats()
- self.gen_machine.set_flows(flow_number)
+ flow_number = self.gen_machine.set_flows(flow_number)
self.set_background_flows(self.background_machines, flow_number)
endspeed = None
speed = self.get_start_speed_and_init(size)
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_generator_machine.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_generator_machine.py
index cfd0bb11..35407535 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_generator_machine.py
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_generator_machine.py
@@ -37,32 +37,43 @@ class RandomPortBits(object):
# and that might be an invalid UDP port and result in
# packets begin discarded
src_number_of_random_bits = number_of_random_bits // 2
- dst_number_of_random_bits = number_of_random_bits - src_number_of_random_bits
- src_port_bitmap = '1000000000000000'.replace ('0','X',src_number_of_random_bits)
- dst_port_bitmap = '1000000000000000'.replace ('0','X',dst_number_of_random_bits)
- return [src_port_bitmap, dst_port_bitmap]
+ dst_number_of_random_bits = (number_of_random_bits -
+ src_number_of_random_bits)
+ src_port_bitmap = '1000000000000000'.replace ('0','X',
+ src_number_of_random_bits)
+ dst_port_bitmap = '1000000000000000'.replace ('0','X',
+ dst_number_of_random_bits)
+ return [src_port_bitmap, dst_port_bitmap, 1<<number_of_random_bits]
class RapidGeneratorMachine(RapidMachine):
"""
Class to deal with rapid configuration files
"""
def get_cores(self):
- return (self.machine_params['gencores'] + self.machine_params['latcores'])
+ return (self.machine_params['gencores'] +
+ self.machine_params['latcores'])
def generate_lua(self, vim):
- appendix = 'gencores="%s"\n'% ','.join(map(str, self.machine_params['gencores']))
- appendix = appendix + 'latcores="%s"\n'% ','.join(map(str, self.machine_params['latcores']))
+ appendix = 'gencores="%s"\n'% ','.join(map(str,
+ self.machine_params['gencores']))
+ appendix = appendix + 'latcores="%s"\n'% ','.join(map(str,
+ self.machine_params['latcores']))
if 'gw_vm' in self.machine_params.keys():
- for index, gw_ip in enumerate(self.machine_params['gw_ips'], start = 1):
+ for index, gw_ip in enumerate(self.machine_params['gw_ips'],
+ start = 1):
appendix = appendix + 'gw_ip{}="{}"\n'.format(index, gw_ip)
- appendix = appendix + 'gw_hex_ip{}="{}"\n'.format(index, self.ip2hex(gw_ip))
+ appendix = (appendix +
+ 'gw_hex_ip{}=convertIPToHex(gw_ip{})\n'.format(index,
+ index))
if 'bucket_size_exp' in self.machine_params.keys():
self.bucket_size_exp = self.machine_params['bucket_size_exp']
else:
self.bucket_size_exp = 11
- appendix = appendix + 'bucket_size_exp="{}"\n'.format(self.bucket_size_exp)
+ appendix = (appendix +
+ 'bucket_size_exp="{}"\n'.format(self.bucket_size_exp))
if 'heartbeat' in self.machine_params.keys():
- appendix = appendix + 'heartbeat="%s"\n'% self.machine_params['heartbeat']
+ appendix = (appendix +
+ 'heartbeat="%s"\n'% self.machine_params['heartbeat'])
else:
appendix = appendix + 'heartbeat="60"\n'
super().generate_lua(vim, appendix)
@@ -103,12 +114,13 @@ class RapidGeneratorMachine(RapidMachine):
prox_sizes)
def set_flows(self, number_of_flows):
- source_port,destination_port = RandomPortBits.get_bitmap(
+ source_port, destination_port, actualflows = RandomPortBits.get_bitmap(
number_of_flows)
self.socket.set_random(self.machine_params['gencores'],0,34,
source_port,2)
self.socket.set_random(self.machine_params['gencores'],0,36,
destination_port,2)
+ return actualflows
def start_gen_cores(self):
self.socket.start(self.machine_params['gencores'])
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py
index eeed2384..89e337de 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_impairtest.py
@@ -43,15 +43,15 @@ class ImpairTest(RapidTest):
imix = self.test['imix']
size = mean (imix)
flow_number = self.test['flowsize']
+ attempts = 0
+ self.gen_machine.set_udp_packet_size(imix)
+ flow_number = self.gen_machine.set_flows(flow_number)
+ self.gen_machine.start_latency_cores()
RapidLog.info("+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+")
RapidLog.info("| Generator is sending UDP ("+'{:>5}'.format(flow_number)+" flow) packets ("+ '{:>5}'.format(size) +" bytes) to SUT via GW dropping and delaying packets. SUT sends packets back. Use ctrl-c to stop the test |")
RapidLog.info("+--------+--------------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+------------+")
RapidLog.info("| Test | Speed requested | Sent to NIC | Sent by Gen | Forward by SUT | Rec. by Gen | Avg. Latency | Max. Latency | Packets Lost | Loss Ratio |")
RapidLog.info("+--------+--------------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+------------+")
- attempts = 0
- self.gen_machine.set_udp_packet_size(imix)
- self.gen_machine.set_flows(flow_number)
- self.gen_machine.start_latency_cores()
speed = self.test['startspeed']
self.gen_machine.set_generator_speed(speed)
while True:
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_machine.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_machine.py
index b5b90d65..a052ba3c 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_machine.py
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_machine.py
@@ -24,11 +24,6 @@ class RapidMachine(object):
"""
Class to deal with rapid configuration files
"""
- @staticmethod
- def ip2hex(ip):
- ip = ip.split('.')
- return(hex(int(ip[0]))[2:].zfill(2) + ' ' + hex(int(ip[1]))[2:].zfill(2) + ' ' + hex(int(ip[2]))[2:].zfill(2) + ' ' + hex(int(ip[3]))[2:].zfill(2))
-
def __init__(self, key, user, vim, rundir, machine_params):
self.name = machine_params['name']
self.ip = machine_params['admin_ip']
@@ -78,10 +73,11 @@ class RapidMachine(object):
self.all_tasks_for_this_cfg = set(re.findall("task\s*=\s*(\d+)",PROXConfig))
self.LuaFileName = 'parameters-{}.lua'.format(self.ip)
with open(self.LuaFileName, "w") as LuaFile:
+ LuaFile.write('require "helper"\n')
LuaFile.write('name="%s"\n'% self.name)
for index, dp_port in enumerate(self.dp_ports, start = 1):
LuaFile.write('local_ip{}="{}"\n'.format(index, dp_port['ip']))
- LuaFile.write('local_hex_ip{}="{}"\n'.format(index, self.ip2hex(dp_port['ip'])))
+ LuaFile.write('local_hex_ip{}=convertIPToHex(local_ip{})\n'.format(index, index))
if vim in ['kubernetes']:
LuaFile.write("eal=\"--socket-mem=512,0 --file-prefix %s --pci-whitelist %s\"\n" % (self.name, self.machine_params['dp_pci_dev']))
else:
@@ -93,11 +89,11 @@ class RapidMachine(object):
if 'dest_ports' in self.machine_params.keys():
for index, dest_port in enumerate(self.machine_params['dest_ports'], start = 1):
LuaFile.write('dest_ip{}="{}"\n'.format(index, dest_port['ip']))
- LuaFile.write('dest_hex_ip{}="{}"\n'.format(index, self.ip2hex(dest_port['ip'])))
- LuaFile.write('dest_hex_ip{}="{}"\n'.format(index, self.ip2hex(dest_port['ip'])))
+ LuaFile.write('dest_hex_ip{}=convertIPToHex(dest_ip{})\n'.format(index, index))
LuaFile.write('dest_hex_mac{}="{}"\n'.format(index , dest_port['mac'].replace(':',' ')))
LuaFile.write(appendix)
self._client.scp_put(self.LuaFileName, self.rundir + '/parameters.lua')
+ self._client.scp_put('helper.lua', self.rundir + '/helper.lua')
def start_prox(self, autostart=''):
if self.machine_params['prox_launch_exit']:
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_test.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_test.py
index 2466d89b..b39520c7 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_test.py
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_test.py
@@ -29,22 +29,34 @@ class RapidTest(object):
@staticmethod
def get_percentageof10Gbps(pps_speed,size):
# speed is given in pps, returning % of 10Gb/s
- return (pps_speed / 1000000.0 * 0.08 * (size+28))
+ # 12 bytes is the inter packet gap
+ # pre-amble is 7 bytes
+ # SFD (start of frame delimiter) is 1 byte
+ # Total of 20 bytes overhead per packet
+ return (pps_speed / 1000000.0 * 0.08 * (size+20))
@staticmethod
def get_pps(speed,size):
# speed is given in % of 10Gb/s, returning Mpps
- return (speed * 100.0 / (8*(size+28)))
+ # 12 bytes is the inter packet gap
+ # pre-amble is 7 bytes
+ # SFD (start of frame delimiter) is 1 byte
+ # Total of 20 bytes overhead per packet
+ return (speed * 100.0 / (8*(size+20)))
@staticmethod
def get_speed(packet_speed,size):
# return speed in Gb/s
- return (packet_speed / 1000.0 * (8*(size+28)))
+ # 12 bytes is the inter packet gap
+ # pre-amble is 7 bytes
+ # SFD (start of frame delimiter) is 1 byte
+ # Total of 20 bytes overhead per packet
+ return (packet_speed / 1000.0 * (8*(size+20)))
@staticmethod
def set_background_flows(background_machines, number_of_flows):
for machine in background_machines:
- machine.set_flows(number_of_flows)
+ _ = machine.set_flows(number_of_flows)
@staticmethod
def set_background_speed(background_machines, speed):
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_warmuptest.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_warmuptest.py
index 587ef22a..e316f6e2 100644
--- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_warmuptest.py
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_warmuptest.py
@@ -42,7 +42,7 @@ class WarmupTest(RapidTest):
self.gen_machine.set_generator_speed(WARMUPSPEED)
self.gen_machine.set_udp_packet_size(imix)
# gen_machine['socket'].set_value(gencores,0,56,1,1)
- self.gen_machine.set_flows(FLOWSIZE)
+ _ = self.gen_machine.set_flows(FLOWSIZE)
self.gen_machine.start()
time.sleep(WARMUPTIME)
self.gen_machine.stop()
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/swapv6.cfg b/VNFs/DPPD-PROX/helper-scripts/rapid/swapv6.cfg
new file mode 100644
index 00000000..ce323e9c
--- /dev/null
+++ b/VNFs/DPPD-PROX/helper-scripts/rapid/swapv6.cfg
@@ -0,0 +1,47 @@
+;;
+;; Copyright (c) 2010-2019 Intel Corporation
+;;
+;; Licensed under the Apache License, Version 2.0 (the "License");
+;; you may not use this file except in compliance with the License.
+;; You may obtain a copy of the License at
+;;
+;; http://www.apache.org/licenses/LICENSE-2.0
+;;
+;; Unless required by applicable law or agreed to in writing, software
+;; distributed under the License is distributed on an "AS IS" BASIS,
+;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+;; See the License for the specific language governing permissions and
+;; limitations under the License.
+;;
+
+[lua]
+dofile("parameters.lua")
+
+[eal options]
+-n=4 ; force number of memory channels
+no-output=no ; disable DPDK debug output
+eal=--proc-type auto ${eal}
+
+[port 0]
+name=if0
+mac=hardware
+vlan=yes
+
+[defaults]
+mempool size=8K
+
+[global]
+name=${name}
+
+[core 0]
+mode=master
+
+[core $cores]
+name=swap
+task=0
+mode=swap
+sub mode=ndp
+rx port=if0
+tx port=if0
+global ipv6=${local_ip1}
+drop=no