Doc,various
This commit is contained in:
parent
7c42eefd40
commit
a2868a3f07
9 changed files with 500 additions and 74 deletions
|
@ -10,7 +10,7 @@ table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 425407664113
|
|||
table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477352206378 => 64 0 0 0 0
|
||||
|
||||
# 2001:db8:42:2a to be translated to 10.0.0.42:
|
||||
table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960998550477184434218 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0
|
||||
#table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960998550477184434218 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0
|
||||
|
||||
# 2001:db8:42::a00:2a to 10.0.0.42
|
||||
table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960998550477352206378 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0
|
||||
|
|
4
bin/init_ipv4_esprimo.sh
Normal file
4
bin/init_ipv4_esprimo.sh
Normal file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
ip addr add 10.0.0.42/24 dev enp2s0f0
|
||||
ip link set enp2s0f0 up
|
|
@ -3,9 +3,13 @@
|
|||
# eth1 / nsg
|
||||
remote_mac=f8:f2:1e:41:44:9c
|
||||
|
||||
# enp2s0f1 / esprimo
|
||||
remote_mac=f8:f2:1e:09:62:d1
|
||||
intf=enp2s0f1
|
||||
|
||||
set -x
|
||||
|
||||
for addr in $(seq 1 64); do
|
||||
hwaddr=$(printf "%0.2d" $addr)
|
||||
sudo ip neighbor add 10.0.0.$addr lladdr $remote_mac dev enp2s0f0
|
||||
sudo ip neighbor add 10.0.0.$addr lladdr $remote_mac dev ${intf}
|
||||
done
|
||||
|
|
|
@ -5,6 +5,9 @@ Description of the theory/software/hardware that you designed.
|
|||
|
||||
Maybe figures here? controller,
|
||||
|
||||
\section{\label{Design:General}General}
|
||||
\section{\label{Design:BMV2}BMV2}
|
||||
|
||||
\section{\label{Design:NetPFGA}NetFPGA}
|
||||
|
||||
Netpfga live,
|
||||
|
|
143
doc/Problem.tex
143
doc/Problem.tex
|
@ -1,92 +1,99 @@
|
|||
\chapter{\label{chapter2}Problem / latex samples}
|
||||
\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}.
|
||||
%% 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:essentials}Essentials}
|
||||
\section{\label{chapter2:linespeed}Line Speed NAT64}
|
||||
NAT64 in software is CPU bound. Hardware can potentially do this at
|
||||
line speed.
|
||||
|
||||
Well this section can be further subdivided into subsection. We present
|
||||
this in subsection \ref{chapter2:essentials:subsections}.
|
||||
\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
|
||||
|
||||
\subsection{\label{chapter2:essentials:subsections}Subsections}
|
||||
%% Well this section can be further subdivided into subsection. We present
|
||||
%% this in subsection \ref{chapter2:essentials:subsections}.
|
||||
|
||||
\paragraph{\label{introduction:essentials:subsections:paragraph}Paragraphs}
|
||||
can be specially referenced as well.
|
||||
%% \subsection{\label{chapter2:essentials:subsections}Subsections}
|
||||
|
||||
Of further importance is the understanding of the following environments:
|
||||
%% \paragraph{\label{introduction:essentials:subsections:paragraph}Paragraphs}
|
||||
%% can be specially referenced as well.
|
||||
|
||||
%*** 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}
|
||||
%% Of further importance is the understanding of the following environments:
|
||||
|
||||
%*** enumerated lists
|
||||
\begin{enumerate}
|
||||
\item The same applies to enumerated lists.
|
||||
\end{enumerate}
|
||||
%% %*** 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}
|
||||
%% %** 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.
|
||||
%% By figure \ref{file_name}, we show some funny figures.
|
||||
|
||||
|
||||
Table with caption and footnotes below the table.
|
||||
%% 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}
|
||||
%% \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:
|
||||
%% Examples of different text sizes:
|
||||
|
||||
\small Small \\
|
||||
\scriptsize Script size \\
|
||||
\normalsize Normal \\
|
||||
\large Large \\
|
||||
\huge Huge \\
|
||||
\normalsize
|
||||
%% \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}.
|
||||
%% \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}
|
||||
%% %** 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.
|
||||
%% \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.
|
||||
|
|
|
@ -4,3 +4,7 @@
|
|||
% 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}
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
\chapter{\label{timetable}Timetable (?)}
|
||||
\chapter{\label{timetable}Timetable}
|
||||
Here may come your thesis schedule (the original plan and ev. the actual outcome).
|
||||
-> can be from plan.org
|
||||
|
|
187
doc/appendix.tex
187
doc/appendix.tex
|
@ -298,7 +298,192 @@ Step 4: ping test should translate, but fail with wrong checksum:
|
|||
|
||||
|
||||
|
||||
\chapter{\label{appendixB}Appendix B?}
|
||||
\chapter{\label{appendixB}NetFPGA Logs}
|
||||
Majority of the log files are stored inside the source code directory
|
||||
stored at ``netpfga/logs''. It follows a selection of log files
|
||||
|
||||
\section{\label{chapterB:netpfga-flasherror}NetFPGA Flash Errors}
|
||||
Sometimes flashing bitfiles to the NetFPGA will fail. A random amount
|
||||
of reboots (1 to 3) and a random amount of reflashing will fix this
|
||||
problem.
|
||||
|
||||
Below can be found the log output from the flashing process.
|
||||
|
||||
\begin{verbatim}
|
||||
nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$ sudo bash -c ". $HOME/master-thesis/netpfga/bashinit && $(pwd -P)/program_switch.sh"
|
||||
++ which vivado
|
||||
+ xilinx_tool_path=/opt/Xilinx/Vivado/2018.2/bin/vivado
|
||||
+ bitimage=minip4.bit
|
||||
+ configWrites=config_writes.sh
|
||||
+ '[' -z minip4.bit ']'
|
||||
+ '[' -z config_writes.sh ']'
|
||||
+ '[' /opt/Xilinx/Vivado/2018.2/bin/vivado == '' ']'
|
||||
+ rmmod sume_riffa
|
||||
+ xsct /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/tools/run_xsct.tcl -tclargs minip4.bit
|
||||
rlwrap: warning: your $TERM is 'screen' but rlwrap couldn't find it in the terminfo database. Expect some problems.
|
||||
RUN loading image file.
|
||||
minip4.bit
|
||||
100% 19MB 1.7MB/s 00:11
|
||||
fpga configuration failed. DONE PIN is not HIGH
|
||||
invoked from within
|
||||
"::tcf::eval -progress ::xsdb::print_progress {::tcf::cache_enter tcfchan#0 {tcf_cache_eval {process_tcf_actions_cache_client ::tcfclient#0::arg}}}"
|
||||
(procedure "::tcf::cache_eval_with_progress" line 2)
|
||||
invoked from within
|
||||
"::tcf::cache_eval_with_progress [dict get $arg chan] [list process_tcf_actions_cache_client $argvar] $progress"
|
||||
(procedure "process_tcf_actions" line 1)
|
||||
invoked from within
|
||||
"process_tcf_actions $arg ::xsdb::print_progress"
|
||||
(procedure "fpga" line 430)
|
||||
invoked from within
|
||||
"fpga -f $bitimage"
|
||||
(file "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/tools/run_xsct.tcl" line 33)
|
||||
|
||||
+ bash /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/tools/pci_rescan_run.sh
|
||||
Check programming FPGA or Reboot machine !
|
||||
+ rmmod sume_riffa
|
||||
rmmod: ERROR: Module sume_riffa is not currently loaded
|
||||
+ modprobe sume_riffa
|
||||
+ ifconfig nf0 up
|
||||
nf0: ERROR while getting interface flags: No such device
|
||||
+ ifconfig nf1 up
|
||||
nf1: ERROR while getting interface flags: No such device
|
||||
+ ifconfig nf2 up
|
||||
nf2: ERROR while getting interface flags: No such device
|
||||
+ ifconfig nf3 up
|
||||
nf3: ERROR while getting interface flags: No such device
|
||||
+ bash config_writes.sh
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
\section{\label{chapterB:netpfga-flashok}NetFPGA Flash Success}
|
||||
A successful flashing process also emits a couple of errors, however
|
||||
the message ``fpga configuration failed. DONE PIN is not HIGH'' and
|
||||
its succeeding lines are missing, as seen below.
|
||||
|
||||
After that in all cases a reboot is required; the PCI rescan in no
|
||||
tested case showed the nf devices.
|
||||
|
||||
|
||||
\begin{verbatim}
|
||||
nico@nsg-System:~$ cd $NF_DESIGN_DIR/bitfiles/
|
||||
nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$ sudo bash -c ". $HOME/master-thesis/netpfga/bashinit && $(pwd -P)/program_switch.sh"
|
||||
++ which vivado
|
||||
+ xilinx_tool_path=/opt/Xilinx/Vivado/2018.2/bin/vivado
|
||||
+ bitimage=minip4.bit
|
||||
+ configWrites=config_writes.sh
|
||||
+ '[' -z minip4.bit ']'
|
||||
+ '[' -z config_writes.sh ']'
|
||||
+ '[' /opt/Xilinx/Vivado/2018.2/bin/vivado == '' ']'
|
||||
+ rmmod sume_riffa
|
||||
+ xsct /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/tools/run_xsct.tcl -tclargs minip4.bit
|
||||
rlwrap: warning: your $TERM is 'xterm-256color' but rlwrap couldn't find it in the terminfo database. Expect some problems.
|
||||
RUN loading image file.
|
||||
minip4.bit
|
||||
attempting to launch hw_server
|
||||
|
||||
****** Xilinx hw_server v2018.2
|
||||
**** Build date : Jun 14 2018-20:18:37
|
||||
** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.
|
||||
|
||||
INFO: hw_server application started
|
||||
INFO: Use Ctrl-C to exit hw_server application
|
||||
|
||||
INFO: To connect to this hw_server instance use url: TCP:127.0.0.1:3121
|
||||
|
||||
100% 19MB 1.7MB/s 00:11
|
||||
+ bash /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/tools/pci_rescan_run.sh
|
||||
Check programming FPGA or Reboot machine !
|
||||
+ rmmod sume_riffa
|
||||
rmmod: ERROR: Module sume_riffa is not currently loaded
|
||||
+ modprobe sume_riffa
|
||||
+ ifconfig nf0 up
|
||||
nf0: ERROR while getting interface flags: No such device
|
||||
+ ifconfig nf1 up
|
||||
nf1: ERROR while getting interface flags: No such device
|
||||
+ ifconfig nf2 up
|
||||
nf2: ERROR while getting interface flags: No such device
|
||||
+ ifconfig nf3 up
|
||||
nf3: ERROR while getting interface flags: No such device
|
||||
+ bash config_writes.sh
|
||||
nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$
|
||||
\end{verbatim}
|
||||
|
||||
\section{\label{chapterB:netpfga-kernelmodule}NetFPGA Kernel module}
|
||||
After a successful flash, loading the kernel module will enable nf
|
||||
devices to appear in the operating system.
|
||||
|
||||
\begin{verbatim}
|
||||
nico@nsg-System:~$ ip l
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
|
||||
link/ether 74:d0:2b:98:38:f6 brd ff:ff:ff:ff:ff:ff
|
||||
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
|
||||
link/ether f8:f2:1e:41:44:9c brd ff:ff:ff:ff:ff:ff
|
||||
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
|
||||
link/ether f8:f2:1e:41:44:9d brd ff:ff:ff:ff:ff:ff
|
||||
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
|
||||
link/none
|
||||
nico@nsg-System:~$ ~/master-thesis/bin/build-load-drivers.sh
|
||||
+ cd /home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0
|
||||
+ sudo modprobe -r sume_riffa
|
||||
+ make clean
|
||||
make -C /lib/modules/4.15.0-55-generic/build M=/home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0 clean
|
||||
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-55-generic'
|
||||
CLEAN /home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0/.tmp_versions
|
||||
CLEAN /home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0/Module.symvers
|
||||
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-55-generic'
|
||||
+ make all
|
||||
make -C /lib/modules/4.15.0-55-generic/build M=/home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0 modules
|
||||
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-55-generic'
|
||||
CC [M] /home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0/sume_riffa.o
|
||||
Building modules, stage 2.
|
||||
MODPOST 1 modules
|
||||
CC /home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0/sume_riffa.mod.o
|
||||
LD [M] /home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0/sume_riffa.ko
|
||||
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-55-generic'
|
||||
+ sudo make install
|
||||
make -C /lib/modules/4.15.0-55-generic/build M=/home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0 modules
|
||||
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-55-generic'
|
||||
Building modules, stage 2.
|
||||
MODPOST 1 modules
|
||||
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-55-generic'
|
||||
install -o root -g root -m 0755 -d /lib/modules/4.15.0-55-generic/extra/sume_riffa/
|
||||
install -o root -g root -m 0755 sume_riffa.ko /lib/modules/4.15.0-55-generic/extra/sume_riffa/
|
||||
depmod -a 4.15.0-55-generic
|
||||
+ sudo modprobe sume_riffa
|
||||
+ grep sume_riffa
|
||||
+ lsmod
|
||||
sume_riffa 28672 0
|
||||
nico@nsg-System:~$
|
||||
nico@nsg-System:~$ ip l
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
|
||||
link/ether 74:d0:2b:98:38:f6 brd ff:ff:ff:ff:ff:ff
|
||||
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
|
||||
link/ether f8:f2:1e:41:44:9c brd ff:ff:ff:ff:ff:ff
|
||||
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
|
||||
link/ether f8:f2:1e:41:44:9d brd ff:ff:ff:ff:ff:ff
|
||||
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
|
||||
link/none
|
||||
6: nf0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
|
||||
link/ether 02:53:55:4d:45:00 brd ff:ff:ff:ff:ff:ff
|
||||
7: nf1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
|
||||
link/ether 02:53:55:4d:45:01 brd ff:ff:ff:ff:ff:ff
|
||||
8: nf2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
|
||||
link/ether 02:53:55:4d:45:02 brd ff:ff:ff:ff:ff:ff
|
||||
9: nf3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
|
||||
link/ether 02:53:55:4d:45:03 brd ff:ff:ff:ff:ff:ff
|
||||
nico@nsg-System:~$
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
\section{\label{chapterB:netpfga-nftraffic}NetFPGA misses packets on nf*}
|
||||
While the nf devices appear in the operating system, packets emitted
|
||||
by the netpfga cannot be sniffed on the nf interfaces
|
||||
directly. Instead one has to sniff packets on a physical network card
|
||||
that is connected to the specific output port.
|
||||
|
||||
|
||||
%Entries for the list of abbrevations:
|
||||
|
|
223
doc/plan.org
223
doc/plan.org
|
@ -3,13 +3,16 @@
|
|||
| 2019-02-21 | Kick-Off | x |
|
||||
| | Finish all admin points | x |
|
||||
| | Know when/how to coordinate | x |
|
||||
| | | |
|
||||
| 2019-02-21 | Clarifications Ueli Maurer (Mentor) | x |
|
||||
| | Write mail / phone | x |
|
||||
| | | |
|
||||
| 2019-02-22 | Have all papers handed in | |
|
||||
| | | |
|
||||
| 2019-02-22 | Have rough definition of tasks | x |
|
||||
| | | |
|
||||
| 2019-02-23 | python2 / ipaddress is buggy | x |
|
||||
| 2019-02-23 | python2 / ipaddress is buggy / has unicode problems | x |
|
||||
| | | |
|
||||
| | p4utils is python2 only support | |
|
||||
| | bmpy_utils is not installable with pip | |
|
||||
| | python2 / latest ipaddress==1.0.22 still has the bug | |
|
||||
|
@ -21,7 +24,7 @@
|
|||
| 2019-02-24 | non reliable neighbor entries / flushing addresses puts into failed | |
|
||||
| | | |
|
||||
| | | |
|
||||
| 2019-02-28 | Meet Laurent #2 | |
|
||||
| 2019-02-28 | Meeting Laurent | |
|
||||
| | - Status | |
|
||||
| | * Setup base code | |
|
||||
| | * Parser for all protocols (udp,tcp,icmp,icmp6) | |
|
||||
|
@ -8264,6 +8267,7 @@ table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960
|
|||
|
||||
#+END_CENTER
|
||||
*** TODO 2019-08-02: ipv4 checksum after nat64 is empty!
|
||||
*** TODO 2019-08-03
|
||||
** The NetPFGA saga
|
||||
Problems encountered:
|
||||
- The logfile for a compile run is 10k+ lines
|
||||
|
@ -8355,6 +8359,221 @@ ls: cannot access '/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw
|
|||
|
||||
- not using raise() and hiding source of errors (_hexify)
|
||||
|
||||
- sometimes flashing fails:
|
||||
|
||||
#+BEGIN_CENTER
|
||||
nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$ sudo bash -c ". $HOME/master-thesis/netpfga/bashinit && $(pwd -P)/program_switch.sh"
|
||||
++ which vivado
|
||||
+ xilinx_tool_path=/opt/Xilinx/Vivado/2018.2/bin/vivado
|
||||
+ bitimage=minip4.bit
|
||||
+ configWrites=config_writes.sh
|
||||
+ '[' -z minip4.bit ']'
|
||||
+ '[' -z config_writes.sh ']'
|
||||
+ '[' /opt/Xilinx/Vivado/2018.2/bin/vivado == '' ']'
|
||||
+ rmmod sume_riffa
|
||||
+ xsct /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/tools/run_xsct.tcl -tclargs minip4.bit
|
||||
rlwrap: warning: your $TERM is 'screen' but rlwrap couldn't find it in the terminfo database. Expect some problems.
|
||||
RUN loading image file.
|
||||
minip4.bit
|
||||
100% 19MB 1.7MB/s 00:11
|
||||
fpga configuration failed. DONE PIN is not HIGH
|
||||
invoked from within
|
||||
"::tcf::eval -progress ::xsdb::print_progress {::tcf::cache_enter tcfchan#0 {tcf_cache_eval {process_tcf_actions_cache_client ::tcfclient#0::arg}}}"
|
||||
(procedure "::tcf::cache_eval_with_progress" line 2)
|
||||
invoked from within
|
||||
"::tcf::cache_eval_with_progress [dict get $arg chan] [list process_tcf_actions_cache_client $argvar] $progress"
|
||||
(procedure "process_tcf_actions" line 1)
|
||||
invoked from within
|
||||
"process_tcf_actions $arg ::xsdb::print_progress"
|
||||
(procedure "fpga" line 430)
|
||||
invoked from within
|
||||
"fpga -f $bitimage"
|
||||
(file "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/tools/run_xsct.tcl" line 33)
|
||||
|
||||
+ bash /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/tools/pci_rescan_run.sh
|
||||
Check programming FPGA or Reboot machine !
|
||||
+ rmmod sume_riffa
|
||||
rmmod: ERROR: Module sume_riffa is not currently loaded
|
||||
+ modprobe sume_riffa
|
||||
+ ifconfig nf0 up
|
||||
nf0: ERROR while getting interface flags: No such device
|
||||
+ ifconfig nf1 up
|
||||
nf1: ERROR while getting interface flags: No such device
|
||||
+ ifconfig nf2 up
|
||||
nf2: ERROR while getting interface flags: No such device
|
||||
+ ifconfig nf3 up
|
||||
nf3: ERROR while getting interface flags: No such device
|
||||
+ bash config_writes.sh
|
||||
nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/bitfiles$
|
||||
|
||||
#+END_CENTER
|
||||
*** TODO 2019-08-04: test nat64: ipv4 checksums
|
||||
**** DONE Setting table entries: ok
|
||||
CLOSED: [2019-08-04 Sun 08:55]
|
||||
#+BEGIN_CENTER
|
||||
nico@nsg-System:~$ ~/master-thesis/bin/switch-cli.sh
|
||||
loading libsume..
|
||||
loading libsume..
|
||||
loading libcam..
|
||||
The SimpleSumeSwitch interactive command line tool
|
||||
type help to see all commands
|
||||
>> table_cam_add_entry realmain_v4_networks_0 realmain.set_egress_port 167772202 => 16 0 0 0 0
|
||||
fields = [(u'hit', 1), (u'action_run', 3), (u'out_port', 8), (u'out_port', 8), (u'mac_addr', 48), (u'task', 16), (u'table_id', 16)]
|
||||
action_name = TopPipe.realmain.set_egress_port
|
||||
field_vals = [1, '16', '0', '0', '0', '0']
|
||||
CAM_Init_ValidateContext() - done
|
||||
WROTE 0x44020250 = 0xa00002a
|
||||
WROTE 0x44020280 = 0x0000
|
||||
WROTE 0x44020284 = 0x0000
|
||||
WROTE 0x44020288 = 0x10000000
|
||||
WROTE 0x4402028c = 0x0001
|
||||
READ 0x44020244 = 0x0001
|
||||
WROTE 0x44020240 = 0x0001
|
||||
READ 0x44020244 = 0x0001
|
||||
READ 0x44020244 = 0x0001
|
||||
success
|
||||
>>
|
||||
>> table_cam_add_entry realmain_v4_networks_0 realmain.set_egress_port 167772164 => 16 0 0 0 0
|
||||
fields = [(u'hit', 1), (u'action_run', 3), (u'out_port', 8), (u'out_port', 8), (u'mac_addr', 48), (u'task', 16), (u'table_id', 16)]
|
||||
action_name = TopPipe.realmain.set_egress_port
|
||||
field_vals = [1, '16', '0', '0', '0', '0']
|
||||
CAM_Init_ValidateContext() - done
|
||||
WROTE 0x44020250 = 0xa000004
|
||||
WROTE 0x44020280 = 0x0000
|
||||
WROTE 0x44020284 = 0x0000
|
||||
WROTE 0x44020288 = 0x10000000
|
||||
WROTE 0x4402028c = 0x0001
|
||||
READ 0x44020244 = 0x0001
|
||||
WROTE 0x44020240 = 0x0001
|
||||
READ 0x44020244 = 0x0001
|
||||
READ 0x44020244 = 0x0001
|
||||
success
|
||||
|
||||
>> table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477184434182 => 64 0 0 0 0
|
||||
fields = [(u'hit', 1), (u'action_run', 3), (u'out_port', 8), (u'out_port', 8), (u'mac_addr', 48), (u'task', 16), (u'table_id', 16)]
|
||||
action_name = TopPipe.realmain.set_egress_port
|
||||
field_vals = [1, '64', '0', '0', '0', '0']
|
||||
CAM_Init_ValidateContext() - done
|
||||
WROTE 0x44020350 = 0x0006
|
||||
WROTE 0x44020354 = 0x0000
|
||||
WROTE 0x44020358 = 0x420000
|
||||
WROTE 0x4402035c = 0x20010db8
|
||||
WROTE 0x44020380 = 0x0000
|
||||
WROTE 0x44020384 = 0x0000
|
||||
WROTE 0x44020388 = 0x40000000
|
||||
WROTE 0x4402038c = 0x0001
|
||||
READ 0x44020344 = 0x0001
|
||||
WROTE 0x44020340 = 0x0001
|
||||
READ 0x44020344 = 0x0001
|
||||
READ 0x44020344 = 0x0001
|
||||
success
|
||||
>> table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477184434242 => 64 0 0 0 0
|
||||
fields = [(u'hit', 1), (u'action_run', 3), (u'out_port', 8), (u'out_port', 8), (u'mac_addr', 48), (u'task', 16), (u'table_id', 16)]
|
||||
action_name = TopPipe.realmain.set_egress_port
|
||||
field_vals = [1, '64', '0', '0', '0', '0']
|
||||
CAM_Init_ValidateContext() - done
|
||||
WROTE 0x44020350 = 0x0042
|
||||
WROTE 0x44020354 = 0x0000
|
||||
WROTE 0x44020358 = 0x420000
|
||||
WROTE 0x4402035c = 0x20010db8
|
||||
WROTE 0x44020380 = 0x0000
|
||||
WROTE 0x44020384 = 0x0000
|
||||
WROTE 0x44020388 = 0x40000000
|
||||
WROTE 0x4402038c = 0x0001
|
||||
READ 0x44020344 = 0x0001
|
||||
WROTE 0x44020340 = 0x0001
|
||||
READ 0x44020344 = 0x0001
|
||||
READ 0x44020344 = 0x0001
|
||||
success
|
||||
>>
|
||||
>> table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477352206378 => 64 0 0 0 0
|
||||
fields = [(u'hit', 1), (u'action_run', 3), (u'out_port', 8), (u'out_port', 8), (u'mac_addr', 48), (u'task', 16), (u'table_id', 16)]
|
||||
action_name = TopPipe.realmain.set_egress_port
|
||||
field_vals = [1, '64', '0', '0', '0', '0']
|
||||
CAM_Init_ValidateContext() - done
|
||||
WROTE 0x44020350 = 0xa00002a
|
||||
WROTE 0x44020354 = 0x0000
|
||||
WROTE 0x44020358 = 0x420000
|
||||
WROTE 0x4402035c = 0x20010db8
|
||||
WROTE 0x44020380 = 0x0000
|
||||
WROTE 0x44020384 = 0x0000
|
||||
WROTE 0x44020388 = 0x40000000
|
||||
WROTE 0x4402038c = 0x0001
|
||||
READ 0x44020344 = 0x0001
|
||||
WROTE 0x44020340 = 0x0001
|
||||
READ 0x44020344 = 0x0001
|
||||
READ 0x44020344 = 0x0001
|
||||
success
|
||||
>>
|
||||
|
||||
>> table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960998550477352206378 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0
|
||||
fields = [(u'hit', 1), (u'action_run', 3), (u'v6_src', 128), (u'v4_dst', 32), (u'nat64_prefix', 128), (u'table_id', 16)]
|
||||
action_name = TopPipe.realmain.nat64_static
|
||||
field_vals = [2, '42540766411362381960998550477184434176', '167772160', '42540766411362381960998550477184434176', '0']
|
||||
CAM_Init_ValidateContext() - done
|
||||
WROTE 0x44020050 = 0xa00002a
|
||||
WROTE 0x44020054 = 0x0000
|
||||
WROTE 0x44020058 = 0x420000
|
||||
WROTE 0x4402005c = 0x20010db8
|
||||
WROTE 0x44020080 = 0x0000
|
||||
WROTE 0x44020084 = 0x0000
|
||||
WROTE 0x44020088 = 0x0000
|
||||
WROTE 0x4402008c = 0xdb80042
|
||||
WROTE 0x44020090 = 0x2001
|
||||
WROTE 0x44020094 = 0x0a00
|
||||
WROTE 0x44020098 = 0x0000
|
||||
WROTE 0x4402009c = 0x0000
|
||||
WROTE 0x440200a0 = 0xdb80042
|
||||
WROTE 0x440200a4 = 0x22001
|
||||
READ 0x44020044 = 0x0001
|
||||
WROTE 0x44020040 = 0x0001
|
||||
READ 0x44020044 = 0x0001
|
||||
READ 0x44020044 = 0x0001
|
||||
success
|
||||
>>
|
||||
|
||||
>> table_cam_add_entry realmain_nat46_0 realmain.nat46_static 167772226 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0
|
||||
fields = [(u'hit', 1), (u'action_run', 3), (u'v6_src', 128), (u'v4_dst', 32), (u'nat64_prefix', 128), (u'table_id', 16)]
|
||||
action_name = TopPipe.realmain.nat46_static
|
||||
field_vals = [2, '42540766411362381960998550477184434176', '167772160', '42540766411362381960998550477184434176', '0']
|
||||
CAM_Init_ValidateContext() - done
|
||||
WROTE 0x44020150 = 0xa000042
|
||||
WROTE 0x44020180 = 0x0000
|
||||
WROTE 0x44020184 = 0x0000
|
||||
WROTE 0x44020188 = 0x0000
|
||||
WROTE 0x4402018c = 0xdb80042
|
||||
WROTE 0x44020190 = 0x2001
|
||||
WROTE 0x44020194 = 0x0a00
|
||||
WROTE 0x44020198 = 0x0000
|
||||
WROTE 0x4402019c = 0x0000
|
||||
WROTE 0x440201a0 = 0xdb80042
|
||||
WROTE 0x440201a4 = 0x22001
|
||||
READ 0x44020144 = 0x0001
|
||||
WROTE 0x44020140 = 0x0001
|
||||
READ 0x44020144 = 0x0001
|
||||
READ 0x44020144 = 0x0001
|
||||
success
|
||||
>>
|
||||
|
||||
#+END_CENTER
|
||||
**** TODO Testing translation: v4->v6
|
||||
#+BEGIN_CENTER
|
||||
nico@ESPRIMO-P956:~/master-thesis/bin$ ./socat-listen-tcp-v6
|
||||
nico@ESPRIMO-P956:~/master-thesis$ ./bin/sniff-intf.sh enp2s0f0 netfpga-nat64
|
||||
nico@ESPRIMO-P956:~/master-thesis$ ./bin/sniff-intf.sh enp2s0f1 netfpga-nat64
|
||||
nico@ESPRIMO-P956:~/master-thesis/bin$ ./socat-connect-tcp-v4
|
||||
|
||||
#+END_CENTER
|
||||
|
||||
Result:
|
||||
#+BEGIN_CENTER
|
||||
0 packets dropped by kernel
|
||||
0 packets dropped by kernel
|
||||
|
||||
#+END_CENTER
|
||||
Problem: something removed the ipv4 address on the test host (again)
|
||||
|
||||
|
||||
** References / Follow up
|
||||
*** RFC 791 IPv4 https://tools.ietf.org/html/rfc791
|
||||
*** RFC 792 ICMP https://tools.ietf.org/html/rfc792
|
||||
|
|
Loading…
Reference in a new issue