Merge branch 'master' of gitlab.ethz.ch:nicosc/master-thesis

This commit is contained in:
Nico Schottelius 2019-07-29 16:35:35 +02:00
commit b012a18901
5 changed files with 63 additions and 14 deletions

View file

@ -4112,7 +4112,7 @@ Fragmented ICMP/ICMPv6 packets will not be translated by IP/ICMP translators.
**** TODO Security issue: not checking checksums before
- Could be implemented
** Log various
** TODO Log various
*** 2019-06-06
No device seen after loading modules after reboot - netfpga.
Trying to reprogram
@ -8028,8 +8028,29 @@ netpfga_dummy.p4(20): warning: >>: shifting value with 8 bits by 11
netpfga_dummy.p4(20): warning: >>: shifting value with 8 bits by 11
sume_metadata.dst_port = (bit<8>) hdr.ethernet.ethertype >> 11;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
*** TODO 2019-07-29: set egress based on v4/v6 header: v7.1
**** ipv4: no output anywhere (only sent package seen)
**** ipv6: no output anywhere (only sent package seen)
**** arp: no output anywhere (only sent package seen)
**** log
#+BEGIN_CENTER
nico@ESPRIMO-P956:~$ sudo tcpdump -lni enp2s0f1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s0f1, link-type EN10MB (Ethernet), capture size 262144 bytes
16:17:23.691885 IP 10.0.0.200 > 10.0.0.1: ICMP echo request, id 16038, seq 1, length 64
16:17:24.710323 IP 10.0.0.200 > 10.0.0.1: ICMP echo request, id 16038, seq 2, length 64
16:18:16.198657 IP6 2001:db8:42::42 > 2001:db8:42::1: ICMP6, echo request, seq 1, length 64
16:18:17.222343 IP6 2001:db8:42::42 > 2001:db8:42::1: ICMP6, echo request, seq 2, length 64
16:20:25.296638 IP6 2001:db8:42::42 > ff02::1:ff00:6000: ICMP6, neighbor solicitation, who has 2001:db8:42::6000, length 32
16:20:26.310284 IP6 2001:db8:42::42 > ff02::1:ff00:6000: ICMP6, neighbor solicitation, who has 2001:db8:42::6000, length 32
16:20:27.334276 IP6 2001:db8:42::42 > ff02::1:ff00:6000: ICMP6, neighbor solicitation, who has 2001:db8:42::6000, length 32
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
**** 2019-07-29: found bug in PARSER!!!!
** The NetPFGA saga
Problems encountered:
- The logfile for a compile run is 10k+ lines

View file

@ -0,0 +1,12 @@
#ifndef PORT_BY_IP_ENDING
#define PORT_BY_IP_ENDING
if(hdr.ipv6.isValid()) {
set_egress_port((bit<8>) (hdr.ipv6.dst_addr & 0xff));
}
if(hdr.ipv4.isValid()) {
set_egress_port((bit<8>) (hdr.ipv4.dst_addr & 0xff));
}
#endif

View file

@ -20,12 +20,15 @@ parser RealParser(
out digest_data_t digest_data,
inout sume_metadata_t standard_metadata) {
state start {
packet.extract(hdr.ethernet);
// meta.unused = 0;
digest_data.unused = 0;
transition accept;
}
#include "parsers.p4"
// state start {
// packet.extract(hdr.ethernet);
// digest_data.unused = 0;
// transition accept;
// }
}
@Xilinx_MaxPacketRegion(1024)
@ -68,7 +71,7 @@ control RealMain(
dummy_table_for_netpfga.apply();
/* continue without tables */
#include "netpfga_nat64_stupid_hardcoded.p4"
//#include "netpfga_nat64_stupid_hardcoded.p4"
}
}
@ -90,6 +93,16 @@ control TopPipe(
* Deparser
*/
control RealDeParser(
packet_out packet,
in Parsed_packet hdr,
in user_metadata_t meta,
inout digest_data_t digest_data,
inout sume_metadata_t sume_metadata) {
#include "deparser.p4"
}
@Xilinx_MaxPacketRegion(1024)
control TopDeparser(
packet_out b,
@ -98,9 +111,12 @@ control TopDeparser(
inout digest_data_t digest_data,
inout sume_metadata_t sume_metadata) {
RealDeParser() realdeparser;
apply {
b.emit(p.ethernet);
realdeparser.apply(b, p, user_metadata, digest_data, sume_metadata);
}
}
/********************************************************************************

View file

@ -2,8 +2,8 @@
#define DUMMY_NETPFGA
action send_to_port1() {
// sume_metadata.dst_port = 1;
sume_metadata.dst_port = 16;
sume_metadata.dst_port = 1;
// sume_metadata.dst_port = 16;
}
action select_port_by_type() {
@ -14,7 +14,6 @@ action select_port_by_type() {
1
>>> 0x0806 >> 11 ARP
1
*/
sume_metadata.dst_port = (bit<8>) (hdr.ethernet.ethertype >> 11);
@ -23,12 +22,13 @@ action select_port_by_type() {
table dummy_table_for_netpfga {
key = {
hdr.ethernet.dst_addr: exact;
hdr.ethernet.ethertype: exact;
}
actions = {
send_to_port1;
select_port_by_type;
set_egress_port;
}
size = 64;
default_action = select_port_by_type; //send_to_port1;

View file

@ -17,7 +17,7 @@
meta.v6sum = 0;
meta.headerdiff = 0;
#ifdef _SUME_SWITCH_P4_
#ifdef _SUME_SWITCH_P4_
digest_data.unused = 0; /* avoid compiler warning */
#endif