Routing Multicast

PIM-SM, PIM-DM i IGMP dla efektywnej komunikacji jeden-do-wielu.

Wprowadzenie: Poza Komunikacją Jeden-do-Jednego

Większość naszych codziennych interakcji w internecie opiera się na modelu jeden-do-jednego, czyli unicast. Gdy przeglądasz stronę internetową, Twój komputer wysyła żądanie do jednego serwera, a ten serwer odsyła odpowiedź tylko do Ciebie. To jak wysyłanie prywatnego listu. Jest to wydajne dla większości zadań, ale staje się niewiarygodnie niewydajne w przypadku aplikacji, które muszą wysyłać dokładnie te same dane do wielu osób jednocześnie.

Wyobraź sobie transmisję na żywo ważnego wydarzenia sportowego online. Gdyby dostawca używał komunikacji unicast, jego serwer musiałby tworzyć oddzielną, identyczną kopię strumienia wideo dla każdego widza. Przy milionach widzów wymagałoby to niemożliwej do osiągnięcia mocy serwerów i przepustowości sieci.

Na drugim biegunie znajduje się komunikacja broadcast (rozgłoszeniowa). Broadcast jest jak miejski herold wykrzykujący wiadomość na rynku. Słyszy ją każda osoba w okolicy, niezależnie od tego, czy jest zainteresowana, czy nie. W sieciach pakiet rozgłoszeniowy jest dostarczany do każdego urządzenia w danym segmencie sieci lokalnej. Jest to przydatne w pewnych zadaniach odkrywania, ale skrajnie marnotrawne i zakłócające przy dostarczaniu danych na dużą skalę, ponieważ zalewa sieć i przerywa pracę urządzeniom, które nie potrzebują tych informacji.

Routing multicastowy to eleganckie rozwiązanie, które znajduje się pomiędzy tymi dwiema skrajnościami. Zapewnia wydajną i skalowalną komunikację jeden-do-wielu i wielu-do-wielu. Analogią dla multicastu nie jest prywatny list czy miejski herold, ale prenumerata czasopisma. Wydawca wysyła tylko jedną kopię czasopisma, a poczta inteligentnie powiela ją wzdłuż tras dostawy, tak aby egzemplarz trafił tylko do skrzynek pocztowych tych, którzy go prenumerują. Wszyscy inni na tej ulicy nie są niepokojeni. To jest podstawowa zasada routingu multicastowego.

Podstawowe Pojęcia Multicastowe

Aby zrozumieć, jak działa multicast, musimy zdefiniować jego kluczowe elementy składowe.

  • Grupa Multicastowa: Jest to zbiór odbiorców zainteresowanych określonym strumieniem danych. W naszej analogii z czasopismem, grupą byliby wszyscy prenumeratorzy "Wiedzy i Życia". Każdy może dołączyć do grupy lub ją opuścić w dowolnym momencie.
  • Adres Grupy Multicastowej: Każda grupa multicastowa jest identyfikowana przez jeden, unikalny adres IP. Specjalny zakres adresów IP, znany jako , jest do tego celu zarezerwowany. Zakres ten to od 224.0.0.0224.0.0.0 do 239.255.255.255239.255.255.255. Gdy źródło wysyła pakiet na adres grupy multicastowej, zadaniem sieci jest dostarczenie tego pakietu do wszystkich zapisanych członków grupy.
  • Drzewo Dystrybucyjne: Sieć buduje ścieżkę dostawy od źródła danych do wszystkich odbiorców. Aby była wydajna, ścieżka ta musi mieć strukturę drzewa wolnego od pętli. Pakiet jest wysyłany raz w dół każdej gałęzi drzewa, a routery sieciowe automatycznie powielają pakiet w każdym punkcie, w którym drzewo rozgałęzia się w wielu kierunkach.

IGMP: Jak Odbiorcy Subskrybują Grupę

Pierwszym problemem do rozwiązania jest: skąd lokalny router wie, że komputer w jego sieci chce dołączyć do grupy multicastowej? Router nie potrafi magicznie czytać w myślach użytkownika, gdy ten klika "play" przy strumieniu wideo. Protokół, który zarządza tym lokalnym członkostwem w grupie, to Internet Group Management Protocol (IGMP).

IGMP działa tylko między hostem (np. Twoim komputerem) a jego bezpośrednio podłączonym routerem ostatniego przeskoku.

Rozmowa IGMP

  1. Router Pyta: Okresowo, router wysyła komunikat IGMP Membership Query (Zapytanie o członkostwo) na specjalny adres (224.0.0.1224.0.0.1, adres multicastowy wszystkich hostów) w swojej sieci lokalnej. To tak, jakby router pytał: „Czy ktokolwiek na tej ulicy jest jeszcze zainteresowany otrzymywaniem jakichkolwiek czasopism?”
  2. Hosty Odpowiadają: Kiedy aplikacja na hoście chce dołączyć do grupy multicastowej (np. zaczynasz oglądać telewizję internetową na kanale 239.1.1.5239.1.1.5), system operacyjny hosta wysyła komunikat IGMP Membership Report (Raport o członkostwie, zwany też komunikatem Join) dla tego adresu grupowego. To jest jak podniesienie ręki przez hosta i powiedzenie: „Tak, proszę dostarczać pocztę dla grupy 239.1.1.5239.1.1.5 na ten adres!” Host wyśle również raport w odpowiedzi na okresowe zapytanie routera.
  3. Router Słucha: Router utrzymuje listę grup multicastowych, które mają co najmniej jednego aktywnego członka w jego sieci lokalnej. Dopóki otrzymuje raporty dla danej grupy, wie, że musi kontynuować dostarczanie dla niej ruchu.

Wersje IGMP i Opuszczanie Grupy

Protokół IGMP ewoluował, aby stać się bardziej wydajnym:

  • IGMPv1: Wersja oryginalna. Nie miała jawnego komunikatu o opuszczeniu grupy. Kiedy host chciał opuścić grupę, po prostu przestawał wysyłać raporty. Router musiał odczekać pewien czas (kilka minut), zanim założył, że nikt już nie jest zainteresowany, co było powolne.
  • IGMPv2: Znaczące ulepszenie, które wprowadziło jawny komunikat Leave Group. Teraz, gdy użytkownik zmienia kanał, jego host może natychmiast poinformować router: „Nie jestem już zainteresowany grupą 239.1.1.5239.1.1.5.” Pozwala to routerowi znacznie szybciej przestać przekazywać niepotrzebny ruch. Wprowadzono także mechanizm wyboru queriera w sieciach z wieloma routerami.
  • IGMPv3: Najbardziej zaawansowana wersja. Dodała wsparcie dla Source-Specific Multicast (SSM). Host może teraz żądać ruchu nie tylko dla grupy, ale dla grupy z określonego adresu IP źródła. "Chcę strumień wideo dla grupy 239.1.1.5239.1.1.5 tylko, jeśli pochodzi z serwera o adresie 198.51.100.10198.51.100.10." Zwiększa to bezpieczeństwo i wydajność.

PIM: Jak Routery Budują Drzewo Dystrybucyjne

IGMP rozwiązuje problem lokalny. Teraz router wie, że ktoś na jego ulicy chce prenumeraty. Ale jak router ma zdobyć czasopismo od wydawcy, który może znajdować się setki lub tysiące kilometrów dalej, przez internet? To jest zadanie prawdziwego protokołu routingu multicastowego. Najpowszechniej używanym jest Protocol Independent Multicast (PIM).

Część nazwy "Niezależny od Protokołu" jest ważna. PIM nie ma własnej metryki do wyboru ścieżek. Zamiast tego wykorzystuje istniejącą , która została już zbudowana przez IGP, jak OSPF, lub przez trasę statyczną. PIM występuje w dwóch głównych odmianach, czyli trybach, które reprezentują dwie zupełnie różne strategie budowy drzewa dystrybucyjnego.

PIM Dense Mode (PIM-DM): Metoda "Zalej i Przytnij"

Tryb gęsty działa przy założeniu, że członkowie grupy są gęsto rozmieszczeni w sieci: co oznacza, że prawie wszyscy są zainteresowani ruchem multicastowym. Dlatego używa prostego modelu "push" (pchania).

Analogia: Wąż strażacki. PIM Dense Mode jest jak strażak gaszący pożar. Na początku leje wodę wszędzie, zalewając cały obszar. Następnie ludzie, którzy się nie palą, krzyczą: "Przestań mnie polewać!". Strażak przestaje wtedy lać w ich kierunku.

Jak Działa PIM-DM

  1. Początkowe Zalewanie: Kiedy źródło zaczyna wysyłać ruch multicastowy, jego router pierwszego przeskoku początkowo zalewa tym ruchem wszystkie swoje interfejsy z włączonym PIM. Routery, które otrzymują ten ruch, kontynuują jego zalewanie w dół strumienia. Ruch jest agresywnie pchany przez całą sieć.
  2. Komunikaty Prune: Router, który otrzymuje zalany ruch, sprawdza, czy go potrzebuje. Jeśli nie ma żadnych sąsiadów w dole strumienia, którzy chcą tego ruchu (tzn. nie otrzymał żadnych raportów IGMP ani złączeń PIM dla tej grupy), i nie ma bezpośrednio podłączonych hostów, które go chcą, wysyła komunikat Prune (Przytnij) w górę strumienia do routera, który wysłał mu ruch.
  3. Budowanie Drzewa: Ten komunikat Prune mówi routerowi nadrzędnemu: "Możesz przestać wysyłać mi ten ruch." Router nadrzędny następnie "przycina" ten interfejs ze swojego drzewa dystrybucyjnego dla tej grupy. Proces ten trwa, aż pozostaną tylko gałęzie drzewa prowadzące do aktywnych odbiorców. Rezultatem jest optymalne, oparte na źródle drzewo zwane Drzewem Najkrótszej Ścieżki (SPT).
  4. Odświeżanie Stanu: Stan przycięcia nie jest stały. Po upływie czasu (zazwyczaj 3 minuty), przycięte gałęzie automatycznie "odrastają", a ruch jest ponownie na krótko zalewany. Pozwala to nowym członkom na dołączenie do strumienia.

Zalety i Wady PIM-DM

  • Zaleta: Prosty w konfiguracji i zapewnia szybkie początkowe dostarczenie dla odbiorców.
  • Wada: Początkowe zalewanie jest niezwykle nieefektywne i nieskalowalne. Marnuje znaczną ilość przepustowości w całej sieci, zwłaszcza jeśli jest bardzo niewielu odbiorców. Z tego powodu tryb gęsty jest rzadko używany w nowoczesnych sieciach i nadaje się tylko do małych, zamkniętych środowisk, w których oczekuje się, że większość urządzeń będzie odbiorcami multicastu.

PIM Sparse Mode (PIM-SM): Metoda "Na Żądanie"

Tryb rzadki jest całkowitym przeciwieństwem trybu gęstego. Działa przy założeniu, że członkowie grupy są rzadko rozmieszczeni: co oznacza, że tylko niewielka część potencjalnych odbiorców jest zainteresowana danym strumieniem multicastowym. Tak jest w przypadku większości aplikacji w Internecie. PIM-SM używa więc inicjowanego przez odbiorcę modelu "pull" (ciągnięcia).

Analogia: Centralna Poczta. PIM Sparse Mode działa jak wysoce zorganizowana usługa pocztowa. Ruch nie jest po prostu zalewany wszędzie. Zamiast tego zainteresowani odbiorcy (prenumeratorzy) wysyłają prośbę do centralnego punktu spotkań (Poczty). Nadawca (wydawca) również wysyła jedną kopię swoich danych do tego centralnego punktu. Poczta jest następnie odpowiedzialna za połączenie obu stron i zapewnienie dostawy tylko tym, którzy o nią poprosili.

Punkt Spotkań (Rendezvous Point - RP)

Sercem PIM-SM jest specjalny router zwany Punktem Spotkań (RP). RP działa jako początkowy punkt zborny dla grupy multicastowej. Jego adres musi być znany wszystkim routerom w domenie PIM.

Jak Działa PIM-SM

  1. Odbiorca Dołącza: Host wysyła Raport IGMP, aby dołączyć do grupy. Jego lokalny router odbiera to i, znając adres RP, wysyła komunikat PIM Join w kierunku RP. Ten komunikat podróżuje od przeskoku do przeskoku, budując gałąź drzewa dystrybucyjnego, które łączy odbiorcę z RP. To początkowe drzewo nazywa się Drzewem Współdzielonym (*,G).
  2. Źródło Wysyła Dane: Źródło zaczyna wysyłać pakiety multicastowe. Jego lokalny router przechwytuje te pakiety. Enkapsuluje kilka pierwszych pakietów multicastowych w specjalne komunikaty unicastowe Register i wysyła je bezpośrednio do RP. To informuje RP, że istnieje aktywne źródło dla grupy.
  3. RP Przekazuje Ruch: RP otrzymuje dane od źródła. Wie teraz, że jest co najmniej jeden aktywny odbiorca (z komunikatu Join) i ma dane od źródła (z komunikatu Register). RP zaczyna przekazywać ruch multicastowy w dół Drzewa Współdzielonego w kierunku odbiorców. W tym momencie ruch płynie, ale odbywa się potencjalnie nieoptymalną ścieżką przez RP.
  4. Przełączenie na Drzewo Najkrótszej Ścieżki (SPT): Gdy tylko lokalny router odbiorcy zacznie otrzymywać ruch od RP, dowiaduje się z nagłówków pakietów o prawdziwym adresie IP oryginalnego źródła. Teraz może użyć własnej tablicy routingu unicastowego, aby określić najbardziej bezpośrednią ścieżkę do źródła. Wysyła on nowy komunikat PIM Join bezpośrednio w kierunku źródła. To buduje drugą, optymalną gałąź drzewa, Drzewo Najkrótszej Ścieżki (S,G).
  5. Przycinanie Drzewa Współdzielonego: Gdy ruch zacznie napływać przez nową, optymalną ścieżkę SPT, router odbiorcy wysyła komunikat Prune z powrotem w kierunku RP, aby zatrzymać zduplikowany ruch z drzewa współdzielonego. Nieefektywna ścieżka przez RP jest usuwana, a ruch płynie teraz najbardziej wydajną trasą.

Zalety i Wady PIM-SM

  • Zaleta: Wysoce skalowalny i wydajny. Żaden ruch nie jest przekazywany, jeśli nie zostanie jawnie zażądany. Jest to de facto standard dla multicastu w Internecie i dużych sieciach korporacyjnych.
  • Wada: Bardziej złożony w konfiguracji i zarządzaniu z powodu konieczności posiadania RP. Może występować nieco większe opóźnienie dla pierwszych pakietów, ponieważ muszą one przejść przez RP przed przełączeniem na SPT.

Sprawdzanie Ścieżki Powrotnej (RPF): Test Poczytalności

Krytycznym mechanizmem używanym przez wszystkie protokoły routingu multicastowego do zapobiegania pętlom i duplikatom pakietów jest Sprawdzanie Ścieżki Powrotnej (Reverse Path Forwarding - RPF).

Analogia: Sprawdzanie Adresu Zwrotnego. Kiedy otrzymujesz list, możesz spojrzeć na adres nadawcy. RPF jest jak zadanie prostego pytania: „Gdybym chciał wysłać odpowiedź do tego nadawcy, czy użyłbym tej samej drogi, którą właśnie przybył ten list?” Jeśli odpowiedź brzmi tak, list jest prawdopodobnie legalny. Jeśli odpowiedź brzmi nie (np. list z Twojego banku w Nowym Jorku dotarł lokalną, tylną uliczką), coś jest nie tak.

Sprawdzenie RPF to prosta, ale skuteczna reguła: gdy router otrzymuje pakiet multicastowy, patrzy na adres IP źródła pakietu. Następnie wykonuje wyszukiwanie w swojej zwykłej tablicy routingu unicastowego, aby zobaczyć, którego interfejsu użyłby, aby wysłać pakiet do tego źródła. Jeśli pakiet multicastowy dotarł na ten sam interfejs, sprawdzenie RPF przechodzi pomyślnie, a pakiet jest akceptowany i przekazywany dalej. Jeśli pakiet dotarł na jakikolwiek inny interfejs, sprawdzenie RPF kończy się niepowodzeniem, a pakiet jest odrzucany jako prawdopodobny duplikat lub część pętli routingu.

    Routing Multicast | Teleinf Edu