CSMA/CD

Metoda dostępu do medium z nasłuchem nośnika i wykrywaniem kolizji.

Problem: Uprzejma Rozmowa na Wspólnej Linii

Wyobraź sobie grupę ludzi w pokoju, którzy próbują prowadzić rozmowę. Jeśli wszyscy zaczną mówić naraz, powstanie chaos i nikt nie zostanie zrozumiany. Aby skutecznie się komunikować, potrzebują zestawu zasad, czyli protokołu. Na przykład: „Słuchaj, zanim zaczniesz mówić. Jeśli ktoś inny mówi, poczekaj na swoją kolej. Jeśli przypadkiem zaczniesz mówić w tym samym czasie co ktoś inny, przerwij, przeproś i odczekaj chwilę, zanim spróbujesz ponownie”.

Wczesne sieci Ethernet borykały się z bardzo podobnym problemem. Używały (zazwyczaj jednego kabla koncentrycznego w topologii magistrali lub prostego koncentratora (huba)) do którego podłączone były wszystkie urządzenia. To wspólne medium działa jak ten jeden pokój: jeśli dwa lub więcej urządzeń próbowało wysłać dane w tym samym momencie, ich sygnały elektryczne mieszały się na przewodzie, stając się uszkodzone i niezrozumiałe. Takie zdarzenie nazywa się kolizją.

Aby zarządzać tą „rozmową” i elegancko radzić sobie z kolizjami, wczesny Ethernet opracował fundamentalny protokół dostępu do medium: CSMA/CD.

Rozszyfrowanie Nazwy: CSMA/CD

Sama nazwa doskonale opisuje, jak działa ten protokół. Rozłóżmy ją na części pierwsze:

  • CS - Carrier Sense (Nasłuch Nośnej)

    Oznacza to „słuchaj, zanim zaczniesz mówić”. Zanim urządzenie spróbuje przesłać dane, najpierw „nasłuchuje” kanału komunikacyjnego (kabla), aby sprawdzić, czy jest na nim sygnał, czyli „nośna”. Jeśli wykryje, że inne urządzenie już nadaje, odczeka. Próbuje wysłać dane dopiero wtedy, gdy wyczuje, że kanał jest wolny (cichy).

  • MA - Multiple Access (Wielodostęp)

    To po prostu potwierdzenie natury sieci: wiele urządzeń (wiele punktów dostępu) współdzieli to samo medium. Protokół jest zaprojektowany do zarządzania tym współdzielonym dostępem, pozwalając każdemu urządzeniu próbować użyć kanału, gdy jest on wolny.

  • CD - Collision Detection (Wykrywanie Kolizji)

    To jest część „słuchaj, mówiąc”. Kolizja może nadal wystąpić, nawet przy nasłuchiwaniu nośnej. Na przykład dwa urządzenia mogą nasłuchiwać, stwierdzić, że kanał jest wolny w tym samym czasie, i zacząć nadawać jednocześnie. Aby sobie z tym poradzić, nadające urządzenie kontynuuje monitorowanie kanału podczas wysyłania danych. Porównuje sygnał, który wysyła, z sygnałem, który wyczuwa na przewodzie. Jeśli wykryty sygnał różni się od tego, co wysyła (np. ma wyższy poziom napięcia), wie, że jego dane zderzyły się z innym sygnałem. Ta zdolność do wykrywania kolizji w trakcie jej trwania jest kluczem do zarządzania medium współdzielonym.

Algorytm CSMA/CD: Krok po Kroku

Cały proces CSMA/CD można opisać jako prosty, ale skuteczny algorytm, którego przestrzega każde urządzenie w danym segmencie Ethernet:

Schemat blokowy algorytmu CSMA/CD

Faza inicjalizacji: przygotowanie do transmisji

  • 1: Host chce nadawać – stacja przygotowuje dane do wysłania.
  • 2: Sprawdzenie, czy wykryto nośną (czy ktoś inny nie nadaje).
    • TAK: przejdź do kroku 5, aby nadal kontrolować medium pod kątem kolizji.
    • NIE: przejdź do kroku 3 i przygotuj ramkę do wysłania.
  • 3: Złożenie ramki – host buduje ramkę Ethernet z odpowiednimi polami nagłówka.
  • 4: Rozpoczęcie transmisji – bity ramki trafiają na współdzielony przewód.

Faza monitoringu: transmisja i wykrywanie kolizji

  • 5: Sprawdzenie, czy wystąpiła kolizja – host porównuje sygnał wysyłany z tym obecnym na medium.
    • TAK: przejdź do kroku 9 i poinformuj sieć o kolizji.
    • NIE: przejdź do kroku 6 i kontynuuj transmisję.
  • 6: Kontynuacja transmisji – ramka jest dalej nadawana, dopóki nie pojawi się kolizja.
  • 7: Sprawdzenie czy transmisja dobiegła końca.
    • NIE: wróć do kroku 6 i kontynuuj nadawanie.
    • TAK: przejdź do kroku 8.
  • 8: Zakończenie transmisji – ramka została wysłana poprawnie.

Faza obsługi kolizji

  • 9: Rozgłoszenie sygnału zakłócającego – wysyłany jest 32-bitowy sygnał Jam, aby każda stacja wykryła kolizję.
  • 10: Zwiększenie liczby prób – aktualizacja licznika kolizji dla danej ramki.
  • 11: Sprawdzenie czy zbyt wiele kolizji wystąpiło.
    • NIE: przejdź do kroku 13, aby wyznaczyć czas oczekiwania i ponowić próbę.
    • TAK: przejdź do kroku 12 – transmisja tej ramki zostaje przerwana.
  • 12: Zbyt wiele kolizji, przerwanie transmisji – ramka zostaje odrzucona po przekroczeniu limitu prób.

Faza wycofania i ponownej próby

  • 13: Obliczenie czasu oczekiwania – stacja losuje opóźnienie zgodnie z algorytmem binarnego wykładniczego wycofania.
  • 14: Oczekiwanie przez określony czas – po upływie opóźnienia host wraca do monitorowania medium (krok 2) i cały proces zaczyna się od nowa.

Dlaczego Minimalny Rozmiar Ramki jest Kluczowy?

Krytycznym i często niezrozumianym elementem CSMA/CD jest powód istnienia minimalnego rozmiaru ramki Ethernet wynoszącego 64 bajty. Zasada ta jest bezpośrednio związana z zapewnieniem, że Wykrywanie Kolizji działa niezawodnie w całym segmencie sieci.

Wyobraźmy sobie najgorszy scenariusz: dwa urządzenia, A i B, znajdują się na przeciwnych końcach najdłuższego możliwego segmentu kabla.

Diagram ilustrujący proces kolizji

Problem polega na „wyścigu” z czasem. Aby CSMA/CD zadziałało, stacja musi nadal nadawać, gdy sygnał kolizji (jej „echo” z najdalszego punktu sieci) do niej powróci. Jeśli stacja zakończy wysyłanie bardzo małej ramki zanim sygnał kolizji zdąży wrócić, błędnie uzna transmisję za udaną i nie dokona retransmisji, co spowoduje utratę danych.

Matematyka Stojąca za Zasadą

  • Opóźnienie Propagacji (τ)(\tau): Jest to czas potrzebny na podróż sygnału z jednego końca kabla na drugi.
  • Czas Szczeliny (Slot Time): Najgorszy czas na wykrycie kolizji to czas podróży w obie strony: czas potrzebny na dotarcie sygnału na daleki koniec kabla i powrót wynikowego sygnału kolizji. To okno czasowe jest zdefiniowane jako i jest nieco dłuższy niż 2τ2\tau, aby uwzględnić elektronikę. Dla Ethernetu 10 Mb/s czas szczeliny jest znormalizowany do 51,2 µs.
  • Obliczenia: Aby zapewnić, że stacja nadal nadaje, gdy sygnał kolizji dotrze, czas potrzebny na nadanie najmniejszej możliwej ramki musi być większy lub równy czasowi szczeliny.

Przykład: Ethernet 10 Mb/s

Minimalny Rozmiar Ramki=Przepływnosˊcˊ Bitowa×Czas Szczeliny\text{Minimalny Rozmiar Ramki} = \text{Przepływność Bitowa} \times \text{Czas Szczeliny}
Minimalny Rozmiar Ramki=10,000,000 bit/s×51.2×106 s\text{Minimalny Rozmiar Ramki} = 10,000,000 \text{ bit/s} \times 51.2 \times 10^{-6} \text{ s}
Minimalny Rozmiar Ramki=512 bitoˊw\text{Minimalny Rozmiar Ramki} = 512 \text{ bitów}

Ponieważ 8 bitów tworzy 1 bajt, 512 bitoˊw/8 bitoˊw/bajt=64 bajty512 \text{ bitów} / 8 \text{ bitów/bajt} = 64 \text{ bajty}. To dlatego najmniejsza ramka Ethernet musi mieć 64 bajty. Ta zasada gwarantuje, że nawet w najgorszym przypadku kolizja zawsze zostanie wykryta. Wraz ze wzrostem prędkości sieci (np. do 1 Gb/s), zasada ta wymagałaby albo znacznie większych minimalnych rozmiarów ramek, albo znacznie mniejszych średnic sieci. W praktyce, pojawienie się przełączników i komunikacji w pełnym dupleksie w dużej mierze unieważniło ten problem w nowoczesnych sieciach.

Zmierzch CSMA/CD w Nowoczesnych Sieciach

CSMA/CD było genialnym i solidnym rozwiązaniem na miarę ograniczeń technologicznych swoich czasów. Stanowiło fundament wczesnego Ethernetu i pozwoliło na tworzenie prostych, tanich sieci. Jednak jego znaczenie w nowoczesnych sieciach jest znacznie mniejsze.

Kluczowym czynnikiem jego zmierzchu było wynalezienie i powszechne wdrożenie przełącznika sieciowego (switcha). W przeciwieństwie do huba, który tworzy jedną domenę kolizyjną, przełącznik inteligentnie przesyła ramki tylko do portu podłączonego do urządzenia docelowego. Tworzy to oddzielny, dwuurządzeniowy mikrosegment dla każdego połączenia.

To, w połączeniu z komunikacją w pełnym dupleksie (gdzie urządzenia mogą jednocześnie wysyłać i odbierać na oddzielnych parach przewodów), skutecznie eliminuje możliwość kolizji na łączach między przełącznikiem a urządzeniem końcowym. Bez szans na kolizję, nie ma potrzeby Wykrywania Kolizji, a cały mechanizm CSMA/CD może być wyłączony, pozwalając urządzeniom na nadawanie, gdy tylko mają dane, co prowadzi do znacznie wyższej wydajności.

Dzisiaj CSMA/CD pozostaje ważnym pojęciem historycznym i może być nadal aktywne w łączach półdupleksowych (np. na starszych hubach lub niektórych łączach bezprzewodowych), ale nie jest już podstawową metodą dostępu do medium w zdecydowanej większości przewodowych sieci Ethernet.

    CSMA/CD | Teleinf Edu