Re-re-re-try to do checkumming based on a meta field

This commit is contained in:
Nico Schottelius 2019-03-06 15:15:46 +01:00
parent f7fc8ef412
commit 591175db7a
3 changed files with 28 additions and 15 deletions

View File

@ -51,6 +51,7 @@
| | * Summary on Slack | | | | * Summary on Slack | |
| | * 1130 meeting now | | | | * 1130 meeting now | |
| | | | | | | |
| | | |
| 2019-03-01 | Feature list / priority list / roadmap clear | x | | 2019-03-01 | Feature list / priority list / roadmap clear | x |
| | Joining P4 Slack | | | | Joining P4 Slack | |
| | | | | | | |
@ -86,7 +87,7 @@
| | - Multiple branches: | | | | - Multiple branches: | |
| | * Work on checksumming / p4 | | | | * Work on checksumming / p4 | |
| | * Work on metadata passing / p4 | | | | * Work on metadata passing / p4 | |
| | * Work on static mapping (w/ incorrect checksum) | | | | * Work on static mapping (w/ incorrect checksum) 1:1 | |
| | | | | | | |
| | | | | | | |
| 2019-03-08 | NAT46 1:1 table ICMP, ICMPv6 working | | | 2019-03-08 | NAT46 1:1 table ICMP, ICMPv6 working | |
@ -198,6 +199,10 @@ p4@ubuntu:~/master-thesis$
**** TODO Translate ipv6 --> ipv4 with a (freely programmable) prefix **** TODO Translate ipv6 --> ipv4 with a (freely programmable) prefix
***** TODO Insert prefix into switch ***** TODO Insert prefix into switch
***** TODO Implement the calculation ***** TODO Implement the calculation
***** TODO Sketch the flow for session handling for icmp6 w/o packet loss
- switch receives icmp6 packet for known prefix
- controller needs to create session entry (?)
**** TODO Translate icmp <-> icmp6 **** TODO Translate icmp <-> icmp6
**** TODO Create table entry for mapping v4->v6 [net] **** TODO Create table entry for mapping v4->v6 [net]
**** TODO Create table entry for mapping v6->v4 [net] **** TODO Create table entry for mapping v6->v4 [net]
@ -539,8 +544,6 @@ performance, security and adaptivity of the solutions.
- Milestone 1: Stateless NAT64/NAT46 translations in P4 - Milestone 1: Stateless NAT64/NAT46 translations in P4
- Milestone 2: Stateful (dynamic) NAT64/NAT46 translations - Milestone 2: Stateful (dynamic) NAT64/NAT46 translations
- Milestone 3: Hardware adaption - Milestone 3: Hardware adaption
** Original ideas ** Original ideas
Proposal 1: Automating NAT64 with P4 Proposal 1: Automating NAT64 with P4

View File

@ -21,18 +21,18 @@ control MyVerifyChecksum(inout headers hdr, inout metadata meta) {
control MyComputeChecksum(inout headers hdr, inout metadata meta) { control MyComputeChecksum(inout headers hdr, inout metadata meta) {
apply { apply {
// GRRRRR update_checksum_with_payload(meta.do_cksum, update_checksum_with_payload(meta.do_cksum == 1,
// GRRRRR { {
// GRRRRR hdr.ipv6.src_addr, /* 128 */ hdr.ipv6.src_addr, /* 128 */
// GRRRRR hdr.ipv6.dst_addr, /* 128 */ hdr.ipv6.dst_addr, /* 128 */
// GRRRRR 16w0, /* 16 try implicit cast */ 16w0, /* 16 try implicit cast */
// GRRRRR hdr.ipv6.payload_length, /* 16 */ hdr.ipv6.payload_length, /* 16 */
// GRRRRR 24w0, /* 24 0's */ 24w0, /* 24 0's */
// GRRRRR PROTO_ICMP6 /* 8 */ PROTO_ICMP6 /* 8 */
// GRRRRR }, },
// GRRRRR hdr.icmp6.checksum, hdr.icmp6.checksum,
// GRRRRR HashAlgorithm.csum16 HashAlgorithm.csum16
// GRRRRR ); );
} }
} }

View File

@ -66,6 +66,16 @@ control MyIngress(inout headers hdr,
//meta.cast_length = (bit<32>) hdr.ipv6.payload_length; //meta.cast_length = (bit<32>) hdr.ipv6.payload_length;
} }
/* this needs SESSIONS!!
- icmp6: (src addr, dst addr, ID??, )
- tcp: (src port, dst port, dst_addr, src addr)
- udp: (src port, dst port, dst_addr, src addr)
*/
action nat64_static(ipv4_addr_t nataddr, ipv6_addr_t nat64_prefix) {
hdr.ipv4.dst_addr = hdr.ipv6.dst_addr - nat64_prefix;
hdr.ipv4.dst_addr = hdr.ipv6.dst_addr - nat64_prefix;
}
/********************** Reply to NDP for US ***********************************/ /********************** Reply to NDP for US ***********************************/
table ndp_answer { table ndp_answer {
key = { key = {