[ipxe-devel] Windows having problems parsing iBFT from recent iPXE versions?
Floris Bos
bos at je-eigen-domein.nl
Fri Oct 31 22:07:35 UTC 2014
On 10/31/2014 04:56 PM, Michael Brown wrote:
> On 30/10/14 15:31, Floris Bos wrote:
>>> Fantastic debugging work. Could you possibly copies post the two
>>> captures (either as attached raw .pcap files, or uploaded to
>>> https://appliance.cloudshark.org/upload/ ?
>>
>> https://www.cloudshark.org/captures/a781ff622adc
>> https://www.cloudshark.org/captures/0968b06118f5
>
> Thanks!
>
> So, the problem seems to be triggered by the delayed-ACK behaviour
> from commit d28bb51 ("[tcp] Defer sending ACKs until all received
> packets have been processed"). I don't think commit 18d0818 ("[tcp]
> Do not send RST for unrecognised connection") should make any
> difference, since there are no unrecognised connections for which a
> RST could be sent within these traces.
As mentioned, the dumps are incomplete, because they were done on the
Ethernet interface of the host system.
In my test environment the host system runs two Virtualbox virtual machines:
1) the VM that is doing the network booting.
2) a VM that plays for installation server, and runs
DHCP/tftp/webserver/samba server software.
Direct communication between VM 1 and VM 2 is handled inside Virtualbox,
and does not touch the Ethernet interface of the host system, and
therefore does not appear in the earlier dumps.
I just did some more testing, and executed tcpdump on the VM that plays
installation server.
It seems iPXE does not close down the connection to the webserver it
downloads wimboot, boot.wim, etc. from properly.
I'm seeing retransmissions of the FIN,ACK packet from webserver to iPXE,
while I think iPXE is supposed to sent an ACK back as last step to close
the connection?
With the patches reversed, it sends a RST,ACK.
Unmodified HEAD:
https://www.cloudshark.org/captures/263f2e1d2b5d (last part of the
dump, as the whole dump file is over 200 MB due to it downloading boot.wim)
==
122180 54.807223 192.168.178.4 192.168.178.100 TCP
66 50651→80 [ACK] Seq=92 Ack=204501041 Win=262144 Len=0
TSval=1379129 TSecr=91537
122181 54.807367 192.168.178.4 192.168.178.100 TCP
66 50651→80 [ACK] Seq=92 Ack=204502489 Win=262144 Len=0
TSval=1379129 TSecr=91537
122182 54.807518 192.168.178.4 192.168.178.100 TCP
66 50651→80 [FIN, ACK] Seq=92 Ack=204503725 Win=262144 Len=0
TSval=1379129 TSecr=91537
122183 54.807575 192.168.178.100 192.168.178.4 TCP 66
80→50651 [FIN, ACK] Seq=204503725 Ack=93 Win=5792 Len=0 TSval=91538
TSecr=1379129
122184 55.039909 192.168.178.100 192.168.178.4 TCP 66
[TCP Retransmission] 80→50651 [FIN, ACK] Seq=204503725 Ack=93 Win=5792
Len=0 TSval=91562 TSecr=1379129
122185 55.520612 192.168.178.100 192.168.178.4 TCP 66
[TCP Retransmission] 80→50651 [FIN, ACK] Seq=204503725 Ack=93 Win=5792
Len=0 TSval=91610 TSecr=1379129
122186 55.732866 CadmusCo_23:27:ac Broadcast ARP 60 Who
has 192.168.178.99? Tell 192.168.178.4
122187 56.479844 192.168.178.100 192.168.178.4 TCP 66
[TCP Retransmission] 80→50651 [FIN, ACK] Seq=204503725 Ack=93 Win=5792
Len=0 TSval=91706 TSecr=1379129
122188 58.399843 192.168.178.100 192.168.178.4 TCP 66
[TCP Retransmission] 80→50651 [FIN, ACK] Seq=204503725 Ack=93 Win=5792
Len=0 TSval=91898 TSecr=1379129
==
With patches reversed:
https://www.cloudshark.org/captures/9dc3df8dfbca
==
153034 45.413516 192.168.178.4 192.168.178.100 TCP
66 57516→80 [ACK] Seq=92 Ack=204501041 Win=262144 Len=0
TSval=1393839 TSecr=172239
153035 45.413622 192.168.178.4 192.168.178.100 TCP
66 57516→80 [ACK] Seq=92 Ack=204502489 Win=262144 Len=0
TSval=1393839 TSecr=172239
153036 45.413717 192.168.178.4 192.168.178.100 TCP
66 57516→80 [FIN, ACK] Seq=92 Ack=204503725 Win=262144 Len=0
TSval=1393839 TSecr=172239
153037 45.413765 192.168.178.100 192.168.178.4 TCP 66
80→57516 [FIN, ACK] Seq=204503725 Ack=93 Win=5792 Len=0 TSval=172239
TSecr=1393839
153038 45.649074 192.168.178.100 192.168.178.4 TCP 66
[TCP Retransmission] 80→57516 [FIN, ACK] Seq=204503725 Ack=93 Win=5792
Len=0 TSval=172263 TSecr=1393839
153039 46.129038 192.168.178.100 192.168.178.4 TCP 66
[TCP Retransmission] 80→57516 [FIN, ACK] Seq=204503725 Ack=93 Win=5792
Len=0 TSval=172311 TSecr=1393839
153040 46.371632 CadmusCo_23:27:ac Broadcast ARP 60 Who
has 192.168.178.99? Tell 192.168.178.4
153041 46.371648 CadmusCo_23:27:ac Broadcast ARP 60 Who
has 192.168.178.100? Tell 192.168.178.4
153042 46.371653 CadmusCo_98:e8:ee CadmusCo_23:27:ac ARP
42 192.168.178.100 is at 08:00:27:98:e8:ee
153043 46.372105 192.168.178.4 192.168.178.100 TCP
60 57516→80 [RST, ACK] Seq=93 Ack=204503725 Win=0 Len=0
153044 46.372129 192.168.178.4 192.168.178.100 TCP
60 57516→80 [RST, ACK] Seq=93 Ack=204503725 Win=0 Len=0
153045 46.372133 192.168.178.4 192.168.178.100 TCP
60 57516→80 [RST, ACK] Seq=93 Ack=204503725 Win=0 Len=0
153046 85.887963 Synology_26:ac:0e Broadcast ARP 60 Who
has 192.168.178.4? Tell 192.168.178.99
153047 86.885641 Synology_26:ac:0e Broadcast ARP 60 Who
has 192.168.178.4? Tell 192.168.178.99
==
Yours sincerely,
Floris Bos
More information about the ipxe-devel
mailing list