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:
- 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
- 100 Gigabit Ethernet
- 10G-EPON , 10 Gbit/s Ethernet
- 10 Gigabit Ethernet (większość odmian)
- Aurora z Xilinx
- Łącze aparatu HS
- Wspólny publiczny interfejs radiowy
- Fibre Channel 10GFC i 16GFC
- InfiniBand
- Piorun
- JESD204C
Technologie korzystające z kodowania 128b/1xxb
- NVLink 1.0
- PCIe 3.x
- PCIe 4.x
- PCIe 5.x
- SATA 3.2
- SAS 4
- USB 3.1 Gen2
- USB4
- Display Port 2.0
Technologie korzystające z kodowania 256b/257b
- Fibre Channel 32GFC „Gen 6” i nowsze
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.
- Patent USA / US6650638: Metoda dekodowania i dekoder dla danych szeregowych w pakietach kodowanych 64b/66b
- Patent USA/US6718491: Metoda kodowania i koder dla danych szeregowych w pakietach z niskim narzutem
- Patent USA/US7055073: Metoda kodowania służąca do kodowania danych szeregowych w pakietach przy niskim narzucie
- PatentView/EP1133123 Patent na oprogramowanie: dekodowanie 64b/66b dla pakietów danych szeregowych
- KOREKTA BŁĘDÓW W ŁĄCZACH KODOWANYCH 64/66 BITÓW
- Wprowadzenie do 10 Gigabit 64b/66b (klauzula 49)
- Projekt referencyjny firmy Xilinx dotyczący kodowania i szyfrowania 64b/66b
- Rdzeń IP Aurora 64B66B z kodowaniem 64b/66b