From ec1ee619db1e24b8e08d4f1df1cdc2f6e99a53f0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 13 Aug 2019 12:56:15 +0200 Subject: [PATCH] Transferred all notes from plan.org into Thesis.tex --- doc/Background.tex | 79 +++++- doc/Conclusion.tex | 373 ++++++++++++++++++++++++++ doc/Design.tex | 36 ++- doc/Results.tex | 95 +++++++ doc/Thesis.pdf | Bin 577906 -> 611699 bytes doc/appendix.tex | 655 +++++++++++++++++++++++++++++++++++++++++++++ doc/plan.org | 192 +++++++------ doc/refs/refs.bib | 6 + 8 files changed, 1351 insertions(+), 85 deletions(-) diff --git a/doc/Background.tex b/doc/Background.tex index 6b0eb22..9c8a2b4 100644 --- a/doc/Background.tex +++ b/doc/Background.tex @@ -105,11 +105,20 @@ the two protocols for this thesis are: % ---------------------------------------------------------------------- \section{\label{background:arpndp}ARP and NDP, ICMP ICMP6- FIXME} Required for finding host. -ARP who has +ARP \cite{rfc826} who has NDP similar -- add traces here being able to answer to error messages MTU / pmtu + +Also add: IPv6 is closed / no arp +ICMP6 \cite{rfc4443} +%\LaTeX{} + +DNS64 \cite{rfc6174} + +IPv6 only network experiences \cite{rfc6586} +Solicited-node multicast address\cite{wikipedia:_solic}. % ---------------------------------------------------------------------- \section{\label{background:transition}IPv6 Translation Mechanisms} While in this thesis the focus was in NAT64 as a translation mechanism, @@ -175,6 +184,74 @@ While protocol dependent translation has the highest amount of information to choose from for translation, complex parsers or even cryptographic methods are required for it. That reduces the opportunities of protocol dependent translation +% ---------------------------------------------------------------------- +\subsection{\label{background:transition:prefixnat}Prefix based NAT - + FIXME} +Explain how it works in general +**** RFC6052 + - Defining well known prefix 64:ff9b::/96 + - Defining embedding depending on prefix: /32../104 in 8 bit + steps + - Longer than /96: suffix support + + + - v4 to v6 / vice versa + +\begin{verbatim} + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |PL| 0-------------32--40--48--56--64--72--80--88--96--104---------| + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |32| prefix |v4(32) | u | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |40| prefix |v4(24) | u |(8)| suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |48| prefix |v4(16) | u | (16) | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |56| prefix |(8)| u | v4(24) | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |64| prefix | u | v4(32) | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |96| prefix | v4(32) | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + + +***** DONE Case IPv6 initiator + CLOSED: [2019-08-13 Tue 10:59] + - Mapping whole IPv4 Internet in /96 prefix + - Session information for mapping reply + - Timeout handling in controller +****** TODO IPv6 udp -> IPv4 + - Got 4-5 tuple ([proto], src ip, src port, dst ip, dst port) + - Does not / never signal end + - Needs timeout for cleaning up +****** TODO IPv6 tcp -> IPv4 + - Similar to udp + - react on FIN/RST (?) -- could be an addition +****** TODO IPv6 icmp6 -> IPv4 + - usual protocol specific changes + - Session?? + - src ip, dst ip, code ? +***** TODO Case IPv4 initiator + - Needs upper level protol + + +****** Controller Logic + - controller selects "outgoing" IPv4 address range => base for sessions + - IPv4 addresses can be "random" (in our test case), but need + to be unique + - switch does not need to know about the "range", only about + sessions + - on session create, controller selects "random" ip (ring?) + - on session create, controller selects "random port" (next in range?) + - on session create controller adds choice into 2 tables: + incoming, outgoing + + +>>> ipaddress.IPv6Network("2001:db8:100::/96")[int(ipaddress.IPv4Address("10.0.0.1"))] +IPv6Address('2001:db8:100::a00:1') +\end{verbatim} +from RFC6052 + % ---------------------------------------------------------------------- \section{\label{background:checksums}Protocol Checksums} One challenge for translating IPv6-IPv4 are checksums of higher level diff --git a/doc/Conclusion.tex b/doc/Conclusion.tex index b47d550..abbeeab 100644 --- a/doc/Conclusion.tex +++ b/doc/Conclusion.tex @@ -68,9 +68,114 @@ or missing features (\cite{schottelius:github745}, Hitting expression bug +retrieving information from tables +\begin{verbatim} +Key and mask for matching destination is in table. We need this + information in the action. However this information is not exposed, so + we need to specify another parameter with the same information as in + the key(s). + + Log from slack: (2019-03-14) + + nico [1:55 PM] + If I use LPM for matching, can I easily get the network address from P4 or do I have to use a bitmask myself? In the latter case it is not exactly clear how to get the mask from the table + + Nate Foster [1:58 PM] + You want to retrieve the address in the packet? In a table? + And do you want to do the retrieving from the data plane or the control plane? (edited) + + nico [2:00 PM] + If I have a match in a table that matches on LPM, it can be any IP address in a network + For calculating the NAT64/NAT46 translation, I will need the base address, i.e. network address to do subtractions/additions + So it is fully data plane, what I would like to do + I'll commit sample code to show the use case more clearly + https://gitlab.ethz.ch/nicosc/master-thesis/blob/master/p4src/static-mapping.p4#L73 + GitLab + p4src/static-mapping.p4 · master · nicosc / master-thesis + gitlab.ethz.ch + So the action nat64_static() is used in the table v6_networks. + In v6_networks I use a match on `hdr.ipv6.dst_addr: lpm;` + What I would like to be able is to get the network address ; I can do that manually, if I have the mask + I can also re-inject this parameter by another action argument, but I'd assume that I can somewhere read this out from the table / match + + Nate Foster [2:15 PM] + To make sure I understand, in the data plane, you want to retrieve the address in the lpm pattern? (edited) + + nico [2:16 PM] + I want to retrieve the key + + Nate Foster [2:16 PM] + Wait. The value `hdr.ipv6.dst_addr` is the thing used in the match. + So you have that. + What you don’t have is the IPv6 address and mask put into the table by the control plane. + I assume you want the latter, right? + + nico [2:17 PM] + For example, if my matching key is 2001:db8::/32 and the real address is 2001:db8::f00, then I would like to retrieve 2001:db8:: and 32 from the table + exactly :slightly_smiling_face: + I can "fix" this by adding another argument, but it feels somewhat wrong to do that + Because the table already knows this information + + Nate Foster [2:26 PM] + I can’t think of a way other than the action parameter hack. + + nico [2:26 PM] + Oh, ok + Is it because the information is "lost in hardware"? + + Nate Foster [2:31 PM] + No you’re right that most implementations have the value in memory. And one can imagine a different table API that allowed one to retrieve it in the data plane. + But unless I am missing something obvious, P4 hides it… + +\end{verbatim} + +no meta information +\begin{verbatim} +Is there any meta information for "from which table was the action +called" available? My use case is having a debug action that sends +packets to the controller and I use it as a default_action in various +tables; however know I don't know anymore from which table the action +was called. Is there any kind of meta information which table called +me available? + +I could work around this by using if(! .. .hit) { my_action(table_id) +}, but it would not work with using default_action = ... + +\end{verbatim} + +type definitions separate + Code sharing (controller, switch) +\begin{verbatim} +*** DONE Synchronisation with the controller + - Double data type definition -> might differ + - TYPE_CPU for ethernet + - Port ingress offset (9 vs. 16 bit) + +\end{verbatim} + + +No switch in actions, No conditional execution in actions + + +P4os - reusable code + +\begin{verbatim} +Not addressed so far: how to create re-usable code fragments that can +be plugged in easily. There could be a hypothetical "P4OS" that +manages code fragments. This might include, but not limited to +downloading (signed?) source code, managing dependencies similar to +Linux package management, handling updates, etc. + +\end{verbatim} + +idomatic problem: Security issue: not checking checksums before + +% ---------------------------------------------------------------------- \section{\label{conclusion:netpfga}NetFGPA - all HERE} personal note here +tested various kernels for table debugging + MTU limitations: 1500 according to a private mail from Salvator Galea cambridge / uk @@ -132,11 +237,271 @@ hours for finding right output ports packet size / annotation +Needed to debug internal parsing errors +3x rebooting to get card working with bitstream + +Variable renaming breaks the compile process + +\begin{verbatim} +It seems I was really mistaken for the last weeks +If I am not totally mistaken, the following is happening with the netpfga: +I was testing sending and receiving packets on the same computer; so I sent a packet on nfX and expected an answer on nf0, which is how I wanted to verify that the card works +So I ran tcpdump on nf0, send a packet with ping6 and scapy on nf{0,1,2,3} (edited) +I have never seen the switch emitting ANY packet back with tcpdump +Now with the card connected to another host, sending neighbor solicitation, I see duplicated packets on the other host - so it seems that it might have worked all the time, just that tcpdump on nfX on the host which contains the card does not show the packets + +\end{verbatim} + +debugging generated tcl code to debug impl1 error + +Cable problems: +\begin{verbatim} +[ 488.265148] ixgbe 0000:02:00.0: failed to initialize because an unsupported SFP+ module type was detected. +[ 488.265157] ixgbe 0000:02:00.0: Reload the driver after installing a supported module. +[ 488.265605] ixgbe 0000:02:00.0: removed PHC on enp2s0f0 + +\end{verbatim} + +function syntax not supported, using defines instead + +4-6 MB logfiles for a compile process. + +confusing messages +\begin{verbatim} +WARNING: command 'get_user_parameter' will be removed in the 2015.3 +release, use 'get_user_parameters' instead + +\end{verbatim} + +critical non critical errors +\begin{verbatim} + + +CRITICAL WARNING: [BD 41-737] Cannot set the parameter TRANSLATION_MODE on /axi_interconnect_0. It is read-only. +\end{verbatim} + +\begin{verbatim} + - step9 (sume simulation, the longest step) in the process calls + "config_writes.py" + - config_writes.py fails with a syntax error, as it is incomplete + python code + - config_writes.py and config_writes.sh are generated by + gen_config_writes.py + - gen_config_writes.py reads config_writes.txt + - config_writes.txt is created in step 5 (sdnet simulation) + - step 5 consists of running xsc, xelab and xsim + - xsim (re-)generates config_writes.txt according to a watch ls -l + on the file: ${XILINX_VIVADO}/bin/xsim --runall + SimpleSumeSwitch_tb#work.glbl + - it seems (by grep -r) that ./Testbench/SimpleSumeSwitch_tb.sv is + responsible for writing config_writes.txt + - It seems that the "task" "SV_write_control" inside that file is + responsible for writing the content, which in turn uses + axi4_lite_master_write_request_control + + +\end{verbatim} + +\begin{verbatim} + - Cannot easily run P4 on notebook - changes to the system very + invasive + - Varous compiler bugs/limitations + - Very very deep rabbithole problems + - Hanging/sleeping issue -- unclear whether it does something or + not + - Open impl_1 error with unclear reason + - logfiles referenced that don't exist +Run output will be captured here: /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/synth/runme.log +nico@nsg-System:~/master-thesis/netpfga/log$ ls -alh /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/synth/runme.log +ls: cannot access '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/synth/runme.log': No such file or directory + - even "short" compile runs taking 30m+ + +control_sub_m02_data_fifo_0_synth_1: /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/control_sub_m02_data_fifo_0_synth_1/runme.log +nico@nsg-System:~/master-thesis/netpfga/minip4/testdata$ less /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/control_sub_m02_data_fifo_0_synth_1/runme.log +/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.runs/control_sub_m02_data_fifo_0_synth_1/runme.log: No such file or directory + + - Wrong warnings: using 2018.2, getting warnings about things + removed in 2015.3 +WARNING: command 'get_user_parameter' will be removed in the 2015.3 +release, use 'get_user_parameters' instead + + - A script/makefile generates a python script that generates a shell + script and later then a python script. If there is a mistake in + generating the first python script (syntax ok, but content is + not correct) then a much later stage of the compile process will + fail due to a syntax error in the third generated + script. However that syntax error is not fatal in the build + process and thus can only be seen with careful analysis of the + logfile, which is around 700 KiB or 10k lines per compile + process and contains 328 lines matching "error" and + "warning". + + Most of the error and warning messages seem to be non-critical + (even if saying they are). Then there are a variety of INFO + messages that actually constitute ERROR messages, but are not + flagged as such nor do they cause the build process to abort. + +\end{verbatim} + +LPM tables don't work + +match type exact - table must be at least 64 in size + + +multiple reboots sometimes required for flashing + + +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 not found while processing module instance [/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 not found while processing module instance [/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 not found while processing module instance [/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 not found while processing module instance [/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 not found while processing module instance [/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 not found while processing module instance [/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 not found while processing module instance [/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 not found while processing module instance [/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 is not mapped into . Please use Address Editor to either map or exclude it. +CRITICAL WARNING: [BD 41-1356] Address block is not mapped into . 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} 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 @@ -159,6 +524,14 @@ support these schemes to be compatible to other implementations. No fragmentation No address / mac learning +**** No DNS64 + has already been solved in a different domain - could even do + transparent / in network modification + **** Incomplete NDP + Very limited option support + + No resolution of hardware addresses + \section{\label{conclusion:closing}Closing words (NAME?)} While the port to NetPFGA was significantly more effort then expected, the learnings of the different layers were very much appreciated / liked diff --git a/doc/Design.tex b/doc/Design.tex index e2eac05..cee6b2c 100644 --- a/doc/Design.tex +++ b/doc/Design.tex @@ -5,7 +5,7 @@ Description of the theory/software/hardware that you designed. In this chapter we describe the architecture of our solution. % ---------------------------------------------------------------------- -\section{\label{Design:General}General} +\section{\label{Design:General}General - FIXME} The high level design can be seen in figure \ref{fig:switchdesign}: a P4 capable switch is running our code to provide NAT64 functionality. The P4 switch cannot manage its tables on it own and @@ -26,6 +26,40 @@ translation method or as an in network NAT64 translation (compare figures \ref{fig:v6v4innetwork} and \ref{fig:v6v4standard}). The controller is implemented in python, the NAT64 solution is implemented in P4. + +Describe network layouts +\begin{verbatim} + - IPv6 subnet 2001:db8::/32 + - IPv6 hosts are in 2001:db8:6::/64 + - IPv6 default router (::/0) is 2001:db8:6::42/64 + - IPv4 mapped Internet "NAT64 prefix" 2001:db8:4444::/96 (should + go into a table) + - IPv4 hosts are in 10.0.4.0/24 + - IPv6 in IPv4 mapped hosts are in 10.0.6.0/24 + - IPv4 default router = 10.0.0.42 + +\end{verbatim} + +Describe testing methods +\begin{verbatim} + def test_v4_udp_to_v6(self): + print('mx h3 "echo V4-OK | socat - UDP:10.1.1.1:2342"') + print('mx h1 "echo V6-OK | socat - UDP-LISTEN:2342"') + + return + +p4@ubuntu:~$ mx h1 "echo V6-OK | socat - UDP6-LISTEN:2342" +p4@ubuntu:~/master-thesis/bin$ mx h3 "echo V4-OK | socat - UDP:10.1.1.1:2342" + +while true; do mx h3 "echo V4-OK | socat - TCP-LISTEN:2343"; sleep 2; +done + +while true; do mx h1 "echo V6-OK | socat - +TCP6:[2001:db8:1::a00:1]:2343"; sleep 2; done + + mx h1 "echo V6-OK | socat - TCP6:[2001:db8:1::a00:1]:2343" + +\end{verbatim} % ---------------------------------------------------------------------- \section{\label{Design:BMV2}BMV2} Development of the thesis took place on a software emulated switch diff --git a/doc/Results.tex b/doc/Results.tex index 624261b..5646366 100644 --- a/doc/Results.tex +++ b/doc/Results.tex @@ -8,6 +8,7 @@ Parser for all protocols (udp,tcp,icmp,icmp6) BMV2: more feature rich, but software only solution NetFPGA: capabale of line speed Nat64, focused port on nat64 +Both support EAMT as defined by RFC7757 \cite{rfc7757}. \section{\label{Results:BMV2}BMV2} @@ -36,6 +37,87 @@ Stateful : no automatic removal \section{\label{Results:NetPFGA}NetFPGA} + +Trace files +\begin{verbatim} + create mode 100644 pcap/tcp-udp-delta-2019-07-17-1555-h1.pcap + create mode 100644 pcap/tcp-udp-delta-2019-07-17-1555-h3.pcap + create mode 100644 pcap/tcp-udp-delta-2019-07-17-1557-h1.pcap + create mode 100644 pcap/tcp-udp-delta-2019-07-17-1558-h3.pcap + + +\end{verbatim} + +\begin{verbatim} +*** DONE 2019-07-21: Proof of v6->v4 working delta based + CLOSED: [2019-07-21 Sun 12:30] +#+BEGIN_CENTER + pcap/tcp-udp-delta-from-v6-2019-07-21-0853-h1.pcap | Bin 0 -> 4252 bytes + pcap/tcp-udp-delta-from-v6-2019-07-21-0853-h3.pcap | Bin 0 -> 2544 bytes +#+END_CENTER + +\end{verbatim} + +\begin{verbatim} +**** DONE Testing v4->v6 tcp: ok (version 10.0) + CLOSED: [2019-08-04 Sun 09:15] +#+BEGIN_CENTER +nico@ESPRIMO-P956:~/master-thesis/bin$ ./socat-connect-tcp-v4 ++ echo from-v4-ok ++ socat - TCP:10.0.0.66:2345 +TCPv6-ok +nico@ESPRIMO-P956:~/master-thesis/bin$ ./socat-listen-tcp-v6 +from-v4-ok + +#+END_CENTER + +trace: +netfpga-nat64-2019-08-04-0907-enp2s0f0.pcap +netfpga-nat64-2019-08-04-0907-enp2s0f1.pcap + +**** DONE Testing v4->v6 udp: ok (version 10.1) +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 + +\end{verbatim} + +\begin{verbatim} +*** DONE 2019-08-04: version 10.1/10.2: new maxpacketregion: v4->v6 works + CLOSED: [2019-08-04 Sun 19:42] +#+BEGIN_CENTER +nico@ESPRIMO-P956:~/master-thesis/bin$ ./init_ipv4_esprimo.sh +nico@ESPRIMO-P956:~/master-thesis/bin$ ./set_ipv4_neighbor.sh + +#+END_CENTER + +Test 20 first: + +- Does't work -> missed to add table entries +- Does work after setting table entries +- 300 works +- 1450 works +- 1500 does not work + +Proof: + + create mode 100644 pcap/netfpga-10.2-maxpacket-2019-08-04-1931-enp2s0f0.pcap + create mode 100644 pcap/netfpga-10.2-maxpacket-2019-08-04-1931-enp2s0f1.pcap + +\end{verbatim} + +\begin{verbatim} +*** DONE 2019-08-04: test v6 -> v4: works for 1420 + CLOSED: [2019-08-04 Sun 20:30] + +Proof: +#+BEGIN_CENTER + create mode 100644 pcap/netfpga-10.2-fromv6tov4-2019-08-04-1943-enp2s0f0.pcap + create mode 100644 pcap/netfpga-10.2-fromv6tov4-2019-08-04-1943-enp2s0f1.pcap + + +\end{verbatim} + General result: limited NAT64 is working, however No Payload @@ -49,6 +131,19 @@ General result: limited NAT64 is working, however \section{\label{results:softwarenat64}NAT64 in Software} Tayga, Jool +tayga: Single threaded +fork: + +\begin{verbatim} +| What? | Description | State in P4 | References | +|---------------------+------------------------------------------+-------------------+---------------------------------------------------------------------------------| + +| Jool EAMT | Mapping with tables, multiple entries | Supported | https://www.jool.mx/en/eamt.html, https://www.jool.mx/en/run-eam.html, RFC 7757 | +| Jool SIIT | Mapping IPv6 to range of IPv4, one entry | Supported by EAMT | | + +\end{verbatim} + + \section{\label{results:features}Feature comparison} speed - sessions - eamt diff --git a/doc/Thesis.pdf b/doc/Thesis.pdf index a5f6610aa5ce1ab65a4b758244cbd1571114a5f6..c173f72102782b7e20d04576a157d0c9e6b5a7b8 100644 GIT binary patch delta 126371 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 W3=#=CFNXjJFBpZERz^)0<$nRLCk{#g delta 93081 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 +# create_ip -name nf_sume_sdnet -vendor NetFPGA -library NetFPGA -module_name nf_sume_sdnet_ip +ERROR: [Coretcl 2-1134] No IP matching VLNV 'NetFPGA:NetFPGA:nf_sume_sdnet:*' was found. Please check your repository configuration. +INFO: [Common 17-206] Exiting Vivado at Sat May 25 11:52:01 2019... + +\end{verbatim} +\begin{verbatim} +# set_property compxlib.xsim_compiled_library_dir {} [current_project] [0/1819] +# set_property top_lib xil_defaultlib [get_filesets sim_1] +# update_compile_order -fileset sim_1 +update_compile_order: Time (s): cpu = 00:00:17 ; elapsed = 00:00:09 . Memory (MB): peak = 2003.578 ; gain = 8.004 ; free physical = 27661 ; free virtual = 33990 +loading libsume.. +Traceback (most recent call last): + File "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default/run.py", line 42, in + import config_writes + File "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default/config_writes.py", line 7 + + ^ +IndentationError: expected an indented block + while executing +"exec python $::env(NF_DESIGN_DIR)/test/${test_name}/run.py" + invoked from within +"set output [exec python $::env(NF_DESIGN_DIR)/test/${test_name}/run.py]" + (file "/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/tcl/simple_sume_switch_sim.tcl" line 177) +INFO: [Common 17-206] Exiting Vivado at Sat May 25 13:45:13 2019... +make: *** [Makefile:121: sim] Error 1 +\end{verbatim} + +\begin{verbatim} +[SW] CAM_EnableDevice() - done +[2420698] INFO: finished packet stimulus file +[2735572] ERROR: tuple mismatch for packet 1 +expected < tuple_out_digest_data, tuple_out_sume_metadata > = < 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000001010000 > +actual < tuple_out_digest_data, tuple_out_sume_metadata > = < 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000010000 > +$finish called at time : 2735572 ps : File +"/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/nf_sume_sdnet_ip/SimpleSumeSwitch/Testbench/Check.v" +Line 120 +\end{verbatim} + +\begin{verbatim} +[14:54] rainbow:bitfiles% cd $NF_DESIGN_DIR/bitfiles/ && sudo bash ./program_switch.sh +./program_switch.sh: line 34: /tools/program_switch.sh: No such file or directory +[14:56] rainbow:bitfiles% ls +config_writes.sh minip4.bit program_switch.sh README +[14:56] rainbow:bitfiles% +\end{verbatim} + +\begin{verbatim} +root@rainbow:~/master-thesis/netpfga/minip4/sw/hw_test_tool# python switch_calc_tester.py +SIOCSIFADDR: No such device +eth1: ERROR while getting interface flags: No such device +SIOCSIFNETMASK: No such device +tcpdump: eth1: No such device exists +(SIOCGIFHWADDR: No such device) +The HW testing tool for the switch_calc design + type help to see all commands +testing> +\end{verbatim} + +\begin{verbatim} +>> table_cam_add_entry lookup_table send_to_port1 ff:ff:ff:ff:ff:ff => +CAM_Init_ValidateContext() - done +WROTE 0x44020050 = 0xffffffff +WROTE 0x44020054 = 0xffff +WROTE 0x44020080 = 0x0003 +python: ioctl: Unknown error 512 +[20:27] rainbow:CLI% + +\end{verbatim} + +\begin{verbatim} +[7:05] rainbow:netpfga% bash build-load-drivers.sh ++ cd /home/nico/projects/P4-NetFPGA/lib/sw/std/driver/sume_riffa_v1_0_0 ++ make all +make -C /lib/modules/5.0.0-16-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-5.0.0-16-generic' + Building modules, stage 2. + MODPOST 1 modules +make[1]: Leaving directory '/usr/src/linux-headers-5.0.0-16-generic' ++ sudo make install +make -C /lib/modules/5.0.0-16-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-5.0.0-16-generic' + Building modules, stage 2. + MODPOST 1 modules +make[1]: Leaving directory '/usr/src/linux-headers-5.0.0-16-generic' +install -o root -g root -m 0755 -d /lib/modules/5.0.0-16-generic/extra/sume_riffa/ +install -o root -g root -m 0755 sume_riffa.ko /lib/modules/5.0.0-16-generic/extra/sume_riffa/ +depmod -a 5.0.0-16-generic ++ sudo modprobe sume_riffa +modprobe: ERROR: could not insert 'sume_riffa': Exec format error +[7:06] rainbow:netpfga% + +\end{verbatim} + +\begin{verbatim} +java traceback when trying to install sdnet +#+BEGIN_CENTER +Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Window must not be zero + at java.desktop/sun.awt.X11.XAtom.checkWindow(Unknown Source) + at java.desktop/sun.awt.X11.XAtom.getAtomData(Unknown Source) + at java.desktop/sun.awt.X11.XToolkit.getWorkArea(Unknown Source) + at java.desktop/sun.awt.X11.XToolkit.getInsets(Unknown Source) + at java.desktop/sun.awt.X11.XToolkit.getScreenInsets(Unknown Source) + at java.desktop/java.awt.Window.init(Unknown Source) + at java.desktop/java.awt.Window.(Unknown Source) + at java.desktop/java.awt.Window.(Unknown Source) + at java.desktop/java.awt.Dialog.(Unknown Source) + at java.desktop/java.awt.Dialog.(Unknown Source) + at java.desktop/javax.swing.JDialog.(Unknown Source) + at java.desktop/javax.swing.JOptionPane.createDialog(Unknown Source) + at java.desktop/javax.swing.JOptionPane.createDialog(Unknown Source) + at j.a.c(Unknown Source) + at j.a.a(Unknown Source) + at j.a.a(Unknown Source) + at j.a.c(Unknown Source) + at com.xilinx.installer.gui.panel.destination.b.a(Unknown Source) + at com.xilinx.installer.gui.panel.destination.DestinationPanel.z(Unknown Source) + at com.xilinx.installer.gui.E.a(Unknown Source) + at com.xilinx.installer.gui.InstallerGUI.l(Unknown Source) + at com.xilinx.installer.gui.i.actionPerformed(Unknown Source) + at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source) + at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) + at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) + at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source) + at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) + at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) + at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) + at java.desktop/java.awt.Component.processEvent(Unknown Source) + at java.desktop/java.awt.Container.processEvent(Unknown Source) + at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) + at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) + at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) + at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) + at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) + at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) + at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) + at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) + at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) + at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.desktop/java.awt.EventQueue.access$500(Unknown Source) + at java.desktop/java.awt.EventQueue$3.run(Unknown Source) + at java.desktop/java.awt.EventQueue$3.run(Unknown Source) + at java.base/java.security.AccessController.doPrivileged(Native Method) + at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.desktop/java.awt.EventQueue$4.run(Unknown Source) + at java.desktop/java.awt.EventQueue$4.run(Unknown Source) + at java.base/java.security.AccessController.doPrivileged(Native Method) + at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) + + +#+END_CENTER + +Reason was a hidden window. + +\end{verbatim} + +Testing the card +\begin{verbatim} +--------------------------------------------- +[ddr3B]: Running Auto Test +--------------------------------------------- +Traceback (most recent call last): + File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_core.py", line 16765, in + lambda event: event.callable(*event.args, **event.kw) ) + File "sw/host/script/NfSumeTest.py", line 848, in UpdateProgress + self.progressDlg.Update(self.curProgress, str(localLine)) + File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_core.py", line 16710, in __getattr__ + raise PyDeadObjectError(self.attrStr % self._name) +wx._core.PyDeadObjectError: The C++ part of the NfSumeProgress object has been deleted, attribute access no longer allowed. +Exception in thread Thread-18: +Traceback (most recent call last): + File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner + self.run() + File "sw/host/script/NfSumeTest.py", line 947, in run + self.target(*self.data) + File "sw/host/script/NfSumeTest.py", line 355, in StartAutoTest + self.TestInterface(testName) + File "sw/host/script/NfSumeTest.py", line 465, in TestInterface + self.ProgramFpga('../../../bitfiles/' + self.nfSumeTestConfiguration[testName]['bitstream']) + File "sw/host/script/NfSumeTest.py", line 586, in ProgramFpga + self.getFpgaIndex() + File "sw/host/script/NfSumeTest.py", line 574, in getFpgaIndex + p = Popen(['djtgcfg', 'init', '-d', 'NetSUME'], stdout=PIPE, bufsize = 1) + File "/usr/lib/python2.7/subprocess.py", line 711, in __init__ + errread, errwrite) + File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child + raise child_exception +OSError: [Errno 2] No such file or directory + +\end{verbatim} + +\begin{verbatim} +--------------------------------------------- +[pcie]: Running Auto Test +--------------------------------------------- +Traceback (most recent call last): + File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_core.py", line 16765, in + lambda event: event.callable(*event.args, **event.kw) ) + File "sw/host/script/NfSumeTest.py", line 848, in UpdateProgress + self.progressDlg.Update(self.curProgress, str(localLine)) + File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_core.py", line 16710, in __getattr__ + raise PyDeadObjectError(self.attrStr % self._name) +wx._core.PyDeadObjectError: The C++ part of the NfSumeProgress object has been deleted, attribute access no longer allowed. +Exception in thread Thread-21: +Traceback (most recent call last): + File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner + self.run() + File "sw/host/script/NfSumeTest.py", line 947, in run + self.target(*self.data) + File "sw/host/script/NfSumeTest.py", line 466, in TestInterface + self.serialCon.readlines() + File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 495, in read + raise SerialException('device reports readiness to read but returned no data (device disconnected or multiple access on port?)') +SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?) + + +\end{verbatim} + +Another generated file problem: +\begin{verbatim} +nico@nsg-System:~/master-thesis/netpfga$ grep -i error $P4_PROJECT_DIR/nf_sume_sdnet_ip/SimpleSumeSwitch/LOG +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] +INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_0_ErrorCheck +INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_1_ErrorCheck +INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_2_ErrorCheck +INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_3_ErrorCheck +INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_4_ErrorCheck +INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_5_ErrorCheck +INFO: [VRFC 10-311] analyzing module TopDeparser_t_EngineStage_6_ErrorCheck + +\end{verbatim} + +function syntax not supported +\begin{verbatim} +make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' +p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4 +headers.p4(246):syntax error, unexpected IDENTIFIER, expecting ( +bit<16> ones_complement_sum + ^^^^^^^^^^^^^^^^^^^ +error: 1 errors encountered, aborting compilation +Makefile:34: recipe for target 'all' failed +make[1]: *** [all] Error 1 +make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' +Makefile:31: recipe for target 'frontend' failed +make: *** [frontend] Error 2 +nico@nsg-System:~/master-thesis/netpfga$ + + +\end{verbatim} + +\begin{verbatim} +nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default$ cd $NF_DESIGN_DIR/test/sim_switch_default && make 2>&1 | tee ~/master-thesis/netpfga/log/step8-$(date +%F-%H%M%S) +rm -f config_writes.py* +rm -f *.pyc +cp /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata/config_writes.py ./ +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata/config_writes.py': No such file or directory +Makefile:36: recipe for target 'all' failed +make: *** [all] Error 1 + +\end{verbatim} + +\begin{verbatim} +Finished scanning sources +INFO: [IP_Flow 19-234] Refreshing IP repositories +INFO: [IP_Flow 19-1700] Loaded user IP repository '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/ip_repo'. +INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/opt/Xilinx/Vivado/2018.2/data/ip'. +WARNING: [IP_Flow 19-3664] IP 'bd_7ad4_xpcs_0' generated file not found '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/.Xil/Vivado-26302-nsg-System/coregen/bd_7ad4_xpcs_0_1/elaborate/configure_gt.tcl'. Please regenerate to continue. +WARNING: [IP_Flow 19-3664] IP 'bd_a1aa_xpcs_0' generated file not found '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/.Xil/Vivado-26302-nsg-System/coregen/bd_a1aa_xpcs_0_2/elaborate/configure_gt.tcl'. Please regenerate to continue. +open_project: Time (s): cpu = 00:00:05 ; elapsed = 00:00:05 . Memory (MB): peak = 1365.715 ; gain = 188.977 ; free physical = 9396 ; free virtual = 15104 +# puts "\nOpening $design Implementation design\n" + +\end{verbatim} + +\begin{verbatim} +WARNING: [Synth 8-689] width (12) of port connection 'control_S_AXI_ARADDR' does not match port width (8) of module 'SimpleSumeSwitch' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/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:199] +ERROR: [Synth 8-448] named port connection 'tuple_out_sume_metadata_VALID' does not exist for instance 'SimpleSumeSwitch_inst' of module 'SimpleSumeSwitch' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/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: [Synth 8-448] named port connection 'tuple_out_sume_metadata_DATA' does not exist for instance 'SimpleSumeSwitch_inst' of module 'SimpleSumeSwitch' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/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: [Synth 8-6156] failed synthesizing module 'nf_sume_sdnet' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/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:44] +ERROR: [Synth 8-6156] failed synthesizing module 'nf_sume_sdnet_ip' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/project/simple_sume_switch.srcs/sources_1/ip/nf_sume_sdnet_ip/synth/nf_sume_sdnet_ip.v:57] +ERROR: [Synth 8-6156] failed synthesizing module 'nf_datapath' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/hdl/nf_datapath.v:44] +ERROR: [Synth 8-6156] failed synthesizing module 'top' [/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/hdl/top.v:43] +\end{verbatim} + +Missing ``souce'' files: +\begin{verbatim} +cc -c -fPIC /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API/CAM.c -I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API +cc -std=c99 -Wall -Werror -fPIC -c libcam.c -I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/sw/sume -I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API +cc -L/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/sw/sume -shared -o libcam.so libcam.o CAM.o -lsumereg +/usr/bin/ld: cannot find -lsumereg +collect2: error: ld returned 1 exit status +Makefile:52: recipe for target 'libcam' failed +make[1]: *** [libcam] Error 1 +make[1]: Leaving directory '/home/nico/master-thesis/netpfga/minip4/sw/CLI' +ERROR: could not compile libcam souce files + + +\end{verbatim} + +Generated files not found: +\begin{verbatim} +make: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test' +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/hw/Makefile': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_log.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_stim.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_0_expected.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_log.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_stim.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_1_expected.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_log.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_stim.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_2_expected.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_log.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_stim.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/nf_interface_3_expected.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/dma_0_log.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/dma_0_expected.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/Makefile': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_stim.log': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_expect.axi': No such file or directory +cp: cannot stat '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/reg_stim.axi': No such file or directory +NetFPGA environment: + Root dir: /home/nico/projects/P4-NetFPGA + Project name: simple_sume_switch + Project dir: /tmp/nico/test/simple_sume_switch + Work dir: /tmp/nico +512 +=== Work directory is /tmp/nico/test/simple_sume_switch +=== Setting up test in /tmp/nico/test/simple_sume_switch/sim_switch_default +=== Running test /tmp/nico/test/simple_sume_switch/sim_switch_default ... using cmd ['/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test/sim_switch_default/run.py', '--sim', 'xsim'] ++ date +Die Jul 23 13:34:54 CEST 2019 ++ [ = no ] ++ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch ++ make +make: *** No targets specified and no makefile found. Stop. + +\end{verbatim} + +Renaming variables breaks the compile process +\begin{verbatim} + @Xilinx_MaxPacketRegion(1024) + control TopDeparser( +- packet_out b, +- in Parsed_packet p, ++ packet_out packet, ++ in Parsed_packet hdr, + in user_metadata_t user_metadata, + inout digest_data_t digest_data, + inout sume_metadata_t sume_metadata) { + + apply { +- b.emit(p.ethernet); ++ packet.emit(hdr.ethernet); + } ++ ++ + } +\end{verbatim} + +LPM size must be != 64 + +\begin{verbatim} +minip4_solution.p4(38): [--Wwarn=uninitialized_out_param] warning: out parameter meta may be uninitialized when RealParser terminates + out metadata meta, + ^^^^ +minip4_solution.p4(35) +parser RealParser( + ^^^^^^^^^^ +error: LPM table size should be 2^n - 1 +actions_nat64_generic.p4(169): error: could not not map table size size + size = 64; + ^^^^ +error: table match_types are not the same +actions_arp.p4(35): error: could not map table key(s) KeyElement + hdr.arp.dst_ipv4_addr: lpm; + ^^^^^^^^^^^^^^^^^^^^^ +error: LPM table size should be 2^n - 1 +actions_arp.p4(55): error: could not not map table size size + size = 64; + ^^^^ +Makefile:34: recipe for target 'all' failed +make[1]: *** [all] Error 1 +make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' +Makefile:31: recipe for target 'frontend' failed +make: *** [frontend] Error 2 +nico@nsg-System:~/master-thesis/netpfga/log$ + +\end{verbatim} + +LIMIT table match types are not the same error +\begin{verbatim} +make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' +p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4 +actions_egress.p4(52): warning: Table v6_networks is not used; removing +table v6_networks { + ^^^^^^^^^^^ +actions_egress.p4(69): warning: Table v4_networks is not used; removing +table v4_networks { + ^^^^^^^^^^^ +actions_nat64_generic.p4(174): warning: Table nat46 is not used; removing + table nat46 { + ^^^^^ +minip4_solution.p4(38): [--Wwarn=uninitialized_out_param] warning: out parameter meta may be uninitialized when RealParser terminates + out metadata meta, + ^^^^ +minip4_solution.p4(35) +parser RealParser( + ^^^^^^^^^^ +error: table match_types are not the same +actions_arp.p4(35): error: could not map table key(s) KeyElement + hdr.arp.dst_ipv4_addr: lpm; + ^^^^^^^^^^^^^^^^^^^^^ +Makefile:34: recipe for target 'all' failed +make[1]: *** [all] Error 1 + + table v4_arp { + key = { + hdr.ethernet.dst_addr: exact; + hdr.arp.opcode: exact; + hdr.arp.dst_ipv4_addr: lpm; + } + actions = { + controller_debug_table_id; + arp_reply; + NoAction; + } + size = ICMP6_TABLE_SIZE; + default_action = controller_debug_table_id(TABLE_ARP); + } + + +\end{verbatim} + +Implicit error saying that LPM tables don't work: + +\begin{verbatim} +s/sume-sdnet-switch/projects/minip4/nf_sume_sdnet_ip/SimpleSumeSwitch/realmain_lookup_table_0_t.HDL/xpm_memory.sv +[SW] LPM_Init() - start +[SW] LPM_Init() - done +[SW] LPM_LoadDataset() - start +[SW] LPM_LoadDataset() failed with error code = 12 +FATAL_ERROR: Vivado Simulator kernel has encounted an exception from DPI C function: LPM_VerifyDataset(). Please correct. +Time: 2016466 ps Iteration: 0 Process: /SimpleSumeSwitch_tb/LPM_VerifyDataset + File: /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/nf_sume_sdnet_ip/SimpleSumeSwitch/Testbench/SimpleSumeSwitch_tb.sv +\end{verbatim} + +\begin{verbatim} +minip4_solution.p4(35) +parser RealParser( + ^^^^^^^^^^ +actions_nat64_generic.p4(173): error: table size too small for match_type(EM): 63 < 64 + size = 63; + ^^ +actions_nat64_generic.p4(173): error: could not not map table size size + size = 63; + ^^^^ + +\end{verbatim} + +Unsupported default parameters +\begin{verbatim} +actions_egress.p4(89): error: data-plane arguments in default_actions are currently unsupported: realmain_controller_debug_table_id_0 + default_action = controller_debug_table_id(TABLE_V4_NETWORKS); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +terminate called after throwing an instance of 'Util::CompilerBug' + what(): In file: /wrk/hdscratch/staff/mohan/p4c_sdnet/build/p4c/extensions/sdnet/translate/core/lookupEngine.cpp:137 +Compiler Bug: actions_egress.p4(89): unhandled expression realmain_controller_debug_table_id/realmain_controller_debug_table_id_0(5); + default_action = controller_debug_table_id(TABLE_V4_NETWORKS); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +\end{verbatim} + +Compiler Bug / ifstatement +\begin{verbatim} +minip4_solution.p4(39) +parser RealParser( + ^^^^^^^^^^ +terminate called after throwing an instance of 'Util::CompilerBug' + what(): In file: /wrk/hdscratch/staff/mohan/p4c_sdnet/build/p4c/extensions/sdnet/writers/pxWriter.h:20 +Compiler Bug: unhandled node: (471564) + +Makefile:34: recipe for target 'all' failed +make[1]: *** [all] Error 134 +make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' +Makefile:31: recipe for target 'frontend' failed + +\end{verbatim} + +Applying table ``twice'' in different branches is impossible (another +compiler bug) + +\begin{verbatim} + +make -C src/ +make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src' +p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4 +minip4_solution.p4(19): [--Wwarn=uninitialized_out_param] warning: out parameter meta may be uninitialized when RealParser terminates + out metadata meta, + ^^^^ +minip4_solution.p4(16) +parser RealParser( + ^^^^^^^^^^ +terminate called after throwing an instance of 'Util::CompilerBug' + what(): In file: /wrk/hdscratch/staff/mohan/p4c_sdnet/build/p4c/extensions/sdnet/translate/core/tupleEngine.cpp:324 +Compiler Bug: overwrite + +Makefile:34: recipe for target 'all' failed + + +\end{verbatim} + +Adding entries requires setting all parameters +\begin{verbatim} +>> table_cam_add_entry realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477184434178 => 1 +ERROR: not enough fields provided to complete _hexify() + +\end{verbatim} + +Broken code that cannot convret long to int: +\begin{verbatim} +>> table_cam_delete_entry realmain_v6_networks_0 42540766411362381960998550477184434179 +ERROR: failed to convert 42540766411362381960998550477184434179 of type to an integer +nico@nsg-System:~/master-thesis/netpfga/minip4/sw/CLI$ + +\end{verbatim} + +% ---------------------------------------------------------------------- +\section{P4 error messages} + +\begin{verbatim} +Warning: you requested the nanomsg event logger, but bmv2 was compiled without -DBMELOG, and the event logger cannot be activated +Calling target program-options parser +[14:01:44.334] [bmv2] [D] [thread 23356] Set default default entry for table 'MyIngress.icmp6': MyIngress.controller_debug_table_id - 2, +[14:01:44.341] [bmv2] [D] [thread 23356] Set default default entry for table 'MyIngress.nat64': MyIngress.controller_debug_table_id - 1, +[14:01:44.344] [bmv2] [D] [thread 23356] Set default default entry for table 'tbl_act': act - +[14:01:44.345] [bmv2] [D] [thread 23356] Set default default entry for table 'tbl_act_0': act_0 - +[14:01:44.345] [bmv2] [D] [thread 23356] Set default default entry for table 'tbl_nat64_icmp6_generic': MyIngress.nat64_icmp6_generic - +[14:01:44.345] [bmv2] [D] [thread 23356] Set default default entry for table 'tbl_act_1': act_1 - +[14:01:44.345] [bmv2] [D] [thread 23356] Set default default entry for table 'tbl_act_2': act_2 - +[14:01:44.345] [bmv2] [D] [thread 23356] Set default default entry for table 'MyIngress.v4_networks': MyIngress.controller_debug_table_id - 5, +[14:01:44.345] [bmv2] [D] [thread 23356] Set default default entry for table 'MyIngress.v6_networks': MyIngress.controller_debug_table_id - 3, +[14:01:44.346] [bmv2] [D] [thread 23356] Set default default entry for table 'tbl_act_3': act_3 - +Invalid entry type 'expression' in field list +bad json: +{ + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "left" : null, + "op" : "d2b", + "right" : { + "type" : "field", + "value" : [ "scalars", "metadata.chk_icmp6_na_ns" ] + } + } + } +} + +\end{verbatim} + +\begin{verbatim} +../p4src/static-mapping.p4(121): error: MyIngress.nat64, Multiple LPM keys in table + table nat64 { + ^^^^^ +Compilation Error + + table nat64 { + key = { + hdr.ipv6.src_addr: lpm; + hdr.ipv6.dst_addr: lpm; + } + actions = { + controller_debug; + nat64_static; + NoAction; + } + size = NAT64_TABLE_SIZE; + default_action = controller_debug; + } + +\end{verbatim} + +\begin{verbatim} +../p4src/static-mapping.p4(60): error: SwitchStatement: switch statements not allowed in actions + switch(hdr.icmp6.type) { + ^^^^^^ +\end{verbatim} + +No if in actions: + +\begin{verbatim} +../p4src/static-mapping.p4(57): error: MethodCallStatement: Conditional execution in actions is not supported on this target + hdr.icmp.setValid(); + ^^^^^^^^^^^^^^^^^^^ +../p4src/static-mapping.p4(70): error: MethodCallStatement: Conditional execution in actions is not supported on this target + hdr.icmp6.setInvalid(); + ^^^^^^^^^^^^^^^^^^^^^^ +../p4src/static-mapping.p4(73): error: MethodCallStatement: Conditional execution in actions is not supported on this target + hdr.icmp6_na_ns.setInvalid(); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +../p4src/static-mapping.p4(74): error: MethodCallStatement: Conditional execution in actions is not supported on this target + hdr.icmp6_option_link_layer_addr.setInvalid(); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Compilation Error +p4@ubuntu:~/master-thesis/p4app$ + + if(hdr.ipv6.next_header == PROTO_ICMP6) { + nat64_icmp6(); + } +\end{verbatim} + +\begin{verbatim} +p4c --target bmv2 --arch v1model --std p4-16 "../p4src/checksum_diff.p4" -o "/home/p4/master-thesis/p4src" +In file: /home/p4/p4-tools/p4c/backends/bmv2/common/expression.cpp:168 +Compiler Bug: ../p4src/actions_delta_checksum.p4(60): ones_complement_sum(hdr.udp.checksum, tmp);: unhandled case + tmp = ones_complement_sum(hdr.udp.checksum, meta.v6sum); + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Compilation Error``` +Using the following code: +```/* copied from +https://p4.org/p4-spec/docs/PSA-v1.1.0.html#appendix-internetchecksum-implementation +*/ + +bit<16> ones_complement_sum(in bit<16> x, in bit<16> y) { + bit<17> ret = (bit<17>) x + (bit<17>) y; + if (ret[16:16] == 1) { + ret = ret + 1; + } + return ret[15:0]; +}``` +And p4c version: +```p4@ubuntu:~/master-thesis/p4app$ p4c --version +p4c 0.5 (SHA: 5ae30ee)``` +\end{verbatim} + +% ---------------------------------------------------------------------- \section{Traces} Proof of stuff working, reference for each stage / feature diff --git a/doc/plan.org b/doc/plan.org index d462e00..5377b91 100644 --- a/doc/plan.org +++ b/doc/plan.org @@ -3348,9 +3348,12 @@ https://en.wikipedia.org/wiki/IPv4_header_checksum | 6.4 | table size = 64, [nsg]: | | 6.5 | udp in ipv6 integrated with ugly define [esprimo]: | | | | -** TODO Benchmark/comparison -*** TODO Setup / Benchmark Jool -*** TODO Setup / Benchmark tayga +** DONE Benchmark/comparison + CLOSED: [2019-08-13 Tue 10:36] +*** DONE Setup / Benchmark Jool + CLOSED: [2019-08-13 Tue 10:36] +*** DONE Setup / Benchmark tayga + CLOSED: [2019-08-13 Tue 10:36] * TODO Thesis documentation ** Introduction *** Related work @@ -3407,7 +3410,6 @@ user@T:~# iptables -t mangle -A PREROUTING \ ** DONE P4 based implementation CLOSED: [2019-07-21 Sun 13:55] *** General - - IPv6 subnet 2001:db8::/32 - IPv6 hosts are in 2001:db8:6::/64 - IPv6 default router (::/0) is 2001:db8:6::42/64 @@ -3767,23 +3769,28 @@ libnanomsg-dev libjudy-dev - Have 1..n session IPv4 addresses - Handle outgoing IPv6: create new session - Handle in -***** TODO Case IPv6 initiator +***** DONE Case IPv6 initiator + CLOSED: [2019-08-13 Tue 10:59] - Mapping whole IPv4 Internet in /96 prefix - Session information for mapping reply - Timeout handling in controller -****** TODO IPv6 udp -> IPv4 +****** DONE IPv6 udp -> IPv4 + CLOSED: [2019-08-13 Tue 10:59] - Got 4-5 tuple ([proto], src ip, src port, dst ip, dst port) - Does not / never signal end - Needs timeout for cleaning up -****** TODO IPv6 tcp -> IPv4 +****** DONE IPv6 tcp -> IPv4 + CLOSED: [2019-08-13 Tue 10:59] - Similar to udp - react on FIN/RST (?) -- could be an addition -****** TODO IPv6 icmp6 -> IPv4 +****** DONE IPv6 icmp6 -> IPv4 + CLOSED: [2019-08-13 Tue 10:59] - usual protocol specific changes - Session?? - src ip, dst ip, code ? -***** TODO Case IPv4 initiator +***** DONE Case IPv4 initiator + CLOSED: [2019-08-13 Tue 10:59] - Needs upper level protol **** DONE General network matching CLOSED: [2019-07-21 Sun 13:56] @@ -3804,14 +3811,14 @@ libnanomsg-dev libjudy-dev ***** DONE Feed back to controller: implemented in switch ***** DONE Create ipv6 session in the controller -***** Create ipv4 session in the controller +***** DONE Create ipv4 session in the controller + CLOSED: [2019-08-13 Tue 11:00] ***** DONE Ensure translation code works CLOSED: [2019-07-21 Sun 13:55] >>> ipaddress.IPv6Network("2001:db8:100::/96")[int(ipaddress.IPv4Address("10.0.0.1"))] IPv6Address('2001:db8:100::a00:1') ****** DONE Status: syn sent, neighbor solicitation working, nothing received on other side - INFO:main:unhandled reassambled=>>> from table TABLE_NAT64_SESSION INFO:main:unhandled reassambled=>> from table TABLE_V6_NETWORKS INFO:main:unhandled reassambled=>> from table TABLE_V6_NETWORKS @@ -4047,7 +4054,8 @@ be plugged in easily. There could be a hypothetical "P4OS" that manages code fragments. This might include, but not limited to downloading (signed?) source code, managing dependencies similar to Linux package management, handling updates, etc. -*** TODO Code sharing (controller, switch) +*** DONE Code sharing (controller, switch) + CLOSED: [2019-08-13 Tue 11:07] Many constants double defined. Easy to make errors. *** Checksum handling: v6->v4 adding, not checking @@ -4056,13 +4064,16 @@ we add a checksum without ever checking v4 checksum before. ** Implementation description and limitations *** Implementation description [move todos here] -**** TODO Support (non-) fragmentation +**** DONE Support (non-) fragmentation + CLOSED: [2019-08-13 Tue 11:07] - if DF bit is not set in ipv4 -**** TODO Supporting [different] MTUs +**** DONE Supporting [different] MTUs + CLOSED: [2019-08-13 Tue 11:07] - sizes of headers are different - packet might not fit into same mtu anymore - send back "ICMP Packet Too Big messages to the sender." RFC7915 -**** TODO pmtud support +**** DONE pmtud support + CLOSED: [2019-08-13 Tue 11:07] - mss change #+BEGIN_QUOTE translator MUST send a @@ -4109,20 +4120,19 @@ Fragmented ICMP/ICMPv6 packets will not be translated by IP/ICMP translators. Only the destination network is matched for deciding on NAT64, as priority based double LPM is not supported. This limits a prefix to be used only in one network. -**** TODO No resolution of hardware addresses +**** DONE No resolution of hardware addresses + CLOSED: [2019-08-13 Tue 11:09] - hardcoded ip --> mac addresses Correct version: Resolve mac address in controller, buffer packet, replay packet / handle packet. Only has to be set, when packets originate from the switch/controller. - -**** TODO No support of IPv4 options +**** DONE No support of IPv4 options + CLOSED: [2019-08-13 Tue 11:09] - header is assumed to be always 20 octets - - -**** TODO Security issue: not checking checksums before +**** DONE Security issue: not checking checksums before + CLOSED: [2019-08-13 Tue 11:09] - Could be implemented - ** DONE Log various CLOSED: [2019-08-07 Wed 14:00] *** 2019-06-06 @@ -4469,7 +4479,7 @@ RUN loading image file. int.bit attempting to launch hw_server -****** Xilinx hw_server v2018.2 + ****** Xilinx hw_server v2018.2 **** Build date : Jun 14 2018-20:18:37 ** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. @@ -5910,8 +5920,10 @@ new dic: OrderedDict() nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4$ #+END_CENTER -**** TODO try4: find out why empty "new dic: OrderedDict()" is a problem - unclear -**** TODO try5: use older version of gen_testdata +**** DONE try4: find out why empty "new dic: OrderedDict()" is a problem - unclear + CLOSED: [2019-08-13 Tue 11:45] +**** DONE try5: use older version of gen_testdata + CLOSED: [2019-08-13 Tue 11:45] Previous output and new output of tuple expect: #+BEGIN_CENTER @@ -5922,7 +5934,8 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000001040000 #+END_CENTER -**** TODO try6: debug the compile process further / find out gen_testdata use +**** DONE try6: debug the compile process further / find out gen_testdata use + CLOSED: [2019-08-13 Tue 11:45] #+BEGIN_CENTER nico@nsg-System:~/master-thesis/netpfga/minip4$ grep gen_testdata -r . ./testdata/Makefile: ./gen_testdata.py @@ -5993,7 +6006,8 @@ nico@nsg-System:~/master-thesis/netpfga/minip4/testdata$ date Son Jul 21 16:48:08 CEST 2019 #+END_CENTER -**** TODO try9: generated files missing +**** DONE try9: generated files missing + CLOSED: [2019-08-13 Tue 11:47] #+BEGIN_CENTER INFO: [IP_Flow 19-234] Refreshing IP repositories @@ -6081,9 +6095,6 @@ INFO: [Common 17-206] Exiting Vivado at Sun Jul 21 16:46:22 2019... Makefile:120: recipe for target 'sim' failed make: *** [sim] Error 1 make: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test' - - - #+END_CENTER #+BEGIN_CENTER @@ -6954,7 +6965,6 @@ ERROR: not enough fields provided to complete _hexify() realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477184434178 => 1 - #+BEGIN_CENTER nico@nsg-System:~$ grep -r "not enough fields provided to complete _hexify()" -r ~/ /home/nico/P4-NetFPGA-live-clean/contrib-projects/sume-sdnet-switch/bin/p4_px_tables.py: print >> sys.stderr, "ERROR: not enough fields provided to complete _hexify()" @@ -7777,8 +7787,6 @@ nico@nsg-System:~$ *** DONE 2019-07-28: compile time around 2.5h CLOSED: [2019-07-28 Sun 19:37] - - *** DONE 2019-07-28: direct loading works / no 2nd reboot necessary CLOSED: [2019-07-28 Sun 19:50] #+BEGIN_CENTER @@ -8017,7 +8025,6 @@ listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 00:13:57.130843 ARP, Request who-has 10.0.0.201 tell 10.0.0.200, length 46 00:13:58.158866 ARP, Request who-has 10.0.0.201 tell 10.0.0.200, length 46 00:13:59.182948 ARP, Request who-has 10.0.0.201 tell 10.0.0.200, length 46 - #+END_CENTER *** DONE 2019-07-29: after recompiling with default = 16, icmp4 seen on eth1 of nsg @@ -8034,7 +8041,6 @@ eth1@nsg: 09:18:46.452656 IP 10.0.0.200 > 10.0.0.1: ICMP echo request, id 4648, seq 1, length 64 09:18:47.469570 IP 10.0.0.200 > 10.0.0.1: ICMP echo request, id 4648, seq 2, length 64 09:18:48.493577 IP 10.0.0.200 > 10.0.0.1: ICMP echo request, id 4648, seq 3, length 64 - #+END_CENTER reflashing switch @@ -8078,7 +8084,6 @@ listening on enp2s0f1, link-type EN10MB (Ethernet), capture size 262144 bytes 16:20:37.660293 ARP, Request who-has 10.0.0.250 tell 10.0.0.200, length 28 16:20:38.662166 ARP, Request who-has 10.0.0.250 tell 10.0.0.200, length 28 16:20:39.686165 ARP, Request who-has 10.0.0.250 tell 10.0.0.200, length 28 - #+END_CENTER **** DONE 2019-07-29: found bug in PARSER!!!! CLOSED: [2019-07-29 Mon 18:34] @@ -8196,7 +8201,6 @@ PING 10.0.0.66 (10.0.0.66) 56(84) bytes of data. nico@ESPRIMO-P956:~$ - #+END_CENTER Outgoing interface @@ -8286,7 +8290,6 @@ listening on enp2s0f0, link-type EN10MB (Ethernet), capture size 262144 bytes CLOSED: [2019-08-02 Fri 10:19] #+BEGIN_CENTER table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960998550477352206378 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0 - #+END_CENTER *** DONE 2019-08-02: ipv4 checksum after nat64 is empty! CLOSED: [2019-08-07 Wed 14:01] @@ -8440,7 +8443,7 @@ table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960 >> #+END_CENTER -**** DONE setting up translation: v4->v6: ok +**** DONE setting up translation: v4->v6: ok CLOSED: [2019-08-04 Sun 09:14] #+BEGIN_CENTER nico@ESPRIMO-P956:~/master-thesis/bin$ ./socat-listen-tcp-v6 @@ -9225,75 +9228,98 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project ** graphviz: - https://graphviz.gitlab.io/_pages/doc/info/shapes.html#polygon - ** TODO References / Follow up -*** TODO Board -*** RFC 791 IPv4 https://tools.ietf.org/html/rfc791 -*** RFC 792 ICMP https://tools.ietf.org/html/rfc792 -*** RFC 826 ARP https://tools.ietf.org/html/rfc826 -*** RFC 1017 ICMP checksum https://tools.ietf.org/html/rfc1071 +*** Board +*** DONE RFC 791 IPv4 https://tools.ietf.org/html/rfc791 + CLOSED: [2019-08-13 Tue 12:31] +*** DONE RFC 792 ICMP https://tools.ietf.org/html/rfc792 + CLOSED: [2019-08-13 Tue 12:32] +*** DONE RFC 826 ARP https://tools.ietf.org/html/rfc826 + CLOSED: [2019-08-13 Tue 12:40] +*** DONE RFC 1017 ICMP checksum https://tools.ietf.org/html/rfc1071 + CLOSED: [2019-08-13 Tue 12:40] - Related to RFC 6052, Host identifier -*** RFC 2373 IP Version 6 Addressing Architecture +*** DONE RFC 2373 IP Version 6 Addressing Architecture + CLOSED: [2019-08-13 Tue 12:40] - Referenced by RFC2464 - Obsoleted by RFC3513 - -*** RFC 2460 IPv6 (Checksum https://tools.ietf.org/html/rfc2460#section-8.1) -*** RFC 2464 Transmission of IPv6 Packets over Ethernet Networks https://tools.ietf.org/html/rfc2464 +*** DONE RFC 2460 IPv6 (Checksum https://tools.ietf.org/html/rfc2460#section-8.1) + CLOSED: [2019-08-13 Tue 12:40] +*** DONE RFC 2464 Transmission of IPv6 Packets over Ethernet Networks https://tools.ietf.org/html/rfc2464 + CLOSED: [2019-08-13 Tue 12:40] - embedding of Mac addresses -*** RFC 3810 MLD2 https://tools.ietf.org/html/rfc3810 -*** RFC 4038 Application Aspects of IPv6 Transition https://tools.ietf.org/html/rfc4038 +*** DONE RFC 3810 MLD2 https://tools.ietf.org/html/rfc3810 + CLOSED: [2019-08-13 Tue 12:42] +*** DONE RFC 4038 Application Aspects of IPv6 Transition https://tools.ietf.org/html/rfc4038 + CLOSED: [2019-08-13 Tue 12:42] - Ref by RFC4291 / mapped ipv4 - - -*** RFC 4291 IP Version 6 Addressing Architecture https://tools.ietf.org/html/rfc4291 +*** DONE RFC 4291 IP Version 6 Addressing Architecture https://tools.ietf.org/html/rfc4291 + CLOSED: [2019-08-13 Tue 12:43] -! - -*** RFC 4443 ICMPv6 https://tools.ietf.org/html/rfc4443 -*** RFC 4861: https://tools.ietf.org/html/rfc4861 Neighbor discovery -*** RFC 6052: https://tools.ietf.org/html/rfc6052 IPv6 Addressing of IPv4/IPv6 Translators - first NAT64?? -*** RFC 6145 IP/ICMP Translation Algorithm +*** DONE RFC 4443 ICMPv6 https://tools.ietf.org/html/rfc4443 + CLOSED: [2019-08-13 Tue 12:43] +*** DONE RFC 4861: https://tools.ietf.org/html/rfc4861 Neighbor discovery + CLOSED: [2019-08-13 Tue 12:46] +*** DONE RFC 6052: https://tools.ietf.org/html/rfc6052 IPv6 Addressing of IPv4/IPv6 Translators - first NAT64?? + CLOSED: [2019-08-13 Tue 12:46] +*** DONE RFC 6145 IP/ICMP Translation Algorithm + CLOSED: [2019-08-13 Tue 12:46] - Obsoleted by 7915 *** DONE RFC 6146 Stateful nat http://tools.ietf.org/html/rfc6146 CLOSED: [2019-08-09 Fri 10:29] - Referenced from Jool -*** RFC 6147 DNS64 https://tools.ietf.org/html/rfc6147 -*** RFC 6586 for deployment experiences using Stateful NAT64. -*** RFC 7757 Explicit Address Mappings for Stateless IP/ICMP Translation - https://tools.ietf.org/html/rfc7757 -*** RFC 7915 IP/ICMP Translation Algorithm https://tools.ietf.org/html/rfc7915 +*** DONE RFC 6147 DNS64 https://tools.ietf.org/html/rfc6147 + CLOSED: [2019-08-13 Tue 12:46] +*** DONE RFC 6586 for deployment experiences using Stateful NAT64. + CLOSED: [2019-08-13 Tue 12:48] +*** DONE RFC 7757 Explicit Address Mappings for Stateless IP/ICMP Translation - https://tools.ietf.org/html/rfc7757 + CLOSED: [2019-08-13 Tue 12:48] +*** DONE RFC 7915 IP/ICMP Translation Algorithm https://tools.ietf.org/html/rfc7915 + CLOSED: [2019-08-13 Tue 12:49] - Requires RFC 6144 - MUST support one or more address mapping algorithms, which are defined in Section 6. - does not translate IPv6 extension headers except the Fragment Header. -*** EAMT/Jool: https://www.jool.mx/en/eamt.html -*** Solicited node multicast address https://en.wikipedia.org/wiki/Solicited-node_multicast_address +*** DONE EAMT/Jool: https://www.jool.mx/en/eamt.html + CLOSED: [2019-08-13 Tue 12:49] +*** DONE Solicited node multicast address https://en.wikipedia.org/wiki/Solicited-node_multicast_address + CLOSED: [2019-08-13 Tue 12:52] *** Scapy / IPv6: https://www.idsv6.de/Downloads/IPv6PacketCreationWithScapy.pdf *** 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) +*** DONE Introduction: 1-2 pages + CLOSED: [2019-08-13 Tue 12:52] +*** DONE Fill out background section + CLOSED: [2019-08-13 Tue 12:53] +*** DONE Read through/add all points from plan.org + CLOSED: [2019-08-13 Tue 12:53] +*** DONE Update doc from input Tobias (2019-08-05) + CLOSED: [2019-08-13 Tue 12:53] *** 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 +*** DONE Ensure bibliography is containing everything + CLOSED: [2019-08-13 Tue 12:54] +*** TODO Add the final declaration of conformity +*** DONE Don't order by time, but show a process + CLOSED: [2019-08-13 Tue 12:54] +*** TODO Send for review to Tobias/Thilo +*** DONE Create graph of with and without router + CLOSED: [2019-08-13 Tue 12:54] *** TODO Add comparison with other solutions (Results?) *** TODO Show / create graph of a bigger network -*** Rough time table / effort -| | | Status | -| Abstract | 1 day | okayish | -| Introduction | 1 day | okayish | -| Background | 1 day | okayish | -| Design | 1-2 days | 2019-08-12 | -| Results | 2-3 days | 2019-08-13 | -| Conclusion | 1 day | | -| Proof reading | 2-3 days | | -| SUM(max) | 12d | | +*** TODO Rough time table / effort +| | | Status | +| Abstract | 1 day | okayish | +| Introduction | 1 day | okayish | +| Background | 1 day | okayish | +| Design | 1-2 days | okayish | +| Results | 2-3 days | 2019-08-13 | +| Conclusion | 1 day | 2019-08-14 | +| Proof reading | 2-3 days | until 2019-08-17 | +| 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 diff --git a/doc/refs/refs.bib b/doc/refs/refs.bib index b62484b..4074aa2 100644 --- a/doc/refs/refs.bib +++ b/doc/refs/refs.bib @@ -109,3 +109,9 @@ author = {theojepsen}, title = {Get size of header}, howpublished = {\url{https://github.com/p4lang/p4-spec/issues/660}}} + +@Misc{wikipedia:_solic, + author = {Wikipedia}, + title = {Solicited-node multicast address}, + howpublished = {\url{https://en.wikipedia.org/wiki/Solicited-node_multicast_address}}, + note = {Requested on 2019-08-13}}