
reloj interno por lo que se evitan saltos de tiempo cuando
se realizan las consultas. Sin embargo, este algoritmo fue
concebido para sincronizaci
´
on en frecuencia en Internet, y
por lo tanto no es una sincronizaci
´
on absoluta, como es
necesario en este caso. Los errores reportados de valores
absolutos rondan las d
´
ecimas de milisegundos, con algunos
microsegundos en la sincronizaci
´
on de frecuencia.
El protocolo SIC cuenta con un m
´
aquina de estados que
puede tomar tres diferentes valores, NO-SYNC, PRE-SYNC y
SYNC. SIC empieza en estado NO-SYNC, toma una muestra
cada un segundo, y a los seiscientos segundos transiciona
al estado PRE-SYNC debido a que ya puede calcular un
primer valor de sincronismo. Finalmente luego de sesenta
segundos de encontrarse en el estado PRE-SYNC el estado
cambia al estado SYNC porque tiene mediciones suficientes
para calcular con precisi
´
on la diferencia de relojes. De esta
manera, una vez inicializado el algoritmo
´
este demora once
minutos hasta que comienza a producir aproximaciones.
Si en cualquier momento se detecta un cambio sustancial
en los tiempos de las muestras recolectadas, o se pierden
suficientes muestras, el estado vuelve a NO-SYNC (porque
estima un cambio de ruta) y comienza nuevamente el
proceso.
II. ALGORITMO DE SINCRONIZACI
´
ON E-SIC
El algoritmo E-SIC toma como base el algoritmo SIC [10]
y le realiza modificaciones para lograr los requerimientos de
sincronizaci
´
on absoluta esperados.
A. Protocolo de intercambio de paquetes
El protocolo de intercambio de paquetes del algoritmo E-
SIC es el mismo que el presentado por el algoritmo SIC.
El cliente intercambia paquetes sobre UDP (del ingl
´
es, User
Datagram Protocol) como podemos apreciar en la Fig. 1.
El intercambio de paquetes comienza cuando el cliente
emite un paquete con el timestamp del instante de su envi
´
o
al servidor (t
1
). El servidor recibe el paquete luego de
un tiempo desconocido que denominaremos t(c → s) y
le adjunta su timestamp correspondiente a la recepci
´
on de
dicho paquete (t
2
). Una vez procesado el paquete, el servidor
lo reenv
´
ıa al cliente adjunt
´
andole previamente su timestamp
actual (t
3
). Finalmente el cliente recibe el paquete despu
´
es
de un tiempo desconocido que denominaremos t(s → c) y
le agrega su timestamp correspondiente a la recepci
´
on (t
4
).
De esta manera el cliente ahora cuenta con cuatro valores
que procesar
´
a para poder realizar correcciones al momento
de informar el tiempo actual. N
´
otese que los timestamps t
1
y t
4
fueron creados usando el reloj del cliente, mientras que
los timestamps t
2
y t
3
refieren al reloj del servidor. Si tanto
el mensaje o su respuesta se pierden en el camino, esto es
detectado y se procede a descartar la presente medici
´
on. Si
llegasen a ocurrir una determinada cantidad de estos fallos
sucesivos el algoritmo se reinicia, comenzando nuevamente
el proceso de sincronizaci
´
on.
En la linea 11 del Algoritmo 1 se desencadena el inter-
cambio de paquetes descriptos en pseudoc
´
odigo del Algor-
timo 2, y finalmente el Algoritmo 3 muestra el pseudocodigo
del intercambio de paquetes del lado del servidor.
Fig. 1. Intercambio de paquetes del algoritmo SIC.
B. Cambios al algoritmo SIC
En la implementaci
´
on y definici
´
on del algoritmo E-SIC se
realizaron los siguientes cambios: eliminaci
´
on del an
´
alisis de
cambio de caminos, eliminaci
´
on de la verificaci
´
on de firmas
de paquetes y del reloj local para el cambio de estados,
y modificaci
´
on del estimador del desfasaje instant
´
aneo. El
objetivo es hacer el protocolo m
´
as simple para adecuarlo as
´
ı
al uso de microcontroladores y al entrono de un red de
´
area
local (del ingl
´
es, LAN) que es un entorno controlado. Todas
estas modificaciones atacan temas transversales al proceso
de la sincronizaci
´
on
1) An
´
alisis de cambio de caminos: El algoritmo SIC
cuenta con un mecanismo que detecta el cambio de rutas
que recorren los paquetes entre el cliente y el servidor,
y en caso de detectar dicho cambio procede a limpiar
es estado interno del modelo y recomenzar el proceso de
sincronizaci
´
on desde su primer fase. Debido a la aplicaci
´
on
por la cual se desarroll
´
o este trabajo, basta con que nuestro
sistema funcione dentro de una red local (LAN), por lo que
no habr
´
a cambio de las rutas entre los nodos del sistema.
Por este motivo procedemos a remover esta secci
´
on del
algoritmo.
2) Firma de paquetes y validaciones de identidad: Para
asegurar que los paquetes que reciben el servidor y los
clientes sean autentificados, la especificaci
´
on de algoritmo
SIC propone un esquema de validaci
´
on de paquetes y firmas;
de esta manera el modelo se encuentra protegido en caso
ante ciertos ataques maliciosos. Suponiendo que el tr
´
afico
del algoritmo no deber
´
ıa salir de la LAN sobre la que
tenemos completo control, estos procesamientos adicionales
de seguridad pueden ser obviados sin suponer una vul-
nerabilidad en el sistema; ya que no se atraviesa ning
´
un
enrutador intermediario.
3) Uso del reloj local: El algoritmo SIC supone que
se colecta una muestra por segundo y utiliza el transcurso
del tiempo para controlar la transici
´
on de estados y no la
cantidad de muestras recolectadas. Debido a esto, En caso de
demoras o fallos en la recolecci
´
on de las marcas de tiempos
(timestamps), se produce una transici
´
on de estados antes de
que este posea todas las muestras que requiere para realizar
una buena estimaci
´
on. Como soluci
´
on a estos problemas
introduciremos una variable que funcionara como contador
de los ciclos que han transcurrido, por lo que el uso del reloj
local quedara limitado s
´
olo a la recolecci
´
on de timestamps.
4) C
´
alculo del desfasaje instant
´
aneo: En esta secci
´
on
introducimos un m
´
etodo de c
´
alculo de desfasaje y su
correcci
´
on, ver el Algoritmo 1 utilizado. La primera gran
diferencia entre el algoritmo SIC y su variante E-SIC es
la introducci
´
on de una constante para modelar la diferencia
Revista elektron, Vol. 5, No. 2, pp. 112-119 (2021)
http://elektron.fi.uba.ar