iPXE discussion forum

Full Version: Another Slow HTTP Download Thread
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello, not new to PXE booting, but am moving over to IPXE for my BIOS production environment. To make a long story short, I'm not able to get anywhere near the HTTP speeds everyone else is getting with their IPXE. My current setup is:

ipxe.kpxe - latest from Rom-o-Matic as of 10/12/2017
ipxe.kpxe - Built from git source aug 2017 (don't have exact version)

Server is on a Gen2 Hyper-V Machine
I have tried:
miniweb HTTP Server
lighthttp HTTP Server
Windows 10 Pro IIS Web server
Currently NGIX Web server

Normal clients can, with a browser can do a file request and get it in the time one would expect through an HTTP download. However, when using IPXE and either wimoot or memdisk (loading a Parted Magic ISO to rule out wimboot), HTTP is actually slower then TFTP! My current infrastructure loads Windows PE images with TFTP, and an increased block size which helped the speed, but the real puzzle is when I put IPXE into it, my HTTP speeds are very slow. 5 minutes for a 600MB Windows PE WIM.

I have tried a variety of clients, as this is a PC repair shop, and they all exhibit the same behaviour. I have ruled out the HTTP server, as I went through the ones above, and the throughput was the same, slow via IPXE and very quick with a browser. Are there any features to "tune" in IPXE? I build an IPXE via Rom-O-Matic and even with native drivers, things are still slow with HTTP..
ipxe.kpxe is not a valid target when building, please make sure you actually have undionly.kpxe, you can find official builds at http://boot.ipxe.org
Or build it yourself from sources, the master branch as http://git.ipxe.org/ipxe.git is the latest

Gen2 of Hyper-V only has EFI support AFAIK so undionly.kpxe (which is PCBIOS) is not likely to work, for the gen2 hyper-V use snponly.efi instead from the above page.
Another issue with Gen2 of Hyper-V is that ipxe is unable to use it's own drivers for the nic since the firmware clings to it to hard, so it has to fall back to the SNP driver, which is not always as optimized.

If you can try to use a intel gigabit nic instead and check that with the official builds of ipxe (just to rule out any kind of ipxe config issue or rom-o-matic issue) that would be great.
And then from there we can try to figure out what the issue is in your particular case.

It might also be worth doing a packet dump with for example wireshark and grab the http request and response headers to try and figure out if there is some header missing that is causing this issue.
Roger. I used the undionly.kpxe from boot.ipxe.org. The server is hosted on Gen II Hyper-V. The Client has been run on multiple systems, the server should not matter as TFTP and HTTP work at the correct speeds from clients accessing them.

Will run wireshark, but it sounds like I am the only one having this problem. If the server was slow, then my TFTP loads would be slow too, and they are not, they are a "normal" speed (1 Minutes for a 700MB image).
Sorry missed the part about it's the server that is hyper-v gen2, which is indeed irrelevant.

We need more info, if you can, try ipxe.pxe instead, and document which nic is used by using ifstat in ipxe
Also make sure that the link speed is full gigabit and not limited to 100 or even 10 mbit.
Well, turns out I had 3 laptops that were just slow with IPXE. Of course, a Gen I Hyper-V Client will be slow due to the 100MB lan, the three I had were current Sandy Bridge based laptops, but with Realtek gigabit lan. I have successfully booted several today with expected speeds, what are the chances? Anyway, thread closed.
Reference URL's