From 1c217817c41c22eb2b5b18f768d843e7e0d6e86b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 9 Aug 2019 11:49:41 +0200 Subject: [PATCH] ++graphs ++ intro --- doc/Introduction.tex | 80 +++++++++++++++---------------- doc/appendix.tex | 4 +- doc/graphviz/v6-v4-innetwork.dot | 11 +++++ doc/graphviz/v6-v4-innetwork.png | Bin 0 -> 13473 bytes doc/graphviz/v6-v4-mixed.dot | 54 +++++++++++++++++++++ doc/graphviz/v6-v4-mixed.png | Bin 0 -> 30323 bytes doc/graphviz/v6-v4-standard.png | Bin 0 -> 16569 bytes doc/preamble.tex | 2 +- doc/refs/refs.bib | 15 ++++++ 9 files changed, 124 insertions(+), 42 deletions(-) create mode 100644 doc/graphviz/v6-v4-innetwork.dot create mode 100644 doc/graphviz/v6-v4-innetwork.png create mode 100644 doc/graphviz/v6-v4-mixed.dot create mode 100644 doc/graphviz/v6-v4-mixed.png create mode 100644 doc/graphviz/v6-v4-standard.png diff --git a/doc/Introduction.tex b/doc/Introduction.tex index 1ba1216..30e4058 100644 --- a/doc/Introduction.tex +++ b/doc/Introduction.tex @@ -2,6 +2,17 @@ % the topic and motivates the work. % State what the reader can find where. +%** Problem.tex: Documentation in own words of the problem to +% be addressed in this document: +% What is the challenge, why is it useful what you +% plan to do. + + +%% In \ref{introduction} we start with our introduction to the problem that we +%% are going to address. Since we do not want to waste the readers time we +%% go and show the essential issues of latex in section +%% \ref{chapter2:essentials}. + \chapter{\label{introduction}Introduction} In this chapter we give an introduction about the topic of the master @@ -33,7 +44,6 @@ three countries (India, US, Belgium) surpassing 50\% adoption \cite{cisco:_ipv6}). Traffic from Google users reaches almost 30\% as of 2019-08-08 (\cite{google:_ipv6_googl}, see figure \ref{fig:googlev6}). - \begin{figure}[h] \includegraphics[scale=0.2]{googlev6} \centering @@ -41,6 +51,10 @@ of 2019-08-08 (\cite{google:_ipv6_googl}, see figure \ref{fig:googlev6}). \cite{google:_ipv6_googl}} \label{fig:googlev6} \end{figure} +We conclude that IPv6 is a technology strongly gaining importance with +the IPv4 depletion that is estimated to be world wide happening in the +next years. Thus more devices will be using IPv6, while communication +to legacy IPv4 devices still needs to be provided. % ---------------------------------------------------------------------- \section{\label{introduction:motivation}Motivation} @@ -58,34 +72,37 @@ In this thesis we show an in-network transition method based on NAT64 \cite{rfc6146}. Compared to traditional NAT64 methods which require an extra device in the network, our proposed method is transparent to the user. This way neither the operator nor the end user has to configure -extra devices, besides the +extra devices. Figures \ref{fig:v6v4standard} shows the standard NAT64 +approach and \ref{fig:v6v4innetwork} shows our solution. +\begin{figure}[h] + \includegraphics[scale=0.7]{v6-v4-innetwork} + \centering + \caption{In Network NAT64 translation} + \label{fig:v6v4innetwork} +\end{figure} +\begin{figure}[h] + \includegraphics[scale=0.7]{v6-v4-standard} + \centering + \caption{Standard NAT64 translation} + \label{fig:v6v4standard} +\end{figure} -are incompatible protocols (i.e. host connected by -IPv4 only cannot cannot directly connect to IPv6 hosts and vice -versa), - -In this master thesis we focus on the mechanism ``NAT64'' that -translates -This development motivates companies and users - -Make it easier -take away burden - -In theory line speed - what is reality? - -The motivation to write this thesis was... - - - - -IPv6 P4 - -Introduce the related research field/the project. +The in network solution does not only ease the installation and +deployment of IPv6, but it also allows line speed translation, because +it is compiled into target dependent low level code that can run in +ASICs\cite{networks:_tofin}, +FPGAs\cite{netfpga:_p4_netpf_public_github} +or even in software \cite{_implem_your_switc_target_with_bmv2}. \section{\label{introduction:taskdescription}The Task} + - Milestone 1: Stateless NAT64/NAT46 translations in P4 + - Milestone 2: Stateful (dynamic) NAT64/NAT46 translations + - Milestone 3: Hardware adaption +This thesis is +into 3 milestone P4 environment a lot of potential Programming language in the network @@ -100,26 +117,9 @@ Not only faster, but also more convienient. solution supporting all features of jool/tayga and comparing the performance, security and adaptivity of the solutions. - - Milestone 1: Stateless NAT64/NAT46 translations in P4 - - Milestone 2: Stateful (dynamic) NAT64/NAT46 translations - - Milestone 3: Hardware adaption Describe your task. -\section{\label{introduction:overview}Overview} -Chapter 2 describes... Chapter 3 presents... - - -%** Problem.tex: Documentation in own words of the problem to -% be addressed in this document: -% What is the challenge, why is it useful what you -% plan to do. - - -%% In \ref{introduction} we start with our introduction to the problem that we -%% are going to address. Since we do not want to waste the readers time we -%% go and show the essential issues of latex in section -%% \ref{chapter2:essentials}. \section{\label{chapter2:linespeed}Line Speed NAT64} NAT64 in software is CPU bound. Hardware can potentially do this at diff --git a/doc/appendix.tex b/doc/appendix.tex index d2d27b6..9097173 100644 --- a/doc/appendix.tex +++ b/doc/appendix.tex @@ -1495,6 +1495,8 @@ root@ESPRIMO-P956:~# %--------------------------------------------------------------------------------------------------------- \printnomenclature -\abbrev{RIR}{Regional Internet Registry} +\abbrev{ASIC}{Application-specific integrated circuit} +\abbrev{FGPA}{Field-programmable gate array} \abbrev{NAT}{Network Address Translation} \abbrev{NAT64}{Network Address Translation from / to IPv6 to / from IPv4} +\abbrev{RIR}{Regional Internet Registry} diff --git a/doc/graphviz/v6-v4-innetwork.dot b/doc/graphviz/v6-v4-innetwork.dot new file mode 100644 index 0000000..a4f4b20 --- /dev/null +++ b/doc/graphviz/v6-v4-innetwork.dot @@ -0,0 +1,11 @@ +graph G { + node [ shape="box"]; + + v6host [ label="IPv6 only host"]; + v4host [ label="IPv4 only host"]; + + switch1 [ label="Network Switch and NAT64 translator", shape="oval" ]; + v6host--switch1; + v4host--switch1; + +} diff --git a/doc/graphviz/v6-v4-innetwork.png b/doc/graphviz/v6-v4-innetwork.png new file mode 100644 index 0000000000000000000000000000000000000000..f1267db72413a9a6aa9763640bf24505eecec74d GIT binary patch literal 13473 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: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 Wm%AQ#TPG_^tftvcJv8O}sDA@R0evO_ literal 0 HcmV?d00001 diff --git a/doc/graphviz/v6-v4-standard.png b/doc/graphviz/v6-v4-standard.png new file mode 100644 index 0000000000000000000000000000000000000000..74a51788f9fdf6cdb79006cf6ea298fddcff31af GIT binary patch literal 16569 zcmdsfcRZK<|L;drwjvSetjbE1 zIM3_;p7VSBzGwY&&iUu`y&w1YuKVNqT-W=0yEk@D@cyS}#jveeu!!KK0M zP>Md15a*+<`Pa^uJf?3>&ePv1#BF!-1@|R)c6Xsr<@oZ8LUx%u|AtokRo}GWyp?{7 zMP5E9bm`1=$`JdF3iIr@^24`MdKX(Zf2wem`by*ay<+^tFD@?5O_t%ubcL<#G!^TZ zEeowi>R&Qjsxk<$h97H`JD*TC|0ar^i;qv`9bIC>#p8Q6ZQ7JglO_N0v2|1zhhQi* zvmoi|)2DaJkH#*1S^56?1wAt}kIrJ@p6I5F=lJ3@gWD~5;#A&_yX3zz+et}H{kkD^ zSB_ncY6lmMpD=6DNBqRG>kAk2U)jVQ7<3X0J(<9^y{7R$-NC=z&i~PGilon+xrux3 z$#iP%dL+*n+4(@jvZv4hcZ$E5CA~#tWMt@ASSa-L^xj@PZewR>(UyK@Zf?%+-o3qp zUO!HMs`2>~(H{{N_2${ojj-Wivjc|?3AgoY7Z(;%(bLnf3=FLY?K-4h)n0}R30{0l zclGE{`KRis@Lx&Ug~`ki6>8^+^V0gC zAG=7u=ijgo*%(+^S&fa3%1%s7P%{|6*VNRMtIe(1*yt&&s!Ac9v$4s`>lM;zrK2DJ z`ZYE+mCeAwpnK-0MR{&Y{*R5?n{iL`xFRWnf`UjSE-o(fWPE}oZTvT?H2?DD%OzIL zyYI%wTg-oXy`SEnO+isH%e3}J$`)8z@s%Qn_6329e0@Hxku&`*$Rojc#S*TwsllZkI>4f0P zlMV0U_{m7k2}cz@J;fw9)?DMNODp@HIkHcDNQ*jnHomU6mx*7uP}E2N&6{y`?~T8|czAiqNOJP>FZ=shHh%Zk zn(WmxG-PRvWTVv5(pvidd2eWFs9WR<&gEZ2zU=lrg)bA2SqfgAJV&a#xp{kZVq!>3 zi|UrGTSx9W*3kdFQ9AKJQgkzkB5>2*QrMoHCg)KKffp!GQU)FENN}kBqakb9v*>&+bF*eq@{TvavAw)?IxvX888-cCba>pEg17I9u=@T7G}NNbu@@q$6&*^%KC+ls)^ zB5|GWEJfNBNgtN;=g+VF{WVl-{b8SnhX?tGnW?FfqrR(@H0+Y$C=*iM#vk7e+M73T zlKk%8WgtnLneA6qQzIkct{e1BeFAUY+H|?EB%}XYu~EgQK$)A%-v$a)e=ROd+RlacH!r0fZy_F{D;N;}wb*-u5fzN-_w^m0<(HBoEBN6#KP zb-kYb`1rh`;ce_=&O?W`yHv1pb90kOl$4YtUvGW>m6a6|Y3I(J4~-|X6r)HaG$g*x z_wV0l6cq3?WDC!ut7YZok>5MzAfv3j1BEy;JiOmiH16o_9-;3(f0j7}1?lbyJ1X=( zG7ikXR3z&l`q<(%#med`2L}fkN;xDfOjbc*o66a<^h`{_FWi6VzEEvVia+})Zs=J+ zZ0s(H)2B<_W^^YfC(Yj7<*j#(jEp4tb#-aS^)j=t$jHjdD#h!492nRv9lLRZ|}+yVju%)0W<>sNUkQwV3iIn!JGs;Oxz!qV)$ zse`EN_&Y|TJ#^Q!zJ9$`KtLcQBBE%4^{Z-gH)oW{@0-lE%jM;xXB`1rJ2=VzF6Q1dqlq%U3f;Zmu2tXz07;|yzK7QSrI>RVizjl)#~C`ot{7; z+KAK>KVOP=-f~sAW52MWc)2(k?W=t|ySFrnoV5D;cLxv$uY^R3x3_n|)Y$}q98Be2 zfgfobYlm`jb9Mh1UA=m8_0ONqs_Tn3d;i|&+i}``5=yUvsI%}zonO;@ z)zLf{E5D{n`XtZJ&XSXS=3Z{U8xwP8;F;qgA0MAh(xx|7526<)dHeY6AXQXWc3@0C zd~(dXHAU>_!@e3H@ub8=I@0gStSBB~;e@AGKC7Tv)j#?2ecMpA4&ipunK&hFZ?CsfpRBK^X% zE6=YlatoML@wh343)!cfhzO%pq%^y9DJV0Ov!S8EY~ZPbAf8U_Kx48{Yf|Iuz^tuK zE-v+$NI5kArMvxIbDigfXd0OrR8f)EiH1ujmM84k4{Q5IHg#X0_n7e6GX~0L zoEygW_Lv(c+b8KAg1IB%^P2$(!ee1<2XXC~n2d!pJ#B4y%d*<@&mKJzAeICdMRS>) zo|ZX#ma?(2v8}Dm@8(T1lC*{fEpDH09;`)1L!($Fh0)6>j*)>O{mBysY;lYW9zMSM zFs7qeuqaHCv9YoA=g;+dF2=={FZ>V{73FL0?&!FclXI~DsRM47@`=O1?)dn4o1vQ1 zSSB-T>+L`b>UVV?;({9YC0+sw%+HO;5?I^T)>cVb`HZJ$Wwg}m*RT1C3mmvW8V--i zx>ZU1*+SIgGMHL7@Cs$`o(TZ`EL|R>41!z7)OqXhx?>r2*4a1Dbt(q?$ z2cXAX*aTQoQc~g<5kXy8RAi1@K)v)03_J_UN`Cgh>EgwU`!VUCISw_VpZs$(o=fDk z?2-+5y#cE&@86qST5?_HakzXrAPw&ibR{S!$EuwDQ+#*`UR`K-I8}Cb_WmPBsPpsl zQ5HHM_e*##DT%11KYB!ir_G4&`}i>fGs5ZW)qt!l%Q&qqg;utfNI{#UA_*Cts z$Fr08!q`I^=S)m!NNw%yXM$+6R!%HmSs-KIU;w{I5_6RZFDagRg)lNcul7S(2cR$g9S;Fn#uXNO;VVFr=hyZF#%8y4vt5Ts9Lu zda}QqA7DMmeen8&{w!YZRBXq%l>C*|$#yO}`jbLJ09NT`r3GsxPoCWMWK6DJTl0>S z$WIae^+Oz|vqZ9kezwHb!|KawsXhU08Uyp|SDdSPPyfU7OGR$`u-6VPOwX z&-%{JUHCIF?4T}=&6>Oaxj6-eFZF?x&pqZjZ~XZt42Vqu;h@&{r%kB+w_V}UcU}wat7S0@|fRr>eQ*ZrKN!2;O!u9n-mol^JN|A0jU2$ zTif|j*Oir(lfA|4K)Uk}r2g)B^yrbzz|*3xj51GV7cb80C?!92%6{-*6sS+cbBRa&zC`G!Pey2ElzVC2-G5DZdo;30 z8yM^XY@x%_;94W#*l*vxy9EIuh}c!mehor8{Pk<_{OFr3C?{%+ z>Z44N0RI+%ej+YoYf~`f7cp0AoT>Fa%Stsi|QWbvXdUuQeW)S?C7!MaIKJ z1U<>=`zKKbM#c>55BI?U6v4YvQc_qRuQu|sHZ?W%mD@AjSRH3-c=OL~G7Dc}RfuHW zfyJz$dt-MuIr%p3gH`+*)yT*Q&(WiAK-LAJeueKl{k!PfrowYPPLpjMv;F0ihtyO2 zf`YawM6ev3HFN&JtsBd9)MR*Vby4KnEHlkMiI4{xY4xBJTDht(vz24b?Cl5I)Z%Zl zpbzi(HduYHs;UaSGbSl%&-+yI1OcPx(pU@XZYq0u7gyJ*2WdAlF?(W-1P(#INIqt{ z4Ln|j&CowIGBS6n^Fi$W`}^_>3Oe7$aM_~a+)Yb6>Sj~8mG9`$2WYJwg$9q`HZ%la zBiVrHGO)0yeyR)K3-ni5Yiql&deuI zPEyd&!$%V35?65vprwsN%Ie%Yi!BB>kgmkp@sd5`!?CCZbv%O2X9e zOaGIXT9~0hWP#2SxOfU!+_7@dxVFFC*5~#lpU&p2A(j7dhe-oXU?4Q*=$xg2wtJMIPso~nwomL zr)V#msEgcmwB6OY;WI8*uO3iSQ!^|vBRhETpfcM|`@n_8MP3n+M2xkjwzg>9B13tK zK$%&K2F6JAm|9!^aG~eo?%&%2cI+ZvV^kC^A^J^6Z*l+ri96_5D0s&J=mVx;46{Mv{8Z@c{h5 zUV(RF9?P?PumvElu8c+%q*}LU%Ad4uWj)`lrmSomGB@pj68ougYp?K?=%-Il1qKCC zbP^k%STN|EUm`5Tt}h$_>(dqeAuv(R$Is8j&dz>ZSlBm9pXFWXu0wgC<6X7B8$pxu zn%Fa^vj(fZV&md;Vog^jQqI2?NPuvQNHd`ESRbR|#2@L^^S)rS3=V#-oL* z$Vm0nT4f`B{Sf6?ZVq1F{FkGbDex3L0s@VJluX*W8cD~u+Szrl@0}^isnuh|i@6OI zoq%>>yN}o{EfZSfr&?cj_z=PV{<2xm^w?UHq?}qq9^~W%Vi;s-q)DRFrU*v9EqLhj zEB>fyUZ zw~;UiSfF0<{b+BDfCgzY1ED_R$c3k7lWiFysP>2-I)No6g5J;?Rv;V zP?D3=sY`kP`s{wvtd2CoU~=gax7+tmNmbR=%K6%w7`LKgVt0%L9zdk-$W^shFA8sOzWn>M9C?|XGWgchPBJP&Na zSRyAu&??sDz=0c#>Ecf z-Cu+n>|$DoCA~#zLk))J{q}_@YQ2L55KP{=`-q_&SQ{2iUQQ0QI34h27yWsVOYDz! z+?r1OV~2rLo213B&F<&iS^4}g{2snVodai7R49&^)}%lVHv0N2tFSPqN_$bLZ%w0YroM7(Bkz?Wx|2 z52NY#m0AW19+8yX2kVNQntJQp0-aZVzz&ihBueRwbLjvFe9iO!O|>SaXJnAMx&35O zto(!B8*}d-rLXUXSS=wepN&8K5_mz-qJf+crg4$J7w(SLz1yWz)dA@hWb(D^2M0|O zFI~A3iL2&+s;{u9<`)qW*$=0ob*4}M)926Ub#;TlD}+|c90#jH(Lw-#g;&akwtS_+ zs|N^`$AEN#iNN$a_SNO9635BSA z#-qorj_)CqPpt>)9N4KbF)@>9vD;|(g+m(OgEQT zsQJLH9pD#NqGx10IDMMr2g_-{gaj+)?!$hX`3<+WQc7>QyL*?;Xz2+%4$7h2+SHAO z63$fMg_F`7!+abwEed~5BnqdTIEvvHg|D7leN?D2Qc_k{j|r1}Ag?$7J2fp0O%OoF zojZ3*?7I2PE1@>rm$5&T%z%e(CQu>@jbA)fIS#b~SE++lV&%_s$;WPC+N=A420N+lHX}dyU*Hs0?G;+o z^pjRi3Q9_UqD4cfA8!5*dy>2?=^0TTZ6^w=6*S zA=B#V^ALpz(21dW>WfuE?^$(q?#-M1S!%sKMjNR+;8_YR0qjn9KA#JY4_@O9d~%S4DXcEhW^h1>TqR;geuz zVp4?C)CEx>Zh(%idRA!Ot`uS$qo=oa?=qmL&HCEv((2c=PMFacO*`q^iE)H$Z1KZC zC_pWgTUw|Q$6n?p5g@VB>z9CWg-hU=3yjdD6V|#@=QYjo&QD(M6PzBb7LV9>IvGCE z88o6C{E)7=uW>Iin#ab++N?b2%{H2m{t_{yma48HDWsr-kloVD@&!nqR z(cr=Up5%fxk%PW>2X!e}hCD~hE3Ti!u%!%H=v2I!M$*y zyV$E`PoL)E<@8>ASh)OR^pdr8EMyB{N$u4I8q4=O@b!-vJ&y)_FEXkqYZ@qCsqcSc z+v#ytwZ~#@ZSey^90msm@7}w2VW6;>JqpHPNc@ot3U+pO40LpDJVRAhg&B}~v=Ri2 z-+ua(f;M@;fEBar(1{Z#z`qz;dr$PRj!#TXA zqsXn}1{egn%i*z(oTB&NPODo{#~(K~b`e~a`^b?ahE*QUv5}PZeKQ!^?NG3qphAJg z1%|D;?Z478PtaQm3QqK+Y4})dQa6mepM(pgLmbAMtjl8(5pNQ#;j*r{5T@RfE1$*e zI&-Pv1+~GqJ!qR?+!zuPx$m?Jw&WpP2E*l1-$>nS#z+b%Uzyk?yGRR5OWFV8%?3WZ zU+Y&(V5}1q5_%A^PB5NwvMq&c)gj##>6hLjoOax$Zn4RG#r=iK2m*B6Kka2x=SNoW z?tW#c#<*C%yTD01BqU@%ssa25?z{N!-!sL5FO-k>FhkiP_+EBVks8YG$dIjt-qW=5CEn*zyh^RoI{09+Jvn= zl@%q)34@hjOT1dSZFs7KdtKtIjY0QqK3BSdG^&%{HZ_Hwy7H+n)9Wx2E1hT@d9d72 zo^LxlWAQJPl9G}%gBu4op?zFknKP%LqB?+?oE4hgQ zkLDJG(TcK+g4WYl*ed>b0_-vhZmT+%Lim0xH@fHp;*QYy10DC)QuA#)MqC%tQb$`` z`uQw{c6j9Xe&!4JtU;6P#BL+JIRbN`633>dl%+scWPRgRtmHUFMbF zY&&x^@ERi8FB@brM!tjf5(=4Y|KY<_2pS;#1i3L7ni&uY6%!Ma@|#oE9dF;im%n)N z03rB+aeR8=PK&qCEOwQL5VY`}iOI<-Y`F(u%Lk^2LSKQd)Q%1s&MLYSE~)>E7haE9 zH~fVjm6aU_9T^7dC8wl(1uD)F+aw6U&taWxwmr+1LeUCjK?G#E{?#kzwH0Tm`fv)^ zH*cfz!vjLcYJ28r+WxD?`n{>09UmtrCm}Nu3M{4-Y)!&0#&9|2GN$yrqGDdXfgh$2 z@ev4ZP)0}bsp#f$kFTlj!&6f`Ae|sip)G!8ll?~wV`o_N9FCcpnMn4S+1l;^Z(I5O z+oG?;98&w0cO}U+PTC4`n8(^56Or|j)zaDp3DwEXO`gzZr>Ad2#yW#Ket0fP37%9) zXej+YLZbz7&H!)3QpQo6Ait1J^Gv?!?OVEqgHWQ8On~&Kh$-9-oWS7@?Km)o)?iT& zJ{fipg{bSdej#X;kjfaYUAx97s&#$RV29ELk%zG!1kn1twsGv~>8Yn7mK9O0!Qb|bYDc7` z*wHcT@mlEF*dic+L+h30js=iE)3*u%CkT4~?6+?)=W=LX=$zHiP?V9`gq{)6*QZas zRxB?V;Z5j;V28t45fuBY=4MLFQ_Wx_gGGMUVyK312*U(VWu67D6$Sm6Ujv$xbWJEtPi5I`MQ zP+*@$)&0)o2QUktqBry$rl1e-v1Bm8MkXhDX8ph@_W%}tvdtl5WMmwH>Pg7cVrL%{N~KpHqP_KDPd(m+kjE$hhJ{~$BAK=WVnG?2N?+&zBZ_1*rb$!l@^;D z6nDPA0Mmn5MSO+1?6sMmBk)6reNQsGcrp79Kcf`n6k2|Metms?X|gqIT z&GS&C%fBYDbjTJZqd>oIY{0nil_^%NDi z8eFE00zwiD!zvSJROGPx@wr$%8uNS-<$}i!%BHISn^$bFH z%hD z$5r2X*NFm4FD@?DOyt|Cj@D^tXsENiL@Wkc1H^_=z!dae*^TwTd*_WUi@FiWA-ojW zf!l#Z7#6;CukrHnJ-lzlf| zbd^@^^?Mr4I!JohpF^$);!cXh^_{?4Z-AAvX+o>zTkoF^J7(Ef2bK>-e}t>&ndzQ{ zPF-oZFYsEBH1n&im0JG(ncq!m_J}hqk8lL7De_F{p z7#xIRl`m^?*#y;!mvl@Q*8~(5hS5!U zi*=J=A{?ccvY$U^20w2Ek1KT?k_=})CNmwK_+-V4bv6e9o|Qj;vM^~xyjKK~HNc_^ zZAJxS+P&&7&~sjzJWrT+Y&&E3G0`jsqpf4CWx{eJr=<-BZ0h1Tw!_NW+7g*HB^8x= zd%;XgwLe$5ZpUW>kt-mkKeQedTuB;P)*xE;NHCBTF*gbby)j}3dc5a^ z-y}Um3+IFy06Ysnvf-a_PpD97FfBXbc>qF zSH~Z-IFFbK9Y1yIpFnc4sT38P7y}?`Jnm5m_Lm=cH4)ksxv?e^71?C>I?%scMNf|j zW_>+et`TepU@qd)Wz{ZN=wBTVk(3bmRqvgm#tS5rRAS|$ z0l2q9t5B4dCJl|mckdZ8z11CRB=830&g@u{eeU@TiE(w=7k1DjJNwLEc zd4nXdsg;Liqg_4j2Qj2qy{5j@pjimJlB3OeTYuhd_dZ!jACX$HoyHAWZWbmQ?*1~X zW@4#;K1X4xRz2&#MMp3BcS#G1#O@*AjnnKxWuAx_OB z3I|%^5)v$-{`Mi~ikBON*@;rI&k*S}s8+i#u?GhA3No$XV0g2G)qBxSu#p~~2RzBw zdhi9d8l<|{NGamk%gwxt`IZ}r1qOzH_4zX!oFe5PYf-3%!Rsem@5UVw&m!(3Ff??Bda76;(OwB0k8Yby zGgZVyPk$4U&I~AwBCZouw11mfsF`SbY{1TlWgwhu;O1A@i#hl-BP?rrE`>TkDGVaG zwKB-*$s?_`~yIvTO`LgIs?XN3|Q_3FBuiVYm`rHq!Jt=)~hI_eKlbo5o%6 z>bD{;L{3E|2XOFDyV7?I1S})ES|aR0Y^99c#y__T=dqF0WVmBT1{`Yx!HX|_xF3Pq zIc!iSH(g@*1g9Q|;!L~on-{e%#EUJe41;8HgMC=pM=^)3N)op3s z3!z;jCAvXaNEZ}+FicfwPB&3rg>ZN^O1tRkM@FNh8o}@g&#@&%R0}(fzah|H*#aWK zf9j?9*3jT1J`vDn@u^+#t?B^~iSCKnP{c6g5}-T{qQNYF?J!&fB0P<7uM(T)W9|Rh zoGLd#@p4x~u%ZSTl0)Fn88i~vUlsg>CIAAgEeFNI+RhgFlM}AZ(uuf_%|rDdTb!WzdrH6JIB0N zoS^rN;K;}1r;5ku$lK;VI~%xu86GA!4N4e9Wf-QQX7GU|AmKW6QdIH3I%zT^mffHf z$1k7-62t|(29blaY?`rWm6ZGt^M`!pjG%j8e?NM+CEs(Wl1p#kz@Q@r!Ja|(l@5Bc zo08fDTy!*289bviPN;x$DojT+7u>?TieLKq(;1bCyfHh*!E4-mHcftes+8|O^hE`r z34*SDH*QQmg1hq8&(b4U9V=lCv`z2yXnWG6bA>hV5 zd*onj6Es;wPlc%0_bJ-%!eJlIFWaS9W=r8$=S%ezhNAlaFUC;+`%r6lf3=q|5sgYx z-G-b4G^BiqG{9}}uUB<-Br!3um9bb2B3AgV4B3xBRFTe~PdKjy(hSUg6FemoA_y2e z5Vb5wXgiL9yd7U)3D*4gV@Z1AAAtOb{F}wM932=Nzzl2O9DQHG(gdz4eHcx3@_+a}+655jfaq$hUW5AD)$PDIRS{xy@fiHW+L z94ZN7C*)!C`yj1%pyWe(HaFDN+_`njmNpoClc-&xr)g_wT6(*x#NGtVCnP(GVnWcA)5CvhKnA z3RLATm=^+_3P%1gl|u19PBCTowhk~LfG7Wc=+hT#M`7#@T?k2i6|RQ}%NQ+EHBpcZ z&R|}rJ(eht*epc1hO)d4!&NuwO;c08dh>K&DHp!9)O*#1$Z9QqkYb7qdYE;N2Y`GV zI(N2uvy{^?iO3Nm_6UINz4%_(14qoD(nX+ya`E$1VsUa0Dn&q6 zw80TT4U!*ZbW3RWPEJmKG8uJ90hz%~!tSW}y!Wnt0#=`Y14fUgAJ z!Ghhy*w-!8=U}bwei|9xtu!5LRcPDwm1R49OjsBteRWkXqT>oA8|1F)7ontW1_OB1 z-|Ok&aSrA%Jw4Q~cv2h0W_yR?N_$pDq-c~iG@`Cvy-Gy&yCA0k0p=oc240f#t_tyi zOi0h1oQ7o=l~W%%<7h}sYHI47`~S*Y)>@dK&%j{SOMHeMA=3f~b`r<>pRIgoY56%OYq-io1K4 zj{f|=ncF>;k#4VhMGV<+(s8to;U{yuWYF1X3xuYX3#A{L=EC3P- zhX4!QsY**r&+#x!etsdmTfiuUm|OtD9&0Pdpl%Z3OVV?vkxj7Y+d!r~pKT>U)%1Ju zLLA%!C-Jn2!({-NfymQBX!l&6Rr>=zMXCgE`4CTK=oB0rF~5QI-M@*_hwI1`d5`HmfD0I{n3HI$XfNL#jT ztH-RWYu3^?_4&yNQIjZR9tMgn+qYYSwf(dk)nQ>_Ij5&r+(AYNiz~B_Kb+In4gd}r zMu=Y)EPt-bNMJiDuG1ED3dhWt;>9s<3E%>qS^*(YoXWdkf4JCwQAh8Q(M@F4|15vg z$^EmsN=5<%)SD4IuDeTsRrPL#>sJeaXk=9sfbJoV6tu)5^n!af$1yY~S66?W4c$h? zOd1~Fx`^-ZDj>qsB;U(-|KoU5$^ZUPQcuA*Jpl4ith;coYSJx0#|)gA%S<3>AC|%b zMTG!wK?#Rr-YNFeo?A#d6y^Uihy!I>67{jdMIm|b2w;W-Rr`5)cNFLrJzQ7=Unsdc zrHS*1`4Zqrl;G1yt4Zf;-;R9U-cC;n(9&dtJp?{ZhLpQeh09h%cKpJ^!sdvxDL5ZT z$d^@rzQ4#E@QH)f43-oV9qk9-;pM=<3zO#adU}c&;W+Vwh)g7~>i%QLN?-OrdG>6( zAB&fvPE}fXD8aHqLLQ!G%*02KeT4|Ggpn|2SI-ny6OH*mMF35j){W#7ysD2B`U&`2-l{Ul+abdC=MjlQ5}Q!doXO~F#23)F3B9_n(v2U&av&HE zwkFr<(`aX%grE!8G2oiN zzyC3x-&d(vMd(NmjTIa14yri{^mH{`d-E9-;kuXCE>g0HGbgeq+TugNZo~n}dVA#N zi6|imK|zbx>Vnn6uV05qG6@5a1UWe&Og+J7BwS1~C~`-BFEk(J<>1J8=aQL~)igAe zhNyxfNP0GasV1gs#7vp@>VlZtn~1P5E=205J8~$|>Hf*{{AUBTzKXD?5k{RJs+A(n zR3U0h_;^U^Dq$*dLUBbG_MRgnj<~|PRyH+FBef-%-cW{HjBz20;&}k+qZ94G7CS~x zj)*MY!Mq{c4+f9f-)BE?81c8AzT+G1|DC5BIPk3NDLV3J=L@NtdtyRH?RzYMW`MzQ zIK|>iLnt((K~9Lzjblx*Gj5-6mn&I$KfHacF_FhegxNAY6zu)~?Qh=M%~jyP6rfA| zcL8{&HMiF#|8ttDtC6J(>8Na)n?lF-i9Lngr%5t7G`Eg5>W7_Q-ynOK7bl_edaN1WKvI@hmwO~*cI&?Y!+&4~ literal 0 HcmV?d00001 diff --git a/doc/preamble.tex b/doc/preamble.tex index ec45006..503f467 100644 --- a/doc/preamble.tex +++ b/doc/preamble.tex @@ -14,7 +14,7 @@ pdftex} \usepackage[pdftex]{color,graphicx} % pdftex does not read eps files -> use epstopdf to convert files -\graphicspath{{Figures/},{logos/},{images/}} +\graphicspath{{Figures/},{logos/},{images/},{graphviz/}} \usepackage{caption} \usepackage{subcaption} % caption/subcaption replaces subfigure, which is deprecated diff --git a/doc/refs/refs.bib b/doc/refs/refs.bib index a61ef50..1a2560d 100644 --- a/doc/refs/refs.bib +++ b/doc/refs/refs.bib @@ -48,3 +48,18 @@ title = {IPv6 transition mechanism}, howpublished = {\url{https://en.wikipedia.org/wiki/IPv6_transition_mechanism}}, note = {As requested on 2019-08-08}} + +@Misc{_implem_your_switc_target_with_bmv2, + author = {BMV2}, + title = {IMPLEMENTING YOUR SWITCH TARGET WITH BMv2}, + howpublished = {\url{http://www.bmv2.org/}}} + +@Misc{netfpga:_p4_netpf_public_github, + author = {NetFPGA}, + title = {P4-NetPFGA-Public repository at Github}, + howpublished = {\url{https://github.com/NetFPGA/P4-NetFPGA-public}}} + +@Misc{networks:_tofin, + author = {Barefoot Networks}, + title = {Tofino2}, + howpublished = {\url{https://barefootnetworks.com/products/brief-tofino-2/}}}