SOLVED weird tftp slow file transfer transferring files to any clients


  • So were still running testing and we are trying to get laptops to boot with a highly customized version of windows 10 created by MDT.

    This actually works out amazingly. Not needing to use MDT

    For testing reasons our setup is a HP elitebook g4 with windows 10. The Fog server is a centos box installed under hyperv. The intention here is to airgap the PXE/network boot infrastructure from the rest of the network. Also for portability so we can easily copy the setup over to our remote office. So Effectively our setup is a point-to-point network since we also have tested the below with directly connected cables, temporarily removing unmanaged switches between the 2 devices.

    With that background set. heres the actual issue.

    We create the 300MB windows.iso file and ftp it over to the fog server following theese instructions: https://forums.fogproject.org/topic/10944/using-fog-to-pxe-boot-into-your-favorite-installer-images/17

    The PXE kernel (ipxe.efi) transfer completely fine. The Fog menu shows up and the mdt option loads fine. it can find all the files required.

    The first 2 files transfer fine probably because theyre so small. But when it gets to “boot.wim” file the file transfer speed maxes out at 8mbps. We can see this using Centos’s “nload package”

    Things we have tried:

    • test bandwidth with “iperf” shows the normal 1gbps on a point-to point link
    • change cables
    • change hosting laptop from a hp elitebook g4 to a g3 and switching out hyperv to vmware workstation player.
    • change hosting to an esxi server
    • ive tried changing kernels, but it doesnt seem like any of the ones provided other than ipxe.efi actually work for uefi-only machines, which is what we are booting.

    Heres some weird quirks too

    Since the only issue is network speeds here, im close to saying well just deal with the files loading for 10 minutes before we can get into the MDT software.

    So Im pretty much all out of ideas at this point.

  • Moderator

    So once you move over the files to the web server base path you would adjust your ipxe menu files as such.

    original

    set tftp-path tftp://${fog-ip}
    set pe-path ${tftp-path}/os/winpe
    kernel ${tftp-path}/wimboot gui
    imgfetch --name BCD ${pe-path}/BCD BCD
    imgfetch --name boot.sdi ${pe-path}/boot.sdi boot.sdi
    imgfetch --name boot.wim ${pe-path}/boot.wim boot.wim
    boot || goto MENU
    

    Using the http protocol, simple hack to test Just change the base URI.

    set tftp-path http://${fog-ip}
    set pe-path ${tftp-path}/os/winpe
    kernel ${tftp-path}/wimboot gui
    imgfetch --name BCD ${pe-path}/BCD BCD
    imgfetch --name boot.sdi ${pe-path}/boot.sdi boot.sdi
    imgfetch --name boot.wim ${pe-path}/boot.wim boot.wim
    boot || goto MENU
    

    Also the files do not “need” to exist on the fog server they could exist on any http server such as IIS. You would just replace ${fpg-ip} with the IP address of any local http server. It makes it a bit messier to have files scattered around different servers but its possible.


  • WOW that solved it.
    changed it from tftp to http and instantly see gigabit transfers.
    thanks for your help @george1421
    also noteworthy to make sure your files are moved over to the default http directory of /var/www/html

  • Moderator

    So once you move over the files to the web server base path you would adjust your ipxe menu files as such.

    original

    set tftp-path tftp://${fog-ip}
    set pe-path ${tftp-path}/os/winpe
    kernel ${tftp-path}/wimboot gui
    imgfetch --name BCD ${pe-path}/BCD BCD
    imgfetch --name boot.sdi ${pe-path}/boot.sdi boot.sdi
    imgfetch --name boot.wim ${pe-path}/boot.wim boot.wim
    boot || goto MENU
    

    Using the http protocol, simple hack to test Just change the base URI.

    set tftp-path http://${fog-ip}
    set pe-path ${tftp-path}/os/winpe
    kernel ${tftp-path}/wimboot gui
    imgfetch --name BCD ${pe-path}/BCD BCD
    imgfetch --name boot.sdi ${pe-path}/boot.sdi boot.sdi
    imgfetch --name boot.wim ${pe-path}/boot.wim boot.wim
    boot || goto MENU
    

    Also the files do not “need” to exist on the fog server they could exist on any http server such as IIS. You would just replace ${fpg-ip} with the IP address of any local http server. It makes it a bit messier to have files scattered around different servers but its possible.

  • Moderator

    Ok you have 2 things working against you here,

    1. Linux on Hyper-V
    2. Using the tftp protocol.

    First let me say I don’t know hyper-v so I can’t give you specifics, but…

    1. You need to enable and configure the hyper-v drivers into linux, much like the vmware tools help the clients work better in an vSphere environment. We often do see people running hyper-v complain about slow FOG network speeds. Having the linux integrations for hyper-v does seem to help from what I hear.

    2. The tftp protocol is the slowest of the transfer protocols. It was originally developed to move small image files (tiny in today’s standards). For FOG imaging, fog only uses the tftp protocol to move the boot loaders from the FOG server to the target computer. Once iPXE (boot loader) is running it uses the much faster and scalable http protocol. So in your case you might use http to move the iso image to the target computer. You will need to change the source of the wimboot and other windows loader files from the base directory of /tftpboot to /var/www/html directory.

353
Online

7.6k
Users

14.7k
Topics

138.3k
Posts