Warstwa liniowa w LSK.
Usługi udostępnione przez warstwę fizyczną umożliwiają transmisję pojedynczych bitów oraz symboli specjalnych od stacji nadającej do wszystkich stacji bezpośrednio z nią sprzężonych. Warstwa liniowa wykorzystuje usługi warstwy fizycznej w celu umożliwienia przesyłania większych porcji informacji - pakietów do wybranych stacji (adresatów). Realizacje warstwy liniowej muszą więc uwzględniać specyfikę dostępnych usług warstwy fizycznej. W przypadku LSK są to następujące cechy:
a) łącze fizyczne sprzęga zazwyczaj wiele stacji; stwarza to problem dostępu do medium transmisyjnego, gdyż może wystąpić kolizja;
b) czas nadawania krótkich pakietów jest na ogół porównywalny z czasem propagacji;
c) liczba błędów wystę 111l119b pujących podczas transmisji jest bardzo mała;
Biorąc pod uwagę te cechy, w architekturze logicznej LSK wyróżnia się w warstwie liniowej dwie podwarstwy: podwarstwę dostępu (Medium Access Sublayer) i podwarstwę łącza logicznego (Logical Link Sublayer), o specyficznie dla tej klasy sieci ustalonym zakresie usług oraz specjalizowanych protokołach komunikacyjnych.
Do transmisji pakietu między źródłowym a docelowymi punktami udostępniania usług warstwy liniowej, tworzy ona jednostki danych protokołu (ramki), które są nadawane (odbierane) przy użyciu usług warstwy fizycznej.
Funkcje warstwy liniowej związane z formatowaniem ramki i z przekazywaniem jej warstwie fizycznej.
a) serializacja i deserializacja informacji - warstwa fizyczna może przyjmować dane do nadania bit po bicie z szybkością dostosowaną do szybkości transmisji w łączu oraz przekazywać bit po bicie z identyczną szybkością dane odebrane z łącza. Nie ma możliwości buforowania informacji w warstwie fizycznej. W ramach każdej stacji najmniejszą adresowalną i jednorazowo dostępną jednostką danych jest bajt lub dłuższe słowo. Zamiana postaci danych na bitowo-szeregową (serializacja) przy nadawaniu i odwrotna operacja (deserializacja) przy odbiorze wymagają jawnego określenia który bit bajtu (słowa) będzie najbardziej znaczący. Istotne jest również dostosowanie sprzętowe do odbioru danych z właściwą szybkością;
b) nadawanie preambuły - w celu uzyskania synchronizacji bitowej warstwa fizyczna wymaga wstępnego przesłania pewnej liczby bitów, czyli preambuły. Zadaniem warstwy liniowej jest poprzedzenie rozpoczęcia nadawania ramki preambułą o długości dostosowanej do wymagań konkretnego rozwiązania warstwy fizycznej;
c) synchronizacja blokowa - warstwa liniowa musi mieć zdolność wyróżniania początku i końca poszczególnych ramek w ciągu bitów nadawanych i odbieranych przez warstwę fizyczną. Inaczej nie byłoby wiadomo które bity należą do jednej ramki, a które do następnej. Początek ramki można określić w prosty sposób: po zakończeniu poprzedniej ramki na łączu nie ma sygnału, albo jest nadawana (stale lub chwilowo) jakaś wybrana sekwencja bitów w celu utrzymania synchronizacji bitowej komunikujących się stacji. Początek ramki można więc określić przez nadanie dowolnej innej kombinacji bitów. Trudniej jest z określeniem końca ramki, gdyż oznaczenie go przez wybraną sekwencję bitów mogłoby spowodować, że przy przesyłaniu takiej samej sekwencji wewnątrz ramki (dane) zostałoby to źle zinterpretowane - jest to tzw. problem przezroczystości danych. W starszych rozwiązaniach stosowano tzw. protokoły znakowe, w których dane przesyłane były w postaci znaków (8 bitów). Występowały tutaj znaki alfanumeryczne oraz specjalne znaki sterujące (np. początek ramki, koniec ramki, preambuła, itd.). Jednak rozwiązanie to nie miało zastosowania w transmisjach binarnych - można było np. każdy bajt danych zapisywać za pomocą dwóch znaków, ale mogło to w skrajnym przypadku zwiększyć dwukrotnie liczbę przesyłanych danych. Nowsze rozwiązania opierają się na protokołach bitowych. Protokoły te nie zakładają żadnego specjalnego znaczenia poszczególnych kombinacji bitów z wyjątkiem jednego wyróżnionego symbolu (flagi), która może być np. ciągiem 01111110. Flaga jest znacznikiem początku i końca każdej ramki. Może tutaj również wystąpić problem przezroczystości danych. W celu jego wyeliminowania można zastosować wcześniej opisaną technikę faszerowania zerami. Średnio zero jest wstawiane raz na 63 bity. Mamy więc zwiększenie długości ciągu bitów średnio o 1/63. Takie rozwiązanie stosowane jest powszechnie w rozległych sieciach komputerowych (np. protokół HDLC). Algorytm faszerowania zerami jest realizowany na poziomie układów scalonych. Istnieje jednak możliwość nieprawidłowego zinterpretowania flagi w przypadku wystąpienia przekłamania podczas transmisji danych. W LSK dominuje jeszcze inne rozwiązanie zadania synchronizacji blokowej, polegające na analizie aktualnego stanu łącza - bezczynności lub emisji symboli specjalnych. W szczególności można przyjąć, że koniec ramki sygnalizowany jest ciszą na łączu, trwającą określony czas, nadawanie natomiast rozpoczyna się od wysłania preambuły, która umożliwia synchronizację bitową i która kończy się dowolnie ustaloną sekwencją bitów. Alternatywnie można określić początek i koniec ramki za pomocą dowolnie ustalonych grup zer, jedynek i symboli specjalnych. Tego rodzaju rozwiązania są łatwe w realizacji, nie wprowadzają żadnego narzutu i są odporne na błędy transmisji;
d) adresowanie - warstwa fizyczna umożliwia odbiór nadanej przez dowolną stację informacji wszystkim stacjom włączonym do tej samej lokalnej sieci komputerowej. Odpowiada to adresowaniu w trybie rozgłaszania. Fakt ten stanowi specyficzną właściwość LSK. W praktyce częściej stosuje się adresowanie indywidualne lub grupowe, więc poszczególne stacje muszą być zdolne do "odfiltrowania" informacji dla nich przeznaczonych. W tym celu w każdej ramce musi znaleźć się precyzyjne określenie adresata i nadawcy informacji. Każda stacja (obiekt warstwy liniowej) musi więc rozpocząć odbieranie każdej ramki i później po zidentyfikowaniu adresata albo ją odrzucić, albo przyjąć;
e) format ramki - dla wszystkich nadawców i odbiorców musi być ustalony format ramki. W szczególności muszą zostać określone: adres nadawcy, odbiorcy, długość ramki. Najczęściej pola te mają w ramce stałą długość i początek ustalony względem znacznika początku ramki. Ponieważ każda stacja musi być zdolna do odbioru co najmniej adresu przeznaczenia ramki, ta właśnie informacja jest zwykle umieszczana na początku ramki;
Funkcje warstwy liniowej związane z kontrolą poprawności transmisji.
Najczęściej używanym wskaźnikiem charakteryzującym częstość występowania błędów jest tzw. bitowa stopa błędów (BER - Bit Error Rate), definiowana jako udział bitów błędnie przetransmitowanych w długim, testowym ciągu bitów. W LSK typowa stop błędów wynosi 10-9. Bardziej szczegółowe badania pozwoliły stwierdzić, że w rzeczywistości rzadko występują błędy pojedyncze, tj. sporadyczne przekłamania wartości pojedynczego bitu, a znacznie częściej obserwuje się tzw. błędy seryjne, czyli przekłamania niektórych lub wszystkich bitów z pewnej ich grupy. Wynika to stąd, że błędy transmisji pojawiają się zwykle w wyniku zaistnienia jakiegoś silnego zewnętrznego zakłócenia.
a) wykrywanie błędów - jeśli transmitowany jest ciąg bitów o długości m bitów to możliwe jest 2m. ich kombinacji. Zazwyczaj nadawca wydłuża nadawany ciąg bitów o r bitów nadmiarowych, które razem z nadawanym ciągiem bitów tworzą tzw. słowo kodowe o długości m+r bitów. Wartości bitów nadmiarowych są dobierane tak, że dopuszczalna jest tylko część spośród możliwych 2m.+r kombinacji bitów. Jeśli nastąpi przekłamanie jednego lub większej liczby bitów to istnieje duże prawdopodobieństwo, że odebrane słowo kodowe nie będzie należało do zbioru kombinacji dopuszczalnych. Odbiorca, znający kryterium zaliczania odbieranych słów kodowych do tego zbioru ma wówczas możliwość wykrycia błędu. Liczbę bitów nadmiarowych oraz słowo kodowe należy dobrać tak, aby prawdopodobieństwo wykrycia błędu było duże oraz realizacja wybranej zasady odwzorowywania była prosta. W normach międzynarodowych oraz w praktyce najczęściej mamy do czynienia z cykliczną sumą kontrolną (CRC - Cyclic Redundancy Check). W metodzie tej elementy transmitowanego ciągu traktuje się jako współczynniki kolejnych wyrazów wielomianu W(x) stopnia m-1. Na słowo kodowe składa się ciąg wejściowy oraz r bitów nadmiarowych, stanowiących współczynniki wielomianu będącego resztą z dzielenia modulo 2 wielomianu W(x) przez tzw. wielomian generacyjny G(x) stopnia r. Odbiorca dokonuje dzielenia odebranego słowa kodowego przez ten sam wielomian generacyjny, a kryterium poprawności transmisji jest reszta z dzielenia równa 0. Ciąg r bitów nadmiarowych nazywa się wartością CRC. Skuteczność tej metody zależy w decydującej mierze od doboru stopnia i postaci wielomianu generacyjnego. Prawidłowo dobrany wielomian G(x) zapewnia wykrycie wszystkich występujących w słowie kodowym błędów: pojedynczych, podwójnych (dwóch izolowanych błędów pojedynczych), błędów polegających na przekłamaniu nieparzystej liczby bitów oraz wszystkich błędów seryjnych o długości serii mniejszej lub równej r. Dodatkowo prawdopodobieństwo nie wykrycia błędu seryjnego o długości serii większej od r jest bardzo małe, rzędu 2-r. W sieciach lokalnych stosuje się wielomiany stopnia 16:
dla których nie wykrytych pozostaje tylko około 2*10-5 błędów seryjnych o długości serii większych niż 16 bitów. Dla sieci lokalnych przyjęto w normach międzynarodowych jednolitą postać wielomianu generacyjnego stopnia 32:
dla którego pozostaje nie wykrytych jedynie około 2*10-10 błędów seryjnych o długości serii większych niż 32.
Implementacja sprzętowa tych kodów jest też bardzo prosta, okazuje się bowiem, że dzielenie przez wielomian generacyjny można łatwo zrealizować przy użyciu rejestru przesuwającego o r stopniach i odpowiednio do postaci wielomianu dobranych sprzężeniach zwrotnych. W praktyce, aby m.in. uchronić się przed uzyskaniem zerowego wyniku dzielenia niepoprawnego ciągu bitów przez wielomian generacyjny na skutek przypadkowego wyzerowania rejestru, modyfikuje się wysyłany ciąg bitów w ustalony sposób. Wynik dzielenia tego zmodyfikowanego ciągu przez wielomian generacyjny, przy poprawnej transmisji, jest pewną ustaloną, różną od zera sekwencją bitów;
b) reakcja na wystąpienie błędów - ramka, w której odbiorca wykrył błąd musi być odrzucona (zgubiona). Przy użyciu kodu CRC nie można stwierdzić, która część ramki uległa zniekształceniu, a więc żaden fragment ramki nie może być traktowany jako wiarygodny. W szczególności zniekształceniu może ulec adres nadawcy lub odbiorcy. Na rysunku zilustrowano zmiany szybkości transmisji V w zależności od bitowej stopy błędów e oraz długości ramki N.
Stosowanie zbyt krótkich ramek powoduje straty wynikające z występowania pól organizacyjnych oraz oczekiwania na potwierdzenie, długie ramki są natomiast bardziej narażone na wystąpienie błędu;
|