Proxy dinámico

El agente guarda una lista con información de equipos en la red que tengan agentes que son capaces de enviar mensajes a Internet. Estos agentes se denominan Proxys.

Cuando la lista de proxys está vacía o ninguno de los agentes que están en ella responde (Disponibilidad = 0), el agente envía un mensaje por broadcast a la subred preguntando ¿quién es Proxy? para que estos le respondan y pueda mandar mensajes a Internet a través de ellos.

Mientras realiza la espera por datos de la lista de proxys válidos, el módulo del Proxy no atenderá peticiones de otros mensajes.

La lista de proxys tendrá un valor asociado para cada Proxy con el número de intentos que se permiten fallar en la comunicación con otro agente antes de invalidar ese agente como proxy.

Por defecto el número de veces será 3, y cuando este valor alcance 0 se entenderá que ese agente no es válido como proxy. Si en algún momento todos los proxys de la lista son inválidos se entiende que la lista es no válida en su conjunto y se comenzará la búsqueda de proxys, lanzando un mensaje “¿quién es proxy?”.

Puede ocurrir que el mensaje se envíe correctamente a un proxy de la lista, pero que éste al intentar mandar el mensaje a Internet descubra que ya no tiene conexión.

En ese caso el agente remoto repetirá la secuencia aquí descrita reenviando el mensaje a un proxy de su lista, pero además enviará por TCP al agente del que le llegó el mensaje otro de tipo “Yo no soy Proxy”, para indicarle que lo borre de su lista porque ya no tiene conexión a Internet.

Este proceso se repetirá hasta que el mensaje se envíe correctamente a Internet o hasta que pase por un número máximo de proxy sin conseguir enviarse, en cuyo caso se perderá.

Se puede configurar el número de proxys por los que puede pasar un mensaje. Por defecto sólo se enviará a 1, y si falla el envío desde ése se perderá el mensaje.

Dentro del mensaje se guarda la lista de proxys por los que ha pasado, de modo que no se envíe dos veces al mismo proxy sin conexión a Internet.