- RFC1323 Timestamp. No timestamp if initial value is 0. Windows,Linux RFC1323 compatibility?

PDA

View Full Version : RFC1323 Timestamp. No timestamp if initial value is 0. Windows,Linux RFC1323 compatibility?


Bartek Wydrowski
07-24-2004, 10:06 PM
Dear NetDev,

I have noticed that when my Windows XP PC makes a TCP connection to my Linux
PC,
the Windows PC sends a timestamp option with timestamp value 0 in the
starting SYN-
and linux seems to ignore this timestamp and does not communicate with
timestamp option
for the rest of the connection. There appears to be code in the TCP_IPV4.C
file
which checks for this condition and ignores timestamps if rcv_tsval == 0. I
have included
this code, as well as the TCP dump of this behaviour at the bottom.

a) Is there a reason why Linux should not do timestamps if timestamp value
in SYN is zero?
b) Does this not cause problems with Windows and Linux RFC1323
compatibility? (It seems like windows sends timestamp 0 in SYN packet -
perhaps as a rule).
c) Can this test condition be removed without other consequences?

Thanks
Bartek Wydrowski


Kernel Code: in tcp_ipv4.c
----------------------------

if (tp.saw_tstamp && tp.rcv_tsval == 0) {
/* Some OSes (unknown ones, but I see them on web server,
which
* contains information interesting only for windows'
* users) do not send their stamp in SYN. It is easy case.
* We simply do not advertise TS support.
*/
tp.saw_tstamp = 0;
tp.tstamp_ok = 0;
}

TCPdump of this behaviour:
-----------------------------

windows XP Box > Linux Box 1991982409:199198240 9(0) win 64240 <mss
1460,nop,wscale 0,nop,nop,timestamp 0 0,nop,nop,sackOK> (DF)

Linux Box > windows XP Box S 2478701299:247870129 9(0) ack 1991982410 win
5840 <mss 1460,nop,nop,sackOK,nop,wscale 8> (DF)