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
|
\vfil % or it might be \null
|
||||||
\thispagestyle{plain}
|
\thispagestyle{plain}
|
||||||
|
|
||||||
%** Abstract.tex: Contains a brief description
|
|
||||||
% of what the reader may expect
|
|
||||||
|
|
||||||
\begin{center}\textbf{Abstract}\end{center}
|
\begin{center}\textbf{Abstract}\end{center}
|
||||||
Due to the lack of IPv4 addresses, IPv6 deployements have recently
|
Due to the lack of IPv4 addresses, IPv6 deployements have recently
|
||||||
gained in importance in the Internet. However even IPv6 only network
|
gained in importance in the Internet.
|
||||||
deployments usually need connectivity towards the legacy IP (IPv4)
|
Several transition mechanism exist that allow translating IPv6
|
||||||
networks. To allow legacy IP and IPv6 devices to communicate with each
|
packets into IPv4 packets, thus enabling the coexistence
|
||||||
other a transition mechanism named ``NAT64'' is usually
|
and interoperability of both protocols.
|
||||||
deployed. However NAT64 solutions in software often don't reach line
|
|
||||||
rate. Programmable switches offer a possibility to implement NAT64 in
|
This thesis describes an implementation of the transition mechanism
|
||||||
the network. This master thesis shows the design, feasibility and
|
NAT64 implemented in P4. Using the P4 programming language
|
||||||
scalability of NAT64 on programmable switches.
|
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
|
\vfil
|
||||||
\clearpage
|
\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
|
Vivado
|
||||||
SDNET
|
SDNET
|
||||||
xx k lines of supporting code
|
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.
|
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}
|
\section{\label{introduction:overview}Overview}
|
||||||
Chapter 2 describes... Chapter 3 presents...
|
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:
|
all:
|
||||||
pdflatex $(FILE)
|
pdflatex $(FILE)
|
||||||
bibtex $(FILE)
|
# bibtex $(FILE)
|
||||||
pdflatex $(FILE)
|
pdflatex $(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}
|
\section{\label{Results:NetPFGA}NetFPGA}
|
||||||
General result: limited NAT64 is working, however
|
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}
|
\subsection{\label{Results:NetPFGA:challenges}Other Challenges}
|
||||||
Many workarounds
|
Many workarounds
|
||||||
|
|
||||||
|
@ -45,3 +49,11 @@ Reproducibility:
|
||||||
\section{\label{Results:P4}P4}
|
\section{\label{Results:P4}P4}
|
||||||
|
|
||||||
Limits if in actions
|
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}
|
\include{Abstract}
|
||||||
|
|
||||||
\tableofcontents
|
\tableofcontents
|
||||||
\listoffigures
|
%\listoffigures
|
||||||
\listoftables
|
\listoftables
|
||||||
|
|
||||||
\include{Introduction}
|
\include{Introduction}
|
||||||
\include{Problem}
|
\include{Background}
|
||||||
\include{Design}
|
\include{Design}
|
||||||
\include{Results}
|
\include{Results}
|
||||||
\include{Outlook}
|
\include{Conclusion}
|
||||||
\include{Summary}
|
|
||||||
|
|
||||||
\appendix
|
\appendix
|
||||||
\renewcommand{\thepart}{\Alph{part}}
|
\renewcommand{\thepart}{\Alph{part}}
|
||||||
|
@ -50,8 +49,6 @@
|
||||||
% simulation data, additional theoretical disquisitions, ...
|
% simulation data, additional theoretical disquisitions, ...
|
||||||
%
|
%
|
||||||
\include{appendix}
|
\include{appendix}
|
||||||
\include{Timetable}
|
|
||||||
\include{Originalproblem}
|
|
||||||
|
|
||||||
%** bibtex is used to automatically generate the bibliography
|
%** bibtex is used to automatically generate the bibliography
|
||||||
% references are stored in refs/refs.bib
|
% 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}
|
\vspace{\fill}
|
||||||
|
|
||||||
|
|
||||||
Master Thesis MA-2019S\\
|
Master Thesis MA-2019-19\\
|
||||||
February 2019 to August 2019\\
|
February 2019 to August 2019\\
|
||||||
|
|
||||||
\vspace{1cm}
|
\vspace{1cm}
|
||||||
Tutors: Alexander Dietmüller, Edgar Costa Molero\\
|
Tutors: Alexander Dietmüller, Edgar Costa Molero, Tobias Bühler\\
|
||||||
Supervisor: Prof. Dr. Laurent Vanbever\\
|
Supervisor: Prof. Dr. Laurent Vanbever\\
|
||||||
|
|
||||||
\end{titlepage}
|
\end{titlepage}
|
||||||
|
|
|
@ -54,6 +54,15 @@ Sample code for installation:
|
||||||
sed -i 's/\(P4_PROJECT_NAME=\).*/\1minip4/' ~/projects/P4-NetFPGA/tools/settings.sh
|
sed -i 's/\(P4_PROJECT_NAME=\).*/\1minip4/' ~/projects/P4-NetFPGA/tools/settings.sh
|
||||||
\end{verbatim}
|
\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}
|
\chapter{\label{appendix0}BMV2 environment and tests}
|
||||||
All BMV2 based compilations were made with the following compiler:
|
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
|
DEBUG:main:Doing neighbor solicitation
|
||||||
|
|
||||||
**** DONE For other nodes -> multicast
|
**** 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::/??
|
***** ff02::/??
|
||||||
***** rfc4861
|
***** rfc4861
|
||||||
"Neighbor Solicitation messages are multicast to the solicited-node
|
"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
|
***** DONE Correct IPv4 header checksum
|
||||||
***** TODO Correct ICMP header checksum
|
CLOSED: [2019-08-07 Wed 14:00]
|
||||||
***** TODO Fix length issue
|
***** 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?
|
- Seems like total_len is too short - but why?
|
||||||
**** DONE try5: packet is good, but routing is "strange": default route == 10.0.0.66
|
**** DONE try5: packet is good, but routing is "strange": default route == 10.0.0.66
|
||||||
root@ubuntu:~# ip r
|
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
|
rtt min/avg/max/mdev = 15.533/15.533/15.533/0.000 ms
|
||||||
root@line:~#
|
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
|
***** 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"
|
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
|
../p4src/static-mapping.p4(366): error: Program is not supported by this target, because table MyIngress.v6_networks has multiple successors
|
||||||
table v6_networks {
|
table v6_networks {
|
||||||
|
@ -3346,7 +3352,7 @@ https://en.wikipedia.org/wiki/IPv4_header_checksum
|
||||||
** TODO Benchmark/comparison
|
** TODO Benchmark/comparison
|
||||||
*** TODO Setup / Benchmark Jool
|
*** TODO Setup / Benchmark Jool
|
||||||
*** TODO Setup / Benchmark tayga
|
*** TODO Setup / Benchmark tayga
|
||||||
* Thesis documentation
|
* TODO Thesis documentation
|
||||||
** Introduction
|
** Introduction
|
||||||
*** Related work
|
*** Related work
|
||||||
**** RFC6052
|
**** 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]
|
CLOSED: [2019-07-21 Sun 13:55]
|
||||||
**** DONE tcp session
|
**** DONE tcp session
|
||||||
CLOSED: [2019-07-21 Sun 13:55]
|
CLOSED: [2019-07-21 Sun 13:55]
|
||||||
** TODO Hardware port
|
** DONE Hardware port
|
||||||
|
CLOSED: [2019-08-07 Wed 14:00]
|
||||||
*** Installation issues
|
*** Installation issues
|
||||||
Installing vivado would stall/sleep/hang forverer due to missing
|
Installing vivado would stall/sleep/hang forverer due to missing
|
||||||
system library, no error output.
|
system library, no error output.
|
||||||
|
@ -3838,7 +3845,8 @@ what.
|
||||||
- non fatal/fatal errors cannot be distinguished
|
- non fatal/fatal errors cannot be distinguished
|
||||||
grep: ../../../RELEASE_NOTES: No such file or directory
|
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
|
*** Features
|
||||||
| What? | Description | State in P4 | References |
|
| 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
|
**** TODO Security issue: not checking checksums before
|
||||||
- Could be implemented
|
- Could be implemented
|
||||||
|
|
||||||
** TODO Log various
|
** DONE Log various
|
||||||
|
CLOSED: [2019-08-07 Wed 14:00]
|
||||||
*** 2019-06-06
|
*** 2019-06-06
|
||||||
No device seen after loading modules after reboot - netfpga.
|
No device seen after loading modules after reboot - netfpga.
|
||||||
Trying to reprogram
|
Trying to reprogram
|
||||||
|
@ -5722,7 +5731,8 @@ ERROR: [Common 17-69] Command failed: Run 'impl_1' has not been launched. Unable
|
||||||
Vivado%
|
Vivado%
|
||||||
Vivado%
|
Vivado%
|
||||||
#+END_CENTER
|
#+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
|
*** DONE 2019-07-21: implement v6->v4 delta based
|
||||||
CLOSED: [2019-07-21 Sun 12:30]
|
CLOSED: [2019-07-21 Sun 12:30]
|
||||||
#+BEGIN_CENTER
|
#+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]
|
CLOSED: [2019-07-24 Wed 12:21]
|
||||||
*** DONE 2019-07-23: merge/migrate code into switch calc until it breaks
|
*** DONE 2019-07-23: merge/migrate code into switch calc until it breaks
|
||||||
CLOSED: [2019-07-24 Wed 12:21]
|
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
|
**** DONE Install SDNET via xsetup
|
||||||
CLOSED: [2019-07-23 Tue 11:03]
|
CLOSED: [2019-07-23 Tue 11:03]
|
||||||
**** DONE Not enough space for installing vivado (40g+ required)
|
**** 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
|
Makefile:31: recipe for target 'frontend' failed
|
||||||
|
|
||||||
#+END_CENTER
|
#+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
|
- Cannot easily run P4 on notebook - changes to the system very
|
||||||
invasive
|
invasive
|
||||||
- Varous compiler bugs/limitations
|
- Varous compiler bugs/limitations
|
||||||
|
@ -6447,8 +6459,10 @@ release, use 'get_user_parameters' instead
|
||||||
messages that actually constitute ERROR messages, but are not
|
messages that actually constitute ERROR messages, but are not
|
||||||
flagged as such nor do they cause the build process to abort.
|
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]
|
*** DONE 2019-07-24: setup VM in DCL as third compiler [INSTALL MANUAL]: no
|
||||||
**** TODO install mate for getting xlibraries
|
CLOSED: [2019-08-07 Wed 14:01]
|
||||||
|
**** DONE install mate for getting xlibraries
|
||||||
|
CLOSED: [2019-08-07 Wed 14:01]
|
||||||
**** Install sdnet
|
**** Install sdnet
|
||||||
|
|
||||||
*** DONE 2019-07-24: LIMIT add features to netpfga: LPM tables cannot be 64
|
*** 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$
|
nico@nsg-System:~/master-thesis/netpfga$
|
||||||
|
|
||||||
#+END_CENTER
|
#+END_CENTER
|
||||||
*** 2019-07-27
|
*** DONE 2019-07-27
|
||||||
*** TODO 2019-07-27: test output ports / connection to 2nd computer / dst_addr / exact
|
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
|
- action: TopPipe.realmain.set_egress_port
|
||||||
- IPv6 address: 42540766411362381960998550477184434178
|
- IPv6 address: 42540766411362381960998550477184434178
|
||||||
- Table: realmain_v6_networks_0
|
- 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()
|
ERROR: not enough fields provided to complete _hexify()
|
||||||
|
|
||||||
#+END_CENTER
|
#+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...
|
- no raise() in the code -> just sys.exit...
|
||||||
- using table_tcam_write_entry
|
- using table_tcam_write_entry
|
||||||
- 6 arguments are parsed:
|
- 6 arguments are parsed:
|
||||||
|
@ -7030,7 +7047,8 @@ nico@ESPRIMO-P956:~$
|
||||||
|
|
||||||
#+END_CENTER
|
#+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
|
#+BEGIN_CENTER
|
||||||
>> table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477184434179 => 1 1 0 0 0
|
>> 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
|
#+END_CENTER
|
||||||
*** DONE 2019-07-27: fix broken python code for deleting table entry: p4_px_tables.py on nsg
|
*** 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]
|
CLOSED: [2019-07-27 Sat 21:28]
|
||||||
*** TODO 2019-07-27: find out, why more parameters are required for table_cam_add_entry
|
*** DONE 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
|
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
|
#+BEGIN_CENTER
|
||||||
nico@ESPRIMO-P956:~$ sudo ip l s enp2s0f0 up
|
nico@ESPRIMO-P956:~$ sudo ip l s enp2s0f0 up
|
||||||
nico@ESPRIMO-P956:~$ sudo ip l s enp2s0f1 up
|
nico@ESPRIMO-P956:~$ sudo ip l s enp2s0f1 up
|
||||||
|
@ -7124,7 +7144,8 @@ PARAMS:
|
||||||
|
|
||||||
|
|
||||||
#+END_CENTER
|
#+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
|
#+BEGIN_CENTER
|
||||||
nico@nsg-System:~/master-thesis$ ls
|
nico@nsg-System:~/master-thesis$ ls
|
||||||
u'type': u'bits'}],
|
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
|
table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960998550477352206378 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0
|
||||||
|
|
||||||
#+END_CENTER
|
#+END_CENTER
|
||||||
*** TODO 2019-08-02: ipv4 checksum after nat64 is empty!
|
*** DONE 2019-08-02: ipv4 checksum after nat64 is empty!
|
||||||
*** TODO 2019-08-04: test nat64: ipv4 checksums
|
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
|
**** DONE Setting table entries: ok
|
||||||
CLOSED: [2019-08-04 Sun 08:55]
|
CLOSED: [2019-08-04 Sun 08:55]
|
||||||
#+BEGIN_CENTER
|
#+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-enp2s0f0.pcap
|
||||||
create mode 100644 pcap/netfpga-nat64-udp-2019-08-04-0913-enp2s0f1.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
|
As this one is generated by socat, no nat64 involed. Maybe tcp
|
||||||
offloading is active.
|
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
|
#+BEGIN_CENTER
|
||||||
nico@ESPRIMO-P956:~/master-thesis/bin$ xxd /dev/urandom | socat - UDP:10.0.0.66:2345
|
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
|
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!
|
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:
|
Trace:
|
||||||
#+BEGIN_CENTER
|
#+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-enp2s0f0.pcap
|
||||||
create mode 100644 pcap/netfpga-nat64-tcp-xxd-2019-08-04-0930-enp2s0f1.pcap
|
create mode 100644 pcap/netfpga-nat64-tcp-xxd-2019-08-04-0930-enp2s0f1.pcap
|
||||||
|
|
||||||
#+END_CENTER
|
#+END_CENTER
|
||||||
*** TODO retry manually: long packets break
|
*** DONE retry manually: long packets break
|
||||||
|
CLOSED: [2019-08-07 Wed 14:01]
|
||||||
#+BEGIN_CENTER
|
#+BEGIN_CENTER
|
||||||
nico@ESPRIMO-P956:~/master-thesis/pcap$ ~/master-thesis/bin/sniff-intf.sh enp2s0f0 netfpga-nat64-udp-manually
|
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
|
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:~#
|
root@ESPRIMO-P956:~#
|
||||||
|
|
||||||
#+END_CENTER
|
#+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:
|
v4 side:
|
||||||
|
|
||||||
|
@ -9196,7 +9224,7 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project
|
||||||
|
|
||||||
#+END_CENTER
|
#+END_CENTER
|
||||||
|
|
||||||
** References / Follow up
|
** TODO References / Follow up
|
||||||
*** TODO Board
|
*** TODO Board
|
||||||
*** RFC 791 IPv4 https://tools.ietf.org/html/rfc791
|
*** RFC 791 IPv4 https://tools.ietf.org/html/rfc791
|
||||||
*** RFC 792 ICMP https://tools.ietf.org/html/rfc792
|
*** 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
|
*** 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
|
*** 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
|
*** 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 Initial administration
|
||||||
** DONE Clarify PDF / form with Denise Spicher: free form description
|
** DONE Clarify PDF / form with Denise Spicher: free form description
|
||||||
** DONE Create task description to be handed in mystudies
|
** 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…
Reference in a new issue