diff options
Diffstat (limited to 'vnfs')
-rw-r--r-- | vnfs/VES/bldjobs/Makefile | 22 | ||||
-rw-r--r-- | vnfs/VES5.0/evel/evel-library/bldjobs/Makefile | 22 | ||||
-rw-r--r-- | vnfs/VES5.0/evel/evel-library/code/VESreporting_HB/Makefile | 3 | ||||
-rw-r--r-- | vnfs/VES5.0/evel/evel-library/code/VESreporting_fault/Makefile | 3 | ||||
-rw-r--r-- | vnfs/VES5.0/evel/evel-library/code/VESreporting_syslog/Makefile | 3 | ||||
-rw-r--r-- | vnfs/VES5.0/evel/evel-library/code/VESreporting_vFW/Makefile | 3 | ||||
-rwxr-xr-x | vnfs/VES5.0/evel/evel-library/libs/aarch64/libevel.a | bin | 0 -> 585853 bytes | |||
-rw-r--r-- | vnfs/VESreporting_vFW/Makefile | 3 | ||||
-rw-r--r-- | vnfs/VESreporting_vFW5.0/Makefile | 3 | ||||
-rw-r--r-- | vnfs/VESreporting_vLB/Makefile | 3 | ||||
-rw-r--r-- | vnfs/VESreporting_vLB5.0/Makefile | 3 | ||||
-rwxr-xr-x | vnfs/vFW/scripts/v_firewall_init_arm64.sh | 82 | ||||
-rwxr-xr-x | vnfs/vFW/scripts/v_firewall_install_arm64.sh | 110 | ||||
-rwxr-xr-x | vnfs/vFW/scripts/v_packetgen_init_arm64.sh | 94 | ||||
-rwxr-xr-x | vnfs/vFW/scripts/v_packetgen_install_arm64.sh | 89 | ||||
-rwxr-xr-x | vnfs/vFW/scripts/v_sink_install_arm64.sh | 68 |
16 files changed, 487 insertions, 24 deletions
diff --git a/vnfs/VES/bldjobs/Makefile b/vnfs/VES/bldjobs/Makefile index 659f02fb..058deca7 100644 --- a/vnfs/VES/bldjobs/Makefile +++ b/vnfs/VES/bldjobs/Makefile @@ -26,13 +26,14 @@ #****************************************************************************** ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/.. EVELLIB_ROOT=$(CODE_ROOT)/code/evel_library EVELDEMO_ROOT=$(CODE_ROOT)/code/evel_demo EVELUNIT_ROOT=$(CODE_ROOT)/code/evel_unit EVELTRAINING_ROOT=$(CODE_ROOT)/code/evel_training -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) -OUTPUT_DIR=$(CODE_ROOT)/output/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) +OUTPUT_DIR=$(CODE_ROOT)/output/$(MACHINE_ARCH) DOCS_ROOT=$(CODE_ROOT)/docs CC=gcc SCP=scp @@ -46,8 +47,13 @@ PLANTFLAGS=-tsvg # Standard compiler flags. * #****************************************************************************** CPPFLAGS=-I $(EVELLIB_ROOT) -CFLAGS=-Wall -Wextra -m$(ARCH) -g -fPIC -LIBCFLAGS=-Wall -Wextra -m$(ARCH) -g -shared -fPIC +ifeq ($(MACHINE_ARCH), aarch64) + CFLAGS=-Wall -Wextra -march=native -g -fPIC + LIBCFLAGS=-Wall -Wextra -march=native -g -shared -fPIC +else + CFLAGS=-Wall -Wextra -m$(ARCH) -g -fPIC + LIBCFLAGS=-Wall -Wextra -m$(ARCH) -g -shared -fPIC +endif #****************************************************************************** # The testbed is a VM instance where we can install the EVEL example under * @@ -251,7 +257,7 @@ evel_test_centos: evel_install_centos @echo Testing EVEL Demo application on CentOS... @$(SSH) $(VNF_TESTBED_CENTOS_USER)@$(VNF_TESTBED_CENTOS) \ source .bash_profile \; \ - $(TESTBED_CENTOS_INSTALL_PATH)/output/x86_$(ARCH)/evel_demo \ + $(TESTBED_CENTOS_INSTALL_PATH)/output/$(MACHINE_ARCH)/evel_demo \ --fqdn $(VNF_COLLECTOR_HOST) \ --port $(VNF_COLLECTOR_PORT) \ --verbose @@ -265,7 +271,7 @@ evel_test_ubuntu: evel_install_ubuntu @echo Testing EVEL Demo application on Ubuntu... @$(SSH) $(VNF_TESTBED_UBUNTU_USER)@$(VNF_TESTBED_UBUNTU) \ source .profile \; \ - $(TESTBED_UBUNTU_INSTALL_PATH)/output/x86_$(ARCH)/evel_demo \ + $(TESTBED_UBUNTU_INSTALL_PATH)/output/$(MACHINE_ARCH)/evel_demo \ --fqdn $(VNF_COLLECTOR_HOST) \ --port $(VNF_COLLECTOR_PORT) \ --verbose @@ -293,8 +299,8 @@ package: api_library_clean \ @cd $(CODE_ROOT) && tar cfz output/evel-library-package.tgz bldjobs \ code \ docs \ - libs/x86_64/README \ - output/x86_64/README \ + libs/$(MACHINE_ARCH)/README \ + output/$(MACHINE_ARCH)/README \ readme.md package_clean: diff --git a/vnfs/VES5.0/evel/evel-library/bldjobs/Makefile b/vnfs/VES5.0/evel/evel-library/bldjobs/Makefile index 1c327d3d..fe06f81a 100644 --- a/vnfs/VES5.0/evel/evel-library/bldjobs/Makefile +++ b/vnfs/VES5.0/evel/evel-library/bldjobs/Makefile @@ -26,12 +26,13 @@ #****************************************************************************/ ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/.. EVELLIB_ROOT=$(CODE_ROOT)/code/evel_library EVELUNIT_ROOT=$(CODE_ROOT)/code/evel_unit EVELTRAINING_ROOT=$(CODE_ROOT)/code -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) -OUTPUT_DIR=$(CODE_ROOT)/output/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) +OUTPUT_DIR=$(CODE_ROOT)/output/$(MACHINE_ARCH) DOCS_ROOT=$(CODE_ROOT)/docs CC=gcc SCP=scp @@ -45,8 +46,13 @@ PLANTFLAGS=-tsvg # Standard compiler flags. * #****************************************************************************** CPPFLAGS=-I $(EVELLIB_ROOT) -CFLAGS=-Wall -Wextra -m$(ARCH) -g -fPIC -LIBCFLAGS=-Wall -Wextra -m$(ARCH) -g -shared -fPIC +ifeq ($(MACHINE_ARCH), aarch64) + CFLAGS=-Wall -Wextra -march=native -g -fPIC + LIBCFLAGS=-Wall -Wextra -march=native -g -shared -fPIC +else + CFLAGS=-Wall -Wextra -m$(ARCH) -g -fPIC + LIBCFLAGS=-Wall -Wextra -m$(ARCH) -g -shared -fPIC +endif #****************************************************************************** # The testbed is a VM instance where we can install the EVEL example under * @@ -253,7 +259,7 @@ evel_test_centos: evel_install_centos @echo Testing EVEL Demo application on CentOS... @$(SSH) $(VNF_TESTBED_CENTOS_USER)@$(VNF_TESTBED_CENTOS) \ source .bash_profile \; \ - $(TESTBED_CENTOS_INSTALL_PATH)/output/x86_$(ARCH)/evel_demo \ + $(TESTBED_CENTOS_INSTALL_PATH)/output/$(MACHINE_ARCH)/evel_demo \ --fqdn $(VNF_COLLECTOR_HOST) \ --port $(VNF_COLLECTOR_PORT) \ --verbose @@ -267,7 +273,7 @@ evel_test_ubuntu: evel_install_ubuntu @echo Testing EVEL Demo application on Ubuntu... @$(SSH) $(VNF_TESTBED_UBUNTU_USER)@$(VNF_TESTBED_UBUNTU) \ source .profile \; \ - $(TESTBED_UBUNTU_INSTALL_PATH)/output/x86_$(ARCH)/evel_demo \ + $(TESTBED_UBUNTU_INSTALL_PATH)/output/$(MACHINE_ARCH)/evel_demo \ --fqdn $(VNF_COLLECTOR_HOST) \ --port $(VNF_COLLECTOR_PORT) \ --verbose @@ -292,8 +298,8 @@ package: api_library_clean \ @cd $(CODE_ROOT) && tar cfz output/evel-library-package.tgz bldjobs \ code \ docs \ - libs/x86_64/README \ - output/x86_64/README \ + libs/$(MACHINE_ARCH)/README \ + output/$(MACHINE_ARCH)/README \ readme.md package_clean: diff --git a/vnfs/VES5.0/evel/evel-library/code/VESreporting_HB/Makefile b/vnfs/VES5.0/evel/evel-library/code/VESreporting_HB/Makefile index e0077597..1119f59a 100644 --- a/vnfs/VES5.0/evel/evel-library/code/VESreporting_HB/Makefile +++ b/vnfs/VES5.0/evel/evel-library/code/VESreporting_HB/Makefile @@ -17,9 +17,10 @@ CC=gcc ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/../.. #CODE_ROOT=../code/evel-library -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) #LIBS_DIR=/usr/lib INCLUDE_DIR= -I $(CODE_ROOT)/code/evel_library -I . diff --git a/vnfs/VES5.0/evel/evel-library/code/VESreporting_fault/Makefile b/vnfs/VES5.0/evel/evel-library/code/VESreporting_fault/Makefile index 4837c7d1..87e0d4ac 100644 --- a/vnfs/VES5.0/evel/evel-library/code/VESreporting_fault/Makefile +++ b/vnfs/VES5.0/evel/evel-library/code/VESreporting_fault/Makefile @@ -17,9 +17,10 @@ CC=gcc ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/../.. #CODE_ROOT=../code/evel-library -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) #LIBS_DIR=/usr/lib INCLUDE_DIR= -I $(CODE_ROOT)/code/evel_library -I . diff --git a/vnfs/VES5.0/evel/evel-library/code/VESreporting_syslog/Makefile b/vnfs/VES5.0/evel/evel-library/code/VESreporting_syslog/Makefile index 4b0fd85d..f0b4ed3b 100644 --- a/vnfs/VES5.0/evel/evel-library/code/VESreporting_syslog/Makefile +++ b/vnfs/VES5.0/evel/evel-library/code/VESreporting_syslog/Makefile @@ -17,9 +17,10 @@ CC=gcc ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/../.. #CODE_ROOT=../code/evel-library -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) #LIBS_DIR=/usr/lib INCLUDE_DIR= -I $(CODE_ROOT)/code/evel_library -I . diff --git a/vnfs/VES5.0/evel/evel-library/code/VESreporting_vFW/Makefile b/vnfs/VES5.0/evel/evel-library/code/VESreporting_vFW/Makefile index 9d1812fa..f5e3c463 100644 --- a/vnfs/VES5.0/evel/evel-library/code/VESreporting_vFW/Makefile +++ b/vnfs/VES5.0/evel/evel-library/code/VESreporting_vFW/Makefile @@ -17,9 +17,10 @@ CC=gcc ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/../.. #CODE_ROOT=../code/evel-library -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) #LIBS_DIR=/usr/lib INCLUDE_DIR= -I $(CODE_ROOT)/code/evel_library -I . diff --git a/vnfs/VES5.0/evel/evel-library/libs/aarch64/libevel.a b/vnfs/VES5.0/evel/evel-library/libs/aarch64/libevel.a Binary files differnew file mode 100755 index 00000000..0e17b9f8 --- /dev/null +++ b/vnfs/VES5.0/evel/evel-library/libs/aarch64/libevel.a diff --git a/vnfs/VESreporting_vFW/Makefile b/vnfs/VESreporting_vFW/Makefile index 77ca5742..f821b442 100644 --- a/vnfs/VESreporting_vFW/Makefile +++ b/vnfs/VESreporting_vFW/Makefile @@ -18,8 +18,9 @@ CC=gcc ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/../../.. -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) INCLUDE_DIR=$(CODE_ROOT)/code/evel_library #****************************************************************************** diff --git a/vnfs/VESreporting_vFW5.0/Makefile b/vnfs/VESreporting_vFW5.0/Makefile index c9776e0e..66240d61 100644 --- a/vnfs/VESreporting_vFW5.0/Makefile +++ b/vnfs/VESreporting_vFW5.0/Makefile @@ -18,8 +18,9 @@ CC=gcc ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/../.. -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) INCLUDE_DIR=$(CODE_ROOT)/code/evel_library #****************************************************************************** diff --git a/vnfs/VESreporting_vLB/Makefile b/vnfs/VESreporting_vLB/Makefile index 094adabe..172e81c5 100644 --- a/vnfs/VESreporting_vLB/Makefile +++ b/vnfs/VESreporting_vLB/Makefile @@ -19,8 +19,9 @@ CC=gcc ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/../../.. -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) INCLUDE_DIR=$(CODE_ROOT)/code/evel_library #****************************************************************************** diff --git a/vnfs/VESreporting_vLB5.0/Makefile b/vnfs/VESreporting_vLB5.0/Makefile index a9eb05e1..76029120 100644 --- a/vnfs/VESreporting_vLB5.0/Makefile +++ b/vnfs/VESreporting_vLB5.0/Makefile @@ -18,8 +18,9 @@ CC=gcc ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) CODE_ROOT=$(CURDIR)/../.. -LIBS_DIR=$(CODE_ROOT)/libs/x86_$(ARCH) +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) INCLUDE_DIR=$(CODE_ROOT)/code/evel_library #****************************************************************************** diff --git a/vnfs/vFW/scripts/v_firewall_init_arm64.sh b/vnfs/vFW/scripts/v_firewall_init_arm64.sh new file mode 100755 index 00000000..7fce884c --- /dev/null +++ b/vnfs/vFW/scripts/v_firewall_init_arm64.sh @@ -0,0 +1,82 @@ +#!/bin/bash +set -x + +# Convert Network CIDR to Netmask +mask2cidr() { + nbits=0 + IFS=. + for dec in $1 ; do + case $dec in + 255) let nbits+=8;; + 254) let nbits+=7;; + 252) let nbits+=6;; + 248) let nbits+=5;; + 240) let nbits+=4;; + 224) let nbits+=3;; + 192) let nbits+=2;; + 128) let nbits+=1;; + 0);; + *) echo "Error: $dec is not recognized"; exit 1 + esac + done + echo "$nbits" +} + +# Start VPP +if ! which start; then + echo "#!/bin/bash" > /usr/local/sbin/start + echo "systemctl start \$1" >> /usr/local/sbin/start + chmod u+x /usr/local/sbin/start +fi +start vpp +sleep 1 + +# Configure VPP for vFirewall +IPADDR1=$(ifconfig enp2s0 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2) +IPADDR2=$(ifconfig enp3s0 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2) +HWADDR1=$(ifconfig enp2s0 | grep -Po "HWaddr \K(.*)") +HWADDR2=$(ifconfig enp3s0 | grep -Po "HWaddr \K(.*)") +FAKE_HWADDR1=$(echo -n 00; dd bs=1 count=5 if=/dev/urandom 2>/dev/null | hexdump -v -e '/1 ":%02X"') +FAKE_HWADDR2=$(echo -n 00; dd bs=1 count=5 if=/dev/urandom 2>/dev/null | hexdump -v -e '/1 ":%02X"') + +IPADDR1_MASK=$(ifconfig enp2s0 | grep "Mask" | awk '{print $4}' | awk -F ":" '{print $2}') +IPADDR1_CIDR=$(mask2cidr $IPADDR1_MASK) +IPADDR2_MASK=$(ifconfig enp3s0 | grep "Mask" | awk '{print $4}' | awk -F ":" '{print $2}') +IPADDR2_CIDR=$(mask2cidr $IPADDR2_MASK) + +ifconfig enp2s0 down +ifconfig enp3s0 down +ifconfig enp2s0 hw ether $FAKE_HWADDR1 +ifconfig enp3s0 hw ether $FAKE_HWADDR2 +ip addr flush dev enp2s0 +ip addr flush dev enp3s0 +ifconfig enp2s0 up +ifconfig enp3s0 up +vppctl tap connect tap111 hwaddr $HWADDR1 +vppctl tap connect tap222 hwaddr $HWADDR2 +vppctl set int ip address tapcli-0 $IPADDR1"/"$IPADDR1_CIDR +vppctl set int ip address tapcli-1 $IPADDR2"/"$IPADDR2_CIDR +vppctl set int state tapcli-0 up +vppctl set int state tapcli-1 up +brctl addbr br0 +brctl addif br0 tap111 +brctl addif br0 enp2s0 +brctl addbr br1 +brctl addif br1 tap222 +brctl addif br1 enp3s0 +ifconfig br0 up +ifconfig br1 up +sleep 1 + +# Start HoneyComb +VERSION=$(cat /opt/config/demo_artifacts_version.txt) +mkdir -p /var/lib/honeycomb/persist/{config,context}/ +echo "" > /var/lib/honeycomb/persist/context/data.json +echo "" > /var/lib/honeycomb/persist/config/data.json +# /opt/honeycomb/sample-distribution-$VERSION/honeycomb &>/dev/null &disown +systemctl restart honeycomb +sleep 1 + +# Start VES client +cd /opt/VES/evel/evel-library/code/VESreporting/ +./go-client.sh &>/dev/null &disown diff --git a/vnfs/vFW/scripts/v_firewall_install_arm64.sh b/vnfs/vFW/scripts/v_firewall_install_arm64.sh new file mode 100755 index 00000000..c97fa91f --- /dev/null +++ b/vnfs/vFW/scripts/v_firewall_install_arm64.sh @@ -0,0 +1,110 @@ +#!/bin/bash +set -x + +NEXUS_ARTIFACT_REPO=$(cat /opt/config/nexus_artifact_repo.txt) +DEMO_ARTIFACTS_VERSION=$(cat /opt/config/demo_artifacts_version.txt) +if [[ "$DEMO_ARTIFACTS_VERSION" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi +INSTALL_SCRIPT_VERSION=$(cat /opt/config/install_script_version.txt) +CLOUD_ENV=$(cat /opt/config/cloud_env.txt) + +# Convert Network CIDR to Netmask +cdr2mask () { + # Number of args to shift, 255..255, first non-255 byte, zeroes + set -- $(( 5 - ($1 / 8) )) 255 255 255 255 $(( (255 << (8 - ($1 % 8))) & 255 )) 0 0 0 + [ $1 -gt 1 ] && shift $1 || shift + echo ${1-0}.${2-0}.${3-0}.${4-0} +} + +# OpenStack network configuration +if [[ $CLOUD_ENV == "openstack" ]] +then + echo 127.0.0.1 $(hostname) >> /etc/hosts + + # Allow remote login as root + mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bk + cp /home/ubuntu/.ssh/authorized_keys /root/.ssh + + MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1) + + IP=$(cat /opt/config/vfw_private_ip_0.txt) + BITS=$(cat /opt/config/unprotected_private_net_cidr.txt | cut -d"/" -f2) + NETMASK=$(cdr2mask $BITS) + echo "auto enp2s0" >> /etc/network/interfaces + echo "iface enp2s0 inet static" >> /etc/network/interfaces + echo " address $IP" >> /etc/network/interfaces + echo " netmask $NETMASK" >> /etc/network/interfaces + echo " mtu $MTU" >> /etc/network/interfaces + + IP=$(cat /opt/config/vfw_private_ip_1.txt) + BITS=$(cat /opt/config/protected_private_net_cidr.txt | cut -d"/" -f2) + NETMASK=$(cdr2mask $BITS) + echo "auto enp3s0" >> /etc/network/interfaces + echo "iface enp3s0 inet static" >> /etc/network/interfaces + echo " address $IP" >> /etc/network/interfaces + echo " netmask $NETMASK" >> /etc/network/interfaces + echo " mtu $MTU" >> /etc/network/interfaces + + IP=$(cat /opt/config/vfw_private_ip_2.txt) + BITS=$(cat /opt/config/onap_private_net_cidr.txt | cut -d"/" -f2) + NETMASK=$(cdr2mask $BITS) + echo "auto enp4s0" >> /etc/network/interfaces + echo "iface enp4s0 inet static" >> /etc/network/interfaces + echo " address $IP" >> /etc/network/interfaces + echo " netmask $NETMASK" >> /etc/network/interfaces + echo " mtu $MTU" >> /etc/network/interfaces + + ifup enp2s0 + ifup enp3s0 + ifup enp4s0 +fi + +# Download required dependencies +echo "deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list +echo "deb-src http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list +apt-get update +apt-get install --allow-unauthenticated -y make wget openjdk-8-jdk gcc libcurl4-openssl-dev python-pip bridge-utils apt-transport-https ca-certificates +pip install jsonschema + +# Download artifacts for virtual firewall +mkdir /opt/honeycomb +cd /opt + +unzip -p -j /opt/vfw-scripts-$INSTALL_SCRIPT_VERSION.zip v_firewall_init_arm64.sh > /opt/v_firewall_init.sh +unzip -p -j /opt/vfw-scripts-$INSTALL_SCRIPT_VERSION.zip vfirewall.sh > /opt/vfirewall.sh +wget -O sample-distribution-$DEMO_ARTIFACTS_VERSION-hc.tar.gz "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf&a=sample-distribution&c=hc&e=tar.gz&v=$DEMO_ARTIFACTS_VERSION" +wget -O ves-$DEMO_ARTIFACTS_VERSION-demo.tar.gz "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.ves5&a=ves&c=demo&e=tar.gz&v=$DEMO_ARTIFACTS_VERSION" +wget -O ves_vfw_reporting-$DEMO_ARTIFACTS_VERSION-demo.tar.gz "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.ves5&a=ves_vfw_reporting&c=demo&e=tar.gz&v=$DEMO_ARTIFACTS_VERSION" + +tar -zmxvf ves-$DEMO_ARTIFACTS_VERSION-demo.tar.gz +mv ves-$DEMO_ARTIFACTS_VERSION VES +tar -zmxvf ves_vfw_reporting-$DEMO_ARTIFACTS_VERSION-demo.tar.gz +mv ves_vfw_reporting-$DEMO_ARTIFACTS_VERSION /opt/VES/evel/evel-library/code/VESreporting +tar -zmxvf sample-distribution-$DEMO_ARTIFACTS_VERSION-hc.tar.gz + +mv sample-distribution-$DEMO_ARTIFACTS_VERSION honeycomb +sed -i 's/"restconf-binding-address": "127.0.0.1",/"restconf-binding-address": "0.0.0.0",/g' honeycomb/sample-distribution-$DEMO_ARTIFACTS_VERSION/config/honeycomb.json +rm *.tar.gz + +chmod +x v_firewall_init.sh +chmod +x vfirewall.sh +chmod +x /opt/VES/evel/evel-library/code/VESreporting/go-client.sh + +# Install VPP +rm /etc/apt/sources.list.d/99fd.io.list +echo "deb [trusted=yes] http://linux.enea.com/apt-mk/xenial nightly extra" | sudo tee -a /etc/apt/sources.list.d/99fd.io.list +echo "deb [trusted=yes] http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/queens/main ./" | sudo tee -a /etc/apt/sources.list.d/99fd.io.list +apt-get update +apt-get -o Dpkg::Options::="--force-overwrite" install -y vpp vpp-lib vpp-dbg vpp-plugins vpp-dev dpdk dpdk-dev dpdk-igb-uio-dkms dpdk-rte-kni-dkms honeycomb +sleep 1 + +# Install VES +cd /opt/VES/evel/evel-library/bldjobs/ +make clean +make +sleep 1 + +# Run instantiation script +cd /opt +mv vfirewall.sh /etc/init.d +update-rc.d vfirewall.sh defaults +./v_firewall_init.sh diff --git a/vnfs/vFW/scripts/v_packetgen_init_arm64.sh b/vnfs/vFW/scripts/v_packetgen_init_arm64.sh new file mode 100755 index 00000000..ca2cb7c1 --- /dev/null +++ b/vnfs/vFW/scripts/v_packetgen_init_arm64.sh @@ -0,0 +1,94 @@ +#!/bin/bash +set -x + +# Convert Network CIDR to Netmask +mask2cidr() { + nbits=0 + IFS=. + for dec in $1 ; do + case $dec in + 255) let nbits+=8;; + 254) let nbits+=7;; + 252) let nbits+=6;; + 248) let nbits+=5;; + 240) let nbits+=4;; + 224) let nbits+=3;; + 192) let nbits+=2;; + 128) let nbits+=1;; + 0);; + *) echo "Error: $dec is not recognized"; exit 1 + esac + done + echo "$nbits" +} + +# Start VPP +if ! which start; then + echo "#!/bin/bash" > /usr/local/sbin/start + echo "systemctl start \$1" >> /usr/local/sbin/start + chmod u+x /usr/local/sbin/start +fi +start vpp +sleep 1 + +# Configure VPP for vPacketGenerator +IPADDR1=$(ifconfig enp2s0 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2) +HWADDR1=$(ifconfig enp2s0 | grep -Po "HWaddr \K(.*)") +FAKE_HWADDR1=$(echo -n 00; dd bs=1 count=5 if=/dev/urandom 2>/dev/null | hexdump -v -e '/1 ":%02X"') +PROTECTED_NET_CIDR=$(cat /opt/config/protected_net_cidr.txt) +FW_IPADDR=$(cat /opt/config/fw_ipaddr.txt) +SINK_IPADDR=$(cat /opt/config/sink_ipaddr.txt) + +IPADDR1_MASK=$(ifconfig enp2s0 | grep "Mask" | awk '{print $4}' | awk -F ":" '{print $2}') +IPADDR1_CIDR=$(mask2cidr $IPADDR1_MASK) + +ifconfig enp2s0 down +ifconfig enp2s0 hw ether $FAKE_HWADDR1 +ip addr flush dev enp2s0 +ifconfig enp2s0 up +vppctl tap connect tap111 hwaddr $HWADDR1 +vppctl set int ip address tapcli-0 $IPADDR1"/"$IPADDR1_CIDR +vppctl set int state tapcli-0 up +brctl addbr br0 +brctl addif br0 tap111 +brctl addif br0 enp2s0 +ifconfig br0 up +vppctl ip route add $PROTECTED_NET_CIDR via $FW_IPADDR +sleep 1 + +# Install packet streams +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp1 +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp2 +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp3 +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp4 +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp5 +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp6 +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp7 +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp8 +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp9 +sed -i -e "0,/UDP/ s/UDP:.*/UDP: "$IPADDR1" -> "$SINK_IPADDR"/" /opt/pg_streams/stream_fw_udp10 +vppctl exec /opt/pg_streams/stream_fw_udp1 +vppctl exec /opt/pg_streams/stream_fw_udp2 +vppctl exec /opt/pg_streams/stream_fw_udp3 +vppctl exec /opt/pg_streams/stream_fw_udp4 +vppctl exec /opt/pg_streams/stream_fw_udp5 +vppctl exec /opt/pg_streams/stream_fw_udp6 +vppctl exec /opt/pg_streams/stream_fw_udp7 +vppctl exec /opt/pg_streams/stream_fw_udp8 +vppctl exec /opt/pg_streams/stream_fw_udp9 +vppctl exec /opt/pg_streams/stream_fw_udp10 +sleep 1 + +# Start HoneyComb +#VERSION=$(cat /opt/config/demo_artifacts_version.txt) +mkdir -p /var/lib/honeycomb/persist/{config,context}/ +echo "" > /var/lib/honeycomb/persist/context/data.json +echo "" > /var/lib/honeycomb/persist/config/data.json +#/opt/honeycomb/sample-distribution-$VERSION/honeycomb &>/dev/null &disown +systemctl restart honeycomb +sleep 20 + +# Enable traffic flows +cd /opt +chmod +x run_traffic_fw_demo.sh +./run_traffic_fw_demo.sh &>/dev/null &disown diff --git a/vnfs/vFW/scripts/v_packetgen_install_arm64.sh b/vnfs/vFW/scripts/v_packetgen_install_arm64.sh new file mode 100755 index 00000000..8dee6977 --- /dev/null +++ b/vnfs/vFW/scripts/v_packetgen_install_arm64.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -x + +NEXUS_ARTIFACT_REPO=$(cat /opt/config/nexus_artifact_repo.txt) +DEMO_ARTIFACTS_VERSION=$(cat /opt/config/demo_artifacts_version.txt) +if [[ "$DEMO_ARTIFACTS_VERSION" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi +INSTALL_SCRIPT_VERSION=$(cat /opt/config/install_script_version.txt) +CLOUD_ENV=$(cat /opt/config/cloud_env.txt) + +# Convert Network CIDR to Netmask +cdr2mask () { + # Number of args to shift, 255..255, first non-255 byte, zeroes + set -- $(( 5 - ($1 / 8) )) 255 255 255 255 $(( (255 << (8 - ($1 % 8))) & 255 )) 0 0 0 + [ $1 -gt 1 ] && shift $1 || shift + echo ${1-0}.${2-0}.${3-0}.${4-0} +} + +# OpenStack network configuration +if [[ $CLOUD_ENV == "openstack" ]] +then + echo 127.0.0.1 $(hostname) >> /etc/hosts + + # Allow remote login as root + mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bk + cp /home/ubuntu/.ssh/authorized_keys /root/.ssh + + MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1) + + IP=$(cat /opt/config/vpg_private_ip_0.txt) + BITS=$(cat /opt/config/unprotected_private_net_cidr.txt | cut -d"/" -f2) + NETMASK=$(cdr2mask $BITS) + echo "auto enp1s0" >> /etc/network/interfaces + echo "iface enp1s0 inet static" >> /etc/network/interfaces + echo " address $IP" >> /etc/network/interfaces + echo " netmask $NETMASK" >> /etc/network/interfaces + echo " mtu $MTU" >> /etc/network/interfaces + + IP=$(cat /opt/config/vpg_private_ip_1.txt) + BITS=$(cat /opt/config/onap_private_net_cidr.txt | cut -d"/" -f2) + NETMASK=$(cdr2mask $BITS) + echo "auto enp2s0" >> /etc/network/interfaces + echo "iface enp2s0 inet static" >> /etc/network/interfaces + echo " address $IP" >> /etc/network/interfaces + echo " netmask $NETMASK" >> /etc/network/interfaces + echo " mtu $MTU" >> /etc/network/interfaces + + ifup enp1s0 + ifup enp2s0 +fi + +# Download required dependencies +echo "deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list +echo "deb-src http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list +apt-get update +apt-get install --allow-unauthenticated -y make wget openjdk-8-jdk gcc libcurl4-openssl-dev python-pip bridge-utils apt-transport-https ca-certificates +pip install jsonschema + +# Download code for packet generator +mkdir /opt/honeycomb +cd /opt + +unzip -p -j /opt/vfw-scripts-$INSTALL_SCRIPT_VERSION.zip v_packetgen_init_arm64.sh > /opt/v_packetgen_init.sh +unzip -p -j /opt/vfw-scripts-$INSTALL_SCRIPT_VERSION.zip vpacketgen.sh > /opt/vpacketgen.sh +unzip -p -j /opt/vfw-scripts-$INSTALL_SCRIPT_VERSION.zip run_traffic_fw_demo.sh > /opt/run_traffic_fw_demo.sh +wget -O sample-distribution-$DEMO_ARTIFACTS_VERSION-hc.tar.gz "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf&a=sample-distribution&c=hc&e=tar.gz&v=$DEMO_ARTIFACTS_VERSION" +wget -O vfw_pg_streams-$DEMO_ARTIFACTS_VERSION-demo.tar.gz "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vfw&a=vfw_pg_streams&c=demo&e=tar.gz&v=$DEMO_ARTIFACTS_VERSION" + +tar -zmxvf sample-distribution-$DEMO_ARTIFACTS_VERSION-hc.tar.gz +tar -zmxvf vfw_pg_streams-$DEMO_ARTIFACTS_VERSION-demo.tar.gz +mv vfw_pg_streams-$DEMO_ARTIFACTS_VERSION pg_streams +mv sample-distribution-$DEMO_ARTIFACTS_VERSION honeycomb +sed -i 's/"restconf-binding-address": "127.0.0.1",/"restconf-binding-address": "0.0.0.0",/g' honeycomb/sample-distribution-$DEMO_ARTIFACTS_VERSION/config/honeycomb.json +rm *.tar.gz +chmod +x v_packetgen_init.sh +chmod +x vpacketgen.sh + +# Install VPP +rm /etc/apt/sources.list.d/99fd.io.list +echo "deb [trusted=yes] http://linux.enea.com/apt-mk/xenial nightly extra" | sudo tee -a /etc/apt/sources.list.d/99fd.io.list +echo "deb [trusted=yes] http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/queens/main ./" | sudo tee -a /etc/apt/sources.list.d/99fd.io.list +apt-get update +apt-get -o Dpkg::Options::="--force-overwrite" install -y vpp vpp-lib vpp-dbg vpp-plugins vpp-dev dpdk dpdk-dev dpdk-igb-uio-dkms dpdk-rte-kni-dkms honeycomb +sleep 1 + +# Run instantiation script +cd /opt +mv vpacketgen.sh /etc/init.d +update-rc.d vpacketgen.sh defaults +./v_packetgen_init.sh diff --git a/vnfs/vFW/scripts/v_sink_install_arm64.sh b/vnfs/vFW/scripts/v_sink_install_arm64.sh new file mode 100755 index 00000000..73f6ee53 --- /dev/null +++ b/vnfs/vFW/scripts/v_sink_install_arm64.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +INSTALL_SCRIPT_VERSION=$(cat /opt/config/install_script_version.txt) +CLOUD_ENV=$(cat /opt/config/cloud_env.txt) + +# Convert Network CIDR to Netmask +cdr2mask () { + # Number of args to shift, 255..255, first non-255 byte, zeroes + set -- $(( 5 - ($1 / 8) )) 255 255 255 255 $(( (255 << (8 - ($1 % 8))) & 255 )) 0 0 0 + [ $1 -gt 1 ] && shift $1 || shift + echo ${1-0}.${2-0}.${3-0}.${4-0} +} + +# OpenStack network configuration +if [[ $CLOUD_ENV == "openstack" ]] +then + echo 127.0.0.1 $(hostname) >> /etc/hosts + + # Allow remote login as root + mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bk + cp /home/ubuntu/.ssh/authorized_keys /root/.ssh + + MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1) + + IP=$(cat /opt/config/vsn_private_ip_0.txt) + BITS=$(cat /opt/config/protected_private_net_cidr.txt | cut -d"/" -f2) + NETMASK=$(cdr2mask $BITS) + echo "auto enp2s0" >> /etc/network/interfaces + echo "iface enp2s0 inet static" >> /etc/network/interfaces + echo " address $IP" >> /etc/network/interfaces + echo " netmask $NETMASK" >> /etc/network/interfaces + echo " mtu $MTU" >> /etc/network/interfaces + + IP=$(cat /opt/config/vsn_private_ip_1.txt) + BITS=$(cat /opt/config/onap_private_net_cidr.txt | cut -d"/" -f2) + NETMASK=$(cdr2mask $BITS) + echo "auto enp3s0" >> /etc/network/interfaces + echo "iface enp3s0 inet static" >> /etc/network/interfaces + echo " address $IP" >> /etc/network/interfaces + echo " netmask $NETMASK" >> /etc/network/interfaces + echo " mtu $MTU" >> /etc/network/interfaces + + ifup enp2s0 + ifup enp3s0 +fi + +# Download required dependencies +echo "deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list +echo "deb-src http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list +apt-get update +apt-get install --allow-unauthenticated -y make wget openjdk-8-jdk apt-transport-https ca-certificates darkstat + +# Configure and run Darkstat +sed -i "s/START_DARKSTAT=.*/START_DARKSTAT=yes/g" /etc/darkstat/init.cfg +sed -i "s/INTERFACE=.*/INTERFACE=\"-i enp2s0\"/g" /etc/darkstat/init.cfg +/etc/init.d/darkstat start + +# Download scripts for virtual sink +cd /opt +unzip -p -j /opt/vfw-scripts-$INSTALL_SCRIPT_VERSION.zip v_sink_init.sh > /opt/v_sink_init.sh +unzip -p -j /opt/vfw-scripts-$INSTALL_SCRIPT_VERSION.zip vsink.sh > /opt/vsink.sh +chmod +x v_sink_init.sh +chmod +x vsink.sh + +# Run instantiation script +mv vsink.sh /etc/init.d +update-rc.d vsink.sh defaults +./v_sink_init.sh |