Cleanup, add stateful figure
This commit is contained in:
parent
fe866aeb1d
commit
6393127e84
3 changed files with 68 additions and 1 deletions
|
@ -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
BIN
doc/Thesis.pdf
Binary file not shown.
59
doc/graphviz/p4switch-stateful.dot
Normal file
59
doc/graphviz/p4switch-stateful.dot
Normal file
|
@ -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…
Reference in a new issue