Recepción de notificaciones de cambios

Muchos clientes pueden actualizar simultáneamente la tabla de enrutamiento y los clientes deben recibir notificaciones cuando se produzcan cambios en la información de enrutamiento. Por ejemplo, un cliente que no recibe una notificación de los cambios de otro cliente en la tabla de enrutamiento podría anunciar información de ruta obsoleta. Esto se puede evitar mediante la programación de clientes que se registren con el administrador de tablas de enrutamiento para recibir notificaciones de cambios en la tabla de enrutamiento. El administrador de tablas de enrutamiento envía notificaciones de cambios a todos los clientes que se registran para recibirlos.

La notificación de cambios solo se aplica a los destinos. No hay ninguna manera de consultar el administrador de tablas de enrutamiento para ver los cambios en una ruta determinada.

Cuando se realiza un cambio en una de las rutas a un destino, el administrador de tablas de enrutamiento envía una notificación de que se ha producido un cambio. Esta notificación solo va a los clientes que se han registrado con el administrador de tablas de enrutamiento para el tipo de cambio que se ha producido. Todos los cambios en la información de enrutamiento del administrador de tablas de enrutamiento se producen en una o varias vistas y se pueden solicitar mensajes de notificación de cambios en cualquier subconjunto de vistas admitidas.

Actualmente hay tres tipos de notificaciones de cambio para las que un cliente puede registrar:

  • Notificación de cualquier cambio en las rutas para el destino. Esta solicitud se realiza con la marca RTM_CHANGE_TYPE_ALL.

  • Notificación si la mejor ruta a los cambios de destino o cualquiera de las siguientes informaciones para los cambios de ruta más recientes:

    • Referencia
    • Próximo saltos
    • Marcas de ruta

    Esta solicitud se realiza con la marca RTM_CHANGE_TYPE_BEST.

  • Notificación de todos los cambios del tipo RTM_CHANGE_TYPE_BEST, excepto los cambios en las marcas de no reenvío en la mejor ruta. Por ejemplo, el administrador de enrutadores espera los cambios de este tipo en la vista de unidifusión y actualiza la información en el reenviador de unidifusión. Esta solicitud se realiza con la marca RTM_CHANGE_TYPE_FORWARDING.

Las solicitudes de notificaciones de cambios también se pueden restringir a un subconjunto de destinos mediante el registro de notificaciones de cambios solo en destinos "marcados". El cliente puede marcar un destino para la notificación de cambios llamando a RtmMarkDestForChangeNotification.

Cuando se produce un cambio, el administrador de tablas de enrutamiento comprueba si hay clientes que deben recibir una notificación de este cambio. Un cliente debe recibir una notificación de un cambio si se cumplen todas las condiciones siguientes:

  • El tipo de cambio que se produjo es un tipo para el que el cliente se ha registrado para la notificación.
  • Cambios en un destino que el cliente ha marcado se han producido o cualquier destino, si el cliente ha solicitado cambios para todos los destinos
  • Notificación de cambio solicitada por el cliente para la vista en la que se produjo este cambio

Si el cambio cumple todos los criterios anteriores, el cambio se almacena en caché y se notifica al cliente.

La notificación no especifica cuáles son los cambios reales, solo que se han producido. El cliente debe recuperar los cambios llamando a RtmGetChangedDests mediante el identificador de notificación obtenido de una llamada anterior a RtmRegisterForChangeNotification.