Tony Garnock-Jones 62f8385b24 Remove unused definition 2018-02-09 11:15:53 +00:00
incremental-highlevel Remove unused definition 2018-02-09 11:15:53 +00:00
monolithic-lowlevel Adjust demo-config.rkt to cope with full domain names 2017-07-26 20:40:54 -04:00
.gitignore Move into subfolder in prep for merge 2016-04-01 19:23:33 -04:00 Clean up netstack README and TODO situation. 2016-08-16 09:39:27 -04:00 Clean up netstack README and TODO situation. 2016-08-16 09:39:27 -04:00

TCP/IP Stack

There are two (closely-related) implementations here:

  • 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 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 This code claims for itself. Now, pinging from some other machine, say, will cause the local kernel to receive the pings and then forward them on to, 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 To do this,

sudo iptables -I FORWARD -d -j DROP