Ir al contenido

Algoritmo de Cristian

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 13:58 2 ago 2019 por Aosbot (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

El algoritmo de Cristian (1989) es un método, dentro de la computación distribuida, para la sincronización de relojes. Cristian describe el método como probabilístico debido a que se consigue sincronización solo si el tiempo de respuesta es suficientemente corto comparado con la precisión requerida.[1]​ Consiste en un servidor conectado a una fuente de UTC y unos clientes que se sincronizan con dicho servidor.

Introducción

La sincronización de relojes en un sistema distribuido consiste en garantizar que los procesos se ejecuten de forma cronológica y a la misma vez respetar el orden de los eventos dentro del sistema. Existen dos tipos de sincronización de relojes físicos:

  • Sincronización externa: consiste en sincronizar los relojes de los procesos Ci con una fuente de tiempo externa fiable.
|S(t) – Ci(t)| < D ; siendo D un límite mayor que cero y S una fuente de tiempo UTC.
  • Sincronización interna: si los relojes Ci están sincronizados entre ellos con un conocido grado de precisión y no necesariamente sincronizados con una fuente externa de tiempo.
|Ci(t) - Cj(t) | < D ; siendo D un límite mayor que cero.

Sincronización interna en un sistema síncrono

En un sistema síncrono son conocidos:

  • Los límites de deriva de los relojes.
  • El máximo retardo de transmisión de mensajes.
  • Tiempo para ejecutar cada paso de un proceso.

El proceso seguido para la sincronización entre dos procesos es el siguiente:

  1. Un proceso envía el tiempo t de su reloj local a otro proceso en un mensaje m.
  2. El proceso receptor puede actualizar su reloj con el tiempo t + TTRANS al recibir el mensaje, donde TTRANS es el tiempo empleado en transmitir el mensaje m entre ellos.

TTRANS es desconocido y no se puede determinar pues depende del tráfico de red .Pese a ello se puede establecer un mínimo tiempo de transmisión, que se obtiene cuando no hay tráfico en la red ni otros procesos, y un máximo estimado.

La incertidumbre en el tiempo de transmisión del mensaje se define como u =(max – min).

  • Si el receptor coloca su reloj a t + min el sesgo del reloj puede ser como mucho u.
  • Si el receptor coloca su reloj a t + max el sesgo del reloj puede ser como mucho u.
  • Si el receptor coloca su reloj a t + (max + min)/2 el sesgo es como mucho u/2.

En general, para un sistema síncrono el error óptimo cuando se sincronizan N relojes es u( 1-1/N). La mayoría de los sistemas distribuidos son asíncronos y no tienen definido un límite máximo para la transmisión de mensajes por lo tanto:

TTRANS = min + x ; el valor de x es mayor o igual que cero y depende de cada caso en particular.

Funcionamiento del algoritmo

  1. Un proceso p hace una petición de tiempo al servidor en un mensaje mr.
  2. El servidor responde con un mensaje mt en el que incluye su tiempo TUTC.
  3. El proceso que recibe el mensaje mt actualiza su reloj con el tiempo TUTC, pero hay que considerar el error cometido pues se ha requerido un tiempo para la transmisión del mensaje desde el servidor.

Se mide el tiempo que se tarda en recibir la respuesta desde que de envía el mensaje de petición, TVIAJE. El tiempo estimado de propagación, en ausencia de otra información, será TVIAJE /2 por lo que el cliente sincroniza su reloj a TUTC + TVIAJE/2. Esta estimación puede mejorarse si se conoce el tiempo mínimo de propagación del mensaje:

  • El tiempo mínimo en el que el servidor escribió el mensaje es min.
  • El tiempo máximo en el que el servidor escribió el mensaje es TVIAJE – min.

Por lo tanto el tiempo en el que el mensaje del servidor es recibido se sitúa en el rango [CUTC + min, CUTC+ TVIAJE –min ] cuya anchura es TVIAJE – 2min así que la precisión es ± TVIAJE/2 – min.


Imagen del proceso del algoritmo
Imagen del proceso del algoritmo

Inconvenientes

  1. El problema que se presenta es la posibilidad de fallo debido a la existencia de un único servidor. Cristian sugiere múltiples servidores de tiempo sincronizados que suministren el tiempo. El cliente envía un mensaje de petición a todos los servidores y toma la primera respuesta recibida.
  2. El algoritmo no contempla problemas de malfuncionamiento o fraude por parte del servidor.

Referencias

  1. G. Colouris, J. Dollimore, T. Kindberg and G. Blair. Distributed Systems: Concepts and Design (5th Ed). Addison-Wesley, 2011.

Bibliografía

  • G. Colouris, J. Dollimore, T. Kindberg and G. Blair. Distributed Systems: Concepts and Design (5th Ed). Addison-Wesley, 2011
  • Cristian, F. (1989), «Probabilistic clock synchronization», Distributed Computing (Springer) 3 (3): 146--158