Codificación 64b/66b

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

En redes y transmisión de datos, 64b/66b es un código de línea que transforma datos de 64 bits en código de línea de 66 bits para proporcionar suficientes cambios de estado para permitir una recuperación de reloj y una alineación razonables del flujo de datos en el receptor. Fue definido por el grupo de trabajo IEEE 802.3 como parte de la enmienda IEEE 802.3ae-2002 que introdujo Ethernet de 10 Gbit/s. En el momento en que se implementó 64b/66b, permitió transmitir Ethernet de 10 Gb con los mismos láseres utilizados por SONET OC-192, en lugar de requerir los láseres de 12,5 Gbit/s que no se esperaba que estuvieran disponibles durante varios años.

La sobrecarga de protocolo de un esquema de codificación es la relación entre la cantidad de bits de carga útil sin procesar y la cantidad de bits de carga útil sin procesar más la cantidad de bits de codificación agregados. La sobrecarga de la codificación 64b/66b es de 2 bits de codificación por cada 64 bits de carga útil o 3,125 %. Esto es una mejora considerable con respecto a la sobrecarga del 25 % del esquema de codificación 8b/10b utilizado anteriormente, que agregaba 2 bits de codificación por cada 8 bits de carga útil.

La sobrecarga se puede reducir aún más duplicando el tamaño de la carga útil para producir la codificación 128b/130b utilizada por PCIe 3.0.

Función

Como sugiere el nombre del esquema, 64 bits de carga útil se codifican como una entidad de 66 bits. La entidad de 66 bits se crea anteponiendo uno de los dos posibles preámbulos de 2 bits a los 64 bits de carga útil. Esta entidad de 66 bits ahora tiene dos estados posibles.

  • Si el preámbulo es 012, los 64 bits de carga útil son datos.
  • Si el preámbulo es 102, los 64 bits de carga útil tienen un campo Tipo de 8 bits y 56 bits de información de control y/o datos.

Los preámbulos 002 y 112 no se utilizan y, si se encuentran, indican un error.

El uso de los preámbulos 012 y 102 garantiza una transición de bits cada 66 bits, lo que significa que un flujo continuo de 0 o 1 no puede ser un dato válido. También permite una sincronización más sencilla del reloj/temporizador, ya que debe verse una transición cada 66 bits.

Luego, la carga útil de 64 bits se codifica mediante una función codificadora autosincronizada. La codificación no tiene como objetivo cifrar los datos, sino garantizar que se encuentre una distribución relativamente uniforme de 1 y 0 en los datos transmitidos. El codificador no puede garantizar que los datos de salida nunca tendrán una longitud de ejecución larga de 0 o todos 1, u otras propiedades indeseables en las comunicaciones, pero sí permite establecer límites estadísticos estrictos para la probabilidad de tales eventos. Los diseños prácticos elegirán parámetros del sistema de modo que un error de bit debido a longitudes de ejecución largas sea extremadamente improbable. Este método es diferente del enfoque basado en libros de códigos de codificación 8b/10b.

La codificación y la codificación normalmente se implementan completamente en hardware, y el codificador utiliza un registro de desplazamiento con retroalimentación lineal. Las capas superiores de la pila de software no necesitan saber que la capa de enlace está utilizando estos métodos.

Propiedades y aplicación

Los objetivos de diseño de 64b/66b son la recuperación del reloj, la alineación de flujo, el equilibrio de CC, la densidad de transición y la longitud de ejecución. La codificación 8b/10b garantiza límites estrictos en el equilibrio de CC, la densidad de transición y la longitud de ejecución, mientras que 64b/66b proporciona límites estadísticos en estas propiedades.

Duración

La mayoría de los circuitos de recuperación de reloj diseñados para SONET OC-192 y 64b/66b están especificados para tolerar una longitud de ejecución de 80 bits. Una ejecución de este tipo no puede ocurrir en 64b/66b porque las transiciones están garantizadas a intervalos de 66 bits y, de hecho, las ejecuciones largas son muy poco probables. Aunque es teóricamente posible que un patrón de datos aleatorios se alinee con el estado del codificador y produzca una larga ejecución de 65 ceros o 65 unos, la probabilidad de un evento de este tipo es igual a lanzar una moneda al aire y que aparezca en el mismo estado 64 veces seguidas. A 10 Gigabits por segundo, la tasa de eventos esperada de un bloque de 66 bits con una longitud de ejecución de 65 bits, suponiendo que los datos son aleatorios, es de 66×264÷1010÷2 segundos, o aproximadamente una vez cada 1900 años.

Las estadísticas de longitud de ejecución pueden empeorar si los datos consisten en patrones elegidos específicamente, en lugar de ser aleatorios. Un codificador anterior utilizado en Packet over SONET/SDH (RFC 1619 (1994)) tenía un polinomio corto con solo 7 bits de estado interno que permitía a un atacante malintencionado crear un ataque de denegación de servicio mediante la transmisión de patrones en todos los 27−1 estados, uno de los cuales estaba garantizado para desincronizar los circuitos de recuperación del reloj. Esta vulnerabilidad se mantuvo en secreto hasta que la longitud del codificador se aumentó a 43 bits (RFC 2615 (1999)), lo que hizo imposible que un atacante malintencionado bloqueara el sistema con una secuencia corta.

64b/66b evitó esta vulnerabilidad al utilizar un polinomio de codificación con suficiente estado interno aleatorio (58 bits) para que un atacante dedicado que utilice un paquete Ethernet diseñado pueda crear una longitud de ejecución de 64 bits en la salida de codificación solo una vez cada 29 años aproximadamente. Esto crea bloques de 66 bits que contienen ejecuciones de 65 bits a una velocidad similar a la del uso de datos aleatorios.

Saldo DC

El balance de CC de 64b/66b no está absolutamente acotado. Sin embargo, se puede demostrar que la salida del aleatorizador se aproxima mucho a una secuencia de bits binarios aleatorios. Pasar dicha secuencia a través de un circuito acoplado a CA produce un ruido de desvío de línea base que sigue una distribución gaussiana, y el impacto en la tasa de error del sistema se puede cuantificar estadísticamente. En la práctica, un valor modesto de condensador de acoplamiento de 1 nF en un sistema de 100 Ω es suficiente para garantizar que una deriva de CC de más del 2,5 % ocurrirá con menos frecuencia que una vez cada 1022 bits (aproximadamente 31 700 años a 10 Gbit/s). [1]:15–16

Hamming distance

10 Gigabit Ethernet tiene una estricta normativa que exige que el tiempo medio de aceptación de paquetes falsos (MTTFPA) sea del orden de mil millones de años para un único enlace operativo. Para lograr esto con tasas de error de bits normales, se requiere al menos una protección de distancia de Hamming de 4 bits para todos los datos de los paquetes. En otras palabras, todas las combinaciones de 3 cambios de bits espaciados aleatoriamente dentro de un límite de paquete deben detectarse y dar como resultado un paquete invalidado. Se combinaron varias estrategias para lograr la distancia de Hamming de 4 bits para paquetes 64b/66b: 1) se eligieron campos de tipo fuerte con una distancia de Hamming de 4 bits, 2) se eligió el polinomio de codificación para que fuera compatible con el CRC-32 utilizado para la protección de paquetes y 3) se requieren violaciones de protocolo adyacentes a los límites de los paquetes para invalidar el paquete. La combinación de CRC-32 y el polinomio de codificación elegido se evaluaron enumerando exhaustivamente todos los patrones de error de 4 bits para todos los tamaños de paquetes posibles con un programa C optimizado.

Observaciones

La principal contribución de 64b/66b es la observación de que la longitud de ejecución determinista y la densidad de transición de 8b/10b no siempre justifican una sobrecarga de código del 25%, y que se podrían diseñar sistemas sólidos y robustos utilizando métodos estadísticamente acotados. En algún momento, los riesgos prácticos, ya sea por el MTBF de componentes como las fuentes de alimentación o por fenómenos como los rayos cósmicos o las erupciones solares, dominan la confiabilidad de los sistemas 8b/10b y 64b/66b.

Variaciones

El protocolo Interlaken mejora aún más el equilibrio de CC al intercambiar más bits de codificación. Su codificación 64b/67b amplía la 64b/66b con equilibrio de CC explícito. Esto puede resultar beneficioso para algunas aplicaciones, como el uso de condensadores de acoplamiento en chip más pequeños.

PCI Express 3.0 introdujo la codificación 128b/130b, que es similar a 64b/66b pero tiene una carga útil de 128 bits en lugar de 64 bits, y utiliza un polinomio de codificación diferente: x23 + x21 + x16 + x8 + x5 + x2 + 1. Tampoco es auto-sincrónica y, por lo tanto, requiere una sincronización explícita de los valores de inicialización, a diferencia de 64b/66b.

USB 3.1 y DisplayPort 2.0 utilizan codificación 128b/132b, que es idéntica a 64b/66b, pero duplica cada uno de los bits del preámbulo para reducir el riesgo de errores no detectados.

Sucesores

Para cada codificación {n}b/{n+2}b, la relación símbolo/datos siempre es inferior a 1. Con una relación de 0,985 para la codificación 128b/130b, no hay un margen real de mejora.

Existen los siguientes enfoques para aumentar aún más la velocidad de datos:

Tasas de símbolos más altas combinadas con FEC

Son muy comunes las codificaciones 512b/514b combinadas con la corrección de errores Reed–Solomon. Se suelen utilizar las siguientes variantes:

  • RS(528,514,07,10), añadiendo 14 correcciones a la palabra clave 512b/514b, permitiendo corregir hasta 07 pedazos corruptos. Sobrecarga es de 3%, igual que 64b/66b de codificación
  • RS(544,514,14,10), sumando 30 correcciones a la palabra clave 512b/514b, permitiendo corregir hasta 15 bits dañados. Sobrecarga es del 6%.

La FEC permite tasas de error de símbolo de 2,3·10−5 o 2,2·10−4 para lograr una tasa de error de bit de menos de 10−15 en los datos transmitidos.

Codificación multinivel combinada con FEC

Se pueden realizar mejoras adicionales cambiando la codificación PAM-2 por PAM-4 o Ensemble NRZ.

Modulación multinivel Trellis combinada con FEC

Tecnologías que utilizan el encoding 64b/66b

  • 100 Gigabit Ethernet
  • 10G-EPON, 10 Gbit/s Red Óptica Pasiva Ethernet
  • 10 Gigabit Ethernet (más variedades)
  • Aurora, de Xilinx
  • Enlace de cámara HS
  • Common Public Interfaz de radio
  • Fibre Channel 10GFC y 16GFC
  • InfiniBand
  • Thunderbolt
  • JESD204C

Tecnologías que utilizan 128b/1xxb encoding

  • NVLink 1.0
  • PCIe 3.x
  • PCIe 4.x
  • PCIe 5.x
  • SATA 3.2
  • SAS 4
  • USB 3.1 Gen2
  • USB4
  • DisplayPort 2.0

Tecnologías que utilizan 256b/257b

  • Canal de fibra 32GFC "Gen 6" y superior

Referencias

  1. ^ R.C. Walker; R. Dugan (enero 18-20, 2000). "64b/66b propuesta de codificación de bajo sobrecabezamiento para enlaces seriales" (PDF). IEEE 802.3 Grupo de estudio de alta velocidad.
  • 64b/66b propuesta de codificación de cabeza baja para enlaces serie
Tenga en cuenta que esta es la propuesta original al IEEE, y algunos cambios se hicieron para el estándar final acordado. El diagrama de circuito para el polinomio de 58 bits que se describe en la propuesta es idéntico al adoptado en el estándar. Sin embargo, la propuesta numera los registros en orden inverso tal que el x58+x19+1 polinomio en la propuesta es el mismo que el etiquetado x58+x39+1 en el estándar.
  • US Patent/US6650638: Método decodificación y decodificador para 64b/66b datos de serie codificados
  • US Patent/US6718491: Método de codificación y codificador para datos serie empaquetados con bajo sobrecabezamiento
  • US Patent/US7055073: Método de codificación para la codificación de datos serie empaquetados con bajo sobrecabezamiento
  • PatentView/EP1133123 Patente de software: decodificación de 64b/66b, para datos de serie empaquetados
  • ERROR CORRECTION ON 64/66 BIT ENCODED LINKS
  • Introducción a 10 Gigabit 64b/66b (Clause 49)
  • Un diseño de referencia de Xilinx en la codificación y scrambling 64b/66b
  • Aurora 64B66B núcleo IP con codificación 64b/66b
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save