Implementation Report on Experiences with Various TCP RFCs

advertisement
Implementation Report on
Experiences with Various TCP
RFCs
Murari Sridharan muraris@microsoft.com
Deepak Bansal dbansal@microsoft.com
Dave Thaler dthaler@microsoft.com
IETF 68 - TSVAREA
1
We did a new implementation of a
bunch of RFCs…
Started new TCP/IP stack in 2001, shipped in
Windows Vista.
Including:
• Window Scaling (RFC 1323, PS)
• ECN (RFC 3168, PS)
• DSACK (RFC 3708, EXPERIMENTAL)
• F-RTO (RFC 4138, EXPERIMENTAL)
Then we did lots of testing of the RFCs above…
IETF 68 - TSVAREA
2
Window Scaling (RFC 1323), 1/3
• Previously in Windows, but off by default
• We ran into a number of problems testing it for Vista:
– IGD problems: multiple popular vendors, popular models
• Popular vendor #1, several models having SPI block TCP
handshake with WS: automatic detection and recovery at end
system
• Popular vendor #2, models with SPI drop packets on connections
after a large scaling factor (>2) successfully negotiated during initial
handshake: no way to recover at TCP layer
– Firewall problems: multiple vendors have almost identical bug in
old versions
• Multiple popular vendors, multiple old models (one only if a nondefault feature enabled) drop packets if scaling factor > 2 has been
negotiated
• Core Issue: Broken firewall logic that does not scale window in
TCP headers correctly while determining how much data to let
through
IETF 68 - TSVAREA
3
Window Scaling, 2/3
• More problems…
– Broken websites: websites running old versions of
firewalls in front of their web servers are broken when
scaling factor > 2 is negotiated
• A more thorough testing (of over 10 million websites) has
revealed 2-4% websites impacted by this issue
– Proxy problems:
• Popular web proxy TCP splicing option (has been disabled
by default since 2006) has problems understanding the scale
factor.
IETF 68 - TSVAREA
4
Window Scaling, 3/3
• Bottom Line:
– Problems are fairly likely if used by a
consumer (not behind a proxy)
– Much less problematic if behind a proxy since
proxy may not negotiate Window Scaling
• Result: Limited to scale factor of 2 in
Windows Vista for HTTP connections
IETF 68 - TSVAREA
5
ECN (RFC 3168), 1/2
•
•
•
New for Windows Vista
Straightforward to implement
We ran into a number of problems:
–
IGD problem #1: one of the most popular versions from one of
the most popular vendors
•
•
–
When a data packet arrives with either ECT(0) or ECT(1)
(indicating successful ECN capability negotiation) indicated,
router crashed
Cannot be recovered at TCP layer
IGD problem #2: multiple popular vendors with popular models
•
•
When the 3-way handshake completes, prior to any data being
sent, router hit a bug causing further packet loss
Easily detected and recovered at TCP layer
IETF 68 - TSVAREA
6
ECN, 2/2
• Bottom Line:
– Problems are fairly likely if used by a
consumer (bad IGDs exist)
– Much less problematic in campuses and
enterprises (IGDs less likely to be present)
• Result: Turned off by default in Windows
Vista
IETF 68 - TSVAREA
7
DSACK (RFC 3708)
•
•
•
•
New for Windows Vista
Straightforward to implement
No issues yet
Now enabled by default
• Actual benefits hard to quantify to a
specific improvement in real world
IETF 68 - TSVAREA
8
F-RTO (RFC 4138)
•
•
•
•
New for Windows Vista
Straightforward to implement
No issues yet
Now enabled by default
• We have seen improvements in wireless
environments but we have not isolated the
benefits to specific enhancements
• We agree with advancing F-RTO to PS
IETF 68 - TSVAREA
9
Questions?
• Details will be at
http://support.microsoft.com/kb/934430
(not published yet)
IETF 68 - TSVAREA
10
Download