++results
This commit is contained in:
parent
bf22fdcdb3
commit
2533ad653f
4 changed files with 27 additions and 169 deletions
|
@ -10,12 +10,9 @@ Sum up what you have done and recapitulate your key findings.
|
||||||
\section{\label{conclusion:softwarenat64}Software based NAT64}
|
\section{\label{conclusion:softwarenat64}Software based NAT64}
|
||||||
|
|
||||||
\section{\label{conclusion:general}General}
|
\section{\label{conclusion:general}General}
|
||||||
Many misleading
|
|
||||||
|
|
||||||
|
|
||||||
\section{\label{conclusion:bmv2}BMV2}
|
\section{\label{conclusion:bmv2}BMV2}
|
||||||
|
|
||||||
|
|
||||||
\section{\label{conclusion:P4}P4}
|
\section{\label{conclusion:P4}P4}
|
||||||
|
|
||||||
NDP parsing problem
|
NDP parsing problem
|
||||||
|
@ -175,173 +172,15 @@ idomatic problem: Security issue: not checking checksums before
|
||||||
% ----------------------------------------------------------------------
|
% ----------------------------------------------------------------------
|
||||||
\section{\label{conclusion:netpfga}NetFGPA - all HERE}
|
\section{\label{conclusion:netpfga}NetFGPA - all HERE}
|
||||||
|
|
||||||
many dependencies
|
|
||||||
lpm not supported!
|
|
||||||
Netpfga live,
|
|
||||||
|
|
||||||
Many workarounds
|
|
||||||
|
|
||||||
packet size / annotation
|
|
||||||
|
|
||||||
Needed to debug internal parsing errors
|
Needed to debug internal parsing errors
|
||||||
|
|
||||||
|
|
||||||
debugging generated tcl code to debug impl1 error
|
debugging generated tcl code to debug impl1 error
|
||||||
|
|
||||||
function syntax not supported, using defines instead
|
|
||||||
|
|
||||||
match type exact - table must be at least 64 in size
|
|
||||||
|
|
||||||
Damaged, enlarged packets
|
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
** The NetPFGA saga
|
|
||||||
Problems encountered:
|
|
||||||
- The logfile for a compile run is 10k+ lines
|
|
||||||
- Many logged errors can actually be ignored (?) like:
|
|
||||||
|
|
||||||
ERROR: [VRFC 10-1491] unexpected EOF [/home/nico/master-thesis/netpfga/minip4/nf_sume_sdnet_ip/SimpleSumeSwitch/S_CONTROLLERs.HDL/S_CONTROLLER_SimpleSumeSwitch.vp:37]
|
|
||||||
ERROR: [VRFC 10-426] cannot find port tuple_out_sume_metadata_DATA on this module [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:219]
|
|
||||||
ERROR: [VRFC 10-426] cannot find port tuple_out_sume_metadata_VALID on this module [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:218]
|
|
||||||
ERROR: [VRFC 10-426] cannot find port tuple_in_sume_metadata_DATA on this module [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:185]
|
|
||||||
ERROR: [VRFC 10-426] cannot find port tuple_in_sume_metadata_VALID on this module [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/wrapper/nf_sume_sdnet.v:184]
|
|
||||||
ERROR: [VRFC 10-2063] Module <S_RESETTER_line> not found while processing module instance <S_RESET_clk_line> [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/Simp
|
|
||||||
leSumeSwitch/SimpleSumeSwitch.v:332]
|
|
||||||
ERROR: [VRFC 10-2063] Module <S_RESETTER_lookup> not found while processing module instance <S_RESET_clk_lookup> [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/
|
|
||||||
SimpleSumeSwitch/SimpleSumeSwitch.v:343]
|
|
||||||
ERROR: [VRFC 10-2063] Module <S_RESETTER_control> not found while processing module instance <S_RESET_clk_control> [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_i
|
|
||||||
p/SimpleSumeSwitch/SimpleSumeSwitch.v:354]
|
|
||||||
ERROR: [VRFC 10-2063] Module <TopParser_t> not found while processing module instance <TopParser> [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/SimpleSumeSwitc
|
|
||||||
h/SimpleSumeSwitch.v:436]
|
|
||||||
ERROR: [VRFC 10-2063] Module <TopPipe_lvl_t> not found while processing module instance <TopPipe_lvl> [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/SimpleSumeS
|
|
||||||
witch/SimpleSumeSwitch.v:474]
|
|
||||||
ERROR: [VRFC 10-2063] Module <dummy_table_for_netpfga_t> not found while processing module instance <dummy_table_for_netpfga> [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_s
|
|
||||||
ume_sdnet_ip/SimpleSumeSwitch/SimpleSumeSwitch.v:502]
|
|
||||||
ERROR: [VRFC 10-2063] Module <TopPipe_lvl_0_t> not found while processing module instance <TopPipe_lvl_0> [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/SimpleS
|
|
||||||
umeSwitch/SimpleSumeSwitch.v:533]
|
|
||||||
ERROR: [VRFC 10-2063] Module <TopDeparser_t> not found while processing module instance <TopDeparser> [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/nf_sume_sdnet_ip/SimpleSumeS
|
|
||||||
witch/SimpleSumeSwitch.v:561]
|
|
||||||
|
|
||||||
# launch_simulation -simset sim_1 -mode behavioral
|
|
||||||
INFO: [Vivado 12-5698] Checking validity of IPs in the design for the 'XSim' simulator...
|
|
||||||
CRITICAL WARNING: [BD 41-1356] Address block </M04_AXI/Reg> is not mapped into </S00_AXI>. Please use Address Editor to either map or exclude it.
|
|
||||||
CRITICAL WARNING: [BD 41-1356] Address block </M05_AXI/Reg> is not mapped into </S00_AXI>. Please use Address Editor to either map or exclude it.
|
|
||||||
|
|
||||||
WARNING: [VRFC 10-756] identifier state is used before its declaration [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/axis_sim_record_ip0/hdl/axis_sim_record.v:93]
|
|
||||||
WARNING: [VRFC 10-756] identifier ready_count is used before its declaration [/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/axis_sim_record_ip0/hdl/axis_sim_record.v:94]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INFO: [#UNDEF] Sorry, too many errors..
|
|
||||||
ERROR: [XSIM 43-3322] Static elaboration of top level Verilog design unit(s) in library work failed.
|
|
||||||
INFO: [USF-XSim-69] 'elaborate' step finished in '1' seconds
|
|
||||||
INFO: [USF-XSim-99] Step results log file:'/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.sim/sim_1/behav/xsim/elaborate.log'
|
|
||||||
ERROR: [USF-XSim-62] 'elaborate' step failed with error(s). Please check the Tcl console output or '/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.sim/sim_1/behav/xsim/elaborate.log' file for more information.
|
|
||||||
|
|
||||||
nico@nsg-System:~/master-thesis$ find . -name elaborate.log
|
|
||||||
nico@nsg-System:~/master-thesis$ find ~ -name elaborate.log
|
|
||||||
nico@nsg-System:~/master-thesis$
|
|
||||||
|
|
||||||
- Scripts that "fail" (generate wrong data) do exit 0 ->
|
|
||||||
There is no easy / reliable error detection
|
|
||||||
- Writing tables resulted in ioctl errors
|
|
||||||
- Hardware test: unclear if first board was/is broken or not,
|
|
||||||
BUT: second board in different computer allows writing tables
|
|
||||||
- Many scripts depend on each other in later stages, without clear
|
|
||||||
dependencies
|
|
||||||
- There is basically no documentation for someone who "just wants to
|
|
||||||
compile from P4 to netpfga" or A LOT of documentation (if vivado,
|
|
||||||
vhld, sdnet documentation is counted)
|
|
||||||
- Very high complexity in toolchain, scripts that are generated
|
|
||||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default
|
|
||||||
+ make
|
|
||||||
rm -f config_writes.py*
|
|
||||||
rm -f *.pyc
|
|
||||||
|
|
||||||
nico@nsg-System:~$ cat /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata/config_writes.py
|
|
||||||
|
|
||||||
from NFTest import *
|
|
||||||
|
|
||||||
NUM_WRITES = 4
|
|
||||||
|
|
||||||
def config_tables():
|
|
||||||
nftest_regwrite(0x44020050, 0x22222208)
|
|
||||||
nftest_regwrite(0x44020054, 0x00000822)
|
|
||||||
nftest_regwrite(0x44020080, 0x00000201)
|
|
||||||
nftest_regwrite(0x44020040, 0x00000001)
|
|
||||||
nico@nsg-System:~$ cat /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata/config_writes.sh
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
${SUME_SDNET}/sw/sume/rwaxi -a 0x44020050 -w 0x22222208
|
|
||||||
${SUME_SDNET}/sw/sume/rwaxi -a 0x44020054 -w 0x00000822
|
|
||||||
${SUME_SDNET}/sw/sume/rwaxi -a 0x44020080 -w 0x00000201
|
|
||||||
${SUME_SDNET}/sw/sume/rwaxi -a 0x44020040 -w 0x00000001
|
|
||||||
nico@nsg-System:~$
|
|
||||||
|
|
||||||
|
|
||||||
- Misleading errors like
|
|
||||||
ERROR: [USF-XSim-62] 'elaborate' step failed with error(s). Please check the Tcl console output or '/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.sim/sim_1/behav/xsim/elaborate.log' file for more information.
|
|
||||||
nico@nsg-System:~/master-thesis/netpfga$ ls /home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.sim/sim_1/behav/xsim/elaborate.log
|
|
||||||
ls: cannot access '/home/nico/master-thesis/netpfga/minip4/simple_sume_switch/hw/project/simple_sume_switch.sim/sim_1/behav/xsim/elaborate.log': No such file or directory
|
|
||||||
|
|
||||||
- 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
|
|
||||||
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
\section{\label{conclusion:realworld}Real world applications}
|
\section{\label{conclusion:realworld}Real world applications}
|
||||||
Can be deployed using the netpfga. Or Barefoot or Arista.
|
Can be deployed using the netpfga. Or Barefoot or Arista.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\section{\label{conclusion:outlook}Outlook}
|
\section{\label{conclusion:outlook}Outlook}
|
||||||
|
|
||||||
%** Outlook.tex: What needs to be done further, what is planed
|
%** Outlook.tex: What needs to be done further, what is planed
|
||||||
|
|
|
@ -265,6 +265,10 @@ and multiple times reflashing the bitstream to the NetFPGA usually
|
||||||
restored the intended behaviour. However due to this ``crashes'', it
|
restored the intended behaviour. However due to this ``crashes'', it
|
||||||
was impossible to complete a full benchmark run that would last for
|
was impossible to complete a full benchmark run that would last for
|
||||||
more than one hour.
|
more than one hour.
|
||||||
|
|
||||||
|
Sometimes it was also required to reboot the host containing the
|
||||||
|
NetFPGA card 3 times to enable successful flashing.\footnote{Typical
|
||||||
|
output of the flashing process would be: ``fpga configuration failed. DONE PIN is not HIGH''}
|
||||||
% ----------------------------------------------------------------------
|
% ----------------------------------------------------------------------
|
||||||
\subsection{\label{results:netpfga:performance}Performance}
|
\subsection{\label{results:netpfga:performance}Performance}
|
||||||
As expected, the NetFGPA card performed at near line speed and offers
|
As expected, the NetFGPA card performed at near line speed and offers
|
||||||
|
@ -326,10 +330,23 @@ error.\footnote{F.i. ``CRITICAL WARNING: [BD 41-737] Cannot set the
|
||||||
parameter TRANSLATION\_MODE on /axi\_interconnect\_0. It is
|
parameter TRANSLATION\_MODE on /axi\_interconnect\_0. It is
|
||||||
read-only.'' is a non critical warning.}
|
read-only.'' is a non critical warning.}
|
||||||
Also contradicting
|
Also contradicting
|
||||||
output is generated\footnote{While using version 2018.2, the following
|
output is generated.\footnote{While using version 2018.2, the following
|
||||||
message was printed: ``WARNING: command 'get\_user\_parameter' will be removed in the 2015.3
|
message was printed: ``WARNING: command 'get\_user\_parameter' will be removed in the 2015.3
|
||||||
release, use 'get\_user\_parameters' instead''.}
|
release, use 'get\_user\_parameters' instead''.}
|
||||||
|
|
||||||
|
Programs or scripts that are called during the compile process do not
|
||||||
|
necessarily exit non zero if they encountered a critical error. Thus
|
||||||
|
finding the source of an error can be difficult due to the compile
|
||||||
|
process continuing after critical errors occured. Not only programs
|
||||||
|
that have critical errors exit ``successfully'', but also python
|
||||||
|
scripts that encounter critical paths don't abort with raise(), but
|
||||||
|
print an error message to stdout and don't abort with an error.
|
||||||
|
|
||||||
|
The most often encountered critical compile error is
|
||||||
|
``Run 'impl\_1' has not been launched. Unable to open''. This error
|
||||||
|
indicates that something in the previous compile steps failed and can
|
||||||
|
refer to incorrectly generated testdata to unsupported LPM tables.
|
||||||
|
|
||||||
The NetFPGA kernel module provides access to virtual Linux
|
The NetFPGA kernel module provides access to virtual Linux
|
||||||
devices (nf0...nf3). However tcpdump does not see any packets that are
|
devices (nf0...nf3). However tcpdump does not see any packets that are
|
||||||
emitted from the switch. The only possibility to capture packets
|
emitted from the switch. The only possibility to capture packets
|
||||||
|
@ -344,6 +361,15 @@ NetPFGA mailing list, the NetFPGA only supports 1500 byte frames at
|
||||||
the moment and additional work is required to implement support for
|
the moment and additional work is required to implement support for
|
||||||
bigger frames.
|
bigger frames.
|
||||||
|
|
||||||
|
Our P4 source code required contains Xilinx
|
||||||
|
annotations\footnote{F.i. ``@Xilinx\_MaxPacketRegion(1024)''} that define
|
||||||
|
the maximum packet size in bits. We observed two different errors on
|
||||||
|
the output packet, if the incoming packets exceeds the specified size:
|
||||||
|
\begin{itemize}
|
||||||
|
\item The output packet is longer then the original packet.
|
||||||
|
\item The output packet is corrupted.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
While most of the P4 language is supported on the netpfga, some key
|
While most of the P4 language is supported on the netpfga, some key
|
||||||
techniques are missing or not supported.
|
techniques are missing or not supported.
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
BIN
doc/Thesis.pdf
BIN
doc/Thesis.pdf
Binary file not shown.
|
@ -1642,13 +1642,6 @@ cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-swit
|
||||||
[15:31] rainbow:P4-NetFPGA%
|
[15:31] rainbow:P4-NetFPGA%
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
Most often occured error:
|
|
||||||
\begin{verbatim}
|
|
||||||
# open_run impl_1
|
|
||||||
ERROR: [Common 17-69] Command failed: Run 'impl_1' has not been launched. Unable to open
|
|
||||||
Vivado%
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
ERROR: [BD 41-171] The modes of the interface pins 'cfg_interrupt'(Slave) and 'pcie3_cfg_interrupt'(Slave) are incompatible. They cannot be connected.
|
ERROR: [BD 41-171] The modes of the interface pins 'cfg_interrupt'(Slave) and 'pcie3_cfg_interrupt'(Slave) are incompatible. They cannot be connected.
|
||||||
ERROR: [BD 5-3] Error: running connect_bd_intf_net.
|
ERROR: [BD 5-3] Error: running connect_bd_intf_net.
|
||||||
|
|
Loading…
Reference in a new issue