kodowanie 64b/66b

W sieciach i transmisji danych 64b/66b jest kodem liniowym , który przekształca dane 64- bitowe na 66-bitowy kod liniowy , aby zapewnić wystarczające zmiany stanu, aby umożliwić rozsądne przywrócenie zegara i wyrównanie strumienia danych w odbiorniku. Został zdefiniowany przez grupę roboczą IEEE 802.3 jako część poprawki IEEE 802.3ae-2002, która wprowadziła Ethernet 10 Gbit/s. W momencie wdrożenia standardu 64b/66b umożliwiał on transmisję 10 Gb Ethernet za pomocą tych samych laserów, z których korzysta SONET OC-192 , zamiast wymagać laserów 12,5 Gb/s, których się nie spodziewano [ kiedy? ] być dostępne przez kilka lat.

Narzut protokołu schematu kodowania to stosunek liczby surowych bitów danych do liczby nieprzetworzonych bitów danych plus liczba dodanych bitów kodowania. Narzut związany z kodowaniem 64b/66b wynosi 2 bity kodowania na każde 64 bity ładunku lub 3,125%. Jest to znaczna poprawa w stosunku do 25% narzutu stosowanego wcześniej kodowania 8b/10b , który dodawał 2 bity kodowania do każdych 8 bitów ładunku.

Narzut można jeszcze bardziej zmniejszyć, podwajając rozmiar ładunku w celu uzyskania kodowania 128b/130b używanego przez PCIe 3.0.

Funkcjonować

Jak sugeruje nazwa schematu, 64 bity ładunku są zakodowane jako jednostka 66-bitowa. Jednostka 66-bitowa jest tworzona przez poprzedzenie jednego z dwóch możliwych 2-bitowych preambuł przed 64 bitami danych.

  • Jeżeli preambuła to 01 2 , 64 bity ładunku to dane.
  • Jeśli preambuła ma wartość 102 , 64 bity danych zawierają 8-bitowe pole typu i 56 bitów informacji i/lub danych sterujących.

Preambuły 00 2 i 11 2 nie są używane i wskazują na błąd, jeśli są widoczne.

Użycie preambuł 01 2 i 10 2 gwarantuje zmianę bitu co 66 bitów, co oznacza, że ​​ciągły strumień zer lub jedynek nie może być ważnymi danymi. Umożliwia również łatwiejszą synchronizację zegara/timera, ponieważ przejście musi być widoczne co 66 bitów.

64-bitowy ładunek jest następnie szyfrowany przy użyciu samosynchronicznej funkcji skramblera . Szyfrowanie nie ma na celu szyfrowania danych, ale zapewnienie względnie równomiernego rozkładu jedynek i zer w przesyłanych danych. Scrambler nie może zagwarantować, że dane wyjściowe nigdy nie będą miały długich ciągów zerowych lub samych jedynek lub innych niepożądanych właściwości w komunikacji, ale pozwala na nałożenie silnych granic statystycznych na prawdopodobieństwo takich zdarzeń. Praktyczne projekty dobiorą parametry systemowe w taki sposób, że błąd bitowy spowodowany długimi przebiegami jest prawie nieprawdopodobny. Ta metoda różni się od podejścia opartego na książce kodów kodowania 8b/10b .

Kodowanie i szyfrowanie są zwykle realizowane całkowicie sprzętowo, przy czym szyfrator wykorzystuje rejestr przesuwny z liniowym sprzężeniem zwrotnym . Wyższe warstwy stosu oprogramowania nie muszą być świadome, że warstwa łącza używa tych metod.

Właściwości i zastosowanie

Cele projektowe 64b/66b to odzyskiwanie zegara, wyrównanie strumienia, równowaga prądu stałego, gęstość przejść i długość przebiegu. Kodowanie 8b/10b gwarantuje ścisłe ograniczenia równowagi DC, gęstości przejścia i długości przebiegu, podczas gdy kodowanie 64b/66b zapewnia statystyczne ograniczenia tych właściwości.

Długość biegu

Większość obwodów odzyskiwania zegara zaprojektowanych dla SONET OC-192 i 64b/66b toleruje 80-bitową długość przebiegu. Taki przebieg nie może wystąpić w 64b/66b, ponieważ przejścia są gwarantowane w odstępach 66-bitowych, a tak naprawdę długie przebiegi są bardzo mało prawdopodobne. Chociaż teoretycznie jest możliwe, aby losowy wzorzec danych był zgodny ze stanem szyfratora i generował długi ciąg 65 zer lub 65 jedynek, prawdopodobieństwo takiego zdarzenia jest równe rzuceniu uczciwej monety i uzyskaniu tego samego stanu 64 razy z rzędu. Przy 10 gigabitach na sekundę oczekiwana częstotliwość zdarzeń 66-bitowego bloku o 65-bitowej długości przebiegu, przy założeniu losowych danych, wynosi 66×2 64 ÷10 10 ÷2 sekund, czyli mniej więcej raz na 1900 lat.

   Statystyki długości serii mogą ulec pogorszeniu, jeśli dane składają się ze specjalnie dobranych wzorców, zamiast być losowe. Wcześniejszy skrambler używany w Packet over SONET/SDH ( RFC 1619 (1994)) miał krótki wielomian z tylko 7 bitami stanu wewnętrznego, co pozwalało złośliwemu atakującemu na stworzenie ataku typu „ odmowa usługi” poprzez przesyłanie wzorców we wszystkich 2 7 − 1, z których jeden gwarantował desynchronizację obwodów odzyskiwania zegara. Ta luka była utrzymywana w tajemnicy, dopóki długość szyfratora nie została zwiększona do 43 bitów ( RFC 2615 (1999)), co uniemożliwiło złośliwemu atakującemu zablokowanie systemu za pomocą krótkiej sekwencji.

W wersjach 64b/66b uniknięto tej luki, stosując szyfrujący wielomian z wystarczającą liczbą losowych stanów wewnętrznych (58 bitów), tak aby dedykowany atakujący używający spreparowanego pakietu Ethernet mógł utworzyć 64-bitowy przebieg na wyjściu szyfratora tylko raz na około 29 lat. Tworzy to 66-bitowe bloki zawierające 65-bitowe przebiegi z szybkością podobną do używania losowych danych.

Bilans prądu stałego

Bilans DC 64b/66b nie jest bezwzględnie ograniczony. Można jednak wykazać, że dane wyjściowe szyfratora są bardzo zbliżone do sekwencji losowych bitów binarnych. Przepuszczenie takiej sekwencji przez obwód sprzężony z prądem przemiennym wytwarza szum wędrówki linii bazowej, który jest zgodny z rozkładem Gaussa , a wpływ na poziom błędów systemu można określić statystycznie. W praktyce niewielka wartość kondensatora sprzęgającego wynosząca 1 nF w systemie 100 Ω jest wystarczająca, aby zagwarantować, że dryf prądu stałego większy niż 2,5% będzie występował rzadziej niż raz na 10 22 bitów (około 31 700 lat przy 10 Gbit/s). [1]:15–16

Odległość Hamminga

10Gbit Ethernet ma ścisłe wymagania, zgodnie z którymi średni czas do fałszywej akceptacji pakietów (MTTFPA) musi być rzędu 1 miliarda lat dla pojedynczego działającego łącza. Aby to osiągnąć przy normalnej bitowej stopie błędów, wymagane jest co najmniej 4-bitowe odległości Hamminga dla wszystkich danych pakietowych. Innymi słowy, wszystkie kombinacje 3 losowo rozmieszczonych przerzutów bitów w granicach pakietu muszą zostać wykryte i skutkować unieważnieniem pakietu. W celu osiągnięcia 4-bitowej odległości Hamminga dla pakietów 64b/66b połączono kilka strategii: 1) wybrano pola silnego typu z 4-bitową odległością Hamminga, 2) wybrano wielomian szyfrujący, aby był zgodny z CRC-32 używanym do ochrona i 3) naruszenia protokołu w sąsiedztwie granic pakietu są wymagane do unieważnienia pakietu. Kombinacja CRC-32 i wybranego wielomianu szyfrującego została oceniona przez wyczerpujące wyliczenie wszystkich 4-bitowych wzorców błędów dla wszystkich możliwych rozmiarów pakietów za pomocą zoptymalizowanego programu C.

obserwacje

Głównym wkładem 64b/66b jest obserwacja, że ​​deterministyczna długość przebiegu i gęstość przejść 8b/10b nie zawsze są warte 25% narzutu kodu i że solidne, niezawodne systemy można zaprojektować przy użyciu metod statystycznie ograniczonych. W pewnym momencie praktyczne zagrożenia, czy to związane z MTBF komponentów, takich jak zasilacze, czy zjawiskami, takimi jak promienie kosmiczne lub rozbłyski słoneczne , dominują nad niezawodnością zarówno systemów 8b/10b, jak i 64b/66b.

Wariacje

Protokół Interlaken jeszcze bardziej poprawia równowagę DC poprzez wymianę większej liczby bitów kodowania. Jego kodowanie 64b/67b rozszerza kodowanie 64b/66b z jawnym równoważeniem DC. Może to być korzystne w przypadku niektórych zastosowań, takich jak użycie mniejszych kondensatorów sprzęgających na chipie.

PCI Express 3.0 wprowadziło kodowanie 128b/130b, które jest podobne do 64b/66b, ale ma ładunek 128 bitów zamiast 64 bitów i wykorzystuje inny wielomian szyfrujący: x 23 + x 21 + x 16 + x 8 + x 5 + x 2 + 1. Nie jest również samosynchroniczny i dlatego wymaga wyraźnej synchronizacji wartości początkowych, w przeciwieństwie do 64b/66b.

USB 3.1 i DisplayPort 2.0 wykorzystują kodowanie 128b/132b, które jest identyczne z kodowaniem 64b/66b, ale powiela każdy z bitów preambuły, aby zmniejszyć ryzyko niewykrytych tam błędów.

Następcy

Dla każdego kodowania {n}b/{n+2}b stosunek symbol/dane jest zawsze mniejszy niż 1. Przy stosunku 0,985 dla kodowania 128b/130b nie ma rzeczywistego marginesu poprawy.

Dostępne są następujące metody dalszego zwiększania szybkości transmisji danych:

Wyższe szybkości symboli w połączeniu z FEC

Bardzo powszechne są kodowania 512b/514b połączone z korekcją błędów Reeda-Solomona . Często używane są następujące warianty:

  • 00 RS(528,514, 7,10), dodając 14 bitów korekcyjnych do słowa kodowego 512b/514b, co pozwala na poprawienie do 7 uszkodzonych bitów. Narzut wynosi 3%, tak samo jak w przypadku kodowania 64b/66b
  • RS(544,514,14,10), dodając 30 bitów korekcyjnych do słowa kodowego 512b/514b, co pozwala na poprawienie do 15 uszkodzonych bitów. Koszty ogólne wynoszą 6%.

FEC umożliwia współczynniki błędów symboli wynoszące 2,3 · 10-5 lub 2,2 · 10-4 , aby osiągnąć współczynnik błędów bitowych mniejszy niż 10-15 w transmitowanych danych.

Kodowanie wielopoziomowe połączone z FEC

kodowania PAM-2 na PAM-4 lub Ensemble NRZ .

Wielopoziomowa modulacja Trellis połączona z FEC

Technologie korzystające z kodowania 64b/66b

Technologie korzystające z kodowania 128b/1xxb

Technologie korzystające z kodowania 256b/257b

Linki zewnętrzne

Należy zauważyć, że jest to pierwotna propozycja IEEE i dokonano pewnych zmian w ostatecznym, uzgodnionym standardzie. Schemat ideowy 58-bitowego wielomianu szyfrującego opisanego we wniosku jest identyczny z przyjętym w normie. Jednak propozycja numeruje rejestry w odwrotnej kolejności, tak że wielomian x 58 +x 19 +1 w propozycji jest taki sam jak wielomian oznaczony x 58 +x 39 +1 w standardzie.