nat behavioral requirements for tcp
play

NAT Behavioral Requirements for TCP Saikat Guha, Kaushik Biswas, - PowerPoint PPT Presentation

NAT Behavioral Requirements for TCP Saikat Guha, Kaushik Biswas, Bryan Ford, Paul Francis, Senthil Sivakumar, Pyda Srisuresh draft-ietf-behave-tcp-01 IETF 66 Guha et al. draft-ietf-behave-tcp-01 Changes Since -00 Now a standalone document


  1. NAT Behavioral Requirements for TCP Saikat Guha, Kaushik Biswas, Bryan Ford, Paul Francis, Senthil Sivakumar, Pyda Srisuresh draft-ietf-behave-tcp-01 IETF 66 Guha et al. draft-ietf-behave-tcp-01

  2. Changes Since -00 Now a standalone document ◮ Much easier to read ◮ (Re)defines terminology shared with UDP ◮ References UDP only for IP requirements Guha et al. draft-ietf-behave-tcp-01

  3. Handling Unsolicited SYN? SYNs that . . . ◮ are inbound ◮ are NOT part of an in-progress TCP (S-O) ◮ are NOT allowed by filtering behavior ... basically the NAT cannot route Guha et al. draft-ietf-behave-tcp-01

  4. Unsolicited SYN: Option 1 A N M B Silent Drop SYN ◮ Good for P2P ◮ Bad for erroneous SYNs ◮ NATs do this today (92%) ◮ Current WG consensus ◮ Too rare a case? ◮ Is it a problem today? Guha et al. draft-ietf-behave-tcp-01

  5. Unsolicited SYN: Option 1 A N M B Silent Drop SYN ◮ Good for P2P SYN ◮ Bad for erroneous SYNs ◮ NATs do this today (92%) ◮ Current WG consensus Drop ◮ Too rare a case? good ◮ Is it a problem today? for P2P Guha et al. draft-ietf-behave-tcp-01

  6. Unsolicited SYN: Option 1 A N M B Silent Drop SYN ◮ Good for P2P SYN ◮ Bad for erroneous SYNs SYN ◮ NATs do this today (92%) ◮ Current WG consensus SYN ◮ Too rare a case? ◮ Is it a problem today? Drop bad for err-SYN Guha et al. draft-ietf-behave-tcp-01

  7. Unsolicited SYN: Option 2 ICMP Error A N M B ◮ Good for erroneous SYNs SYN ◮ Good for P2P if . . . RST/ICMP ◮ error doesn’t cause stack SYN to abort a RST/ICMP ◮ Otherwise, bad for P2P SYN RST/ICMP a May need a new ICMP soft-error code proviso old stacks ignore undefined ICMPs, Error make sure Gont’s TCPM draft (if it bad becomes a WG doc) retains this error as for P2P soft. Guha et al. draft-ietf-behave-tcp-01

  8. Unsolicited SYN: Option 2 ICMP Error A N M B ◮ Good for erroneous SYNs SYN ◮ Good for P2P if . . . RST/ICMP ◮ error doesn’t cause stack to abort a ◮ Otherwise, bad for P2P Error a May need a new ICMP soft-error code good for proviso old stacks ignore undefined ICMPs, err-SYN make sure Gont’s TCPM draft (if it becomes a WG doc) retains this error as soft. Guha et al. draft-ietf-behave-tcp-01

  9. Unsolicited SYN: Option 3 A N M B Delayed Error SYN ◮ Not bad for P2P SYN ◮ Not bad for erroneous SYN ◮ Decide delay timeout ◮ 6s too low for P2P? RST/ICMP ◮ 6s too high for err-SYN? Delay not bad for P2P Guha et al. draft-ietf-behave-tcp-01

  10. Unsolicited SYN: Option 3 A N M B Delayed Error SYN ◮ Not bad for P2P ◮ Not bad for erroneous SYN ◮ Decide delay timeout ◮ 6s too low for P2P? RST/ICMP ◮ 6s too high for err-SYN? Delay not bad for err-SYN Guha et al. draft-ietf-behave-tcp-01

  11. Unsolicited SYN Opt. 1: Silently drop SYN (old WG consensus) ◮ What does TCPM think? Opt. 2: Send ICMP, standardize new ICMP code ◮ Is this an option? Opt. 3: Delay sending ICMP error ◮ Is 6s acceptable? 1 1 Variant allows for flexible timeouts if we can’t decide on one Guha et al. draft-ietf-behave-tcp-01

  12. Unsolicited SYN: Option 4 Delayed Error 2 A N S M B SYN ◮ Not bad for P2P SYN ◮ Not bad for erroneous SYN ◮ Flexible timeouts ◮ Assumptions: ◮ for P2P MUST do STUNT lookup first Delay2 RST/ICMP not bad for P2P Guha et al. draft-ietf-behave-tcp-01

  13. Unsolicited SYN: Option 4 Delayed Error 2 A N M B SYN ◮ Not bad for P2P RST/ICMP ◮ Not bad for erroneous SYN ◮ Flexible timeouts ◮ Assumptions: ◮ for P2P MUST do STUNT lookup first Delay2 not bad for err-SYN Guha et al. draft-ietf-behave-tcp-01

  14. Open Issue: Port-range and ICMP Port-Range Preservation Does TCP need source port-range to be preserved ( < 1024, 1024–65535)? ICMP Scope Should ICMP handling of errors in response to TCP packets go in the ICMP draft or the TCP draft? (to be discussed in ICMP slot) Guha et al. draft-ietf-behave-tcp-01

  15. Appendix Extra slides Guha et al. draft-ietf-behave-tcp-01

  16. Appendix Option 1 The NAT MUST silently drop unsolicited SYNs Guha et al. draft-ietf-behave-tcp-01

  17. Appendix Option 2 If enabling P2P TCP apps is most important, a NAT MUST silently drop the SYN. If enabling quick diagnosis of network errors is most important, a NAT SHOULD signal an ICMP port unreachable. The behavior MAY be configurable by the administrator. Guha et al. draft-ietf-behave-tcp-01

  18. Appendix Option 4 It is RECOMMENDED that a NAT respond to unsolicited SYN packets with an ICMP Port Unreachable error (Type 3, Code 3). If a NAT does so, it MUST delay the ICMP error by at least 6 seconds unless REQ-4a) applies. Furthermore, it MUST cancel this delayed ICMP if in that time it receives and translates an outbound SYN for the connection. If a NAT does not have resources to delay the ICMP error or chooses not to send it, the NAT MUST silently drop the unsolicited SYN. a) If there is no active mapping that matches the unsolicited SYN, then the NAT SHOULD send the ICMP immediately. Guha et al. draft-ietf-behave-tcp-01

  19. Appendix Option 3 It is RECOMMENDED that a NAT respond to unsolicited SYN packets with an ICMP Port Unreachable error (Type 3, Code 3). If a NAT does so, it MUST delay the ICMP error by at least 6 seconds. Furthermore, it MUST cancel this delayed ICMP if in that time it receives and translates an outbound SYN for the connection. If a NAT does not have resources to delay the ICMP error or chooses not to send it, the NAT MUST silently drop the unsolicited SYN. Guha et al. draft-ietf-behave-tcp-01

  20. Behave-App Recommendation In order to establish TCP between two candidates 2 , ◮ open 3 sockets (s1, s2, s3) ◮ bind() them all to the same local port ◮ listen(s1) ◮ connect(s2, peer.s1) ◮ connect(s3, peer.s3) 2 think ICE Guha et al. draft-ietf-behave-tcp-01

Recommend


More recommend