diff --git a/examples/netstack/incremental-highlevel/README.md b/examples/netstack/README.md similarity index 53% rename from examples/netstack/incremental-highlevel/README.md rename to examples/netstack/README.md index bbf36a5..e36bd06 100644 --- a/examples/netstack/incremental-highlevel/README.md +++ b/examples/netstack/README.md @@ -1,5 +1,18 @@ # TCP/IP Stack +There are two (closely-related) implementations here: + + - [`monolithic-lowlevel`](monolithic-lowlevel/) is the original + implementation, originally written for `minimart`, a language that + followed our ESOP 2014 paper quite closely. Porting it to a + monolithic-assertion-set Syndicate dialect helped substantially + simplify the code. + + - [`incremental-highlevel`](incremental-highlevel/) is a port of + `monolithic-lowlevel` to the Syndicate high-level DSL + ("`syndicate/actor`"). Moving from the low-level Syndicate style to + the high-level style also drastically simplified the code. + ## Linux Firewall Configuration Imagine a setup where the machine you are running this code has IP diff --git a/examples/netstack/incremental-highlevel/TODO.md b/examples/netstack/TODO.md similarity index 69% rename from examples/netstack/incremental-highlevel/TODO.md rename to examples/netstack/TODO.md index 8d674d5..e188d8c 100644 --- a/examples/netstack/incremental-highlevel/TODO.md +++ b/examples/netstack/TODO.md @@ -11,8 +11,14 @@ TCP options negotiation. - SACK - Window scaling +Check that we handle the situations in figs. 9, 10, 11, pp.33- of RFC 793. + Bugs: - RST kills a connection even if its sequence number is bogus. Check to make sure it's in the window. (See http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41848.pdf and RFC 5961) + + Conform better to the rules for reset generation and processing + from pp.36- of RFC 793. In particular, do not blindly accept RSTs + without checking sequence numbers against windows etc. diff --git a/examples/netstack/monolithic-lowlevel/README.md b/examples/netstack/monolithic-lowlevel/README.md deleted file mode 100644 index bbf36a5..0000000 --- a/examples/netstack/monolithic-lowlevel/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# TCP/IP Stack - -## Linux Firewall Configuration - -Imagine a setup where the machine you are running this code has IP -192.168.1.10. This code claims 192.168.1.222 for itself. Now, pinging -192.168.1.222 from some other machine, say 192.168.1.99, will cause -the local kernel to receive the pings and then *forward them on to -192.168.1.222*, which because of the gratuitous ARP announcement, it -knows to be on its own Ethernet MAC address. This causes the ping -requests to repeat endlessly, each time with one lower TTL. - -One approach to solving the problem is to prevent the kernel from -forwarding packets addressed to 192.168.1.222. To do this, - - sudo iptables -I FORWARD -d 192.168.1.222 -j DROP diff --git a/examples/netstack/monolithic-lowlevel/TODO.md b/examples/netstack/monolithic-lowlevel/TODO.md deleted file mode 100644 index 8d674d5..0000000 --- a/examples/netstack/monolithic-lowlevel/TODO.md +++ /dev/null @@ -1,18 +0,0 @@ -Ideas on TCP unit testing: - - -Check behaviour around TCP zero-window probing. Is the correct -behaviour already a consequence of the way `send-outbound` works? - -Do something smarter with TCP timers and RTT estimation than the -nothing that's already being done. - -TCP options negotiation. - - SACK - - Window scaling - -Bugs: - - RST kills a connection even if its sequence number is bogus. Check - to make sure it's in the window. (See - http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41848.pdf - and RFC 5961)