Ethernet w układach elektronicznych. Część 1
| TechnikaDynamiczny rozwój techniki i rosnące wymagania konsumentów sprawiają, że urządzenia zdolne do komunikowania się przez Internet zaczynają odgrywać coraz większą rolę. W przypadku współczesnych urządzeń multimedialnych, takich jak konsole, telefony komórkowe czy PDA, łączność z Internetem jest niemalże podstawowym wymogiem.
W futurystycznych wizjach przyszłości każda lodówka ma być podłączona do Internetu, aby samodzielnie uzupełniać stan kończących się produktów, zamawiając je w sklepach internetowym. Można się zastanawiać nad sensownością takich pomysłów, jednakże podobne prognozy jednoznacznie sugerują bieżące trendy w technice. Niezależnie od oczekiwać konsumentów globalna sieć stanowi wygodny sposób na przesyłanie danych i kontrolowanie urządzeń z dowolnego miejsca na świecie.
Dobrym przykładem mogą być systemy zabezpieczające budynki mieszkalne, które można zdalnie monitorować przez Internet. Rozwój układów półprzewodnikowych na przestrzeni ostatnich lat sprawił, że oferta rynkowa producentów jest bardzo szeroka i dziś dołączenie urządzenia do Internetu nie stanowi większego problemu. Dostępne są specjalizowane kontrolery, układy realizujące warstwę fizyczną, gotowe biblioteki, stosy TCP/IP oraz mikrokontrolery mające wbudowane kontrolery MAC czy nawet pełną obsługę warstwy sprzętowej.
Niniejszy artykuł przybliża funkcjonowanie sieci Ethernet i przedstawia niektóre z metod dołączania do globalnej sieci własnych urządzeń. W części pierwszej prezentujemy podstawowe informacje o standardzie i rozwiązania układowe gotowych konwerterów protokołów i modułów komunikacyjnych, w części drugiej omówimy Ethernet w mikrokontrolerach i układach programowalnych oraz możliwości dostępnych bibliotek oprogramowania.
Ethernet został zdefiniowany w standardzie IEEE 802.3 określającym wymagania dla warstwy fizycznej, metody dostępu do medium transmisyjnego oraz sposób przesyłania sygnałów (w tym format ramek i protokołów w dwóch najniższych warstwach). Sieć Ethernet funkcjonuje w oparciu o model warstwowy, tzn. zastosowany został podział na warstwy - im jest ona wyższa, tym operacje na danych są bardziej abstrakcyjne.
Każda z warstw jest odpowiedzialna za realizowanie określonych zadań i udostępnianie interfejsu dla warstw niższych oraz wyższych. Idea podziału na warstwy powstała w latach 80., gdy organizacja ISO stwierdziła, że konieczne jest opracowanie modelu sieciowej komunikacji. Miał on umożliwić opracowywanie rozwiązań sieciowych przez różnych producentów, które będą ze sobą zgodne. Powstały na podstawie tych prac model OSI (Open System Interconnection) stanowi punkt wyjścia dla funkcjonowania większości protokołów sieciowych.
Na rysunku 1 pokazano strukturę takiego modelu. Warto zauważyć, że na potrzeby Internetu wykorzystuje się głownie mniej złożony model TCP/IP. W przypadku połączenia w sieci Ethernet najniższa warstwa, fizyczna (oznaczana skrótem PHY), odpowiada za nadawanie strumienia bitów przez medium (przewód, światłowód): kodowanie, multipleksowanie, synchronizację, odzyskiwanie zegara, serializację, wykrywanie kolizji i ponawianie transmisji po jej stwierdzeniu.
Kolejną, wyższą warstwę stanowi warstwa MAC (Media Access Control). Dane przekazane do tej warstwy zostają opakowane w ramkę z dołączonym nagłówkiem, sumę kontrolną oraz dodatkowymi polami kontrolnymi. Następnie tak skonstruowana ramka jest przekazywana w postaci strumienia bitów do warstwy niższej (fizycznej), gdzie zostaje przesłana bezpośrednio do sieci. Głównym zadaniem warstwy MAC jest uniezależnienie danych od medium transmisyjnego. W takim układzie, zmieniając jedynie warstwę fizyczną, można zmienić sposób, w jaki są przesyłane dane (np. ze skrętki na światłowód).
W ramce ethernetowej przekazywanej do warstwy fizycznej można wyróżnić następujące pola:
- preambuła (7 oktetów postaci 01010101),
- pole SFD (Start of Frame Delimiter), które może być uważane za dalszą część preambuły,
- adres urządzenia docelowego złożony z 6 bajtów (adres MAC-48),
- adres urządzenia nadającego ramkę, złożony również z 6 bajtów (MAC-48),
- pole określające rozmiar pakietu (w zakresie od 46 do 1500 oktetów) lub typ przesyłanej ramki: IPv4, IPv6, ARP, RARP. Znaczenie tego pola jest uzależnione od wartości, gdy jest ona niższa niż 1536, pole zawiera informację o rozmiarze pakietu,
- pole danych oraz bajty wypełniające, jeżeli liczba przesyłanych bajtów jest mniejsza niż wymagane minimum (46 oktetów),
- suma kontrolna CRC złożona z 4 bajtów,
- pole ESD (End of Stream elimiter).
Graficzną ilustrację ramki ethernetowej przedstawiono na rysunku 2. Warto zauważyć, że zastosowane na tym poziomie zabezpieczenia pozwalają odrzucać błędne ramki, ale nie ma możliwości ponowienia transmisji w przypadku uszkodzenia lub utraty pakietu. Co więcej, nie ma możliwości zarządzania dużymi blokami danych, których rozmiar przekracza 1500 bajtów. Nie można ich umieścić wewnątrz pojedynczej ramki i należy je podzielić na odpowiednio większą ich liczbę.
To zadanie jest jednakże realizowane przez wyższe warstwy. Wykorzystując sieć do przesyłania danych, należy mieć na uwadze, że ramki mogą docierać do urządzenia docelowego w kolejności innej niż wysłana. Wynika to bezpośrednio ze specyfiki sieci i jej topologii oraz faktu, że różne poszczególne pakiety nie muszą dotrzeć do odbiorcy zawsze tą samą drogą. Konieczna staje się implementacja mechanizmów buforujących i sortujących odbierane ramki oraz scalanie ich w pełny blok danych.
Niestety w międzyczasie może dojść do utraty bądź przekłamania ramek transmitowanych przez sieć, a co za tym idzie - utraty integralności danych. Ponawianie całej transmisji byłoby wysoce nieefektywne, dlatego niezbędne staje się zaimplementowanie mechanizmów wymuszających wysyłanie jedynie brakujących bądź uszkodzonych ramek. Zadanie to również jest powierzane warstwom wyższym. Warto wspomnieć jeszcze, że adres MAC jest złożony z kombinacji 48 bitów niepowtarzalnych w obrębie całej sieci.
Adres ten dzieli się na dwie 24-bitowe części, gdzie starsza z nich stanowi identyfikator OUI (Organizationally Unique Identifier) przydzielany przez organizację IEEE konkretnej firmie lub organizacji, natomiast bity młodsze - identyfikator urządzenia. W sytuacji, gdy potrzeba nie więcej niż 4096 adresów, istnieje możliwość zakupienia indywidualnego bloku adresowego (IAB). W takiej sytuacji identyfikator OUI należy do IEEE, a kolejnych 12 bitów jest zastrzeżonych i do dyspozycji producenta pozostaje tylko 12 najmłodszych bitów.