Es hora de dejar el segundo bisiesto en el pasado

El concepto de segundo intercalar fue introducido por primera vez en 1972 por Departamento de Sistemas de Rotación de la Tierra y Referencias Internacionales (IERS) tratando de actualizar periódicamente tiempo universal coordinado (UTC) debido a imprecisión hora solar observada (UT1) y a largo plazo desaceleración de la rotación de la tierra. Este ajuste periódico beneficia a los científicos y astrónomos principalmente porque les permite observar los cuerpos celestes utilizando el tiempo universal coordinado (UTC) para la mayoría de los propósitos. Si no hay corrección UTC, se deberán realizar ajustes en el equipo y el software UTC heredados para las observaciones astronómicas.

A día de hoy, desde la introducción del segundo intercalar, UTC se ha actualizado 27 veces.

Si bien los segundos intercalares pueden haber sido una solución aceptable en 1972, cuando complacía a la comunidad científica y a la industria de las comunicaciones, en estos días UTC es igualmente malo tanto para las aplicaciones digitales como para los científicos, que a menudo eligen TAI o UT1 en su lugar.

En Meta, apoyamos un esfuerzo de la industria para detener los futuros avances de los segundos intercalares y permanecer en el nivel actual de 27. La introducción de nuevos segundos intercalares es una práctica arriesgada que hace más daño que bien, y creemos que es hora de introducir nuevos tecnologías para reemplazarlo.

Tener fe

Uno de los muchos factores que contribuyen a la rotación errática de la Tierra es el constante derretimiento y recongelamiento de los casquetes polares en las montañas más altas del mundo. Este fenómeno se puede visualizar simplemente pensando en un snowboarder, que maneja la velocidad angular controlando sus brazos y manos. A medida que estiran los brazos, la velocidad angular disminuye, lo que conserva el impulso del patinador. Una vez que el patinador vuelve a doblar los brazos, la velocidad angular aumenta.

Para visualizar el cambio de velocidad angular, piense en un patinador como si estuviera girando.

Hasta ahora, solo se han agregado segundos bisiestos positivos. En los primeros días, esto se hacía simplemente agregando un segundo adicional, lo que resultaba en una marca de tiempo inusual:

23:59:59 -> 23:59:60 -> 00:00:00

En el mejor de los casos, ese tiempo salta de programas que funcionan mal o incluso datos dañados, debido a marcas de tiempo extrañas en el almacenamiento de datos.

A medida que cambia el patrón de rotación de la Tierra, es muy probable que tengamos un segundo bisiesto negativo en algún momento en el futuro. La marca de tiempo se verá así:

23:59:58 -> 00:00:00

El efecto del segundo intercalar negativo no se ha probado exhaustivamente; Puede tener un efecto devastador en el software que depende de temporizadores o programadores.

En cualquier caso, cada segundo bisiesto es una fuente importante de dolor para las personas que administran las infraestructuras de hardware.

tinción

Recientemente, se ha convertido en una práctica común “distorsionar” el segundo bisiesto simplemente ralentizando o acelerando el reloj. No existe una forma universal de hacerlo, pero en Meta distorsionamos el segundo bisiesto en un reloj de 17 horas, a partir de las 00:00:00 UTC. Basado en el contenido del paquete de datos de zona horaria (tzdata).

segundo intercalar
Manchando un segundo salto en el meta.

Analicemos esto un poco.

Elegimos la duración de 17 horas principalmente porque la mancha ocurre en la Capa 2, donde hay cientos NTP Los servidores se manchan al mismo tiempo. Para asegurarse de que la diferencia entre ellos sea aceptable, los pasos deben ser pocos. Si los pasos de frotis son demasiado grandes, los clientes NTP pueden considerar que algunos dispositivos son defectuosos y excluirlos del quórum, lo que puede provocar interrupciones.

El punto de partida a las 00:00:00 UTC tampoco está estandarizado y hay varias opciones posibles. Por ejemplo, algunas empresas comienzan a manchar a las 12:00:00 UTC del día anterior y dentro de las 24 horas; Algunos lo hacen dos horas antes del evento, otros justo al borde.

También hay diferentes algoritmos para la misma tinción. Hay corrección de segundo intercalar para núcleos, mancha lineal (cuando se aplican pasos iguales), cosenos y cuadrado (utilizado por Meta). Los algoritmos se basan en diferentes modelos matemáticos y producen diferentes gráficos:

segundo intercalar
Tinción de segundo núcleo con salto con NTPD

La fuente del índice de salto varía entre las constelaciones GNSS (p. ej., GPS, GLONASS, Galileo, BeiDou). En algunos casos, se emite por satélite con varias horas de antelación. En otros casos, la hora se publica en UTC con el salto ya aplicado. En diferentes constelaciones, el valor del segundo bisiesto varía según el momento en que se lanzó.

segundo intercalar
La diferencia en valores de segundos intercalares entre las constelaciones GNSS.

Todo esto requiere una lógica de transformación no intuitiva dentro de las fuentes de tiempo, incluida la nuestra. dispositivo de tiempo. La pérdida de la señal GNSS durante un tiempo tan sensible podría provocar la pérdida del índice de salto y la división del cerebro, lo que podría provocar interrupciones.

El evento de salto también se publicó a través del paquete tzdata hace meses, y para los fanáticos de ntpd, a través de un El segundo archivo de salto Se distribuye a través del sitio web del Grupo de Trabajo de Ingeniería de Internet (IETF). La falta de una nueva copia del archivo puede hacer que se olvide un segundo bisiesto y provocar una interrupción.

Como ya se mencionó, la tinción es un momento muy delicado. Si el servidor NTP se reinicia durante este período, es probable que terminemos con la hora “antigua” o “nueva”, lo que puede extenderse a los clientes y provocar interrupciones.

Debido a esta ambigüedad, los grupos públicos de NTP no se manchan, a veces pasan un puntero de salto a los clientes para que lo averigüen. Los clientes SNTP generalmente terminan a un ritmo rápido y se enfrentan a las consecuencias descritas anteriormente. Los clientes más inteligentes pueden elegir una estrategia hipotética para distorsionar el salto localmente. En general, esto significa que los grandes jugadores como Meta, que están difamando los servicios públicos, no pueden unirse a los grupos públicos.

E incluso después de que ocurriera el salto, las cosas seguían en peligro. NTP debe aplicar de manera consistente el desplazamiento en comparación con la fuente de tiempo que está utilizando (GNSS, TAI o reloj atómico), y PTP debe publicar una llamada bandera UTC en los mensajes publicitarios.

El efecto negativo de los segundos bisiestos

El segundo intercalar y el desplazamiento que crea están causando problemas en toda la industria. Una de las formas más sencillas de provocar un apagón es prepararse asumiendo que el tiempo siempre se adelanta. Digamos que tenemos un código como este:

inicio: = tiempo.Ahora()

// hacer algo

Gastado: = tiempo.Ahora(). Sub (inicio)

de acuerdo a como gastar Usuario, podemos terminar en una situación que depende de un valor negativo durante un evento de segundo bisiesto. Estas suposiciones han causado muchas interrupciones y hay muchos artículos que las describen.

En 2012, Reddit prueba gran oportunidad debido al segundo bisiesto; No se pudo acceder al sitio durante 30-40 minutos. Esto sucedió cuando el cambio de hora abrumó el hrtimer, lo que provocó un aumento de la actividad en los servidores y apagó las CPU del hardware.

En 2017, Cloudflare publicó un archivo Artículo detallado Sobre el efecto de los segundos bisiestos en el sistema de nombres de dominio público de una empresa. La causa raíz del error que afectó al servicio DNS fue la creencia de que el tiempo no podía retroceder. El código tomó los valores de tiempo ascendentes y los insertó en la función rand.Int63n() de Go. La función rand.Int63n() inmediatamente entró en pánico porque el argumento era negativo, lo que provocó que el servidor DNS fallara.

Trascender el segundo bisiesto

Los eventos de segundo intercalar han causado problemas en toda la industria y aún presentan muchos riesgos. Como industria, nos metemos en problemas cada vez que aparece un segundo bisiesto. Y debido a que es un evento tan raro, destruye la sociedad cada vez que ocurre. Con la creciente demanda de precisión de reloj en todas las industrias, el segundo intercalar ahora está causando más daño que bien, lo que lleva a interrupciones y cortes.

Como ingenieros de Meta, apoyamos una campaña comunitaria más amplia para detener la futura introducción de segundos intercalares y permanecer en el nivel actual de 27, que creemos que será suficiente para el próximo milenio.

Leave a Reply

Your email address will not be published.