From ea2a336c3404467ec29a5a2aa1053d47d96ff033 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 20 Aug 2019 16:32:44 +0200 Subject: [PATCH] Results done. --- doc/Conclusion.tex | 94 ++++++++++++++++++++++++--------------------- doc/Thesis.pdf | Bin 1380882 -> 1381252 bytes 2 files changed, 50 insertions(+), 44 deletions(-) diff --git a/doc/Conclusion.tex b/doc/Conclusion.tex index 7586b30..a2f8048 100644 --- a/doc/Conclusion.tex +++ b/doc/Conclusion.tex @@ -3,24 +3,19 @@ % document. What are the highlights of your work. % It should conclude by a conclusion. -% General / Review +% Intro The objective of implementing high speed NAT64 in P4 has been -achieved. The implementation at hand has been shown to be portable -between 2 different P4 targets. It should be portable with minor -target specific changes to faster hardware to support NAT64 at much -higher line speeds, without any logic changes. +achieved. -Our algorithm uses the IPv4-Compatible IPv6 Address~\cite{rfc4291} to -embed IPv4 addresses. However RFC6052~\cite{rfc6052} defines different -embeddings depending on the prefix size. A future version should -support these schemes to be compatible to other implementations. - -PMTU -handling error cases -No fragmentation -No address / mac learning - -supporting migration to IPv6 only networks +% our implementation! +Our implementation has been shown to be portable +between 2 different P4 targets and we expect it to be portable +to other P4 targets, potentially at much higher speeds. +Our in-network solution allows novel translations +without involving external routers, without involving +external routers.\footnote{Compare + figures \ref{fig:v6v4standard} and \ref{fig:v6v4mixed}.} +We expect this to supporting migration to IPv6 only networks % P4 P4 has been proven for us as a suitable programming language for @@ -30,42 +25,53 @@ work to become usable for solving day-to-day challenges or supporting large scale projects. Even with the current state drawbacks, P4 is a very convincing language that has wide range of applications due to its protocol independence and easy to understand architecture. - -% NetPFGA -The NetFPGA platform is a good showcase for the capabilities of -P4, demonstrating almost line speed P4 programs. -However the supporting code immaturity, logging ambiguity -and enormous complexity of the development process. - -Very time intensive development due to usability problems and -uncertainty of functionality (compare sections -\ref{results:netpfga:usability} and \ref{results:netpfga:stability}). - -While the port to NetPFGA was significantly more effort then expected, -the learnings of the different layers were very much appreciated / liked - -% Outlook OUTLOOK What are the consequences of your work for future work? The availability of protocol independent programmable network equipment opens up many possibilities for in network programming. While this thesis focused on NAT64, the accompanying technology DNS64~\cite{rfc6147} could also be implemented in P4, thus completing the translation mechanism. -Proxies / higher level protocols could be next level +% NetPFGA +In our opinion, the +P4/NetFPGA platform is a good showcase for the capabilities of +P4, demonstrating near line speed P4 programs with good capabilities +of demonstrating scientific research. +However, the supporting code toolchain shows strong weaknesses that +render productive deployements difficult. +% ---------------------------------------------------------------------- +% Outlook -Add helper in P4 to support checksum analysis a frequent problem and -helper -Allow ICMP6 option parsing: specify xtimes 64 bit blocks resulting in -an array +While the project concluded successfully, there are a variety of +possible improvements to our work as well to the used toolchains. -Adding support for passing on meta information to controller: key or -table +% Implementation +The implementation of our algorithm uses the IPv4-Compatible +IPv6 Address~\cite{rfc4291} to embed IPv4 addresses. +However RFC6052~\cite{rfc6052} defines different +embeddings depending on the prefix size. A future version should +not only support more flexible embeddings, but also consider more in +depth translation like ICMP/ICMP6 specifics. -Support a meta language to define used types and/or export to popular languages. -Long term supporting python3 would be helpful. P4OS. +% P4 +The P4 language has shown maturity, but the usability and ease of use +of the provided toolchains can be significantly improved. Additionally +we envision a stronger tie between the different tools in the P4 +environment, like a collection of libraries and modules that could +form something on the line of a ``P4OS''. This operating system could +spawn over network switches with P4, provide a coherent library and +define data definitions that can be used in various programming +languages bindings. +% NetFPGA +The NetFPGA, from the hardware point of view,! is a very +interesting hardware platform. Reducing the difficulties +we experienced with the surrounding toolchain and making +development experience more consistent has the potential to not only +make NetFPGA, but also the who set of P4 hardware more interesting for +developers. - - react on FIN/RST (?) -- could be an addition - P4os - reusable code - - Future work: session handling +%% PMTU +%% handling error cases +%% No fragmentation +%% No address / mac learning +%% session handling diff --git a/doc/Thesis.pdf b/doc/Thesis.pdf index 3c978d7d75cb4c9a67724fe774303831dc6654ea..03652a4b2a9c6d716d65b9b6f60fd0425a0dd4a5 100644 GIT binary patch delta 21159 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 delta 20781 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