Bug 206122

Summary: tcp keep-alive message sent without timestamp option
Product: Base System Reporter: Yongmin Cho <yongmincho82>
Component: kernAssignee: freebsd-net (Nobody) <net>
Status: Closed FIXED    
Severity: Affects Only Me CC: hiren
Priority: --- Keywords: patch
Version: CURRENT   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
tcp keep-alive message sent with timestamp option. none

Description Yongmin Cho 2016-01-11 01:28:46 UTC
Created attachment 165382 [details]
tcp keep-alive message sent with timestamp option.

Hi, all.

I have checked tcp keep-alive in freebsd head.
According to RFC7323, tcp timestamp option must be sent with
keep-alive packet after timestamp option has been negotiated.
So I have tested this on linux-3.13.0.
tcp keep-alive message is sent with timestamp option on linux-3.13.0.
But on freebsd head, tcp keep-alive packet is sent without timestamp option
after negotiated. So I made patch file based on freebsd head.
Please check this patch file. any feedback will be welcome.

Thank you in advance for your answers!

According in RFC7323:
    Once TSopt has been successfully negotiated, that is both <SYN>
    and <SYN,ACK> contain TSopt, the TSopt MUST be sent in every non-<RST>
    segment for the duration of the connection, and SHOULD be sent in
    an <RST> segment (see Section 5.2 for details).  The TCP SHOULD
    remember this state by setting a flag, referred to as Snd.TS.OK,
    to one. If a non-<RST> segment is received without a TSopt, a TCP SHOULD
    silently drop the segment. A TCP MUST NOT abort a TCP connection
    because any segment lacks an expected TSopt.
Comment 1 Hiren Panchasara freebsd_committer freebsd_triage 2016-12-22 17:53:53 UTC
I believe r296455 by jtl@ fixed this. If not, please reopen.