Transferred all notes from plan.org into Thesis.tex

This commit is contained in:
Nico Schottelius 2019-08-13 12:56:15 +02:00
commit ec1ee619db
8 changed files with 1351 additions and 85 deletions

View file

@ -3348,9 +3348,12 @@ https://en.wikipedia.org/wiki/IPv4_header_checksum
| 6.4 | table size = 64, [nsg]: |
| 6.5 | udp in ipv6 integrated with ugly define [esprimo]: |
| | |
** TODO Benchmark/comparison
*** TODO Setup / Benchmark Jool
*** TODO Setup / Benchmark tayga
** DONE Benchmark/comparison
CLOSED: [2019-08-13 Tue 10:36]
*** DONE Setup / Benchmark Jool
CLOSED: [2019-08-13 Tue 10:36]
*** DONE Setup / Benchmark tayga
CLOSED: [2019-08-13 Tue 10:36]
* TODO Thesis documentation
** Introduction
*** Related work
@ -3407,7 +3410,6 @@ user@T:~# iptables -t mangle -A PREROUTING \
** DONE P4 based implementation
CLOSED: [2019-07-21 Sun 13:55]
*** General
- IPv6 subnet 2001:db8::/32
- IPv6 hosts are in 2001:db8:6::/64
- IPv6 default router (::/0) is 2001:db8:6::42/64
@ -3767,23 +3769,28 @@ libnanomsg-dev libjudy-dev
- Have 1..n session IPv4 addresses
- Handle outgoing IPv6: create new session
- Handle in
***** TODO Case IPv6 initiator
***** DONE Case IPv6 initiator
CLOSED: [2019-08-13 Tue 10:59]
- Mapping whole IPv4 Internet in /96 prefix
- Session information for mapping reply
- Timeout handling in controller
****** TODO IPv6 udp -> IPv4
****** DONE IPv6 udp -> IPv4
CLOSED: [2019-08-13 Tue 10:59]
- Got 4-5 tuple ([proto], src ip, src port, dst ip, dst port)
- Does not / never signal end
- Needs timeout for cleaning up
****** TODO IPv6 tcp -> IPv4
****** DONE IPv6 tcp -> IPv4
CLOSED: [2019-08-13 Tue 10:59]
- Similar to udp
- react on FIN/RST (?) -- could be an addition
****** TODO IPv6 icmp6 -> IPv4
****** DONE IPv6 icmp6 -> IPv4
CLOSED: [2019-08-13 Tue 10:59]
- usual protocol specific changes
- Session??
- src ip, dst ip, code ?
***** TODO Case IPv4 initiator
***** DONE Case IPv4 initiator
CLOSED: [2019-08-13 Tue 10:59]
- Needs upper level protol
**** DONE General network matching
CLOSED: [2019-07-21 Sun 13:56]
@ -3804,14 +3811,14 @@ libnanomsg-dev libjudy-dev
***** DONE Feed back to controller: implemented in switch
***** DONE Create ipv6 session in the controller
***** Create ipv4 session in the controller
***** DONE Create ipv4 session in the controller
CLOSED: [2019-08-13 Tue 11:00]
***** DONE Ensure translation code works
CLOSED: [2019-07-21 Sun 13:55]
>>> ipaddress.IPv6Network("2001:db8:100::/96")[int(ipaddress.IPv4Address("10.0.0.1"))]
IPv6Address('2001:db8:100::a00:1')
****** DONE Status: syn sent, neighbor solicitation working, nothing received on other side
INFO:main:unhandled 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 |>>>> from table TABLE_NAT64_SESSION
INFO:main:unhandled reassambled=<Ether dst=00:00:0a:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=667225 plen=40 nh=TCP hlim=64 src=2001:db8::1 dst=2001:db8:100::a00:1 |<TCP sport=36458 dport=2342 seq=1287954527 ack=0 dataofs=10 reserved=0 flags=S window=28320 chksum=0xdfd6 urgptr=0 options=[('MSS', 9440), ('SAckOK', ''), ('Timestamp', (795131854, 0)), ('NOP', None), ('WScale', 9)] |>>> from table TABLE_V6_NETWORKS
INFO:main:unhandled reassambled=<Ether dst=00:00:0a:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=667225 plen=40 nh=TCP hlim=64 src=2001:db8::1 dst=2001:db8:100::a00:1 |<TCP sport=36458 dport=2342 seq=1287954527 ack=0 dataofs=10 reserved=0 flags=S window=28320 chksum=0xdedc urgptr=0 options=[('MSS', 9440), ('SAckOK', ''), ('Timestamp', (795132104, 0)), ('NOP', None), ('WScale', 9)] |>>> from table TABLE_V6_NETWORKS
@ -4047,7 +4054,8 @@ be plugged in easily. There could be a hypothetical "P4OS" that
manages code fragments. This might include, but not limited to
downloading (signed?) source code, managing dependencies similar to
Linux package management, handling updates, etc.
*** TODO Code sharing (controller, switch)
*** DONE Code sharing (controller, switch)
CLOSED: [2019-08-13 Tue 11:07]
Many constants double defined. Easy to make errors.
*** Checksum handling: v6->v4 adding, not checking
@ -4056,13 +4064,16 @@ we add a checksum without ever checking v4 checksum before.
** Implementation description and limitations
*** Implementation description [move todos here]
**** TODO Support (non-) fragmentation
**** DONE Support (non-) fragmentation
CLOSED: [2019-08-13 Tue 11:07]
- if DF bit is not set in ipv4
**** TODO Supporting [different] MTUs
**** DONE Supporting [different] MTUs
CLOSED: [2019-08-13 Tue 11:07]
- sizes of headers are different
- packet might not fit into same mtu anymore
- send back "ICMP Packet Too Big messages to the sender." RFC7915
**** TODO pmtud support
**** DONE pmtud support
CLOSED: [2019-08-13 Tue 11:07]
- mss change
#+BEGIN_QUOTE
translator MUST send a
@ -4109,20 +4120,19 @@ Fragmented ICMP/ICMPv6 packets will not be translated by IP/ICMP translators.
Only the destination network is matched for deciding on NAT64, as
priority based double LPM is not supported. This limits a prefix to be
used only in one network.
**** TODO No resolution of hardware addresses
**** DONE No resolution of hardware addresses
CLOSED: [2019-08-13 Tue 11:09]
- hardcoded ip --> mac addresses
Correct version:
Resolve mac address in controller, buffer packet, replay packet /
handle packet.
Only has to be set, when packets originate from the switch/controller.
**** TODO No support of IPv4 options
**** DONE No support of IPv4 options
CLOSED: [2019-08-13 Tue 11:09]
- header is assumed to be always 20 octets
**** TODO Security issue: not checking checksums before
**** DONE Security issue: not checking checksums before
CLOSED: [2019-08-13 Tue 11:09]
- Could be implemented
** DONE Log various
CLOSED: [2019-08-07 Wed 14:00]
*** 2019-06-06
@ -4469,7 +4479,7 @@ RUN loading image file.
int.bit
attempting to launch hw_server
****** Xilinx hw_server v2018.2
****** Xilinx hw_server v2018.2
**** Build date : Jun 14 2018-20:18:37
** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.
@ -5910,8 +5920,10 @@ new dic: OrderedDict()
nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4$
#+END_CENTER
**** TODO try4: find out why empty "new dic: OrderedDict()" is a problem - unclear
**** TODO try5: use older version of gen_testdata
**** DONE try4: find out why empty "new dic: OrderedDict()" is a problem - unclear
CLOSED: [2019-08-13 Tue 11:45]
**** DONE try5: use older version of gen_testdata
CLOSED: [2019-08-13 Tue 11:45]
Previous output and new output of tuple expect:
#+BEGIN_CENTER
@ -5922,7 +5934,8 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project
0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000001040000
#+END_CENTER
**** TODO try6: debug the compile process further / find out gen_testdata use
**** DONE try6: debug the compile process further / find out gen_testdata use
CLOSED: [2019-08-13 Tue 11:45]
#+BEGIN_CENTER
nico@nsg-System:~/master-thesis/netpfga/minip4$ grep gen_testdata -r .
./testdata/Makefile: ./gen_testdata.py
@ -5993,7 +6006,8 @@ nico@nsg-System:~/master-thesis/netpfga/minip4/testdata$ date
Son Jul 21 16:48:08 CEST 2019
#+END_CENTER
**** TODO try9: generated files missing
**** DONE try9: generated files missing
CLOSED: [2019-08-13 Tue 11:47]
#+BEGIN_CENTER
INFO: [IP_Flow 19-234] Refreshing IP repositories
@ -6081,9 +6095,6 @@ INFO: [Common 17-206] Exiting Vivado at Sun Jul 21 16:46:22 2019...
Makefile:120: recipe for target 'sim' failed
make: *** [sim] Error 1
make: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/simple_sume_switch/test'
#+END_CENTER
#+BEGIN_CENTER
@ -6954,7 +6965,6 @@ ERROR: not enough fields provided to complete _hexify()
realmain_v6_networks_0 realmain.set_egress_port 42540766411362381960998550477184434178 => 1
#+BEGIN_CENTER
nico@nsg-System:~$ grep -r "not enough fields provided to complete _hexify()" -r ~/
/home/nico/P4-NetFPGA-live-clean/contrib-projects/sume-sdnet-switch/bin/p4_px_tables.py: print >> sys.stderr, "ERROR: not enough fields provided to complete _hexify()"
@ -7777,8 +7787,6 @@ nico@nsg-System:~$
*** DONE 2019-07-28: compile time around 2.5h
CLOSED: [2019-07-28 Sun 19:37]
*** DONE 2019-07-28: direct loading works / no 2nd reboot necessary
CLOSED: [2019-07-28 Sun 19:50]
#+BEGIN_CENTER
@ -8017,7 +8025,6 @@ listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
00:13:57.130843 ARP, Request who-has 10.0.0.201 tell 10.0.0.200, length 46
00:13:58.158866 ARP, Request who-has 10.0.0.201 tell 10.0.0.200, length 46
00:13:59.182948 ARP, Request who-has 10.0.0.201 tell 10.0.0.200, length 46
#+END_CENTER
*** DONE 2019-07-29: after recompiling with default = 16, icmp4 seen on eth1 of nsg
@ -8034,7 +8041,6 @@ eth1@nsg:
09:18:46.452656 IP 10.0.0.200 > 10.0.0.1: ICMP echo request, id 4648, seq 1, length 64
09:18:47.469570 IP 10.0.0.200 > 10.0.0.1: ICMP echo request, id 4648, seq 2, length 64
09:18:48.493577 IP 10.0.0.200 > 10.0.0.1: ICMP echo request, id 4648, seq 3, length 64
#+END_CENTER
reflashing switch
@ -8078,7 +8084,6 @@ listening on enp2s0f1, link-type EN10MB (Ethernet), capture size 262144 bytes
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
**** DONE 2019-07-29: found bug in PARSER!!!!
CLOSED: [2019-07-29 Mon 18:34]
@ -8196,7 +8201,6 @@ PING 10.0.0.66 (10.0.0.66) 56(84) bytes of data.
nico@ESPRIMO-P956:~$
#+END_CENTER
Outgoing interface
@ -8286,7 +8290,6 @@ listening on enp2s0f0, link-type EN10MB (Ethernet), capture size 262144 bytes
CLOSED: [2019-08-02 Fri 10:19]
#+BEGIN_CENTER
table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960998550477352206378 => 42540766411362381960998550477184434176 167772160 42540766411362381960998550477184434176 0
#+END_CENTER
*** DONE 2019-08-02: ipv4 checksum after nat64 is empty!
CLOSED: [2019-08-07 Wed 14:01]
@ -8440,7 +8443,7 @@ table_cam_add_entry realmain_nat64_0 realmain.nat64_static 42540766411362381960
>>
#+END_CENTER
**** DONE setting up translation: v4->v6: ok
**** DONE setting up translation: v4->v6: ok
CLOSED: [2019-08-04 Sun 09:14]
#+BEGIN_CENTER
nico@ESPRIMO-P956:~/master-thesis/bin$ ./socat-listen-tcp-v6
@ -9225,75 +9228,98 @@ nico@nsg-System:~/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/project
** graphviz:
- https://graphviz.gitlab.io/_pages/doc/info/shapes.html#polygon
** TODO References / Follow up
*** TODO Board
*** RFC 791 IPv4 https://tools.ietf.org/html/rfc791
*** RFC 792 ICMP https://tools.ietf.org/html/rfc792
*** RFC 826 ARP https://tools.ietf.org/html/rfc826
*** RFC 1017 ICMP checksum https://tools.ietf.org/html/rfc1071
*** Board
*** DONE RFC 791 IPv4 https://tools.ietf.org/html/rfc791
CLOSED: [2019-08-13 Tue 12:31]
*** DONE RFC 792 ICMP https://tools.ietf.org/html/rfc792
CLOSED: [2019-08-13 Tue 12:32]
*** DONE RFC 826 ARP https://tools.ietf.org/html/rfc826
CLOSED: [2019-08-13 Tue 12:40]
*** DONE RFC 1017 ICMP checksum https://tools.ietf.org/html/rfc1071
CLOSED: [2019-08-13 Tue 12:40]
- Related to RFC 6052, Host identifier
*** RFC 2373 IP Version 6 Addressing Architecture
*** DONE RFC 2373 IP Version 6 Addressing Architecture
CLOSED: [2019-08-13 Tue 12:40]
- Referenced by RFC2464
- Obsoleted by RFC3513
*** RFC 2460 IPv6 (Checksum https://tools.ietf.org/html/rfc2460#section-8.1)
*** RFC 2464 Transmission of IPv6 Packets over Ethernet Networks https://tools.ietf.org/html/rfc2464
*** DONE RFC 2460 IPv6 (Checksum https://tools.ietf.org/html/rfc2460#section-8.1)
CLOSED: [2019-08-13 Tue 12:40]
*** DONE RFC 2464 Transmission of IPv6 Packets over Ethernet Networks https://tools.ietf.org/html/rfc2464
CLOSED: [2019-08-13 Tue 12:40]
- embedding of Mac addresses
*** RFC 3810 MLD2 https://tools.ietf.org/html/rfc3810
*** RFC 4038 Application Aspects of IPv6 Transition https://tools.ietf.org/html/rfc4038
*** DONE RFC 3810 MLD2 https://tools.ietf.org/html/rfc3810
CLOSED: [2019-08-13 Tue 12:42]
*** DONE RFC 4038 Application Aspects of IPv6 Transition https://tools.ietf.org/html/rfc4038
CLOSED: [2019-08-13 Tue 12:42]
- Ref by RFC4291 / mapped ipv4
-
*** RFC 4291 IP Version 6 Addressing Architecture https://tools.ietf.org/html/rfc4291
*** DONE RFC 4291 IP Version 6 Addressing Architecture https://tools.ietf.org/html/rfc4291
CLOSED: [2019-08-13 Tue 12:43]
-!
*** RFC 4443 ICMPv6 https://tools.ietf.org/html/rfc4443
*** RFC 4861: https://tools.ietf.org/html/rfc4861 Neighbor discovery
*** RFC 6052: https://tools.ietf.org/html/rfc6052 IPv6 Addressing of IPv4/IPv6 Translators - first NAT64??
*** RFC 6145 IP/ICMP Translation Algorithm
*** DONE RFC 4443 ICMPv6 https://tools.ietf.org/html/rfc4443
CLOSED: [2019-08-13 Tue 12:43]
*** DONE RFC 4861: https://tools.ietf.org/html/rfc4861 Neighbor discovery
CLOSED: [2019-08-13 Tue 12:46]
*** DONE RFC 6052: https://tools.ietf.org/html/rfc6052 IPv6 Addressing of IPv4/IPv6 Translators - first NAT64??
CLOSED: [2019-08-13 Tue 12:46]
*** DONE RFC 6145 IP/ICMP Translation Algorithm
CLOSED: [2019-08-13 Tue 12:46]
- Obsoleted by 7915
*** DONE RFC 6146 Stateful nat http://tools.ietf.org/html/rfc6146
CLOSED: [2019-08-09 Fri 10:29]
- Referenced from Jool
*** RFC 6147 DNS64 https://tools.ietf.org/html/rfc6147
*** RFC 6586 for deployment experiences using Stateful NAT64.
*** RFC 7757 Explicit Address Mappings for Stateless IP/ICMP Translation - https://tools.ietf.org/html/rfc7757
*** RFC 7915 IP/ICMP Translation Algorithm https://tools.ietf.org/html/rfc7915
*** DONE RFC 6147 DNS64 https://tools.ietf.org/html/rfc6147
CLOSED: [2019-08-13 Tue 12:46]
*** DONE RFC 6586 for deployment experiences using Stateful NAT64.
CLOSED: [2019-08-13 Tue 12:48]
*** DONE RFC 7757 Explicit Address Mappings for Stateless IP/ICMP Translation - https://tools.ietf.org/html/rfc7757
CLOSED: [2019-08-13 Tue 12:48]
*** DONE RFC 7915 IP/ICMP Translation Algorithm https://tools.ietf.org/html/rfc7915
CLOSED: [2019-08-13 Tue 12:49]
- Requires RFC 6144
- MUST support one or more address mapping algorithms, which
are defined in Section 6.
- does not translate IPv6 extension headers except the Fragment Header.
*** EAMT/Jool: https://www.jool.mx/en/eamt.html
*** Solicited node multicast address https://en.wikipedia.org/wiki/Solicited-node_multicast_address
*** DONE EAMT/Jool: https://www.jool.mx/en/eamt.html
CLOSED: [2019-08-13 Tue 12:49]
*** DONE Solicited node multicast address https://en.wikipedia.org/wiki/Solicited-node_multicast_address
CLOSED: [2019-08-13 Tue 12:52]
*** Scapy / IPv6: https://www.idsv6.de/Downloads/IPv6PacketCreationWithScapy.pdf
*** V1 model: https://github.com/p4lang/p4c/blob/master/p4include/v1model.p4
*** Cisco NAT64 https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipaddr_nat/configuration/xe-3s/nat-xe-3s-book/iadnat-stateful-nat64.pdf
*** Wiki_mac: https://en.wikipedia.org/wiki/MAC_address
** TODO Writing Thesis
*** TODO Introduction: 1-2 pages
*** TODO Fill out background sectio
*** TODO Read through/add all points from plan.org
*** TODO Update doc from input Tobias (2019-08-05)
*** DONE Introduction: 1-2 pages
CLOSED: [2019-08-13 Tue 12:52]
*** DONE Fill out background section
CLOSED: [2019-08-13 Tue 12:53]
*** DONE Read through/add all points from plan.org
CLOSED: [2019-08-13 Tue 12:53]
*** DONE Update doc from input Tobias (2019-08-05)
CLOSED: [2019-08-13 Tue 12:53]
*** TODO Add graphs from benchmark
*** TODO Ensure bibiography is containing everything
*** TODO Add the final declaration of conformity
*** TODO Don't order by time, but show a procss
*** TODO Send for review to Tobias/Thilo
*** TODO Add plots!
*** TODO Create graph of with and without router
*** DONE Ensure bibliography is containing everything
CLOSED: [2019-08-13 Tue 12:54]
*** TODO Add the final declaration of conformity
*** DONE Don't order by time, but show a process
CLOSED: [2019-08-13 Tue 12:54]
*** TODO Send for review to Tobias/Thilo
*** DONE Create graph of with and without router
CLOSED: [2019-08-13 Tue 12:54]
*** TODO Add comparison with other solutions (Results?)
*** TODO Show / create graph of a bigger network
*** Rough time table / effort
| | | Status |
| Abstract | 1 day | okayish |
| Introduction | 1 day | okayish |
| Background | 1 day | okayish |
| Design | 1-2 days | 2019-08-12 |
| Results | 2-3 days | 2019-08-13 |
| Conclusion | 1 day | |
| Proof reading | 2-3 days | |
| SUM(max) | 12d | |
*** TODO Rough time table / effort
| | | Status |
| Abstract | 1 day | okayish |
| Introduction | 1 day | okayish |
| Background | 1 day | okayish |
| Design | 1-2 days | okayish |
| Results | 2-3 days | 2019-08-13 |
| Conclusion | 1 day | 2019-08-14 |
| Proof reading | 2-3 days | until 2019-08-17 |
| SUM(max) | 12d | |
* DONE Initial administration
** DONE Clarify PDF / form with Denise Spicher: free form description
** DONE Create task description to be handed in mystudies