summaryrefslogtreecommitdiffstats
path: root/hicn-plugin/src/host_stack/testbed
diff options
context:
space:
mode:
authorMauro Sardara <msardara@cisco.com>2020-03-24 17:34:14 +0000
committerMauro Sardara <msardara@cisco.com>2020-09-14 17:31:15 +0000
commit88509fe353767cbde707c3e3b1f29392957819f3 (patch)
treecccd51bac7966cd3138c525e8075d90341184a66 /hicn-plugin/src/host_stack/testbed
parentd875ae92a7fa1eaab3bc2616aeeedfc64a81fea4 (diff)
[HICN-574] Host stack plugin for VPP.
Signed-off-by: Mauro Sardara <msardara@cisco.com> Change-Id: I8d8fdffef31a7013265d6529c5f52f3d5ec70d18 Signed-off-by: Mauro Sardara <msardara@cisco.com> Signed-off-by: Mauro <you@example.com> Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'hicn-plugin/src/host_stack/testbed')
-rw-r--r--hicn-plugin/src/host_stack/testbed/Dockerfile46
-rw-r--r--hicn-plugin/src/host_stack/testbed/client-startup.txt6
-rw-r--r--hicn-plugin/src/host_stack/testbed/init.sh6
-rw-r--r--hicn-plugin/src/host_stack/testbed/run-client-server.sh24
-rw-r--r--hicn-plugin/src/host_stack/testbed/server-startup.txt7
-rw-r--r--hicn-plugin/src/host_stack/testbed/startup-client.conf188
-rw-r--r--hicn-plugin/src/host_stack/testbed/startup-server.conf189
-rw-r--r--hicn-plugin/src/host_stack/testbed/test_hicn_hs.txt6
-rw-r--r--hicn-plugin/src/host_stack/testbed/vcl.conf7
9 files changed, 479 insertions, 0 deletions
diff --git a/hicn-plugin/src/host_stack/testbed/Dockerfile b/hicn-plugin/src/host_stack/testbed/Dockerfile
new file mode 100644
index 000000000..4e7005938
--- /dev/null
+++ b/hicn-plugin/src/host_stack/testbed/Dockerfile
@@ -0,0 +1,46 @@
+FROM ubuntu:18.04
+
+ARG USERNAME=ubuntu
+ARG USER_UID=1000
+ARG USER_GID=$USER_UID
+
+ARG VPP_GRP=vpp
+ARG VPP_GID=998
+
+ARG WORKDIR=/home/ubuntu
+
+RUN apt-get update \
+ && apt-get -y install --no-install-recommends apt-utils sudo dialog build-essential \
+ cmake cppcheck valgrind curl autoconf automake ccache debhelper dkms git libtool \
+ libapr1-dev dh-systemd libconfuse-dev git-review exuberant-ctags cscope pkg-config \
+ lcov chrpath autoconf indent clang-format libnuma-dev python-all python3-all \
+ python3-setuptools python-dev python-virtualenv python-pip libffi6 check \
+ libboost-all-dev libffi-dev python3-ply libmbedtls-dev cmake ninja-build uuid-dev \
+ python3-jsonschema gdb libssl-dev python-setuptools zsh 2>&1 \
+ #
+ # Verify git, process tools, lsb-release (useful for CLI installs) installed
+ && apt-get -y install git procps lsb-release curl iproute2 \
+ #
+ # Create a non-root user to use if preferred - see https://aka.ms/vscode-remote/containers/non-root-user.
+ && groupadd --gid $USER_GID $USERNAME \
+ && useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
+ # [Optional] Uncomment the next three lines to add sudo support
+ && apt-get install -y sudo \
+ && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
+ && chmod 0440 /etc/sudoers.d/$USERNAME \
+ # Create vpp group
+ && groupadd --gid $VPP_GID $VPP_GRP \
+ #
+ && mkdir -p $WORKDIR \
+ #
+ # Clean up
+ && apt-get autoremove -y \
+ && apt-get clean -y \
+ && rm -rf /var/lib/apt/lists/*
+
+USER $USERNAME
+COPY init.sh /init.sh
+
+WORKDIR $WORKDIR
+
+CMD ["bash", "/init.sh"]
diff --git a/hicn-plugin/src/host_stack/testbed/client-startup.txt b/hicn-plugin/src/host_stack/testbed/client-startup.txt
new file mode 100644
index 000000000..7165265b3
--- /dev/null
+++ b/hicn-plugin/src/host_stack/testbed/client-startup.txt
@@ -0,0 +1,6 @@
+create interface memif id 0 master
+set int state memif0/0 up
+set int ip addr memif0/0 192.168.10.1/24
+set int ip addr memif0/0 2001::1/64
+ip route add b001::/64 via 2001::2 memif0/0
+#hicn enable b001::/64 \ No newline at end of file
diff --git a/hicn-plugin/src/host_stack/testbed/init.sh b/hicn-plugin/src/host_stack/testbed/init.sh
new file mode 100644
index 000000000..3017c2fea
--- /dev/null
+++ b/hicn-plugin/src/host_stack/testbed/init.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+sudo modprobe uio_pci_generic
+sudo cp /home/ubuntu/host-stack/install/lib/libhicn.so /usr/lib/libhicn.so
+
+tail -f /dev/null \ No newline at end of file
diff --git a/hicn-plugin/src/host_stack/testbed/run-client-server.sh b/hicn-plugin/src/host_stack/testbed/run-client-server.sh
new file mode 100644
index 000000000..53388cdda
--- /dev/null
+++ b/hicn-plugin/src/host_stack/testbed/run-client-server.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+docker run -d \
+ --privileged \
+ --cap-add=ALL \
+ --security-opt seccomp=unconfined \
+ --hostname=vpp-client \
+ -e STARTUP_CONF=/home/ubuntu/host-stack/vpp/testbed/startup-client.conf \
+ -v /home/ubuntu/host-stack:/home/ubuntu/host-stack \
+ -v /dev:/dev -v /lib/modules:/lib/modules \
+ -v /var/run/vpp:/var/run/vpp \
+ --name vpp-client vpp-develop
+
+docker run -d \
+ --privileged \
+ --cap-add=SYS_PTRACE \
+ --security-opt seccomp=unconfined \
+ --hostname=vpp-server \
+ -e STARTUP_CONF=/home/ubuntu/host-stack/vpp/testbed/startup-server.conf \
+ --cap-add=NET_ADMIN \
+ -v /home/ubuntu/host-stack:/home/ubuntu/host-stack \
+ -v /dev:/dev -v /lib/modules:/lib/modules \
+ -v /var/run/vpp:/var/run/vpp \
+ --name vpp-server vpp-develop \ No newline at end of file
diff --git a/hicn-plugin/src/host_stack/testbed/server-startup.txt b/hicn-plugin/src/host_stack/testbed/server-startup.txt
new file mode 100644
index 000000000..1b4d54338
--- /dev/null
+++ b/hicn-plugin/src/host_stack/testbed/server-startup.txt
@@ -0,0 +1,7 @@
+create interface memif id 0 slave
+set int state memif0/0 up
+set int ip addr memif0/0 192.168.10.2/24
+set int ip addr memif0/0 2001::2/64
+hicn hs set local prefix b001::/16
+#test hicn hs server uri hicn://b001::/64
+#hicn enable b001::/64
diff --git a/hicn-plugin/src/host_stack/testbed/startup-client.conf b/hicn-plugin/src/host_stack/testbed/startup-client.conf
new file mode 100644
index 000000000..fb0c89c87
--- /dev/null
+++ b/hicn-plugin/src/host_stack/testbed/startup-client.conf
@@ -0,0 +1,188 @@
+
+unix {
+ nodaemon
+ interactive
+ log /var/log/vpp/vpp.log
+ full-coredump
+ cli-listen /run/vpp/cli.sock
+ gid vpp
+ startup-config /home/ubuntu/host-stack/vpp/testbed/client-startup.txt
+}
+
+api-trace {
+## This stanza controls binary API tracing. Unless there is a very strong reason,
+## please leave this feature enabled.
+ on
+## Additional parameters:
+##
+## To set the number of binary API trace records in the circular buffer, configure nitems
+##
+## nitems <nnn>
+##
+## To save the api message table decode tables, configure a filename. Results in /tmp/<filename>
+## Very handy for understanding api message changes between versions, identifying missing
+## plugins, and so forth.
+##
+## save-api-table <filename>
+}
+
+api-segment {
+ gid vpp
+}
+
+socksvr {
+ default
+}
+
+cpu {
+ ## In the VPP there is one main thread and optionally the user can create worker(s)
+ ## The main thread and worker thread(s) can be pinned to CPU core(s) manually or automatically
+
+ ## Manual pinning of thread(s) to CPU core(s)
+
+ ## Set logical CPU core where main thread runs, if main core is not set
+ ## VPP will use core 1 if available
+ main-core 1
+
+ ## Set logical CPU core(s) where worker threads are running
+ # corelist-workers 2-3,18-19
+
+ ## Automatic pinning of thread(s) to CPU core(s)
+
+ ## Sets number of CPU core(s) to be skipped (1 ... N-1)
+ ## Skipped CPU core(s) are not used for pinning main thread and working thread(s).
+ ## The main thread is automatically pinned to the first available CPU core and worker(s)
+ ## are pinned to next free CPU core(s) after core assigned to main thread
+ # skip-cores 4
+
+ ## Specify a number of workers to be created
+ ## Workers are pinned to N consecutive CPU cores while skipping "skip-cores" CPU core(s)
+ ## and main thread's CPU core
+ # workers 2
+
+ ## Set scheduling policy and priority of main and worker threads
+
+ ## Scheduling policy options are: other (SCHED_OTHER), batch (SCHED_BATCH)
+ ## idle (SCHED_IDLE), fifo (SCHED_FIFO), rr (SCHED_RR)
+ # scheduler-policy fifo
+
+ ## Scheduling priority is used only for "real-time policies (fifo and rr),
+ ## and has to be in the range of priorities supported for a particular policy
+ # scheduler-priority 50
+}
+
+buffers {
+ ## Increase number of buffers allocated, needed only in scenarios with
+ ## large number of interfaces and worker threads. Value is per numa node.
+# Default is 16384 (8192 if running unpriviledged)
+ buffers-per-numa 600000
+ ## Size of buffer data area
+ ## Default is 2048
+ # default data-size 2048
+}
+
+# dpdk {
+ ## Change default settings for all interfaces
+ # dev default {
+ ## Number of receive queues, enables RSS
+ ## Default is 1
+ # num-rx-queues 3
+
+ ## Number of transmit queues, Default is equal
+ ## to number of worker threads or 1 if no workers treads
+ # num-tx-queues 3
+
+ ## Number of descriptors in transmit and receive rings
+ ## increasing or reducing number can impact performance
+ ## Default is 1024 for both rx and tx
+ # num-rx-desc 512
+ # num-tx-desc 512
+
+ ## VLAN strip offload mode for interface
+ ## Default is off
+ # vlan-strip-offload on
+
+ ## TCP Segment Offload
+ ## Default is off
+ ## To enable TSO, 'enable-tcp-udp-checksum' must be set
+ # tso on
+
+ ## Devargs
+ ## device specific init args
+ ## Default is NULL
+ # devargs safe-mode-support=1,pipeline-mode-support=1
+ # }
+
+ ## Whitelist specific interface by specifying PCI address
+ # dev 0000:13:00.0
+
+ ## Blacklist specific device type by specifying PCI vendor:device
+ ## Whitelist entries take precedence
+ # blacklist 8086:10fb
+
+ ## Set interface name
+ # dev 0000:02:00.1 {
+ # name eth0
+ # }
+
+ ## Whitelist specific interface by specifying PCI address and in
+ ## addition specify custom parameters for this interface
+ # dev 0000:02:00.1 {
+ # num-rx-queues 2
+ # }
+
+ ## Change UIO driver used by VPP, Options are: igb_uio, vfio-pci,
+ ## uio_pci_generic or auto (default)
+ # uio-driver vfio-pci
+
+ ## Disable multi-segment buffers, improves performance but
+ ## disables Jumbo MTU support
+ # no-multi-seg
+
+ ## Change hugepages allocation per-socket, needed only if there is need for
+ ## larger number of mbufs. Default is 256M on each detected CPU socket
+ # socket-mem 2048,2048
+
+ ## Disables UDP / TCP TX checksum offload. Typically needed for use
+ ## faster vector PMDs (together with no-multi-seg)
+ # no-tx-checksum-offload
+
+ ## Enable UDP / TCP TX checksum offload
+ ## This is the reversed option of 'no-tx-checksum-offload'
+ # enable-tcp-udp-checksum
+# }
+
+
+plugins {
+ ## Adjusting the plugin path depending on where the VPP plugins are
+ path /home/ubuntu/host-stack/vpp/build-root/install-vpp_debug-native/vpp/lib/x86_64-linux-gnu/vpp_plugins:/home/ubuntu/host-stack/vpp/build-root/install-vpp_debug-native/vpp/lib/vpp_plugins:/home/ubuntu/host-stack/install/lib/vpp_plugins
+ ## Disable all plugins by default and then selectively enable specific plugins
+ plugin default { enable }
+ plugin dpdk_plugin.so { disable }
+ plugin hicn_plugin.so { enable }
+# plugin hicn_plugin.so { enable }
+
+
+ ## Enable all plugins by default and then selectively disable specific plugins
+ # plugin dpdk_plugin.so { disable }
+ # plugin acl_plugin.so { disable }
+}
+
+## Statistics Segment
+# statseg {
+ # socket-name <filename>, name of the stats segment socket
+ # defaults to /run/vpp/stats.sock
+ # size <nnn>[KMG], size of the stats segment, defaults to 32mb
+ # per-node-counters on | off, defaults to none
+ # update-interval <f64-seconds>, sets the segment scrape / update interval
+# }
+
+#hicn {
+# pit-size 2000000
+# cs-size 1000000
+# cs-reserved-app 10
+#}
+
+session { evt_qs_memfd_seg }
+socksvr { socket-name /tmp/vpp-api.sock}
+tcp {cc-algo cubic}
diff --git a/hicn-plugin/src/host_stack/testbed/startup-server.conf b/hicn-plugin/src/host_stack/testbed/startup-server.conf
new file mode 100644
index 000000000..46fc220d8
--- /dev/null
+++ b/hicn-plugin/src/host_stack/testbed/startup-server.conf
@@ -0,0 +1,189 @@
+
+unix {
+ nodaemon
+ interactive
+ log /var/log/vpp/vpp.log
+ full-coredump
+ cli-listen /run/vpp/cli.sock
+ gid vpp
+ startup-config /home/ubuntu/host-stack/vpp/testbed/server-startup.txt
+}
+
+api-trace {
+## This stanza controls binary API tracing. Unless there is a very strong reason,
+## please leave this feature enabled.
+ on
+## Additional parameters:
+##
+## To set the number of binary API trace records in the circular buffer, configure nitems
+##
+## nitems <nnn>
+##
+## To save the api message table decode tables, configure a filename. Results in /tmp/<filename>
+## Very handy for understanding api message changes between versions, identifying missing
+## plugins, and so forth.
+##
+## save-api-table <filename>
+}
+
+api-segment {
+ gid vpp
+}
+
+socksvr {
+ default
+}
+
+cpu {
+ ## In the VPP there is one main thread and optionally the user can create worker(s)
+ ## The main thread and worker thread(s) can be pinned to CPU core(s) manually or automatically
+
+ ## Manual pinning of thread(s) to CPU core(s)
+
+ ## Set logical CPU core where main thread runs, if main core is not set
+ ## VPP will use core 1 if available
+ main-core 2
+
+ ## Set logical CPU core(s) where worker threads are running
+ # corelist-workers 2-3,18-19
+
+ ## Automatic pinning of thread(s) to CPU core(s)
+
+ ## Sets number of CPU core(s) to be skipped (1 ... N-1)
+ ## Skipped CPU core(s) are not used for pinning main thread and working thread(s).
+ ## The main thread is automatically pinned to the first available CPU core and worker(s)
+ ## are pinned to next free CPU core(s) after core assigned to main thread
+ # skip-cores 4
+
+ ## Specify a number of workers to be created
+ ## Workers are pinned to N consecutive CPU cores while skipping "skip-cores" CPU core(s)
+ ## and main thread's CPU core
+ # workers 2
+
+ ## Set scheduling policy and priority of main and worker threads
+
+ ## Scheduling policy options are: other (SCHED_OTHER), batch (SCHED_BATCH)
+ ## idle (SCHED_IDLE), fifo (SCHED_FIFO), rr (SCHED_RR)
+ # scheduler-policy fifo
+
+ ## Scheduling priority is used only for "real-time policies (fifo and rr),
+ ## and has to be in the range of priorities supported for a particular policy
+ # scheduler-priority 50
+}
+
+buffers {
+ ## Increase number of buffers allocated, needed only in scenarios with
+ ## large number of interfaces and worker threads. Value is per numa node.
+# Default is 16384 (8192 if running unpriviledged)
+ buffers-per-numa 600000
+ ## Size of buffer data area
+ ## Default is 2048
+ # default data-size 2048
+}
+
+# dpdk {
+ ## Change default settings for all interfaces
+ # dev default {
+ ## Number of receive queues, enables RSS
+ ## Default is 1
+ # num-rx-queues 3
+
+ ## Number of transmit queues, Default is equal
+ ## to number of worker threads or 1 if no workers treads
+ # num-tx-queues 3
+
+ ## Number of descriptors in transmit and receive rings
+ ## increasing or reducing number can impact performance
+ ## Default is 1024 for both rx and tx
+ # num-rx-desc 512
+ # num-tx-desc 512
+
+ ## VLAN strip offload mode for interface
+ ## Default is off
+ # vlan-strip-offload on
+
+ ## TCP Segment Offload
+ ## Default is off
+ ## To enable TSO, 'enable-tcp-udp-checksum' must be set
+ # tso on
+
+ ## Devargs
+ ## device specific init args
+ ## Default is NULL
+ # devargs safe-mode-support=1,pipeline-mode-support=1
+ # }
+
+ ## Whitelist specific interface by specifying PCI address
+ # dev 0000:13:00.1
+
+ ## Blacklist specific device type by specifying PCI vendor:device
+ ## Whitelist entries take precedence
+ # blacklist 8086:10fb
+
+ ## Set interface name
+ # dev 0000:02:00.1 {
+ # name eth0
+ # }
+
+ ## Whitelist specific interface by specifying PCI address and in
+ ## addition specify custom parameters for this interface
+ # dev 0000:02:00.1 {
+ # num-rx-queues 2
+ # }
+
+ ## Change UIO driver used by VPP, Options are: igb_uio, vfio-pci,
+ ## uio_pci_generic or auto (default)
+ # uio-driver vfio-pci
+
+ ## Disable multi-segment buffers, improves performance but
+ ## disables Jumbo MTU support
+ # no-multi-seg
+
+ ## Change hugepages allocation per-socket, needed only if there is need for
+ ## larger number of mbufs. Default is 256M on each detected CPU socket
+ # socket-mem 2048,2048
+
+ ## Disables UDP / TCP TX checksum offload. Typically needed for use
+ ## faster vector PMDs (together with no-multi-seg)
+ # no-tx-checksum-offload
+
+ ## Enable UDP / TCP TX checksum offload
+ ## This is the reversed option of 'no-tx-checksum-offload'
+ # enable-tcp-udp-checksum
+# }
+
+
+plugins {
+ ## Adjusting the plugin path depending on where the VPP plugins are
+ path /home/ubuntu/host-stack/vpp/build-root/install-vpp_debug-native/vpp/lib/x86_64-linux-gnu/vpp_plugins:/home/ubuntu/host-stack/vpp/build-root/install-vpp_debug-native/vpp/lib/vpp_plugins:/home/ubuntu/host-stack/install/lib/vpp_plugins
+ ## Disable all plugins by default and then selectively enable specific plugins
+ plugin default { enable }
+ plugin dpdk_plugin.so { disable }
+ plugin hicn_plugin.so { enable }
+# plugin memif_plugin.so { enable }
+# plugin hicn_plugin.so { enable }
+
+
+ ## Enable all plugins by default and then selectively disable specific plugins
+ # plugin dpdk_plugin.so { disable }
+ # plugin acl_plugin.so { disable }
+}
+
+## Statistics Segment
+# statseg {
+ # socket-name <filename>, name of the stats segment socket
+ # defaults to /run/vpp/stats.sock
+ # size <nnn>[KMG], size of the stats segment, defaults to 32mb
+ # per-node-counters on | off, defaults to none
+ # update-interval <f64-seconds>, sets the segment scrape / update interval
+# }
+
+#hicn {
+# pit-size 2000000
+# cs-size 1000000
+# cs-reserved-app 10
+#}
+
+session { evt_qs_memfd_seg }
+socksvr { socket-name /tmp/vpp-api.sock}
+tcp {cc-algo cubic}
diff --git a/hicn-plugin/src/host_stack/testbed/test_hicn_hs.txt b/hicn-plugin/src/host_stack/testbed/test_hicn_hs.txt
new file mode 100644
index 000000000..73a5b15f5
--- /dev/null
+++ b/hicn-plugin/src/host_stack/testbed/test_hicn_hs.txt
@@ -0,0 +1,6 @@
+hicn hs set local prefix b001::/8
+test hicn hs server uri hicn://b001::/64
+test hicn hs client uri hicn://b001::1/64
+
+
+b hicn_hs.c:772 if ctx->snd_nxt == 46604 \ No newline at end of file
diff --git a/hicn-plugin/src/host_stack/testbed/vcl.conf b/hicn-plugin/src/host_stack/testbed/vcl.conf
new file mode 100644
index 000000000..694a3e3a1
--- /dev/null
+++ b/hicn-plugin/src/host_stack/testbed/vcl.conf
@@ -0,0 +1,7 @@
+vcl {
+ rx-fifo-size 4000000
+ tx-fifo-size 4000000
+ app-scope-local
+ app-scope-global
+ api-socket-name /tmp/vpp-api.sock
+} \ No newline at end of file