Kodowanie 64b/66b - 64b/66b encoding

W sieciach i transmisji danych 64b/66b to kod linii, który przekształca 64- bitowe dane na 66-bitowy kod linii, aby zapewnić wystarczające zmiany stanu, aby umożliwić rozsądne odtworzenie 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 10 Gbit/s Ethernet. W momencie wdrożenia 64b/66b umożliwiło to transmisję 10 Gb Ethernet z tymi samymi laserami używanymi przez SONET OC-192 , zamiast wymagać laserów 12,5 Gbit/s, które nie miały być dostępne przez kilka lat.

Protokół górny schematu kodowania jest stosunkiem ilości surowców bitów danych użytecznych do ilości bitów bloku danych surowych plus liczba dodawanych bitów kodujących. Narzut kodowania 64b/66b to 2 bity kodowania na każde 64 bity ładunku lub 3,125%. Jest to znaczna poprawa w stosunku do 25% narzutu poprzednio używanego schematu kodowania 8b/10b , który dodawał 2 bity kodowania do każdych 8 bitów ładunku.

Obciążenie można dodatkowo zmniejszyć, podwajając rozmiar ładunku, aby uzyskać kodowanie 128b/130b używane 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 jednej z dwóch możliwych 2-bitowych preambuł do 64 bitów danych.

  • Jeżeli nagłówek komunikatu jest 01 2 , z 64 bitów danych użytecznych danych.
  • Jeżeli nagłówek komunikatu jest 10 2 , z 64 bitów danych użytecznych posiadają pole typu 8-bitowe i 56 bitów danych sterowania i / lub danych.

Preambuły 00 2 i 11 2 nie są wykorzystywane i wskazać błąd, jeśli widział.

Użycie preambuł 01 2 i 10 2 gwarantuje zmianę bitów co 66 bitów, co oznacza, że ​​ciągły strumień zer lub jedynek nie może być prawidłowymi 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 funkcji samosynchronicznego szyfratora . Szyfrowanie nie ma na celu szyfrowania danych, ale zapewnienie, że w przesyłanych danych znajduje się stosunkowo równomierny rozkład jedynek i zer. Scrambler nie może zagwarantować, że dane wyjściowe nigdy nie będą miały długich zer lub samych jedynek lub innych niepożądanych właściwości w komunikacji, ale pozwala na nałożenie silnych statystycznych ograniczeń na prawdopodobieństwo wystąpienia takich zdarzeń. Praktyczne projekty dobiorą parametry systemu w taki sposób, że błąd bitowy spowodowany długimi przebiegami jest znikomo mało prawdopodobny. 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 . Górne warstwy stosu oprogramowania nie muszą być świadome, że warstwa łącza korzysta z tych metod.

Właściwości i zastosowanie

Cele projektowe 64b/66b to odzyskiwanie zegara, wyrównanie strumienia, balans DC, gęstość przejścia i długość przebiegu. Kodowanie 8b/10b gwarantuje ścisłe ograniczenia balansu DC, gęstości przejścia i długości przebiegu, podczas gdy 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 jest przystosowana do 80-bitowej długości przebiegu. Taki przebieg nie może wystąpić w 64b/66b, ponieważ przejścia są gwarantowane w 66-bitowych interwałach, a długie przebiegi są bardzo mało prawdopodobne. Chociaż teoretycznie możliwe jest, aby losowy wzorzec danych zrównał się ze stanem szyfratora i wytworzył długi okres 65 zer lub 65 jedynek, prawdopodobieństwo takiego zdarzenia jest równe rzuceniu uczciwą monetą i pojawieniu się w tym samym stanie 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 sekundy, czyli mniej więcej raz na 1900 lat.

Statystyki dotyczące długości przebiegu mogą się pogorszyć, jeśli dane składają się ze specjalnie wybranych wzorców, a nie są losowe. Wcześniejsza skrambler stosowane w Packet over SONET / SDH ( RFC  1619 (1994)) miał krótkie wielomian tylko 7 bitów stanu wewnętrznego, co pozwoliło złośliwy atakującemu stworzyć atak Denial-of-service przez przekazywanie wzorców w całej 2 7 - 1 stanów, z których jeden gwarantował desynchronizację obwodów odzyskiwania zegara. Ta luka była utrzymywana w tajemnicy, dopóki długość scramblera nie została zwiększona do 43 bitów ( RFC  2615 (1999)) uniemożliwiając złośliwemu napastnikowi zablokowanie systemu krótką sekwencją.

64b/66b uniknęło tej luki, używając wielomianu szyfrującego z wystarczającą ilością losowego stanu wewnętrznego (58 bitów), aby dedykowany atakujący używający spreparowanego pakietu Ethernet mógł utworzyć 64-bitową długość przebiegu w 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 korzystania z danych losowych.

Równowaga DC

Bilans DC 64b/66b nie jest absolutnie ograniczony. Można jednak wykazać, że wyjście szyfratora ściśle przybliża sekwencję losowych bitów binarnych. Przepuszczenie takiej sekwencji przez obwód sprzężony z prądem przemiennym powoduje powstanie szumu wędrującego linii bazowej, który jest zgodny z rozkładem Gaussa , a wpływ na poziom błędów systemu można określić ilościowo statystycznie. W praktyce skromna wartość kondensatora sprzęgającego 1 nF w systemie 100 Ω jest wystarczająca, aby zagwarantować, że dryft DC większy niż 2,5% będzie występował rzadziej niż raz na 10 22 bity (około 31 700 lat przy 10 Gbit/s). [1]:15-16

Odległość Hamminga

10Gbit Ethernet ma ścisłą kartę wymagającą średniego czasu do przyjęcia fałszywych pakietów (MTTFPA) rzędu 1 miliarda lat dla pojedynczego łącza operacyjnego. Aby to osiągnąć przy normalnych bitowych stopach błędów, wymagana jest co najmniej 4-bitowa ochrona odległości Hamminga dla wszystkich danych pakietowych. Innymi słowy, wszystkie kombinacje 3 losowo rozmieszczonych przeskoków bitów w obrębie granicy pakietu muszą zostać wykryte i spowodować unieważnienie pakietu. Połączono kilka strategii, aby osiągnąć 4-bitową odległość Hamminga dla pakietów 64b/66b: 1) wybrano pola typu silnego z 4-bitową odległością Hamminga, 2) wybrano wielomian scramblera, aby był zgodny z CRC-32 używanym dla pakietu ochrona i 3) naruszenia protokołu sąsiadujące z granicami pakietu są wymagane do unieważnienia pakietu. Kombinację CRC-32 i wybranego wielomianu szyfrującego oceniono przez wyczerpujące wyliczenie wszystkich 4-bitowych wzorców błędów dla wszystkich możliwych rozmiarów pakietów za pomocą zoptymalizowanego programu w języku C.

Obserwacje

Głównym wkładem 64b/66b jest obserwacja, że ​​deterministyczna długość serii i gęstość przejść 8b/10b nie zawsze są warte 25% narzutu kodu i że solidne, odporne systemy można projektować przy użyciu metod z ograniczeniami statystycznymi. W pewnym momencie praktyczne zagrożenia, czy to ze względu na MTBF komponentów, takich jak zasilacze, czy ze zjawisk, takich jak promieniowanie kosmiczne lub rozbłyski słoneczne , dominuje nad niezawodnością systemów 8b/10b i 64b/66b.

Wariacje

Interlaken protokół poprawia równowagę DC dalej handel off bity bardziej kodowania. Jego kodowanie 64b/67b rozszerza 64b/66b z jawnym równoważeniem DC. Może to być korzystne w niektórych zastosowaniach, takich jak użycie mniejszych kondensatorów sprzęgających na chipie.

PCI Express 3.0 wprowadził kodowanie 128b/130b, które jest podobne do 64b/66b, ale zawiera 128 bitów zamiast 64 bitów i używa innego wielomianu szyfrującego: x 23 + x 21 + x 16 + x 8 + x 5 + x 2 + 1. Nie jest również samosynchroniczny i wymaga wyraźnej synchronizacji wartości inicjatora, w przeciwieństwie do 64b/66b.

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

Następcy

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

Dostępne są następujące podejścia do dalszego zwiększenia szybkości transmisji danych:

Wyższe stawki symboli w połączeniu z FEC

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

  • RS(528,514, 07,10), dodając 14 bitów korekcyjnych do słowa kodowego 512b/514b, co pozwala na korekcję do 07 uszkodzonych bitów. Narzut wynosi 3%, tak samo jak kodowanie 64b/66b
  • RS(544,514,14,10), dodanie 30 bitów korekcyjnych do słowa kodowego 512b/514b, co pozwala na skorygowanie do 15 bitów uszkodzonych. Narzut wynosi 6%.

FEC pozwala stopy błędów symboli 2,3 · 10 -5 i 2,2 x 10 -4 do osiągnięcia bitowy współczynnik błędu mniejszy niż 10 -15 w transmitowanych danych.

Kodowanie wielopoziomowe w połączeniu z FEC

Dalsze ulepszenia są możliwe poprzez przejście z PAM-2 na PAM-4 lub kodowanie Ensemble NRZ .

Wielopoziomowa modulacja kratownicy w połączeniu z FEC

Technologie wykorzystujące kodowanie 64b/66b

Technologie wykorzystujące kodowanie 128b/1xxb

Technologie wykorzystujące kodowanie 256b/257b

Bibliografia

Zewnętrzne linki

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