When client is trying to renew it lease time, how does it unicasts to the server if the server id MUST NOT BE FILLED according to RFC2131 4.3.2
” DHCPREQUEST generated during RENEWING state:
‘server identifier’ MUST NOT be filled in, ‘requested IP address’ option MUST NOT be filled in, ‘ciaddr’ MUST be filled in with client’s IP address. In this situation, the client is completely configured, and is trying to extend its lease. This message will be unicast, so no relay agents will be involved in its transmission. Because ‘giaddr’ is therefore not filled in, the DHCP server will trust the value in ‘ciaddr’, and use it when replying to the client.
A client MAY choose to renew or extend its lease prior to T1. The server may choose not to extend the lease (as a policy decision by the network administrator), but should return a DHCPACK message regardless.”
siaddr, the “server identifier” field, is inside the DHCP message, which is send out using UDP, which has its own field for destination IP address in the IP header, so the client unicasts the renew packet to the known IP of the server.