On 04/09/15 14:39, BALATON Zoltan wrote:

> with http transfer commencing normally after this, while with OVMF and 
> syslinux.efi I get the following:
> 
> TCP 1654 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=64 TSval=1039 TSecr=0
> TCP http > 1654 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=64 
> TSval=1151334911 TSecr=1039
> TCP 1654 > http [ACK] Seq=1 Ack=1 Win=2097152 Len=0 TSval=1039 TSecr=0
> TCP http > 1654 [RST] Seq=1 Win=0 Len=0

After reading up on TSEcr a little bit in
<http://tools.ietf.org/html/rfc1323>, I think TSecr=0 is wrong in the
third packet (ie. the ACK that is sent by
MdeModulePkg/Universal/Network/Tcp4Dxe).

I think it should be TSecr=1151334911. Since it is not, I believe the
server (FreeBSD) rightfully rejects the packet, and resets the connection.

I found some hits for TSEcr in
"MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Option.c", but (very
superficially) those don't look related to outgoing packages.

The RFC says,

         The Timestamp Echo Reply field (TSecr) is only valid if the ACK
         bit is set in the TCP header; if it is valid, it echos a times-
         tamp value that was sent by the remote TCP in the TSval field
         of a Timestamps option.  When TSecr is not valid, its value
         must be zero.  The TSecr value will generally be from the most
         recent Timestamp option that was received; however, there are
         exceptions that are explained below.

I didn't find anything that would qualify the ACK in question as
"exceptional".

I believe the above language may have been misunderstood as "if you set
TSecr to 0, that's okay, it will simple be considered invalid" -- I
think the wording means, "if timestamping is present, and you send an
ACK, you *must* set TSecr correctly -- subject to some exceptions.
Otherwise, set TSecr to 0".

So this could be a genuine issue in
"MdeModulePkg/Universal/Network/Tcp4Dxe", but I can't really tell.
CC'ing Siyuan (see Maintainers.txt).

Thanks
Laszlo

------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to