TCP Stack: Challenge ACKs and Timestamps

Oliver Pinter oliver.pinter at hardenedbsd.org
Mon Dec 28 13:15:02 UTC 2015


On Monday, December 28, 2015, Sam Kumar <samkumar99 at gmail.com> wrote:

> Hello,
> I am working with the code for the TCP Stack. I noticed that support for
> Challenge Acks have been added since the latest release (10.2.0), and I
> think I may have found a bug in how they relate to TCP timestamps. All line
> numbers below are those in commit e66e064c45687b5d294565dbd829b419848f7992.
>
> Looking at tcp_input.c, at lines 1594 to 1604, I see code that expects a
> timestamp to be in every segment during the session, if they were
> negotiated when the connection was being established.
> (
>
> https://github.com/freebsd/freebsd/blob/master/sys/netinet/tcp_input.c#L1595
> )
>
> Looking at tcp_input.c, at lines 2161 and 2188, I see that Challenge ACKs
> are sent via calls to tcp_respond().
> (
>
> https://github.com/freebsd/freebsd/blob/master/sys/netinet/tcp_input.c#L2161
> and
>
> https://github.com/freebsd/freebsd/blob/master/sys/netinet/tcp_input.c#L2188
> )
>
> Looking at tcp_subr.c, at line 978, I see that the segment sent by
> tcp_respond() never contains TCP options.
> (
> https://github.com/freebsd/freebsd/blob/master/sys/netinet/tcp_subr.c#L978
> )
>
> Therefore, it seems to me that Challenge ACKs will never contain any TCP
> options. This violates the condition that once timestamps are negotiated,
> they must be present in every segment.
>
> Please let me know if I am mistaken, or if this is actually a bug.


Cc hiren and gnn


>
> Sam Kumar
> _______________________________________________
> freebsd-current at freebsd.org <javascript:;> mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org
> <javascript:;>"
>


More information about the freebsd-current mailing list