Clean up netstack README and TODO situation.
This commit is contained in:
parent
426a38b17f
commit
4beb281a2d
|
@ -1,5 +1,18 @@
|
||||||
# TCP/IP Stack
|
# 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
|
## Linux Firewall Configuration
|
||||||
|
|
||||||
Imagine a setup where the machine you are running this code has IP
|
Imagine a setup where the machine you are running this code has IP
|
|
@ -11,8 +11,14 @@ TCP options negotiation.
|
||||||
- SACK
|
- SACK
|
||||||
- Window scaling
|
- Window scaling
|
||||||
|
|
||||||
|
Check that we handle the situations in figs. 9, 10, 11, pp.33- of RFC 793.
|
||||||
|
|
||||||
Bugs:
|
Bugs:
|
||||||
- RST kills a connection even if its sequence number is bogus. Check
|
- RST kills a connection even if its sequence number is bogus. Check
|
||||||
to make sure it's in the window. (See
|
to make sure it's in the window. (See
|
||||||
http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41848.pdf
|
http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41848.pdf
|
||||||
and RFC 5961)
|
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.
|
|
@ -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
|
|
|
@ -1,18 +0,0 @@
|
||||||
Ideas on TCP unit testing:
|
|
||||||
<https://www.snellman.net/blog/archive/2015-07-09-unit-testing-a-tcp-stack/>
|
|
||||||
|
|
||||||
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)
|
|
Loading…
Reference in New Issue