difference between behavior after pxe and normal request and their definitions

Glenn Satchell glenn.satchell at uniq.com.au
Sat Jul 19 06:16:37 UTC 2014


Hi Meike

First let me say, that not everything is covered in an RFC, sometimes it
can be left as an implementation detail :) DHCP Client-Ids are one
example, with almost no common clients setting the Client-Id, the notable
exception is Windows.

The usual situation with PXE is that the PXE client boots with no
Client-Id. Then Windows boots and its dhcp client does provide a
Client-Id. To the dhcp server this looks like two different clients,
because the Client-Id is used as the primary identifier.

Whether the lease is expired or not after step 1, the server will try and
match a client with a previously used IP address. Sometimes it can't
because it has reassigned it already, or maybe it thinks that the PXE
client is a different client and won't assign the same address to two
different clients.

In my dhcpd.conf I work around this by using a relatively short lease time
for PXE clients, 10 minutes.

However, in your packet capture the PXE client does send a Client-Id, and
it is the same as the Windows Client-Id, so the chcp server would see this
as the same client asking for a renewal of an existing lease, so it is ok
for it to do so.

regards,
-glenn

On Sat, July 19, 2014 2:11 am, Meike Stone wrote:
> Hello,
>
> we set up a Citrix VDI environment and a few virtual desktops (PVS
> Target devices) boots Windows from network (normally via pxe).
> 1) So at first, the (virtual) NIC from the PVS target device discovers
> and request an IP address and getting the boot image via tftp
> 2) Second, during later booting the OS (Windows), the client network
> stack discover and request an IP address again (same mac).
>
> a) Normaly, the DHCP Server should hand out two different IP
> addresses, if the first lease (from 1)) is not expired.
>   That works as expected (normal network boot without pxe).
>
> b) With a PXE request in 1), the client gets in 2) the same address
> like in 1), regardless whether the lease in 1) is expired or not.
>
> Both are normal, but my question is, where can I find the definitions
> (RFC) for this behavior regarding pxe in the dhcp protocol? I did
> nothing found until now?
> The manual page from dhcp.conf does nothing write about this...
>
> Citrix only made a small comment in their knowledge base :
> http://support.citrix.com/article/CTX139873
>
> Thanks Meike, have nice weekend!
>
>
> ===============================================
> Examples (only Discover and Offer)
> (hope, I made no mistake during clean up ...)
> ===============================================
>
> -----------------------------------------
> Example without PXE for a)
> -----------------------------------------
>
> * NIC
>
> 15:43:27.390642 192.168.128.12.bootpc > dhcpsrv.vdi.test.bootps: [udp
> sum ok] BOOTP/DHCP, Request from 42:b1:60:11:23:12 (oui Unknown),
> length 260, hops 1,
> xid 0x574fe450, Flags [none]
>       Gateway-IP 192.168.128.12
>       Client-Ethernet-Address 42:b1:60:11:23:12 (oui Unknown)
>       Vendor-rfc1048 Extensions
>         Magic Cookie 0x63825363
>         DHCP-Message Option 53, length 1: Discover
>         Client-ID Option 61, length 7: ether 42:b1:60:11:23:12
>         Parameter-Request Option 55, length 5:
>           Subnet-Mask, Default-Gateway, Domain-Name-Server, Domain-Name
>           Server-ID
>         END Option 255, length 0
>
>
> 15:43:27.391136 IP dhcpsrv.vdi.test.bootps > 192.168.128.12.bootps:
> [udp sum ok] BOOTP/DHCP, Reply, length 300, hops 1,
> xid 0x574fe450, Flags [none]
>       Your-IP 192.168.129.215
>       Gateway-IP 192.168.128.12
>       Client-Ethernet-Address 42:b1:60:11:23:12 (oui Unknown)
>       Vendor-rfc1048 Extensions
>         Magic Cookie 0x63825363
>         DHCP-Message Option 53, length 1: Offer
>         Server-ID Option 54, length 4: dhcpsrv.vdi.test
>         Lease-Time Option 51, length 4: 360
>         Subnet-Mask Option 1, length 4: 255.255.255.0
>         Default-Gateway Option 3, length 4: 192.168.129.1
>         Domain-Name-Server Option 6, length 8:
> dns01.vdi.test,dns02.vdi.test
>         Domain-Name Option 15, length 11: "d.vdi.test."
>         END Option 255, length 0
>         PAD Option 0, length 0, occurs 9
>
>
> **** WINDOWS OS Stack ****
>
>     15:46:42.656691 192.168.128.12.bootpc > dhcpsrv.vdi.test.bootps:
> [udp sum ok] BOOTP/DHCP, Request from 42:b1:60:11:23:12 (oui Unknown),
> length 300, hops 1,
>     xid 0x42f613d, secs 768, Flags [Broadcast]
>       Gateway-IP 192.168.128.12
>       Client-Ethernet-Address 42:b1:60:11:23:12 (oui Unknown)
>       Vendor-rfc1048 Extensions
>         Magic Cookie 0x63825363
>         DHCP-Message Option 53, length 1: Discover
>         CLASS Option 77, length 7: "vditest"
>         Client-ID Option 61, length 7: ether 42:b1:60:11:23:12
>         Hostname Option 12, length 11: "pvs-pd-t-04"
>         Vendor-Class Option 60, length 8: "MSFT 5.0"
>         Parameter-Request Option 55, length 12:
>           Subnet-Mask, Domain-Name, Default-Gateway, Domain-Name-Server
>           Netbios-Name-Server, Netbios-Node, Netbios-Scope,
> Router-Discovery
>           Static-Route, Classless-Static-Route,
> Classless-Static-Route-Microsoft, Vendor-Option
>         END Option 255, length 0
>         PAD Option 0, length 0
>
>
> 15:46:43.658587 dhcpsrv.vdi.test.bootps > 192.168.128.12.bootps: [udp
> sum ok] BOOTP/DHCP, Reply, length 300, hops 1,
> xid 0x42f613d, secs 768, Flags [Broadcast]
>       Your-IP 192.168.129.184
>       Gateway-IP 192.168.128.12
>       Client-Ethernet-Address 42:b1:60:11:23:12 (oui Unknown)
>       Vendor-rfc1048 Extensions
>         Magic Cookie 0x63825363
>         DHCP-Message Option 53, length 1: Offer
>         Server-ID Option 54, length 4: dhcpsrv.vdi.test
>         Lease-Time Option 51, length 4: 3600
>         Subnet-Mask Option 1, length 4: 255.255.255.0
>         Domain-Name Option 15, length 11: "d.vdi.test."
>         Default-Gateway Option 3, length 4: 192.168.129.1
>         Domain-Name-Server Option 6, length 8:
> dns01.vdi.test,dns02.vdi.test
>         END Option 255, length 0
>         PAD Option 0, length 0, occurs 9
>
>
>
>
>
>
> -----------------------------------------
>    Example with PXE for b)
> -----------------------------------------
>
> **** NIC ****
>
> 16:09:23.366919 192.168.128.12.bootps > dhcpsrv.vdi.test.bootps: [udp
> sum ok] BOOTP/DHCP, Request from d6:12:16:ef:ab:32 (oui Unknown),
> length 384, hops 2,
> xid 0x16dae42a, secs 4, Flags [none] (0x0000)
>           Gateway-IP 192.168.128.12
>           Client-Ethernet-Address d6:12:16:ef:ab:32 (oui Unknown)
>           Vendor-rfc1048 Extensions
>             Magic Cookie 0x63825363
>             DHCP-Message Option 53, length 1: Discover
>             MSZ Option 57, length 2: 1260
>             ARCH Option 93, length 2: 0
>             NDI Option 94, length 3: 1.2.1
>             Vendor-Class Option 60, length 32:
> "PXEClient:Arch:00000:UNDI:002001"
>             CLASS Option 77, length 4: "gPXE"
>             Parameter-Request Option 55, length 13:
>               Subnet-Mask, Default-Gateway, Domain-Name-Server, LOG
>               Hostname, Domain-Name, RP, Vendor-Option
>               Vendor-Class, TFTP, BF, Option 175
>               Option 203
>             T175 Option 175, length 42:
> 45317,272,60545,14616,257,8705,281,257,8449,272,258,4609,275,257,4353,491,769,0,5889,277,257
>             Client-ID Option 61, length 7: ether d6:12:16:ef:ab:32
>             GUID Option 97, length 17:
> 0.76.160.173.120.214.79.202.71.138.35.67.120.117.143.246.52
>             END Option 255, length 0
>
> 16:09:24.367470 dhcpsrv.vdi.test.bootps > 192.168.128.12.bootps: [udp
> sum ok] BOOTP/DHCP, Reply, length 300, hops 2,
> xid 0x16dae42a, secs 4, Flags [none] (0x0000)
>           Your-IP 192.168.129.34
>           Gateway-IP 192.168.128.12
>           Client-Ethernet-Address d6:12:16:ef:ab:32 (oui Unknown)
>           Vendor-rfc1048 Extensions
>             Magic Cookie 0x63825363
>             DHCP-Message Option 53, length 1: Offer
>             Server-ID Option 54, length 4: dhcpsrv.vdi.test
>             Lease-Time Option 51, length 4: 360
>             Subnet-Mask Option 1, length 4: 255.255.255.0
>             Default-Gateway Option 3, length 4: 192.168.129.1
>             Domain-Name-Server Option 6, length 8:
> dns01.vdi.test,dns02.vdi.test
>             Domain-Name Option 15, length 11: "d.vdi.test."
>             END Option 255, length 0
>             PAD Option 0, length 0, occurs 9
>
>
>
>  **** WINDOWS OS Stack ****
>
>
> 16:10:05.079842  192.168.128.12.bootps > dhcpsrv.vdi.test.bootps: [udp
> sum ok] BOOTP/DHCP, Request from d6:12:16:ef:ab:32 (oui Unknown),
> length 300, hops 2,
> xid 0x5ba369f0, Flags [Broadcast] (0x8000)
>           Gateway-IP 192.168.128.12
>           Client-Ethernet-Address d6:12:16:ef:ab:32 (oui Unknown)
>           Vendor-rfc1048 Extensions
>             Magic Cookie 0x63825363
>             DHCP-Message Option 53, length 1: Discover
>             CLASS Option 77, length 5: "vdipc"
>             Client-ID Option 61, length 7: ether d6:12:16:ef:ab:32
>             Hostname Option 12, length 12: "vdisk-04-002"
>             Vendor-Class Option 60, length 8: "MSFT 5.0"
>             Parameter-Request Option 55, length 12:
>               Subnet-Mask, Domain-Name, Default-Gateway,
> Domain-Name-Server
>               Netbios-Name-Server, Netbios-Node, Netbios-Scope,
> Router-Discovery
>               Static-Route, Classless-Static-Route,
> Classless-Static-Route-Microsoft, Vendor-Option
>             END Option 255, length 0
>             PAD Option 0, length 0, occurs 2
>
>
> 16:10:05.080139  dhcpsrv.vdi.test.bootps > 192.168.128.12.bootps: [udp
> sum ok] BOOTP/DHCP, Reply, length 300, hops 2,
> xid 0x5ba369f0, Flags [Broadcast] (0x8000)
>           Your-IP 192.168.129.34
>           Gateway-IP 192.168.128.12
>           Client-Ethernet-Address d6:12:16:ef:ab:32 (oui Unknown)
>           Vendor-rfc1048 Extensions
>             Magic Cookie 0x63825363
>             DHCP-Message Option 53, length 1: Offer
>             Server-ID Option 54, length 4: dhcpsrv.vdi.test
>             Lease-Time Option 51, length 4: 3600
>             Subnet-Mask Option 1, length 4: 255.255.255.0
>             Domain-Name Option 15, length 11: "d.vdi.test."
>             Default-Gateway Option 3, length 4: 192.168.129.1
>             Domain-Name-Server Option 6, length 8:
> dns01.vdi.test,dns02.vdi.test
>             END Option 255, length 0
>             PAD Option 0, length 0, occurs 9
> _______________________________________________
> dhcp-users mailing list
> dhcp-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/dhcp-users
>




More information about the dhcp-users mailing list