2009-06-13 11 views
6

Patrząc na standardy poziomu łącza danych, takie jak PPP general frame format lub Ethernet, nie jest jasne, co się stanie, jeśli suma kontrolna jest nieprawidłowa. W jaki sposób protokół wie, gdzie rozpoczyna się następna klatka?Jak odzyskać PPP lub Ethernet z powodu błędów?

Czy skanuje on tylko w poszukiwaniu następnego wystąpienia "flagi" (w przypadku PPP)? Jeśli tak, co się stanie, jeśli pakietowy ładunek będzie zawierał samą "flagę"? Chodzi mi o to, że bez względu na to, czy używane są frameworki czy pola "długość", nie jest jasne, jak odzyskać dane z niepoprawnych pakietów, w których pole "długość" może być uszkodzone lub bajty "ramkowania" mogą stać się częścią pakiet ładunku.

UPDATE: znalazłem to, czego szukałem (co nie jest ściśle co prosiłem o), patrząc w górę „GFP CRC oparte kadrowanie”. Według Communication networks

Odbiornik GFP synchronizuje się z granicą ramki GFP w ramach procesu trzech stanów. Odbiornik jest początkowo w stanie polowania , gdzie analizuje cztery bajty na raz, aby zobaczyć, czy CRC obliczone na pierwszych dwóch bajtach jest równe zawartości kolejnych dwóch bajtów. Jeśli nie zostanie znalezione dopasowanie, GFP przesunie się do przodu o jeden bajt, ponieważ GFP przyjmuje oktetową transmisję synchroniczną podaną przez warstwę fizyczną. Gdy odbiorca znajdzie dopasowanie, przechodzi do stanu pre-synchronizacji . Podczas gdy w tym stanie pośrednim odbiornik używa pola niepewnego PLI (wskaźnik długości ładunku) do określenia położenia następnej granicy ramki. Jeżeli uzyskano docelowy numer N udanego wykrywania ramki, wówczas odbiornik przechodzi do stanu synchronizacji . Stan synchronizacji to normalny stan, w którym odbiornik analizuje każdy PLI, sprawdza poprawność za pomocą cHEC (sprawdzanie błędów nagłówka rdzenia), wyodrębnia ładunek i przechodzi do następnej ramki.

W skrócie, każdy pakiet zaczyna się od "długość" i "CRC (długość)". Nie ma potrzeby ucieczki od żadnych znaków, a długość pakietu jest znana z wyprzedzeniem.

Wydaje się, że dwa główne podejścia do ramy szkieletowej pakietów:

  • schematy kodowania (bit/bajt farsz, kodowanie Manchester, 4b5b, 8b10b itp)
  • danych niemodyfikowane + kontrolna (GFP)

Ten pierwszy jest bezpieczniejszy, drugi jest bardziej wydajny. Oba są podatne na błędy, jeśli tylko ładunek zawiera prawidłowy pakiet i uszkodzenie linii powoduje, że bajty postępowania zawierają sekwencję bajtów "początku ramki", ale brzmi to wysoce nieprawdopodobnie. Trudno jest znaleźć twarde liczby, by zapewnić GFP solidność, ale wiele nowoczesnych protokołów używa go, więc można założyć, że wiedzą, co robią.

Odpowiedz

5

Jesteś bardzo blisko do poprawnej odpowiedzi już. Zasadniczo, jeśli zaczyna się od preambuły i kończy się czymś, co pasuje do sumy kontrolnej, jest to ramka i przekazywana do wyższych warstw.

Protokół PPP i ethernet szukają sygnału rozpoczęcia następnej klatki. W przypadku sieci Ethernet jest to preambuła, sekwencja 64 bitów naprzemiennych. Jeśli dekoder Ethernetu to widzi, zakłada po prostu, co następuje po ramce. Przechwytując bity, a następnie sprawdzając, czy suma kontrolna jest zgodna, decyduje, czy ma poprawną ramkę.

Jeśli chodzi o ładunek zawierający FLAGĘ, w PPP jest on wyposażony w dodatkowe bajty, aby zapobiec takiej błędnej interpretacji.

1

W tej sekcji opisano podstawy specyfikacji RFC 1661. Sekwencja sprawdzania ramki służy do wykrywania błędów transmisji w ramce (opisanej we wcześniejszej sekcji Encapsulation).

Diagram z RFC 1661 na tej stronie Wikipedii opisuje, w jaki sposób można ponownie uruchomić fazę protokołu sieciowego za pomocą Link Establishment w przypadku błędu.


Notatki ze strony Cisco, do których odsyła Suvesh.

Protokół PPP link-Control

PPP LCP dotyczy sposobu ustalenia, konfiguracji, utrzymania i zakończenia połączenia punkt-punkt. LCP przechodzi przez cztery odrębne fazy.

Najpierw występują negocjacje powiązania i konfiguracji. Przed wymianą dowolnych datagramów warstwy sieci (na przykład IP), LCP musi najpierw otworzyć połączenie i wynegocjować parametry konfiguracyjne. Ta faza jest zakończona, gdy ramka potwierdzenia konfiguracji została wysłana i odebrana.

Następnie następuje określenie jakości łącza. LCP pozwala na opcjonalną fazę określania jakości łącza po ustanowieniu połączenia i fazie negocjacji konfiguracji. W tej fazie łącze jest testowane w celu ustalenia, czy jakość łącza jest wystarczająca do wyświetlenia protokołów warstwy sieciowej. Ta faza jest opcjonalna. LCP może opóźnić transmisję informacji o protokole warstwy sieciowej do zakończenia tej fazy.

W tym momencie następuje negocjacja konfiguracji protokołu warstwy sieciowej. Po zakończeniu fazy ustalania jakości łącza LCP, protokoły warstwy sieciowej mogą być konfigurowane osobno za pomocą odpowiedniego NCP i mogą być w dowolnym momencie przywoływane i usuwane. Jeśli LCP zamknie łącze, informuje protokoły warstwy sieciowej, aby mogły podjąć odpowiednie działania.

W końcu następuje zakończenie połączenia. LCP może zakończyć łącze w dowolnym momencie. Zwykle odbywa się to na żądanie użytkownika, ale może się zdarzyć z powodu zdarzenia fizycznego, takiego jak utrata nośnika lub wygaśnięcie licznika czasu bezczynności.

Istnieją trzy klasy ramek LCP. Ramy tworzenia połączenia są używane do ustanowienia i skonfigurowania łącza. Ramki zakończenia połączenia są używane do zakończenia łącza, a ramki obsługi łącza są używane do zarządzania i debugowania łącza.

Ramki te służą do wykonania pracy każdej fazy LCP.

+1

... ale nadal bez korekcji błędów lub odzyskiwania w warstwie łącza. –

+0

bez korekcji błędów. Ale myślałem, że LCP może odzyskać od błędów łącza, aby ponownie zsynchronizować połączenie. – nik

+0

Ale pakiet z błędem jest nadal wykrywany i odrzucany. Korekcja błędów w warstwie łącza oznaczałaby poprawienie tego błędu/ponowne przesłanie oryginalnego pakietu. Co nie dzieje się w warstwie łącza. –

1

O ile mi wiadomo, protokół PPP obsługuje tylko wykrywanie błędów i nie obsługuje żadnej formy korekcji błędów ani odzyskiwania.

poparte Cisco tutaj: http://www.cisco.com/en/US/docs/internetworking/technology/handbook/PPP.html

+1

Musi mieć * jakiś * sposób odzyskania. Niektóre łącza fizyczne nie mają pojęcia połączenia, więc nie można użyć łącza po wystąpieniu błędu. Nie należy oczekiwać, że użytkownicy będą wyłączać komputer za każdym razem, gdy wystąpi błąd. – Gili

+2

Dokładnie. Ale to nie problem warstwy łącza. Warstwa łącza zajmuje się tylko wykrywaniem błędów. Korekta błędów i odzyskiwanie pozostawia się wyższym warstwom. –

9

Zarówno protokół PPP, jak i Ethernet mają mechanizmy ramkowania - to znaczy do rozbijania strumienia bitów w ramki, w taki sposób, że jeśli odbiornik traci informacje o tym, co jest, może odebrać je na początku następnego rama. Znajdują się one na samym dole stosu protokołów; wszystkie pozostałe szczegóły protokołu opierają się na idei ramek. W szczególności, preambuła, LCP i FCS są na wyższym poziomie, i są , a nie wykorzystywane do kontrolowania kadrowania.

PPP, przez łącza szeregowe, takie jak dialup, jest oprawiony przy użyciu HDLC-like framing. Wartość bajtu 0x7e, nazywana sekwencją flag, wskazuje początek ramki. Ramka będzie kontynuowana aż do następnego bajta flagowego. Każde wystąpienie bajta flagi w treści ramki jest unikane. Uciekanie odbywa się przez zapisanie 0x7d, znanego jako kontrolny bajt wyjścia, a następnie bajt, który ma być zmieniony xor'd z 0x20. Sekwencja flagi została zmieniona na 0x5e; ucieczka kontrolna również musi być uniknięta, do 0x5d. Inne wartości mogą również zostać zmienione, jeśli ich obecność zakłóci działanie modemu. W rezultacie, jeśli odbiornik traci synchronizację, może po prostu odczytywać i odkładać bajty, dopóki nie zobaczy 0x7e, w którym to punkcie wie, że jest ponownie na początku ramki. Zawartość ramki jest następnie uporządkowana, zawiera pewne nieparzyste małe pola, które nie są tak naprawdę ważne, ale są zachowywane z wcześniejszego protokołu IBM, wraz z pakietem PPP (nazywanym jednostką danych protokołu, PDU), a także kontrolą ramki sekwencja (FCS).

Ethernet używa logicznie podobnego podejścia, polegającego na posiadaniu symboli, które są rozpoznawane jako znaczniki początku i końca ramki, a nie danych, ale zamiast posiadania zarezerwowanych bajtów i mechanizmu ewakuacji, używa schematu kodowania, który jest w stanie wyrazić specjalne sterowanie symbole, które różnią się od bajtów danych - trochę jak za pomocą interpunkcji, aby rozbić sekwencję liter. Szczegóły używanego systemu zależą od prędkości.

Standardowa (10 Mb/s) sieć Ethernet jest kodowana przy użyciu rzeczy o nazwie Manchester encoding, w której każdy bit przeznaczony do przesłania jest reprezentowany jako dwa kolejne poziomy na linii, w taki sposób, że zawsze występuje przejście między poziomami w co nieco, co pomaga odbiorcy pozostać zsynchronizowany. Granice ramek są oznaczone pogwałceniem reguły kodowania, co prowadzi do tego, że jest trochę bez przejścia (przeczytałem to w książce wiele lat temu, ale nie mogę znaleźć cytatu online - może się w tym nie mylić). W efekcie system rozszerza kod binarny na trzy symbole - 0, 1 i naruszenie.

Szybki (100 Mb/s) ethernet używa innego schematu kodowania, opartego na 5b/4b code, gdzie grupy czterech bitów danych (nybbles) są reprezentowane jako grupy pięciu bitów na kablu, i transmitowane bezpośrednio, bez Manchesteru schemat. Rozszerzenie do pięciu bitów pozwala wybrać szesnaście niezbędnych wzorców, aby spełnić wymóg częstego przejścia poziomu, aby ponownie zsynchronizować odbiornik. Jednak wciąż jest miejsce na wybór dodatkowych symboli, które mogą być transmitowane, ale nie odpowiadają wartości danych, w efekcie rozszerzając zbiór nybbles na dwadzieścia cztery symbole - nybbles 0 do F i symbole o nazwie Q, I , J, K, T, R, S i H. Ethernet używa pary JK do oznaczania początku ramki, a TR do oznaczania końcówek ramek.

Gigabitowa sieć Ethernet jest podobna do szybkiej sieci Ethernet, ale z innym schematem kodowania - wersje światłowodów używają 8b/10b code zamiast kodu 5b/4b, a wersja z parami skręconymi wykorzystuje bardzo skomplikowany układ kodu Naprawdę rozumiem. Oba podejścia dają ten sam wynik, którym jest możliwość przesłania bajtów danych lub jednego z małych zestawów dodatkowych symboli specjalnych, a te specjalne symbole są używane do kadrowania.

Poza podstawową strukturą ramek znajduje się ustalona preambuła, a następnie separator ramek i niektóre pola kontrolne o różnym bezcelowości (witaj, LLC/SNAP!). Ważności tych pól można użyć do sprawdzenia poprawności ramki, ale nie można ich użyć do samodzielnego definiowania ramek.

Powiązane problemy