70 likes | 87 Views
This draft outlines recommendations for NAT TCP behavior, covering issues like simultaneous-open handshake, premature binding expiry, timers, port assignment, and addressing bad behavior. The recommendations aim to optimize NAT handling for TCP connections.
E N D
TCP Behaviordraft-modadugu-nat-tcp-00 Nagendra Modadugu nagendra@cs.stanford.edu
Incoming SYN • Issue: • Binding created on observing outgoing SYN • Other side tries TCP simultaneous-open: • Also sends a SYN • Binding has already been created, does NAT allow incoming SYN? • Recommendation: • Yes • Also, NAT should be capable of tracking simultaneous-open handshake
RST Behavior • Issue: • External interface sees inbound SYN on unbound port • Typical OS responds with RST • NAT responding with RST means simultaneous-open doesn’t work • Recommendation: • Silent treatment of such inbound SYNs • Many (> 64%) NATs already demonstrate this behavior
Premature Binding Expiry • Issue: • TCP connection goes idle for extended period • Releasing binding means that open connection gets dropped • Thoughts? • How many applications affected? • Affected applications can implement SO_KEEPALIVE • NAT implements TCP keep-alive • Recommendation • No active participation by NAT
Timers • Three timers: • Connecting (before handshake completion), Established (measures liveness), Closing • Timer values: • Problems with mimicing standard TCP values? • Pick max values across various OS’s? • Thoughts?
Port Assignment (general behavior) • Issue: • To Preserve or Not Preserve port numbers • Desired port may be unavailable • Discussion: • Secondary port assignment scheme required anyway • Recommending one way or another not much value? • Recommendation: • Leave unspecified • Application developers cannot depend on port preservation anyway
Bad Behavior • Any bad behavior not covered by current recommendations? • Other behavioral aspects needing consideration?