Browse Source

Cleanup, add stateful figure

master
Nico Schottelius 3 years ago
parent
commit
6393127e84
  1. 10
      doc/Design.tex
  2. BIN
      doc/Thesis.pdf
  3. 59
      doc/graphviz/p4switch-stateful.dot

10
doc/Design.tex

@ -251,6 +251,12 @@ highest degree of flexibility, as it provides support for individual
entries based on table entries and LPM table entries.
% ----------------------------------------------------------------------
\section{\label{design:statefulnat64}Stateful NAT64}
\begin{figure}[h]
\includegraphics[scale=0.5]{p4switch-stateful}
\centering
\caption{Stateful NAT64 with P4}
\label{fig:p4switchstateful}
\end{figure}
Similar to stateless NAT64, the design of stateful NAT64 depends on
the features of the individual implementation. As pointed out in section
\ref{background:transition:statefulnat64}, stateful NAT64 is very
@ -261,7 +267,9 @@ to solve this problem:
\begin{itemize}
\item For P4/BMV2 and P4/NetPFGA a python controller handles packets
that don't have a table entry, sets the table entry in the P4 switch
and inserts the original packet afterwards back into the switch.
and inserts the original packet afterwards back into the
switch. Figure \ref{fig:p4switchstateful} shows the flow of a packet
with stateful translation in detail.
\item With tayga we rely on the Linux kernel NAT44 capabilities
\item Jool implements its own stateful mechanism based on port
ranges

BIN
doc/Thesis.pdf

Binary file not shown.

59
doc/graphviz/p4switch-stateful.dot

@ -0,0 +1,59 @@
digraph G {
rankdir="TB";
v4host [ shape="box" label="IPv4 Host" ];
v6host [ shape="box" label="IPv6 Host" ];
rank=same;
parser [ label="Parser"];
deparser [ label="Deparser"];
translation [ label="Translation"];
mismatch [ label="Table mismatch"];
v4packet [ label="IPv6 Packet"];
v4packet2 [ label="IPv4 Packet"];
v6packet [ label="IPv6 Packet"];
tableentry [ label="Create table entry" ];
tablematch [ label="Table match" ];
reinject [ label="Reinject packet" ];
controller [ label="Controller reads packet" ]
deparser [ label="Deparser"];
deparser2 [ label="Deparser"];
subgraph cluster_nat64 {
label="P4 Switch";
parser;
v4packet;
deparser;
mismatch;
tablematch;
translation;
deparser2;
}
subgraph cluster_p4controller {
label="P4 Controller";
controller;
tableentry;
reinject;
}
v6host->v6packet->parser;
parser->v4packet;
v4packet->mismatch [ label="1." ];
mismatch->deparser->controller;
controller->tableentry->reinject;
reinject->parser;
v4packet->tablematch [ label="2." ];
tablematch->translation->deparser2;
deparser2->v4packet2->v4host;
}
Loading…
Cancel
Save