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.