BOOTP - Bootstrap Protocol
What is BOOTP?
BOOTP stands for Bootstrap Protocol. It is a network protocol used by a device to automatically obtain an IP address and other network configuration settings (like gateway and DNS) from a BOOTP server when it boots up.
Why is BOOTP useful?
- BOOTP was designed to help diskless workstations and other devices:
Automatically get their IP address, default gateway, and boot file location.
Boot over the network without needing manual configuration.
Simplify network setup in large environments.
How it works?
Device boots up – It doesn’t have an IP address or configuration.
Sends a BOOTP request – A broadcast message is sent to find a BOOTP server.
Server responds – The BOOTP server replies with the device’s IP address and other settings.
Optional boot file – The server can also provide the location of a boot file (e.g., for loading an OS).
Where is BOOTP used?
Diskless workstations – To boot operating systems over the network.
Network devices – Like routers or switches during initial setup.
Embedded systems – That need to auto-configure on startup.
Legacy systems – In environments where DHCP is not used.
Which OSI Layer does BOOTP belong to?
Application Layer (Layer 7)
BOOTP defines application-level messaging between clients and servers.
It provides IP configuration and bootstrapping services, which are implemented in software.
While it uses UDP at the Transport Layer (Layer 4), its logic and structure are defined at Layer 7.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
BOOTP Version |
RFC |
Year |
Core Idea / Contribution |
---|---|---|---|
BOOTP |
|||
RFC 951 |
1985 |
Defined a protocol for diskless clients to |
|
automatically obtain an IP address, the |
|||
address of a boot server, and the name of a |
|||
boot file. It replaced RARP and introduced |
|||
relay agent support for multi-subnet |
|||
environments. |
setup
setup
BOOTREQUEST Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
1 |
BOOTREQUEST |
sent by a client to request configuration information |
~576 bytes |
(including options) |
|||
op |
Message type: 1 = BOOTREQUEST |
1 |
|
htype |
Hardware type: 1 = Ethernet |
1 |
|
hlen |
Hardware address length: 6 for Ethernet |
1 |
|
hops |
Set to 0 by client, used by relay agents |
1 |
|
xid |
Transaction ID, a random number chosen by the client |
4 |
|
secs |
Seconds elapsed since client started trying to boot |
2 |
|
flags |
Flags (e.g., broadcast flag) |
2 |
|
ciaddr |
Client IP address (if already known) |
4 |
|
yiaddr |
“Your” IP address (assigned by the server) |
4 |
|
siaddr |
Server IP address |
4 |
|
giaddr |
Gateway IP address (used by relay agents) |
4 |
|
chaddr |
Client hardware address (MAC address) |
16 |
|
sname |
Optional server host name |
64 |
|
file |
Boot file name |
128 |
|
options |
Optional vendor-specific area (used by DHCP too) |
variable (up to 64) |
|
BOOTREPLY Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
2 |
BOOTREPLY |
server’s response to a BOOTREQUEST from a client |
~576 bytes |
(including options) |
|||
op |
Message type: 2 = BOOTREPLY |
1 |
|
htype |
Hardware type: 1 = Ethernet |
1 |
|
hlen |
Hardware address length: 6 for Ethernet |
1 |
|
hops |
Set to 0 by client, used by relay agents |
1 |
|
xid |
Transaction ID, a random number chosen by the client |
4 |
|
secs |
Seconds elapsed since client started trying to boot |
2 |
|
flags |
Flags (e.g., broadcast flag) |
2 |
|
ciaddr |
Client IP address (if already known) |
4 |
|
yiaddr |
“Your” IP address (assigned by the server) |
4 |
|
siaddr |
Server IP address |
4 |
|
giaddr |
Gateway IP address (used by relay agents) |
4 |
|
chaddr |
Client hardware address (MAC address) |
16 |
|
sname |
Optional server host name |
64 |
|
file |
Boot file name |
128 |
|
options |
Optional vendor-specific area (used by DHCP too) |
variable (up to 64) |
|
S.no |
Use Case |
Description |
---|---|---|
1 |
Diskless Workstations |
BOOTP allows diskless computers to boot over the network by |
providing them with an IP address and the location of a boot image. |
||
2 |
Network Booting (PXE) |
BOOTP is used in Preboot Execution Environment (PXE) to help |
devices boot from a network server instead of local storage. |
||
3 |
Embedded Systems |
Devices like routers or IoT systems use BOOTP to obtain network configuration during startup. |
4 |
Thin Clients |
BOOTP helps thin clients retrieve their operating system or configuration files from a central server. |
5 |
Legacy Network Environments |
In older or static IP-based networks, BOOTP is still used for simple IP address assignment without the complexity of DHCP. |
6 |
Boot Servers in Isolated Networks |
BOOTP is useful in closed or isolated networks where DHCP is not available or needed. |
7 |
Relay Agent Configuration |
BOOTP supports relay agents, allowing centralized IP management across multiple subnets. |
S.no |
Feature |
Description |
---|---|---|
1 |
Static IP Assignment |
BOOTP assigns a fixed IP address to a client based on its MAC address, unlike DHCP which can assign dynamic IPs. |
2 |
Boot File Delivery |
Provides the name and location of a boot file to diskless |
clients, enabling network-based booting. |
||
3 |
Gateway and Subnet Info |
Supplies clients with default gateway and subnet mask |
information for proper network communication. |
||
4 |
Relay Agent Support |
Allows BOOTP requests to be forwarded across subnets using |
relay agents, enabling centralized IP management. |
||
5 |
No Lease Time |
IP addresses assigned via BOOTP are permanent |
(no expiration), making it suitable for static environments. |
||
6 |
Simple Configuration |
BOOTP servers are easy to configure and maintain, especially in small or legacy networks. |
7 |
Compatibility with DHCP |
DHCP is backward-compatible with BOOTP, allowing DHCP |
servers to respond to BOOTP clients. |
||
8 |
Low Overhead |
BOOTP is lightweight and efficient, ideal for embedded systems |
and minimal network environments. |
Static IP Assignment - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Assign static IP to known MAC |
MAC exists in config |
Correct IP assigned |
2 |
Assign static IP to unknown MAC |
MAC not in config |
No IP assigned |
3 |
Assign static IP to duplicate MAC |
Duplicate entry |
Conflict or error logged |
4 |
Assign static IP with invalid MAC format |
Malformed MAC |
Request rejected |
5 |
Assign static IP with uppercase MAC |
Case-insensitive match |
IP assigned |
6 |
Assign static IP with lowercase MAC |
Case-insensitive match |
IP assigned |
7 |
Assign static IP with mixed-case MAC |
Case-insensitive match |
IP assigned |
8 |
Assign static IP with leading/trailing spaces |
Input sanitation |
IP assigned |
9 |
Assign static IP with broadcast MAC |
FF:FF:FF:FF:FF:FF |
Request ignored |
10 |
Assign static IP with multicast MAC |
01:00:5E:xx:xx:xx |
Request ignored |
11 |
Assign static IP to MAC with reserved IP |
Reserved IP in config |
IP assigned |
12 |
Assign static IP to MAC with IP outside subnet |
Misconfigured IP |
Request rejected |
13 |
Assign static IP to MAC with IP in DHCP pool |
Overlap with DHCP |
Conflict warning |
14 |
Assign static IP to MAC with IP in BOOTP range |
Valid config |
IP assigned |
15 |
Assign static IP to MAC with IP already in use |
IP conflict |
Error logged |
16 |
Assign static IP to MAC with IP in ARP cache |
IP reused |
Conflict detected |
17 |
Assign static IP to MAC with IP in routing table |
Static route exists |
IP assigned |
18 |
Assign static IP to MAC with subnet mismatch |
Wrong subnet |
Request rejected |
19 |
Assign static IP to MAC with gateway mismatch |
Invalid gateway |
Request rejected |
20 |
Assign static IP to MAC with valid boot file |
TFTP boot |
Boot file delivered |
21 |
Assign static IP to MAC with invalid boot file |
File not found |
Boot fails |
22 |
Assign static IP to MAC with no boot file |
Optional boot |
IP assigned only |
23 |
Assign static IP to MAC with valid hostname |
Hostname resolved |
IP assigned |
24 |
Assign static IP to MAC with invalid hostname |
DNS failure |
IP assigned, no name |
25 |
Assign static IP to MAC with duplicate hostname |
Conflict |
Warning logged |
26 |
Assign static IP to MAC with long hostname |
Boundary test |
IP assigned |
27 |
Assign static IP to MAC with special characters in hostname |
Input validation |
IP assigned or rejected |
28 |
Assign static IP to MAC with empty hostname |
Optional field |
IP assigned |
29 |
Assign static IP to MAC with valid vendor class |
Option matched |
IP assigned |
30 |
Assign static IP to MAC with unknown vendor class |
Option ignored |
IP assigned |
31 |
Assign static IP to MAC with BOOTP relay |
Routed request |
IP assigned |
32 |
Assign static IP to MAC with direct broadcast |
Local subnet |
IP assigned |
33 |
Assign static IP to MAC with unicast reply |
Server responds directly |
IP assigned |
34 |
Assign static IP to MAC with broadcast reply |
Server broadcasts |
IP assigned |
35 |
Assign static IP to MAC with multiple BOOTP servers |
Redundant servers |
First response wins |
36 |
Assign static IP to MAC with server down |
No response |
Client retries |
37 |
Assign static IP to MAC with server restart |
Persistent config |
IP reassigned |
38 |
Assign static IP to MAC with config reload |
Dynamic update |
IP assigned |
39 |
Assign static IP to MAC with config error |
Syntax error |
Server fails to start |
40 |
Assign static IP to MAC with config backup |
Restore config |
IP assigned |
41 |
Assign static IP to MAC with logging enabled |
Audit trail |
Assignment logged |
42 |
Assign static IP to MAC with logging disabled |
Silent mode |
No logs generated |
43 |
Assign static IP to MAC with packet capture |
Wireshark |
BOOTP packet visible |
44 |
Assign static IP to MAC with firewall enabled |
Port 67/68 open |
IP assigned |
45 |
Assign static IP to MAC with firewall blocking BOOTP |
Port blocked |
No IP assigned |
46 |
Assign static IP to MAC with VLAN tagging |
Tagged request |
IP assigned |
47 |
Assign static IP to MAC with trunk port |
Multi-VLAN support |
IP assigned |
48 |
Assign static IP to MAC with rogue BOOTP server |
Unauthorized server |
IP conflict risk |
49 |
Assign static IP to MAC with BOOTP over VPN |
Remote client |
IP assigned |
50 |
Assign static IP to MAC with BOOTP over NAT |
NAT traversal |
IP assigned or fails depending on config |
Boot File Delivery - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Provide valid boot file name and path |
Standard config |
Boot file delivered |
2 |
Provide empty boot file name |
No file specified |
Boot fails or skipped |
3 |
Provide non-existent boot file |
File not found |
Boot fails |
4 |
Provide boot file with incorrect path |
Invalid location |
Boot fails |
5 |
Provide boot file with relative path |
Relative to TFTP root |
Boot file delivered |
6 |
Provide boot file with absolute path |
May be rejected |
Boot fails or ignored |
7 |
Provide boot file with long filename |
Boundary test |
Boot file delivered or rejected |
8 |
Provide boot file with special characters |
Input validation |
Boot fails or succeeds |
9 |
Provide boot file with spaces in name |
Quoting required |
Boot file delivered |
10 |
Provide boot file with uppercase extension |
Case-insensitive match |
Boot file delivered |
11 |
Provide boot file with lowercase extension |
Standard format |
Boot file delivered |
12 |
Provide boot file with .bin extension |
Binary image |
Boot file delivered |
13 |
Provide boot file with .img extension |
Disk image |
Boot file delivered |
14 |
Provide boot file with .pxe extension |
PXE boot |
Boot file delivered |
15 |
Provide boot file with .iso extension |
ISO image |
Boot fails (unsupported) |
16 |
Provide boot file with incorrect permissions |
TFTP access denied |
Boot fails |
17 |
Provide boot file with read-only access |
Valid for TFTP |
Boot file delivered |
18 |
Provide boot file with no read access |
Permission error |
Boot fails |
19 |
Provide boot file from TFTP server |
Standard setup |
Boot file delivered |
20 |
Provide boot file from HTTP server |
Unsupported protocol |
Boot fails |
21 |
Provide boot file from FTP server |
Unsupported protocol |
Boot fails |
22 |
Provide boot file with valid TFTP server IP |
Correct delivery |
Boot file delivered |
23 |
Provide boot file with invalid TFTP server IP |
Unreachable |
Boot fails |
24 |
Provide boot file with unreachable TFTP server |
Network issue |
Boot fails |
25 |
Provide boot file with firewall blocking TFTP |
Port 69 blocked |
Boot fails |
26 |
Provide boot file with TFTP server down |
Service unavailable |
Boot fails |
27 |
Provide boot file with TFTP server restarted |
Service restored |
Boot file delivered |
28 |
Provide boot file with TFTP server on different subnet |
Routed access |
Boot file delivered |
29 |
Provide boot file with TFTP server on same subnet |
Direct access |
Boot file delivered |
30 |
Provide boot file with VLAN tagging |
Tagged traffic |
Boot file delivered |
31 |
Provide boot file with trunk port |
Multi-VLAN support |
Boot file delivered |
32 |
Provide boot file with BOOTP relay |
Routed request |
Boot file delivered |
33 |
Provide boot file with BOOTP broadcast |
Local subnet |
Boot file delivered |
34 |
Provide boot file with BOOTP unicast reply |
Direct response |
Boot file delivered |
35 |
Provide boot file with BOOTP broadcast reply |
Broadcast response |
Boot file delivered |
36 |
Provide boot file with multiple BOOTP servers |
Redundant setup |
First response used |
37 |
Provide boot file with server hostname instead of IP |
DNS resolution |
Boot file delivered |
38 |
Provide boot file with invalid server hostname |
DNS failure |
Boot fails |
39 |
Provide boot file with DNS server unreachable |
Name resolution fails |
Boot fails |
40 |
Provide boot file with DHCP server instead of BOOTP |
Compatibility test |
Boot file may not be delivered |
41 |
Provide boot file with PXE client |
PXE boot test |
Boot file delivered |
42 |
Provide boot file with legacy BIOS client |
Legacy boot |
Boot file delivered |
43 |
Provide boot file with UEFI client |
Compatibility test |
Boot file delivered or fails |
44 |
Provide boot file with logging enabled |
Audit trail |
Boot file request logged |
45 |
Provide boot file with logging disabled |
Silent mode |
No logs generated |
46 |
Provide boot file with packet capture |
Wireshark |
Boot file name visible |
47 |
Provide boot file with corrupted BOOTP packet |
Malformed request |
Boot fails |
48 |
Provide boot file with retry mechanism |
TFTP retry |
Boot file eventually delivered |
49 |
Provide boot file with checksum validation |
File integrity |
Boot file verified |
50 |
Provide boot file with client timeout |
No response |
Boot fails |
Gateway and Subnet Info - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Provide valid gateway and subnet mask |
Standard config |
Client receives correct info |
2 |
Provide empty gateway field |
No default route |
Client uses local subnet only |
3 |
Provide empty subnet mask |
Undefined subnet |
Client may fail to route |
4 |
Provide invalid gateway IP |
Malformed address |
Client ignores gateway |
5 |
Provide invalid subnet mask |
Malformed mask |
Client fails to configure |
6 |
Provide gateway outside subnet |
Misconfigured route |
Client may not reach gateway |
7 |
Provide gateway inside subnet |
Valid config |
Client routes correctly |
8 |
Provide subnet mask 255.255.255.0 |
/24 network |
Client configures correctly |
9 |
Provide subnet mask 255.255.0.0 |
/16 network |
Client configures correctly |
10 |
Provide subnet mask 255.0.0.0 |
/8 network |
Client configures correctly |
11 |
Provide subnet mask 255.255.255.255 |
Host-only |
Client cannot route |
12 |
Provide subnet mask 0.0.0.0 |
Invalid |
Client fails to configure |
13 |
Provide gateway with unreachable IP |
Network unreachable |
Client cannot route |
14 |
Provide gateway with loopback IP |
127.0.0.1 |
Client misroutes traffic |
15 |
Provide gateway with broadcast IP |
255.255.255.255 |
Client misroutes traffic |
16 |
Provide gateway with multicast IP |
224.0.0.1 |
Client misroutes traffic |
17 |
Provide gateway with APIPA IP |
169.254.x.x |
Client misroutes traffic |
18 |
Provide subnet mask with non-contiguous bits |
Invalid mask |
Client rejects config |
19 |
Provide gateway with valid DNS |
DNS reachable |
Client can resolve names |
20 |
Provide gateway with no DNS |
No name resolution |
Client uses IP only |
21 |
Provide subnet mask with classful IP |
Legacy config |
Client configures correctly |
22 |
Provide subnet mask with classless IP |
CIDR support |
Client configures correctly |
23 |
Provide gateway with VLAN tagging |
Tagged traffic |
Client routes correctly |
24 |
Provide gateway with trunk port |
Multi-VLAN support |
Client routes correctly |
25 |
Provide gateway with BOOTP relay |
Routed request |
Client receives correct info |
26 |
Provide gateway with BOOTP broadcast |
Local subnet |
Client receives correct info |
27 |
Provide gateway with BOOTP unicast reply |
Direct response |
Client receives correct info |
28 |
Provide gateway with BOOTP broadcast reply |
Broadcast response |
Client receives correct info |
29 |
Provide gateway with multiple BOOTP servers |
Redundant setup |
First response used |
30 |
Provide gateway with server down |
No response |
Client retries |
31 |
Provide gateway with server restart |
Persistent config |
Client receives info again |
32 |
Provide gateway with config reload |
Dynamic update |
Client receives updated info |
33 |
Provide gateway with config error |
Syntax error |
Server fails to start |
34 |
Provide gateway with config backup |
Restore config |
Client receives info |
35 |
Provide gateway with logging enabled |
Audit trail |
Gateway info logged |
36 |
Provide gateway with logging disabled |
Silent mode |
No logs generated |
37 |
Provide gateway with packet capture |
Wireshark |
Gateway info visible |
38 |
Provide gateway with firewall enabled |
Port 67/68 open |
Client receives info |
39 |
Provide gateway with firewall blocking BOOTP |
Port blocked |
Client receives no info |
40 |
Provide gateway with DHCP server |
Compatibility test |
Client receives info |
41 |
Provide gateway with PXE client |
Boot + route |
Client receives info |
42 |
Provide gateway with legacy BIOS client |
Legacy boot |
Client receives info |
43 |
Provide gateway with UEFI client |
Compatibility test |
Client receives info |
44 |
Provide gateway with DNS suffix |
Domain search |
Client resolves names |
45 |
Provide gateway with static route |
Predefined path |
Client routes correctly |
46 |
Provide gateway with default route only |
0.0.0.0/0 |
Client routes all traffic |
47 |
Provide gateway with multiple routes |
Policy routing |
Client uses default |
48 |
Provide gateway with unreachable subnet |
Invalid config |
Client cannot route |
49 |
Provide gateway with overlapping subnet |
Conflict |
Client misroutes traffic |
50 |
Provide gateway with NAT device |
Translated traffic |
Client routes through NAT |
Relay Agent Support - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Send BOOTP request from client on remote subnet |
Relay agent present |
Request forwarded |
2 |
Send BOOTP request from client on local subnet |
No relay needed |
Server responds directly |
3 |
Send BOOTP request with no relay agent |
Different subnet |
Request not received by server |
4 |
Configure relay agent with correct server IP |
Valid setup |
Request forwarded |
5 |
Configure relay agent with incorrect server IP |
Misconfigured |
Request dropped or misrouted |
6 |
Configure relay agent with multiple server IPs |
Redundant setup |
Request forwarded to all |
7 |
Configure relay agent with unreachable server IP |
Network issue |
Request dropped |
8 |
Configure relay agent with broadcast forwarding |
Broadcast to server subnet |
Request received |
9 |
Configure relay agent with unicast forwarding |
Direct to server |
Request received |
10 |
Configure relay agent with firewall blocking port 67 |
BOOTP blocked |
Request not forwarded |
11 |
Configure relay agent with firewall allowing port 67 |
BOOTP allowed |
Request forwarded |
12 |
Configure relay agent with VLAN tagging |
Tagged traffic |
Request forwarded correctly |
13 |
Configure relay agent with trunk port |
Multi-VLAN support |
Request forwarded correctly |
14 |
Configure relay agent with routing enabled |
Inter-subnet routing |
Request forwarded |
15 |
Configure relay agent with routing disabled |
No path to server |
Request dropped |
16 |
Configure relay agent with logging enabled |
Audit trail |
Forwarding logged |
17 |
Configure relay agent with logging disabled |
Silent mode |
No logs generated |
18 |
Configure relay agent with packet capture |
Wireshark |
Relay info visible |
19 |
Configure relay agent with BOOTP relay option 82 |
Relay agent info added |
Server processes correctly |
20 |
Configure relay agent without option 82 |
Basic forwarding |
Request forwarded |
21 |
Configure relay agent with malformed option 82 |
Invalid format |
Server may reject request |
22 |
Configure relay agent with multiple interfaces |
Multi-subnet support |
Requests forwarded from all |
23 |
Configure relay agent with interface down |
No forwarding |
Request dropped |
24 |
Configure relay agent with interface up |
Active forwarding |
Request forwarded |
25 |
Configure relay agent with high latency link |
Delayed forwarding |
Request eventually received |
26 |
Configure relay agent with dropped packets |
Network issue |
Request lost |
27 |
Configure relay agent with retry mechanism |
Resend on failure |
Request eventually forwarded |
28 |
Configure relay agent with BOOTP server restart |
Persistent config |
Requests forwarded again |
29 |
Configure relay agent with BOOTP server down |
No response |
Request forwarded but no reply |
30 |
Configure relay agent with BOOTP server on same subnet |
No relay needed |
Direct response |
31 |
Configure relay agent with BOOTP server on different subnet |
Relay required |
Request forwarded |
32 |
Configure relay agent with DHCP server |
Compatibility test |
Request forwarded |
33 |
Configure relay agent with PXE client |
Boot request |
Request forwarded |
34 |
Configure relay agent with legacy BIOS client |
Legacy boot |
Request forwarded |
35 |
Configure relay agent with UEFI client |
Compatibility test |
Request forwarded |
36 |
Configure relay agent with BOOTP broadcast |
Relay forwards broadcast |
Server receives request |
37 |
Configure relay agent with BOOTP unicast |
Relay forwards unicast |
Server receives request |
38 |
Configure relay agent with BOOTP relay on router |
Integrated relay |
Request forwarded |
39 |
Configure relay agent with BOOTP relay on switch |
Layer 3 switch |
Request forwarded |
40 |
Configure relay agent with BOOTP relay on firewall |
Security device |
Request forwarded |
41 |
Configure relay agent with BOOTP relay on virtual appliance |
VM-based relay |
Request forwarded |
42 |
Configure relay agent with BOOTP relay on cloud gateway |
Cloud network |
Request forwarded |
43 |
Configure relay agent with BOOTP relay on edge device |
Remote site |
Request forwarded |
44 |
Configure relay agent with BOOTP relay on SD-WAN |
Overlay network |
Request forwarded |
45 |
Configure relay agent with BOOTP relay on mesh network |
Distributed forwarding |
Request forwarded |
46 |
Configure relay agent with BOOTP relay on wireless controller |
Wi-Fi clients |
Request forwarded |
47 |
Configure relay agent with BOOTP relay on VPN gateway |
Remote access |
Request forwarded |
48 |
Configure relay agent with BOOTP relay on NAT device |
Translated traffic |
Request forwarded or fails |
49 |
Configure relay agent with BOOTP relay and multiple clients |
Concurrent requests |
All forwarded correctly |
50 |
Configure relay agent with BOOTP relay and server load balancing |
Multiple servers |
Request distributed |
No Leasetime - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Assign IP via BOOTP |
Static assignment |
IP remains unchanged |
2 |
Reboot client after BOOTP assignment |
Persistence test |
Same IP reassigned |
3 |
Disconnect and reconnect client |
Network rejoin |
Same IP reassigned |
4 |
Power cycle client |
Hardware reset |
Same IP reassigned |
5 |
Wait 24 hours after assignment |
Time-based test |
IP still valid |
6 |
Wait 7 days after assignment |
Long-term test |
IP still valid |
7 |
Wait 30 days after assignment |
Extended test |
IP still valid |
8 |
Simulate lease expiration |
No lease timer |
IP remains assigned |
9 |
Check for lease renewal request |
BOOTP client |
No renewal sent |
10 |
Check for lease expiration in logs |
BOOTP server |
No expiration logged |
11 |
Assign IP to printer |
Static device |
IP remains fixed |
12 |
Assign IP to server |
Infrastructure device |
IP remains fixed |
13 |
Assign IP to embedded system |
IoT device |
IP remains fixed |
14 |
Assign IP to VoIP phone |
Static endpoint |
IP remains fixed |
15 |
Assign IP to network camera |
Surveillance device |
IP remains fixed |
16 |
Assign IP to switch management interface |
Network device |
IP remains fixed |
17 |
Assign IP to firewall |
Security appliance |
IP remains fixed |
18 |
Assign IP to access point |
Wireless device |
IP remains fixed |
19 |
Assign IP to legacy BIOS PXE client |
Boot test |
IP remains fixed |
20 |
Assign IP to UEFI PXE client |
Boot test |
IP remains fixed |
21 |
Assign IP to client with BOOTP relay |
Routed request |
IP remains fixed |
22 |
Assign IP to client on VLAN |
Tagged traffic |
IP remains fixed |
23 |
Assign IP to client with trunk port |
Multi-VLAN |
IP remains fixed |
24 |
Assign IP to client with static MAC |
MAC-based match |
IP remains fixed |
25 |
Assign IP to client with dynamic MAC |
MAC changes |
IP not reassigned |
26 |
Assign IP to client with spoofed MAC |
Duplicate MAC |
Conflict or error |
27 |
Assign IP to client with duplicate MAC |
Conflict test |
Error or warning |
28 |
Assign IP to client with no MAC |
Invalid request |
No IP assigned |
29 |
Assign IP to client with invalid MAC |
Format error |
No IP assigned |
30 |
Assign IP to client with BOOTP over VPN |
Remote access |
IP remains fixed |
31 |
Assign IP to client with BOOTP over NAT |
Translated traffic |
IP may not persist |
32 |
Assign IP to client with BOOTP over wireless |
Wi-Fi client |
IP remains fixed |
33 |
Assign IP to client with BOOTP over wired |
Ethernet client |
IP remains fixed |
34 |
Assign IP to client with BOOTP over mesh |
Mesh network |
IP remains fixed |
35 |
Assign IP to client with BOOTP over SD-WAN |
Overlay network |
IP remains fixed |
36 |
Assign IP to client with BOOTP over satellite |
High-latency link |
IP remains fixed |
37 |
Assign IP to client with BOOTP over LTE |
Mobile network |
IP remains fixed |
38 |
Assign IP to client with BOOTP over 5G |
Wireless WAN |
IP remains fixed |
39 |
Assign IP to client with BOOTP over MPLS |
Enterprise WAN |
IP remains fixed |
40 |
Assign IP to client with BOOTP over cloud VPN |
Cloud infra |
IP remains fixed |
41 |
Assign IP to client with BOOTP and logging enabled |
Audit trail |
No lease expiration logged |
42 |
Assign IP to client with BOOTP and logging disabled |
Silent mode |
No lease info logged |
43 |
Assign IP to client and capture packets |
Wireshark |
No lease time field |
44 |
Assign IP to client and inspect BOOTP response |
Protocol analysis |
No lease duration present |
45 |
Assign IP to client and simulate DHCP client |
Lease request sent |
No response from BOOTP server |
46 |
Assign IP to client and simulate DHCP server |
Lease conflict |
BOOTP IP remains static |
47 |
Assign IP to client and simulate BOOTP server restart |
Persistent config |
IP reassigned |
48 |
Assign IP to client and simulate config reload |
Dynamic update |
IP reassigned |
49 |
Assign IP to client and simulate server failover |
Redundant server |
Same IP reassigned |
50 |
Assign IP to client and simulate network outage |
Reconnect after recovery |
Same IP reassigned |
Simple Configuration - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Configure BOOTP server with one client |
Basic setup |
Server starts successfully |
2 |
Configure BOOTP server with multiple clients |
Small network |
Server handles all entries |
3 |
Configure BOOTP server with static IP mapping |
MAC-to-IP |
IP assigned correctly |
4 |
Configure BOOTP server with minimal parameters |
IP, MAC only |
Server functions correctly |
5 |
Configure BOOTP server with hostname |
Optional field |
Server starts successfully |
6 |
Configure BOOTP server with boot file |
Optional field |
Server starts successfully |
7 |
Configure BOOTP server with gateway info |
Optional field |
Server starts successfully |
8 |
Configure BOOTP server with subnet mask |
Optional field |
Server starts successfully |
9 |
Configure BOOTP server with comments in config |
Readable config |
Server ignores comments |
10 |
Configure BOOTP server with whitespace formatting |
Readable config |
Server parses correctly |
11 |
Configure BOOTP server with invalid MAC format |
Syntax error |
Server rejects config |
12 |
Configure BOOTP server with duplicate MAC entries |
Conflict |
Server logs warning |
13 |
Configure BOOTP server with duplicate IPs |
Conflict |
Server logs error |
14 |
Configure BOOTP server with missing fields |
Incomplete entry |
Server skips entry |
15 |
Configure BOOTP server with valid syntax |
Clean config |
Server starts successfully |
16 |
Configure BOOTP server with invalid syntax |
Parsing error |
Server fails to start |
17 |
Restart BOOTP server after config change |
Dynamic update |
Server loads new config |
18 |
Reload BOOTP config without restart |
Hot reload |
Server updates entries |
19 |
Backup BOOTP config file |
Maintenance task |
File saved successfully |
20 |
Restore BOOTP config from backup |
Recovery test |
Server starts with restored config |
21 |
Configure BOOTP server on Linux |
Common OS |
Server runs successfully |
22 |
Configure BOOTP server on Windows |
Compatibility test |
Server runs successfully |
23 |
Configure BOOTP server on embedded system |
Lightweight setup |
Server runs successfully |
24 |
Configure BOOTP server on virtual machine |
Virtualized environment |
Server runs successfully |
25 |
Configure BOOTP server on container |
Docker test |
Server runs successfully |
26 |
Configure BOOTP server with GUI tool |
User-friendly setup |
Server configures easily |
27 |
Configure BOOTP server with CLI tool |
Manual setup |
Server configures easily |
28 |
Configure BOOTP server with text editor |
Simple config |
Server parses file correctly |
29 |
Configure BOOTP server with default settings |
Minimal setup |
Server runs successfully |
30 |
Configure BOOTP server with custom port |
Advanced config |
Server listens on new port |
31 |
Configure BOOTP server with logging enabled |
Debugging |
Logs generated |
32 |
Configure BOOTP server with logging disabled |
Silent mode |
No logs generated |
33 |
Configure BOOTP server with packet capture |
Wireshark |
BOOTP packets visible |
34 |
Configure BOOTP server with firewall enabled |
Port 67 open |
Server receives requests |
35 |
Configure BOOTP server with firewall blocking |
Port 67 closed |
Server does not receive requests |
36 |
Configure BOOTP server with relay agent |
Routed setup |
Server receives forwarded requests |
37 |
Configure BOOTP server with static routing |
Multi-subnet |
Server reachable |
38 |
Configure BOOTP server with DNS integration |
Optional |
Server starts successfully |
39 |
Configure BOOTP server with TFTP integration |
Boot file delivery |
Server starts successfully |
40 |
Configure BOOTP server with PXE client |
Legacy boot |
Server responds correctly |
41 |
Configure BOOTP server with legacy BIOS client |
Compatibility test |
Server responds correctly |
42 |
Configure BOOTP server with UEFI client |
Compatibility test |
Server responds correctly |
43 |
Configure BOOTP server with IPv4 only |
Standard config |
Server runs successfully |
44 |
Configure BOOTP server with IPv6 |
Unsupported |
Server ignores config |
45 |
Configure BOOTP server with hostname resolution |
Optional |
Server starts successfully |
46 |
Configure BOOTP server with MAC filtering |
Security feature |
Server restricts access |
47 |
Configure BOOTP server with access logs |
Monitoring |
Logs show client activity |
48 |
Configure BOOTP server with error logs |
Troubleshooting |
Logs show config issues |
49 |
Configure BOOTP server with backup rotation |
Maintenance |
Logs archived |
50 |
Configure BOOTP server in test lab |
Simulation |
Server runs with minimal setup |
Compatability with DHCP - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
BOOTP client requests IP from DHCP server |
Compatibility test |
IP assigned |
2 |
BOOTP client requests boot file from DHCP server |
PXE boot |
Boot file delivered |
3 |
BOOTP client on same subnet as DHCP server |
Direct communication |
IP assigned |
4 |
BOOTP client on different subnet via relay |
Routed request |
IP assigned |
5 |
BOOTP client with valid MAC in DHCP config |
Static mapping |
Correct IP assigned |
6 |
BOOTP client with no entry in DHCP config |
Dynamic pool |
IP assigned from pool |
7 |
BOOTP client with malformed request |
Protocol error |
DHCP server ignores |
8 |
BOOTP client with broadcast request |
Standard behavior |
DHCP server responds |
9 |
BOOTP client with unicast request |
Direct response |
IP assigned |
10 |
BOOTP client with Option 53 set to 1 (DISCOVER) |
DHCP compatibility |
Server responds |
11 |
BOOTP client with no Option 53 |
Legacy format |
DHCP server still responds |
12 |
BOOTP client with Option 60 (vendor class) |
Vendor-specific |
DHCP server processes |
13 |
BOOTP client with Option 82 (relay info) |
Relay agent support |
DHCP server processes |
14 |
BOOTP client with Option 67 (boot file) |
PXE boot |
Boot file delivered |
15 |
BOOTP client with Option 66 (TFTP server) |
PXE boot |
Server IP delivered |
16 |
BOOTP client with Option 1 (subnet mask) |
Network config |
Mask delivered |
17 |
BOOTP client with Option 3 (gateway) |
Network config |
Gateway delivered |
18 |
BOOTP client with Option 6 (DNS) |
Network config |
DNS delivered |
19 |
BOOTP client with Option 15 (domain name) |
Network config |
Domain delivered |
20 |
BOOTP client with Option 12 (hostname) |
Hostname delivery |
Name delivered |
21 |
BOOTP client with Option 28 (broadcast address) |
Network config |
Address delivered |
22 |
BOOTP client with Option 54 (server identifier) |
DHCP server ID |
Delivered |
23 |
BOOTP client with Option 51 (lease time) |
Not applicable |
Ignored by client |
24 |
BOOTP client with Option 58/59 (renewal/rebind) |
Not applicable |
Ignored by client |
25 |
BOOTP client with Option 43 (vendor-specific) |
Optional |
Ignored or processed |
26 |
BOOTP client with DHCP server failover |
Redundant servers |
IP still assigned |
27 |
BOOTP client with DHCP server restart |
Persistent config |
IP reassigned |
28 |
BOOTP client with DHCP server config reload |
Dynamic update |
IP reassigned |
29 |
BOOTP client with DHCP server on Linux |
Compatibility test |
IP assigned |
30 |
BOOTP client with DHCP server on Windows |
Compatibility test |
IP assigned |
31 |
BOOTP client with ISC DHCP server |
Open-source test |
IP assigned |
32 |
BOOTP client with Cisco DHCP server |
Enterprise test |
IP assigned |
33 |
BOOTP client with pfSense DHCP server |
Firewall test |
IP assigned |
34 |
BOOTP client with Fortinet DHCP server |
Security appliance |
IP assigned |
35 |
BOOTP client with DHCP server in cloud |
Cloud-hosted |
IP assigned |
36 |
BOOTP client with DHCP server in VM |
Virtualized test |
IP assigned |
37 |
BOOTP client with DHCP server in container |
Docker test |
IP assigned |
38 |
BOOTP client with DHCP server on VLAN |
Tagged traffic |
IP assigned |
39 |
BOOTP client with DHCP server on trunk port |
Multi-VLAN |
IP assigned |
40 |
BOOTP client with DHCP server behind NAT |
Translated traffic |
IP assigned |
41 |
BOOTP client with DHCP server over VPN |
Remote access |
IP assigned |
42 |
BOOTP client with DHCP server over SD-WAN |
Overlay network |
IP assigned |
43 |
BOOTP client with DHCP server over mesh |
Distributed network |
IP assigned |
44 |
BOOTP client with DHCP server and logging enabled |
Audit trail |
Request logged |
45 |
BOOTP client with DHCP server and logging disabled |
Silent mode |
No logs generated |
46 |
BOOTP client with packet capture |
Wireshark |
DHCP response visible |
47 |
BOOTP client with firewall blocking DHCP |
Port 67/68 blocked |
No IP assigned |
48 |
BOOTP client with firewall allowing DHCP |
Port open |
IP assigned |
49 |
BOOTP client with DHCP server using static leases |
MAC-based match |
Correct IP assigned |
50 |
BOOTP client with DHCP server using dynamic pool |
No static entry |
IP assigned from pool |
Low Overhead - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Use BOOTP on embedded Linux device |
Lightweight OS |
IP assigned successfully |
2 |
Use BOOTP on microcontroller with TCP/IP stack |
Minimal resources |
IP assigned successfully |
3 |
Use BOOTP on IoT sensor |
Low memory footprint |
IP assigned successfully |
4 |
Use BOOTP on industrial PLC |
Real-time system |
IP assigned successfully |
5 |
Use BOOTP on network printer |
Embedded firmware |
IP assigned successfully |
6 |
Use BOOTP on IP camera |
Surveillance device |
IP assigned successfully |
7 |
Use BOOTP on VoIP phone |
Lightweight OS |
IP assigned successfully |
8 |
Use BOOTP on smart switch |
Embedded OS |
IP assigned successfully |
9 |
Use BOOTP on legacy BIOS PXE client |
Boot-time IP |
IP assigned successfully |
10 |
Use BOOTP on UEFI PXE client |
Compatibility test |
IP assigned successfully |
11 |
Use BOOTP with no lease management |
No timers |
IP remains assigned |
12 |
Use BOOTP with no renewal logic |
Stateless client |
IP remains valid |
13 |
Use BOOTP with no client-side config |
Plug-and-play |
IP assigned automatically |
14 |
Use BOOTP with no GUI |
CLI-only setup |
Server runs successfully |
15 |
Use BOOTP with minimal config file |
Few lines |
Server starts successfully |
16 |
Use BOOTP with no database backend |
Flat file config |
Server functions correctly |
17 |
Use BOOTP with no logging |
Silent mode |
Server runs with low resource use |
18 |
Use BOOTP with minimal CPU usage |
Embedded CPU |
Server/client operate efficiently |
19 |
Use BOOTP with minimal RAM usage |
<1MB RAM |
Server/client operate efficiently |
20 |
Use BOOTP with no disk writes |
Read-only system |
Server/client operate correctly |
21 |
Use BOOTP with no encryption overhead |
Plain UDP |
Fast response |
22 |
Use BOOTP with no TLS/SSL |
Lightweight protocol |
Fast response |
23 |
Use BOOTP with UDP only |
No TCP stack |
IP assigned successfully |
24 |
Use BOOTP with no retries |
Single request |
IP assigned successfully |
25 |
Use BOOTP with 1-packet exchange |
Minimal traffic |
IP assigned successfully |
26 |
Use BOOTP with no option negotiation |
Fixed config |
IP assigned successfully |
27 |
Use BOOTP with no dynamic allocation |
Static IPs only |
IP assigned successfully |
28 |
Use BOOTP with no lease tracking |
Stateless server |
IP assigned successfully |
29 |
Use BOOTP with no client-side logs |
Silent client |
IP assigned successfully |
30 |
Use BOOTP with no DNS integration |
IP-only config |
IP assigned successfully |
31 |
Use BOOTP with no gateway config |
Local subnet only |
IP assigned successfully |
32 |
Use BOOTP with no subnet mask config |
Default mask |
IP assigned successfully |
33 |
Use BOOTP with no boot file |
IP only |
IP assigned successfully |
34 |
Use BOOTP with boot file |
Optional feature |
Boot file delivered |
35 |
Use BOOTP with no relay agent |
Same subnet |
IP assigned successfully |
36 |
Use BOOTP with relay agent |
Routed request |
IP assigned successfully |
37 |
Use BOOTP with no VLAN tagging |
Flat network |
IP assigned successfully |
38 |
Use BOOTP with VLAN tagging |
Tagged traffic |
IP assigned successfully |
39 |
Use BOOTP with no NAT |
Direct routing |
IP assigned successfully |
40 |
Use BOOTP with NAT |
Translated traffic |
IP assigned successfully |
41 |
Use BOOTP with no firewall |
Open network |
IP assigned successfully |
42 |
Use BOOTP with firewall allowing UDP 67/68 |
Allowed traffic |
IP assigned successfully |
43 |
Use BOOTP with packet capture |
Wireshark |
Minimal packet size |
44 |
Use BOOTP with 1 client |
Minimal load |
Server performs efficiently |
45 |
Use BOOTP with 10 clients |
Small network |
Server performs efficiently |
46 |
Use BOOTP with 100 clients |
Medium network |
Server performs efficiently |
47 |
Use BOOTP with 1000 clients |
Stress test |
Server handles load (if optimized) |
48 |
Use BOOTP with embedded server (e.g., BusyBox) |
Lightweight binary |
Server runs successfully |
49 |
Use BOOTP with no GUI tools |
CLI-only |
Server/client operate correctly |
50 |
Use BOOTP in air-gapped network |
Isolated setup |
IP assigned successfully |
Reference links