svn commit: r42215 - head/en_US.ISO8859-1/htdocs/news/status

Gabor Pali pgj at FreeBSD.org
Tue Jul 9 08:48:08 UTC 2013


Author: pgj
Date: Tue Jul  9 08:48:08 2013
New Revision: 42215
URL: http://svnweb.freebsd.org/changeset/doc/42215

Log:
  - Add a Q2 report on improved TCP SYN cookies
  
  Submitted by:	andre

Modified:
  head/en_US.ISO8859-1/htdocs/news/status/report-2013-04-2013-06.xml

Modified: head/en_US.ISO8859-1/htdocs/news/status/report-2013-04-2013-06.xml
==============================================================================
--- head/en_US.ISO8859-1/htdocs/news/status/report-2013-04-2013-06.xml	Tue Jul  9 08:33:48 2013	(r42214)
+++ head/en_US.ISO8859-1/htdocs/news/status/report-2013-04-2013-06.xml	Tue Jul  9 08:48:08 2013	(r42215)
@@ -18,7 +18,7 @@
 
     <!-- XXX: keep updating the number of entries -->
     <p>Thanks to all the reporters for the excellent work!  This report
-      contains 28 entries and we hope you enjoy reading it.</p>
+      contains 29 entries and we hope you enjoy reading it.</p>
 
     <!-- XXX: set date for the next set of submissions -->
     <p>The deadline for submissions covering between July and September 2013
@@ -1579,4 +1579,84 @@ functionality through <tt>pkg(8)</tt>.</
 	and <tt>CAP_RECV_RIGHTS</tt>.</task>
     </help>
   </project>
+
+  <project cat='kern'>
+    <title>Improved TCP SYN Cookies</title>
+
+    <contact>
+      <person>
+	<name>
+	  <given>Andre</given>
+	  <common>Oppermann</common>
+	</name>
+	<email>andre at FreeBSD.org</email>
+      </person>
+    </contact>
+
+    <links>
+      <url href="http://docs.freebsd.org/cgi/getmsg.cgi?fetch=28838+0+current/freebsd-net">Description</url>
+      <url href="http://people.freebsd.org/~andre/syncookie-20130708.diff">Patch</url>
+    </links>
+
+    <body>
+      <p>We have had a SYN cookie implementation for quite some time now
+	but it has some limitations with current realities for window
+	scaling and SACK encoding the in the few available bits.</p>
+
+      <p>This patch updates and improves SYN cookies mainly by:</p>
+
+      <ol>
+	<li>Encoding of MSS, WSCALE (window scaling) and SACK into the
+	  ISN (initial sequence number) without the use of timestamp
+	  bits.</li>
+
+	<li>Switching to the very fast and cryptographically strong
+	  SipHash-2-4 hash MAC algorithm to protect the SYN cookie
+	  against forgery.</li>
+      </ol>
+
+      <p>The common parameters used on TCP sessions have changed quite a
+	bit since SYN cookies very invented some 17 years ago.  Today we
+	have a lot more bandwidth which makes the use window scaling
+	almost mandatory.  Also SACK has become standard as it makes
+	recovering from packet loss much more efficient.</p>
+
+      <p>The original SYN cookies method only stored an indexed MSS
+	values in the cookie.  This obviously is not sufficient anymore
+	and breaks in the presence of WSCALE.  WSCALE information is
+	only exchanged during SYN and SYN-ACK.  If we cannot keep track
+	of it then we severely underestimate the available send or
+	receive window, compounded with the fact that with large window
+	scaling the window size information on the TCP segment header
+	would be even lower numerically.</p>
+
+      <p>A number of years back SYN cookies have been extended to store
+	the additional state in the TCP timestamp fields, if available
+	on a connection.  It has been adopted by Linux as well.  While
+	timestamps are common among the BSD, Linux and other Unix
+	systems, Windows never enabled them by default, thus they are
+	not present for the vast majority of clients seen on the
+	Internet.</p>
+
+      <p>The new improvement in this patch moves all necessary
+	information into the ISN again removing the need for timestamps.
+	Both the MSS and send WSCALE are stored in 3 bit indexed form
+	together with a single bit for SACK.  While we cannot represent
+	all possible MSS and WSCALE values, both are 16 bit fields in
+	the TCP header, in only 3 bits each this, it turns out, is not
+	actually necessary.</p>
+
+      <p>These improvements allow one to run with SYN cookies only on
+	Internet-facing servers.  However while SYN cookies are
+	calculated and sent all the time, they are only used when the
+	syn cache overflows due to attacks or overload.  In that cause
+	though, you can rest assured that no significant degradation in
+	TCP connection setup happens anymore and that even Windows
+	clients can make use of window scaling and SACK.</p>
+    </body>
+
+    <help>
+      <task>Additional testing on busy servers.</task>
+    </help>
+  </project>
 </report>


More information about the svn-doc-all mailing list