Sincronizaci
´
on de relojes embebidos en Internet
(E-SIC) sin hardware dedicado
Embedded Synchronizing Internet Clocks (E-SIC) without dedicated hardware
Javier Alejandro Atadia
1
, Ramiro Alonso
2
, Leonardo Mart
´
ın Carducci
3
Universidad de Buenos Aires, Facultad de Ingenier
´
ıa, Argentina
1
jaatadia@fi.uba.ar,
2
ralonso@fi.uba.ar,
3
lcarducci@fi.uba.ar
Abstract—E-SIC is an algorithm designed to synchronize the
clocks of embedded controllers through a Local Area Network
(LAN) using 802.11 (WI-FI) technology. It’s based on the SIC
algorithm that synchronizes frequency between the clocks by
taking advantage of the symmetry of the networks round trip
time. By considering an historic window of measurements
and the usage of the mode as an estimation tool, the E-SIC
algorithm has achieved absolute clock sync between two
devices with a higher accuracy than two milliseconds without
the requirement of extra hardware.
Keywords: clock; synchronization; WI-FI; IoT.
Resumen— E-SIC es un algoritmo dise
˜
nado para la
sincronizaci
´
on de relojes en controladores embebidos a trav
´
es
de una red local (LAN) con tecnolog
´
ıa 802.11 (WI-FI). Dicho
algoritmo esta basado en el algoritmo SIC que sincroniza
frecuencia entre relojes suponiendo la simetr
´
ıa en los caminos
de ida y retorno de los mensajes. Al utilizar una ventana de
tiempo hist
´
orica y la moda como herramienta de estimaci
´
on,
el algoritmo E-SIC logra sincronizaci
´
on entre dispositivos con
una exactitud mejor que dos milisegundos sin necesidad de
hardware extra.
Palabras clave: relojes; sincronizaci
´
on; WI-FI; IoT.
I. INTRODUCCI
´
ON
La Facultad de Ingenier
´
ıa de la Universidad de Buenos
Aires, ha comenzado el desarrollo de redes de sensores
para la medici
´
on de distintas variables f
´
ısicas (por ejemplo:
aceleraci
´
on triaxial o temperatura) en diversas estructuras
civiles. Dichas mediciones presentan un per
´
ıodo de muestreo
de 2 ms por lo que debemos asegurar una sincronizaci
´
on
absoluta con un error menor a 1 ms para poder correlacionar
los datos recolectados por los diferentes dispositivos que
supervisan una estructura.
Un sistema distribuido de tiempo real consiste en un
conjunto de nodos que est
´
an interconectados por un red
local y se comunican solamente mediante el intercambio de
mensajes. Cada nodo es una computadora auto contenida
(o microcontrolador) y contiene un reloj de tiempo real de
la precisi
´
on que puede dar un cristal de cuarzo [1] de uso
est
´
andar en dichos microcontroladores. Dependiendo del uso
espec
´
ıfico que se le de a cada sistema, se le exigir
´
a a los
relojes que est
´
en sincronizados con la exactitud requerida
en cada caso. La misma puede ser desde el orden de los
segundos, hasta los microsegundos.
Presentamos a continuaci
´
on un an
´
alisis de los sistemas de
sincronizaci
´
on existentes. Cabe destacar que la bibliograf
´
ıa
existente sobre la sincronizaci
´
on de relojes en sistemas
distribuidos tanto en redes cableadas como inal
´
ambricas [2]
es bastante extensa por lo que solo citaremos la necesaria
para comprensi
´
on del marco general del tema.
a) Global Navigation Satellite System (GNSS): Los
algoritmos de Sincronizaci
´
on por GNSS [3] utilizan la
se
˜
nales de una constelaci
´
on sat
´
elites geosincr
´
onicos para
para estimar el tiempo. Cada nodo debe tener el hardware
necesario para recibir dichas se
˜
nales y debe contar con
disponibilidad constate de al menos cuatro sat
´
elites suficien-
temente dispersos por el cielo y no debe haber obstrucciones
para que la sincronizaci
´
on sea confiable. La visibilidad de
los sat
´
elites en posiciones alejadas hace casi impracticable
este sistema en muchas situaciones. Trabajos previos han
logrado sincronizaciones menores a los 3 µs [4], pero debido
a la aplicaci
´
on de nuestros dispositivos en estructuras civiles
donde la se
˜
nal es f
´
acilmente obstruida y principalmente el
costo extra en la construcci
´
on de los sensores hacen que esta
opci
´
on no sea viable.
b) Network Time Protocol (NTP): NTP [5] es el al-
goritmo de facto utilizado en Internet. Nodos clientes se
sincronizan contra un nodo servidor envi
´
andole paquetes
a trav
´
es de UDP y esperando su respuesta. NTP realiza
un an
´
alisis estad
´
ıstico de los datos recolectados y suele
sincronizar en forma absoluta cada un minuto, modificando
el RTC (Real Time Clock) local, que a su vez se traduce en
variaciones del reloj del orden de los cientos de milisegun-
dos. Dichas variaciones impiden la correlaci
´
on de los datos
con una precisi
´
on en el orden de 1 ms.
c) Precision Time Protocol (PTP): El algoritmo PTP
[6] cuenta con una arquitectura maestro-esclavo donde el
proceso de sincronizaci
´
on es comenzado por el nodo mae-
stro. Este algoritmo se usa en redes locales cableadas y con
hardware dedicado logra una precisi
´
on de microsegundos.
La implementaci
´
on de dicho protocolo en sistemas embe-
bidos e inal
´
ambricos ha sido estudiada por diversos autores
y se han logrado resultados aceptables con eficiencia en-
erg
´
etica [7] [8] [9]. Sin embargo, el hardware necesario para
que el algoritmo alcance la exactitud requerida aumentan el
costo de los nodos, lo que imposibilita su uso en nuestro
sistema.
d) Synchronizing Internet Clocks (SIC): El algoritmo
SIC [10] trabaja en modo cliente-servidor. El cliente realiza
consultas peri
´
odicas al servidor y analiza estad
´
ısticamente
los resultados para estimar par
´
ametros de conversi
´
on para
el reloj interno, en donde se utiliza una funci
´
on que provee
la hora con la correcci
´
on. Este algoritmo no cambia el
Revista elektron, Vol. 5, No. 2, pp. 112-119 (2021)
ISSN 2525-0159
112
Recibido: 09/10/21; Aceptado: 08/11/21
Creative Commons License - Attribution-NonCommercial-
NoDerivatives 4.0 International (CC BY-NC-ND 4.0)
https://doi.org/10.37537/rev.elektron.5.2.137.2021
Original Article
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)
ISSN 2525-0159
113
http://elektron.fi.uba.ar
entre los tiempos de ida y de regreso de los paquetes al
servidor. El c
´
alculo de la diferencia instant
´
anea de los relojes
se basa en la siguiente ecuaci
´
on:
t
c
= t
s
+ φ , (1)
donde t
c
representa el tiempo seg
´
un el reloj del cliente,
t
s
representa el tiempo seg
´
un el reloj del servidor, y φ
representa el desfasaje entre ellos. Consideramos que el
valor de φ varia en el tiempo siguiendo el Simple Skew
Model [11]:
φ(t) = K + F · t , (2)
donde K es una constante que representa la diferencia abso-
luta entre el tiempo de los dos relojes y F que representa la
diferencia en frecuencia de los dos relojes. K y F se podr
´
ıan
modelar como variables aleatorias pero eso est
´
a fuera del
alcance de este trabajo.
Si aplicamos los valores de la interacci
´
on entre el cliente y
servidor que describimos en la secci
´
on anterior a la ecuaci
´
on
1 obtenemos las siguientes ecuaciones:
t
1
= t
2
t(c s) + φ (3)
t
4
= t
3
+ t(s c) + φ , (4)
donde:
t
1
: timestamp utilizando el reloj del cliente del mo-
mento en el que el mensaje de sincronizaci
´
on fue
enviado por el cliente.
t
2
: timestamp utilizando el reloj del servidor del mo-
mento en el que el mensaje de sincronizaci
´
on fue
recibido por el servidor.
t
3
: timestamp utilizando el reloj del servidor del mo-
mento en el que la respuesta del mensaje de sin-
cronizaci
´
on fue enviada por el servidor.
t
4
: timestamp utilizando el reloj del cliente del mo-
mento en el que la respuesta del mensaje de sin-
cronizaci
´
on fue recibida por el cliente.
t(c s): tiempo que demor
´
o el env
´
ıo del paquete entre
el cliente y el servidor.
t(s c): tiempo que demor
´
o el env
´
ıo de la respuesta
entre el servidor y el cliente.
Suponiendo la constante ρ como la relaci
´
on entre la
demora del env
´
ıo del paquete sobre la demora de la re-
cepci
´
on obtenemos la siguiente ecuaci
´
on:
t(c s) = ρ · t(s c) . (5)
Despejando las demoras de env
´
ıo de paquetes de las
ecuaciones 3 y 4 obtenemos las ecuaciones 6 y 7 respecti-
vamente:
t(c s) = φ t
1
+ t
2
(6)
t(s c) = φ t
3
+ t
4
, (7)
de esta manera, reemplazando 6 y 7 en 5 obtenemos
φ t
1
+ t
2
= ρ · (φ t
3
+ t
4
) . (8)
Despejando φ de la ecuaci
´
on 8 llegamos al resultado:
φ =
t
1
t
2
ρ · t
3
+ ρ · t
4
ρ + 1
. (9)
Dicha ecuaci
´
on se puede observar en la l
´
ınea 14 del
Algoritmo 1.
El uso de ρ responde a que en los procesos de redes WiFi
puede existir asimetr
´
ıa entre el comportamiento del punto de
acceso y los clientes, afectando as
´
ı al φ. Si supusi
´
esemos
simetr
´
ıa entre los caminos de env
´
ıo y recepci
´
on de los pa-
quetes, es decir ρ = 1, llegamos a la ecuaci
´
on 10 propuesta
por el algoritmo SIC. Dicha constante la consideramos una
variable conocida del sistema:
φ = (t
1
t
2
t
3
+ t
4
)/2 . (10)
5) Estimaci
´
on del desfasaje: Una vez que obtenemos el
desfasaje instant
´
aneo, este es guardado en un vector junto
con las
´
ultimas 599 muestras (l
´
ınea 15 del Algoritmo 1).
Debido a que el modelado del ruido en la mediciones
no es sencillo, ya que depende de muchos factores que
podr
´
ıan tener correlaci
´
on entre ellos, s
´
olo trabajamos con
las mediciones estad
´
ısticas de los tiempos. Cada sesenta
muestras tomamos la moda de las estimaciones instant
´
aneas,
esto nos asegura que estemos tomando los valores m
´
as fre-
cuentes de φ. La moda la calcularemos utilizado el algoritmo
Half Sample Mode (HSM) [12], que analiza recursivamente
el vector de muestras hasta encontrar la posici
´
on de la
moda. Una vez encontrada la moda, tomaremos los quince
valores ubicados a su alrededor para luego ser guardados
junto con las modas que hemos ido extrayendo durante
los
´
ultimos treinta minutos (lineas 18-23). Finalmente, las
modas guardadas son interpoladas linealmente y promedi-
adas con las anteriores interpolaciones (lineas 36-26). Tras
lograr la sincronizaci
´
on inicial luego de 12 minutos de su
inicializaci
´
on para el algoritmo SIC y aproximadamente 30
minutos para el algoritmo E-SIC, en el caso que no se hayan
perdido mediciones, estos son capaces de estimar el tiempo
del servidor usando el reloj interno y la siguiente formula
que se desprende de la ecuaci
´
on 1:
t
s
= (1 pendiente) · t
c
ordenada , (11)
done pendiente y ordenada son la pendiente y ordenada
al origen productos de las interpolaciones del algoritmo,
relacionando el tiempo en el servidor t
s
con el tiempo en
el cliente t
c
.
El algoritmo E-SIC introduce las siguientes diferencias al
calculo de la estimaci
´
on del valor de φ con respecto a su
contra parte SIC:
Guardado del tiempo correspondiente al φ instant
´
aneo.
Por cada muestra recolectada, SIC extrae la mediana
de las estimaciones instant
´
aneas y las guarda para su
interpolaci
´
on junto con el t
1
de la muestra entrante.
Sin embargo, ya que φ varia en funci
´
on del tiempo,
debido a la diferencia de frecuencias entre los relojes,
esto introduce error en el c
´
alculo. E-SIC propone
guardar junto con cada estimaci
´
on instant
´
anea el valor
de tiempo al que corresponde dicha estimaci
´
on, de esta
manera eliminamos esa fuente de error.
Uso de la moda en vez de la mediana. SIC propone el
uso de la mediana, ya que al estar dise
˜
nado para fun-
cionar sobre Internet, dicha medida proporciona mayor
robustez ante las variaciones de demoras causadas por
el tr
´
afico de datos (que presenta una estad
´
ıstica con
Revista elektron, Vol. 5, No. 2, pp. 112-119 (2021)
ISSN 2525-0159
114
http://elektron.fi.uba.ar
grandes variaciones). Como E-SIC funciona sobre una
´
unica LAN, el problema de las grandes variaciones de
tr
´
afico desaparece, entonces la moda y el entorno de
muestras alrededor de ella representan mejor el estado
actual del desfasaje. La diferencia entre las dos medidas
pueden ser observadas en la Fig. 2, donde vemos que
la moda se acerca m
´
as al pico de φ instant
´
aneo que la
mediana, situaci
´
on distinta a la que se observa usando
SIC en Internet. Dicha figura fue realizada deteniendo
el algoritmo tras el agregado de una nueva iteraci
´
on
del algoritmo, recolectando los valores de las
´
ultimas
600 estimaciones instant
´
aneas de φ y realizando un
histograma con ellas, donde marcamos la mediana y
la moda de las mencionadas muestras.
Cambio de la frecuencia de extracci
´
on del vector de
muestras. El algoritmo SIC, plantea que por cada mues-
tra insertada realizamos una extracci
´
on de la mediana o
la moda y ese valor es apartado junto con los
´
ultimos 59
valores para el uso posterior en la interpolaci
´
on lineal.
El algoritmo E-SIC plantea espaciar esta extracci
´
on
a una vez por minuto y conservar las
´
ultimas 30
extracciones para realizar la interpolaci
´
on.
III. EXPERIMENTOS
El algoritmo fue implementado en un microcontrolador
ESP32 [13] utilizando el lenguaje de programaci
´
on C, por
medio de su compilador GCC. Para mayores detalles sobre
la implementaci
´
on, el c
´
odigo fuente se encuentra disponible
en https://github.com/jaatadia/tic-toc-sic.
Para su implementaci
´
on, el algoritmo fue modularizado
de manera tal que la recolecci
´
on y el procesamiento de los
timestamps sean independientes. Ya que la interacci
´
on con
los sistemas externos suele depender de llamadas al sistema,
esta decisi
´
on nos permite la portabilidad del procesamiento
de los timestamps a cualquier sistema de manera directa.
A. Banco de pruebas
Las mediciones se realizaron utilizando el banco de
pruebas de la Fig. 3. En esta podemos ver:
1. ESP32 funcionando en modo servidor.
2. Arduino funcionando como generador de una onda
cuadrada con un per
´
ıodo de diez segundos.
−125.650 −125.645 −125.640 −125.635 −125.630
ϕ
= tc - ts (Segundos)
0
10
20
30
40
50
60
# de muestras
Mediana
Moda
Fig. 2. Histograma de φ recolectados con distinci
´
on de la moda y la
mediana.
Algoritmo 1 E-SIC Cliente.
1: ALP HA 0.95 // Coeficiente de ponderaci
´
on de las interpolaciones.
2: NRO MODAS 15 // Cantidad de muestras al rededor de la moda
a tener en cuenta.
3: P ERIODO 60 // Cantidad de ciclos entre interpolaciones.
4: MAX M UEST RAS 600 // Tama
˜
no del vector que contienen
las muestras.
5: MAX M ODAS 30 NRO MODAS // Tama
˜
no del vector
que contienen las modas.
6: estado NO SY N C
7: contador 0
8: muestras 0
9: modas 0
10: while true do
11: (t
1
, t
2
, t
3
, t
4
) obtenerT imestamps()
12: contador contador + 1
13:
14: φ (t
1
t
2
ρ · t
3
+ ρ · t
4
)/(ρ + 1)
15: vectorDeMuestras[muestras] (t
1
, φ)
16: muestras (muestras + 1)%MAX MUESTRAS
17:
18: if (contador%P ERIODO == 0) then
19: modasAUtilizar
hsm(ordenar(vectorDeM uestras), NRO MODAS)
20: while (t
i
, φ
i
) modasAUtilizar do
21: vectorDeModas[modas] (t
i
, φ
i
)
22: modas (modas + 1)%MAX M ODAS
23: end while
24: end if
25:
26: if (estado == NO SY NC y contador ==
MAX
MUEST RAS) then
27: contador 0
28: (pendiente, ordenada)
interpolacion lineal(vectorModas)
29: estado P RE SY NC
30: else if ((estado == P RE SY NC o estado ==
SY NC) y contador == P ERIODO) then
31: contador 0
32: (aux
pendiente, aux ordenada)
interpolacion lineal(vectorMedianas)
33: pendiente ALP HA· aux pendiente +(1 ALPHA)·
pendiente
34: ordenada ALP HA · aux ordenada + (1 ALP HA) ·
ordenada
35: estado SY NC
36: end if
37: dormirHastaElP roximoSegundo()
38: end while
Algoritmo 2 E-SIC Cliente: obtenerTimestamps().
1: t
1
epoch() // tiempo del reloj del cliente
2: enviarServirdor(t
1
)
3: (t
1
, t
2
, t
3
) recivirDelServidor()
4: t
4
epoch() // tiempo del reloj del cliente
5: return (t
1
, t
2
, t
3
, t
4
)
Algoritmo 3 E-SIC Servidor
1: while true do
2: (cliente, t
1
) recibir()
3: t
2
epoch() // tiempo del reloj del servidor
4: ... // operaciones entre la recepci
´
on y el env
´
ıo propias de la
implementaci
´
on
5: t
3
epoch() // tiempo del reloj del servidor
6: enviar(cliente, (t
1
, t
2
, t
3
))
7: end while
3. LED que se ilumina cuando la onda cuadrada generada
por el Arduino se encuentra en su valor alto.
4. Divisor de resistivo para adaptar la tensi
´
on de la onda
cuadrada a la tensi
´
on de entrada de los ESP32.
5. ESP32 funcionando en modo cliente.
Los ESP32 se alimentan a trav
´
es de un cable USB
Revista elektron, Vol. 5, No. 2, pp. 112-119 (2021)
ISSN 2525-0159
115
http://elektron.fi.uba.ar
Fig. 3. Banco de pruebas.
que tambi
´
en funciona como conexi
´
on a una computadora
para poder recolectar la informaci
´
on que
´
estos generan. El
Arduino genera una onda cuadrada que en su flanco ascen-
dente ocasiona una interrupci
´
on externa en los ESP32. Los
microcontroladores al recibir dicha interrupci
´
on imprimen su
reloj interno y para el caso de los clientes tambi
´
en imprimen
su estimaci
´
on de la hora del servidor. El cliente y el servidor
se comunican a trav
´
es de la red WiFi para su sincronizaci
´
on.
Este intercambio de mensajes se transforman en los t
1
t
2
t
3
y t
4
enunciados en la secci
´
on anterior. En el nodo cliente,
estos valores son utilizados por el algoritmo, adem
´
as de ser
impresos en la salida serial del programa. Adicionalmente
en el servidor se imprime el tiempo t
1
de cada mensaje
recibido, ya que esta salida nos permite relacionar las
interrupciones externas en el cliente y el servidor. Una vez
recolectadas las salidas del cliente y el servidor, tomamos
las interrupciones y procedemos a relacionarlas, calculando
as
´
ı el desfasaje real entre ellas y el error. Debido a que
t
1
t
2
t
3
y t
4
son parte de la salida del cliente, podemos
realizar modificaciones al algoritmo que no influyan en el
intercambio de informaci
´
on con el servidor y observar c
´
omo
dichos cambios afectan la sincronizaci
´
on.
B. Mediciones y resultados
Suponiendo condiciones de simetr
´
ıa de los caminos de
env
´
ıo y recepci
´
on de los mensajes, es decir fijando con
valor constante ρ = 1, procedimos a recolectar t
1
t
2
t
3
y t
4
. Una vez recolectados podemos realizar comparaciones
directas entre las diferentes implementaciones SIC y E-SIC
con el mismo conjunto de datos. Para realizar las mediciones
presentadas en esta secci
´
on, los dispositivos ESP32 fueron
configurados para que sus placas de red no utilicen el
modo bajo consumo, explicaremos brevemente por que en
la pr
´
oxima secci
´
on.
Para medir el error de los algoritmos, comparamos el
tiempo en el reloj servidor contra el tiempo corregido por
el algoritmo. Dicho error se lo conoce como TE o Error de
tiempo (del ingl
´
es, Time Error), ver [14]:
T E(t) = |t
s
(t) t
c
(t)| , (12)
donde t
s
(t) y t
c
(t) representan la hora provista por los
relojes de servidor y cliente respectivamente en un instante
t. Sin embargo, tanto el algoritmo SIC como el E-SIC, no
modifican el valor del reloj local del cliente, sino que cuando
se desea conocer la hora se calcula el valor de φ y se resta
al valor de la hora local. Debido a esto el error se calcula
como:
T E(t) = |t
s
(t) (t
c
(t) φ(t
c
(t)))| . (13)
Como podemos ver en la Fig. 4, tanto el algoritmo SIC
como el algoritmo E-SIC, se acercan a los valores reales
del desfasaje y se mantienen a una distancia casi constante
de los valores. Sin embargo el algoritmo E-SIC presenta
un error mucho menor que el error del algoritmo SIC. Los
valores del error de la Ecuaci
´
on 13 se pueden observar en
la Fig. 5 y en la Tabla I.
Fig. 4. Aproximaciones de φ utilizando los algoritmos SIC y E-SIC, y
su comparaci
´
on con el valor real.
5000 10000 15000 20000 25000 30000
T
iempo en el reloj servidor [S]
0
500
1000
1500
2000
2500
3000
3500
Error del reloj del cliente [μS]
Error Algoritmo SIC
Error Algoritmo EμSIC
Fig. 5. Error en las estimaciones de los algoritmos SIC y E-SIC.
Revista elektron, Vol. 5, No. 2, pp. 112-119 (2021)
ISSN 2525-0159
116
http://elektron.fi.uba.ar
Como vemos en las figuras previamente mencionadas, el
algoritmo E-SIC presenta errores mayores en su comienzo
que disminuyen gradualmente hasta un m
´
ınimo luego de
treinta minutos del inicio. Estos errores son atribuidos a
que el algoritmo no cuenta con la cantidad de valores
necesarios para la correcta sincronizaci
´
on. Sin embargo, si
consider
´
asemos que el algoritmo se encuentra listo para
realizar aproximaciones reci
´
en al cabo de los treinta minutos
de su inicializaci
´
on, que es cuando sus estructuras internas
se terminan de completar, veremos que el pico m
´
aximo del
error pasa de los 2342 µs a los 1344µs como podemos ver
en la Tabla II. Por
´
ultimo, utilizaremos el MTIE (del ingles,
Maximum Time Interval Error) o Error M
´
aximo del intervalo
de tiempo, para caracterizar el sistema de sincronizaci
´
on.
Dicha medida es la que propone el est
´
andar de la ITU
G.6260 [14], basado en el trabado [15] y es la medida
utilizada para comparar distintos m
´
etodos de sincronizaci
´
on.
Esta medida representa la desviaci
´
on m
´
axima entre los picos
del error de los relojes. La Fig. 7 presenta el MTIE en
funci
´
on del tama
˜
no de la ventana de an
´
alisis S, medida
en segundos. Notar que si bien E-SIC necesita una ventana
mayor para lograr el mismo error que SIC en valores bajos
de S, su mayor valor est
´
a pr
´
acticamente acotado en 1300
ms, mientras que SIC contin
´
ua creciendo.
Tabla I
ERROR SEG
´
UN LAS ESTIMACIONES DEL ALGORITMO SIC Y E-SIC
(ECUACI
´
ON 13).
SIC E-SIC
Error
M
´
ınimo
1475 µs < 1 µs
Error
M
´
aximo
3650 µs 2342 µs
Error
Medio
2272.40 µs 330.22 µs
Desviaci
´
on
Est
´
andar
363.72 µs 354.29 µs
Tabla II
ERROR GENERADO SEG
´
UN LAS ESTIMACIONES DEL ALGORITMO SIC Y
E-SIC TRANSCURRIDOS LOS 30 MINUTOS (ECUACI
´
ON 13).
SIC E-SIC
Error
M
´
ınimo
1475 µs < 1 µs
Error
M
´
aximo
3650 µs 1344µs
Error
Medio
2256.04 µs 290.38 µs
Desviaci
´
on
Est
´
andar
359.28 µs 272.27 µs
Nuestros an
´
alisis contienen parte de esos treinta minutos
iniciales debido a que el algoritmo SIC original comienza
a proveer valores de sincronizaci
´
on a partir del minuto
once. Verificamos de esta manera que las aproximaciones
provistas por el algoritmo E-SIC son m
´
as exactas que el
algoritmo SIC original. Sin embargo, como el error en dicho
estado transitorio inicial no cumple con el requerimiento
de nuestro sistema y no tenemos limitaciones de tiempo de
inicializaci
´
on el resto de los an
´
alisis no consideraran dicho
estado. Si analizamos una secci
´
on de tiempo m
´
as reducida
podemos ver en detalle el comportamiento de los dos
algoritmos y c
´
omo afectan los c
´
alculos que
´
estos realizan al
c
´
alculo del desfasaje. La Fig. 6 es el tramo correspondiente
a las muestras tomadas entre los 5000 segundos a 6200
segundos del servidor de la Fig. 4. En el gr
´
afico, para estos
veinte minutos podemos ver dos cosas:
Fig. 6. Secci
´
on de las aproximaciones utilizando el algoritmo SIC y
E-SIC.
Cada seis muestras tomadas vemos un salto. Este salto
se debe a los ajustes realizados por los dos algoritmos
cada un minuto. Los saltos del algoritmo SIC son
mas pronunciados a diferencia de su contra-parte que
presenta saltos casi imperceptibles. Esto se debe a que
el resultado de la interpolaci
´
on lineal le otorga mayor
significancia a la ordenada al origen mas que a la
pendiente en el algoritmo SIC, ya que solo tienen en
cuenta las medianas de los
´
ultimos sesenta segundos.
Las modificaciones para trabajar con un intervalo de
mediciones centrado en la moda y la utilizaci
´
on de un
mayor rango de tiempo, permite relacionar mejor las
pendientes de la relaci
´
on entre los relojes y que no
sean tratadas como constantes.
La diferencia entre las aproximaciones y la recta real
permanece casi constante, sin embargo, a diferencia
de SIC, el algoritmo E-SIC se aproxima m
´
as a la
recta real y en instantes hasta se superpone entregando
estimaciones con errores menores al microsegundo.
0 2000 4000 6000 8000 10000 12000 14000
S
[S]
0
500
1000
1500
2000
MTIE(S) [μS]
SIC
EμSIC
Fig. 7. MTIE(S) para SIC y E-SIC.
Revista elektron, Vol. 5, No. 2, pp. 112-119 (2021)
ISSN 2525-0159
117
http://elektron.fi.uba.ar
C. Correcci
´
on del error debido a configuraci
´
on del ESP32
Los dispositivos ESP32, en su configuraci
´
on por de-
fecto, pueden llegar a producir latencias indeseadas que
debieron ser identificadas y corregidas. Para comprobar esto
se gener
´
o una se
˜
nal de disparo para producir interrup-
ciones simult
´
aneas cada 10 s, en los puertos de entrada de
prop
´
osito general (GPIO) de ambos m
´
odulos. Se desarroll
´
o
el firmware de prueba de cada dispositivo para registrar el
error del tiempo.
Durante las primeras pruebas, una vez transcurridos los
treinta minutos para alcanzar el estado de sincronizaci
´
on
completa con E-SIC, se registr
´
o en forma sistem
´
atica un
error considerablemente alto (alrededor de 500 ms) como
se observa en la Fig. 8. Se observ
´
o que este inconveniente se
manten
´
ıa de manera consistente pese a utilizar dispositivos
del mismo fabricante y modelo, descartando adem
´
as que
se tratara de problemas del algoritmo. Naturalmente, esa
diferencia resulta inaceptable, ya que uno de los requer-
imientos m
´
as importantes es garantizar un alineamiento en
forma absoluta de los per
´
ıodos de muestreo entre todos los
dispositivos manteniendo un error inferior a los 2 ms.
Se logr
´
o determinar que para los m
´
odulos ESP32 existe
una configuraci
´
on predeterminada que habilita un modo
de bajo consumo para el transceiver de WiFi, el cual es
administrado por capas de bajo nivel del sistema operativo
del dispositivo. Esta configuraci
´
on produce que los suce-
sivos encendidos y apagados del transceiver WiFi est
´
en
sincronizados con las se
˜
nales de beacon del access point.
Este efecto elimina la aleatoriedad en la medici
´
on de los
tiempos, haci
´
endolos beacon dependientes. Como resultado,
se generan latencias que impactan de manera diferente
entre los distintos dispositivos produciendo diferencias de
tiempos apreciables que se mantienen desde el inicio del
sincronismo. Dado que el consumo de energ
´
ıa de los nodos
no representa un problema en este caso, ya que para la
aplicaci
´
on final los dispositivos WiFi tendr
´
an garantizado
el suministro de energ
´
ıa desde la red el
´
ectrica, se procedi
´
o
a deshabilitar el ahorro de energ
´
ıa de WiFi de los ESP32,
manteniendo la comunicaci
´
on encendida en forma perma-
nente. Con esta modificaci
´
on, seg
´
un se puede apreciar en la
Fig. 9 el error se reduce a menos de 2 ms, manteni
´
endose
as
´
ı luego del transitorio inicial, Fig. 10.
IV. CONCLUSI
´
ON
Tras analizar diferentes algoritmos de sincronizaci
´
on y
considerar las restricciones de costos, decidimos utilizar
el algoritmo SIC como base de nuestra sincronizaci
´
on de
relojes. Debido a que dicho algoritmo no contaba con el
grado de exactitud requerido procedimos a realizarle modifi-
caciones para adaptarlo a nuestros requerimientos. Nuestras
modificaciones en el c
´
alculo del φ instant
´
aneo proveen un
mecanismo expl
´
ıcito para el caso donde la simetr
´
ıa de los
caminos no puedan ser garantizada pero exista una relaci
´
on
constante entre ellos, modelado por el par
´
ametro ρ. La
determinaci
´
on din
´
amica de dicha constante y su adaptaci
´
on
para sistemas donde la asimetr
´
ıa no sea constante puede ser
parte de los trabajos futuros.
Por otro lado, las modificaciones al algoritmo de es-
timaci
´
on del desfasaje, al cambiar el uso de la mediana
por la moda y al utilizar muestras de una ventana de
0 25 50 75 100 125 150
#
de interrupción
498
499
500
501
502
503
Error [mS]
Fig. 8. Error con el modo de bajo consumo de WiFi encendido.
0 25 50 75 100 125 150 175
#
de interrupción
0
500
1000
1500
2000
2500
Error [μμ]
Fig. 9. Error con el modo de bajo consumo de WiFi apagado.
tiempo m
´
as grande, permitieron mejorar la exactitud de la
sincronizaci
´
on, reducir su error y suavizar la curva de las
estimaciones evitando as
´
ı micro saltos en las consultas de
tiempo. Concluimos de esta manera que el algoritmo E-SIC
alcanz
´
o los objetivos planteados y demuestra la posibilidad
de la sincronizaci
´
on de los dispositivos con un error menor a
un milisegundo en una red inal
´
ambrica, sin utilizar hardware
adicional y manteniendo una baja complejidad de c
´
alculo,
compatible con un microcontrolador que debe realizar otras
tareas.
REFERENCIAS
[1] H. Kopetz and W. Ochsenreiter, “Clock Synchronization in Dis-
tributed Real-Time Systems, IEEE Transactions on Computers, vol.
C-36, no. 8, pp. 933–940, 1987.
[2] M. Mock, R. Frings, E. Nett, and S. Trikaliotis, “Continuous clock
synchronization in wireless real-time applications, in Proceedings
19th IEEE Symposium on Reliable Distributed Systems SRDS-2000,
2000, pp. 125–132.
Revista elektron, Vol. 5, No. 2, pp. 112-119 (2021)
ISSN 2525-0159
118
http://elektron.fi.uba.ar
0 2000 4000 6000 8000 10000 12000 14000
#
de interrupción
0
500
1000
1500
2000
2500
Error [μμ]
Fig. 10. Error con el modo de bajo consumo de WiFi apagado. Se observa
que la reducci
´
on del error se mantiene m
´
as all
´
a del transitorio.
[3] Masterclock, “GPS vs. GNSS: Understanding PNT Satellite
Systems, Jan 2019. [Online]. Available: https://www.masterclock.
com/company/masterclock-inc-blog/gps-vs-gnss
[4] T. Yokoyama, A. Matsubara, and M. Yoo, A real-time operating
system with gnss-based tick synchronization, in 2015 IEEE 3rd
International Conference on Cyber-Physical Systems, Networks, and
Applications, 2015, pp. 19–24.
[5] J. Martin, J. Burbank, W. Kasch, and P. D. L. Mills, “Network
Time Protocol Version 4: Protocol and Algorithms Specification,
RFC 5905, Jun. 2010. [Online]. Available: https://rfc-editor.org/rfc/
rfc5905.txt
[6] “Ieee standard for a precision clock synchronization protocol for
networked measurement and control systems, IEEE Std 1588-2019
(Revision ofIEEE Std 1588-2008), pp. 1–499, 2020.
[7] M. Bansal and A. Gupta, “Out-degree based clock synchronization in
wireless networks using precision time protocol, in 2018 IEEE Inter-
national Conference on Advanced Networks and Telecommunications
Systems (ANTS). IEEE, 2018, pp. 1–6.
[8] R. Holler, T. Sauter, and N. Kero, “Embedded synutc and ieee 1588
clock synchronization for industrial ethernet, in EFTA 2003. 2003
IEEE Conference on Emerging Technologies and Factory Automation.
Proceedings (Cat. No.03TH8696), vol. 1, 2003, pp. 422–426 vol.1.
[9] L. Li, B. Li, and H. Wang, “Clock synchronization of wireless dis-
tributed system based on ieee 1588, in 2010 International Conference
on Cyber-Enabled Distributed Computing and Knowledge Discovery,
2010, pp. 205–209.
[10] J. I. Alvarez-Hamelin, D. Samaniego, A. A. Ortega, and R. Geib,
“Synchronizing Internet Clock frequency protocol (sic), Internet
Engineering Task Force, Internet-Draft draft-alavarez-hamelin-tictoc-
sic-06, Oct. 2020, work in Progress. [Online]. Available: https:
//datatracker.ietf.org/doc/html/draft-alavarez-hamelin-tictoc-sic-06
[11] D. Veitch, J. Ridoux, and S. B. Korada, “Robust synchronization of
absolute and difference clocks over networks, IEEE/ACM Transac-
tions on Networking, vol. 17, no. 2, pp. 417–430, 2009.
[12] D. R. Bickel and R. Fr
¨
uhwirth, “On a fast, robust estimator of the
mode: Comparisons to other robust estimators with applications,
Computational Statistics & Data Analysis, vol. 50, no. 12, pp.
3500–3530, 2006. [Online]. Available: https://www.sciencedirect.
com/science/article/pii/S0167947305001581
[13] ESP32 Series Datasheet, Espressif Systems, 2021, ver. 3.6.
[14] T. S. S. O. ITU, “Definitions and terminology for synchronization in
packet networks (Recommendation ITU-T G.8260), August 2015.
[15] S. Bregni, “Measurement of maximum time interval error for telecom-
munications clock stability characterization, IEEE transactions on
instrumentation and measurement, vol. 45, no. 5, pp. 900–906, 1996.
Revista elektron, Vol. 5, No. 2, pp. 112-119 (2021)
ISSN 2525-0159
119
http://elektron.fi.uba.ar

Enlaces de Referencia

  • Por el momento, no existen enlaces de referencia


Copyright (c) 2021 Javier Alejandro Atadia, Ramiro Alonso, Leonardo Martín Carducci

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.


Revista elektron,  ISSN-L 2525-0159
Facultad de Ingeniería. Universidad de Buenos Aires 
Paseo Colón 850, 3er piso
C1063ACV - Buenos Aires - Argentina
revista.elektron@fi.uba.ar
+54 (11) 528-50889