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                                            |       |
 | 
					|            | Writing down double LPM problem                                            |       |
 | 
				
			||||||
|            | Removing source network support, documenting limitation                    |       |
 | 
					|            | Removing source network support, documenting limitation                    |       |
 | 
				
			||||||
|            | Rewriting code to use multiple NAT64 destinations                          |       |
 | 
					|            | 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                                                            |       |
 | 
					| 2019-03-28 | Meet Laurent #4                                                            |       |
 | 
				
			||||||
| 
						 | 
					@ -317,15 +319,15 @@ p4@ubuntu:~/master-thesis$
 | 
				
			||||||
**** Implement IPv4 side handling
 | 
					**** Implement IPv4 side handling
 | 
				
			||||||
***** TODO Make switch answer icmp echo request for
 | 
					***** TODO Make switch answer icmp echo request for
 | 
				
			||||||
***** TODO Add default route for v4 hosts
 | 
					***** 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
 | 
					***** 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
 | 
					***** DONE Write test.py to generate correct destination packets
 | 
				
			||||||
>>> a = ipaddress.ip_network("2001:db8::/32")
 | 
					>>> a = ipaddress.ip_network("2001:db8::/32")
 | 
				
			||||||
>>> b = ipaddress.ip_address("10.0.0.1")
 | 
					>>> b = ipaddress.ip_address("10.0.0.1")
 | 
				
			||||||
>>> a[int(b)]
 | 
					>>> a[int(b)]
 | 
				
			||||||
IPv6Address('2001:db8::a00:1')
 | 
					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
 | 
					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
 | 
					INFO:main:Trying to reach 10.0.0.1 (64:ff9b::a00:1) from h1
 | 
				
			||||||
sudo: unable to resolve host ubuntu
 | 
					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?
 | 
					****** Do we have routing for fe80::/10? Probably not. Shouldn't we see it in the controller then?
 | 
				
			||||||
****** NDP is controller only!
 | 
					****** NDP is controller only!
 | 
				
			||||||
***** TODO Finish NDP in switch
 | 
					***** DONE Finish NDP in switch
 | 
				
			||||||
****** TODO Need to set R/S/O bits
 | 
					****** DONE Need to set R/S/O bits
 | 
				
			||||||
****** TODO Need to parse R/S/O bits
 | 
					****** DONE Need to parse R/S/O bits
 | 
				
			||||||
***** TODO Maybe merge v6_address and v6_networks - /128 is the same
 | 
					***** DONE Maybe merge v6_address and v6_networks - /128 is the same
 | 
				
			||||||
***** TODO Implement address learning?
 | 
					***** DONE Implement address learning? -> not at the moment
 | 
				
			||||||
***** TODO Not sure whether we should react on router solicitation
 | 
					***** DONE Not sure whether we should react on router solicitation -> not at the moment
 | 
				
			||||||
      - Using static routes -> should do the job
 | 
					      - Using static routes -> should do the job
 | 
				
			||||||
***** TODO Implement the calculation
 | 
					***** DONE Implement the calculation
 | 
				
			||||||
***** TODO Sketch the flow for session handling for icmp6 w/o packet loss
 | 
					Currently offset + ip address
 | 
				
			||||||
 | 
					***** DONE Sketch the flow for session handling for icmp6 w/o packet loss
 | 
				
			||||||
      - switch receives icmp6 packet for known prefix
 | 
					      - switch receives icmp6 packet for known prefix
 | 
				
			||||||
      - controller needs to create session entry (?)
 | 
					      - controller needs to create session entry (?)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**** TODO Translate icmp <-> icmp6
 | 
					Not sure what I meant to do here - closing.
 | 
				
			||||||
**** TODO Create table entry for mapping v4->v6 [net]
 | 
					***** DONE Create table entry for mapping v4->v6 [net]
 | 
				
			||||||
**** TODO Create table entry for mapping v6->v4 [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
 | 
					*** TODO Get p4 VM / vagrant running
 | 
				
			||||||
**** DONE install libvirtd-daemon
 | 
					**** DONE install libvirtd-daemon
 | 
				
			||||||
**** DONE install ebtables
 | 
					**** DONE install ebtables
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ control MyIngress(inout headers hdr,
 | 
				
			||||||
    inout metadata meta,
 | 
					    inout metadata meta,
 | 
				
			||||||
    inout standard_metadata_t standard_metadata) {
 | 
					    inout standard_metadata_t standard_metadata) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /********************** ACTIONS ***********************************/
 | 
					    /********************** GENERAL ACTIONS ***********************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    action drop() {
 | 
					    action drop() {
 | 
				
			||||||
        mark_to_drop();
 | 
					        mark_to_drop();
 | 
				
			||||||
| 
						 | 
					@ -172,7 +172,7 @@ control MyIngress(inout headers hdr,
 | 
				
			||||||
        /* 2. ICMP6 changes */
 | 
					        /* 2. ICMP6 changes */
 | 
				
			||||||
        hdr.icmp6.type = ICMP6_NA;
 | 
					        hdr.icmp6.type = ICMP6_NA;
 | 
				
			||||||
        hdr.icmp6.code = 0;
 | 
					        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 */
 | 
					        /* 3. icmp6/neighbor advertisement: values taken from real world answers */
 | 
				
			||||||
        hdr.icmp6_na_ns.router       = 0;
 | 
					        hdr.icmp6_na_ns.router       = 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue