Boot file name is missing from DHCP ACK impacting uefi network booting
Closed this issue · 0 comments
orajab commented
After long debug why booting in uefi is not working I found that Boot file name attribute is not added to DHCP (ACK) frame
here is the capture from wireshare
Frame 20: 355 bytes on wire (2840 bits), 355 bytes captured (2840 bits) on interface \Device\NPF_{3BEAEBE1-5199-45A0-8715-2F99DC8A7213}, id 0
Section number: 1
Interface id: 0 (\Device\NPF_{3BEAEBE1-5199-45A0-8715-2F99DC8A7213})
Interface name: \Device\NPF_{3BEAEBE1-5199-45A0-8715-2F99DC8A7213}
Interface description: VMware Network Adapter mngnet
Encapsulation type: Ethernet (1)
Arrival Time: Feb 18, 2024 20:52:26.650874000 Arabian Standard Time
UTC Arrival Time: Feb 18, 2024 16:52:26.650874000 UTC
Epoch Arrival Time: 1708275146.650874000
[Time shift for this packet: 0.000000000 seconds]
[Time delta from previous captured frame: 0.011994000 seconds]
[Time delta from previous displayed frame: 0.011994000 seconds]
[Time since reference or first frame: 6.676187000 seconds]
Frame Number: 20
Frame Length: 355 bytes (2840 bits)
Capture Length: 355 bytes (2840 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:udp:dhcp]
[Coloring Rule Name: UDP]
[Coloring Rule String: udp]
Ethernet II, Src: VMware_9a:93:18 (00:0c:29:9a:93:18), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Destination: Broadcast (ff:ff:ff:ff:ff:ff)
Address: Broadcast (ff:ff:ff:ff:ff:ff)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
Source: VMware_9a:93:18 (00:0c:29:9a:93:18)
Address: VMware_9a:93:18 (00:0c:29:9a:93:18)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 172.16.0.1, Dst: 255.255.255.255
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 341
Identification: 0x4646 (17990)
010. .... = Flags: 0x2, Don't fragment
0... .... = Reserved bit: Not set
.1.. .... = Don't fragment: Set
..0. .... = More fragments: Not set
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 64
Protocol: UDP (17)
Header Checksum: 0x4741 [validation disabled]
[Header checksum status: Unverified]
Source Address: 172.16.0.1
Destination Address: 255.255.255.255
User Datagram Protocol, Src Port: 67, Dst Port: 68
Source Port: 67
Destination Port: 68
Length: 321
Checksum: 0x7f0b [unverified]
[Checksum Status: Unverified]
[Stream index: 1]
[Timestamps]
[Time since first frame: 3.996961000 seconds]
[Time since previous frame: 3.996961000 seconds]
UDP payload (313 bytes)
Dynamic Host Configuration Protocol (ACK)
Message type: Boot Reply (2)
Hardware type: Ethernet (0x01)
Hardware address length: 6
Hops: 0
Transaction ID: 0x6e32e74b
Seconds elapsed: 0
Bootp flags: 0x8000, Broadcast flag (Broadcast)
1... .... .... .... = Broadcast flag: Broadcast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0
Your (client) IP address: 172.16.0.10
Next server IP address: 172.16.0.1
Relay agent IP address: 0.0.0.0
Client MAC address: VMware_10:57:a9 (00:0c:29:10:57:a9)
Client hardware address padding: 00000000000000000000
Server host name not given
**Boot file name not given** < --------------------------------- missing
Magic cookie: DHCP
Option: (1) Subnet Mask (255.255.192.0)
Length: 4
Subnet Mask: 255.255.192.0
Option: (3) Router
Length: 4
Router: 192.168.0.1
Option: (6) Domain Name Server
Length: 4
Domain Name Server: 172.16.0.1
Option: (15) Domain Name
Length: 15
Domain Name: testcluster.lan.
Option: (51) IP Address Lease Time
Length: 4
IP Address Lease Time: 1 day (86400)
Option: (53) DHCP Message Type (ACK)
Length: 1
DHCP: ACK (5)
Option: (54) DHCP Server Identifier (172.16.0.1)
Length: 4
DHCP Server Identifier: 172.16.0.1
Option: (66) TFTP Server Name
Length: 10
TFTP Server Name: 172.16.0.1
**Option: (67) Bootfile name
Length: 8
Bootfile name: ipxe.efi**
Option: (255) End
Option End: 255
here is the Ack frame captured for ISC DHCP which works fine
Frame 9: 342 bytes on wire (2736 bits), 342 bytes captured (2736 bits) on interface \Device\NPF_{3BEAEBE1-5199-45A0-8715-2F99DC8A7213}, id 0
Section number: 1
Interface id: 0 (\Device\NPF_{3BEAEBE1-5199-45A0-8715-2F99DC8A7213})
Interface name: \Device\NPF_{3BEAEBE1-5199-45A0-8715-2F99DC8A7213}
Interface description: VMware Network Adapter mngnet
Encapsulation type: Ethernet (1)
Arrival Time: Feb 18, 2024 20:48:05.117724000 Arabian Standard Time
UTC Arrival Time: Feb 18, 2024 16:48:05.117724000 UTC
Epoch Arrival Time: 1708274885.117724000
[Time shift for this packet: 0.000000000 seconds]
[Time delta from previous captured frame: 0.001877000 seconds]
[Time delta from previous displayed frame: 0.001877000 seconds]
[Time since reference or first frame: 3.996813000 seconds]
Frame Number: 9
Frame Length: 342 bytes (2736 bits)
Capture Length: 342 bytes (2736 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:udp:dhcp]
[Coloring Rule Name: UDP]
[Coloring Rule String: udp]
Ethernet II, Src: VMware_9a:93:18 (00:0c:29:9a:93:18), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Destination: Broadcast (ff:ff:ff:ff:ff:ff)
Address: Broadcast (ff:ff:ff:ff:ff:ff)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
Source: VMware_9a:93:18 (00:0c:29:9a:93:18)
Address: VMware_9a:93:18 (00:0c:29:9a:93:18)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 172.16.0.1, Dst: 255.255.255.255
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x10 (DSCP: Unknown, ECN: Not-ECT)
0001 00.. = Differentiated Services Codepoint: Unknown (4)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 328
Identification: 0x0000 (0)
000. .... = Flags: 0x0
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 128
Protocol: UDP (17)
Header Checksum: 0x8d84 [validation disabled]
[Header checksum status: Unverified]
Source Address: 172.16.0.1
Destination Address: 255.255.255.255
User Datagram Protocol, Src Port: 67, Dst Port: 68
Source Port: 67
Destination Port: 68
Length: 308
Checksum: 0x39a0 [unverified]
[Checksum Status: Unverified]
[Stream index: 2]
[Timestamps]
[Time since first frame: 2.980739000 seconds]
[Time since previous frame: 2.980739000 seconds]
UDP payload (300 bytes)
Dynamic Host Configuration Protocol (ACK)
Message type: Boot Reply (2)
Hardware type: Ethernet (0x01)
Hardware address length: 6
Hops: 0
Transaction ID: 0x22282c5a
Seconds elapsed: 0
Bootp flags: 0x8000, Broadcast flag (Broadcast)
1... .... .... .... = Broadcast flag: Broadcast
.000 0000 0000 0000 = Reserved flags: 0x0000
Client IP address: 0.0.0.0
Your (client) IP address: 172.16.0.10
Next server IP address: 0.0.0.0
Relay agent IP address: 0.0.0.0
Client MAC address: VMware_10:57:a9 (00:0c:29:10:57:a9)
Client hardware address padding: 00000000000000000000
Server host name not given
**Boot file name: ipxe.efi** <------------------------------- provided by ISC DHCP and look below in the options is not provided and it seems its not required for uefi network booting
Magic cookie: DHCP
Option: (53) DHCP Message Type (ACK)
Length: 1
DHCP: ACK (5)
Option: (54) DHCP Server Identifier (172.16.0.1)
Length: 4
DHCP Server Identifier: 172.16.0.1
Option: (51) IP Address Lease Time
Length: 4
IP Address Lease Time: 10 minutes (600)
Option: (1) Subnet Mask (255.255.192.0)
Length: 4
Subnet Mask: 255.255.192.0
Option: (6) Domain Name Server
Length: 4
Domain Name Server: 172.16.0.1
Option: (15) Domain Name
Length: 14
Domain Name: testcluster.lan
Option: (255) End
Option End: 255
Padding: 00000000000000000000000000000000