Dudas varias sobre la Parte 2

Dudas varias sobre la Parte 2

de Esteban Normey Rieta -
Número de respuestas: 1

Buenas tardes,

Queria dejar planteado algunas dudas que me surgieron al ir completando las funciones de enrutamiento segun lo estipulado en la especificación del OSPFv2 dada.

1. Al checkear la topologia en check_topology_entries_age(args), si algo cambia se deberia enviar paquetes LSU a los vecinos segun lo que se estipula en la especificación:  

"Whenever a change in a link status is detected (for example the addition or deletion of a router to the topology) or a timeout occurs, each router floods its view of the network throughout the topology so that each router has a complete database of the network connectivity"

Asumo que debemos seguir esto y enviar los LSU correspondiente, ¿no? 

Si la respuesta es sí, tengo otra duda, pues la especificación dice que debemos resetear el `lsuint counter` que seria el tiempo en el que el hilo que maneja el send_all_lsu(arg) se duerme:

"If a link state change initiates a links state update, the lsuint counter is reset to wait another LSUINT seconds before triggering another flood".

¿Debemos seguir esto también, o no se tomara en cuenta esta parte (pues a priori no se me ocurre una forma de controlar el tiempo del usleep desde otro hilo)?

2. No me queda claro si el campo length del OSPF header contempla el largo del header siguiente (HELLO o LSU). Pues no interpreto claramente la especificación que dice :
"The length of the protocol packet in bytes. This length includes the standard OSPF header".

3. Además del campo anterior, tampoco me queda claro si el checksum del OSPF header también debe contemplar el header siguiente (HELLO o LSU).

4. (Esta duda ya esta planteada en otro foro por un compañero https://eva.fing.edu.uy/mod/forum/discuss.php?d=309919)
En la especificación dice:
"When a neighbor router/interface goes down, the local router will detect it due to missing HELLO message, change the neighbor's RID back to 0, and flood the new LSU".

Esto se hace en check_neighbors_life(arg), sin embargo la función que nos dan para esta parte es check_neighbors_alive(args) la cual si bien detecta y elimina cuando se ha acabado el tiempo de vida de vecinos, no actualiza la interfaz.neighbor_id a 0 de esos vecinos, pero tampoco nos devuelve las ids de los vecinos eliminados, lo cual creo que dificulta incluso el iterar por todas las interfaces del router para actualizar esos valores a 0 (no digo que no se pueda).

Disculpa las molestias jajaja.
Saludos,
Esteban Normey.

En respuesta a Esteban Normey Rieta

Re: Dudas varias sobre la Parte 2

de Matias Richart -
Hola Esteban,

Primero que nada, no es molestia las preguntas, así que pregunta tranquilo.

1- No esperamos que envíen LSUs en ese caso. Con el LSU cada 30 segundos es suficiente para que se actualice la topología en el resto de nodos.
2- Si, el largo es el largo de todo el paquete OSPF, incluye el largo del HELLO o LSU (incluido cada LSA)
3- Si, debe incluir todo
4- Acabo de responderla, hemos cambiado el código para que puedan resolver esto de una mejor forma. En este caso tampoco se espera que manden un LSU.

Espero haber sido claro, cualquier cosa vuelve a preguntar.

Saludos