From 27d4d449aa28311a902f40bb793361884d07c67c Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 20 Aug 2019 01:29:26 +0200 Subject: [PATCH] Cleanup appendix --- doc/Conclusion.tex | 3 + doc/Results.tex | 273 +++---- doc/Thesis.pdf | Bin 1402834 -> 1393359 bytes doc/appendix.tex | 1807 +++++++++++--------------------------------- 4 files changed, 591 insertions(+), 1492 deletions(-) diff --git a/doc/Conclusion.tex b/doc/Conclusion.tex index 996ff43..47e89cb 100644 --- a/doc/Conclusion.tex +++ b/doc/Conclusion.tex @@ -66,3 +66,6 @@ Long term supporting python3 would be helpful. P4OS. - react on FIN/RST (?) -- could be an addition + P4os - reusable code + + Future work: session handling diff --git a/doc/Results.tex b/doc/Results.tex index d0c8996..6a8b6fd 100644 --- a/doc/Results.tex +++ b/doc/Results.tex @@ -14,12 +14,26 @@ P4 software implementation. % ok % ---------------------------------------------------------------------- \section{\label{results:p4}P4 based implementations} +We successfully implemented P4 code to realise +NAT64~\cite{schottelius:thesisrepo}. It contains parsers +for all related protocols (ipv6, ipv4, udp, tcp, icmp, icmp6, ndp, +arp), supports EAMT as defined by RFC7757 ~\cite{rfc7757} and is +feature equivalent to the two compared software solutions +tayga~\cite{lutchansky:_tayga_simpl_nat64_linux} and +jool~\cite{mexico:_jool_open_sourc_siit_nat64_linux}. +Due to limitations in the P4 environment of the +NetFPGA~\cite{conclusion:netfpga} environment, the BMV2 implementation +is more feature rich. Table \ref{tab:benchmark} summarises the +achieved bandwidths of the NAT64 solutions. + +BEFORE OR AFTER MARKER - FIXME + All planned features could be realised with P4 and a controller. For this thesis the parsing capabilities of P4 were adequate. However P4, at the time of writing, cannot parse ICMP6 options in general, as the upper level protocol does not specify the number of options that follow and parsing of an undefined number -of 64 bit blocks is required. +of 64 bit blocks is required, which P4 does not support. The language has some limitations on where the placement of conditional statements (\texttt{if/switch}).\footnote{In general, @@ -61,34 +75,15 @@ The supporting scripts in the P4 toolchain are usually written in python2. However python2 ``is legacy''~\cite{various:_shoul_i_python_python}. During development errors with unicode string handling in python2 caused -changes to IPv6 addresses.~\ref{appendix:p4:python2unicode} - -P4os - reusable code - -% idomatic problem: Security issue: not checking checksums before - - -****** TODO IPv6 udp -> IPv4 -- Got 4-5 tuple ([proto], src ip, src port, dst ip, dst port) -- Does not / never signal end -- Needs timeout for cleaning up - - P4/BMV2 thus -allows us to closest resemble any other translation implementation. - -Only supporting /96, not other embeddings as described in -section \ref{background:transition:prefixnat}. - +changes to IPv6 addresses.\footnote{Compare section ~\ref{appendix:p4:python2unicode}.} +% ok % ---------------------------------------------------------------------- -\subsection{\label{Results:BMV2}BMV2} +\section{\label{results:bmv2}P4/BMV2} The software implementation of P4 has most features, which is -mostly due to the capability of checksumming the payload: Acting -as a ``proper'' participant in NDP, requires the host to calculate -checksums over the payload. - - -List of features BMV2 ~\cite{tab:p4bmv2features} - +mostly due to the capability of creating checksums over the payload. +It enables the switch to act as a ``proper'' participant in NDP, as +this requires the host to calculate checksums over the payload. +Table~\ref{tab:p4bmv2features} references all implemented features. \begin{table}[htbp] \begin{center}\begin{minipage}{\textwidth} \begin{tabular}{| c | c | c |} @@ -140,42 +135,38 @@ fully implemented\footnote{Source code: \texttt{checksum\_bmv2.p4}}\\ \hline \end{tabular} \end{minipage} -\caption{P4 / BMV2 feature list} +\caption{P4/BMV2 feature list} \label{tab:p4bmv2features} \end{center} \end{table} +The switch responds to ICMP echo requests, ICMP6 echo requests, +answers NDP and ARP requests. Overall P4/BMV is very easy to use +even without a controller a fully functional network host can be +implemented. -Responds to icmp, icmp6 -ndp ~\cite{rfc4861} -arp - -very easy to use - -Fully functional host -Can compute checksums on its own. - -focus on typical use cases of icmp, icmp6, the software implementation -supports translating echo request and echo reply messages, but does -not support all ICMP/ICMP6 translations that are defined in +This P4/BMV implementation supports translating ICMP/ICMP6 +echo request and echo reply messages, but does not support +all ICMP/ICMP6 translations that are defined in RFC6145~\cite{rfc6145}. - -Stateful : no automatic removal - -Session management not benchmarked, as it is only a matter of creating -table entries. - -Jool and tayga are supported by - - % ---------------------------------------------------------------------- -\subsection{\label{results:netpfga}NetFPGA - FIXME: writing} -The reduced feature set of the NetPFGA implementation is due to two -factors: compile time. Between 2 to 6 hours per compile run. No -payload checksum - -overview - general translation - not advanced features +\section{\label{results:netpfga}P4/NetFPGA} +In the following section we describe the achieved feature set of +P4/NetFPGA in detail and analyse differences to the BMV2 based +implementation. +% ok % ---------------------------------------------------------------------- -\subsubsection{\label{results:netpfga:features}Features} +\subsection{\label{results:netpfga:features}Features} +While the NetFPGA target supports P4, compared to P4/BMV2 +we only implemented a reduced features set on P4/NetPFGA. The first +reason for this is missing +support of the NetFPGA P4 compiler to inspect payload and to compute +checksums over payload. While this can (partially) be compensated +using delta checksums, the compile time of 2 to 6 hours contributed to +a significant slower development cycle compared to BMV2. +Lastly, the focus of this thesis was to implement high speed NAT64 on +P4, which only requires a subset of the features that we realised on +BMV2. Table \ref{tab:p4netpfgafeatures} summarises the implemented +features and reasons about their implementation status. \begin{table}[htbp] \begin{center}\begin{minipage}{\textwidth} \begin{tabular}{| c | c | c |} @@ -239,12 +230,13 @@ unsupported\footnote{To support creating payload checksums, either an \hline \end{tabular} \end{minipage} -\caption{P4 / NetFPGA feature list} +\caption{P4/NetFPGA feature list} \label{tab:p4netpfgafeatures} \end{center} \end{table} +% ok % ---------------------------------------------------------------------- -\subsubsection{\label{results:netpfga:stability}Stability} +\subsection{\label{results:netpfga:stability}Stability} Two different NetPFGA cards were used during the development of the thesis. The first card had consistent ioctl errors (compare section \ref{netpfgaioctlerror}) when writing table entries. The available @@ -266,25 +258,33 @@ on the first NetFPGA card. \label{fig:hwtesthendrik} \end{figure} During the development and benchmarking, the second NetFPGA card stopped to -function properly multiple times. In both cases the card would not -forward packets anymore. Multiple reboots (3 were usually enough) +function properly multiple times. In theses cases the card would not +forward packets anymore. Multiple reboots (up to 3) and multiple times reflashing the bitstream to the NetFPGA usually restored the intended behaviour. However due to this ``crashes'', it -was impossible to complete a full benchmark run that would last for -more than one hour. - -Sometimes it was also required to reboot the host containing the -NetFPGA card 3 times to enable successful flashing.\footnote{Typical -output of the flashing process would be: ``fpga configuration failed. DONE PIN is not HIGH''} +was impossible for us run a benchmark for more than one hour. +Similariy, sometimes flashing the bitstream to the NetFPGA would fail. +It was required to reboot the host containing the +NetFPGA card up to 3 times to enable successful flashing.\footnote{Typical +output of the flashing process would be: ``fpga configuration +failed. DONE PIN is not HIGH''} +% ok % ---------------------------------------------------------------------- \subsubsection{\label{results:netpfga:performance}Performance} -As expected, the NetFGPA card performed at near line speed and offers -NAT64 translations at 9.28 Gbit/s. Single and multiple streams +The NetFGPA card performed at near line speed and offers +NAT64 translations at 9.28 Gbit/s (see section \ref{results:benchmark} +for details). +Single and multiple streams performed almost exactly identical and have been consistent through multiple iterations of the benchmarks. +% ok % ---------------------------------------------------------------------- -\subsubsection{\label{results:netpfga:usability}Usability} -To use the NetFGPA, Vivado and SDNET provided by Xilinx need to be +\subsection{\label{results:netpfga:usability}Usability} +The handling and usability of the NetFPGA card is rather difficult. In +this section we describe our findings and experiences with the card +and its toolchain. + +To use the NetFGPA, the tools Vivado and SDNET provided by Xilinx need to be installed. However a bug in the installer triggers an infinite loop, if a certain shared library\footnote{The required shared library is libncurses5.} is missing on the target operating system. The @@ -388,36 +388,68 @@ techniques are missing or not supported. Renaming variables in the declaration of the parser or deparser lead to compilation errors. Function syntax is not supported. For this reason our implementation uses \texttt{\#define} statements instead of functions. - -FIXME: - -General result: limited NAT64 is working, however - No Payload ; checksumming - requires controller -Hash funktion in Arbeit ; No NDP, no ARP - focused on key factors of NAT64 translation, -other features can be supported by controller -Needed to debug internal parsing errors -debugging generated tcl code to debug impl1 error - +%ok % ---------------------------------------------------------------------- \section{\label{results:softwarenat64}Software based NAT64} -with Tayga and - Jool -Both cpu bound. - -During the benchmark cpu bound, single thread -tayga: Single threaded -easy to use - -Jool kernel module -100\% cpu usage on 1 core for udp -0\% visible cpu usage for tcp, might be tcp offloading -Integration with iptables -Requires routing - - +Both solutions Tayga and Jool worked flawlessly. However as expected, +both solutions have a bottleneck that is CPU bound. Under high load +scenarios both solutions utilise one core fully. Neither Tayga as a +user space program nor Jool as a kernel module implement multi +threading. +%ok % ---------------------------------------------------------------------- -\section{\label{results:benchmark}NAT64 Benchmarks - FIXME: explain - numbers} +\section{\label{results:benchmark}NAT64 Benchmarks} +In this section we summarise the benchmarking results, in the +sub sections we discuss the benchmark design and the individual results. + +FIXME: summary here + +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 + + +\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: + + +UDP load generator hitting 100\% cpu at P20. +TCP confirmed. +Over bandwidth results + +Feature comparison +speed - sessions - eamt +can act as host +lpm tables +ping +ping6 support +ndp +controller support + +netpfga consistent % ---------------------------------------------------------------------- \subsection{\label{results:benchmark:design}Benchmark Design} \begin{figure}[h] @@ -449,20 +481,10 @@ warm up phase.\footnote{iperf -O 10 parameter, see section \ref{design:tests}.} \end{figure} % ok % ---------------------------------------------------------------------- - - -We successfully implemented P4 code to realise -NAT64~\cite{schottelius:thesisrepo}. It contains parsers -for all related protocols (ipv6, ipv4, udp, tcp, icmp, icmp6, ndp, -arp), supports EAMT as defined by RFC7757 ~\cite{rfc7757} and is -feature equivalent to the two compared software solutions -tayga~\cite{lutchansky:_tayga_simpl_nat64_linux} and -jool~\cite{mexico:_jool_open_sourc_siit_nat64_linux}. -Due to limitations in the P4 environment of the -NetFPGA~\cite{conclusion:netfpga} environment, the BMV2 implementation -is more feature rich. Table \ref{tab:benchmark} summarises the -achieved bandwidths of the NAT64 solutions. - +\newpage +\subsection{\label{results:benchmark:v6v4tcp}IPv6 to IPv4 TCP + Benchmark Results} +some text \begin{table}[htbp] \begin{center}\begin{minipage}{\textwidth} @@ -487,8 +509,8 @@ Parallel connections & 1 & 10 & 20 & 50 \\ \label{tab:benchmarkv6} \end{center} \end{table} - - +% --------------------------------------------------------------------- +\subsection{\label{results:benchmark:v4v6tcp}IPv4 to IPv6 TCP Benchmark Results} During the benchmarks the client -- CPU usage \begin{table}[htbp] \begin{center}\begin{minipage}{\textwidth} @@ -514,7 +536,11 @@ Parallel connections & 1 & 10 & 20 & 50 \\ \end{center} \end{table} - +% --------------------------------------------------------------------- +\newpage +\subsection{\label{results:benchmark:v6v4udp}IPv6 to IPv4 UDP + Benchmark Results} +other text \begin{table}[htbp] \begin{center}\begin{minipage}{\textwidth} \begin{tabular}{| c | c | c | c | c |} @@ -540,7 +566,9 @@ Parallel connections & 1 & 10 & 20 & 50 \\ \end{center} \end{table} - +% --------------------------------------------------------------------- +\subsection{\label{results:benchmark:v4v6udp}IPv4 to IPv6 UDP Benchmark Results} +last text \begin{table}[htbp] \begin{center}\begin{minipage}{\textwidth} \begin{tabular}{| c | c | c | c | c |} @@ -565,18 +593,3 @@ Parallel connections & 1 & 10 & 20 & 50 \\ \label{tab:benchmarkv4} \end{center} \end{table} - -UDP load generator hitting 100\% cpu at P20. -TCP confirmed. -Over bandwidth results - -Feature comparison -speed - sessions - eamt -can act as host -lpm tables -ping -ping6 support -ndp -controller support - -netpfga consistent diff --git a/doc/Thesis.pdf b/doc/Thesis.pdf index a232e2ec7892e466312b4d53144e83c001728b96..afe03c15a103fcf1f507184a12402169d4d6e8e7 100644 GIT binary patch delta 151502 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ℑ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ⓈiA^jQ-GLN!XBNS}FhlqF6T?QhQaUcmQK;T;)>w z{8(*xn#Ed94@j;a0k=2#ffi;+{$c#5=og$o z_a$zGIe5@&sjD5%DTN^z6*17+bbv+K=| z+t{0ZFHmR}TkNsbI^Kt9w5GVi%!8(%qhdkzS|?ESOC6Gfe?H|+)a|oo>)U$n1%(M>Q}0$ zCe3nf_4P!$tu6{gOy#cW_kd`byhuUveInVQ{p6_FNh6;+u|emud&lTJN&l6U_<}f8 zK1&vPe+Ms=9hCup8RQYYh+&RQ@vjgYxklCH9m6+C#mX>v3}6jrLIVZ@C_q89mF3pJ zN?sFr1GxaVqI@PIUw^8x(8~i&ai!Y9wTT0H{~0v@M;%l_JsB^rvcrk$XoVKW_|5Nr=mIr7jbt_4?^lr5~OFo)Aoa#mjUL zJBl-q89m#|?@P`?(|)DuNCt8!u^Thhn%kbmI6V_ekcjG^WP|X32x0TJ|4vC8b=MB) z*>NshezmnUeg!bAs%XdX=E2}N;kd?u6DOs!3+fp={_1C(~ z@_9Ke1v0q^e=K0>vmTmfm1J#mA%%aihx>eX{9N>Mja_a7Wmvt+dVc8jR@&FC2Y-a= z*7y5WvVEAaZQX8Ll+u3sZ;NWv%=>2ZyTqww{kU<47xH2sK>8iNCxl{*@WuDT_Qk6o z*AK?n--Z^`FEr9WmyKV1h*##aF{1WgBS7$n77!IwA=n;!c13A}Rq~T_-r;AEKu;LR zT)~dLHh{uhwrx6K@+lK{BVdEDv5P0n5Rq;CAlZQNuQQzKq-u_uk;$ZW3WK|#AGKj? zB*!omu4&sA>2_~`P|jdeT3xSD#LV`WU!huv;g{*@snM$@P<&jbf=Q{YN=Z-max>qR zilC_n2wsI@;`4t=^?#N6znOC|9_Ig9o-VcjA#Aw+gRq$$0F#Mqxzd_xUM+U-%23c% zy0C_p?gAs5+`vU zk~E<#z{73oND#Ncev!2Ewb=C?rst}S1%Ed?fpSJC%2T8~@T{8#h6p}PPbL`yk$;U` z4>zqOah18;?0;sRjvcQl1>f4;Z1e@%+6~N&NXnQdS9elDPTrua7`Fm5V=oGE-i<^h_fdAs%EiGg3~$ND;2LzkgJuet6`yr3l@WwnsJ zij#)rHtd=itK7sK<0x7WX~lJiEXksMZ)G>d1vE?ejtW*-YwAy)+WMng~KSceU4Ng36Fzp`4#jpbNW<=mQ-#Bkr2%n*{?iUJ%}n ztu;wNO7KYu%IPFi<;0Nyj1c@#ST74Q(Ov=7wH76a3D9yTn=0sw4ErF>*3yzWu~THo zO(R*9rU3wgH#atUI5)%fjLXwe`?EVov+vu|p8dIt+|r)t9!r<@g}ch0scF<9wOIV02rnLHY8d3IrV^QpZwLk)=p zOnrC>=A99Hku2VlQT_PrMeBdBirSlPvaV^ zfdU`sd*nwrru-vNfP{-!f>di-$oHu_FS{p$j$6NnbU2GD@L(*{{A9=i->&HKjS&!H z>ehuAlO0Zrx2-38cWpSyNzccd|2o?QN*JtD?)^Dwk)sxl~Ksj+m zwet89X@-s43kFk3i^+N|i%Cyyh^Rl22nh>x{2ZrzYpbRcKD%rpX-8JKl0%SM!{m0i z-3USKmin0h_hHtOYW)6|rx&^?AfdXi+J%em}XB+xN?1?*kUokJVE|f?seD0Vbq$N8a%;u24Mkg1nv`E!FPa7;%-PZ`H zDIhk4+8t_QMXFy&$7X06qtbJ*lp!bYi6dqn1oib-uDB;vSdV6WOX0e1D;IpWelJr{ z2$*u6ee>=2ETx&*9RlrNH~XOXU2&+jWwP9GLL_7Lo`3G$r;6)#?}yLrTHq>ZB>@?^H6;} zF7+mt_k1vUuSD>1{%6MA#?rjG-?3`KR=mb5HHv&&wt9imM854OO;nb5%7P5<+u8A^F~u-Q8tE{7n%8Hh+{^0>+Q4j^i^y#C}(o z5!V3kn~TS-zk5?^$UK3^!wsDdtd=;PBF#?w8i$M@DNQmtN=q%G3MOk^>^-1U5q*9^R2-KjqOqldFJso=b+k+`}pEStd&#nZ|~vz_)M z>z%hoc-R=&JD@HKV1?CAMM=TG*D<2e$Q)d!7gA5>(zNh)V>qic(YyTO|8>-c^v7b4 zA(5k5MjW!ZGUz;3`Uo^1tf;2klW(ZKchnZSlkWEnelo@=%TTxYd7w=;8ARez3ByUg zFb47qFI!JRPPl;>-+@kU)(H3$LBnTV>5)+8ljZ`@<8PZTeacPMzIFqB4X-o34e6z* z44Q39jgkTtjTUPSOlw`{F7JU7_IReP^-^et=BDf5+xrEYAUV!+h1`4z^a5J@^NeEv%_RGy;6SzUN(+T(>cC~VD(masl$60M}}C_UlRg^zqDz=ykp-% z{(%xCfl9mOUWY%_@Ss!NC74HL3w2cBp^btW@~PjNM|>E@yQMvEp3HjJvtUfEY-2Kb z)lh<#8fXdTfMuMd@b(eBDshfFkrWuX&|~DlQa$FrHCF-tDJ=XYn3KMc68G?pBD$k}hfTE*;Gc$Ajhx`P_ z#q+wjWrWG23)is~vaLyk-Gn?8gozeN>gum;Z=D3;Qp`F(7 zEzafsSDEE2Qcw`(zU;U;*}nxoqaN+ce5;?|fTh;%JK5Pp-vJ(OuVL6eS0o2#bt2xdXx z5d5vQ%Y&9%NpwMBn@4zq;XpyQoM%Awe}@S_TkpGyU$|<|VOYsC5D@G7abJlH9wYt3 z+pDIfkM1NZ3&}W9cd8^PNJMQL&r#o)rM`rm90v3aZNH5Dv_6wJZR>GR~F12bE=R%6N4vzN1AKF+hH5n88FvZ_Fl(Gu(zaibaB*G zDQJdiv4OiI%rLCvDlQD6)2yS<8?oSPZ7+|vb8UXFfg-_K)Q%vy_y_Eh{|T?`%o~YU zmI5&8J9=TVN8$WXyczDeC@EAK156Z1Kj;9@Nh`E@Uvj~fEIYo=Y8t=V>4S(OSx#^; z()kE6rI&KZqfXsUl(^$&7F^Vg{b^q9N7~*>xs#-eEq{*}M1)v^FPkLR0uod9f_x%I z{H``%xE?S+t7F~QvQaFv^~K{5ID6f;?$N=K-D@g(APijKq2pvCeV6MX4e3X z@AJsh_5mnSSBBgZ@3~V}&J6LFR7vO#Ix;;I-`|I2aq@>E`_SS%7G6QuUskZ$D! zags5v$nLitOu0e3Dthm7(4Pig=U$U4Yrg|sWKhjI7EKe)+5%J=4}kUeCQG|hpX7*+ ziPC52=8(B`<@C1^PAa>p&wdSGXEqo{C>}qLB?2nwwII@9!|D-Ca87VRF4Mrx2=`c- z))?Ja895m*VnTDdoN6S0R@;aDNSZqN2r8~^c+JW_@?zW_`Ss6JqpY@hqgMH)~Ifugur$6?lUCNIRu}GH$-UT3q2Tq+b9E>b>V_I zN*mS7`yuSQnhbaZ!Fb4`{7w)PvO<{K2o116CcI+M7Sw-&=v%92sFCt4%a2q0PF>j@ zlTCk4iEAV&(y7FZ>sEb?avJF~tkSG`q!-JT7B+ueO>@rc_zj$epTh|h zf`t#W*ElOhvXKlsZ^sJkA;!IMCNsAe)y!#wwUT?IA5+@mHX;Swf0TC@?qOk@Xv$w7 z;=9}5UwSu+BsFrf&q@aAO;@JL-ryz6>S8h7WT?U{%TY)ycHJN9SX8_;~k0oz_g138#eOkOGa+Oni$tGes^+YT)5(gIPenc=uEGaU%a~*to z*DgVSRh;KB9tcav)GP0PI&?|nO)R8EeH}&1kWR^%Z(tIG8Hp9P?LRYE!~*?8Xzf)x za=Htbl9Z+#;wAVlNd``jLydKDgHqg#Wa_Wb;4XQBjW8UtQSg-3aaM-{4n?YLa&O(u zch0DBSk>~YF3kj3@=NM89sXc;rCg5@KvOxW+Xz(Xo*yu(aEqQcKC|y@8&hIKr#XO# z0y+kB9GDz{+dCW~&<^;=#?_#%y-(Iw_zo5$U6 z@6rRD_`UAHD zHI5yj*B$H3bA&!vp}vKD#=oCiEANt!2HG+$UnPxv)qzk%yIs}KCoWzOr=z7gsTOo1 z#^^W&7&gw%4>y12QQxj=EN~1KS1|p|3cNjxAQI#@Iy`_6ab&g#+5awySlkG1##U-D z9^g6lfMry|9CI#eK;~7uB)Tl;@0@l`q}-F*qo+nxwD{xwK&4}bnR@svj+|`>jgXVU zCHNs1Lg2M|GKS_o){cF7GmbEw@>2$?>Or72BPQGd*^&vm5+(gqu}-o#B&w-wq@RLb zRG{fI!ieTPNGdUQ0_{qNlv^8-N*Y9_!-nMHyNQ)S&T4>TAT+}%!)z|fqrKL8MCN)U z0ZZHD{@FE!;^Vueyb;UGa~zeAa80)~2?~P*9dK&Yjgxb~lG(AAu{KZMLI&**J{bIM zVkytD2S)~^WVbc)&*%p>D&dy*MVZg7@l%L7uS_MusAWaxJqKs!#>4_RxA&hcS_dV> z{BpFoA&B-tI+>O@dKV-!<7-KRA;f_{&V{~=Uze*PAkiJ&#rZD$e-ah@=>7G9Jr&YY z+68{tVngY+m~ns};P1O5?1AFK-u&30~ z$RJEadcheHPh7&K)^H^ z69QE*c1eadYM9zRI4l->R@7-|->?2VA zLl*K56x|E~RG;HQg!KxE-;$a6l$5m7KB}%P_0(%)^!=NUKDH}xXuWT~S+1QxP7`{* z6bw##-HW$nsE?4sqEnD>*ElrF z7vaxPS8A*qow+R(J#htj?kBqI!T}s6t$76_U$F&aL8-~QN3)sTX1+nJHDbKJ-Zs?V zIrB^)n$<4@S&Wn}n}DCL&saiMIDArDIO05UssQKhzjCmiYH6@D-MMHS(l#7d0s$@L z2%x-lOWQ{3{_DGqo?;a?9ta=aUM__lz?(GwV{8UYtF;L%S0zs}0Y2%wRS{@erC4_D zb_)O7psXv$QfT$heI6Epuv^c@NMtL?9{_4hb_4 zhJXwD7O^p>;gb%~RxuS)FXZ+#G9T;=kV7dUUIPiR4)T^2`x>Ly))@AkDJHZaPwE_T zmcJr@+qvr|u<-TfY|%_2J^{ve$QCV8e~r#ttu4tDKNVir_}~VrDQK>lce5|2jz7&% z`q1*RXSLdFq)0s#csFZgb%|xQctSmH;57do^LM5C`29E5(Gzup%d`9(u>68DLy&b8 zdw%IOv)w`VG`*YyopJ~jidMOSsI={|>3!E6j9k?VxSb}13uiIPvIdS1KMr0s&J5$= z)OM=ABIGCLC2|)X+mudzT1&QBP)|S@%-)|tBx?kgr0wCS%59XKUXhY5$i^%K1N{A8ubyI(`;mwlj_}@!rIk}t=F88n(#>4^ZXA71f^xf3 z6J$Yj3|wZxMIwa@w16CAm8exe#L{ifD%ZO~w}ko61hq8Ik)j)HzN>M~B8inLiqGEy z{haI2shq$pyjQ>}qI1m?wWLJ|t2(cj9`7|WNO7T|CLVTE9u6wAa#3L_@9+y%z($(f z1})=QVWjLs%5ol`67wyAzCjekfu7VN?{00-J&u1xSf{1fb$}Qw$W?YPU`F3~;Di8# zQL-vpF#11YKE^7>* z!LVBCuTxK9wilbst2B?)UEQ$!4R{ex-ya4kuJLpp2z!SenxuPbQ}SX_VOnRb%3z~L zx#e^|^1Sk_nm~G?{Yred@^7r`b37H~W=cY~&pS=$`fgiw?%1xvi*(eCnkhg8(uS!a zvEZhZ-z;X{0E{&fgQfR2O>5~12xK%jcL??Q5Soi&)nMAwd|=St!2k345SDse{E!@H;75#0&p zdR_|=9#-PD8-gW`LdK9(tZ$zI=a-N|t{|F=a6D`er~Wd6N!Wk`vjp%p*ZXr4#!diK^*inqRL_Kw^236k@?>P<<1MXXyAb#6Z7 zqm=iU)({HKGS3+9VCpr#5-0a}fG1Dq@3+rJxfH!ysUTBZAFiYtE6(}Df09Zh+SW_- zU)les_QH_p;4J^r`TtAhYXe;WEyn>Xb-U#L^@$)5UTOlRf{Tmx3{?r4r_tw?>@YI; zQU4e(tz{#QOw#l;s)hJe3Vdi(rip!ET`wNb8zB*m%HemNo~)M@J65IpCM)yw=Db>Z zc)Fzp+~Omp1#}C-9lWeDg7fgQ%|!>dUfjHV-vGaj={cG!vISsstYT=_j;}g3DQpdAt3KAopyo%pr@KP3@T7kkvR!+ui5G>>0h#CB0_tB6w?)ZYC^@U?yt)$0hL~_SCxj#2-qviF!RYhbHqIu zmc&AX9EO?6ibrvR%T9m3dHmjNoGRRXSTe@&*ds8RPR4er?nsG+BwHF!Q9NISjd@Oi zhF`YWv!93G^c7+Ns$|52Wc!a+c^M)n!7zvMPbh zR~f$lrG`#FE z^z$;)GETq&rwMhCQ@or8zVv$ufMvrj&O>bBFKY<2k=*@rcR;yr#e89|ak)854TCL? zGR`w7YC~)@wqoi2@XzzG^Y`2e^VfaHk8R6(T2K-93~~9wBU9&TI0T5Jf9 zo)G4rRAZIemsMQ3z=?fgtthhc08|N?>c)3=Q*TDS*iUu><%!d9MjY&vG{t4OS+zVE zRx?T<^X_&vud$X=;vjt<%+_h;Od-ub>kw!`8^^qMD zH3&uns>zwygJiU?m#GX%IHirL)`}4SIc~BD&C~A2|}0Jp@6YylyM35LvqMR6B&=3>kzAFmy~@ zEw4u$>So~%+PHcgZdiDl8a7cm)F{BHGJh%JgID_N_Lp#t%!mjmtQF@}a;L3|Tpq)j zy~kQ52{*XJ(!X;xyMbCR+@|-v2F>F1PZ{{M(6D3s!QK)WNxt52@yd8XlW2@)7>w!z zq2Qi#W12jMK6<@F(U3gw{REd#9*n*$pI`<>Z^^#-5%vR+0p7QT83YKCJYDz*B{LkN`r>xQ8X*XN zYOL`5T$pb*rlZeYJd(W>hkDlWkGZ1@?Y>#7>g_Nh9Ol5)=3vBy7dK3{ic zFK>SAd<3zj16&;TotF;N&#J(bcN)|XpViz?Ta*uPt%Y4tjs)T^*uw>8HFIIQnMc z5jYdFi3Tqpq6R@|gu0Gpp_yVZ6i@Ng}4tPEygvBsB83($lxjo^gd#_ zw|_n0oH(pCllvj5E-dLb>pn`39kb@lfT9P+w7f`r3T@|LRB1o`6(2(pbF+0+`A%>o#yPOYsXL&CTJ1#8NlJL@-sViT7z! zNTvy9>nLmMl@+zC6K4*0W+5bO+?R3P2MbGutNA*XqG(`LNg#@Pj{Qhsvlyj|9M*L9f z3lW>%uTM{Rn>P%$C)yrH+G+!L7VY&VkXYTof6P(yb+VV^(W&Swr^LiK9vC7kz${0$ zrl-KcNKM>50Ue=N%r-8zDOk@Ckh2 z5I}Ex^ z-z2%o>pmK0$` zt=+w=%JQXA_cRc2U&PlNG34|g$f`$!%YqjQn|lh`KWQ4G_sawZZfha-`VdEEHja-u zmD_H55;A>yS6xDd+YqSPa*=@|?cKYkTZBcE_&4vYQ zg+2UK^Mj2DcV$O=+a89TQ2nvhF5@Jf{$W9f@2c6KkxuS~g>TQ$F0Kh&XjX)Nlt`?h zYfLTwg-V{`@AuRC8Uh3b|K~IG;fLlfCR!?mZ+6YJzOgzfcudV6BqJl_YYM*{>a@Q{Dpx}gcsBN}}1hr!eOJq-RGoYz1k89vr8SsP49__6sAFtU|DhQC6y;66>XfaZ>a~J zv?{|W>FaVtvq`uYDamT%JLS>1aMv+@RPtlpJrnm3GE%`P+B^!6mq&`lESX8QSMKVR zdn_(?ImPLav?vt=c|<(L;7N@tR&y2#&B4jxY)@sv4%n*?mt1xNqxNj7xX@W}TlbUm z)JNpT#b5$xm@dzw$>W#niEGk(%oWP48)MJ#H1>qgT(>&=6MVVg%PC8)q6I}1l-K~q zyVe6-Wd=7m%B%ziQ*B?6q8%kiA4})QtZfT1^Z^drUA@17iu+FBOS+rE79ZyHt^mAQ zljrTnZiT0qMMm-1T9O(%z^H#^CM$?0F*2b4OWj(5WD)eXMEnQXbGN1p_*E>G7_+mt zHF*|P;@?UYVsAvz__f=)lyUJ?+!nk*9^nF|*P`*{2u8I4lx3}r=H`W<$Xp3}yO0_b z93D{=T~2WzWg0}{*1_bo$CM254pu;c@0bH-#g)#O-pT+C%|MJpDe35f^D^^@HZ03D z?pA8V{Z56=w)+B=s76_9N@fI`a0Vv{T{vDza_2=-{Z2i>R%HMZ8L`2c=qacEgXy$a z4ysK_Q?7-Rr+k~8CdqB+t*l&3gc&WJv1)ws86rAx!70kGp2;Uj+68&v8KV}If3~Om zy}kU!=U{;&Ne5M;T|85mjIs;U8OPQIOYcB^i#iwAEX{Og*fe|EQSd?8qosd~4!_w^ zf5uS}doIMKx7s}km5@rc(pJXZc?Up&;TnV z(r_N|ibp|nhCIBMV4PMs45gy$uJ}*j9_>~CFH~>$0T27cSRTjrqQB~n`(2WTM|D}P zTG6($A)IA-3x9#>(Y1VuDfZ*cP}V3mVRmQxqx!cn`DEhr`JaHea{;XcX&NVBCat@; zX|maw(Gpp6cyi(|d|c3VPF#Q3v%5wknS)(mQ!v~dHKX;zk7s9#v&&i6{cWNQiI|v!9X|A z^wR;6q2ul{)?TL4Lq{Z%OOqn8gghW$%Iy(*9E}2jI#x|Wq{#s0@jQB3J?y6NaJkZd zu}V<{FA#>C=dYhyDo1J|gt72u9 zK#}y0=dH)V%e`B7Jp(aIujnrbZ2BsoU75<3yq)X*`q^{*bE^44fhG()Cjm9{5l(S4 zbh2qi;Jrq^GJZ`^BLyxXL5ETOGa%}|RnJ%4b;Jjb#QLoGp~n|JE?m)F&jw&slD8Qr z>P8l8_vw4ev3W5U6uA>)`q}Z#?Li~^y(%7pbF8})?d8qXt-4Ghllyfeg|q|w4NN&c zaViBwzNX!spK{-d!8OEYgeAL%cLE?0Mh%AY)mVCR7JMN#|NNSfNMDNPeoqQDZ(F`h z&YtLPY__H?*4El5P)O`l*I!ynl1?e;mW{iUO=F!_?HrIICyx`?A5RDKZ?v<1m%(v( zBh*ktXPutBVv;MN#*+V|!P(DDCsD(?LSG2Utx)>*lWgS#>F@iuYYaqbog0nK_{GLJ z{Dx!1K{;HvUiK#f*WmZ*f5$j5X4d~=W}rtv|6ykSW6tHo_Wx(j{YY#t$JnAb3}uj> zFP2-O+}=0FTkkKS7$=pF$faIm3H^Ld_$$#!PNi?S4C>2T1NZ2E%(t^g!eDBxJ$ycW zRPE|<03Y4J^F*+dE-~z7^#(qJ4XEY0(KE%wy;gz_sJr%RJ<2waFI(}fa{!uthZQZ* z0h?Bc;6D~7&bz9Jw)HeT1G@IvB4HtnQpA>Ou4VkW8F@TlvNnF`+{N=;9B`xnI3XC6r zCq~eSccYLzC)J85uS|vshD;q8s`X$Zw$4SNr}{%2V*fAm0WKQ_vCLXAE20o7GJW=@ znh4Ht@bU5U2RMsuB$z5Da8<_-rw<{4Jur?KU`l-~nJ{RqMUz>}c)SBz8*9Fnx9G=n;O?B9u+gG8h$i28sD0c1z;sQ zzVkzr{5KfW& z+)#}LXkiH^Ty~m+^~0D5HaInb+AioFCWdPx4&J&4LUh>*LB8wLj8WlKk1B>ph!Tx^ zwMRO2UJaBgP&n2y(}qA${vWo^DLAlb+uE^h+qP|YY&)Hf%^llLr(-+m*yz}{JGPC# z&po&5zWfiXYFEwuxK_=*=NjW10LA)f@v&GFy{t)ftTI@dj6td-vI<5Y!uLT2S|8S~ zYH4^DDn0Go9s?<5e{({3QKTG|C;7z+$*86++R^m2WD+^I?YqzFssi(R(W1O08MSXg zkz!>hW z9=N1LH_EQDW*)cfH7SgX!}Ax6>p)@dY^DakJoxPlG5%Ulim;HSlQDXMU=RMLrKMb_ zQ4n97)3+^QV<`>auY7~90<=IEkz1NbFhwz8_^MzqGH{#a6r%p%CpZ~4?KDWI`qL*{ zDE?O2J~9PRLpR`SMkpH}btsAx+jTh6?pHda?(u!3lEX5w{L^Xv|b}y>39L&&l z+9c{Wsi!Jg$p22&9g|ggEocX)ks}qEg|;>JBmc}`b6}U^?O?!s1HK*1m`A?AzcC!r zYzQxg+|`<46_{3L+?7dpNqTKW)WsTYmwQfXX70@LAkg~UW5WKqrbi2#{p!EYJb0B0 zF}XLw4%_V^MR02{h0Wbd=Ne4qI#}E?bHYdKM@~B^l9`}=mm47gx9QCuy>#)5w0iBX z8ji+hepDX8(>b(01|s-tFRyAO2ar2BB38NJX6g7{*X$HmC0dwsyd>cii{}ImJ2)45 zNmEI_w!aK{CG1*5$L&n=-UrT~P9EOBzsf7pkUB(Q91a`(N>X^+uxR6^R*}f>?6cuW zV-uykS?HS+yRDs!l=H;bTuA23xxCFNilh17=b@eNS~P)+4P3(`Q0tC^L!nn6G1w_- z6ZvTo!#+QnJ0JRNlAlos6SmWD(<|u@H&N9btf6B+Zw+{CpyIa)tqZjU#Qw70d#&-X zGG~cQFvu=!il+bh8J41Zg(98d=oi1W;}>&%NG`JozYgVkz6TM;-k3 zAAtdt^wc7R7@5a7o<$jVPId1X8{U+ICa|IxnPiuAc_c z5w*X4=eye=jR_|bXM!Sx*l$Hv&;uLPBO1wZjIg5vIyn*9L`cj!ql)0p6o;H9&Du=p zK$`${t`t9_;Hrx|wwD$fMxw=f**a4Zb<42S;ED`hbp0Hd+RQ`Iru0y+nM>4KtLz?7 zkU7K1{~b}V@wOy>q6dH>Fz~J4krKXx*gGN6{ZB2uEE^p&-AD*sAEgBA|AG?%aukaH z?TZ}$>5DC^pcq#$Waftq z%1+-)%>E!@h%w=*sx#rCgtJ<$xC|CvrD4@gApC`OuSW~0G1l&!po?a>&en<~ID?oO zmwgDO=WRHJN9CoI#QYOV_vKh{8l=gwM|kbn;rX7QCrCL-!$(emIc05ux!ZsmN3v$Z ziMk^1SOam7-cCt^0CSlPGYKn{gae$i!B(ptf#$%8`}JE(5%(!xQ&3sPG8Pl}?BEC* zbG51;)x+kfW4#mXNHnfwib(#A5G+t>j87V}2=SdjMoZB_qJluQh87cZU4!-)>%54L z*vVURVpCBZu;xmPs(~UNRA!X=K~j-|yf5lpz}0IYTMmWfx2FNOAk)H*LJQEU*ikkn z(Lrbrp@BY@AT;+v`g3NHR6-1*;9d8goK(Fm2`md)<@`Jp{`$a0{XzZ%E{Q?kRCB$u z61$L!W(wve#Ivknibas@)&5KLxS=C8TxT-=%>Jh8V$x;) z{rMu(#{c{F<6&2Cu78IOD+|zLZ8gb_vQ_hnsJeD?uXES9>AL<N!+d1q z;V|hk7=l(cB#-6b;uW}fXdA%-nNxjDU8w;bIc+Pcno3lqKWsI*y!qN`pp|$jd1r9v zcZc{XYTT(zi8VunYo{i)WbV+HM8vyD!rp1Z%PBq#z{=>WNAr z33_6WV@5~RLwfN-$`CI0SN1o&xbXIAZ0 z-Qf(f6_XO0&=ETME^Pksr#Su0J09_ukHHgfOnnTNRUfJu@H%&@rd&hH3AqqtEA#Mz<2piUas(**}sJA1=9@L4-j7 z-|cO9Buc%h-Na{kpJ({wm*~Q$JLsKt#1B*t7JZ)&BDpcv6yMgbh4s%AcofKH6^9%$ zP5E*PEB2Z;S_pxYYy6okZijPb0}qSZZLW(7-m9&un)a8ruJhX3OQVoe{^*+%N96Z% z*A?(E^~$S6B4GH*7|R@150i{9HgN@lI-&xrDy}lR zGc2BkPgq$;JasT;>9K!%e+^h3Ne5*&47?~y6JEsvf;Qsw^I=G`_+zm1$l>iCHM(*uTJEu zb+n_Y8PUpPUrN+H_y6O}{wwltY2y!3{tY5S-$; zq7`Lp6$7l~#BMZuBL4kJj1m)0!TU+tVBtKlf6xTd~MfV^o3eRqf7PowP=2gqH%0g+A|tPK}*q| zL$2fLJ1*TwQgMD@XFwSDEg~&zUW`NT^Qt$*#qLbcbu#rI+Z2JYw@s`iqz5--nDEZ&`W zw|_fG{*lOWAojN>9&A|Ft@h}O5Gijw1hhmsaim7=OtwSO7kGPHL)L$LsoTQ8Uitxt z5f9AFUO&C%LWxP`8?#Koeydfgtrar#Ik<%%3rfqeI$gSV<~@DbD*vs=Ke`Ht^W>=BSszq-qY!nDF%@-tUTk3R#w%e9oJnRscLWk8=U2KUJ2pmxmUF z1j_!++UAn;&pGq4Imrp;#7Qr#vP-~S{f>KCL0(x8<%^Lx2)YQwR#y%<2G{2z-F%zi zgjPgd2DDD5X8Zy-*`j66+}rnAbNM>q$TK#@(uLU~w>vz-trbNTh7s%d){%mObW2sF zP`FM(t@$K8|3IoT>R7dv=G$leNW^bu3Sspu)#KAyB~@R%L>+=5@r#~T=V?It?}*T! ztL_Z;+X02eK#ehXxe??mqLA0XISm`RrBQZ!#HQiNO02Lu(F4&NwUrzGFRK$%I75Gh z+OzqFKFKu>W=yAdzLV?6Lm4HAIz(^aL3++`w@ZYuI4C3ew3Zc z4_94WHx@WINAoU6iWr;#6uv_^ghMl7@BU%7haI4z{)^X^>h8~0nYnfB*2B=z(NSH% zXwLVa1!b1uglfb25rb>2E!;Fb$f3Xaozm{M2n{g?f6S6CvEb{cegnZ9<(1<0o#5g? zx=<`*N$c_{#O;@@CkO^g8Ha3;K#yhP&!8rBxL1qZ*~zQSNA}~gCbACp5;$977|q^d zNHt(!9iAEoMJq_j>ybd8Z~bvRE^NQvA>Y-T`k4qiy?Hk??${GzD}Us93Q z6}t#gOwKUvUTnK`ON;`WcA18eqxVcY6&$1gb|fz+haKGCph!p*i4`L8C=kdEx)VxW zPAY@FheS{{MFOE>h2)h2Yh;xqsxgpSEk(_fe4=?LPHfqlHU{V&gHPYtrt#_yD!vk+-+06@TyMi(@g^)<#<0bL>a4amh^K9p^YKkW?2#Fp$K&^ z`geKOyiJX3%Tl?dj=CEJ?`6Bj6(r9&;Q=`lcrR39Q*J)+<7w~0V`Ys#RPQ~hlxwbyrKpN23Bxb&3!xaXc*VSYE;3}UHsQtrl(-l?!Nl>l{7JvQLFy{yDgLITa)wgPsp!(wT|3A#?bN=Wvg zh?B8mLz5OOf4lrlO}BL52dulAs;(J<>lQY81W@cXuZn#_J|a{EOMXGMz(qi%-7cFn z2sIYL!DQH8b|V#jS^GFmFcy;A^cjXM9iRJKwzshk#M0$?VH@I@mul%leB>|4u>mjQL_LaRfh?YM z^TawcE~?R$`4*fqob+`r5vvk`O~&DQ2;C{tY^~cQh_A{##1QT#_#4H;v*mZg9p@9(MQi|7AhL*54amOlF<4LDUW@!6^$AD9) zld2fgWU`celE+pQb2P&+x~`w_F*pjhc(XxS6H|ci4}*d}q9&NsRkwEtO&=CJ(I)eI zL+fDKV*k(|{?8={w_xoQ-Bzu$VWvNT(?(}+jpD2hvD zckK2;K;^A&uhIpebJlx{XoD1AN*lCc1^Y^j{z^BL9xdumy8gt9vTU2}&+sBS;^=}vH7_Q*vbk9q3k?M=&$a{F z+Bk9ghpAZ4)Z%#aY@oz*A|QPxc2QIegw$M^xHs2Ezbi-sKy-6)a=XiV6Q&Ky(n$k` zg;V&Ri9gDI1wW~ce+;iNm^-J(i@2#!sLgrFVA0qEamJjy`=j7XoNYnU1i zLe@o};~KlaE#x1Ne#Nq=SbKK*ahdyozJ$AU5PH*$9<HIx)`&5B^-QiGt$xgY zfxa+AI{)u1h?g~;6bqvZAa*J;)Za9C_xhLhPSv?BO&wXAnPYwy{VjLZ9JJE|{jicE zM?h!vLE>g49u4-))Y<1I7yi)I4Emocp6~lV)09flAL>lsX5IT*MWIQtp-y^$FWKbW zuk7a_pIr$%k+)G|ilAY`8z-LZud`5?!^*z#WOt#$S3h$^P#>X7P4e} z!=9g0A#s9~twoD~&d8ynhE}x>%0Y85;=Cm&!Do;Ral=$;s(c|(=8c6_{;Uvyq@7gQZOJR)mXX<7wgl&dsK)B@wF9S#UB zHT@#Jis0e^S>Xo{=;2r2A!zUCbI@Z$*niz7f9nb*2fGjlnC%dHvA-)0M|WyVX!^K& zzI!e$TeS4dM}mJT?@qF z5vxqi<1Z%x)WSmr0dc5gD|e~_m9MPc)U$)B5Lhf%SF zPMOOGj|xPm_yrNi1DX_0Lpqv2U>csZ=>!iOb)S$2#Dwl+BEcNfFYLn5;Y{__O=iB<| zk8y$#;Qbd@EG@A@gX;u$T)iN@Hgn8hPL0KXrnf~m5<}knC#s7|N{A&xNzg3|6?L8O z@_Xf{J&b%{6Ip7L<8~GhBaz;YWz`@56b9(61WB+VOoDmHog8-3-)gz6&099{4H(XD zC+=}EMrv=~4o&2C))12^oQYS9G4mXd4KMrzfjLy+EA7JBZp5GA6B_SiZn49gV+6M2 zr(;bB1HQQhklV_<^U4j5w!dS=f4@no!c1(w>2Yj4@cN0HVtc3WIew`~*!Z12Vx)b-)(IFPZK8mRp z6(F1eU8IN{!a$Omat!}KhO8BDTTZ=$NRdnOr_pvZ_z*`C5EOiYcNBQWD66BzPqw7* z`JNWINRD&vIdcS$Bi0!6N?84=jEbKm(Zb+koz3-IwQ}EUT z&i7%T{yG|48462<*ckekTc?UDa8t<;8~=6`NPydkFOY6nbisIJxyh7quR|sYHl#!I z4p_Z8ISaN`wQtZ^6tx-WW;`@ph7gsbaQ|shvx;O8jMP&;NgsNa`(uxbYrd6H3JAms zNFf62n&?SCTAHQZ$jgzdhFWDd zr*=Yr#j!`*d(c>$)23*=HI910j`yeVf zhdV>m*E6aLhlO>ch?~}zX0GN^fRfB?1_N!pp=oL`X!Ik3Z&*CXZE;fd*mUY$)EBz_uyym%jq09Z8YN$Mvg{vPa;x=!qU1jog7#a$YgDf@kRb9)WSt_zlyYg8 zO4Nmp)Ob4gfURFv>pU$L06x~TT2IEKFqf)Q-O8oL>3Ql5&<6}D)J|GK#5+h3Qn6JB ztxLGeF2`D0>s(}qV;zRep*q3k3qxyKmCO{`bKjg+0`o(tl3jRzg6=|Qxxz%XoH)84f$Y4AhKk7`ca=G( zHE;q4OY=SHANZ`yGPQi0XF5%gC;jy;rcpstNF4I^9jynpWya~I_Kdx;jGoF|b6~(kZuZQg^U+V`oFCQ% zhA>R$i;lW8P|GgfS1*&4&Mn}iQ3OhCl4}nS15?!0J=eQ)zb~81FRYb+Fwaq_Z+>Jo z8XUlNxyj*QO_E=ga1ov}CBN`qxOn<1L8phAYqty;){2990pjU{bGCOqtbf-tmD*4e zw#JI0g?3{?D-VUXKj`-+G^ZDNmTzbs@rVdbu_VuZ!v)6Svq_s{2rx*}P{frA+1B#DG)>BjJ#2FMU>A&Ps|%3YrD6uRK(RHtO2#En`fUe>JKr9!W>KYv{LzHRS8wrL%lUuTc5Ixy z{|OnO0XB8@9PryP|8eSe%-%?ln8RE8wMjan8{r#66N^OFNl=F7w1375kXuXD&l_!D zDdVlKDn><8T(x`E4ek;oZSx8UwB)-`q{uA6IX|ytzkf?V7JJ-m!r3t?xB!b9HFql!vVI5e%vB^S= zWT@uBJKX5nqzP~fG(*v3Yr-O)7eWzt#>~??grQEMG(dUr+G^i}nq|N?vXJ0m+4q;w zR_ZY9%0_>g9DW|kcxLHZ=EuU zbzzzlX>+((^ua^G@M|eTb3eV5IZNTuODg9CnL}r&p|X_H&$r+9;^OWCB6}zffTma} zlh~3Av`Xs)rx^@wC35dg+HW~pERi&_CswRF1W}8czS5SBbdLB*HYbKP!sXMw+uMR? zl}<<)p{`nqn`z(!KPd@nBoAh8w`H|P^NOka?GivsmQRY`fz?r65mf`*y1+P73Fkk4tPv^BUqerQF?x4 z8R{EG?NLr~>75FkQpThX!mbGN2yF-n8>>4t*;v(98g^n1F2*xU-juXo4Vv_G6E9;L zrbM3>JcA}{DQ;UV9^PONR#w=yWa%tk#K>R1>2cPMU#F-_TwW?QpH;lfY%YHMpk1Hb!|+7G zHAQG8rB0p{Qq&E>-hz_tBY<|8ZI0HUw7RfU;r^&7!;`rUW^V5W&d+N8i3#){TPpvm z*dp$V5_df&E$X7nPNF80p1iw2UJ#0q`A6U#UX$3QBd~PTLjTj6YIreL`o9qK>R~Ci zfGk}Q3Di#qngwvVDhles_k4ddh@ zQ!LvV*{^AWz0j5t@P!>uNTtV*=XrB^Mamqs-uNN0|(?^hT!FskPX`jJXx(`)#&xOMq- zAZ>kzYhHO>$-_N>yGQ^hB~;nNEl@;(SR`Gk(zGWQlWrzB#CLIQdlb%n~{ z)JaK2^TDl{^e>5hMh#_IZ!u4~5Wyh&tdSWzfb&UAne));h4>I0^;Bwdna+n$ zdJ-T;z~&U8qfH(Ody?{-JaSjA0RC@87j>Nc&@9^Xyd?!|y85|{=~0(!Uo1s4%+;O@ zD}V7$nG{?w3Jo-W+6q}F3pp;uKr>hDz>nahFsV7RJ|%mGda}{tMU??6>yx4H4WyL8 zxbjutz|?_^X>1<*OJWA6jrHA#;4BaIy*y5jMj-8p5q5^@YXw-c=6xlY8cvk7Nf~Z& zelJGYo(kU#!eAlGLd+Zs9Rg<|M@*FXBn?t=0S7|7I3_LP-GIp~#{~LQw6l%RHqK$B z{W0!gr2jE*Jsu{)Z~C~G-EVvc0Ae1x)*LMZ;Z?4zijD9U1Ah8%;|SRZ zYq#8}<{G4WRS*tx*EJ^@6%d6R3ukmknjJG0=5tJ1YE*76^GcR8d5Rh-%NNbL`(*M; z9TjgDZ5J8O5Y$x+8}Z?+v1lhXb=NGYzV+9N9A6&q*Pl2zU}RkQhbF)+blAMTSz+ftM8>b}{08YOaxu-76=hY7LVDewcA)MlAUh`*Iel%EW+NPV|hf_k*#slcll z%Z0uGEl2um^MWL}1v+gW(eGo1EX5fZl&}jjgK-V`*Qa%6x`rh0dcBGTK87}LjuR?P)ZAYh~e_vp`P zSBtp&)&XonBdAPas=oHth}e}oQm#=+%ntMG5XrW%V8a`guq?5pmB=gohS z8KZ*`Me<$q{|##@M{EA!w5?`z2w&)nr=LKc?Zc#;Ex-j`?teHE8YSHFyoDkCUj9Ww zK>Di4*;Ab*CuF&29PpyXDqWrh{66De*XfbW^VaIAjpiQz&KHw$Depf24R*RtbV_zS z^(|0x`jFXAPoSSb5`K%Ud9hu;L{kbt7dX69|1lBcdM~5K*x>&YR;rc7gt*VrP9rs| zBrMYB-K1G>QN|;Bvvi~4#c}WG*rX*P79UB(FDZ>V9e2Qkno6~YmEJcL7}$r;O>zh% z;yO46<5`fY5q=zR9_0*OZ?=!BeE+dFS>qIj0J1bG85aQN%s3f(gK|G#I0@NWM6`L$ z_7b+7es++Ha#a)T*Jk+1YdXLTr%;+ka4Mu zvbbA{tK3rdIt}PEKgC;qGMCOfb^hnu5(AVqJ@6U|J$;`JBMdaC#g-o95EQ}y!jtBI zs_B7*|CD9Ej2PwkU~HT%)Up`D{~oy0t<5pW!P))^#}XJZFd*4jSy?#K6XnpUfvR>j z*J8UyDm?!3747=$D7*Ege@k|-S))ESioSU=%I??e*Jg)Dyx;4_{YfOj49HI~i9jk4EG!UqY;0_RfLCN-t8adEZlfPkq`0I?R8e03$tVd>02#{pDt|dU z`C(%Zo%j5<3)NWfQ3tu!_8$5y?5++92Fipb5|CMph(hx3PMVUE88j~`K?__4c4i7!29c$~18n7e7|htz!Rq_VH=8L0pg!ams1yib1)UdpV8opl z4m-0;j7iuFdTefca{m5=Z+wEl;=%UYTrxHEZ=NDT!x`ib^RBi7B8*1ygeHi~JilJb5}`%CGmS0e(LDsrz#+tMyZD?%&HSKogTx zn)?(8c3$|naD7Z5h#DYo1&vQW-BbS+#LJ`enH5&~FNXRBun>WE1pA54o4E#(o&DAS zKKNP6|D{2_1C(!#^z{wh89BTG)t^>KX-rch`0P+TmT5h#iu#{JTrG{kX75(YMduUe zpc4vTq}*<9&)>4~XHK@ER6f|*7l33Iwx*Vb8;A_B$sL@73&7wr3_|%Mw|?Rph~NK$ z$M`ZLeg1;$`uZCAxFYyq&U*g3^8dV=*{k8=x|M1Mpm&6kaC*1VhlohvpO0edS)E^j zO#D^dHP256g3pe8sB7V*_pjbWXV%ws1XBLHo)8vRmXGk6Ih~C;aO(=|6H`-A7WUsS z>*c_~clQzzfEr((f5%Ab%Z@4_Co}S-=R}>6L9y!M)8^ypOBwV+;mhY1kbUKLlfp$* zaOv@L#4_rccq7Ty#25wE&`uK0DdM~q-%;)5K({jp6bGu=N1`j4!Ukes>t z1fX9S;T(SHj^noR=y-#;ex^+fygTfE{e3c`@A`rQ$Sti*9bTua%35(&Gd~Gyzi6MO z?e_V7O@qB zp`e_PU7shY{QAO(+qUAkKTBGL*9Eb^5egv{*&s>3vDnf0s0F4&K6e)_e1y_uVPq3D zhKt4kuND!wR(PyiTJXQuQP$2CPQyFU<;Gr%uaqIwva6I>w7xBX7TJgX+m`W2GX7LH zh)y^LBZ?$tZjz-|7_!vg;!}dn$p46UaVLC0dp5Q?)$I#NY5UWb4vaG8geg76QspMp z+7n!M2*~w~XzU57X@ZlQ<)e^5mULK!tz_Hi5JKHGwsFzLK97|bXk zK_%q(CKuFterDKHfkJ5^*D2QRZ~K{Z@p04(GU$XZ%iCAS&D*FV=pZeBS>T(=qgmHuI5-SNyuSK-s2fHHOgl>;_Pg7Bmls!={!IX+I@Go7@DO~Gcq=RtT9C7o3H+8gT zbjeb4(Id%XoSiqUS>^JRTjw!ON_ZA!f<{9rcl0SVCbFW(2tAa~2z@j=;G96Hc1w6c z5{glEtvyKMwWNf$kw%VQr^S~k7iy&g>j|%teWbCrj zsUTD13b6-nK|x{%bpU1*(BCW2*>!u=ISCfefMf!!o<(ui%3d(d9KmMgl-VEq6w$w% za4Q#;`iaP_U@O6Rt4&`f@>DCb_EW~UG~-M~g}R!2C$)&A_{sTEjjsas?6XvOAF730 znWf+Vfi331UCCRkB+I~vBh`ymtH&HCE0)K!ACsin^%tl0{dFP|m{raf{P5-J$oQh5 zhOtsEPd&eL{xAf&a{XH2SM(5~6r!(y;O`XPEVgue#3YIiym>W@SCmG!A>EnHn0SH> zs`#Q^pBH1xk=$CFt?K)|RV?W4`Wh$A?qlqKacE^z$0bWyxOC^6f%+O4xS9h%{k zWLprJx$JG9dLCS<)cKN1-9Fwx!|S&$Dq=mQlkDcjID)uT8*W{farQ3*kfL!$TeX<~f?^^jLMJ^&zY1m*-uaxIu^z;H*Hw z`wo|FMAMAyE6h$D)5b&7c`WdXrHd+?P3+wy+0hU|+D89$oKB(!NvN{e z8hhX_(U4r?%|G_0yj}-JG^apN%vzO%@ZwHPZxN>l@ed(U<8wm4xhn|e`&~3F$#A4@ zEt$zvb2(qLZ5!E+xvVuwlnyD2wFK8FwRasruiV#OBvmDSeyM`QKcCBckumR8ThA&o zOEkKEy<_`!YmZ7nXH|!kz9ND#AWf}V{%hn!MaxIp*F=gnlnlSgR5;3^+}`5QOC{I?XS>ch1x=2<-X zEpZl4T(Yr2FuGGEM(D=Y;j){eqUQI35o{yq(Pso&9%VzMFYDu@cxhZ4HPPK1$LXs-?DcOM<}e}$;>WcZYe1OWUY0m#64mGpLmMGP9j*^tX;jD_66E(+~xJlN?!pn z-ELh4=b2s=25Ex7`w!D^U>OgA=T9)}gLM5gn)1zun3!#@LtKTkAMH1bRub~3F=Psp zT2~Cs=&`ziY4`&~(Fur7zJ-Wtruxd@2oZ>qSvl~jg=23LrsbdzvX96Pd}DOG=8iTp z0`J~g5W>~|~>=tV};K|dI!I0-baxt#=DDv6c z4CiyP;AAs#T``ux1KB5jGy!zy1J#C-L5LD1GpP*)k`g_Y9dt(uIH-j-YB*}_YbG`qBIk)`ZpfGF zzCq9Bfl*8TPo|mXtLg8?Ec(aN#@Qxb&~H&u_lb$KA31%-YPf(PkELaC%s@gM&E`2`Lf#)R@keCdr-(+B{ zQ{L;^ei%llqK*LNeMaEjX2;~*E^26rNR>srdqx}LKO*dW_pig4U-LjqT`pV{;9+WV zBYt(Kj7Lke_uuiv&-d#SikW|jAdrl!Z8n}y{BHU3rO4GWxt3mS)E z6SaR=`ffPl5$`pOdHj&9KtU9nzoDX)LtOUW#VwRs%$W3tsQX)oCfVe<#TCi~z6w5+ z4Zn?3!S_DE`G-^_7o?2v`BY|iin@j@NyA+Vc8snt{S7hAX~M7&%vYPM?I3g^koeGv zd?ZwHF2ndWh%@dHN-0}f(QNaaHi6T=>zh+rKP7*T8uHMHF z3IV&^rHwb&(Xf{|$sU=+AkP;+>|uV~ilE%+kLk~qN>9xvH!O>)8XrJCtMDBzLkwy# zrNI;^5E6j6m#tPw!0`4lP!UB`UHYEqW3&}Xs5@IV<4@04_z!0PdE#LAaEGU2_1B&C zK<>{{%k_c;pA3Tph5@>-s05*E@sB0k>cOMu)O~bHE^ZcIJFP8tgdA|;*04jKUpP!v z_hteXCDS1BmJH2l9Cw-mv=`*3oPsUY;Gp6_1Q&C+kz&gcX+|eAIXtqLoW%KYyn3N6 zzA`Y-MF2X||9F2evD9`ftfAS?L4^gHLucI@BZ zv>G*BXuNE2?c(?L6M1$m9W|0Pi6JP@6MLm28%`nm0#i zY#S{LwuW&Ilr8n>tG1{T*{W1V)H>>d+My0;ux6Xy3)NsvDGX+chY4HG-b%ncPFlmu zO?1Z1dXOZgN6c_c*I~y)9R0MSy*T0P7BY>@CxtrVkKiLyTRs&cg}`4ijk0LBWS_e^ z&>Z9YqrGGX6Zz})7y*G;y}9KD=*JfeORu`S9K>z5&w2f zr#%J;TnLa*LJ2pzg$;C4BBd>a5Yv`PU7B@t>X)Cj7Ij(Nkoq)a`1L2D8#}^k-gA$$ zOmmO8RBv`K97Q(p#-ql-&q_O%rnae>!qM4wF40-1&3sT}r-`(xFko+fUek3*L!lmU zMEz}7RJ$VA*A0v5_-!mYrZYmqd-WQ1 zoD8=MQhY^+{Ip6r-M}qyY0&lfoY7^P?^@L)(@3<}S$BNtNs3C}d0|$jqfC|1r^78h zL)B7P+_p=$9oFAnl3IJgnqAGky;07)@>ND66*XhTq(16%!T0cJbioXNgUHg+HK8o& z!);k=uij+QfJ7AV*3FI2Eku14+&QKSh^=L5u^^@FbT&~bqBXGo^l<9g9KDcV-D^H1 zTp!yUmr}!IOuZ56$Sxpz@u~+u zN`aeouiH&&;#QC8ed?3a6qDG~YMtIh%a|vFY9y5BAL$O1q(=sc65k4FM!pf;t9{Em z2)pV^7dBeYLjlFa0utJ)<0*v=kQg?k@!oVk^RJ$?d02yol&g( z`p?%RHQ5)r(B?cvg)>xEq_nj*T7Bdt zRdSVs8a;u)(R-f%-JOSFQ_{EW6N9(^2Tee-zrY5?5(8=(6dr446>GX~ursE9Ps&6a zGshi*_~t;Im3?Ca+AH5r4YOwpK};6aXUT})SjjPYjrh-YYC4h_l{OJXA#Bv3JYhY7 z+Ks`YVg=njX__k!7pcU==GA+&8dMK2^+zy~tNvAVo^00{$bbGA`~vR|JxeokO+nw* z`oN@d{LNKf5S)WXdkb~oGzJWu$4Ck;Di<*j9&*2*E^B3Z>P~`l0pH0k`+Hx~ha&Z$ zvc?Trc!mbSg}a&xr*Vp_?6#qN3CWf^%wuh9RP~&R4OZ{Q6cT9psG|4$Z;i{aqjf1> zmbQNO90YhqH-C}KbGIb~M;SAO4=qoT2^x`}sA}Ukz9GL{*Up8# zw}i&4y9Iw(scJ39MEuIctiBf8spS>lgA<_?IGLhZSbwyC@(nxpWe2xhxH9e2q`~X zkFUqPn_7%Y_pUilSm4|@!{X&|RP7@ho1F=M{T%1j{0_kdGR-r(MB4JrN?lr=C5WwM zfGz+^@qf2wOsM99@-Z`qlw3LwTOhx(O27{o0~mw1s=}bn%S8SvTN2cfM6OX(Q22fw z%1{NnJL0o)ra$P>h#BEazI9-C)RoZY8Or@Pu8n41B7YdJ63YYYjUh^J8h%36mH`f` zbf*NiNOJo}B0(%LF8Ir)u z)9@hf)R}!p7W^(8OeU0@J4-o;8ge|Z#RtpK&pyjxm-($CE23Aw_I`(ipprpaW^bEV z{@m>1Xo7IMF>GJQlO_edIi=k6z$)oCY7iqp?E**%3(ATobGunrkw{#)ny8@sNWsw0 zGk?>5E-9-J{R~ZXV+KOPq8TZ~daNshv)w+-3e9AX@_dr)Tbx5q;^dJ@#0EHa+d%zJ zcjar{BG2Ikq6Qgo4szdbJ692DR?bh-^(Ym#xGgRhoc5h%OdjI;e2nL>E$PCswJ%sx zfOJ1Re5OS*Z;g`5gaOK;W;_`6OLIRQOn(D4#bt1f)mM1ahP*>^xxCzlR-~YJo<@St z>T?qk)G|EdDPxcHgJwWr!!QH^P7K1|1%A)OvqL2OzVVdBKB?%%G+>t;XIi#iE0^11 zQe^(g1*Kg@F_=53>7Q$xBZG^%FuxP=1C^AJEpPaOEIbcP+gC)l%%c7ejs`o+H>zHWq*9L6wyT&ok~W0BGhdh0UM+RIvQL2zMWMbo^z@P zBMb_UzcX4=gjJw7;H1XshiPW)CXq|MtgllJ&ApgYp8xPC4%g1Y2r|7s8{MUfX*jB# z#6kIvs|dKaYwa8;hmO85MO0G*l_-i2h5>DSP-`&u zWt=aQmMaRcl7kxbx!s3~(e!ab`w74+x0()L$9=xp2BG;!Z*>EF4*nt`U$5kLkltg#rK6suuV6vaD*wrV>PjPE3 z%~W!5@hf|HRX>wok8EQj*1GOP&y7Q>w?P_ejVGEGd8UQbYxFo83Rkujvm^bJ!o2{?k^J;b&u^X@pLZ35mj5a^J z&EPLSz~DPv!C#-?3`xIMApOGm{>Q(i59s2GC7McopnZsclA-?qBT{STyb0^tO+VGO zm*MFQ+10cWu?yPKeCrW3MwXE!;K6>CffL0iC1NM#v24sRUw^&=;DjMMLx4Suk3Lp9 zsaKfu9PNppXYQz4uQ|NSC|p8bE(Bi%pVdckyT-}Hq16FdYkj)RXk0U~`oqLPlSf!-U7)z!S5%^ljc+I^59EW_Q)G;V}`bL}n?uoDlh z7+*zP?t$okhJQ<%^R99D?pThsS4NEI_Ss&>iMHc&c{3(Tf{)&m6@?@4Vbx}g=)qxu zM7%1~V0Pw>|L1qO(n1o#xSPHPo$)FqL^+Kb47cK${o>3(&HPIgPX>1)MUvJ0>Sqa8 zMfigb9PRW$4hYyRBAjJn!v4`>u&0p}@LQ$a=|}iZ8-GlI*Gda9_}7R*jc6A|rW?}p zyU*HnO%ZhH^^+bkRSjRc*r}YZ<*Kg=q67Sip1GmYP7(pc)dIhv+)~wOT4_)|WeroV=L7xAJ*5 z4g&IH@qcX|H>o_vgj^H!55u(0z2scUUes!*@1YPsL>)LC1ysVXwoi9wD)V#cAY!>I z`=K9cf^YvUK)iqm%`3HuCdctgjGJ(u$*y^8QD$Ly2~hM@Apcm49hk_6S7sihUd=h% zK&ED=^PJc~*5gIvkU%z*vHt9X`ASq*g64BpB7Z(eGn2*|PtgbOv?8v~Qgi9>GF@a%yDMG!_$a(gIEBQUswEA8xjTv|A^i1i}%oQ3A({97o-*sigh(QMf|TSAJr~Ad-K82?9dL5lVRNB{(r7|BYqcqYyIsg^n|D zim&I{Umeo%XaAFVrB?X2)ZCV~@W0P7zkk|FE}QoeS(xI`6z7aZh4}62;ij#1iCS_i zuW$x2dVPe0VR@a1HPvlZGIfctKS5#&+kEl4P~<+jb+SP^U&w-gp=94Z6^yKgGk?Zv7+{R) z+Zx|U#s{?IQl7$r^FrXU9g!J1v$(dY{}1Upb(*<7n}Ln4{w_T|^A;uT1}HV0b|)g! zuc&x(H}Nq+lePC!{e_-U%S)tgvFhW7V(-$XiwAkFb>~6ZsBgn+6p1KP?DbwKB?^VN z`ebAkn*r!13)tu9d4e4*rhi53%C$F>nn`Ax)=dX7Ef~3>Y7sf##oa&xmCcdpDk$`oaLFu5|8fo{oR8@duHg8ZAYy`c!rrx( z1=s5?KFGx=0+G)Loqt5a7ShTZbE+mh-Kleu#m(CbPu;qaPk%JOpB6Y4x8Q7#*5rv~ zXi)i2Ze8hm;xe%jln#`uRv!kiI2F(EN1SK0Mz2wXRdi97rTrrC3l$#9SUBo_Cy4q* zJS)1GS;$SHSGF9Z^ST9K^lB9?%aZ@n#1T5yD*NrzmcJS@Ab%xvhNhVL_S+==Qg!nat8Oiyu&F(QO==M0U*tdmrqpt^CRrBl4+WctNZPlXI~LS`-qg z{oE||^Z{zkcIdlrYe25*hsqLED(@yq4Hm{*2Ut(xEM#UDE-0s{|2uV%q`cXRYojGB zZ-sfOQ5@85n}6rRBKw^CeDp?o4-wK&x$pSXPE^`TfkdXR0tJnU?}Agzyy2>C+VzQw z$rtUuHyNrqs-ZOH#D0cAIU1}?&ChoB?G;7 z)pO~M)PJ2dqGF*+CH>H1D8K5}XV|p}`9ia&p^Z<){eQX4RkUS7KAD)KfNDy2#$zJ& zbwP%!Zq!=<8#B8gQ$v6#Ao0#A5H`AUTqz5Q>5QDOUa!<|5UDc_Z6{+NS|MkQdQL%| zF)f@U&vR9+B2>OpkagzNHR((t;A&)x5~I=(|@^33VcYWdr9zFPA+@)Kfh~>cwMsI2m*`C0c|+uhf%$1VqG2A*o4XO!RHh| zT_Zz~T@<6mRgNwD5ear7vQ}dy-0xrOsLK>bP9h^I_CUu@Bo@)Ib1be;k7lPs)*dWk&d>zp>JtTw)trav3}$cJtG2lD>Lv<4EmKl5 z$R%rNGVb1H$)}$=Jf&pZvvc{1A&e=1Zjc#_F-5bm3D9Hz4eK?Em##f`bu;-3u|`dg<)J zRwpxh?>haoNE8%H;%Q9uCdBolkqFT@XL;X&yc&j4ENgNEKD4(RNQo{<;Y=5<> z?nlqVn6`80#f)H-{*bI)%v8Zu(xfkV&?w$-``_~Wp6H6#t1k!_ z>0>HX0$4?yQ{4izst{Wim|EdZyL33Mqd4u2-(h_1=Q19WI2YkhXQggTX^~mb9Q%rW zkz19TW+GNqAM_(IHG1vZ< zaghC3?M`|Y3jnEfaqmeZDF@RVCHD1@pch+-i&1-t*O{}BD3K5H>7&BXtyso3F!9>3 zNU11e#xVx*0k82ubS7nv5`+9Uh*kpbd@_VVe{hBF{h?oPpUL5l<%wRsIMmh6IL3IL^b>LG)eSQ7Zbc z{V*6%k7+u62O%6ue)$o2BTl`@+=Rwdvp@Xm9LmI>~FO;>!tod;4Wa?jh^HQOz z+CtDo)v=qPKrHbGof=!fgPKH@pDCD%tH|(vZcu4FyFR7?{ccsKds8#4{R@z1sO?{lG{EsF^z7ponAa-s>UnNlT?+vHiRcPO1vsM&&jzNhmI!K5c+pBC#B#~Ot2t|o>p^b znYB+~|&ODTvROl1$jN0E-mqiLrTW%5e{YbC_@rSYjw z5WOn~uYZi%1>^)lr|LchUrlNjQ5|Q7FKh8ueOt^%F%#>>t^ds>n6Ao>oE2zzPX5{(fHy98N|g*3!QX)jXMRhuufL0W1o<^!Q%;mS^$HGYwb1Xgwvt zI?g=HQ#KIf#n2kGU_OdXu_l)&GnQ=3j43|q`?L4gm==2u2*f;G3Z{xlEx3z?EF-FUosu@3A!O%Q!imb~ zMStBQU3pnqF8b7+OV#`Zn?2SeFJRJ zuz7WFHxBbLl^)OA~gxFk9_Slso(8>VkVF0&pQIDgk6 z)KsP`Dpy!Oa7=1&G#kt)O)eDHiUbE+N3bIr4)_oslGJio?8-s4$9kY7%P)%7whM%? z4J4%vyf#5aaWbIsp)CHB%8~G+mE~^~Ke+;bTaL!4m4Ws5->139I*?(Z4Ryk2xv+)p z6a{^}ePs3RJ6MRH!F~$A`%zLsV1E=#n8-iMjdFlSgpGPgvLYjwBUDL@LPrS2w7g*; zdhr;7V@ntnffJ;P`rzZ+BYd?px#5-I%8iFp2fMpM**k0n{)ncQBXStWWDlh4+CzTj z_-WbIv)sQc@;ZLA;dD$dBj7#`4ZNjyK}8@%pL~aWpY~L;uG4}QP`RhCgaF3 zr8i=Pqp(9q6S<7-lA< zK|~@C@)OVI@t@~@rL)!JB*L3!Uk%u*^Ijx)2TLk@Q!C#Kb{RAFf zk|RvVB3qMQuOu%Q7R(#4{Xr+W3=6}+mt8U#j$+@ZVC}^f44ry`9t);H#Gxs}`orV8 zI6$NrinLHfY1$3zHhN#-=V z9|aqtg)B?vbPK)6#o4<9lEgw`*S?mXDcZx$D5JF(m6~&!QY|vx2h?74M zB$CxTVxy}Ina9oZm&xI3n~LW8?WSHE8&{}7l4e2=I36SnXZ6>&Tsw%uzs-wK+F zuH_ZCRCQt}^^N1;9wsYB&~B?W+O%E}PX^YvfxWEN-hVXc`J%^R(yt_f01~sBtAg>!*EAZ+f9H$Pdb2@bhTlO$AXoH z_g%We*?-+^mqM|6R$xwrM6!ce{pmUerNqriN(w0wRfa0d?R=e5DlG)}7w>ekq8jCF@t^VYCc_iRoB%qNu#ihh zv&DogEQK5t0P7pctW?4)5qJ zei97<=MHwhGyZMae(2vA;wYpFZlhKsuoX)bRnyRLX^p~6v1n^FWfPZX=v-g(HP+7Z zzA_eiv_%`rL(}56ICe%zLV7t`pKN~M;z?X6r9#GkZ!G57;KV3fLgBY%8VG5+pQ0`u zRDYIhQpWdYRC ztob(5jdo8v$rWG#c6gMx3Ncgj^J}#diGM}Gg=2nd8h~@n#3aOGs2e-!pKMylS$mBz zKoG1R$XoJ9+ZZd&KtWb;`v7P5WaOVALCUMjb@ z7H_ZEgu98NqYCH^pi_FDsV_R0zAob-eNw26jN@22dfH6>2ID4&vJndlaiV2KwtwM4 zmiX>4iC?}d&Qod^3F9;MEMA454V>ZWvuKXp^uh?#W3AL5dDkvWCWTW&1wx(fbuwjf z(}2P~FsqA+aVteY)Udvvg-Q_ieGsbB)?z%Wu;cKrLjEoUYd9Pvs2iQcTqIrV62l{n z!pG@@jS0)UfJ#ZPx@=oGHpXFvMt?2;_~RG>m6sNTIuMRIU1K>HnOATJLk#P_=Mv)=|RvK?rG zt+`eoZao#Qk5=gVX|S>e(tmO)@JGXMtn#LrylKg?KpWD-riLQVNW#k&{>S&r(pKMj zSP#8WZg!;5G*~oa_`B$#(Gv)QaZk83+9gnE=N+L4a#3}I4?;NTYEFD_%f?r`uX}K# zb4Uq*%k_SyRBW#q1xA(@Q(d$#(B`InHIA9T8&f>9O`%eQl(m!fsDGEjP|WP35bm=k zH$tv{aa6r_9#OP^w#VA}+QI73; zkd}ey69gDjkQOTg-enEXxJ$bli8D%MzJHK6pOH6L!RRw{$%)j@D;0t9m)Td~C+_)zpQ-_B}wmw I;mA;Ps#V8lN_`j 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 Q9}6%sHZuw(B}Gq03Z&JP4*&oF delta 160125 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

<)3!hrTHFpL+G1lS`H`rE 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

wL!n4B9e{CjZFu#Q_A^p_hv8Zq z2aYFJpDx?CIR5a#-#)R%2THD`=6P-q+M$&LAcslI+q^O#+?8k&@kmgRnwameVZ{p%Iil(F?4_KMdR@pQwhfgvJB$#YxdgF4;6ez zhtyqIYd$44bmig3{vAuVU~FqV1jKUh;nFOXDY@CuIDEwmK>tgT@`a5G_~krayITAG zdGvMsHPb@)R*}3jySwGv<^_1Uh8%tae3fu)-e#*EiUFKXP73!ct)m&{@j5JLe5E8^0z*A4{TL(|==L`UDM`B-~?5w|HY_%|fcGu-?+Bh}=@x2NF zYeh6X@Rx=U5>(Msr}q?zNsdTDtROtX2dw;i^`UGHo+ZA3WA<25_U`>Ti_eU!tlW)f zBh|4YkoMKX@K%M>-4y?$Gwj#B64P zzWK1B6B)-`_MV9M`vNax-cTzvyqL$2_dOX7Of&@mvE;V^%`GzYdS?#!X5>!u-C%w&NGe`jtn$ zLe9fif8CU?f*-dOX0@&FKJ7B_bJ1Fsaxvvxo-6lSja&s4Y_xY z%>c@iN)5hbQwbg-Rv-eOfUrb$c*o6^>`B^ZDaCSp*`#-?R7{jDI`$VeSW#Y=26&;Q zN2p#8al!bc4gNJ|v>9Q`jTN?YiBs&=G;9bb9v$ypkf9knMWN8s)N-EjZF76vcO(<^e%pA@49 z)`ofr)x%OLCCb2Z9O2@0IS9mhS;`Ao29gJgtQYZdbp1*g?3k^7CMB>e3uZb)F1)@B zF`{A=vgI>1*ZESAP{AWQ>k};LXXQnj0NKl6sOHr2JeITFVg?oVYTUFdSXQhVRtC{^lX3J#qEZq0XU~Pu)KcP!7k=1;9(4w%^q( z3EGbCbYybjhF>VR>@@I`BbS2o>zR#(->Y#MMFm_?wW2Ii-D!-{+g}zZx}(sPO_zQ7?C0C=Fr2yNPNj6?ncTA^9;sLq26FKsHkQzMqh zqMvF7)^@F8AN27%R;U@!9AZkemgp&>^IW6)^-+AD=>R_5UY}l4DerS(dQsWeEONhz z5VLlcQ!fLXz0SfV_e>h1y0*R&%rgFt=gt2Noa5&WKWAYQrp3O~2?zq$U>Jdz`BTZh z^+H@xov2QTSR6jaTqA-VCNw+3J>omVGyOngCVzix+n?TU8gWw*@#~Mu8NAij!N&YwJ{NcnR#O|~6 zW-`vIFY6`+3c!S@r#!wmX~)8eO`sq6 z9VIe~3yG0*n*qK8+2an0K^vN$mL&~VW149{A;sa^g+suYx38UV-%6B^`|;{`=VJT@ zGZqNqDPQWVt7Eyl*3pHErLi=2Q?LRj=Qie&O4?szz>P=9$&rN>1pS(SK)&7pO5+So1q-^~onArt+&uxRF>~I78t0=Yp-QN~ws@EEFnr6`Y*A!1u0vwrL812-?$~MY6|E%v&1CL~(A;{ z3a}O+I1dfw@DVZ`8p#uBUP$M-xEOi5sugp-S3&W$TIbEc?K}4(&hRdeq$zZY$nf6Y zEyM;ZQf}{N%4K9KYPd;Bz?WCy>aZ|qVbj^69e*M0Uq=%9`yJi`vG8p3ukh27YnQ

$=a6^HehYjyW0Mr&ySRv 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 esprimo cabling -\begin{verbatim} - -ip addr add 10.0.0.42/24 dev enp2s0f0 - -# Adding necessary ARP entries: for the virtual IPv4 address(es) -ip neigh add 10.0.0.6 lladdr f8:f2:1e:09:62:d1 dev enp2s0f0 -ip neigh add 10.0.0.42 lladdr f8:f2:1e:09:62:d1 dev enp2s0f0 - -\end{verbatim} - -For all test cases the following network settings on esprimo: - -\begin{verbatim} -12: enp2s0f0: mtu 1500 qdisc mq state UP group default qlen 1000 - link/ether f8:f2:1e:09:62:d0 brd ff:ff:ff:ff:ff:ff - inet 10.0.0.42/24 scope global enp2s0f0 - valid_lft forever preferred_lft forever - inet6 fe80::faf2:1eff:fe09:62d0/64 scope link - valid_lft forever preferred_lft forever -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 -\end{verbatim} -% ---------------------------------------------------------------------- -\subsection{Test 1: IPv4 egress} -Scenario: simple egress port setting for the IPv4 addresses - -Step 1: getting correct values for table entries from python: - +\subsection{Test 1: IPv4 Egress} +In this test we test whether setting the output port based on the +IPv4 address. +First we get the integer values of the IPv4 addresses in python: \begin{verbatim} >>> int(ipaddress.IPv4Address(u"10.0.0.42")) 167772202 >>> int(ipaddress.IPv4Address(u"10.0.0.4")) 167772164 >>> - \end{verbatim} - -Step 2: setting table netries - +After that we set the table table entries for the NetFPGA. \begin{verbatim} - >> table_cam_add_entry realmain_v4_networks_0 realmain.set_egress_port 167772202 => 16 0 0 0 0 fields = [(u'hit', 1), (u'action_run', 3), (u'out_port', 8), (u'out_port', 8), (u'mac_addr', 48), (u'task', 16), (u'table_id', 16)] action_name = TopPipe.realmain.set_egress_port @@ -182,18 +120,15 @@ READ 0x44020244 = 0x0001 success >> \end{verbatim} - -Step 3: setting arp entries - +On the host we setup the ARP entries: \begin{verbatim} root@ESPRIMO-P956:~# ip neigh add 10.0.0.6 lladdr f8:f2:1e:09:62:d1 dev enp2s0f0 root@ESPRIMO-P956:~# ip neigh add 10.0.0.4 lladdr f8:f2:1e:09:62:d1 dev enp2s0f0 - \end{verbatim} -Step 3: generating test packets, expecting 4 packets to show up on -enp2s0f0: - -%\tvb +And then we generate test packets and expect 4 packets to show up on +enp2s0f0. +The following \texttt{tcpdump} output shows the expected packets +arriving on enp2s0f0: \begin{verbatim} nico@ESPRIMO-P956:~$ sudo tcpdump -ni enp2s0f0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode @@ -203,17 +138,12 @@ listening on enp2s0f0, link-type EN10MB (Ethernet), capture size 262144 bytes 10:49:29.222340 IP 10.0.0.42 > 10.0.0.4: ICMP echo request, id 4440, seq 2, length 64 10:49:29.222418 IP 10.0.0.42 > 10.0.0.4: ICMP echo request, id 4440, seq 2, length 64 \end{verbatim} -%\tve - -Result: sucess - - +% ok % ---------------------------------------------------------------------- \subsection{Test 2: IPv6 egress} -Similar to the IPv4 setting before, just for IPv6. - -Step 1: getting IP address values - +This test shows how setting the egress port based on the IPv6 address +works with the NetPFGA. Similar to the previous test, we first the +the Integer values of the IPv6 addresses: \begin{verbatim} >>> int(ipaddress.IPv6Address(u"2001:db8:42::4")) 42540766411362381960998550477184434180L @@ -221,11 +151,8 @@ Step 1: getting IP address values 42540766411362381960998550477184434182L >>> int(ipaddress.IPv6Address(u"2001:db8:42::42")) 42540766411362381960998550477184434242L - \end{verbatim} - -Step 2: setting table entries - +After that we set the table entries: \begin{verbatim} >> table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477184434182 => 64 0 0 0 0 fields = [(u'hit', 1), (u'action_run', 3), (u'out_port', 8), (u'out_port', 8), (u'mac_addr', 48), (u'task', 16), (u'table_id', 16)] @@ -265,16 +192,12 @@ READ 0x44020344 = 0x0001 success >> \end{verbatim} - -Step 3: setting neighbor entries - +On the host we set the IPv6 neighbor entries: \begin{verbatim} nico@ESPRIMO-P956:~$ sudo ip -6 neigh add 2001:db8:42::6 lladdr f8:f2:1e:09:62:d0 dev enp2s0f1 nico@ESPRIMO-P956:~$ sudo ip -6 neigh add 2001:db8:42::4 lladdr f8:f2:1e:09:62:d0 dev enp2s0f1 \end{verbatim} - -Step 4: generating test packets - +And generate the test packets: \begin{verbatim} nico@ESPRIMO-P956:~$ ping6 -c2 2001:db8:42::6 PING 2001:db8:42::6(2001:db8:42::6) 56 data bytes @@ -287,129 +210,49 @@ listening on enp2s0f1, link-type EN10MB (Ethernet), capture size 262144 bytes 11:30:17.287599 IP6 2001:db8:42::42 > 2001:db8:42::6: ICMP6, echo request, seq 1, length 64 11:30:18.310178 IP6 2001:db8:42::42 > 2001:db8:42::6: ICMP6, echo request, seq 2, length 64 11:30:18.310258 IP6 2001:db8:42::42 > 2001:db8:42::6: ICMP6, echo request, seq 2, length 64 - \end{verbatim} - -Result: success, packet is seen twice. - -% ------------------------------------------------------------------------------ -\subsection{Test 3: NAT64} - -Additionally to the preparations done in test 1 and 2, the following -steps were taken: - -Step 1: getting IP address values via Python - -\begin{verbatim} ->>> int(ipaddress.IPv6Address(u"2001:db8:42::2a")) -42540766411362381960998550477184434218L - ->>> int(ipaddress.IPv6Address(u"2001:db8:42::")) -42540766411362381960998550477184434176L - ->>> int(ipaddress.IPv6Address(u"2001:db8:42::a00:2a")) -42540766411362381960998550477352206378 - ->>> int(ipaddress.IPv4Address(u"10.0.0.0")) -167772160 - - ->>> int(ipaddress.IPv4Address(u"10.0.0.66")) -167772226 - -\end{verbatim} - -Add table entry for 2001:db8:42:2a to be translated to 10.0.0.42: - -\begin{verbatim} ->> table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960998550477184434218 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0 -fields = [(u'hit', 1), (u'action_run', 3), (u'v6_src', 128), (u'v4_dst', 32), (u'nat64_prefix', 128), (u'table_id', 16)] -action_name = TopPipe.realmain.nat64_static -field_vals = [2, '42540766411362381960998550477184434176', '167772160', '42540766411362381960998550477184434176', '0'] -CAM_Init_ValidateContext() - done -WROTE 0x44020050 = 0x002a -WROTE 0x44020054 = 0x0000 -WROTE 0x44020058 = 0x420000 -WROTE 0x4402005c = 0x20010db8 -WROTE 0x44020080 = 0x0000 -WROTE 0x44020084 = 0x0000 -WROTE 0x44020088 = 0x0000 -WROTE 0x4402008c = 0xdb80042 -WROTE 0x44020090 = 0x2001 -WROTE 0x44020094 = 0x0a00 -WROTE 0x44020098 = 0x0000 -WROTE 0x4402009c = 0x0000 -WROTE 0x440200a0 = 0xdb80042 -WROTE 0x440200a4 = 0x22001 -READ 0x44020044 = 0x0001 -WROTE 0x44020040 = 0x0001 -READ 0x44020044 = 0x0001 -READ 0x44020044 = 0x0001 -success ->> - -\end{verbatim} - -Add table entry for 2001:db8:42::a00:2a to be translated to 10.0.0.66: -\begin{verbatim} -table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960998550477352206378 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0 -\end{verbatim} - -Add table entry for 10.0.0.66 to be translated to 2001:db8:42:42: - -\begin{verbatim} ->> table_cam_add_entry realmain_nat46_0 realmain.nat46_static 167772226 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0 -fields = [(u'hit', 1), (u'action_run', 3), (u'v6_src', 128), (u'v4_dst', 32), (u'nat64_prefix', 128), (u'table_id', 16)] -action_name = TopPipe.realmain.nat46_static -field_vals = [2, '42540766411362381960998550477184434176', '167772160', '42540766411362381960998550477184434176', '0'] -CAM_Init_ValidateContext() - done -WROTE 0x44020150 = 0xa000042 -WROTE 0x44020180 = 0x0000 -WROTE 0x44020184 = 0x0000 -WROTE 0x44020188 = 0x0000 -WROTE 0x4402018c = 0xdb80042 -WROTE 0x44020190 = 0x2001 -WROTE 0x44020194 = 0x0a00 -WROTE 0x44020198 = 0x0000 -WROTE 0x4402019c = 0x0000 -WROTE 0x440201a0 = 0xdb80042 -WROTE 0x440201a4 = 0x22001 -READ 0x44020144 = 0x0001 -WROTE 0x44020140 = 0x0001 -READ 0x44020144 = 0x0001 -READ 0x44020144 = 0x0001 -success ->> -\end{verbatim} - - -Step 3: setting neighbor entries - -\begin{verbatim} -sudo ip neigh add 10.0.0.66 lladdr f8:f2:1e:09:62:d1 dev enp2s0f0 -sudo ip -6 neigh add 2001:db8:42::2a lladdr f8:f2:1e:09:62:d0 dev enp2s0f1 -sudo ip -6 neighbor add 2001:db8:42::a00:2a lladdr f8:f2:1e:09:62:d0 dev enp2s0f1 - -\end{verbatim} - -Step 4: ping test should translate, but fail with wrong checksum: - +The packets are successfully seen by tcpdump. % ---------------------------------------------------------------------- -\chapter{\label{appendixB}NetFPGA Logs} -Majority of the log files are stored inside the source code directory -stored at ``netpfga/logs''. It follows a selection of excerpts -of log files that might be relevant for reproducing the work. +\section{\label{appendix:bmv2}P4/BMV2 environment and tests} +All BMV2 based compilations were made with the following compiler: +\begin{verbatim} +p4@ubuntu:~$ p4c --version +p4c 0.5 (SHA: 5ae30ee) +\end{verbatim} +The installation is based on the vagrant files that were provided in +the ``Advanced Topics in +Communication Networks Fall 2018'' course of +ETHZ (\url{https://adv-net.ethz.ch/2018/}) and contains p4tools as +well as all utilities that came with the vagrant installation. +% ok % ---------------------------------------------------------------------- - -\section{\label{chapterB:netpfga-flasherror}NetFPGA Flash Errors} +For running the diff based checksum code, the following steps are +necessary: First compile the p4 code and then start the switch, both +with \texttt{p4run}. +\begin{verbatim} +cd ~/master-thesis/p4app +sudo p4run --config nat64-diff.json +\end{verbatim} +Then with starting the controller the required table entries will +\begin{verbatim} +cd ~/master-thesis/p4app +sudo python ./controller.py --mode range_router +\end{verbatim} +% ---------------------------------------------------------------------- +\chapter{\label{appendix:netpfgalogs}NetFPGA Logs} +The log files of the NetFPGA compilations are stored inside +the source code directory stored at \texttt{netpfga/logs}. +It follows a selection of excerpts of log files that might +be relevant for reproducing the work. +% ---------------------------------------------------------------------- +\section{\label{appendix:netpfgalogs:flasherror}NetFPGA Flash Errors} Sometimes flashing bitfiles to the NetFPGA will fail. A random amount of reboots (1 to 3) and a random amount of reflashing will fix this problem. - Below can be found the log output from the flashing process. - \begin{verbatim} -nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$ sudo bash -c ". $HOME/master-thesis/netpfga/bashinit && $(pwd -P)/program_switch.sh" +nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$ +sudo bash -c ". $HOME/master-thesis/netpfga/bashinit && $(pwd -P)/program_switch.sh" ++ which vivado + xilinx_tool_path=/opt/Xilinx/Vivado/2018.2/bin/vivado + bitimage=minip4.bit @@ -453,20 +296,19 @@ nf3: ERROR while getting interface flags: No such device + bash config_writes.sh \end{verbatim} +% ok % ---------------------------------------------------------------------- - -\section{\label{chapterB:netpfga-flashok}NetFPGA Flash Success} +\section{\label{appendix:netpfgalogs:flashsuccess}NetFPGA Flash Success} A successful flashing process also emits a couple of errors, however the message ``fpga configuration failed. DONE PIN is not HIGH'' and its succeeding lines are missing, as seen below. -After that in all cases a reboot is required; the PCI rescan in no -tested case showed the nf devices. - - +After that in all cases a reboot is required; the PCI rescan in none +of our test cases re enabled the nf devices. \begin{verbatim} nico@nsg-System:~$ cd $NF_DESIGN_DIR/bitfiles/ -nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$ sudo bash -c ". $HOME/master-thesis/netpfga/bashinit && $(pwd -P)/program_switch.sh" +nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$ +sudo bash -c ". $HOME/master-thesis/netpfga/bashinit && $(pwd -P)/program_switch.sh" ++ which vivado + xilinx_tool_path=/opt/Xilinx/Vivado/2018.2/bin/vivado + bitimage=minip4.bit @@ -507,11 +349,11 @@ nf3: ERROR while getting interface flags: No such device + bash config_writes.sh nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$ \end{verbatim} +% ok % ---------------------------------------------------------------------- -\section{\label{chapterB:netpfga-kernelmodule}NetFPGA Kernel module} +\section{\label{appendix:netfpgalogs:kernelmodule}NetFPGA Kernel module} After a successful flash, loading the kernel module will enable nf devices to appear in the operating system. - \begin{verbatim} nico@nsg-System:~$ ip l 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 @@ -579,929 +421,11 @@ nico@nsg-System:~$ \end{verbatim} % ---------------------------------------------------------------------- -\section{\label{chapterB:netpfga-nftraffic}NetFPGA misses packets on nf*} -While the nf devices appear in the operating system, packets emitted -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. - +\section{\label{appendix:netfpgalogs:compilelogs}NetFPGA compile logs} % ---------------------------------------------------------------------- -\section{\label{chapterB:netpfga-kernelmodule}NetFPGA Kernel module} - -%--------------------------------------------------------------------------------------------------------- -\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! - -\begin{verbatim} -nico@nsg-System:~/jool-4.0.1$ sudo make install - -\end{verbatim} - -\subsection{\label{benchmark:jool:config}Jool Configuration} - -Loading module: -\begin{verbatim} -nico@nsg-System:~/jool-4.0.1$ sudo modprobe jool_siit - - -\end{verbatim} - -enabling forwarding: -\begin{verbatim} -sysctl -w net.ipv4.conf.all.forwarding=1 -sysctl -w net.ipv6.conf.all.forwarding=1 -\end{verbatim} - -Mapping configuration: - -\begin{verbatim} -nico@nsg-System:~/jool-4.0.1$ sudo jool_siit instance add example --iptables --pool6 2001:db8:23::/96 - -nico@nsg-System:~/jool-4.0.1$ sudo ip6tables -t mangle -A PREROUTING \ - -s 2001:db8:42::/64 -d 2001:db8:23::/96 -j JOOL_SIIT --instance example - -nico@nsg-System:~/jool-4.0.1$ sudo iptables -t mangle -A PREROUTING \ - -s 10.0.0.0/24 -j JOOL_SIIT --instance example - -\end{verbatim} - - - -Debugging: - -\begin{verbatim} -[16:39] nsg-System:~# lsmod| grep jool -jool_siit 147456 2 -x_tables 40960 5 jool_siit,ip6_tables,ip_tables,ip6table_mangle,iptable_mangle -[16:39] nsg-System:~# - -[16:41] nsg-System:~# jool_siit -i example stats display --explain -JSTAT64_DST: 276 -Translations cancelled: IPv6 packet's destination address did not match pool6 nor any EAMT entries, or the resulting address was blacklist4ed. - - -\end{verbatim} - -Try 2 w/ eamt: - -\begin{verbatim} -[16:53] nsg-System:~# modprobe jool_siit -[16:54] nsg-System:~# jool_siit instance add "example" --iptables -[16:54] nsg-System:~# jool_siit -i example eamt add 2001:db8:42::/120 10.0.1.0/24 -[16:55] nsg-System:~# jool_siit -i example eamt add 2001:db8:23::/120 10.0.0.0/24 -[16:57] nsg-System:~# ip6tables -t mangle -A PREROUTING -s 2001:db8:42::/120 -d 2001:db8:23::/120 -j JOOL_SIIT --instance example -[16:57] nsg-System:~# iptables -t mangle -A PREROUTING -s 10.0.0.0/24 -d 10.0.1.0/24 -j JOOL_SIIT --instance example -[16:57] nsg-System:~# - -\end{verbatim} - -Testing NAT64: - -\begin{verbatim} -nico@ESPRIMO-P956:~/master-thesis/iperf$ ping6 2001:db8:23::2a -PING 2001:db8:23::2a(2001:db8:23::2a) 56 data bytes -64 bytes from 2001:db8:23::2a: icmp_seq=1 ttl=63 time=0.199 ms -64 bytes from 2001:db8:23::2a: icmp_seq=2 ttl=63 time=0.282 ms -64 bytes from 2001:db8:23::2a: icmp_seq=3 ttl=63 time=0.186 ms -^C ---- 2001:db8:23::2a ping statistics --- -3 packets transmitted, 3 received, 0% packet loss, time 2040ms -rtt min/avg/max/mdev = 0.186/0.222/0.282/0.044 ms -nico@ESPRIMO-P956:~/master-thesis/iperf$ ping 10.0.1.66 -PING 10.0.1.66 (10.0.1.66) 56(84) bytes of data. -64 bytes from 10.0.1.66: icmp_seq=1 ttl=63 time=0.218 ms -64 bytes from 10.0.1.66: icmp_seq=2 ttl=63 time=0.281 ms -64 bytes from 10.0.1.66: icmp_seq=3 ttl=63 time=0.280 ms -^C ---- 10.0.1.66 ping statistics --- -3 packets transmitted, 3 received, 0% packet loss, time 2051ms -rtt min/avg/max/mdev = 0.218/0.259/0.281/0.034 ms -nico@ESPRIMO-P956:~/master-thesis/iperf$ - -\end{verbatim} - - -\subsection{\label{benchmark:jool:benchmark}Jool Benchmarks} - -v4->v6 tcp - -P1: 8.24 gbit/s no cpu load visible -P20: 8.26 gbit/s iperf 42 + 10% cpu no cpu load visible -P50: 8.29 gbit/s - -v6->v4 tcp - -P1: 8.22 -P20: 8.22 15/60% iperf -P50: 8.23 iperf: 73/16% - -Commands: - -\begin{verbatim} -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -B 2001:db8:42::42 -s | tee iperf-jool-v4tov6-server-tcp-P50 - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P1 -c 10.0.1.66 | tee iperf-jool-v4tov6-client-tcp-P1 - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P20 -c 10.0.1.66 | tee iperf-jool-v4tov6-client-tcp-P20 -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P50 -c 10.0.1.66 | tee iperf-jool-v4tov6-client-tcp-P50 - -Other way: - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -B 10.0.0.42 -s | tee iperf-jool-v6tov4-server-tcp-P1 - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P1 -c 2001:db8:23::2a | tee iperf-jool-v6tov4-client-tcp-P1 - -... - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P1 -b0 -u -c 2001:db8:23::2a | tee iperf-jool-v6tov4-client-tcp-P1 - - -\end{verbatim} - - -v4->v6 udp - -P1: 4.46 iperf 30% cpu nat64: 100% cpu -P20: 18.8 iperf 100% nat64: 100% -P50: 22.8 iperf 100% nat64: 100% atop: ca. 5gbit/s - -\begin{verbatim} -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -B 2001:db8:42::42 -s | tee iperf-jool-v4tov6-server-udp-P1 - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P1 -c 10.0.1.66 -u -b0 | tee iperf-jool-v4tov6-client-udp-P1 - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P20 -c 10.0.1.66 -u -b0 | tee iperf-jool-v4tov6-client-udp-P20 - - -\end{verbatim} - -v6->v4 udp - -P1: 6.67 gbit/s iperf 50/50%, nat64: 100% cpu! -P20: 16.8 nat64: iperf: ? 100% cpu -P50: 20.5 Gbits/sec nat64: 100% (1 core) iperf: 100%/50% atop: 7000mbit/s in / out - -\begin{verbatim} - -\end{verbatim} - -Turning off offloading, redoing tcp: - -\begin{verbatim} -root@ESPRIMO-P956:~# ethtool -K enp2s0f0 gso off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -root@ESPRIMO-P956:~# ethtool -K enp2s0f0 rx off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -root@ESPRIMO-P956:~# ethtool -K enp2s0f0 tx off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -Actual changes: -tx-checksumming: off - tx-checksum-ip-generic: off - tx-checksum-sctp: off -tcp-segmentation-offload: off - tx-tcp-segmentation: off [requested on] - tx-tcp6-segmentation: off [requested on] -root@ESPRIMO-P956:~# ethtool -K enp2s0f1 tx off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -Actual changes: -tx-checksumming: off - tx-checksum-ip-generic: off - tx-checksum-sctp: off -tcp-segmentation-offload: off - tx-tcp-segmentation: off [requested on] - tx-tcp6-segmentation: off [requested on] -root@ESPRIMO-P956:~# ethtool -K enp2s0f1 rx off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -root@ESPRIMO-P956:~# ethtool -K enp2s0f1 gso off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -root@ESPRIMO-P956:~# - -[17:26] nsg-System:~# ethtool -K eth1 tx off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -Actual changes: -tx-checksumming: off - tx-checksum-ip-generic: off - tx-checksum-sctp: off -tcp-segmentation-offload: off - tx-tcp-segmentation: off [requested on] - tx-tcp6-segmentation: off [requested on] -[17:26] nsg-System:~# ethtool -K eth1 gso off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -[17:26] nsg-System:~# ethtool -K eth2 gso off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -[17:26] nsg-System:~# ethtool -K eth2 rx off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -[17:26] nsg-System:~# ethtool -K eth2 tx off -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -Actual changes: -tx-checksumming: off - tx-checksum-ip-generic: off - tx-checksum-sctp: off -tcp-segmentation-offload: off - tx-tcp-segmentation: off [requested on] - tx-tcp6-segmentation: off [requested on] -[17:26] nsg-System:~# - -\end{verbatim} - -Retesting using -P50: - -Still no cpu load with tcp, 100% cpu load iperf - -result: 7.96 gbit/s - -\begin{verbatim} -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -B 10.0.0.42 -s | tee iperf-jool-v6tov4-server-tcp-P50-no-offload -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P50 -c 2001:db8:23::2a | tee iperf-jool-v6tov4-client-tcp-P50-no-offload - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P20 -u -b0 -c 10.0.0.66 | tee iperf-netpfga-v4tov6-client-udp-P20 - - - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -B 10.0.0.42 -s | tee iperf-netfpga-v6tov4-server-tcp-P1 - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P1 -c 2001:db8:42::a00:2a | tee iperf-netfpga-v6tov4-client-tcp-P1 - - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -B 10.0.0.42 -s | tee iperf-netfpga-v6tov4-server-udp-P1 - -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -6 -p 2345 -t 70 -O 10 -P1 -b0 -u -c 2001:db8:42::a00:2a | tee iperf-netfpga-v6tov4-client-udp-P1 - -\end{verbatim} - -\subsection{\label{benchmark:netfpga:benchmark}NetPFGA Benchmarks} - -Only 1 test did have offloading on esprimo off, was redone - -v4->v6 tcp - -P1: 7.41 gbit/s iperf 50% / 20% -P1-offload-on-esprimo: 8.43 gbit/s -P20: 9.29 gbit/s iperf: 66/20% -P50: 9.29 gbit/s 84/42% iperf - -v4->v6 udp - -P1: 7.4gbit/s 100% iperf -P20: 17.7gbit/s iperf 100% atop: ca. 9800 Mbit/s -P50: 21.5 gbit/s iperf 100% ca. 9800 Mbit/s - - -v6->v4 tcp - -P1: 9.28 gbit/s atop ~9800 mbit/s iperf 44% -P20: 9.29 gbit/s atop ~9800 mbit/s iperf 70% -P50: 9.29 gbit/s atop ~9800 mbit/s iperf 90% - -v6->v4 udp - -P1: 7.96 gbit/s atop ~8200mbit/s iperf 70% -P20: 13.4 gbit/s atop 9800 mbit/s iperf 100% -P50: 19.0 gbit/s atop 9800 mbit/s iperf 100% - - - -Commands: -\begin{verbatim} -nico@ESPRIMO-P956:~/master-thesis/iperf$ iperf3 -4 -p 2345 -t 70 -O 10 -P1 -u -b0 -c 10.0.0.66 | tee iperf-netpfga-v4tov6-client-udp-P1 - -\end{verbatim} - -After first netpfga, tcp v4->v6 p1 turned offloading on again - -\begin{verbatim} -root@ESPRIMO-P956:~# ethtool -K enp2s0f1 tx-checksum-ipv6 on -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -Could not change any device features -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:~# ethtool -K enp2s0f1 gso on -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -root@ESPRIMO-P956:~# ethtool -K enp2s0f0 gso on -Cannot get device udp-fragmentation-offload settings: Operation not supported -Cannot get device udp-fragmentation-offload settings: Operation not supported -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:~# ethtool -K enp2s0f0 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} - -%Entries for the list of abbrevations: -% -%To generate the list of abbrevations, execute: -%makeindex Thesis.nlo -s nomencl.ist -o Thesis.nls -% -%If you are using TeXniCenter, specify: -%"%bm.nlo" -s nomencl.ist -o "%bm.nls" -%as beeing the argument list for makeindex. - -%--------------------------------------------------------------------------------------------------------- - -\chapter{\label{bufferssssss}Buffer} - -\section{NetFPGA compile errors} - -- infinite loop in installer +This section shows a compilation of of NetFPGA compile output and errors. +Unfound tbl files that are not correctly generated fail the compilation: \begin{verbatim} # Fix introduced for SDNet 2017.4 sed -i 's/xsim\.dir\/xsc\/dpi\.so/dpi\.so/g' nf_sume_sdnet_ip/SimpleSumeSwitch/vivado_sim.bash @@ -1513,14 +437,13 @@ cp src/*.tbl nf_sume_sdnet_ip/SimpleSumeSwitch/ cp: cannot stat 'src/*.tbl': No such file or directory make: *** [Makefile:23: cpp_test] Error 1 [23:12] loch:minip4% - \end{verbatim} - +Failure to generate an intermediate file: \begin{verbatim} ERROR: [XSIM 43-3409] Failed to compile generated C file xsim.dir/work.SimpleSumeSwitch_tb#work.glbl/obj/xsim_3.c. ERROR: [XSIM 43-3915] Encountered a fatal error. Cannot continue. Exiting... \end{verbatim} - +Failure to compile because libncurses.so.5 is missing: \begin{verbatim} /opt/Xilinx/Vivado/2018.2/data/../tps/llvm/3.1/lnx64.o/bin/clang -fPIC -c -std=gnu89 -nobuiltininc -nostdinc++ -w -Wl,--unres olved-symbols=ignore-in-object-files -fbracket-depth=1048576 -I/opt/Xilinx/Vivado/2018.2/data/../tps/llvm/3.1/lnx64.o/bin/../li @@ -1531,9 +454,9 @@ j/xsim_3.c" -O0 -sim -o "xsim.dir/work.SimpleSumeSwitch_tb#work.glbl/obj/xsim_3. ERROR: [XSIM 43-3409] Failed to compile generated C file xsim.dir/work.SimpleSumeSwitch_tb#work.glbl/obj/xsim_3.c. ERROR: [XSIM 43-3915] Encountered a fatal error. Cannot continue. Exiting... [20:00] rainbow:SimpleSumeSwitch% - \end{verbatim} - +Failure to access txt files that were not correctly generated in a +different compilation step: \begin{verbatim} # Fix introduced for SDNet 2018.2 sed -i 's/glbl_sim/glbl/g' nf_sume_sdnet_ip/SimpleSumeSwitch/vivado_sim_waveform.bash @@ -1543,9 +466,8 @@ cp testdata/*.txt nf_sume_sdnet_ip/SimpleSumeSwitch/ cp: cannot stat 'testdata/*.txt': No such file or directory make: *** [Makefile:17: all] Error 1 [15:46] rainbow:minip4% - \end{verbatim} - +Missing pcap files of non generated testdata causing compile abortion: \begin{verbatim} make -C testdata/ make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata' @@ -1567,9 +489,8 @@ make[1]: *** [Makefile:5: all] Error 1 make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata' make: *** [Makefile:32: frontend] Error 2 [15:47] rainbow:minip4% - \end{verbatim} - +Syntax errors due to incorrect generation of a python script: \begin{verbatim} update_compile_order: Time (s): cpu = 00:00:17 ; elapsed = 00:00:09 . Memory (MB): peak = 1995.594 ; gain = 0.016 ; free physic al = 21975 ; free virtual = 33161 @@ -1590,38 +511,40 @@ IndentationError: expected an indented block (file "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/tcl/simple_s ume_switch_sim.tcl" line 177) INFO: [Common 17-206] Exiting Vivado at Sat May 18 15:21:21 2019... - - \end{verbatim} - +Missing axi files don't abort the compilation process: (shortened for formatting) \begin{verbatim} -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_stim.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_stim.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_stim.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_stim.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/dma_0_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/dma_0_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_stim.log': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_expect.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_stim.axi': No such file or directory -=== Running test /tmp/nico/test/simple_sume_switch/sim_switch_default ... using cmd ['/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default/run.py', '--sim', 'xsim'] +cp: cannot stat 'simple_sume_switch/test/nf_interface_0_log.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_0_stim.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_0_expected.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_1_log.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_1_stim.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_1_expected.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_2_log.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_2_stim.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_2_expected.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_3_log.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_3_stim.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_3_expected.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/dma_0_log.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/dma_0_expected.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/reg_stim.log': No such file or directory +cp: cannot stat 'simple_sume_switch/test/reg_expect.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/reg_stim.axi': No such file or directory +=== Running test /tmp/nico/test/simple_sume_switch/sim_switch_default + ... using cmd + ['/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default/run.py', +'--sim', 'xsim'] \end{verbatim} - +Add Wave error during compilation: (shortened for formatting) \begin{verbatim} # add_wave $nf_sume_sdnet_ip/out_src_port # add_wave $nf_sume_sdnet_ip/out_dst_port # set const_reg_ip /top_tb/top_sim/nf_datapath_0/nf_sume_sdnet_wrapper_1/inst/SimpleSumeSwitch_inst/const_reg_rw_0/ # add_wave_divider {const reg extern signals} # add_wave $const_reg_ip -ERROR: [Wavedata 42-471] Note: Nothing was found for the following items: /top_tb/top_sim/nf_datapath_0/nf_sume_sdnet_wrapper_1/inst/SimpleSumeSwitch_inst/const_reg_rw_0/ +ERROR: [Wavedata 42-471] Note: Nothing was found for the following items: + /top_tb/top_sim/nf_datapath_0/nf_sume_sdnet_wrapper_1/inst/SimpleSumeSwitch_inst/const_reg_rw_0/ ERROR: [Common 17-39] 'add_wave' failed due to earlier errors. while executing @@ -1633,15 +556,16 @@ make: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sd 512 === Work directory is /tmp/nico/test/simple_sume_switch === Setting up test in /tmp/nico/test/simple_sume_switch/sim_switch_default -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/dma_0_log.axi': No such file or directory -=== Running test /tmp/nico/test/simple_sume_switch/sim_switch_default ... using cmd ['/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default/run.py', '--sim', 'xsim'] +cp: cannot stat 'simple_sume_switch/test/nf_interface_0_log.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_1_log.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_2_log.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/nf_interface_3_log.axi': No such file or directory +cp: cannot stat 'simple_sume_switch/test/dma_0_log.axi': No such file or directory +=== Running test /tmp/nico/test/simple_sume_switch/sim_switch_default ... +using cmd ['/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default/run.py', '--sim', 'xsim'] [15:31] rainbow:P4-NetFPGA% \end{verbatim} - +Compilation error failing to run ``connect\_bd\_intf\_net.'' \begin{verbatim} ERROR: [BD 41-171] The modes of the interface pins 'cfg_interrupt'(Slave) and 'pcie3_cfg_interrupt'(Slave) are incompatible. They cannot be connected. ERROR: [BD 5-3] Error: running connect_bd_intf_net. @@ -1660,45 +584,23 @@ ERROR: [Common 17-39] 'connect_bd_intf_net' failed due to earlier errors. while executing "source ./tcl/control_sub.tcl" (file "tcl/simple_sume_switch.tcl" line 89) - \end{verbatim} - +Compilation aborts due to missing IP: \begin{verbatim} - ### set NF_10G_INTERFACE3_BASEADDR $M07_BASEADDR ### set NF_10G_INTERFACE3_HIGHADDR $M07_HIGHADDR ### set NF_10G_INTERFACE3_SIZEADDR $M07_SIZEADDR ### set NF_RIFFA_DMA_BASEADDR $M08_BASEADDR ### set NF_RIFFA_DMA_HIGHADDR $M08_HIGHADDR ### set NF_RIFFA_DMA_SIZEADDR $M08_SIZEADDR -Wrote : +Wrote : + # create_ip -name nf_sume_sdnet -vendor NetFPGA -library NetFPGA -module_name nf_sume_sdnet_ip ERROR: [Coretcl 2-1134] No IP matching VLNV 'NetFPGA:NetFPGA:nf_sume_sdnet:*' was found. Please check your repository configuration. INFO: [Common 17-206] Exiting Vivado at Sat May 25 11:52:01 2019... - \end{verbatim} -\begin{verbatim} -# set_property compxlib.xsim_compiled_library_dir {} [current_project] [0/1819] -# set_property top_lib xil_defaultlib [get_filesets sim_1] -# update_compile_order -fileset sim_1 -update_compile_order: Time (s): cpu = 00:00:17 ; elapsed = 00:00:09 . Memory (MB): peak = 2003.578 ; gain = 8.004 ; free physical = 27661 ; free virtual = 33990 -loading libsume.. -Traceback (most recent call last): - File "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default/run.py", line 42, in - import config_writes - File "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default/config_writes.py", line 7 - - ^ -IndentationError: expected an indented block - while executing -"exec python $::env(NF_DESIGN_DIR)/test/${test_name}/run.py" - invoked from within -"set output [exec python $::env(NF_DESIGN_DIR)/test/${test_name}/run.py]" - (file "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/tcl/simple_sume_switch_sim.tcl" line 177) -INFO: [Common 17-206] Exiting Vivado at Sat May 25 13:45:13 2019... -make: *** [Makefile:121: sim] Error 1 -\end{verbatim} - +Mismatch: a non-critical critical error that does not abort the compilation process \begin{verbatim} [SW] CAM_EnableDevice() - done [2420698] INFO: finished packet stimulus file @@ -1709,15 +611,7 @@ $finish called at time : 2735572 ps : File "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/nf_sume_sdnet_ip/SimpleSumeSwitch/Testbench/Check.v" Line 120 \end{verbatim} - -\begin{verbatim} -[14:54] rainbow:bitfiles% cd $NF_DESIGN_DIR/bitfiles/ && sudo bash ./program_switch.sh -./program_switch.sh: line 34: /tools/program_switch.sh: No such file or directory -[14:56] rainbow:bitfiles% ls -config_writes.sh minip4.bit program_switch.sh README -[14:56] rainbow:bitfiles% -\end{verbatim} - +Missing interface when testing switch\_calc: \begin{verbatim} root@rainbow:~/master-thesis/netpfga/minip4/sw/hw_test_tool# python switch_calc_tester.py SIOCSIFADDR: No such device @@ -1729,8 +623,7 @@ The HW testing tool for the switch_calc design type help to see all commands testing> \end{verbatim} - -\label{netpfgaioctlerror} +Ioctl error when adding table errors on the first NetFPGA card: \begin{verbatim} >> table_cam_add_entry lookup_table send_to_port1 ff:ff:ff:ff:ff:ff => CAM_Init_ValidateContext() - done @@ -1739,9 +632,8 @@ WROTE 0x44020054 = 0xffff WROTE 0x44020080 = 0x0003 python: ioctl: Unknown error 512 [20:27] rainbow:CLI% - \end{verbatim} - +Exec format errors when loading the kernel module due to incompabilities: \begin{verbatim} [7:05] rainbow:netpfga% bash build-load-drivers.sh + cd /home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0 @@ -1763,12 +655,10 @@ depmod -a 5.0.0-16-generic + sudo modprobe sume_riffa modprobe: ERROR: could not insert 'sume_riffa': Exec format error [7:06] rainbow:netpfga% - \end{verbatim} - +Java traceback when trying to install SDNET: +(reason was a hidden window) \begin{verbatim} -java traceback when trying to install sdnet -#+BEGIN_CENTER Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Window must not be zero at java.desktop/sun.awt.X11.XAtom.checkWindow(Unknown Source) at java.desktop/sun.awt.X11.XAtom.getAtomData(Unknown Source) @@ -1828,15 +718,8 @@ Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Windo at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) - - -#+END_CENTER - -Reason was a hidden window. - \end{verbatim} - -Testing the card +Failures when testing the first NetFPGA card \begin{verbatim} --------------------------------------------- [ddr3B]: Running Auto Test @@ -1868,9 +751,8 @@ Traceback (most recent call last): File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory - \end{verbatim} - +More failures when testing the first NetFPGA card \begin{verbatim} --------------------------------------------- [pcie]: Running Auto Test @@ -1894,14 +776,12 @@ Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 495, in read raise SerialException('device reports readiness to read but returned no data (device disconnected or multiple access on port?)') SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?) - - \end{verbatim} - -Another generated file problem: +Unexpected EOF during compilation: \begin{verbatim} -nico@nsg-System:~/master-thesis/netpfga$ grep -i error $P4_PROJECT_DIR/nf_sume_sdnet_ip/SimpleSumeSwitch/LOG -ERROR: [VRFC 10-1491] unexpected EOF [/home/nico/master-thesis/netpfga/minip4/nf_sume_sdnet_ip/SimpleSumeSwitch/S_CONTROLLERs.HDL/S_CONTROLLER_SimpleSumeSwitch.vp:37] +ERROR: [VRFC 10-1491] unexpected EOF +[/home/nico/master-thesis/netpfga/minip4/nf_sume_sdnet_ip/ +SimpleSumeSwitch/S_CONTROLLERs.HDL/S_CONTROLLER_SimpleSumeSwitch.vp:37] INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_0_ErrorCheck INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_1_ErrorCheck INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_2_ErrorCheck @@ -1909,10 +789,8 @@ INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_3_ErrorCheck INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_4_ErrorCheck INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_5_ErrorCheck INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_6_ErrorCheck - \end{verbatim} - -function syntax not supported +The function syntax is not supported by p4/netfpga: \begin{verbatim} make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4 @@ -1926,80 +804,71 @@ make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume Makefile:31: recipe for target 'frontend' failed make: *** [frontend] Error 2 nico@nsg-System:~/master-thesis/netpfga$ - - \end{verbatim} - +The config\_writes.py is missing due to a previous, non critical +compilation error: \begin{verbatim} -nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default$ cd $NF_DESIGN_DIR/test/sim_switch_default && make 2>&1 | tee ~/master-thesis/netpfga/log/step8-$(date +%F-%H%M%S) +nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default$ +cd $NF_DESIGN_DIR/test/sim_switch_default && make 2>&1 | tee ~/master-thesis/netpfga/log/step8-$(date +%F-%H%M%S) rm -f config_writes.py* rm -f *.pyc cp /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata/config_writes.py ./ cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata/config_writes.py': No such file or directory Makefile:36: recipe for target 'all' failed make: *** [all] Error 1 - \end{verbatim} - +Failed to synthesizing module errors: \begin{verbatim} -Finished scanning sources -INFO: [IP_Flow 19-234] Refreshing IP repositories -INFO: [IP_Flow 19-1700] Loaded user IP repository '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/ip_repo'. -INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/opt/Xilinx/Vivado/2018.2/data/ip'. -WARNING: [IP_Flow 19-3664] IP 'bd_7ad4_xpcs_0' generated file not found '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/.Xil/Vivado-26302-nsg-System/coregen/bd_7ad4_xpcs_0_1/elaborate/configure_gt.tcl'. Please regenerate to continue. -WARNING: [IP_Flow 19-3664] IP 'bd_a1aa_xpcs_0' generated file not found '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/.Xil/Vivado-26302-nsg-System/coregen/bd_a1aa_xpcs_0_2/elaborate/configure_gt.tcl'. Please regenerate to continue. -open_project: Time (s): cpu = 00:00:05 ; elapsed = 00:00:05 . Memory (MB): peak = 1365.715 ; gain = 188.977 ; free physical = 9396 ; free virtual = 15104 -# puts "\nOpening $design Implementation design\n" - +WARNING: [Synth 8-689] width (12) of port connection 'control_S_AXI_ARADDR' does not match port width (8) of module 'SimpleSumeSwitch' +[/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/ +simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:199] +ERROR: [Synth 8-448] named port connection 'tuple_out_sume_metadata_VALID' does not exist for instance 'SimpleSumeSwitch_inst' of module 'SimpleSumeSwitch' +[/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/ +simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:218] +ERROR: [Synth 8-448] named port connection 'tuple_out_sume_metadata_DATA' does not exist for instance 'SimpleSumeSwitch_inst' of module 'SimpleSumeSwitch' +[/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/ +simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:219] +ERROR: [Synth 8-6156] failed synthesizing module 'nf_sume_sdnet' +[/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/ +simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:44] +ERROR: [Synth 8-6156] failed synthesizing module 'nf_sume_sdnet_ip' +[/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/ +simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/synth/nf_sume_sdnet_ip.v:57] +ERROR: [Synth 8-6156] failed synthesizing module 'nf_datapath' +[/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/ +simple_sume_switch/hw/hdl/nf_datapath.v:44] +ERROR: [Synth 8-6156] failed synthesizing module 'top' +[/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/ +simple_sume_switch/hw/hdl/top.v:43] \end{verbatim} - +Missing ``souce'' files abort CLI compilation errors: \begin{verbatim} -WARNING: [Synth 8-689] width (12) of port connection 'control_S_AXI_ARADDR' does not match port width (8) of module 'SimpleSumeSwitch' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:199] -ERROR: [Synth 8-448] named port connection 'tuple_out_sume_metadata_VALID' does not exist for instance 'SimpleSumeSwitch_inst' of module 'SimpleSumeSwitch' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:218] -ERROR: [Synth 8-448] named port connection 'tuple_out_sume_metadata_DATA' does not exist for instance 'SimpleSumeSwitch_inst' of module 'SimpleSumeSwitch' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:219] -ERROR: [Synth 8-6156] failed synthesizing module 'nf_sume_sdnet' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:44] -ERROR: [Synth 8-6156] failed synthesizing module 'nf_sume_sdnet_ip' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/synth/nf_sume_sdnet_ip.v:57] -ERROR: [Synth 8-6156] failed synthesizing module 'nf_datapath' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/hdl/nf_datapath.v:44] -ERROR: [Synth 8-6156] failed synthesizing module 'top' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/hdl/top.v:43] -\end{verbatim} - -Missing ``souce'' files: -\begin{verbatim} -cc -c -fPIC /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API/CAM.c -I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API -cc -std=c99 -Wall -Werror -fPIC -c libcam.c -I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/sw/sume -I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API -cc -L/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/sw/sume -shared -o libcam.so libcam.o CAM.o -lsumereg +cc -c -fPIC /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API/CAM.c +-I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API +cc -std=c99 -Wall -Werror -fPIC -c libcam.c +-I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/sw/sume +-I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API +cc -L/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/sw/sume + -shared -o libcam.so libcam.o CAM.o -lsumereg /usr/bin/ld: cannot find -lsumereg collect2: error: ld returned 1 exit status Makefile:52: recipe for target 'libcam' failed make[1]: *** [libcam] Error 1 make[1]: Leaving directory '/home/nico/master-thesis/netpfga/minip4/sw/CLI' ERROR: could not compile libcam souce files - - \end{verbatim} - -Generated files not found: +Generated axi files not found at a different stage: \begin{verbatim} -make: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test' -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/Makefile': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_stim.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_stim.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_stim.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_stim.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/dma_0_log.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/dma_0_expected.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/Makefile': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_stim.log': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_expect.axi': No such file or directory -cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_stim.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/ +sume-sdnet-switch/projects/minip4/simple_sume_switch/test/dma_0_expected.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/ +sume-sdnet-switch/projects/minip4/simple_sume_switch/test/Makefile': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/ +sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_stim.log': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/ +sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_expect.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/ +sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_stim.axi': No such file or directory NetFPGA environment: Root dir: /home/nico/projects/P4-NetFPGA Project name: simple_sume_switch @@ -2015,10 +884,8 @@ Die Jul 23 13:34:54 CEST 2019 + cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch + make make: *** No targets specified and no makefile found. Stop. - \end{verbatim} - -Renaming variables breaks the compile process +Renaming variables as follows breaks the compile process \begin{verbatim} @Xilinx_MaxPacketRegion(1024) control TopDeparser( @@ -2038,9 +905,7 @@ Renaming variables breaks the compile process + } \end{verbatim} - -LPM size must be != 64 - +In NetPFGA the LPM table size must be != 64: \begin{verbatim} minip4_solution.p4(38): [--Wwarn=uninitialized_out_param] warning: out parameter meta may be uninitialized when RealParser terminates out metadata meta, @@ -2066,10 +931,8 @@ make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume Makefile:31: recipe for target 'frontend' failed make: *** [frontend] Error 2 nico@nsg-System:~/master-thesis/netpfga/log$ - \end{verbatim} - -LIMIT table match types are not the same error +Cannot mix the key table types with P4/NetFPGA: \begin{verbatim} make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4 @@ -2109,12 +972,8 @@ make[1]: *** [all] Error 1 size = ICMP6_TABLE_SIZE; default_action = controller_debug_table_id(TABLE_ARP); } - - \end{verbatim} - -Implicit error saying that LPM tables don't work: - +Implicit error saying that LPM tables don't work in P4/NetFPGA: \begin{verbatim} s/sume-sdnet-switch/projects/minip4/nf_sume_sdnet_ip/SimpleSumeSwitch/realmain_lookup_table_0_t.HDL/xpm_memory.sv [SW] LPM_Init() - start @@ -2125,7 +984,7 @@ FATAL_ERROR: Vivado Simulator kernel has encounted an exception from DPI C funct Time: 2016466 ps Iteration: 0 Process: /SimpleSumeSwitch_tb/LPM_VerifyDataset File: /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/nf_sume_sdnet_ip/SimpleSumeSwitch/Testbench/SimpleSumeSwitch_tb.sv \end{verbatim} - +The table for exact matches must be at least 64 in P4/NetFPGA: \begin{verbatim} minip4_solution.p4(35) parser RealParser( @@ -2136,10 +995,8 @@ actions_nat64_generic.p4(173): error: table size too small for match_type(EM): 6 actions_nat64_generic.p4(173): error: could not not map table size size size = 63; ^^^^ - \end{verbatim} - -Unsupported default parameters +Unsupported default parameters in P4/NetFPGA: \begin{verbatim} actions_egress.p4(89): error: data-plane arguments in default_actions are currently unsupported: realmain_controller_debug_table_id_0 default_action = controller_debug_table_id(TABLE_V4_NETWORKS); @@ -2149,10 +1006,8 @@ terminate called after throwing an instance of 'Util::CompilerBug' Compiler Bug: actions_egress.p4(89): unhandled expression realmain_controller_debug_table_id/realmain_controller_debug_table_id_0(5); default_action = controller_debug_table_id(TABLE_V4_NETWORKS); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - \end{verbatim} - -Compiler Bug / ifstatement +Causing compiler bug by using an if statement at a wrong place in P4/NetFPGA: \begin{verbatim} minip4_solution.p4(39) parser RealParser( @@ -2165,14 +1020,10 @@ Makefile:34: recipe for target 'all' failed make[1]: *** [all] Error 134 make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' Makefile:31: recipe for target 'frontend' failed - \end{verbatim} - -Applying table ``twice'' in different branches is impossible (another -compiler bug) - +Applying table ``twice'' in different branches is impossible in +P4/NetFPGA causes a different compiler bug: \begin{verbatim} - make -C src/ make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4 @@ -2187,24 +1038,257 @@ terminate called after throwing an instance of 'Util::CompilerBug' Compiler Bug: overwrite Makefile:34: recipe for target 'all' failed - - \end{verbatim} - -Adding entries requires setting all parameters +Adding table entries requires setting parameters for all possible +actions that are registered in a table: \begin{verbatim} ->> table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477184434178 => 1 -ERROR: not enough fields provided to complete _hexify() - +>> table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port +42540766411362381960998550477184434178 => 1 ERROR: not enough fields provided to complete _hexify() \end{verbatim} - -Broken code that cannot convret long to int: +The table handling scripts do not handle conversion for long integers +for P4/NetFPGA: \begin{verbatim} >> table_cam_delete_entry realmain_v6_networks_0 42540766411362381960998550477184434179 ERROR: failed to convert 42540766411362381960998550477184434179 of type to an integer nico@nsg-System:~/master-thesis/netpfga/minip4/sw/CLI$ - \end{verbatim} +%---------------------------------------------------------------------- +\chapter{\label{benchmark}Benchmark Logs} +% ---------------------------------------------------------------------- +\section{\label{benchmark:offset}Enabling hardware offloading} +The following commands enable hardware offloading even though error +messages are printed: +\begin{verbatim} +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} +This results into the following: +\begin{verbatim} +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:tayga}Tayga} +Tayga is installed from the regular package database: +\begin{verbatim} +ii tayga 0.9.2-6 amd64 userspace stateless NAT64 +\end{verbatim} +We prepare the networking as follows: +\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} +And verify that 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} +We also setup the 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} +And verify that 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} +We enable 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} +And we test NAT64 with 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} +And test NAT64 from IPv6 to IPv4: +\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} +%--------------------------------------------------------------------------------------------------------- +\section{\label{benchmark:jool}Jool} +We install Jool 4.0.1 from source from +\url{https://www.jool.mx/en/download.html} as follows: +\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 +nico@nsg-System:~/jool-4.0.1$ sudo apt install iptables-dev +nico@nsg-System:~/jool-4.0.1$ sudo make install +\end{verbatim} +We enable forwarding: +\begin{verbatim} +sysctl -w net.ipv4.conf.all.forwarding=1 +sysctl -w net.ipv6.conf.all.forwarding=1 +\end{verbatim} +We configure jool to map the network prefixes and setup iptables to +redirect the traffic into the jool instance: +\begin{verbatim} +[16:53] nsg-System:~# modprobe jool_siit +[16:54] nsg-System:~# jool_siit instance add "example" --iptables +[16:54] nsg-System:~# jool_siit -i example eamt add 2001:db8:42::/120 10.0.1.0/24 +[16:55] nsg-System:~# jool_siit -i example eamt add 2001:db8:23::/120 10.0.0.0/24 +[16:57] nsg-System:~# ip6tables -t mangle -A PREROUTING -s 2001:db8:42::/120 -d 2001:db8:23::/120 -j JOOL_SIIT --instance example +[16:57] nsg-System:~# iptables -t mangle -A PREROUTING -s 10.0.0.0/24 -d 10.0.1.0/24 -j JOOL_SIIT --instance example +\end{verbatim} +Afterwards we test NAT64: +\begin{verbatim} +nico@ESPRIMO-P956:~/master-thesis/iperf$ ping6 2001:db8:23::2a +PING 2001:db8:23::2a(2001:db8:23::2a) 56 data bytes +64 bytes from 2001:db8:23::2a: icmp_seq=1 ttl=63 time=0.199 ms +64 bytes from 2001:db8:23::2a: icmp_seq=2 ttl=63 time=0.282 ms +64 bytes from 2001:db8:23::2a: icmp_seq=3 ttl=63 time=0.186 ms +^C +--- 2001:db8:23::2a ping statistics --- +3 packets transmitted, 3 received, 0% packet loss, time 2040ms +rtt min/avg/max/mdev = 0.186/0.222/0.282/0.044 ms +nico@ESPRIMO-P956:~/master-thesis/iperf$ ping 10.0.1.66 +PING 10.0.1.66 (10.0.1.66) 56(84) bytes of data. +64 bytes from 10.0.1.66: icmp_seq=1 ttl=63 time=0.218 ms +64 bytes from 10.0.1.66: icmp_seq=2 ttl=63 time=0.281 ms +64 bytes from 10.0.1.66: icmp_seq=3 ttl=63 time=0.280 ms +^C +--- 10.0.1.66 ping statistics --- +3 packets transmitted, 3 received, 0% packet loss, time 2051ms +rtt min/avg/max/mdev = 0.218/0.259/0.281/0.034 ms +nico@ESPRIMO-P956:~/master-thesis/iperf$ +\end{verbatim} + + % ---------------------------------------------------------------------- \section{P4 error messages} @@ -2551,8 +1635,7 @@ I could work around this by using if(! .. .hit) { my_action(table_id) \end{verbatim} % ---------------------------------------------------------------------- -\subsection{\label{appendix:p4:python2unicode - }Python2 unicode issue} +\subsection{\label{appendix:p4:python2unicode}Python2 unicode issue} \begin{verbatim} ipaddress.ip_network("2001:db8:61::/64")