diff --git a/doc/appendix.tex b/doc/appendix.tex index c9a18ba..bc1a124 100644 --- a/doc/appendix.tex +++ b/doc/appendix.tex @@ -577,6 +577,571 @@ by the netpfga cannot be sniffed on the nf interfaces directly. Instead one has to sniff packets on a physical network card that is connected to the specific output port. +%--------------------------------------------------------------------------------------------------------- +\chapter{\label{benchmark}Benchmark Logs} +\section{\label{benchmark:iperf}iperf} +Omitting startup time + +\section{\label{benchmark:general}General} + +MTU setting to 1500, as netpfga doesn't support jumbo frames + + +iperf3, iperf 3.0.11 + +50 parallel = 2x 100% cpu usage +40 parallel = 100%, 70% cpu usage +30 parallel = 70%-100, 70% cpu usage + +Turning back on checksum offloading (see below) + +30 parallel = 70%, 30% cpu usage + + +\begin{verbatim} +root@ESPRIMO-P956:~# ethtool -K enp2s0f0 tx on +Cannot get device udp-fragmentation-offload settings: Operation not supported +Cannot get device udp-fragmentation-offload settings: Operation not supported +Actual changes: +tx-checksumming: on + tx-checksum-ip-generic: on + tx-checksum-sctp: on +tcp-segmentation-offload: on + tx-tcp-segmentation: on + tx-tcp6-segmentation: on +root@ESPRIMO-P956:~# +root@ESPRIMO-P956:~# ethtool -K enp2s0f1 tx on +Cannot get device udp-fragmentation-offload settings: Operation not supported +Cannot get device udp-fragmentation-offload settings: Operation not supported +Actual changes: +tx-checksumming: on + tx-checksum-ip-generic: on + tx-checksum-sctp: on +tcp-segmentation-offload: on + tx-tcp-segmentation: on + tx-tcp6-segmentation: on +root@ESPRIMO-P956:~# ethtool -K enp2s0f1 rx on +Cannot get device udp-fragmentation-offload settings: Operation not supported +Cannot get device udp-fragmentation-offload settings: Operation not supported +root@ESPRIMO-P956:~# + +\end{verbatim} + +Results into + +\begin{verbatim} + +root@ESPRIMO-P956:~# ethtool -k enp2s0f0 +Features for enp2s0f0: +Cannot get device udp-fragmentation-offload settings: Operation not supported +rx-checksumming: on +tx-checksumming: on + tx-checksum-ipv4: off [fixed] + tx-checksum-ip-generic: on + tx-checksum-ipv6: off [fixed] + tx-checksum-fcoe-crc: on [fixed] + tx-checksum-sctp: on +scatter-gather: on + tx-scatter-gather: on + tx-scatter-gather-fraglist: off [fixed] +tcp-segmentation-offload: on + tx-tcp-segmentation: on + tx-tcp-ecn-segmentation: off [fixed] + tx-tcp-mangleid-segmentation: off + tx-tcp6-segmentation: on +udp-fragmentation-offload: off +generic-segmentation-offload: on +generic-receive-offload: on +large-receive-offload: off +rx-vlan-offload: on +tx-vlan-offload: on +ntuple-filters: off +receive-hashing: on +highdma: on [fixed] +rx-vlan-filter: on +vlan-challenged: off [fixed] +tx-lockless: off [fixed] +netns-local: off [fixed] +tx-gso-robust: off [fixed] +tx-fcoe-segmentation: on [fixed] +tx-gre-segmentation: on +tx-gre-csum-segmentation: on +tx-ipxip4-segmentation: on +tx-ipxip6-segmentation: on +tx-udp_tnl-segmentation: on +tx-udp_tnl-csum-segmentation: on +tx-gso-partial: on +tx-sctp-segmentation: off [fixed] +tx-esp-segmentation: off [fixed] +fcoe-mtu: off [fixed] +tx-nocache-copy: off +loopback: off [fixed] +rx-fcs: off [fixed] +rx-all: off +tx-vlan-stag-hw-insert: off [fixed] +rx-vlan-stag-hw-parse: off [fixed] +rx-vlan-stag-filter: off [fixed] +l2-fwd-offload: off +hw-tc-offload: off +esp-hw-offload: off [fixed] +esp-tx-csum-hw-offload: off [fixed] +rx-udp_tunnel-port-offload: off +root@ESPRIMO-P956:~# ethtool -k enp2s0f1 +Features for enp2s0f1: +Cannot get device udp-fragmentation-offload settings: Operation not supported +rx-checksumming: on +tx-checksumming: on + tx-checksum-ipv4: off [fixed] + tx-checksum-ip-generic: on + tx-checksum-ipv6: off [fixed] + tx-checksum-fcoe-crc: on [fixed] + tx-checksum-sctp: on +scatter-gather: on + tx-scatter-gather: on + tx-scatter-gather-fraglist: off [fixed] +tcp-segmentation-offload: on + tx-tcp-segmentation: on + tx-tcp-ecn-segmentation: off [fixed] + tx-tcp-mangleid-segmentation: off + tx-tcp6-segmentation: on +udp-fragmentation-offload: off +generic-segmentation-offload: on +generic-receive-offload: on +large-receive-offload: off +rx-vlan-offload: on +tx-vlan-offload: on +ntuple-filters: off +receive-hashing: on +highdma: on [fixed] +rx-vlan-filter: on +vlan-challenged: off [fixed] +tx-lockless: off [fixed] +netns-local: off [fixed] +tx-gso-robust: off [fixed] +tx-fcoe-segmentation: on [fixed] +tx-gre-segmentation: on +tx-gre-csum-segmentation: on +tx-ipxip4-segmentation: on +tx-ipxip6-segmentation: on +tx-udp_tnl-segmentation: on +tx-udp_tnl-csum-segmentation: on +tx-gso-partial: on +tx-sctp-segmentation: off [fixed] +tx-esp-segmentation: off [fixed] +fcoe-mtu: off [fixed] +tx-nocache-copy: off +loopback: off [fixed] +rx-fcs: off [fixed] +rx-all: off +tx-vlan-stag-hw-insert: off [fixed] +rx-vlan-stag-hw-parse: off [fixed] +rx-vlan-stag-filter: off [fixed] +l2-fwd-offload: off +hw-tc-offload: off +esp-hw-offload: off [fixed] +esp-tx-csum-hw-offload: off [fixed] +rx-udp_tunnel-port-offload: off +root@ESPRIMO-P956:~# + +\end{verbatim} + +\section{\label{benchmark:netpfga}NetFPGA} +iperf3-tcp-listening-v4 connected by v6 +\begin{verbatim} +nico@ESPRIMO-P956:~$ iperf3 -p 2345 -4 -B 10.0.0.42 -s +----------------------------------------------------------- +Server listening on 2345 +----------------------------------------------------------- +Accepted connection from 10.0.0.66, port 50900 +[ 5] local 10.0.0.42 port 2345 connected to 10.0.0.66 port 50902 +[ ID] Interval Transfer Bandwidth +[ 5] 0.00-1.00 sec 693 MBytes 5.81 Gbits/sec +[ 5] 1.00-2.00 sec 645 MBytes 5.41 Gbits/sec +[ 5] 2.00-3.00 sec 644 MBytes 5.40 Gbits/sec +[ 5] 3.00-4.00 sec 868 MBytes 7.28 Gbits/sec +[ 5] 4.00-5.00 sec 853 MBytes 7.16 Gbits/sec +[ 5] 5.00-6.00 sec 913 MBytes 7.66 Gbits/sec +[ 5] 6.00-7.00 sec 774 MBytes 6.49 Gbits/sec +[ 5] 7.00-8.00 sec 641 MBytes 5.38 Gbits/sec +[ 5] 8.00-9.00 sec 911 MBytes 7.64 Gbits/sec +[ 5] 9.00-10.00 sec 733 MBytes 6.15 Gbits/sec +[ 5] 10.00-10.04 sec 25.8 MBytes 5.38 Gbits/sec +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Retr +[ 5] 0.00-10.04 sec 7.52 GBytes 6.43 Gbits/sec 14 sender +[ 5] 0.00-10.04 sec 7.52 GBytes 6.43 Gbits/sec receiver +----------------------------------------------------------- +Server listening on 2345 +----------------------------------------------------------- + +nico@ESPRIMO-P956:~$ iperf3 -6 -p 2345 -c 2001:db8:42::a00:2a +Connecting to host 2001:db8:42::a00:2a, port 2345 +[ 4] local 2001:db8:42::42 port 50902 connected to 2001:db8:42::a00:2a port 2345 +[ ID] Interval Transfer Bandwidth Retr Cwnd +[ 4] 0.00-1.00 sec 719 MBytes 6.03 Gbits/sec 10 449 KBytes +[ 4] 1.00-2.00 sec 645 MBytes 5.41 Gbits/sec 0 449 KBytes +[ 4] 2.00-3.00 sec 644 MBytes 5.40 Gbits/sec 0 449 KBytes +[ 4] 3.00-4.00 sec 878 MBytes 7.36 Gbits/sec 0 449 KBytes +[ 4] 4.00-5.00 sec 859 MBytes 7.20 Gbits/sec 0 449 KBytes +[ 4] 5.00-6.00 sec 910 MBytes 7.64 Gbits/sec 0 449 KBytes +[ 4] 6.00-7.00 sec 758 MBytes 6.36 Gbits/sec 0 449 KBytes +[ 4] 7.00-8.00 sec 658 MBytes 5.52 Gbits/sec 0 449 KBytes +[ 4] 8.00-9.00 sec 906 MBytes 7.60 Gbits/sec 4 449 KBytes +[ 4] 9.00-10.00 sec 724 MBytes 6.07 Gbits/sec 0 449 KBytes +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Retr +[ 4] 0.00-10.00 sec 7.52 GBytes 6.46 Gbits/sec 14 sender +[ 4] 0.00-10.00 sec 7.52 GBytes 6.46 Gbits/sec receiver + +iperf Done. +nico@ESPRIMO-P956:~$ + +\end{verbatim} + +listening on v6, connecting from v4: + +\begin{verbatim} +nico@ESPRIMO-P956:~$ iperf3 -p 2345 -6 -B 2001:db8:42::42 -s +----------------------------------------------------------- +Server listening on 2345 +----------------------------------------------------------- +Accepted connection from 2001:db8:42::a00:2a, port 47520 +[ 5] local 2001:db8:42::42 port 2345 connected to 2001:db8:42::a00:2a port 47522 +[ ID] Interval Transfer Bandwidth +[ 5] 0.00-1.00 sec 1.02 GBytes 8.73 Gbits/sec +[ 5] 1.00-2.00 sec 879 MBytes 7.38 Gbits/sec +[ 5] 2.00-3.00 sec 859 MBytes 7.20 Gbits/sec +[ 5] 3.00-4.00 sec 1.02 GBytes 8.78 Gbits/sec +[ 5] 4.00-5.00 sec 1.04 GBytes 8.89 Gbits/sec +[ 5] 5.00-6.00 sec 1.05 GBytes 9.00 Gbits/sec +[ 5] 6.00-7.00 sec 1.03 GBytes 8.89 Gbits/sec +[ 5] 7.00-8.00 sec 1.04 GBytes 8.91 Gbits/sec +[ 5] 8.00-9.00 sec 1.03 GBytes 8.84 Gbits/sec +[ 5] 9.00-10.00 sec 953 MBytes 7.99 Gbits/sec +[ 5] 10.00-10.04 sec 38.6 MBytes 7.81 Gbits/sec +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Retr +[ 5] 0.00-10.04 sec 9.89 GBytes 8.46 Gbits/sec 151 sender +[ 5] 0.00-10.04 sec 9.89 GBytes 8.46 Gbits/sec receiver +----------------------------------------------------------- +Server listening on 2345 +----------------------------------------------------------- + +nico@ESPRIMO-P956:~$ iperf3 -4 -p 2345 -c 10.0.0.66 +Connecting to host 10.0.0.66, port 2345 +[ 4] local 10.0.0.42 port 47522 connected to 10.0.0.66 port 2345 +[ ID] Interval Transfer Bandwidth Retr Cwnd +[ 4] 0.00-1.00 sec 1.06 GBytes 9.10 Gbits/sec 53 208 KBytes +[ 4] 1.00-2.00 sec 867 MBytes 7.27 Gbits/sec 6 379 KBytes +[ 4] 2.00-3.00 sec 870 MBytes 7.29 Gbits/sec 0 423 KBytes +[ 4] 3.00-4.00 sec 1.02 GBytes 8.77 Gbits/sec 37 364 KBytes +[ 4] 4.00-5.00 sec 1.04 GBytes 8.91 Gbits/sec 1 450 KBytes +[ 4] 5.00-6.00 sec 1.05 GBytes 8.98 Gbits/sec 0 462 KBytes +[ 4] 6.00-7.00 sec 1.04 GBytes 8.92 Gbits/sec 30 324 KBytes +[ 4] 7.00-8.00 sec 1.04 GBytes 8.88 Gbits/sec 0 471 KBytes +[ 4] 8.00-9.00 sec 1.03 GBytes 8.86 Gbits/sec 10 452 KBytes +[ 4] 9.00-10.00 sec 947 MBytes 7.94 Gbits/sec 14 409 KBytes +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Retr +[ 4] 0.00-10.00 sec 9.89 GBytes 8.49 Gbits/sec 151 sender +[ 4] 0.00-10.00 sec 9.89 GBytes 8.49 Gbits/sec receiver + +iperf Done. +nico@ESPRIMO-P956:~$ + +\end{verbatim} +% \section{\label{benchmark:bmv2}BMV2} +%--------------------------------------------------------------------------------------------------------- +\section{\label{benchmark:tayga}Tayga} + + +\begin{verbatim} +ii tayga 0.9.2-6 amd64 userspace stateless NAT64 +\end{verbatim} + +Setting up IPv4 networking + +\begin{verbatim} +[15:12] nsg-System:~# ip addr add 10.0.0.77/24 dev eth1 +[15:12] nsg-System:~# ip l s eth1 up + +nico@ESPRIMO-P956:~$ ~/master-thesis/bin/init_ipv4_esprimo.sh +nico@ESPRIMO-P956:~$ cat ~/master-thesis/bin/init_ipv4_esprimo.sh +#!/bin/sh + +sudo ip addr add 10.0.0.42/24 dev enp2s0f0 +sudo ip link set enp2s0f0 up + +nico@ESPRIMO-P956:~$ sudo ip route add 10.0.1.0/24 via 10.0.0.77 + +\end{verbatim} + +Verify networking works: + +\begin{verbatim} +[15:12] nsg-System:~# ping 10.0.0.42 +PING 10.0.0.42 (10.0.0.42) 56(84) bytes of data. +64 bytes from 10.0.0.42: icmp_seq=1 ttl=64 time=0.304 ms +64 bytes from 10.0.0.42: icmp_seq=2 ttl=64 time=0.097 ms +^C +--- 10.0.0.42 ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1011ms +rtt min/avg/max/mdev = 0.097/0.200/0.304/0.104 ms +[15:12] nsg-System:~# + +\end{verbatim} + +Setting up IPv6 networking + +\begin{verbatim} +nico@ESPRIMO-P956:~$ ip addr show dev enp2s0f1 +13: enp2s0f1: mtu 1500 qdisc mq state UP group default qlen 1000 + link/ether f8:f2:1e:09:62:d1 brd ff:ff:ff:ff:ff:ff + inet6 2001:db8:42::42/64 scope global + valid_lft forever preferred_lft forever + inet6 fe80::faf2:1eff:fe09:62d1/64 scope link + valid_lft forever preferred_lft forever +nico@ESPRIMO-P956:~$ sudo ip route add 2001:db8:23::/96 via 2001:db8:42::77 + +[15:12] nsg-System:~# ip addr add 2001:db8:42::77/64 dev eth2 +[15:15] nsg-System:~# ip link set eth2 up + +\end{verbatim} + +Verify IPv6 networking works: + +\begin{verbatim} +nico@ESPRIMO-P956:~$ ping6 -c2 2001:db8:42::77 +PING 2001:db8:42::77(2001:db8:42::77) 56 data bytes +64 bytes from 2001:db8:42::77: icmp_seq=1 ttl=64 time=0.169 ms +64 bytes from 2001:db8:42::77: icmp_seq=2 ttl=64 time=0.153 ms + +--- 2001:db8:42::77 ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1010ms +rtt min/avg/max/mdev = 0.153/0.161/0.169/0.008 ms +nico@ESPRIMO-P956:~$ + +\end{verbatim} + +Enabling IPv6 and IPv4 forwarding: + +\begin{verbatim} +[15:16] nsg-System:~# sysctl -w net.ipv6.conf.all.forwarding=1 +net.ipv6.conf.all.forwarding = 1 + +[15:20] nsg-System:~# sysctl -w net.ipv4.ip_forward=1 +net.ipv4.ip_forward = 1 + +\end{verbatim} + + +Testing NAT64 in tayga + +\begin{verbatim} +nico@ESPRIMO-P956:~$ ping -c2 10.0.1.42 +PING 10.0.1.42 (10.0.1.42) 56(84) bytes of data. +64 bytes from 10.0.1.42: icmp_seq=1 ttl=61 time=0.356 ms +64 bytes from 10.0.1.42: icmp_seq=2 ttl=61 time=0.410 ms + +--- 10.0.1.42 ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1019ms +rtt min/avg/max/mdev = 0.356/0.383/0.410/0.027 ms +nico@ESPRIMO-P956:~$ + +nico@ESPRIMO-P956:~$ sudo tcpdump -ni enp2s0f1 +tcpdump: verbose output suppressed, use -v or -vv for full protocol decode +listening on enp2s0f1, link-type EN10MB (Ethernet), capture size 262144 bytes +15:21:39.851057 IP6 2001:db8:23::a00:2a > 2001:db8:42::42: ICMP6, echo request, seq 1, length 64 +15:21:39.851124 IP6 2001:db8:42::42 > 2001:db8:23::a00:2a: ICMP6, echo reply, seq 1, length 64 +15:21:40.870448 IP6 2001:db8:23::a00:2a > 2001:db8:42::42: ICMP6, echo request, seq 2, length 64 +15:21:40.870507 IP6 2001:db8:42::42 > 2001:db8:23::a00:2a: ICMP6, echo reply, seq 2, length 64 +^C +4 packets captured +4 packets received by filter +0 packets dropped by kernel +nico@ESPRIMO-P956:~$ + +\end{verbatim} + +Testing NAT64 (v6 to v4) + +\begin{verbatim} +nico@ESPRIMO-P956:~$ ping6 -c2 2001:db8:23::a00:2a +PING 2001:db8:23::a00:2a(2001:db8:23::a00:2a) 56 data bytes +64 bytes from 2001:db8:23::a00:2a: icmp_seq=1 ttl=61 time=0.240 ms +64 bytes from 2001:db8:23::a00:2a: icmp_seq=2 ttl=61 time=0.400 ms + +--- 2001:db8:23::a00:2a ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1003ms +rtt min/avg/max/mdev = 0.240/0.320/0.400/0.080 ms +nico@ESPRIMO-P956:~$ + +\end{verbatim} + +\subsection{\label{benchmark:tayga:tcp}Tayga/TCP} + +Tayga running at 100% cpu load, + +v4->v6 tcp +delivering +3.36 gbit/s at P1 +3.30 Gbit/s at P20 +3.11 gbit/s at P50 + +v6->v4 tcp +P1: 3.02 Gbit/s +P20: 3.28 gbit/s +P50: 2.85 gbit/s + +Commands: + +\begin{verbatim} + +Server always: iperf3 -6 -p 2345 -B 2001:db8:42::42 -s | tee iperf-tayga-v4tov6server-P50 + + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P1 -c 10.0.1.42 -T taygav4tov6tcpP1 | tee iperf-tayga-v4tov6server-client + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P20 -c 10.0.1.42 -T taygav4tov6tcpP20 | tee iperf-tayga-v4tov6server-client-P20 + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P50 -c 10.0.1.42 -T taygav4tov6tcpP50 | tee iperf-tayga-v4tov6server-client-P50 + + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -B 10.0.0.42 -s | tee iperf-tayga-v6tov4-server-P1 + +\end{verbatim} + + +Testing v6->v4 + +\begin{verbatim} +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -B 10.0.0.42 -s | tee iperf-tayga-v6tov4-server-P20 + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P1 -c 2001:db8:23::a00:2a -T taygav6tov4tcpP1 | tee iperf-tayga-v6tov4-client-P1 + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P20 -c 2001:db8:23::a00:2a -T taygav6tov4tcpP20 | tee iperf-tayga-v6tov4-client-P20 + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P50 -c 2001:db8:23::a00:2a -T taygav6tov4tcpP50 | tee iperf-tayga-v6tov4-client-P50 + +\end{verbatim} + +UDP v6->v4, again 100% cpu + +P1: 5.81 gbit/s +P20: 9.40 gbit/s +P50: 19.6 Gbits/sec + +On the line only ca. 3600 mbit/s seen + +\begin{verbatim} +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -B 10.0.0.42 -s | tee iperf-tayga-v6tov4-server-udp-P1 + + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P1 -u -b10000m -c 2001:db8:23::a00:2a -T taygav6tov4tcpP50 | tee iperf-tayga-v6tov4-client-udp-P1 + + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P50 -u -b10000m -c 2001:db8:23::a00:2a -T taygav6tov4tcpP50 | tee iperf-tayga-v6tov4-client-udp-P50 + + +\end{verbatim} + +Messsages from server: + +\begin{verbatim} +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -B 10.0.0.42 -s | tee iperf-tayga-v6tov4-server-udp-P1 +iperf3: OUT OF ORDER - incoming packet = 198902 and received packet = 198904 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 441615 and received packet = 441617 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 441616 and received packet = 441618 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 567495 and received packet = 567501 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 567496 and received packet = 567501 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 567497 and received packet = 567501 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 567499 and received packet = 567503 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 567500 and received packet = 567503 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 567502 and received packet = 567503 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 631160 and received packet = 631164 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 631161 and received packet = 631164 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 631162 and received packet = 631165 AND SP = 5 +iperf3: OUT OF ORDER - incoming packet = 631163 and received packet = 631165 AND SP = 5 + +\end{verbatim} + + +UDP v4->v6, again 100% cpu + +P1: 8.26 gbit/s [atop: ~2500 Mbit/s per direction] +P20: 9.92 Gbits/sec [atop: ~2500 Mbit/s per direction] +P50: 19.3 gbit/s [atop: ~2500 Mbit/s per direction] + +\begin{verbatim} +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -B 2001:db8:42::42 -s | tee iperf-tayga-v4tov6-server-udp-P1 + + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P1 -u -b0 -c 10.0.1.42 -T taygav4tov6udpP1 | tee iperf-tayga-v4tov6server-client-udp-P1 + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P20 -u -b0 -c 10.0.1.42 -T taygav4tov6udpP20 | tee iperf-tayga-v4tov6server-client-udp-P20 + +nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P50 -u -b0 -c 10.0.1.42 -T taygav4tov6udpP50 | tee iperf-tayga-v4tov6server-client-udp-P50 + +\end{verbatim} + +%--------------------------------------------------------------------------------------------------------- + +\section{\label{benchmark:jool}Jool} +\subsection{\label{benchmark:jool:setup}Jool Setup} + +Installation of 4.0.1 from \url{https://www.jool.mx/en/download.html}. + +\begin{verbatim} +nico@nsg-System:~$ wget https://github.com/NICMx/Jool/releases/download/v4.0.1/jool_4.0.1.tar.gz +nico@nsg-System:~$ tar xvfz jool_4.0.1.tar.gz +nico@nsg-System:~$ cd jool-4.0.1/ +nico@nsg-System:~/jool-4.0.1$ sudo apt install linux-headers-$(uname -r) +nico@nsg-System:~/jool-4.0.1$ sudo apt install libnl-genl-3-dev + +\end{verbatim} + +xtables cannot be found: + +\begin{verbatim} +nico@nsg-System:~/jool-4.0.1$ sudo apt install libxtables-dev +Reading package lists... Done +Building dependency tree +Reading state information... Done +E: Unable to locate package libxtables-dev +nico@nsg-System:~/jool-4.0.1$ + +\end{verbatim} + +Does not compile without: + +\begin{verbatim} +checking for library containing argp_parse... none required +checking for pkg-config... /usr/bin/pkg-config +checking pkg-config is at least version 0.9.0... yes +checking for LIBNLGENL3... yes +checking for XTABLES... no +configure: error: Package requirements (xtables) were not met: + +No package 'xtables' found + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables XTABLES_CFLAGS +and XTABLES_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +nico@nsg-System:~/jool-4.0.1$ + +\end{verbatim} + +Trying different package: + +\begin{verbatim} +nico@nsg-System:~/jool-4.0.1$ sudo apt install iptables-dev + +\end{verbatim} + +Compiles! %Entries for the list of abbrevations: % diff --git a/doc/plan.org b/doc/plan.org index 95833d5..aeb47ea 100644 --- a/doc/plan.org +++ b/doc/plan.org @@ -8770,7 +8770,8 @@ Trace: create mode 100644 pcap/netfpga-nat64-udp-small-repeat-2019-08-04-0954-enp2s0f0.pcap create mode 100644 pcap/netfpga-nat64-udp-small-repeat-2019-08-04-0954-enp2s0f1.pcap -*** TODO 2019-08-04: problem with longer: ethernet frame check sequence broken: 0x0000000 +*** DONE 2019-08-04: problem with longer: ethernet frame check sequence broken: 0x0000000 + CLOSED: [2019-08-04 Sun 19:29] Points towards incorrect length: ipv4 sending: @@ -8811,7 +8812,8 @@ frame 5: !!!! 30 bytes difference! => 10 zero bytes too much at the end!! frame 6: v4 546 bytes, v6 566 bytes: 20 byte difference, udp checksum broken -*** TODO 2019-08-04: compare netfpga behaviour with bmv2 (version 10.0) +*** DONE 2019-08-04: compare netfpga behaviour with bmv2 (version 10.0) + CLOSED: [2019-08-04 Sun 19:29] **** DONE cat of /etc/passwd works CLOSED: [2019-08-04 Sun 12:00] **** DONE BMV2: 503 character test: works! @@ -8866,8 +8868,8 @@ nico@ESPRIMO-P956:~/master-thesis/bin$ **** DONE Test sizes: 216 bytes do NOT work **** DONE MAXIMUM payload size: 215 0s + 42 + \n = 219 bytes payload CLOSED: [2019-08-04 Sun 13:43] -**** -*** TODO 2019-08-04: retesting with simulation while compiling +*** DONE 2019-08-04: retesting with simulation while compiling: fixed! + CLOSED: [2019-08-04 Sun 19:28] #+BEGIN_CENTER expected (tlast, tkeep, tdata) = (0, ffffffff, 000a4200000a7164114000000100100200450008082222222208081111111108) actual (tlast, tkeep, tdata) = (0, ffffffff, 000a4200000a7264114000000000100200450008082222222208081111111108) @@ -8877,6 +8879,183 @@ actual (tlast, tkeep, tdata) = (0, ffffffff, 000a4200000a726411400000000010020 generated = 1 - checksum off by one (probably because of ID) +*** DONE 2019-08-04: version 10.1/10.2: new maxpacketregion: v4->v6 works + CLOSED: [2019-08-04 Sun 19:42] +#+BEGIN_CENTER +nico@ESPRIMO-P956:~/master-thesis/bin$ ./init_ipv4_esprimo.sh +nico@ESPRIMO-P956:~/master-thesis/bin$ ./set_ipv4_neighbor.sh + +#+END_CENTER + +Test 20 first: + +- Does't work -> missed to add table entries +- Does work after setting table entries +- 300 works +- 1450 works +- 1500 does not work + +Proof: + + create mode 100644 pcap/netfpga-10.2-maxpacket-2019-08-04-1931-enp2s0f0.pcap + create mode 100644 pcap/netfpga-10.2-maxpacket-2019-08-04-1931-enp2s0f1.pcap + +*** DONE 2019-08-04: test v6 -> v4: works for 1420 + CLOSED: [2019-08-04 Sun 20:30] + +Proof: +#+BEGIN_CENTER + create mode 100644 pcap/netfpga-10.2-fromv6tov4-2019-08-04-1943-enp2s0f0.pcap + create mode 100644 pcap/netfpga-10.2-fromv6tov4-2019-08-04-1943-enp2s0f1.pcap + +#+END_CENTER +*** 2019-08-04: udp benchmark: very slow +#+BEGIN_CENTER +nico@ESPRIMO-P956:~$ iperf3 -p 2345 -6 -B 2001:db8:42::42 -s +----------------------------------------------------------- +Server listening on 2345 +----------------------------------------------------------- +Accepted connection from 2001:db8:42::a00:2a, port 47524 +[ 5] local 2001:db8:42::42 port 2345 connected to 2001:db8:42::a00:2a port 46493 +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-1.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 1.00-2.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 3.00-4.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 4.00-5.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 6.00-7.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 7.00-8.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 9.00-10.00 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +[ 5] 10.00-10.04 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (-nan%) +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 5] 0.00-10.04 sec 1.24 MBytes 1.04 Mbits/sec 0.000 ms 0/0 (-nan%) +----------------------------------------------------------- +Server listening on 2345 +----------------------------------------------------------- + +#+END_CENTER + +-> selecting right options: + +#+BEGIN_CENTER +nico@ESPRIMO-P956:~$ iperf3 -4 -p 2345 -u -b 10000m -c 10.0.0.66 +Connecting to host 10.0.0.66, port 2345 +[ 4] local 10.0.0.42 port 51656 connected to 10.0.0.66 port 2345 +[ ID] Interval Transfer Bandwidth Total Datagrams +[ 4] 0.00-1.00 sec 861 MBytes 7.22 Gbits/sec 110186 +[ 4] 1.00-2.00 sec 763 MBytes 6.40 Gbits/sec 97656 +[ 4] 2.00-3.00 sec 763 MBytes 6.40 Gbits/sec 97656 +[ 4] 3.00-4.00 sec 756 MBytes 6.35 Gbits/sec 96822 +[ 4] 4.00-5.00 sec 744 MBytes 6.24 Gbits/sec 95272 +[ 4] 5.00-6.00 sec 744 MBytes 6.24 Gbits/sec 95272 +[ 4] 6.00-7.00 sec 712 MBytes 5.97 Gbits/sec 91110 +[ 4] 7.00-8.00 sec 678 MBytes 5.69 Gbits/sec 86823 +[ 4] 8.00-9.00 sec 678 MBytes 5.69 Gbits/sec 86800 +[ 4] 9.00-10.00 sec 678 MBytes 5.69 Gbits/sec 86807 +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 4] 0.00-10.00 sec 7.21 GBytes 6.19 Gbits/sec 0.000 ms 0/0 (-nan%) +[ 4] Sent 0 datagrams + +iperf Done. +nico@ESPRIMO-P956:~$ iperf3 -4 -p 2345 -u -b 10000m -c 10.0.0.66 +Connecting to host 10.0.0.66, port 2345 +[ 4] local 10.0.0.42 port 56675 connected to 10.0.0.66 port 2345 +[ ID] Interval Transfer Bandwidth Total Datagrams +[ 4] 0.00-1.00 sec 434 MBytes 3.64 Gbits/sec 55548 +[ 4] 1.00-2.00 sec 484 MBytes 4.06 Gbits/sec 62000 +[ 4] 2.00-3.00 sec 484 MBytes 4.06 Gbits/sec 62005 +[ 4] 3.00-4.00 sec 484 MBytes 4.06 Gbits/sec 62002 +[ 4] 4.00-5.00 sec 484 MBytes 4.06 Gbits/sec 62001 +[ 4] 5.00-6.00 sec 484 MBytes 4.06 Gbits/sec 62002 +[ 4] 6.00-7.00 sec 484 MBytes 4.06 Gbits/sec 62005 +[ 4] 7.00-8.00 sec 484 MBytes 4.06 Gbits/sec 62001 +[ 4] 8.00-9.00 sec 484 MBytes 4.06 Gbits/sec 62000 +[ 4] 9.00-10.00 sec 484 MBytes 4.06 Gbits/sec 62007 +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 4] 0.00-10.00 sec 4.68 GBytes 4.02 Gbits/sec 0.000 ms 0/0 (-nan%) +[ 4] Sent 0 datagrams + +iperf Done. + + +nico@ESPRIMO-P956:~$ iperf3 -4 -p 2345 -u -b 10000m -t 60 -c 10.0.0.66 +Connecting to host 10.0.0.66, port 2345 +[ 4] local 10.0.0.42 port 46240 connected to 10.0.0.66 port 2345 +[ ID] Interval Transfer Bandwidth Total Datagrams +[ 4] 0.00-1.00 sec 432 MBytes 3.63 Gbits/sec 55321 +[ 4] 1.00-2.00 sec 484 MBytes 4.06 Gbits/sec 62001 +[ 4] 2.00-3.00 sec 484 MBytes 4.06 Gbits/sec 62006 +[ 4] 3.00-4.00 sec 484 MBytes 4.06 Gbits/sec 62001 +[ 4] 4.00-5.00 sec 484 MBytes 4.06 Gbits/sec 62000 +[ 4] 5.00-6.00 sec 484 MBytes 4.06 Gbits/sec 62007 +[ 4] 6.00-7.00 sec 484 MBytes 4.06 Gbits/sec 62001 +[ 4] 7.00-8.00 sec 484 MBytes 4.06 Gbits/sec 62000 +[ 4] 8.00-9.00 sec 484 MBytes 4.06 Gbits/sec 62004 +[ 4] 9.00-10.00 sec 484 MBytes 4.06 Gbits/sec 62003 +[ 4] 10.00-11.00 sec 484 MBytes 4.06 Gbits/sec 62001 +[ 4] 11.00-12.00 sec 484 MBytes 4.06 Gbits/sec 62002 +[ 4] 12.00-13.00 sec 735 MBytes 6.16 Gbits/sec 94024 +[ 4] 13.00-14.00 sec 776 MBytes 6.51 Gbits/sec 99305 +[ 4] 14.00-15.00 sec 763 MBytes 6.40 Gbits/sec 97655 +[ 4] 15.00-16.00 sec 700 MBytes 5.87 Gbits/sec 89566 +[ 4] 16.00-17.00 sec 564 MBytes 4.73 Gbits/sec 72249 +[ 4] 17.00-18.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 18.00-19.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 19.00-20.00 sec 598 MBytes 5.02 Gbits/sec 76591 +[ 4] 20.00-21.00 sec 598 MBytes 5.02 Gbits/sec 76590 +[ 4] 21.00-22.00 sec 598 MBytes 5.02 Gbits/sec 76590 +[ 4] 22.00-23.00 sec 598 MBytes 5.02 Gbits/sec 76590 +[ 4] 23.00-24.00 sec 598 MBytes 5.02 Gbits/sec 76591 +[ 4] 24.00-25.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 25.00-26.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 26.00-27.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 27.00-28.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 28.00-29.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 29.00-30.00 sec 598 MBytes 5.02 Gbits/sec 76591 +[ 4] 30.00-31.00 sec 598 MBytes 5.02 Gbits/sec 76590 +[ 4] 31.00-32.00 sec 598 MBytes 5.02 Gbits/sec 76590 +[ 4] 32.00-33.00 sec 598 MBytes 5.02 Gbits/sec 76590 +[ 4] 33.00-34.00 sec 598 MBytes 5.02 Gbits/sec 76591 +[ 4] 34.00-35.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 35.00-36.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 36.00-37.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 37.00-38.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 38.00-39.00 sec 598 MBytes 5.02 Gbits/sec 76592 +[ 4] 39.00-40.00 sec 598 MBytes 5.02 Gbits/sec 76591 +[ 4] 40.00-41.00 sec 587 MBytes 4.92 Gbits/sec 75130 +[ 4] 41.00-42.00 sec 587 MBytes 4.92 Gbits/sec 75119 +[ 4] 42.00-43.00 sec 587 MBytes 4.92 Gbits/sec 75116 +[ 4] 43.00-44.00 sec 587 MBytes 4.92 Gbits/sec 75117 +[ 4] 44.00-45.00 sec 587 MBytes 4.92 Gbits/sec 75120 +[ 4] 45.00-46.00 sec 587 MBytes 4.92 Gbits/sec 75120 +[ 4] 46.00-47.00 sec 587 MBytes 4.92 Gbits/sec 75118 +[ 4] 47.00-48.00 sec 587 MBytes 4.92 Gbits/sec 75116 +[ 4] 48.00-49.00 sec 587 MBytes 4.92 Gbits/sec 75118 +[ 4] 49.00-50.00 sec 587 MBytes 4.92 Gbits/sec 75120 +[ 4] 50.00-51.00 sec 587 MBytes 4.92 Gbits/sec 75120 +[ 4] 51.00-52.00 sec 587 MBytes 4.92 Gbits/sec 75117 +[ 4] 52.00-53.00 sec 587 MBytes 4.92 Gbits/sec 75115 +[ 4] 53.00-54.00 sec 587 MBytes 4.92 Gbits/sec 75120 +[ 4] 54.00-55.00 sec 587 MBytes 4.92 Gbits/sec 75120 +[ 4] 55.00-56.00 sec 587 MBytes 4.92 Gbits/sec 75119 +[ 4] 56.00-57.00 sec 587 MBytes 4.92 Gbits/sec 75116 +[ 4] 57.00-58.00 sec 587 MBytes 4.92 Gbits/sec 75117 +[ 4] 58.00-59.00 sec 587 MBytes 4.92 Gbits/sec 75120 +[ 4] 59.00-60.00 sec 587 MBytes 4.92 Gbits/sec 75120 +- - - - - - - - - - - - - - - - - - - - - - - - - +[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams +[ 4] 0.00-60.00 sec 34.0 GBytes 4.87 Gbits/sec 0.000 ms 0/0 (-nan%) +[ 4] Sent 0 datagrams + +iperf Done. +nico@ESPRIMO-P956:~$ + +#+END_CENTER ** The NetPFGA saga Problems encountered: - The logfile for a compile run is 10k+ lines @@ -9018,6 +9197,7 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project #+END_CENTER ** References / Follow up +*** TODO Board *** RFC 791 IPv4 https://tools.ietf.org/html/rfc791 *** RFC 792 ICMP https://tools.ietf.org/html/rfc792 *** RFC 826 ARP https://tools.ietf.org/html/rfc826 @@ -9027,7 +9207,6 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project - Referenced by RFC2464 - Obsoleted by RFC3513 - *** RFC 2460 IPv6 (Checksum https://tools.ietf.org/html/rfc2460#section-8.1) *** RFC 2464 Transmission of IPv6 Packets over Ethernet Networks https://tools.ietf.org/html/rfc2464 - embedding of Mac addresses @@ -9054,7 +9233,6 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project are defined in Section 6. - does not translate IPv6 extension headers except the Fragment Header. - *** EAMT/Jool: https://www.jool.mx/en/eamt.html *** Solicited node multicast address https://en.wikipedia.org/wiki/Solicited-node_multicast_address *** Scapy / IPv6: https://www.idsv6.de/Downloads/IPv6PacketCreationWithScapy.pdf