The addresses are assigned in blocks. The smallest block is a single address. To request an assignment, the client sends a Solicit message with an IA_LL option inside. The IA_LL option
MUST contain an LLADDR option, as specified in
Section 7.
The server, upon receiving an IA_LL option, inspects its content and may offer an address or addresses for each LLADDR option according to its policy. The server
MAY take into consideration the address block requested by the client in the LLADDR option. However, the server
MAY choose to ignore some or all parameters of the requested address block. In particular, the server may send either a different starting address or a smaller number of addresses than requested. The server sends back an Advertise message with an IA_LL option containing an LLADDR option that specifies the addresses being offered. If the server is unable to provide any addresses, it
MUST return the IA_LL option containing a Status Code option (see
Section 21.13 of
RFC 8415) with status set to NoAddrsAvail.
Note that servers that do not support the IA_LL option will ignore the option and not return it in Advertise (and Reply) messages. Clients that send IA_LL options
MUST treat this as if the server returned the NoAddrsAvail status for these IA_LL option(s).
The client waits for available servers to send Advertise responses and picks one server, as defined in
Section 18.2.9 of
RFC 8415. The client then sends a Request message that includes the IA_LL container option with the LLADDR option copied from the Advertise message sent by the chosen server.
The client
MUST process the address block(s) returned in the Advertise, rather than what it included in the Solicit message, and may consider the offered address block(s) in selecting the Advertise message to accept. The server may offer a smaller number of addresses or different addresses from those requested. A client
MUST NOT use resources returned in an Advertise message except to select a server and in sending the Request message to that server; resources are only useable by a client when returned in a Reply message.
Upon reception of a Request message with the IA_LL container option, the server assigns the requested addresses. The server allocates a block of addresses according to its configured policy. The server
MAY assign a different block or smaller block size than requested in the Request message. The server then generates and sends a Reply message back to the client.
Upon receiving a Reply message, the client parses the IA_LL container option and may start using all provided addresses. It
MUST restart its T1 and T2 timers using the values specified in the IA_LL option.
The client
MUST use the address block(s) returned in the Reply message, which may be a smaller block(s) or may have a different address(es) than requested.
A client that has included a Rapid Commit option in the Solicit message may receive a Reply in response to the Solicit message and skip the Advertise and Request message steps above (see
Section 18.2.1 of
RFC 8415).
A client that changes its link-layer address on an interface
SHOULD follow the recommendations in
Section 7.2.6 of
RFC 4861 to inform its neighbors of the new link-layer address quickly.