Thanks, Michael,

Could you try to establish the real MTU that your USB NIC is prepared to
accept:

a) start up iPXE and enter the iPXE command line via Ctrl-B

b) type "dhcp" to acquire an IP address, and "route" to show the acquired
address

c) ping iPXE from the server to check that it responds to pings

d) use the "-s <size>" option to try increasingly larger ping packets until you find the size at which iPXE stops responding. (I would expect "-s 1472" to
be the largest value that works, corresponding to an MTU of 1500 after
allowing for 28 bytes of IP+ICMP header.)

After testing, the largest value that works is "-s 1464". It inspired me to try to setup mtu as 1492. Amazingly, it works. I can see logo of windows xp now!

Although it finally hanged at windows blue screen (looks like to be 0x7B), I think it should relate to "boot form usb device" issue this time. I will try to install windows xp into usb flash drive, and use it to create a new image for a trial.

I deeply appreciated all of your great help. Thank you so much!

Regards,
Jerry

----- Original Message ----- From: "Michael Brown" <[email protected]>
To: <[email protected]>
Cc: "jerrycheng-hinet" <[email protected]>
Sent: Friday, March 18, 2011 6:42 PM
Subject: Re: [ipxe-devel] SAN Boot Windows XP with USB-NIC.


On Friday 18 Mar 2011 09:24:11 jerrycheng-hinet wrote:
My NB has an on board NIC. It can successfully sanboot windows xp. I
captured the wireshark trace of the successful case and compare it to
USB-NIC case.

Please open the attached wireshark trace files. For the same read command, frame 3 looks a bit different. Refer to the [Protocols in frame] field, the
success case is "eth:ip:tcp:iscsi", the USB-NIC case is "eth:ip:tcp".

Do you have idea about why server side respond different for the same read
command? Thanks very much!

I see "eth:ip:tcp:data" for both; I think this is some kind of artefact in
wireshark rather than a real problem.

However, I do notice something interesting regarding the TCP segment sizes:

In the trace "wireshark_ipxe_xp_ok_part", frame 2 is a 2962-byte frame
containing bytes [1,2897) in the sequence space. The ACK for this frame is
split across frame 4, which ACKs [1,1449), and frame 5, which ACKs
[1449,2897).  There is no logic within iPXE that would cause the ACK to be
split in this way.

In the trace "wireshark_mtu1500_fail_part", frame 2 is also a 2962-byte frame, which should not be happening with an MTU of 1500. Even more interestingly,
the retransmissions of this frame (in frames 6, 7, and 8) are 1514-byte
frames.

I am not convinced that wireshark is truly capturing the packets that are
being sent out on the wire. There appears to be some kind of TCP segmentation
offload still in effect on the server side.

Could you try to establish the real MTU that your USB NIC is prepared to
accept:

a) start up iPXE and enter the iPXE command line via Ctrl-B

b) type "dhcp" to acquire an IP address, and "route" to show the acquired
address

c) ping iPXE from the server to check that it responds to pings

d) use the "-s <size>" option to try increasingly larger ping packets until you find the size at which iPXE stops responding. (I would expect "-s 1472" to
be the largest value that works, corresponding to an MTU of 1500 after
allowing for 28 bytes of IP+ICMP header.)

Thanks,

Michael

_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo/ipxe-devel

Reply via email to