Introduce mixed mode NDP/ICMP6 echo reply

- Controller: NDP
- Switch: icmp6 echo reply
This commit is contained in:
Nico Schottelius 2019-03-06 17:23:01 +01:00
parent a0acd719e7
commit e0a9d28606
2 changed files with 34 additions and 20 deletions

View file

@ -63,31 +63,40 @@
| | - test with host | |
| | | |
| 2019-03-06 | Meet Laurent #3 | |
| | - Checksum's in scapy | |
| | - Python2 ipaddress fix (import future) | |
| | - Added custom package format / additional information in packet | |
| | - (partial) NDP working in controller | |
| | - P4 checksum_with_payload | |
| | - Reading scapy / inet6 | |
| | - Further checksum tests -> required everywhere in IPv6 | |
| | - icmp6 echo request working in controller | |
| | - Hosts can ping6 the switch | |
| | - Ran into P4 casting bug: https://github.com/p4lang/p4c/issues/1765 | |
| | -> seems to be more than just casting bug | |
| | - Default route for ipv6 hosts | |
| | - Checksum's in scapy | x |
| | - Python2 ipaddress fix (import future) | x |
| | - Added custom package format / additional information in packet | x |
| | - (partial) NDP working in controller | x |
| | - P4 checksum_with_payload | x |
| | - Reading scapy / inet6 | x |
| | - Further checksum tests -> required everywhere in IPv6 | x |
| | - icmp6 echo request working in controller | x |
| | - Hosts can ping6 the switch | x |
| | - Ran into P4 casting bug: https://github.com/p4lang/p4c/issues/1765 | x |
| | -> seems to be more than just casting bug | x |
| | - Default route for ipv6 hosts | x |
| | | |
| | Next target: | |
| | - Focus on enabling the "Internet" with ICMP6 translation | |
| | - Focus on enabling the "Internet" with ICMP6 translation | x |
| | | |
| | Next steps: | |
| | - Investigate again into checksumming with payload in P4 | |
| | - Answering icmp6 echo request *in* in the switch | |
| | - Translate icmp6 to icmp | |
| | - Investigate again into checksumming with payload in P4 | x |
| | - Answering icmp6 echo request *in* in the switch | x |
| | - Translate icmp6 to icmp | x |
| | - Translate icmp to icmp6 | |
| | - Multiple branches: | |
| | * Work on checksumming / p4 | |
| | * Work on metadata passing / p4 | |
| | - Multiple branches: | x |
| | * Work on checksumming / p4 | x |
| | * Work on metadata passing / p4 | x |
| | * Work on static mapping (w/ incorrect checksum) 1:1 | |
| | * v1model/ | |
| | | |
| | Notes: | |
| | * Edgar back on Friday // check tofino checksumming | |
| | * Bugs mentioning in thesis | |
| | * Maybe run static mapping on tofino / p4_14 | |
| | * Tofino p4_16: alpha compiler | |
| | * Send recap / mail next week | |
| | * week after 1130 Thursday | |
| | | |
| | | |
| 2019-03-08 | NAT64 1:1 table ICMP, ICMPv6 working | |

View file

@ -175,13 +175,18 @@ class L2Controller(object):
self.controller.table_clear("v6_addresses")
for v6addr in self.v6_addresses[self.mode]:
log.debug("Adding v6 address: {}".format(v6addr))
icmp6_addr = self.gen_ndp_multicast_addr(v6addr)
another_addr = v6addr +1
another_addr_ns = self.gen_ndp_multicast_addr(another_addr)
self.controller.table_add("v6_addresses", "controller_reply", [str(v6addr)], [str(self.task['ICMP6_GENERAL'])])
self.controller.table_add("v6_addresses", "controller_reply", [str(icmp6_addr)], [str(self.task['ICMP6_NS'])])
# Experimental
# Experimental: controller does NDP, switch does ICMP6 echo reply
self.controller.table_add("v6_addresses", "controller_reply", [str(another_addr_ns)], [str(self.task['ICMP6_NS'])])
self.controller.table_add("v6_addresses", "icmp6_echo_reply", [str(another_addr)])
def config_hosts(self):