DHCP problems in cPCI chassis

H

Henry Markov

This problem seems unique to Compact PCI (cPCI) and DHCP servers that support
port based IP addressing although some of the issues are probably generic to any
RBS system. The long post that follows is intended to serve two purposes; it
documents some issues that users of this kind of system should be aware of and
it asks a question about how XPe can be convinced to start the DHCP client
protocol with a discover message rather than a request for whatever IP address
the target happened to get at FBA.

Our system will consist of multiple cPCI racks each having 18 server blades and
two gigabit ethernet switch blades. The switch blades support DHCP and port
based addressing whereby the IP address can be correlated to the rack slot
number, i.e. one might choose 192.168.M.N to be assigned to the server in slot N
of chassis M. This allows easy identification of a physical location for errors
identified by IP address.

For an RBS based architecture we have found the following incompatibilities with
the FBA process:

1. If we execute FBA while DHCP is active, the target is assigned its port based
IP address which is apparently "remembered" in the registry. After deployment,
when many servers remote boot at approximately the same time, each starts the
DHCP protocol with a request message (rather than discover) and all ask for the
identical IP address -- the one that was assigned at FBA. This produces a race
that can result in some servers getting no IP address as follows. Server 1
sends a request for the remembered address which happens to be the address it
should get based on port based addressing. DHCP gives it this address. Server
2 looses the boot up race to 1 and it comes up just after 1. It also asks for
the remembered address but the DHCP server refuses and it offers a different
address. Server 2 asks one more time for the remembered address but the DHCP
server can not oblige. The DHCP server tells server 2 that it has no more
addresses because server 2 is refusing the only address that it is entitled to
under port based addressing. Server 2 stops asking for an address.

2. To defeat the above problem we executed FBA with the DHCP server inactive.
We find that the clients do not remember an address doled out by the DHCP server
but they do remember a 169.255.xxx.xxx address. I believe Windows machines use
this address range as some kind of default under certain conditions when they
can not get an IP address. We observe that all machines start the DHCP protocol
requesting this address. The DHCP server refuses a few times before the clients
give up with their request and send a discover. The needless exchange of
messages requesting a 169.255.xxx.xxx address results in boot times much longer
than they could be.

How can I convince my XPe image that it should start the DHCP protocol with a
discover message rather than a request for an address that it can never get?

Henry
 
K

KM

Henry,

1) I am wondering if you tried to call DhcpCApiCleanup function of the DHCP Client API?
http://msdn.microsoft.com/library/en-us/dhcp/dhcp/dhcpcapicleanup.asp

You probably either call it just before you capture the image for next remote boot (no connections to network) or on every boot.

2) You can disable automatic private IP addressing (but not DHCP) for a particular network interface by editing the registry
([HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters],"IPAutoconfigurationEnabled"=0).
Read more here:
http://www.microsoft.com/resources/...Windows/XP/all/reskit/en-us/prjj_ipa_eiih.asp
 
H

Henry Markov

KM,
Thanks. I can't figure out from your hints where and when I would call
DhcpCApiCleanup so I am focusing on your 2nd suggestion. I didn't know how I
might edit the registry until I found:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/winpepe.asp
which explains how WinPE can be used to edit the registry either pre or post
FBA. I assume the right thing to do is to edit the post FBA image. I can
navigate down the registry to subkey Parameters where I see about 14 entries.
Is this where you are suggesting that I add IPAutoconfigurationEnabled with
value 0? The document you referenced mentions a deeper dive down the registry
to subkey Interfaces\interface-name. In the post FBA registry hive this subkey
has no values defined so I am uncertain how to reconcile the documentation, your
suggestion, and what I see.

Henry
 
K

KM

Henry,

You confused me a little bit with your reply. What WinPE has to do with your XPe image?

You can edit registry online or offline with regedit (just load up the system hive). I think it is a good idea to set the value in
PostFBA image. Although it does not hurt to test both :)

I actually suggest you to set the IPAutoconfigurationEnabled value under [HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
which affects all [any] TCP/IP adapter.

Or you can set it under [HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface-name] to apply to a particular
interface.



With regards to the DhcpCApiCleanup.. Just make sure to call when you need to get rid of the IP address the target has been assigned
with.
Again, if you are not sure when to call it, make a few different tests.

KM
KM,
Thanks. I can't figure out from your hints where and when I would call
DhcpCApiCleanup so I am focusing on your 2nd suggestion. I didn't know how I
might edit the registry until I found:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/winpepe.asp
which explains how WinPE can be used to edit the registry either pre or post
FBA. I assume the right thing to do is to edit the post FBA image. I can
navigate down the registry to subkey Parameters where I see about 14 entries.
Is this where you are suggesting that I add IPAutoconfigurationEnabled with
value 0? The document you referenced mentions a deeper dive down the registry
to subkey Interfaces\interface-name. In the post FBA registry hive this subkey
has no values defined so I am uncertain how to reconcile the documentation, your
suggestion, and what I see.

Henry
Henry,

1) I am wondering if you tried to call DhcpCApiCleanup function of the DHCP Client API?
http://msdn.microsoft.com/library/en-us/dhcp/dhcp/dhcpcapicleanup.asp

You probably either call it just before you capture the image for next remote boot (no connections to network) or on every boot.

2) You can disable automatic private IP addressing (but not DHCP) for a particular network interface by editing the registry
([HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters],"IPAutoconfigurationEnabled"=0).
Read more here:
http://www.microsoft.com/resources/...Windows/XP/all/reskit/en-us/prjj_ipa_eiih.asp
 
R

Roger Levy

KM,
If you follow the link he provided maybe you'd be less confused. The
technical note is recommending that regedit in the WinPE environment be used
to edit the registry of XPe images. Is the technical note not giving good
information? Is there a better way? Newbies like me need to know.

RC

KM said:
You confused me a little bit with your reply. What WinPE has to do with your XPe image?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxpesp1/html/winpepe.asp
 
K

KM

Roger,

Sorry, I should have read the link page to the end :)

Well.. You can definitely use WinPE to edit the registry offline.
However, when I said "editing registry offline" I did not care how you would do that. There is a bunch of way to do that depending
on your access to the target files offline. If it is easier for you to boot off a CD into WinPE, please do so.

I was under impression that Henry used RBS to deploy his image to the target. Therefore he already found a way how to capture the
image offline and I should have not cared how he would edit the system hive offline.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Top