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 | | | | - test with host | |
| | | | | | | |
| 2019-03-06 | Meet Laurent #3 | | | 2019-03-06 | Meet Laurent #3 | |
| | - Checksum's in scapy | | | | - Checksum's in scapy | x |
| | - Python2 ipaddress fix (import future) | | | | - Python2 ipaddress fix (import future) | x |
| | - Added custom package format / additional information in packet | | | | - Added custom package format / additional information in packet | x |
| | - (partial) NDP working in controller | | | | - (partial) NDP working in controller | x |
| | - P4 checksum_with_payload | | | | - P4 checksum_with_payload | x |
| | - Reading scapy / inet6 | | | | - Reading scapy / inet6 | x |
| | - Further checksum tests -> required everywhere in IPv6 | | | | - Further checksum tests -> required everywhere in IPv6 | x |
| | - icmp6 echo request working in controller | | | | - icmp6 echo request working in controller | x |
| | - Hosts can ping6 the switch | | | | - Hosts can ping6 the switch | x |
| | - Ran into P4 casting bug: https://github.com/p4lang/p4c/issues/1765 | | | | - Ran into P4 casting bug: https://github.com/p4lang/p4c/issues/1765 | x |
| | -> seems to be more than just casting bug | | | | -> seems to be more than just casting bug | x |
| | - Default route for ipv6 hosts | | | | - Default route for ipv6 hosts | x |
| | | | | | | |
| | Next target: | | | | Next target: | |
| | - Focus on enabling the "Internet" with ICMP6 translation | | | | - Focus on enabling the "Internet" with ICMP6 translation | x |
| | | | | | | |
| | Next steps: | | | | Next steps: | |
| | - Investigate again into checksumming with payload in P4 | | | | - Investigate again into checksumming with payload in P4 | x |
| | - Answering icmp6 echo request *in* in the switch | | | | - Answering icmp6 echo request *in* in the switch | x |
| | - Translate icmp6 to icmp | | | | - Translate icmp6 to icmp | x |
| | - Translate icmp to icmp6 | | | | - Translate icmp to icmp6 | |
| | - Multiple branches: | | | | - Multiple branches: | x |
| | * Work on checksumming / p4 | | | | * Work on checksumming / p4 | x |
| | * Work on metadata passing / p4 | | | | * Work on metadata passing / p4 | x |
| | * Work on static mapping (w/ incorrect checksum) 1:1 | | | | * 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 | | | 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") self.controller.table_clear("v6_addresses")
for v6addr in self.v6_addresses[self.mode]: for v6addr in self.v6_addresses[self.mode]:
log.debug("Adding v6 address: {}".format(v6addr))
icmp6_addr = self.gen_ndp_multicast_addr(v6addr) icmp6_addr = self.gen_ndp_multicast_addr(v6addr)
another_addr = v6addr +1 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(v6addr)], [str(self.task['ICMP6_GENERAL'])])
self.controller.table_add("v6_addresses", "controller_reply", [str(icmp6_addr)], [str(self.task['ICMP6_NS'])]) 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)]) self.controller.table_add("v6_addresses", "icmp6_echo_reply", [str(another_addr)])
def config_hosts(self): def config_hosts(self):