Update doc
This commit is contained in:
		
					parent
					
						
							
								2d2ca29637
							
						
					
				
			
			
				commit
				
					
						e19e8cc32a
					
				
			
		
					 18 changed files with 317 additions and 183 deletions
				
			
		| 
						 | 
				
			
			@ -3,18 +3,39 @@
 | 
			
		|||
\vfil % or it might be \null
 | 
			
		||||
\thispagestyle{plain}
 | 
			
		||||
 | 
			
		||||
%** Abstract.tex: Contains a brief description
 | 
			
		||||
%                 of what the reader may expect
 | 
			
		||||
 | 
			
		||||
\begin{center}\textbf{Abstract}\end{center}
 | 
			
		||||
Due to the lack of IPv4 addresses, IPv6 deployements have recently
 | 
			
		||||
gained in importance in the Internet. However even IPv6 only network
 | 
			
		||||
deployments usually need connectivity towards the legacy IP (IPv4)
 | 
			
		||||
networks. To allow legacy IP and IPv6 devices to communicate with each
 | 
			
		||||
other a transition mechanism named ``NAT64'' is usually
 | 
			
		||||
deployed. However NAT64 solutions in software often don't reach line
 | 
			
		||||
rate. Programmable switches offer a possibility to implement NAT64 in
 | 
			
		||||
the network. This master thesis shows the design, feasibility and
 | 
			
		||||
scalability of NAT64 on programmable switches.
 | 
			
		||||
gained in importance in the Internet.
 | 
			
		||||
Several transition mechanism exist that allow translating IPv6
 | 
			
		||||
packets into IPv4 packets, thus enabling the coexistence
 | 
			
		||||
and interoperability of both protocols.
 | 
			
		||||
 | 
			
		||||
This thesis describes an implementation of the transition mechanism
 | 
			
		||||
NAT64 implemented in P4. Using the P4 programming language
 | 
			
		||||
a software emulated switch was created that translates IPv4 to IPv6 and vice versa.
 | 
			
		||||
Due to the target independence of P4 the same code can be compiled
 | 
			
		||||
for and deployed to on the FPGA hardware platform ``NetFPGA''.
 | 
			
		||||
 | 
			
		||||
Within the NetFPGA the NAT64 implementation achieves a stable throughput of
 | 
			
		||||
9.29 Gigabit/s and allows in network translations without a router.
 | 
			
		||||
 | 
			
		||||
%% P4. P4 is protocol and target independent and allo
 | 
			
		||||
%% P4 is a protocol independent programming language that allows programming network
 | 
			
		||||
%% However even IPv6 only network
 | 
			
		||||
%% deployments usually need connectivity towards the legacy IP (IPv4)
 | 
			
		||||
%% networks. To allow legacy IP and IPv6 devices to communicate with each
 | 
			
		||||
%% other a transition mechanism named ``NAT64'' is usually
 | 
			
		||||
%% deployed. However NAT64 solutions in software often don't reach line
 | 
			
		||||
%% rate. Programmable switches offer a possibility to implement NAT64 in
 | 
			
		||||
%% the network. This master thesis shows the design, feasibility and
 | 
			
		||||
%% scalability of NAT64 on programmable switches.
 | 
			
		||||
\vfil
 | 
			
		||||
\clearpage
 | 
			
		||||
 | 
			
		||||
\begin{verbatim}
 | 
			
		||||
 | 
			
		||||
***** Mehr was ich gemacht habe
 | 
			
		||||
***** 2-3 keys & numbers hinzufügen, 30% netpfga, 10gbit/s line rate
 | 
			
		||||
***** weniger das warum
 | 
			
		||||
\end{verbatim}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										15
									
								
								doc/Background.tex
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								doc/Background.tex
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
\chapter{\label{background}Background}
 | 
			
		||||
\section{\label{background:P4}P4}
 | 
			
		||||
\section{\label{background:ipv6}IPv6}
 | 
			
		||||
 | 
			
		||||
***** Für IPv6, NAT64, transitation mechanism
 | 
			
		||||
***** RFC hinzufügen
 | 
			
		||||
***** P4 kurz erwähnen
 | 
			
		||||
 | 
			
		||||
growth
 | 
			
		||||
 | 
			
		||||
\section{\label{background:transition}Transition Mechanisms}
 | 
			
		||||
proxying
 | 
			
		||||
translations
 | 
			
		||||
 | 
			
		||||
\section{\label{background:ipv6}IPv6}
 | 
			
		||||
							
								
								
									
										41
									
								
								doc/Conclusion.tex
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								doc/Conclusion.tex
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
\chapter{\label{summary}Conclusion}
 | 
			
		||||
%** Summary.tex: What have you achieved, what have you presented in this
 | 
			
		||||
%                document.  What are the highlights of your work.
 | 
			
		||||
%                It should conclude by a conclusion.
 | 
			
		||||
 | 
			
		||||
Sum up what you have done and recapitulate your key findings.
 | 
			
		||||
 | 
			
		||||
%\section{\label{conclusion:overall}Overall}
 | 
			
		||||
 | 
			
		||||
\section{\label{conclusion:bmv2}BMV2}
 | 
			
		||||
maybe remove
 | 
			
		||||
 | 
			
		||||
\section{\label{conclusion:P4}P4}
 | 
			
		||||
Many possibilities
 | 
			
		||||
Protocol independent
 | 
			
		||||
Easy architecture
 | 
			
		||||
 | 
			
		||||
Limitations in
 | 
			
		||||
 | 
			
		||||
\section{\label{conclusion:netpfga}NetFGPA}
 | 
			
		||||
personal note here
 | 
			
		||||
 | 
			
		||||
\section{\label{conclusion:realworld}Real world applications}
 | 
			
		||||
Can be deployed using the netpfga. Or Barefoot or Arista.
 | 
			
		||||
 | 
			
		||||
\section{\label{conclusion:outlook}Outlook}
 | 
			
		||||
 | 
			
		||||
%** Outlook.tex: What needs to be done further, what is planed
 | 
			
		||||
%
 | 
			
		||||
What are the consequences of your work for future work?
 | 
			
		||||
 | 
			
		||||
Different HW
 | 
			
		||||
 | 
			
		||||
Speed only limited to line speed. Could be running at 100 Gbit/s
 | 
			
		||||
without modifications.
 | 
			
		||||
 | 
			
		||||
\section{todo}
 | 
			
		||||
\begin{verbatim}
 | 
			
		||||
***** Summary eher kurz
 | 
			
		||||
***** Outlook als subsection!
 | 
			
		||||
\end{verbatim}
 | 
			
		||||
| 
						 | 
				
			
			@ -19,3 +19,12 @@ Netpfga live,
 | 
			
		|||
Vivado
 | 
			
		||||
SDNET
 | 
			
		||||
xx k lines of supporting code
 | 
			
		||||
 | 
			
		||||
\section{todo}
 | 
			
		||||
 | 
			
		||||
\begin{verbatim}
 | 
			
		||||
***** Verschiedene design Möglichkeiten
 | 
			
		||||
***** Proxy und co.
 | 
			
		||||
***** Generell vs. spefizisch
 | 
			
		||||
 | 
			
		||||
\end{verbatim}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,8 +39,38 @@ Not only faster, but also more convienient.
 | 
			
		|||
 | 
			
		||||
Describe your task.
 | 
			
		||||
 | 
			
		||||
\section{\label{introduction:relatedwork}Related Work}
 | 
			
		||||
A relevant work was~\cite{Lamport:LaTeX} (this citation is just an example...)
 | 
			
		||||
 | 
			
		||||
\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
 | 
			
		||||
line speed.
 | 
			
		||||
 | 
			
		||||
\section{\label{chapter2:transitition}Simplify IPv6 deployments}
 | 
			
		||||
Currently network operators have to focus on two network stacks when
 | 
			
		||||
designing networks: IPv6 and IPv4. As To simplify network setups
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\section{todo}
 | 
			
		||||
\begin{verbatim}
 | 
			
		||||
 | 
			
		||||
***** Motivation zeigen
 | 
			
		||||
***** IPv6, NetPFGA mehr Möglichketien
 | 
			
		||||
***** P4 erwähnen
 | 
			
		||||
***** Task gut zu zeigen,  alles erreicht
 | 
			
		||||
 use cases / sample applications
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\end{verbatim}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ FILE  = Thesis
 | 
			
		|||
 | 
			
		||||
all:
 | 
			
		||||
	pdflatex $(FILE)
 | 
			
		||||
	bibtex $(FILE)
 | 
			
		||||
#	bibtex $(FILE)
 | 
			
		||||
	pdflatex $(FILE)
 | 
			
		||||
	pdflatex $(FILE)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +0,0 @@
 | 
			
		|||
\chapter{\label{originalproblem}Original Problem}
 | 
			
		||||
 | 
			
		||||
Here comes the original task description that you agreed on with your
 | 
			
		||||
supervisor/tutor.
 | 
			
		||||
 | 
			
		||||
-> stuff from mystudies
 | 
			
		||||
| 
						 | 
				
			
			@ -1,7 +0,0 @@
 | 
			
		|||
\chapter{\label{outlook}Outlook}
 | 
			
		||||
 | 
			
		||||
%** Outlook.tex: What needs to be done further, what is planed
 | 
			
		||||
%
 | 
			
		||||
What are the consequences of your work for future work?
 | 
			
		||||
 | 
			
		||||
Different HW
 | 
			
		||||
| 
						 | 
				
			
			@ -1,99 +0,0 @@
 | 
			
		|||
\chapter{\label{chapter2}Problem}
 | 
			
		||||
 | 
			
		||||
%** 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
 | 
			
		||||
line speed.
 | 
			
		||||
 | 
			
		||||
\section{\label{chapter2:transitition}Simplify IPv6 deployments}
 | 
			
		||||
Currently network operators have to focus on two network stacks when
 | 
			
		||||
designing networks: IPv6 and IPv4. As To simplify network setups
 | 
			
		||||
 | 
			
		||||
%% Well this section can be further subdivided into subsection.  We present
 | 
			
		||||
%% this in subsection \ref{chapter2:essentials:subsections}.
 | 
			
		||||
 | 
			
		||||
%% \subsection{\label{chapter2:essentials:subsections}Subsections}
 | 
			
		||||
 | 
			
		||||
%% \paragraph{\label{introduction:essentials:subsections:paragraph}Paragraphs}
 | 
			
		||||
%% can be specially referenced as well.
 | 
			
		||||
 | 
			
		||||
%% Of further importance is the understanding of the following environments:
 | 
			
		||||
 | 
			
		||||
%% %*** itemized lists
 | 
			
		||||
%% \begin{itemize}
 | 
			
		||||
%% \item This shows an itemized bullet list
 | 
			
		||||
%%   \begin{itemize}
 | 
			
		||||
%%   \item Which can be used for several levels\ldots
 | 
			
		||||
%%   \end{itemize}
 | 
			
		||||
%% \end{itemize}
 | 
			
		||||
 | 
			
		||||
%% %*** enumerated lists
 | 
			
		||||
%% \begin{enumerate}
 | 
			
		||||
%% \item The same applies to enumerated lists.
 | 
			
		||||
%% \end{enumerate}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% %** figures
 | 
			
		||||
%% \begin{figure}[!hbt]
 | 
			
		||||
%%   \begin{center}
 | 
			
		||||
%% %		 \includegraphics[width=\textwidth, angle=90]{file_name.eps}
 | 
			
		||||
%%   \caption{This is a figure to be printed in a float}
 | 
			
		||||
%%   \label{file_name}
 | 
			
		||||
%%   \end{center}
 | 
			
		||||
%% \end{figure}
 | 
			
		||||
 | 
			
		||||
%% By figure \ref{file_name}, we show some funny figures.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Table with caption and footnotes below the table.
 | 
			
		||||
 | 
			
		||||
%% \begin{table}[htbp]
 | 
			
		||||
%% \begin{center}\begin{minipage}{\textwidth}
 | 
			
		||||
%% \begin{tabular}{| c | p{130pt} | l |}
 | 
			
		||||
%% \hline
 | 
			
		||||
%% Column 1 & Column 2 \newline (additional line) & Column 3 \\
 | 
			
		||||
%% \hline
 | 
			
		||||
%% C1,R2 & C2,R2 & C2,R3 \\
 | 
			
		||||
%% \hline
 | 
			
		||||
%% C1,R3	& \multicolumn{2}{| c |}{C2\&C3,R3} \\
 | 
			
		||||
%% \hline
 | 
			
		||||
%% C1,R4 & C2,R4\footnote{Footnote to table~\ref{tab:table1}} & C3,R4\\
 | 
			
		||||
%% \hline
 | 
			
		||||
%% \end{tabular}
 | 
			
		||||
%% \end{minipage}
 | 
			
		||||
%% \caption{Table 1}
 | 
			
		||||
%% \label{tab:table1}
 | 
			
		||||
%% \end{center}
 | 
			
		||||
%% \end{table}
 | 
			
		||||
 | 
			
		||||
%% Examples of different text sizes:
 | 
			
		||||
 | 
			
		||||
%% \small Small \\
 | 
			
		||||
%% \scriptsize Script size \\
 | 
			
		||||
%% \normalsize Normal \\
 | 
			
		||||
%% \large Large \\
 | 
			
		||||
%% \huge Huge \\
 | 
			
		||||
%% \normalsize
 | 
			
		||||
 | 
			
		||||
%% \CHECK
 | 
			
		||||
%% If we reference to another document, we cite the document \cite{Lamport:LaTeX}.
 | 
			
		||||
 | 
			
		||||
%% %** landscape
 | 
			
		||||
%% \NEW
 | 
			
		||||
%% \begin{landscape}
 | 
			
		||||
%% Of some interest is also the landscape environment:
 | 
			
		||||
%% \end{landscape}
 | 
			
		||||
 | 
			
		||||
%% \verbatiminput{filename.txt}
 | 
			
		||||
%% Even though we don't think full listings are useful in documents,
 | 
			
		||||
%% you can easily insert complete files by the verbatiminput{}-command.
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +20,11 @@ test framework openvswitch
 | 
			
		|||
\section{\label{Results:NetPFGA}NetFPGA}
 | 
			
		||||
General result: limited NAT64 is working, however
 | 
			
		||||
 | 
			
		||||
\subsection{\label{Results:NetPFGA:challenge-checksum}No Payload checksumming}
 | 
			
		||||
\subsection{\label{Results:NetPFGA:challenge-checksum}No Payload
 | 
			
		||||
  checksumming}
 | 
			
		||||
 | 
			
		||||
Hash funktion in Arbeit
 | 
			
		||||
 | 
			
		||||
\subsection{\label{Results:NetPFGA:challenges}Other Challenges}
 | 
			
		||||
Many workarounds
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -45,3 +49,11 @@ Reproducibility:
 | 
			
		|||
\section{\label{Results:P4}P4}
 | 
			
		||||
 | 
			
		||||
Limits if in actions
 | 
			
		||||
 | 
			
		||||
\section{todo}
 | 
			
		||||
 | 
			
		||||
\begin{verbatim}
 | 
			
		||||
***** Dorth eher detailiertes Drawing
 | 
			
		||||
***** Längste Section!
 | 
			
		||||
 | 
			
		||||
\end{verbatim}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +0,0 @@
 | 
			
		|||
\chapter{\label{summary}Summary}
 | 
			
		||||
%** Summary.tex: What have you achieved, what have you presented in this
 | 
			
		||||
%                document.  What are the highlights of your work.
 | 
			
		||||
%                It should conclude by a conclusion.
 | 
			
		||||
 | 
			
		||||
Sum up what you have done and recapitulate your key findings.
 | 
			
		||||
 | 
			
		||||
\section{\label{summary:overall}Overall}
 | 
			
		||||
\section{\label{summary:bmv2}BMV2}
 | 
			
		||||
\section{\label{summary:netpfga}NetFGPA}
 | 
			
		||||
| 
						 | 
				
			
			@ -33,15 +33,14 @@
 | 
			
		|||
\include{Abstract}
 | 
			
		||||
 | 
			
		||||
\tableofcontents
 | 
			
		||||
\listoffigures
 | 
			
		||||
%\listoffigures
 | 
			
		||||
\listoftables
 | 
			
		||||
 | 
			
		||||
\include{Introduction}
 | 
			
		||||
\include{Problem}
 | 
			
		||||
\include{Background}
 | 
			
		||||
\include{Design}
 | 
			
		||||
\include{Results}
 | 
			
		||||
\include{Outlook}
 | 
			
		||||
\include{Summary}
 | 
			
		||||
\include{Conclusion}
 | 
			
		||||
 | 
			
		||||
\appendix
 | 
			
		||||
\renewcommand{\thepart}{\Alph{part}}
 | 
			
		||||
| 
						 | 
				
			
			@ -50,8 +49,6 @@
 | 
			
		|||
%		simulation data, additional theoretical disquisitions, ...
 | 
			
		||||
%
 | 
			
		||||
\include{appendix}
 | 
			
		||||
\include{Timetable}
 | 
			
		||||
\include{Originalproblem}
 | 
			
		||||
 | 
			
		||||
%** bibtex is used to automatically generate the bibliography
 | 
			
		||||
%   references are stored in refs/refs.bib
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
\chapter{\label{timetable}Timetable}
 | 
			
		||||
Here may come your thesis schedule (the original plan and ev. the actual outcome).
 | 
			
		||||
-> can be from plan.org
 | 
			
		||||
| 
						 | 
				
			
			@ -16,11 +16,11 @@
 | 
			
		|||
  \vspace{\fill}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  Master Thesis MA-2019S\\
 | 
			
		||||
  Master Thesis MA-2019-19\\
 | 
			
		||||
  February 2019 to August 2019\\
 | 
			
		||||
 | 
			
		||||
  \vspace{1cm}
 | 
			
		||||
  Tutors: Alexander Dietmüller, Edgar Costa Molero\\
 | 
			
		||||
  Tutors: Alexander Dietmüller, Edgar Costa Molero, Tobias Bühler\\
 | 
			
		||||
  Supervisor: Prof. Dr. Laurent Vanbever\\
 | 
			
		||||
 | 
			
		||||
  \end{titlepage}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,6 +54,15 @@ Sample code for installation:
 | 
			
		|||
  sed -i 's/\(P4_PROJECT_NAME=\).*/\1minip4/' ~/projects/P4-NetFPGA/tools/settings.sh
 | 
			
		||||
\end{verbatim}
 | 
			
		||||
 | 
			
		||||
Version \textbf{v1.3.1-46-g97d3aaa} of the P4-NetPFGA repository was
 | 
			
		||||
used for creating the bitfiles of this project.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\begin{verbatim}
 | 
			
		||||
nico@nsg-System:~/projects/P4-NetFPGA$ git describe --always
 | 
			
		||||
v1.3.1-46-g97d3aaa
 | 
			
		||||
\end{verbatim}
 | 
			
		||||
 | 
			
		||||
% ----------------------------------------------------------------------
 | 
			
		||||
\chapter{\label{appendix0}BMV2 environment and tests}
 | 
			
		||||
All BMV2 based compilations were made with the following compiler:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +0,0 @@
 | 
			
		|||
\chapter{\label{conclusionoutlook}Conclusion and Outlook}
 | 
			
		||||
 | 
			
		||||
\section{\label{conclusionoutlook:conclusion}Conclusion}
 | 
			
		||||
 | 
			
		||||
\section{\label{conclusionoutlook:outlook}Outlook}
 | 
			
		||||
							
								
								
									
										112
									
								
								doc/plan.org
									
										
									
									
									
								
							
							
						
						
									
										112
									
								
								doc/plan.org
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -619,7 +619,8 @@ DEBUG:main:o=<Ether  dst=33:33:ff:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<I
 | 
			
		|||
DEBUG:main:Doing neighbor solicitation
 | 
			
		||||
 | 
			
		||||
**** DONE For other nodes -> multicast
 | 
			
		||||
**** TODO Maybe implement link local addresses (missing at the moment)
 | 
			
		||||
**** DONE Maybe implement link local addresses (missing at the moment): no
 | 
			
		||||
     CLOSED: [2019-08-07 Wed 13:59]
 | 
			
		||||
***** ff02::/??
 | 
			
		||||
***** rfc4861
 | 
			
		||||
"Neighbor Solicitation messages are multicast to the  solicited-node
 | 
			
		||||
| 
						 | 
				
			
			@ -842,9 +843,12 @@ rtt min/avg/max/mdev = 6.304/6.304/6.304/0.000 ms
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
***** TODO Correct IPv4 header checksum
 | 
			
		||||
***** TODO Correct ICMP header checksum
 | 
			
		||||
***** TODO Fix length issue
 | 
			
		||||
***** DONE Correct IPv4 header checksum
 | 
			
		||||
      CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
***** DONE Correct ICMP header checksum
 | 
			
		||||
      CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
***** DONE Fix length issue
 | 
			
		||||
      CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
      - Seems like total_len is too short - but why?
 | 
			
		||||
**** DONE try5: packet is good, but routing is "strange": default route == 10.0.0.66
 | 
			
		||||
root@ubuntu:~# ip r
 | 
			
		||||
| 
						 | 
				
			
			@ -902,9 +906,11 @@ PING 192.168.4.1 (192.168.4.1) 56(84) bytes of data.
 | 
			
		|||
rtt min/avg/max/mdev = 15.533/15.533/15.533/0.000 ms
 | 
			
		||||
root@line:~#
 | 
			
		||||
 | 
			
		||||
**** TODO Implement default route handling, maybe implement ARP?
 | 
			
		||||
**** DONE Implement default route handling, maybe implement ARP?
 | 
			
		||||
     CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
***** DONE create arp table
 | 
			
		||||
***** TODO Multiple tables not supported
 | 
			
		||||
***** DONE Multiple tables not supported
 | 
			
		||||
      CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
p4c --target bmv2 --arch v1model --std p4-16 "../p4src/static-mapping.p4" -o "/home/p4/master-thesis/p4src"
 | 
			
		||||
../p4src/static-mapping.p4(366): error: Program is not supported by this target, because table MyIngress.v6_networks has multiple successors
 | 
			
		||||
    table v6_networks {
 | 
			
		||||
| 
						 | 
				
			
			@ -3346,7 +3352,7 @@ https://en.wikipedia.org/wiki/IPv4_header_checksum
 | 
			
		|||
** TODO Benchmark/comparison
 | 
			
		||||
*** TODO Setup / Benchmark Jool
 | 
			
		||||
*** TODO Setup / Benchmark tayga
 | 
			
		||||
* Thesis documentation
 | 
			
		||||
* TODO Thesis documentation
 | 
			
		||||
** Introduction
 | 
			
		||||
*** Related work
 | 
			
		||||
**** RFC6052
 | 
			
		||||
| 
						 | 
				
			
			@ -3819,7 +3825,8 @@ INFO:main:unhandled reassambled=<Ether  dst=00:00:0a:00:00:42 src=00:00:0a:00:00
 | 
			
		|||
     CLOSED: [2019-07-21 Sun 13:55]
 | 
			
		||||
**** DONE tcp session
 | 
			
		||||
     CLOSED: [2019-07-21 Sun 13:55]
 | 
			
		||||
** TODO Hardware port
 | 
			
		||||
** DONE Hardware port
 | 
			
		||||
   CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
*** Installation issues
 | 
			
		||||
Installing vivado would stall/sleep/hang forverer due to missing
 | 
			
		||||
system library, no error output.
 | 
			
		||||
| 
						 | 
				
			
			@ -3838,7 +3845,8 @@ what.
 | 
			
		|||
- non fatal/fatal errors cannot be distinguished
 | 
			
		||||
grep: ../../../RELEASE_NOTES: No such file or directory
 | 
			
		||||
 | 
			
		||||
** TODO Comparison with existing tools (Performance, Features)
 | 
			
		||||
** DONE Comparison with existing tools (Performance, Features)
 | 
			
		||||
   CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
*** Features
 | 
			
		||||
| What?               | Description                              | State in P4       | References                                                                      |
 | 
			
		||||
|---------------------+------------------------------------------+-------------------+---------------------------------------------------------------------------------|
 | 
			
		||||
| 
						 | 
				
			
			@ -4116,7 +4124,8 @@ Fragmented ICMP/ICMPv6 packets will not be translated by IP/ICMP    translators.
 | 
			
		|||
**** TODO Security issue: not checking checksums before
 | 
			
		||||
     - Could be implemented
 | 
			
		||||
 | 
			
		||||
** TODO Log various
 | 
			
		||||
** DONE Log various
 | 
			
		||||
   CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
*** 2019-06-06
 | 
			
		||||
No device seen after loading modules after reboot - netfpga.
 | 
			
		||||
Trying to reprogram
 | 
			
		||||
| 
						 | 
				
			
			@ -5722,7 +5731,8 @@ ERROR: [Common 17-69] Command failed: Run 'impl_1' has not been launched. Unable
 | 
			
		|||
Vivado%
 | 
			
		||||
Vivado%
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
*** TODO 2019-07-21: whether or not to handle icmp(6) checksums
 | 
			
		||||
*** DONE 2019-07-21: whether or not to handle icmp(6) checksums: no
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
*** DONE 2019-07-21: implement v6->v4 delta based
 | 
			
		||||
    CLOSED: [2019-07-21 Sun 12:30]
 | 
			
		||||
#+BEGIN_CENTER
 | 
			
		||||
| 
						 | 
				
			
			@ -6119,7 +6129,8 @@ nico@nsg-System:~/master-thesis/netpfga/minip4/simple_sume_switch/test/sim_switc
 | 
			
		|||
    CLOSED: [2019-07-24 Wed 12:21]
 | 
			
		||||
*** DONE 2019-07-23: merge/migrate code into switch calc until it breaks
 | 
			
		||||
    CLOSED: [2019-07-24 Wed 12:21]
 | 
			
		||||
*** TODO 2019-07-23: install xilinx & co. to eth2.nico.ungleich.cloud -> 2nd compiler [MANUAL]
 | 
			
		||||
*** DONE 2019-07-23: install xilinx & co. to eth2.nico.ungleich.cloud -> 2nd compiler [MANUAL]
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:00]
 | 
			
		||||
**** DONE Install SDNET via xsetup
 | 
			
		||||
     CLOSED: [2019-07-23 Tue 11:03]
 | 
			
		||||
**** DONE Not enough space for installing vivado (40g+ required)
 | 
			
		||||
| 
						 | 
				
			
			@ -6408,7 +6419,8 @@ make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume
 | 
			
		|||
Makefile:31: recipe for target 'frontend' failed
 | 
			
		||||
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
*** TODO Further notes P4/master thesis
 | 
			
		||||
*** DONE *Further notes P4/master thesis*
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
    - Cannot easily run P4 on notebook - changes to the system very
 | 
			
		||||
      invasive
 | 
			
		||||
    - Varous compiler bugs/limitations
 | 
			
		||||
| 
						 | 
				
			
			@ -6447,8 +6459,10 @@ release, use 'get_user_parameters' instead
 | 
			
		|||
      messages that actually constitute ERROR messages, but are not
 | 
			
		||||
      flagged as such nor do they cause the build process to abort.
 | 
			
		||||
 | 
			
		||||
*** TODO 2019-07-24: setup VM in DCL as third compiler [INSTALL MANUAL]
 | 
			
		||||
**** TODO install mate for getting xlibraries
 | 
			
		||||
*** DONE 2019-07-24: setup VM in DCL as third compiler [INSTALL MANUAL]: no
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
**** DONE install mate for getting xlibraries
 | 
			
		||||
     CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
**** Install sdnet
 | 
			
		||||
 | 
			
		||||
*** DONE 2019-07-24: LIMIT add features to netpfga: LPM tables cannot be 64
 | 
			
		||||
| 
						 | 
				
			
			@ -6907,8 +6921,10 @@ nico@nsg-System:~/master-thesis/netpfga$
 | 
			
		|||
nico@nsg-System:~/master-thesis/netpfga$
 | 
			
		||||
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
*** 2019-07-27
 | 
			
		||||
*** TODO 2019-07-27: test output ports / connection to 2nd computer / dst_addr / exact
 | 
			
		||||
*** DONE 2019-07-27
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
*** DONE 2019-07-27: test output ports / connection to 2nd computer / dst_addr / exact
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
    - action: TopPipe.realmain.set_egress_port
 | 
			
		||||
    - IPv6 address: 42540766411362381960998550477184434178
 | 
			
		||||
    - Table: realmain_v6_networks_0
 | 
			
		||||
| 
						 | 
				
			
			@ -6928,7 +6944,8 @@ ERROR: TopPipe.set_egress_port is not a recognized action for table realmain_v6_
 | 
			
		|||
ERROR: not enough fields provided to complete _hexify()
 | 
			
		||||
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
*** TODO 2019-07-27: find out where the _hexify() error comes from
 | 
			
		||||
*** DONE 2019-07-27: find out where the _hexify() error comes from
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
    - no raise() in the code -> just sys.exit...
 | 
			
		||||
    - using table_tcam_write_entry
 | 
			
		||||
    - 6 arguments are parsed:
 | 
			
		||||
| 
						 | 
				
			
			@ -7030,7 +7047,8 @@ nico@ESPRIMO-P956:~$
 | 
			
		|||
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
 | 
			
		||||
*** TODO 2019-07-27: also write output port for ::3
 | 
			
		||||
*** DONE 2019-07-27: also write output port for ::3
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
 | 
			
		||||
#+BEGIN_CENTER
 | 
			
		||||
>> table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477184434179 => 1 1 0 0 0
 | 
			
		||||
| 
						 | 
				
			
			@ -7073,8 +7091,10 @@ nico@nsg-System:~/master-thesis/netpfga/minip4/sw/CLI$
 | 
			
		|||
#+END_CENTER
 | 
			
		||||
*** DONE 2019-07-27: fix broken python code for deleting table entry: p4_px_tables.py on nsg
 | 
			
		||||
    CLOSED: [2019-07-27 Sat 21:28]
 | 
			
		||||
*** TODO 2019-07-27: find out, why more parameters are required for table_cam_add_entry
 | 
			
		||||
*** TODO 2019-07-27: receiving any packet from the card
 | 
			
		||||
*** DONE 2019-07-27: find out, why more parameters are required for table_cam_add_entry
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
*** DONE 2019-07-27: receiving any packet from the card
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
#+BEGIN_CENTER
 | 
			
		||||
nico@ESPRIMO-P956:~$ sudo ip l s enp2s0f0 up
 | 
			
		||||
nico@ESPRIMO-P956:~$ sudo ip l s enp2s0f1 up
 | 
			
		||||
| 
						 | 
				
			
			@ -7124,7 +7144,8 @@ PARAMS:
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
*** TODO 2019-07-27: try adding table entries / running ipv6/ipv4 nat code
 | 
			
		||||
*** DONE 2019-07-27: try adding table entries / running ipv6/ipv4 nat code
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
#+BEGIN_CENTER
 | 
			
		||||
nico@nsg-System:~/master-thesis$ ls
 | 
			
		||||
                      u'type': u'bits'}],
 | 
			
		||||
| 
						 | 
				
			
			@ -8268,8 +8289,10 @@ listening on enp2s0f0, link-type EN10MB (Ethernet), capture size 262144 bytes
 | 
			
		|||
table_cam_add_entry realmain_nat64_0  realmain.nat64_static 42540766411362381960998550477352206378 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0
 | 
			
		||||
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
*** TODO 2019-08-02: ipv4 checksum after nat64 is empty!
 | 
			
		||||
*** TODO 2019-08-04: test nat64: ipv4 checksums
 | 
			
		||||
*** DONE 2019-08-02: ipv4 checksum after nat64 is empty!
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
*** DONE 2019-08-04: test nat64: ipv4 checksums
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
**** DONE Setting table entries: ok
 | 
			
		||||
     CLOSED: [2019-08-04 Sun 08:55]
 | 
			
		||||
 #+BEGIN_CENTER
 | 
			
		||||
| 
						 | 
				
			
			@ -8471,11 +8494,13 @@ trace:
 | 
			
		|||
 create mode 100644 pcap/netfpga-nat64-udp-2019-08-04-0913-enp2s0f0.pcap
 | 
			
		||||
 create mode 100644 pcap/netfpga-nat64-udp-2019-08-04-0913-enp2s0f1.pcap
 | 
			
		||||
 | 
			
		||||
**** TODO NOTE: outgoing ipv4 checksum incorrect -> doesn't make sense
 | 
			
		||||
**** DONE NOTE: outgoing ipv4 checksum incorrect -> doesn't make sense
 | 
			
		||||
     CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
As this one is generated by socat, no nat64 involed. Maybe tcp
 | 
			
		||||
offloading is active.
 | 
			
		||||
 | 
			
		||||
*** TODO 2019-08-04: Testing more traffic: fails. trace:
 | 
			
		||||
*** DONE 2019-08-04: Testing more traffic: fails. trace:
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
#+BEGIN_CENTER
 | 
			
		||||
nico@ESPRIMO-P956:~/master-thesis/bin$ xxd /dev/urandom | socat - UDP:10.0.0.66:2345
 | 
			
		||||
nico@ESPRIMO-P956:~/master-thesis/bin$ while true; do  xxd /dev/urandom  | socat - UDP6-LISTEN:2345; sleep 0.2; done
 | 
			
		||||
| 
						 | 
				
			
			@ -8515,14 +8540,16 @@ Ubuntu 16.04.5 LTS \n \l
 | 
			
		|||
 | 
			
		||||
but no passwd!
 | 
			
		||||
 | 
			
		||||
*** TODO IPv6 options (fragments) set that were not set before!
 | 
			
		||||
*** DONE IPv6 options (fragments) set that were not set before!
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
Trace:
 | 
			
		||||
#+BEGIN_CENTER
 | 
			
		||||
 create mode 100644 pcap/netfpga-nat64-tcp-xxd-2019-08-04-0930-enp2s0f0.pcap
 | 
			
		||||
 create mode 100644 pcap/netfpga-nat64-tcp-xxd-2019-08-04-0930-enp2s0f1.pcap
 | 
			
		||||
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
*** TODO retry manually: long packets break
 | 
			
		||||
*** DONE retry manually: long packets break
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:01]
 | 
			
		||||
#+BEGIN_CENTER
 | 
			
		||||
nico@ESPRIMO-P956:~/master-thesis/pcap$ ~/master-thesis/bin/sniff-intf.sh enp2s0f0 netfpga-nat64-udp-manually
 | 
			
		||||
nico@ESPRIMO-P956:~/master-thesis/bin$ socat - UDP6-LISTEN:2345
 | 
			
		||||
| 
						 | 
				
			
			@ -8695,7 +8722,8 @@ Cannot get device udp-fragmentation-offload settings: Operation not supported
 | 
			
		|||
root@ESPRIMO-P956:~#
 | 
			
		||||
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
*** TODO 2019-08-04: post tuning test
 | 
			
		||||
*** DONE 2019-08-04: post tuning test
 | 
			
		||||
    CLOSED: [2019-08-07 Wed 14:02]
 | 
			
		||||
 | 
			
		||||
v4 side:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -9196,7 +9224,7 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project
 | 
			
		|||
 | 
			
		||||
#+END_CENTER
 | 
			
		||||
 | 
			
		||||
** References / Follow up
 | 
			
		||||
** TODO References / Follow up
 | 
			
		||||
*** TODO Board
 | 
			
		||||
*** RFC 791 IPv4 https://tools.ietf.org/html/rfc791
 | 
			
		||||
*** RFC 792 ICMP https://tools.ietf.org/html/rfc792
 | 
			
		||||
| 
						 | 
				
			
			@ -9239,6 +9267,30 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project
 | 
			
		|||
*** V1 model: https://github.com/p4lang/p4c/blob/master/p4include/v1model.p4
 | 
			
		||||
*** Cisco NAT64 https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipaddr_nat/configuration/xe-3s/nat-xe-3s-book/iadnat-stateful-nat64.pdf
 | 
			
		||||
*** Wiki_mac: https://en.wikipedia.org/wiki/MAC_address
 | 
			
		||||
** TODO Writing Thesis
 | 
			
		||||
*** TODO Introduction: 1-2 pages
 | 
			
		||||
*** TODO Fill out background sectio
 | 
			
		||||
*** TODO Read through/add all points from plan.org
 | 
			
		||||
*** TODO Update doc from input Tobias (2019-08-05)
 | 
			
		||||
*** TODO Add graphs from benchmark
 | 
			
		||||
*** TODO Ensure bibiography is containing everything
 | 
			
		||||
*** TODO Add the final declaration of conformity
 | 
			
		||||
*** TODO Don't order by time, but show a procss
 | 
			
		||||
*** TODO Send for review to Tobias/Thilo
 | 
			
		||||
*** TODO Add plots!
 | 
			
		||||
*** TODO Create graph of with and without router
 | 
			
		||||
*** TODO Add comparison with other solutions (Results?)
 | 
			
		||||
*** TODO Show / create graph of a bigger network
 | 
			
		||||
*** Rough time table / effort
 | 
			
		||||
|               |          | Status |
 | 
			
		||||
| Abstract      | 1 day    |        |
 | 
			
		||||
| Introduction  | 1 day    |        |
 | 
			
		||||
| Background    | 1 day    |        |
 | 
			
		||||
| Design        | 1-2 days |        |
 | 
			
		||||
| Results       | 2-3 days |        |
 | 
			
		||||
| Conclusion    | 1 day    |        |
 | 
			
		||||
| Proof reading | 2-3 days |        |
 | 
			
		||||
| SUM(max)      | 12d      |        |
 | 
			
		||||
* DONE Initial administration
 | 
			
		||||
** DONE Clarify PDF / form with Denise Spicher: free form description
 | 
			
		||||
** DONE Create task description to be handed in mystudies
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										78
									
								
								doc/samples.tex
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								doc/samples.tex
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,78 @@
 | 
			
		|||
%% Well this section can be further subdivided into subsection.  We present
 | 
			
		||||
%% this in subsection \ref{chapter2:essentials:subsections}.
 | 
			
		||||
 | 
			
		||||
%% \subsection{\label{chapter2:essentials:subsections}Subsections}
 | 
			
		||||
 | 
			
		||||
%% \paragraph{\label{introduction:essentials:subsections:paragraph}Paragraphs}
 | 
			
		||||
%% can be specially referenced as well.
 | 
			
		||||
 | 
			
		||||
%% Of further importance is the understanding of the following environments:
 | 
			
		||||
 | 
			
		||||
%% %*** itemized lists
 | 
			
		||||
%% \begin{itemize}
 | 
			
		||||
%% \item This shows an itemized bullet list
 | 
			
		||||
%%   \begin{itemize}
 | 
			
		||||
%%   \item Which can be used for several levels\ldots
 | 
			
		||||
%%   \end{itemize}
 | 
			
		||||
%% \end{itemize}
 | 
			
		||||
 | 
			
		||||
%% %*** enumerated lists
 | 
			
		||||
%% \begin{enumerate}
 | 
			
		||||
%% \item The same applies to enumerated lists.
 | 
			
		||||
%% \end{enumerate}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% %** figures
 | 
			
		||||
%% \begin{figure}[!hbt]
 | 
			
		||||
%%   \begin{center}
 | 
			
		||||
%% %		 \includegraphics[width=\textwidth, angle=90]{file_name.eps}
 | 
			
		||||
%%   \caption{This is a figure to be printed in a float}
 | 
			
		||||
%%   \label{file_name}
 | 
			
		||||
%%   \end{center}
 | 
			
		||||
%% \end{figure}
 | 
			
		||||
 | 
			
		||||
%% By figure \ref{file_name}, we show some funny figures.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%% Table with caption and footnotes below the table.
 | 
			
		||||
 | 
			
		||||
%% \begin{table}[htbp]
 | 
			
		||||
%% \begin{center}\begin{minipage}{\textwidth}
 | 
			
		||||
%% \begin{tabular}{| c | p{130pt} | l |}
 | 
			
		||||
%% \hline
 | 
			
		||||
%% Column 1 & Column 2 \newline (additional line) & Column 3 \\
 | 
			
		||||
%% \hline
 | 
			
		||||
%% C1,R2 & C2,R2 & C2,R3 \\
 | 
			
		||||
%% \hline
 | 
			
		||||
%% C1,R3	& \multicolumn{2}{| c |}{C2\&C3,R3} \\
 | 
			
		||||
%% \hline
 | 
			
		||||
%% C1,R4 & C2,R4\footnote{Footnote to table~\ref{tab:table1}} & C3,R4\\
 | 
			
		||||
%% \hline
 | 
			
		||||
%% \end{tabular}
 | 
			
		||||
%% \end{minipage}
 | 
			
		||||
%% \caption{Table 1}
 | 
			
		||||
%% \label{tab:table1}
 | 
			
		||||
%% \end{center}
 | 
			
		||||
%% \end{table}
 | 
			
		||||
 | 
			
		||||
%% Examples of different text sizes:
 | 
			
		||||
 | 
			
		||||
%% \small Small \\
 | 
			
		||||
%% \scriptsize Script size \\
 | 
			
		||||
%% \normalsize Normal \\
 | 
			
		||||
%% \large Large \\
 | 
			
		||||
%% \huge Huge \\
 | 
			
		||||
%% \normalsize
 | 
			
		||||
 | 
			
		||||
%% \CHECK
 | 
			
		||||
%% If we reference to another document, we cite the document \cite{Lamport:LaTeX}.
 | 
			
		||||
 | 
			
		||||
%% %** landscape
 | 
			
		||||
%% \NEW
 | 
			
		||||
%% \begin{landscape}
 | 
			
		||||
%% Of some interest is also the landscape environment:
 | 
			
		||||
%% \end{landscape}
 | 
			
		||||
 | 
			
		||||
%% \verbatiminput{filename.txt}
 | 
			
		||||
%% Even though we don't think full listings are useful in documents,
 | 
			
		||||
%% you can easily insert complete files by the verbatiminput{}-command.
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue