http://blogs.technet.com/b/pingpawan/archive/2014/01/12/deep-dive-pxe-boot-flow-for-sccm-2007-2012.aspx
From the link we see the SCCM client process transfers the bootmgr.exe which TFTP loads the bcd then the Boot.wim
The bootmgr.exe does have the code for dealing with the "windowsize" TFTP option (look for the word "windowsize" with a hex editor) but the client only proposes its use to the TFTP server if the corresponding parameter
was added to the just retrieved BCD.
WDS uses an static BCD while SCCM uses a dynamically created one. It is \BIN\I386\smspxe.dll or \BIN\X64\smspxe.dll the component that creates the SCCM's BCD .
smspxe.dll parses RamDiskTFTPBlockSize but it never parses RamdiskTFTPWindowSize. I can clearly see the code that injects RamDiskTFTPBlockSize in the BCD but the code that injects RamdiskTFTPWindowSize is obviously missing.
I do not have a running SCCM handy right now then if you guys have a minute just try this experiment:
1) back-up your BIN\X64\smspxe.dll
2) open it with a hex editor like Hex Workshop (stop the corresponding service if locked)
3) search the
"hexadecimal" sequence 07000035, (it should appear only once 5.0.7804.1000 ).
4) replace the byte "07" with "08" and save the change (it should look like 08000035)
5) Set the RamDiskTFTPBlockSize registry key to 8 or 4
6) Boot a client and a Wireshark capture will tell you if the TFTP transfer sends 8 or 4 consecutive blocks before to stop for an ACK.
What we just did was a dirty patch of the dll that will read RamDiskTFTPBlockSize from the registry but it should inject its value in the BCD as the corresponding RamdiskTFTPWindowSize parameter.
If it works the client will receive in the BCD RamdiskTFTPWindowSize=8 and itll take a default for the missing RamDiskTFTPBlockSize value.
If anything goes wrong just replace the patched dll with the back-up and delete the RamDiskTFTPBlockSize registry key. No big deal.
Let me know if it works. BTW using RamDiskTFTPBlockSize for improving speed is usually not good as it leads to IP fragmentation.
Best,
Patrick
Edit:
OK it works, then please consider this is just for testing purposes absolutely not for production. The idea was just to prove that the SCCM client TFTP windowsize capabilities "are" really there; it is eventually MS who should add the windowsize handling
to smspxe.dll in the correct way.
Best,
Patrick
-
Proposed as answer by
bcehr
Friday, December 12, 2014 4:42 PM
-
Edited by
_Pat
Saturday, December 13, 2014 3:08 PM