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

nat behavioral requirements for tcp
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 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

slide-2
SLIDE 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

slide-3
SLIDE 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

slide-4
SLIDE 4

Unsolicited SYN: Option 1

Silent Drop

◮ Good for P2P ◮ Bad for erroneous SYNs

◮ NATs do this today

(92%)

◮ Current WG consensus ◮ Too rare a case? ◮ Is it a problem today?

N A M B

SYN

Guha et al. draft-ietf-behave-tcp-01

slide-5
SLIDE 5

Unsolicited SYN: Option 1

Silent Drop

◮ Good for P2P ◮ Bad for erroneous SYNs

◮ NATs do this today

(92%)

◮ Current WG consensus ◮ Too rare a case? ◮ Is it a problem today?

N A M B

SYN SYN

Drop good for P2P

Guha et al. draft-ietf-behave-tcp-01

slide-6
SLIDE 6

Unsolicited SYN: Option 1

Silent Drop

◮ Good for P2P ◮ Bad for erroneous SYNs

◮ NATs do this today

(92%)

◮ Current WG consensus ◮ Too rare a case? ◮ Is it a problem today?

N A M B

SYN

Drop bad for err-SYN

SYN SYN SYN

Guha et al. draft-ietf-behave-tcp-01

slide-7
SLIDE 7

Unsolicited SYN: Option 2

ICMP Error

◮ Good for erroneous SYNs ◮ Good for P2P if . . .

◮ error doesn’t cause stack

to aborta

◮ Otherwise, bad for P2P

aMay need a new ICMP soft-error code

proviso old stacks ignore undefined ICMPs, make sure Gont’s TCPM draft (if it becomes a WG doc) retains this error as soft.

N A M B

SYN

Error bad for P2P

SYN RST/ICMP RST/ICMP SYN RST/ICMP

Guha et al. draft-ietf-behave-tcp-01

slide-8
SLIDE 8

Unsolicited SYN: Option 2

ICMP Error

◮ Good for erroneous SYNs ◮ Good for P2P if . . .

◮ error doesn’t cause stack

to aborta

◮ Otherwise, bad for P2P

aMay need a new ICMP soft-error code

proviso old stacks ignore undefined ICMPs, make sure Gont’s TCPM draft (if it becomes a WG doc) retains this error as soft.

N A M B

SYN RST/ICMP

Error good for err-SYN

Guha et al. draft-ietf-behave-tcp-01

slide-9
SLIDE 9

Unsolicited SYN: Option 3

Delayed Error

◮ Not bad for P2P ◮ Not bad for erroneous

SYN

◮ Decide delay timeout

◮ 6s too low for P2P? ◮ 6s too high for err-SYN?

N A M B

SYN

Delay not bad for P2P

SYN RST/ICMP

Guha et al. draft-ietf-behave-tcp-01

slide-10
SLIDE 10

Unsolicited SYN: Option 3

Delayed Error

◮ Not bad for P2P ◮ Not bad for erroneous

SYN

◮ Decide delay timeout

◮ 6s too low for P2P? ◮ 6s too high for err-SYN?

N A M B

SYN

Delay not bad for err-SYN

RST/ICMP

Guha et al. draft-ietf-behave-tcp-01

slide-11
SLIDE 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

1Variant allows for flexible timeouts if we can’t decide on one

Guha et al. draft-ietf-behave-tcp-01

slide-12
SLIDE 12

Unsolicited SYN: Option 4

Delayed Error 2

◮ Not bad for P2P ◮ Not bad for erroneous

SYN

◮ Flexible timeouts ◮ Assumptions:

◮ for P2P MUST do

STUNT lookup first

N A M B

SYN RST/ICMP

Delay2 not bad for P2P

SYN

S

Guha et al. draft-ietf-behave-tcp-01

slide-13
SLIDE 13

Unsolicited SYN: Option 4

Delayed Error 2

◮ Not bad for P2P ◮ Not bad for erroneous

SYN

◮ Flexible timeouts ◮ Assumptions:

◮ for P2P MUST do

STUNT lookup first

N A M B

SYN

Delay2 not bad for err-SYN

RST/ICMP

Guha et al. draft-ietf-behave-tcp-01

slide-14
SLIDE 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

slide-15
SLIDE 15

Appendix

Extra slides

Guha et al. draft-ietf-behave-tcp-01

slide-16
SLIDE 16

Appendix

Option 1

The NAT MUST silently drop unsolicited SYNs

Guha et al. draft-ietf-behave-tcp-01

slide-17
SLIDE 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

slide-18
SLIDE 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

slide-19
SLIDE 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

  • utbound 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

slide-20
SLIDE 20

Behave-App Recommendation

In order to establish TCP between two candidates2,

◮ open 3 sockets (s1, s2, s3) ◮ bind() them all to the same local port ◮ listen(s1) ◮ connect(s2, peer.s1) ◮ connect(s3, peer.s3)

2think ICE

Guha et al. draft-ietf-behave-tcp-01