Add checksum marker
This commit is contained in:
parent
6f989617ff
commit
905f51fba3
2 changed files with 39 additions and 16 deletions
51
doc/plan.org
51
doc/plan.org
|
@ -133,7 +133,9 @@
|
|||
| | Writing down double LPM problem | |
|
||||
| | Removing source network support, documenting limitation | |
|
||||
| | Rewriting code to use multiple NAT64 destinations | |
|
||||
| | New test.py v6_static_mapping tests | |
|
||||
| | | |
|
||||
| | Again checksum errors in NDP answer | |
|
||||
| | | |
|
||||
| | | |
|
||||
| 2019-03-28 | Meet Laurent #4 | |
|
||||
|
@ -317,15 +319,15 @@ p4@ubuntu:~/master-thesis$
|
|||
**** Implement IPv4 side handling
|
||||
***** TODO Make switch answer icmp echo request for
|
||||
***** TODO Add default route for v4 hosts
|
||||
**** TODO Translate ipv6 --> ipv4 with a (freely programmable) prefix
|
||||
**** DONE Basis to translate ipv6 --> ipv4 with a (freely programmable) prefix; test ping6_switch
|
||||
***** DONE Insert prefix into switch: v6_networks
|
||||
***** TODO Support multiple ipv6 source networks: need new table w/ 2 keys! -> later
|
||||
***** DONE Support multiple ipv6 source networks: need new table w/ 2 keys! -> not at the moment
|
||||
***** DONE Write test.py to generate correct destination packets
|
||||
>>> a = ipaddress.ip_network("2001:db8::/32")
|
||||
>>> b = ipaddress.ip_address("10.0.0.1")
|
||||
>>> a[int(b)]
|
||||
IPv6Address('2001:db8::a00:1')
|
||||
***** Using test.py, new NDP packets been seen, bur zero icmp on the outgoing side
|
||||
***** DONE Using test.py, new NDP packets been seen, bur zero icmp on the outgoing side
|
||||
p4@ubuntu:~/master-thesis/p4app$ python test.py --method v6_static_mapping --debug
|
||||
INFO:main:Trying to reach 10.0.0.1 (64:ff9b::a00:1) from h1
|
||||
sudo: unable to resolve host ubuntu
|
||||
|
@ -379,21 +381,42 @@ DEBUG:main:reassambled=<Ether dst=00:00:0a:00:00:42 src=00:00:0a:00:00:01 type=
|
|||
|
||||
****** Do we have routing for fe80::/10? Probably not. Shouldn't we see it in the controller then?
|
||||
****** NDP is controller only!
|
||||
***** TODO Finish NDP in switch
|
||||
****** TODO Need to set R/S/O bits
|
||||
****** TODO Need to parse R/S/O bits
|
||||
***** TODO Maybe merge v6_address and v6_networks - /128 is the same
|
||||
***** TODO Implement address learning?
|
||||
***** TODO Not sure whether we should react on router solicitation
|
||||
***** DONE Finish NDP in switch
|
||||
****** DONE Need to set R/S/O bits
|
||||
****** DONE Need to parse R/S/O bits
|
||||
***** DONE Maybe merge v6_address and v6_networks - /128 is the same
|
||||
***** DONE Implement address learning? -> not at the moment
|
||||
***** DONE Not sure whether we should react on router solicitation -> not at the moment
|
||||
- Using static routes -> should do the job
|
||||
***** TODO Implement the calculation
|
||||
***** TODO Sketch the flow for session handling for icmp6 w/o packet loss
|
||||
***** DONE Implement the calculation
|
||||
Currently offset + ip address
|
||||
***** DONE 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 Create table entry for mapping v4->v6 [net]
|
||||
**** TODO Create table entry for mapping v6->v4 [net]
|
||||
Not sure what I meant to do here - closing.
|
||||
***** DONE Create table entry for mapping v4->v6 [net]
|
||||
***** DONE Create table entry for mapping v6->v4 [net]
|
||||
**** TODO Translate icmp <-> icmp6: test v6_static_mapping
|
||||
***** try1: only packets on h1 + controller 2019-03-25
|
||||
+ filename=static_nat64-2019-03-25-1121-h1.pcap
|
||||
+ intf=h1-eth0
|
||||
+ mx h1 tcpdump -ni h1-eth0 -w static_nat64-2019-03-25-1121-h1.pcap
|
||||
tcpdump: listening on h1-eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
|
||||
^C10 packets captured
|
||||
10 packets received by filter
|
||||
0 packets dropped by kernel
|
||||
DEBUG:main:reassambled=<Ether dst=33:33:ff:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=0 plen=32 nh=ICMPv6 hlim=255 src=fe80::200:aff:fe00:1 dst=ff02::1:ff00:42 |<ICMPv6ND_NS type=Neighbor Solicitation code=0 cksum=0x37df res=0 tgt=2001:db8::42 |<ICMPv6NDOptSrcLLAddr type=1 len=1 lladdr=00:00:0a:00:00:01 |>>>>
|
||||
DEBUG:main:reassambled=<Ether dst=33:33:ff:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=0 plen=32 nh=ICMPv6 hlim=255 src=fe80::200:aff:fe00:1 dst=ff02::1:ff00:42 |<ICMPv6ND_NS type=Neighbor Solicitation code=0 cksum=0x37df res=0 tgt=2001:db8::42 |<ICMPv6NDOptSrcLLAddr type=1 len=1 lladdr=00:00:0a:00:00:01 |>>>>
|
||||
DEBUG:main:reassambled=<Ether dst=33:33:ff:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=0 plen=32 nh=ICMPv6 hlim=255 src=2001:db8::1 dst=ff02::1:ff00:42 |<ICMPv6ND_NS type=Neighbor Solicitation code=0 cksum=0x13a7 res=0 tgt=2001:db8::42 |<ICMPv6NDOptSrcLLAddr type=1 len=1 lladdr=00:00:0a:00:00:01 |>>>>
|
||||
DEBUG:main:reassambled=<Ether dst=33:33:ff:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=0 plen=32 nh=ICMPv6 hlim=255 src=2001:db8::1 dst=ff02::1:ff00:42 |<ICMPv6ND_NS type=Neighbor Solicitation code=0 cksum=0x13a7 res=0 tgt=2001:db8::42 |<ICMPv6NDOptSrcLLAddr type=1 len=1 lladdr=00:00:0a:00:00:01 |>>>>
|
||||
DEBUG:main:reassambled=<Ether dst=33:33:ff:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=0 plen=32 nh=ICMPv6 hlim=255 src=2001:db8::1 dst=ff02::1:ff00:42 |<ICMPv6ND_NS type=Neighbor Solicitation code=0 cksum=0x13a7 res=0 tgt=2001:db8::42 |<ICMPv6NDOptSrcLLAddr type=1 len=1 lladdr=00:00:0a:00:00:01 |>>>>
|
||||
|
||||
|
||||
That looks like NDP is not working again. Why: checksum seems to be
|
||||
incorrect according to wireshark. Why? Checksum is the SAME as in the
|
||||
request -> probably not updated.
|
||||
|
||||
*** TODO Get p4 VM / vagrant running
|
||||
**** DONE install libvirtd-daemon
|
||||
**** DONE install ebtables
|
||||
|
|
|
@ -16,7 +16,7 @@ control MyIngress(inout headers hdr,
|
|||
inout metadata meta,
|
||||
inout standard_metadata_t standard_metadata) {
|
||||
|
||||
/********************** ACTIONS ***********************************/
|
||||
/********************** GENERAL ACTIONS ***********************************/
|
||||
|
||||
action drop() {
|
||||
mark_to_drop();
|
||||
|
@ -172,7 +172,7 @@ control MyIngress(inout headers hdr,
|
|||
/* 2. ICMP6 changes */
|
||||
hdr.icmp6.type = ICMP6_NA;
|
||||
hdr.icmp6.code = 0;
|
||||
// checksum is calculated in deparser
|
||||
hdr.icmp6.checksum = 42; // checksum is calculated in deparser - marking with 42 to see whether it is calculated
|
||||
|
||||
/* 3. icmp6/neighbor advertisement: values taken from real world answers */
|
||||
hdr.icmp6_na_ns.router = 0;
|
||||
|
|
Loading…
Reference in a new issue