En redes de datos y la transmisión, 64b / 66b es un código de línea que transforma 64- bits de datos a 66 bits código de línea para proporcionar suficiente cambios de estado para permitir razonable de recuperación de reloj y la alineación de la secuencia 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, permitía 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 esperaban [ ¿cuándo? ] estará disponible durante varios años.
La sobrecarga de protocolo de un esquema de codificación es la relación entre el número de bits de carga útil sin procesar y el número de bits de carga útil sin procesar más el número 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%. Esta 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 a 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 de su 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.
- Si el preámbulo es 01 2 , los 64 bits de carga útil son datos.
- Si el preámbulo es 10 2 , los 64 bits de carga útil contienen un campo de tipo de 8 bits y 56 bits de información y / o datos de control.
Los preámbulos 00 2 y 11 2 no se utilizan e indican un error si se ven.
El uso de los 01 2 y 10 2 preámbulos garantiza una transición de bit cada 66 bits, lo que significa que un flujo continuo de 0s o 1s no pueden ser datos válidos. También permite una sincronización de reloj / temporizador más fácil, ya que se debe ver una transición cada 66 bits.
A continuación, la carga útil de 64 bits se codifica mediante una función de codificación autosincrónica. La codificación no tiene como objetivo cifrar los datos, sino garantizar que se encuentre una distribución relativamente uniforme de unos y ceros en los datos transmitidos. El aleatorizador 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 permite establecer límites estadísticos sólidos en la probabilidad de tales eventos. Los diseños prácticos elegirán los parámetros del sistema de tal manera que un error de bit debido a largas tiradas sea prácticamente improbable. Este método es diferente del enfoque basado en el libro de códigos de la codificación 8b / 10b .
La codificación y el aleatorizado se implementan normalmente por completo en hardware, y el aleatorizador utiliza un registro de desplazamiento de retroalimentación lineal . Las capas superiores de la pila de software no necesitan ser conscientes de que la capa de enlace utiliza 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 la transmisión, el equilibrio de CC, la densidad de transición y la duración de la 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.
Longitud de ejecució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. Tal ejecución no puede ocurrir en 64b / 66b porque las transiciones están garantizadas a intervalos de 66 bits y, de hecho, es muy poco probable que se produzcan ejecuciones largas. Aunque teóricamente es posible que un patrón de datos aleatorios se alinee con el estado del aleatorizador y produzca una serie larga de 65 ceros o 65 unos, la probabilidad de tal evento es igual a lanzar una moneda justa y que salga en el mismo estado. 64 veces seguidas. A los 10 Gigabits por segundo, la tasa de eventos espera de un bloque de 66 bits con una carrera de longitud 65 bits, suponiendo datos aleatorios, es de 66 × 2 64 ÷ 10 10 ÷ 2 segundos, o aproximadamente una vez cada 1900 años.
Las estadísticas de duración de la 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 transmitiendo patrones en los 2 7 - 1, 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 incrementó a 43 bits ( RFC 2,615 mil (1.999 mil)) por lo que es imposible para un atacante malintencionado se atasque el sistema con una secuencia corta.
64b / 66b evitó esta vulnerabilidad mediante el uso de un polinomio de codificación con suficiente estado interno aleatorio (58 bits) para que un atacante dedicado que utilice un paquete Ethernet diseñado solo pueda crear una longitud de ejecución de 64 bits en la salida del codificador una vez cada 29 años. [1] : 11–13 Esto crea bloques de 66 bits que contienen ejecuciones de 65 bits a una velocidad similar al uso de datos aleatorios.
Equilibrio 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. El paso de dicha secuencia a través de un circuito acoplado a CA produce un ruido de fluctuación de fase 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 modesto valor 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% ocurra con menos frecuencia que una vez por 10 22 bits (aproximadamente 31,700 años a 10 Gbit / s). [1]: 15–16
Distancia de Hamming
Ethernet de 10 Gbit tiene un estatuto estricto que requiere que un tiempo medio para la aceptación de paquetes falsos (MTTFPA) sea del orden de mil millones de años para un solo enlace operativo. Para lograr esto en tasas de errores de bits normales requiere al menos un 4-bit distancia de Hamming protección para todos los paquetes de datos. 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 Hamming de 4 bits para paquetes de 64b / 66b: 1) se eligieron campos de tipo fuerte con una distancia Hamming de 4 bits, 2) se eligió el polinomio aleatorizador para que fuera compatible con el CRC-32 utilizado para el paquete protección y 3) se requieren violaciones de protocolo adyacentes a los límites del paquete para invalidar el paquete. La combinación de CRC-32 y el polinomio aleatorizador elegido se evaluó 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 son siempre vale la pena código un 25% por encima, y que los sistemas robustos sólidos podrían ser diseñadas usando métodos estadísticamente delimitadas. En algún momento, los riesgos prácticos, ya sea del MTBF de componentes como las fuentes de alimentación o de fenómenos como los rayos cósmicos o las erupciones solares , dominan la fiabilidad de los sistemas 8b / 10b y 64b / 66b.
Variaciones
El protocolo de Interlaken mejora aún más el equilibrio de CC al intercambiar más bits de codificación. Su codificación 64b / 67b se extiende a 64b / 66b con equilibrio de CC explícito. Esto puede ser 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: x 23 + x 21 + x 16 + x 8 + x 5 + x 2 + 1. Tampoco es autosincrónico y, por lo tanto, requiere una sincronización explícita de los valores de inicialización, en contraste con 64b / 66b.
USB 3.1 y DisplayPort 2.0 uso 128b / 132b de codificación, que es idéntica a 64b / 66b, pero duplica cada uno de los bits de preámbulo para reducir el riesgo de errores no detectados allí.
Sucesores
Para cada {n} b / {n + 2} b codificación, la relación de símbolo / datos es siempre por debajo de 1. Con una proporción de 0,985 para 128b / 130b de codificación, no hay margen real para la mejora.
Los siguientes enfoques están disponibles para aumentar aún más la velocidad de datos:
- Velocidades de símbolo más altas combinadas con FEC
Muy comunes son las codificaciones 512b / 514b combinadas con la corrección de errores Reed-Solomon . A menudo se utilizan las siguientes variantes:
- RS (528,514, 7,10), agregando 14 bits de corrección a la palabra de código 512b / 514b, permitiendo corregir hasta 7 bits corruptos. La sobrecarga es del 3%, igual que la codificación 64b / 66b
- RS (544,514,14,10), agregando 30 bits de corrección a la palabra de código 512b / 514b, permitiendo corregir hasta 15 bits corruptos. La sobrecarga es del 6%.
El 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
Otras mejoras son posibles por el cambio de PAM-2 a PAM-4 o Ensemble NRZ codificación.
- Modulación Trellis multinivel combinada con FEC
Tecnologías que utilizan codificación 64b / 66b
- 100 Gigabit Ethernet
- Red óptica pasiva Ethernet 10G-EPON , 10 Gbit / s
- 10 Gigabit Ethernet (la mayoría de las variedades)
- Aurora , de Xilinx
- Enlace de cámara HS
- Interfaz común de radio pública
- Canal de fibra 10GFC y 16GFC
- InfiniBand
- Rayo
Tecnologías que utilizan codificación 128b / 1xxb
- NVLink 1.0
- PCIe 3.x
- PCIe 4.x
- SATA 3.2
- SAS 4
- USB 3.1 Gen2
- DisplayPort 2.0
Tecnologías que utilizan codificación 256b / 257b
- Fibre Channel 32GFC "Gen 6"
Referencias
- ^ RC Walker ; R. Dugan (18 a 20 de enero de 2000). "Propuesta de codificación de baja sobrecarga 64b / 66b para enlaces seriales" (PDF) . Grupo de estudio de alta velocidad IEEE 802.3.
enlaces externos
- Propuesta de codificación de baja sobrecarga 64b / 66b para enlaces seriales (actualización 1/12/00)
- Tenga en cuenta que esta es la propuesta original de la IEEE, y se realizaron algunos cambios para la norma final, acordado. El diagrama de circuito para el polinomio de codificación de 58 bits descrito en la propuesta es idéntico al adoptado en la norma. Sin embargo, los números de propuesta de los registros en el orden inverso de manera que la x 58 + x 19 1 polinomio en la propuesta es la misma que la de la etiqueta x 58 + x 39 1 en la norma.
- Patente de EE. UU. / US6650638: Método de decodificación y decodificador para datos en serie empaquetados codificados en 64b / 66b
- Patente de EE. UU. / US6718491: método de codificación y codificador para datos en serie empaquetados con baja sobrecarga
- Patente de EE. UU. / US7055073: método de codificación para codificar datos en serie empaquetados con una sobrecarga baja
- PatentView / EP1133123 Patente Software: 64b / 66b decodificación, los datos en serie para empaquetarse
- CORRECCIÓN DE ERRORES EN ENLACES CODIFICADOS DE 64/66 BITS
- Introducción a 10 Gigabit 64b / 66b (cláusula 49)
- Un diseño de referencia de Xilinx sobre codificación y codificación 64b / 66b
- Núcleo IP Aurora 64B66B con codificación 64b / 66b