From b6bd281c3a8e4d2c4023255f49b49c65ae3e1dd1 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 21 Feb 2019 23:19:17 +0100 Subject: [PATCH] create P4 basis + smaller updates Signed-off-by: Nico Schottelius --- doc/.gitignore | 9 ++++++++ doc/Thesis.pdf | Bin 121049 -> 0 bytes doc/plan.org | 18 ++++++++++++--- p4app/static-mapping.sh | 37 ++++++++++++++++++++++++++++++ p4src/checksums.p4 | 28 +++++++++++++++++++++++ p4src/headers.p4 | 1 + p4src/settings.p4 | 12 ++++++++++ p4src/static-mapping.p4 | 49 ++++++++++++++++++++++++++++++++++++++++ 8 files changed, 151 insertions(+), 3 deletions(-) create mode 100644 doc/.gitignore delete mode 100644 doc/Thesis.pdf create mode 100644 p4app/static-mapping.sh create mode 100644 p4src/checksums.p4 create mode 100644 p4src/settings.p4 create mode 100644 p4src/static-mapping.p4 diff --git a/doc/.gitignore b/doc/.gitignore new file mode 100644 index 0000000..fcc7356 --- /dev/null +++ b/doc/.gitignore @@ -0,0 +1,9 @@ +*.pdf +plan.tex +*.aux +*.glo +*.lof +*.log +*.lot +*.out +*.toc diff --git a/doc/Thesis.pdf b/doc/Thesis.pdf deleted file mode 100644 index d46b2ddeac7a397b0a0d85598dba6f73832491f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121049 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 VbsBq7oJB&e=c*qVO@KiF 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

HHv!zUv$USeeHs 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 G`2PVu-m2jM diff --git a/doc/plan.org b/doc/plan.org index c63e3f1..3d99750 100644 --- a/doc/plan.org +++ b/doc/plan.org @@ -104,10 +104,22 @@ user@T:~# iptables -t mangle -A PREROUTING \ **** Cisco (?) *** P4 based implementation TBD -**** Static mappings - - need table - - need tcp & udp translation +**** General + - 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 +**** Static mappings + - likely need table(s) + - need tcp & udp translation +***** Hosts +****** Left side: IPv6 +****** Right side: IPv4 **** Requirements - *** Performance comparison diff --git a/p4app/static-mapping.sh b/p4app/static-mapping.sh new file mode 100644 index 0000000..d6d50f8 --- /dev/null +++ b/p4app/static-mapping.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +set -x + +# cleanup +for i in 1 2 3 4; do + mx h$i "ip addr flush dev $dev" +done + +# host 1/2+42 need NDP for reaching themselves +for i in 1 2; do + dev="h$i-eth0" + # add and enable ipv6 + mx h$i "sysctl net.ipv6.conf.{lo,h$i-eth0}.disable_ipv6=0" + mx h$i "ip addr add 2001:db8:6::$i/64 dev $dev" + mx h$i "ip -6 route add default via 2001:db8:6::42" + + # add neighbors + for j in 1 2 42; do + mx h$i "ip -6 neigh add 2001:db8:6::${j} dev $dev lladdr 00:00:0a:00:00:0${j}" + done +done + +# host 3/4 need ARP, also need access to .42 (virtual IP) +for i in 3 4; do + dev="h$i-eth0" + mx h$i "ip addr add 10.0.0.$i/24 dev $dev" + + # add arp + for j in 1 2 42; do + mx h$i "ip neigh add 10.0.0.${j} dev $dev lladdr 00:00:0a:00:00:${j}" + done +done + +for i in 1 2 3 4; do + mx h$i "ip neigh show" +done diff --git a/p4src/checksums.p4 b/p4src/checksums.p4 new file mode 100644 index 0000000..b202b43 --- /dev/null +++ b/p4src/checksums.p4 @@ -0,0 +1,28 @@ +/* -*- P4_16 -*- */ +#ifndef CHECKSUMS_P4 +#define CHECKSUMS_P4 + +#include +#include + +#include "headers.p4" + +/************************************************************************* +************* C H E C K S U M V E R I F I C A T I O N ************* +*************************************************************************/ + +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { + apply {} +} + +/************************************************************************* +************** C H E C K S U M C O M P U T A T I O N ************** +*************************************************************************/ + +control MyComputeChecksum(inout headers hdr, inout metadata meta) { + apply { + } +} + + +#endif diff --git a/p4src/headers.p4 b/p4src/headers.p4 index 290dff1..e8f735c 100644 --- a/p4src/headers.p4 +++ b/p4src/headers.p4 @@ -14,6 +14,7 @@ typedef bit<9> port_t; const bit<16> TYPE_IPV4 = 0x0800; const bit<16> TYPE_IPV6 = 0x86DD; const bit<8> TYPE_TCP = 6; +const bit<8> TCP_SEQ_LEN = 4; header ethernet_t { diff --git a/p4src/settings.p4 b/p4src/settings.p4 new file mode 100644 index 0000000..194843d --- /dev/null +++ b/p4src/settings.p4 @@ -0,0 +1,12 @@ +/* -*- P4_16 -*- */ +/* table sizes, register widths, and such */ +#ifndef SETTINGS_P4 +#define SETTINGS_P4 + +#include +#include + +#define THE_ANSWER_TO_LIFE_THE_UNIVERSE_AND_EVERYTHING 42 + + +#endif diff --git a/p4src/static-mapping.p4 b/p4src/static-mapping.p4 new file mode 100644 index 0000000..f81e36a --- /dev/null +++ b/p4src/static-mapping.p4 @@ -0,0 +1,49 @@ +/* -*- P4_16 -*- */ +#include +#include + +#include "headers.p4" +#include "parsers.p4" +#include "checksums.p4" +#include "settings.p4" + + +/************************************************************************* +************** I N G R E S S P R O C E S S I N G ******************* +*************************************************************************/ + +control MyIngress(inout headers hdr, + inout metadata meta, + inout standard_metadata_t standard_metadata) { + + apply { + + } +} + +/************************************************************************* +**************** E G R E S S P R O C E S S I N G ******************* +*************************************************************************/ + +control MyEgress(inout headers hdr, + inout metadata meta, + inout standard_metadata_t standard_metadata) { + apply { + /* set tcp header valid after modifying it -- keep this in mind*/ + // hdr.tcp.setValid(); + + } +} + +/************************************************************************* +*********************** S W I T C H ******************************* +*************************************************************************/ + +V1Switch( +MyParser(), +MyVerifyChecksum(), +MyIngress(), +MyEgress(), +MyComputeChecksum(), +MyDeparser() +) main;