Algoritmo de ejercicio 1.12.8 (comunicación de tres nodos conectados por enlaces half-duplex)

Algoritmo de ejercicio 1.12.8 (comunicación de tres nodos conectados por enlaces half-duplex)

de Jose Diego Suarez Hernandez -
Número de respuestas: 3

Dejo una descripción del algoritmo que comentaba el martes (intenté dejarlo un poco más prolijo).

En respuesta a Jose Diego Suarez Hernandez

Re: Algoritmo de ejercicio 1.12.8 (comunicación de tres nodos conectados por enlaces half-duplex)

de Javier Baliosian -
¡muchas gracias! ¿quién descubre qué cosa esta mal? o, si esta bien, ¿por qué viola el resultado de imposibilidad? 

para acotar el problema vamos a centrarnos en el caso de tres iniciadores, asumir uno o dos ya implica una asimetría que es probable que resuelva el problema. 

saludos

J

En respuesta a Javier Baliosian

Re: Algoritmo de ejercicio 1.12.8 (comunicación de tres nodos conectados por enlaces half-duplex)

de Jose Diego Suarez Hernandez -

Creo que estábamos buscando en el lugar incorrecto: el problema no está en el protocolo, el problema está en uno de los aspectos más básicos del modelo: las etiquetas de los enlaces.

El Resultado de Imposibilidad implica que un algoritmo determinista no puede generar asimetrías de la nada. El protocolo presentado, pese a ser determinista, termina en una situación con asimetrías ya sea considerando los nodos de a pares (donde siempre habrá uno "que escucha" y otro "que transmite") o a nivel de la red completa donde, como mínimo, queda rota la simetría entre los dos sentidos de circulación posible para los datos.

Sin embargo, no hay ninguna contradicción: el protocolo no crea ninguna asimetría sino que explota asimetrías preexistentes en la red introducidas por el "principio de orientación local" que asumimos como axioma. Según la versión de este axioma que usa el libro del curso, cada nodo etiqueta sus enlaces con números de puerto, por lo que en nuestra red de tres nodos estos siempre tendrán una determinada "orientación" implícita con un vecino menor y un vecino mayor según los números de puerto respectivos.

Si las orientaciones de cada nodo coinciden (que a -> b -> c -> a o c -> b -> a -> c) se da lo siguiente:

  • Cada par de nodos es asimétrico ya que uno estará orientado al segundo pero el segundo no al primero (x -> y o y -> x, pero no x -> y -> x ni x -> z, x -> z), evidenciando la preexistencia en este caso de una de las asimetrías observadas.
  • Las orientaciones, al no contradecirse hacen que la red naturalmente tenga un sentido de comunicación, resolviendo la otra asimetría observada.

El caso contrario es que un nodo tenga una orientación y los dos restantes tengan la otra. Esto también permite determinar:

  • Una orientación para la red (la mayoritaria).
  • Una situación asimétrica entre todos los pares de nodos, según el sentido que determinaría la red mayoritaria.

Estas asimetrías son inherentes al problema tal como lo modelamos, pero permanecen implícitas y desconocidas para los nodos al comienzo del protocolo. Lo único que hace el protocolo es explotar esas asimetrías implícitas para dejarlas explícitas.

Sería posible considerar una formulación más débil del principio de orientación local en la que las entidades pudieran distinguir los enlaces pero con etiquetas no comparables, de forma que los nodos iniciadores no poseerían una manera determinista de determinar a qué vecino enviar inicialmente dos mensajes y a cuál uno, impidiendo el inicio mismo del algoritmo. Afortunadamente, en las redes reales necesariamente se dispone de identificadores comparables, por lo que el modelo que wí permitiría el algoritmo es el más apropiado.

Otra propiedad que el protocolo explota pero que es razonable según el modelo es la de afirmar que un nodo solo va a procesar un mensaje a la vez, lo que permite asegurar que un nodo solo confirmará al primer mensaje de "PIDO-CONFIRMAR" aunque, en todo caso, los nodos podrían explotar la asimetría entre sus dos vecinos para procesar primero el del puerto más bajo y luego el del puerto más apto o viceversa.


Resumiendo: Las redes del 1.12.8 son asimétricas por construcción, por lo que es de esperar que  el protocolo obtenga resultados que no son plénamente simétricos.

En respuesta a Jose Diego Suarez Hernandez

Re: Algoritmo de ejercicio 1.12.8 (comunicación de tres nodos conectados por enlaces half-duplex)

de Javier Baliosian -

hola

gracias por el mensaje y dedicarle tiempo al problema. 

creo que tenés razón y que diste con un tema que yo no habia relacionado con este problema antes, en parte porque fue la primera vez que lo propuse con la deteccion de coliciones (hasta ahora lo habiamos pensado como implementar un half-duplex sobre un full-duplex) y esto cambió todo. 

lo que está sucediendo es que como decís vos, el "sistema" sigue siendo simétrico pero, como sucede en el caso del algoritmo de saturación, estamos "arrinconando" las asimetrias locales en partes del grafo.

en este caso, la asimetria interna de una entidad (la que hay entre las etiquetas de los puertos) se expresa localmente en su relacion con los vecinos. vistos de a dos, cortando el resto del grafo, los vecinos no son simétricos y por lo tanto se puede resolver el problema, por ejemplo de la forma que se te ocurrió, pero debe haber otra, ahora se me ocurre usar el identificador del puerto para "desempatar" dos nodos.  (para esto es necesario que las etiquetas de los puertos puedan ser ordenadas de mayor a menor)

esto no se podía hacer en el caso del ejercicio anterior porque existía una sola etiqueta por nodo que forzosamente estaba identificada de igual forma.

¡excelente discusión!

saludos

J