Кодировка 64b/66b
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( январь 2017 г. ) |
В сетях и передаче данных 64b/66b — это линейный код , который преобразует 64- битные данные в 66-битный линейный код , чтобы обеспечить достаточное количество изменений состояния, чтобы обеспечить разумное восстановление тактовой частоты и выравнивание потока данных на приемнике. Он был определен рабочей группой IEEE 802.3 как часть поправки к IEEE 802.3ae-2002, которая ввела Ethernet 10 Гбит/с. На момент внедрения 64b/66b он позволял передавать 10 Гбит Ethernet с помощью тех же лазеров, которые использовались в SONET OC-192 , вместо того, чтобы требовать лазеров со скоростью 12,5 Гбит/с, чего не ожидалось. [ когда? ] быть доступным в течение нескольких лет.
схемы Накладные расходы протокола кодирования представляют собой отношение количества необработанных битов полезной нагрузки к числу необработанных битов полезной нагрузки плюс количество добавленных битов кодирования. Накладные расходы при кодировании 64b/66b составляют 2 бита кодирования на каждые 64 бита полезной нагрузки или 3,125%. Это значительное улучшение по сравнению с 25%-ными издержками по сравнению с ранее использовавшейся схемой кодирования 8b/10b , которая добавляла 2 бита кодирования к каждому 8 битам полезной нагрузки.
Накладные расходы можно дополнительно снизить, удвоив размер полезной нагрузки для создания кодировки 128b/130b, используемой PCIe 3.0.
Функция
[ редактировать ]Как следует из названия схемы, 64 бита полезной нагрузки кодируются как 66-битный объект. 66-битный объект создается путем добавления одной из двух возможных 2-битных преамбул к 64 битам полезной нагрузки.
- Если преамбула равна 01 2 , 64 бита полезной нагрузки представляют собой данные.
- Если преамбула равна 10 2 , 64 бита полезной нагрузки содержат 8-битное поле типа и 56 бит управляющей информации и/или данных.
Преамбулы 00 2 и 11 2 не используются и указывают на ошибку, если она обнаружена.
Использование преамбул 01 2 и 10 2 гарантирует смену битов каждые 66 бит, а это означает, что непрерывный поток 0 или 1 не может быть действительными данными. Это также упрощает синхронизацию часов/таймера, поскольку переход должен наблюдаться каждые 66 бит.
Затем 64-битная полезная нагрузка скремблируется с использованием функции самосинхронного скремблера . Скремблирование предназначено не для шифрования данных, а для обеспечения относительно равномерного распределения единиц и нулей в передаваемых данных. Скремблер не может гарантировать, что выходные данные никогда не будут иметь длинную серию из 0 или всех 1 или других нежелательных свойств при передаче данных, но позволяет установить строгие статистические границы вероятности таких событий. В практических проектах параметры системы будут выбираться таким образом, чтобы битовая ошибка из-за больших длин серий была исчезающе маловероятной. Этот метод отличается от подхода, основанного на кодовой книге, при кодировании 8b/10b .
Кодирование и скремблирование обычно полностью реализуются аппаратно, при этом скремблер использует сдвиговый регистр с линейной обратной связью . Верхним уровням программного стека не обязательно знать, что канальный уровень использует эти методы.
Свойства и применение
[ редактировать ]Целями разработки 64b/66b являются восстановление тактовой частоты, выравнивание потока, баланс постоянного тока, плотность перехода и длина пробега. Кодирование 8b/10b гарантирует строгие ограничения баланса постоянного тока, плотности перехода и длины серии, тогда как 64b/66b обеспечивает статистические границы этих свойств.
Длина пробега
[ редактировать ]Большинство схем восстановления тактовой частоты, разработанных для SONET OC-192 и 64b/66b, рассчитаны на длину пробега 80 бит. Такой запуск не может произойти в 64b/66b, поскольку переходы гарантированы с 66-битными интервалами, и фактически длинные прогоны очень маловероятны. Хотя теоретически возможно, что случайный шаблон данных совпадет с состоянием скремблера и создаст длинный ряд из 65 нулей или 65 единиц, вероятность такого события равна подбрасыванию честной монеты и ее выпадению в том же состоянии. 64 раза подряд. При скорости 10 гигабит в секунду ожидаемая частота событий для 66-битного блока с длиной серии 65 бит при условии случайных данных равна 66×2. 64 ÷10 10 ÷2 секунды, или примерно раз в 1900 лет.
Статистика длины серии может ухудшиться, если данные состоят из специально выбранных шаблонов, а не случайных. Более ранний скремблер, использовавшийся в пакетной передаче через SONET/SDH ( В RFC 1619 (1994)) был короткий полином всего с 7 битами внутреннего состояния, который позволял злоумышленнику создать атаку типа «отказ в обслуживании», передавая шаблоны во всех двух состояниях. 7 −1 состояний, одно из которых гарантированно приводило к рассинхронизации цепей восстановления тактовой частоты. Эта уязвимость держалась в секрете до тех пор, пока длина скремблера не была увеличена до 43 бит ( RFC 2615 (1999)), что делает невозможным для злоумышленника заглушить систему с помощью короткой последовательности.
64b/66b удалось избежать этой уязвимости, используя полином скремблирования с достаточным количеством случайных внутренних состояний (58 бит), так что специальный злоумышленник, использующий созданный Ethernet-пакет, может создать 64-битную длину на выходе скремблера только один раз примерно в 29 лет. [1] : 11–13 При этом создаются 66-битные блоки, содержащие 65-битные прогоны, со скоростью, аналогичной использованию случайных данных.
Баланс постоянного тока
[ редактировать ]Баланс постоянного тока 64b/66b не является абсолютно ограниченным. Однако можно показать, что выходной сигнал скремблера близко приближается к последовательности случайных двоичных битов. Прохождение такой последовательности через цепь, связанную по переменному току, создает шум дрейфа базовой линии , который соответствует распределению Гаусса , и влияние на частоту ошибок системы можно определить статистически количественно. На практике небольшой емкости разделительного конденсатора, равной 1 нФ, в системе с сопротивлением 100 Ом достаточно, чтобы гарантировать, что дрейф постоянного тока более 2,5% будет происходить реже, чем один раз в 10 раз. 22 бит (около 31 700 лет при скорости 10 Гбит/с). [1]: 15–16
Расстояние Хэмминга
[ редактировать ]10-гигабитный Ethernet имеет строгий устав, требующий, чтобы среднее время приема ложных пакетов (MTTFPA) составляло порядка 1 миллиарда лет для одного работающего канала. Чтобы добиться этого при нормальной частоте ошибок по битам, требуется как минимум 4-битная дистанционная защита Хэмминга для всех пакетных данных. Другими словами, все комбинации из трех случайно расположенных переворотов битов внутри границы пакета должны быть обнаружены и привести к признанию пакета недействительным. Для достижения 4-битного расстояния Хэмминга для пакетов 64b/66b было объединено несколько стратегий: 1) были выбраны поля строгого типа с 4-битным расстоянием Хэмминга, 2) был выбран полином скремблера, совместимый с CRC-32, используемым для пакетов. защита и 3) нарушения протокола, прилегающие к границам пакета, необходимы для признания пакета недействительным. Комбинация CRC-32 и выбранного полинома скремблера оценивалась путем исчерпывающего перебора всех 4-битных шаблонов ошибок для всех возможных размеров пакетов с помощью оптимизированной программы на языке C.
Наблюдения
[ редактировать ]Основной вклад 64b/66b заключается в наблюдении того, что детерминированная длина серии и плотность переходов 8b/10b не всегда оправдывают 25% накладных расходов на код, и что надежные устойчивые системы могут быть спроектированы с использованием статистически ограниченных методов. В какой-то момент практические риски, будь то среднее время безотказной работы таких компонентов, как источники питания, или такие явления, как космические лучи или солнечные вспышки , начинают доминировать над надежностью систем 8b/10b и 64b/66b.
Вариации
[ редактировать ]Протокол Интерлакена еще больше улучшает баланс постоянного тока за счет увеличения количества битов кодирования. Его кодировка 64b/67b расширяет кодировку 64b/66b за счет явной балансировки постоянного тока. Это может быть полезно для некоторых приложений, например, при использовании встроенных разделительных конденсаторов меньшего размера.
PCI Express 3.0 представил кодировку 128b/130b, которая аналогична 64b/66b, но имеет полезную нагрузку 128 бит вместо 64 бит и использует другой полином скремблирования: x 23 + х 21 + х 16 + х 8 + х 5 + х 2 + 1. Он также не является самосинхронным и поэтому требует явной синхронизации начальных значений, в отличие от 64b/66b.
USB 3.1 и DisplayPort 2.0 используют кодировку 128b/132b, которая идентична 64b/66b, но дублирует каждый бит преамбулы, чтобы снизить риск возникновения необнаруженных ошибок.
Преемники
[ редактировать ]Для каждой кодировки { n }b/{ n +2}b соотношение символ/данные всегда ниже 1. При соотношении 0,985 для кодирования 128b/130b реальных возможностей для улучшения нет.
Для дальнейшего увеличения скорости передачи данных доступны следующие подходы:
- Более высокая скорость передачи символов в сочетании с FEC
Очень распространены кодировки 512b/514b в сочетании с коррекцией ошибок Рида-Соломона . Часто используются следующие варианты:
- RS(528,514, 7,10), добавляя 14 битов коррекции к кодовому слову 512b/514b, позволяя исправить до 7 поврежденных битов. Накладные расходы составляют 3%, как и при кодировании 64b/66b.
- RS(544,514,14,10), добавляя 30 битов коррекции к кодовому слову 512b/514b, что позволяет исправить до 15 поврежденных битов. Накладные расходы составляют 6%.
FEC допускает коэффициент ошибок символов 2,3 · 10. −5 или 2,2 · 10 −4 добиться коэффициента ошибок по битам менее 10 −15 в передаваемых данных.
- Многоуровневое кодирование в сочетании с FEC
Дальнейшие улучшения возможны путем перехода с PAM-2 на PAM-4 или кодирование Ensemble NRZ .
- Многоуровневая модуляция Trellis в сочетании с FEC
Технологии, использующие кодировку 64b/66b
[ редактировать ]- 100-гигабитный Ethernet
- 10G-EPON , пассивная оптическая сеть Ethernet 10 Гбит/с
- 10-гигабитный Ethernet (большинство разновидностей)
- Аврора из Ксилинкса
- Связь с камерой HS
- Общий интерфейс общественного радио
- Оптоволоконный канал 10GFC и 16GFC
- ИнфиниБэнд
- Удар молнии
- ДЖЕСД204С
Технологии, использующие кодировку 128b/1xxb
[ редактировать ]Технологии, использующие кодировку 256b/257b.
[ редактировать ]- Fibre Channel 32GFC «Gen 6» и выше
Ссылки
[ редактировать ]- ^ Р. К. Уокер ; Р. Дуган (18–20 января 2000 г.). «Предложение по кодированию с низкими издержками 64b/66b для последовательных каналов» (PDF) . Группа по изучению высокоскоростного стандарта IEEE 802.3.
Внешние ссылки
[ редактировать ]- Обратите внимание, что это первоначальное предложение IEEE, и в окончательный согласованный стандарт были внесены некоторые изменения. Принципиальная схема 58-битного полинома скремблирования, описанная в предложении, идентична принятой в стандарте. Однако в предложении регистры нумеруются в обратном порядке, так что x 58 +х 19 +1 многочлен в предложении такой же, как и полином, обозначенный x 58 +х 39 +1 в стандарте.
- Патент США/US6650638: Способ декодирования и декодер для пакетированных последовательных данных с кодировкой 64b/66b.
- Патент США/US6718491: Метод кодирования и кодер для пакетированных последовательных данных с низкими издержками.
- Патент США/US7055073: Метод кодирования пакетированных последовательных данных с низкими издержками.
- PatentView/EP1133123 Патент на программное обеспечение: декодирование 64b/66b для пакетированных последовательных данных.
- ИСПРАВЛЕНИЕ ОШИБОК НА 64/66-БИТНЫХ ССЫЛКАХ С КОДИРОВАНИЕМ
- Введение в 10-гигабитную скорость 64b/66b (раздел 49)
- Эталонный дизайн Xilinx по кодированию и скремблированию 64b/66b.
- IP-ядро Aurora 64B66B с кодировкой 64b/66b