Request : Client System Architecture Type Option Definition

https://tools.ietf.org/html/rfc4578


We define Dynamic Host Configuration Protocol (DHCP) options being
used by Preboot eXecution Environment (PXE) and Extensible Firmware
Interface (EFI) clients to uniquely identify booting client machines
and their pre-OS runtime environment so that the DHCP and/or PXE boot
server can return the correct OS bootstrap image (or pre-boot
application) name and server to the client.

More and more there computers that use UEFI.
The only way I have found to distinguish them using: Client System Architecture Type Option Definition (93)

If DHCP package 93 we get: 0000 - this will be the BIOS 'basis
If we get DHCP package: 0009 - it will be the basis for UEFI :
or more :

Type Architecture Name


0 Intel x86PC
1 NEC/PC98
2 EFI Itanium
3 DEC Alpha
4 Arc x86
5 Intel Lean Client
6 EFI IA32
7 EFI BC
8 EFI Xscale
9 EFI x86-64

Legacy Bios :

10:00:17 dhcp,debug,packet default received request with id 704693540 from 0.0.0.0
10:00:17 dhcp,debug,packet secs = 4
10:00:17 dhcp,debug,packet flags = broadcast
10:00:17 dhcp,debug,packet ciaddr = 0.0.0.0
10:00:17 dhcp,debug,packet chaddr = 00:0C:29:00:C5:24
10:00:17 dhcp,debug,packet Msg-Type = request
10:00:17 dhcp,debug,packet Address-Request = 10.10.10.59
10:00:17 dhcp,debug,packet Parameter-List = Subnet-Mask,Unknown(2),Router,Unknown(5),Domain-Server,Unknown(11),Host-Name,Unknown(13),Domain-Name,Unknown(16),Unknown(17),Unknown(18),Vendor-Specific,Server-Id,Class-Id,Unknown(67),Unknown(128),Unknown
(129),Unknown(130),Unknown(131)
10:00:17 dhcp,debug,packet ,Unknown(132),Unknown(133),Unknown(134),Unknown(135)
10:00:17 dhcp,debug,packet Max-DHCP-Message-Size = 1260
10:00:17 dhcp,debug,packet Server-Id = 10.10.10.1
10:00:17 dhcp,debug,packet Unknown(97) = 00-56-4D-0E-48-42-BB-F9-A4-DD-FF-B7-64-B9-00-C5-24
10:00:17 dhcp,debug,packet Unknown(93) = > 00-00 >
10:00:17 dhcp,debug,packet Unknown(94) = 01-02-01
10:00:17 dhcp,debug,packet Class-Id = “> PXEClient:Arch:00000> :UNDI:002001”
10:00:17 dhcp,info default assigned 10.10.10.59 to 00:0C:29:00:C5:24
10:00:17 dhcp,debug,packet default sending ack with id 704693540 to 255.255.255.255
10:00:17 dhcp,debug,packet flags = broadcast
10:00:17 dhcp,debug,packet ciaddr = 0.0.0.0
10:00:17 dhcp,debug,packet yiaddr = 10.10.10.59
10:00:17 dhcp,debug,packet siaddr = 10.10.10.62
10:00:17 dhcp,debug,packet chaddr = 00:0C:29:00:C5:24
10:00:17 dhcp,debug,packet Msg-Type = ack
10:00:17 dhcp,debug,packet Server-Id = 10.10.10.1
10:00:17 dhcp,debug,packet Address-Time = 600
10:00:17 dhcp,debug,packet Subnet-Mask = 255.255.255.192
10:00:17 dhcp,debug,packet Router = 10.10.10.1
10:00:17 dhcp,debug,packet Domain-Server = 10.10.10.1
10:00:17 dhcp,debug,packet Domain-Name = “10.10.10.1”
10:00:17 dhcp,debug,packet Unknown(67) = 42-6F-6F-74-2F-78-36-34-2F-45-46-49-2F-42-6F-6F-74-2F-62-6F-6F-74-78-36-34-2E-65-66-69

UEFI Bios :

10:03:05 dhcp,debug,packet default received request with id 2089842577 from 0.0.0.0
10:03:05 dhcp,debug,packet flags = broadcast
10:03:05 dhcp,debug,packet ciaddr = 0.0.0.0
10:03:05 dhcp,debug,packet chaddr = 00:0C:29:00:C5:24
10:03:05 dhcp,debug,packet Msg-Type = request
10:03:05 dhcp,debug,packet Server-Id = 10.10.10.1
10:03:05 dhcp,debug,packet Address-Request = 10.10.10.59
10:03:05 dhcp,debug,packet Max-DHCP-Message-Size = 65280
10:03:05 dhcp,debug,packet Parameter-List = Subnet-Mask,Unknown(2),Router,Unknown(4),Unknown(5),Domain-Server,Host-Name,Unknown(13),Domain-Name,Unknown(17),Unknown(18),Unknown(22),Unknown(23),Broadcast-Address,Unknown(40),Unknown(41),NTP-Server,Ven
dor-Specific,Address-Request,Ad
10:03:05 dhcp,debug,packet dress-Time,Server-Id,Renewal-Time,Rebinding-Time,Class-Id,Unknown(66),Unknown(67),Unknown(97),Unknown(128),Unknown(129),Unknown(130),Unknown(131),Unknown(132),Unknown(133),Unknown(134),Unknown(135)
10:03:05 dhcp,debug,packet Unknown(97) = 00-56-4D-0E-48-42-BB-F9-A4-DD-FF-B7-64-B9-00-C5-24
10:03:05 dhcp,debug,packet Unknown(94) = 01-03-10
10:03:05 dhcp,debug,packet Unknown(93) = > 00-09 >
10:03:05 dhcp,debug,packet Class-Id = “> PXEClient:Arch:00009> :UNDI:003016”
10:03:05 dhcp,info default assigned 10.10.10.59 to 00:0C:29:00:C5:24
10:03:05 dhcp,debug,packet default sending ack with id 2089842577 to 255.255.255.255
10:03:05 dhcp,debug,packet flags = broadcast
10:03:05 dhcp,debug,packet ciaddr = 0.0.0.0
10:03:05 dhcp,debug,packet yiaddr = 10.10.10.59
10:03:05 dhcp,debug,packet siaddr = 10.10.10.62
10:03:05 dhcp,debug,packet chaddr = 00:0C:29:00:C5:24
10:03:05 dhcp,debug,packet Msg-Type = ack
10:03:05 dhcp,debug,packet Server-Id = 10.10.10.1
10:03:05 dhcp,debug,packet Address-Time = 600
10:03:05 dhcp,debug,packet Subnet-Mask = 255.255.255.192
10:03:05 dhcp,debug,packet Router = 10.10.10.1
10:03:05 dhcp,debug,packet Domain-Server = 10.10.10.1
10:03:05 dhcp,debug,packet Domain-Name = “10.10.10.1”
10:03:05 dhcp,debug,packet NTP-Server = 192.168.102.254
10:03:05 dhcp,debug,packet Unknown(67) = 42-6F-6F-74-2F-78-36-34-2F-45-46-49-2F-42-6F-6F-74-2F-62-6F-6F-74-78-36-34-2E-65-66-69

It’s very simple soliution, we have everything we need.

Mikcrotik - please please please, Do It :slight_smile:

It wil be best solution PXE function for multiboot.
People are looking for the answer to distinguish the BIOS and UEFI boot.

http://forum.mikrotik.com/t/dhcp-pxe-arch-type/81637/1

I know this is old, but i would like to see it done. I have both UEFI and legacy boot on my network and so far the only possible workaround is to change the file manually at the tftpd server.

Two years are waiting, is there any way to implement it?

Any solution?
I think so, because I managed with these configurations, boot via legacy and uefi in a virtual machine, without having to manually change the d boot file.
Sorry for the English, by google translator.

0 name=“bios” code=67 value=“‘undionly.kpxe’” raw-value=“756e64696f6e6c792e6b707865”

1 name=“uefi” code=67 value=“‘ipxe.efi’” raw-value=“697078652e656669”

/ip dhcp-server
add address-pool=dhcp_pool0 bootp-support=dynamic disabled=no interface=
ether5 lease-time=8h10m name=dhcp1
/ip dhcp-server option
add code=67 name=bios value=“‘undionly.kpxe’”
add code=67 name=uefi value=“‘ipxe.efi’”
/ip dhcp-server option sets
add name=legacy options=bios
/ip dhcp-server network
add address=10.100.100.0/24 boot-file-name=undionly.kpxe dhcp-option=uefi
dns-server=10.100.100.1 domain=mkhome.lan.br gateway=10.100.100.1
next-server=10.100.100.252