El Protocolo de Configuración Dinámica de Hosts para IPv6 (DHCPv6) es un protocolo único para cliente-servidor, definido en la RFC 3315 de la IETF, que proporciona una configuración administrada de dispositivos sobre IPv6.
Introducción
Aunque IPv6 resuelve la auto configuración de direcciones, lo cual es la principal motivación de DHCP en IPv4. DHCPv6Droms, R.; Bound, J.; Volz, B.; Lemon, T.; Perkins, C.; Carney, M. (2003) [rfc:3315 "Dynamic Host Configuration Protocol for Ipv6(DHCPv6)"], IETF RFC 3315 aún tiene más sentido, ya que le brinda más control al administrador de la red sobre las asignaciones, así como mayor amplitud en la configuración de servicios de red.
DHCPv6 puede trabajar de forma conjunta con el mecanismo stateless. El administrador de red determina qué procesos se van a emplear a través de los mensajes “RA” de ICMPv6. También permite a los clientes la solicitud de múltiples direcciones IPv6, que no era posible en IPv4 ni en IPv6 a través del mecanismo stateless.
DHCPv6 funciona sobre el protocolo UDP. El cliente utiliza una dirección link-local u otra determinada a través de otros mecanismos para transmitir y recibir los mensajes DHCPv6.
Los servidores DHCPv6 reciben mensajes de los clientes utilizando una dirección reservada multicast. Un cliente DHCPv6 transmite la mayoría de los mensajes a la dirección anteriormente mencionada por lo que no es necesario que el cliente sea configurado con dirección unicast del servidor DHCPv6.
Para permitir que un cliente DHCPv6 pueda enviar un mensaje a un servidor DHCPv6 al que no está unido por el mismo enlace deberá haber un agente DHCPv6 de retransmisión que se encargará de transmitir los mensajes entre cliente y servidor en ambos sentidos de la comunicación.
Una vez que el cliente ha determinado la dirección de un servidor se podrá, bajo algunas circunstancias, enviar mensajes directamente al servidor utilizando su dirección unicast.
Para solicitar la asignación de una o más direcciones IPv6 así como información de configuración, un cliente primero tiene que localizar al servidor DHCPv6 y luego hacer la petición al servidor para la asignación de dirección, y otra para la información extra de configuración.
Constantes DHCPv6
Direcciones Multicast All_DHCP_Relay_Agents_and_Servers (FF02::1:2). Una dirección link-local multicast usada por el cliente para comunicarse con los agentes de transmisión y servidores vecinos. Todos los servidores y agentes de restransmisión son miembros de este grupo multicast. All_DHCP_servers (FF05::1:3). Una dirección site-local multicast, usado por los agentes de retransmisión para comunicarse con los servidores, ya sea porque quiere enviar el mensaje a todos los servidores o porque no conoce la dirección unicast de los servidores.
Puertos UDP Clientes 546 UDP
Servidores y agentes de retransmisión 547 UDP
Tipos de Mensaje DHCPv6 La siguiente tabla muestra los tipos de mensaje DHCPv6 así como su función. Nombre del Mensaje Msg-type Descripción SOLICIT 1 Un cliente manda un mensaje SOLICIT para localizar servidores. ADVERTISE 2 El servidor en un mensaje ADVERTISE para indicar que está disponible para el servicio, en respuesta al mensaje de solicitud recibido de un cliente. REQUEST 3 Un cliente manda un mensaje REQUEST para solicitar los parámetros de configuración, incluyendo la dirección IP, de un servidor específico. CONFIRM 4 Un cliente envía un mensaje CONFIRM a cualquier servidor disponible para determinar si las direcciones que se asignaron siguen siendo válidas. RENEW 5 Un cliente manda un mensaje RENEW al servidor que originalmente proporcionó la dirección del cliente y los parámetros de configuración para extender los tiempos de vida en la dirección asignada y actualizar los parámetros de configuración. REBIND 6 Un cliente envía el mensaje REBIND a cualquier servidor disponible para extender los tiempos de vida en la dirección asignada a los clientes y para actualizar otros parámetros de configuración. Este mensaje solo se envía cuando el cliente no obtiene respuesta del mensaje RENEW. REPLY 7 Un servidor manda un mensaje de REPLY conteniendo las direcciones asignadas y los parámetros de configuración en respuesta a un mensaje SOLICIT, REQUEST, RENEW, REBIND recibido del cliente. También se manda este mensaje pero conteniendo únicamente los parámetros de configuración en respuesta a un mensaje INFORMATION-REQUEST. También se manda un mensaje REPLY en respuesta a un mensaje CONFIRM confirmando o denegando la validez de la dirección asignada al cliente que envía el mensaje CONFIRM. Y por último también se envía un mensaje de REPLY para realizar un asentimiento de recepción de los mensajes RELEASE y DECLINE. RELEASE 8 Un cliente manda un mensaje de RELEASE al servidor que le asignó las direcciones IP para indicar que no usará más una o varias de las direcciones asignadas. DECLINE 9 Un cliente envía un mensaje DECLINE para indicar al servidor que una o varias de las direcciones que tiene asignadas por el servidor están siendo utilizadas en el enlace en el que el cliente está conectado. RECONFIGURE 10 Un servidor envía un mensaje de RECONFIGURE a un cliente para informarle de que el servidor tiene unos parámetros de configuración nuevos o actualizados, entonces el cliente iniciará una transacción RENEW/REPLY o INFORMATION-REQUEST/REPLY con el servidor para obtener la nueva configuración. INFORMATION-REQUEST 11 Un cliente envía un mensaje INFORMATION-REQUEST al servidor para pedir los parámetros de configuración sin pedir ninguna dirección IP. RELAY-FORW 12 Un agente de retransmisión envía un mensaje RELAY-FORWARDING al servidor, ya sea él mismo o a través de otro agente de transmisión. El mensaje recibido, a través de un cliente o a través de otro agente de retransmisión se encapsula en una opción del mensaje RELAY-FORWARDING. RELAY-REPL 13 Un servidor envía un mensaje RELAY-REPLY un agente de retransmisión conteniendo el mensaje que el agente de retransmisión debe entregar al cliente. Este mensaje puede ser reenviado por varios agentes de retransmisión. El servidor encapsula el mensaje al cliente como una opción dentro del mensaje RELAY-REPLY.
Parámetros de Transmisión y Retransmisión Parámetro Valor por Defecto Descripción SOL_MAX_DELAY 1 s Máximo retardo del primer mensaje SOLICIT SOL_TIMEOUT 1 s Tiempo inicial de espera del mensaje SOLICIT SOL_MAX_RT 120 s Máximo tiempo de espera del mensaje SOLICIT REQ_TIMEOUT 1 s Tiempo de espera inicial de un mensaje REQUEST REQ_MAX_RT 30 s Tiempo máximo de espera de un mensaje REQUEST REQ_MAX_RC 10 Número máximo de reintentos del mensaje REQUEST CNF_MAX_DELAY 1 s Tiempo máximo de retardo del primer mensaje CONFIRM CNF_TIMEOUT 1 s Tiempo de espera inicial del mensaje CONFIRM CNF_MAX_RT 4 s Tiempo de espera máximo de un mensaje CONFIRM CNF_MAX_RD 10 s Duración máxima de un mensaje CONFIRM REN_TIMEOUT 10 s Tiempo de espera inicial del mensaje RENEW REN_MAX_RT 600 s Tiempo de espera máximo para un mensaje RENEW REB_TIMEOUT 10 s Tiempo de espera inicial para un mensaje REBIND REB_MAX_RT 600 s Tiempo de espera máximo para un mensaje REBIND INF_MAX_DELAY 1 s Retardo máximo del primer mensaje INFORMATION-REQUEST INF_TIMEOUT 1 s Tiempo de espera inicial para un mensaje INFORMATION-REQUEST INF_MAX_RT 120 s Tiempo máximo de espera del mensaje INFORMATION-REQUEST REL_TIMEOUT 1 s Tiempo de espera inicial del mensaje RELEASE REL_MAX_RC 5 Máximo de intentos de mensaje RELEASE DEC_TIMEOUT 1 s Tiempo inicial de espera para el mensaje DECLINE DEC_MAX_RC 5 Máximo intentos de mensaje DECLINE REC_TIMEOUT 2 s Tiempo de espera inicial del mensaje RECONFIGURE REC_MAX_RC 8 Intentos máximos de enviar el mensaje RECONFIGURE HOP_COUNT_LIMIT 32 Máximo número de saltos en un mensaje RELAY-FORWARD
Códigos de Estado Código Nombre 0 Success 1 UnspecFail 2 NoAddrAvail 3 NoBinding 4 NotOnLink 5 UseMulticast 6 NoPrefixAvail 7 UnknownQueryType 8 MalformedQuery 9 NotConfigured 10 NotAllowed 11 QueryTerminated 12-255 Sin Asignar
Formato de mensajes Cliente-Servidor Todos los mensajes DHCPv6 enviados entre clientes y servidor comparten un formato de cabecera fijo e idéntico y un formato variable en el área de opciones. Las opciones se guardan seguidamente sin relleno entre ellas. En la siguiente figura se puede ver un diagrama de la composición de dicho mensaje en el que se pueden identificar los siguientes campos: Tipo de mensaje. Identifica el tipo de mensaje DHCP. Identificador de transacción. Número identificativo de un intercambio de mensajes. Opciones. Este campo es variable. 400x200px|marco|centro|Formato de mensaje DHCPv6 entre cliente y servidor Formato de mensajes entre Agentes de Retransmisión Y Servidores Los agentes de retransmisión intercambian mensajes con servidores para retransmitir mensajes entre servidores y clientes que no están conectados en el mismo enlace. 400x300px|marco|derecha|Formato de mensaje entre agentes de retransmisión DHCPv6
Hay dos tipos de mensajes de agente de retransmisión , pero ambos comparten el mismo formato: Tipo de mensaje. RELAY-FORW o RELAY-REPL Link-address. Una dirección global o site-local que será usada por el servidor para identificar el enlace en el que se encuentra el cliente. Peer-address. La dirección del cliente o del agente de retransmisión desde el que se recibió el mensaje que tiene que ser retransmitido. Opciones. Debe incluir una opción llamada “Relay Message Options”, y además puede incluir otras opciones.
Identificador Único DHCP (DUID) Cada cliente DHCPv6 o servidor DHCPv6 tiene un DUID. Los servidores DHCPv6 usan DUIDs para identificar a los clientes para la selección de parámetros de configuración y para asociar las IAs con los clientes. Los clientes usan DUIDs para identificar al servidor en mensajes en los que el servidor debe ser identificado.
Tanto cliente como servidor tratan los DUIDs como valores opacos y sólo deben compararlos por igualdad. Ambos en ningún caso interpretan los DUIDs. El DUID es transportado en el campo opciones ya que tiene una longitud variable y no se requiere en todos los mensajes DHCPv6.
El DUID consiste en un campo de dos octetos representando el tipo de código seguido por un número variables de octetos que representan el identificador real. Un DUID no puede ser más largo de 128 bytes (sin incluir el tipo de código).
Asociación de Identidad (IA) Una asociación de identidad (IA) es una construcción a través de la cual un servidor y un cliente pueden identificar, agrupar y gestionar un conjunto de direcciones IPv6 relacionadas. Cada IA consiste en un IAID (Identificador de Asociación de Identidad) y la información de configuración asociada.
Un cliente debe asociar al menos una IA distinta para cada uno de sus interfaces de red para los que está pidiendo la asignación de direcciones IPv6 por el servidor DHCPv6. El cliente utiliza la IA asignada a una interfaz para obtener la información de configuración desde el servidor para esa interfaz. Cada IA debe de estar asociada única y exclusivamente con una sola interfaz.
El IAID identifica de forma única a la IA y debe ser elegido para ser único entre los IAIDs en el cliente. El IAID es elegido por el cliente. Para cualquier uso de una IA por parte del cliente el IAID para esa IA debe ser consistente cuando se reinicie el cliente DHCPv6, para lo cual el cliente debe de almacenarlo en una memoria no volátil o usar un algoritmo que haga que el IAID generado cada vez que se reinicia el cliente DHCPv6 coincida con el anterior siempre y cuando la configuración no haya cambiado.
Selección de direcciones para asignar a una IA Un servidor selecciona direcciones para ser asignadas a un IA de acuerdo con la política de asignación de direcciones determinada por el administrador del servidor y la información específica que el servidor determina sobre el cliente de alguna combinación de las siguientes opciones: