r19 05 (15)


Rozdział 19.
Projektowanie trasowania dla sieci

W tym rozdziale:

W rozdziale 18. omówiono podział na podsieci i wydobywanie identyfikatora podsieci z adresu IP i maski podsieci. Teraz zobaczymy, jak można zastosować te mechanizmy. Kilka razy już kładliśmy nacisk na fakt, iż nie da się umieścić nieograniczonej liczby komputerów w jednym segmencie sieci — wobec tego musimy podzielić sieć na mniejsze, łatwiejsze do opanowania fragmenty.

Niniejszy rozdział omawia podstawy trasowania i wyniki dodawania coraz większej liczby segmentów do sieci. Do innych zagadnień omówionych tutaj należą: trasowanie klasowe i bezklasowe, maski podsieci o zmiennej długości i różne metody automatycznej wymiany informacji o trasach pomiędzy różnymi ruterami w sieci, zamiast ręcznej konfiguracji informacji.

Podstawy trasowania

Trasowanie (routing) jest procesem przesyłania informacji z sieci źródłowej do docelowej poprzez dowolne urządzenie, które posiada dwa lub więcej interfejsów sieciowych i stos IP. Inaczej mówiąc, urządzenie „przygląda się” każdemu odebranemu pakietowi i ustala, czy ten pakiet wędruje do sieci, do której dane urządzenie jest przyłączone fizycznie. Jeśli tak, to pakiet zostanie wysłany na dany interfejs lokalny. W przeciwnym razie ruter szuka trasy, której może użyć. Ogólnie mówiąc, ruter sprawdza, czy jeden z ruterów, z którym jest połączony, potrafi przesłać pakiet dalej.

Ten mechanizm jest kamieniem węgielnym trasowania i sieci z wyborem tras: rutery przesyłają pakiet po jednym przeskoku na raz (przeskok taki nazywany jest hopem), aż do osiągnięcia miejsca przeznaczenia. Sam ruter jest bardzo prostym urządzeniem. W rzeczywistości dowolne urządzenie, posiadające dwa lub więcej interfejsów sieciowych i warstwę protokołu IP, można zmusić do trasowania pakietów.

Załóżmy, że sieć została podzielona na dwie części (na potrzeby przykładu wybierzemy prosty podział na podsieci). Pierwsza sieć ma adres 10.10.2.0, zaś druga 10.10.56.0. W obu maska podsieci jest 255.255.255.0 (patrz rysunek 19.1).

Rysunek 19.1.

Prosty przykład sieci

0x01 graphic

Jak widać, dwie sieci są rozdzielone ruterem, który posiada dwa interfejsy sieciowe; po jednym dla każdej sieci: 10.10.2.1 i 10.10.56.1. Gdy host, na przykład 10.10.2.51, próbuje wysłać pakiet do 10.10.2.53, wówczas warstwa internetowa z IP lokalnego hosta i maski podsieci otrzymuje ID sieci 10.10.2.0. Ponieważ host docelowy może mieć inną maskę podsieci, warstwa internetowa używa IP adresata i własnej maski podsieci (jedynej, którą zna) i uzyskuje prawdopodobny ID sieci hosta docelowego. W naszym przykładzie uzyskamy ID sieci 10.10.2.0, zgodny z własnym ID sieci nadawcy. Ponieważ identyfikatory sieci dla nadawcy i odbiorcy są takie same, IP rozpoznaje, że host docelowy jest lokalny, więc za pomocą protokołu ARP (Address Resolution Protocol — protokół rozwiązywania adresu) znajduje adres sprzętowy karty interfejsu sieciowego adresata i wysyła pakiet bezpośrednio do hosta.

Jak dotąd ruter nie brał udziału w transmisji i nie wystąpiło trasowanie. Gdyby adres IP adresata należał do drugiej podsieci, na przykład 10.10.56.52, wówczas ruter zostałby zaangażowany w transmisję. Ponownie IP i maska podsieci lokalnego hosta służą do ekstrakcji ID lokalnej podsieci — 10.10.2.0. Jednakże po nałożeniu lokalnej maski podsieci na IP adresata uzyskany zostanie ID sieci 10.10.56.0. Ten identyfikator nie jest zgodny z lokalnym, wobec czego pakiet trzeba będzie trasować. Proces trasowania zaczyna się w lokalnej stacji roboczej za pomocą tablicy tras.

Tablica tras

Trasowanie w rzeczywistości zaczyna się już w lokalnym komputerze, który posiada specjalną tablicę, zwaną tablicą tras. Jest ona tworzona przy każdym uruchomieniu systemu i służy IP do trasowania pakietów. W przypadku komputera lokalnego tablica tras zwykle zawiera wpisy lokalne i jeden wpis przesyłający cały pozostały ruch do lokalnego rutera. Poniżej przedstawiliśmy przykład tablicy tras, jaka może znajdować się w hoście 10.10.2.51:

Adres sieciowy Maska sieci Adres bramy Interfejs Metryka

0.0.0.0 0.0.0.0 10.10.2.1 10.10.2.51 1

10.10.2.0 255.255.255.0 10.10.2.51 10.10.2.51 1

10.10.2.51 255.255.255.255 127.0.0.1 127.0.0.1 1

10.255.255.255 255.255.255.255 10.10.2.51 10.10.2.51 1

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

224.0.0.0 224.0.0.0 10.10.2.51 10.10.2.51 1

255.255.255.255 255.255.255.255 10.10.2.51 10.10.2.51 1

Na pierwszy rzut oka ta tablica może wyglądać na zagmatwaną, lecz tak naprawdę łatwo ją zrozumieć. Docelowy adres IP jest łączony z maską sieci, aby wydobyć ID sieci. Jeśli uzyskany ID sieci jest zgodny z docelową siecią, to znaleźliśmy trasę i możemy wysłać dane za pomocą lokalnego interfejsu sieciowego, wymienionego w kolumnie Interfejs, pod adres z kolumny Adres bramy.

W tablicy tras pierwszy wpis od góry to 0.0.0.0 zarówno w kolumnie Maska sieci, jak i w docelowym adresie sieciowym. Użycie tej maski z dowolnym adresem IP zawsze da jako sieć docelową 0.0.0.0. Umieszczenie tego wpisu na początku tablicy może wyglądać dziwnie, jednakże tablica tras jest czytana w odwrotnej kolejności (z dołu do góry). W tym przypadku system na początku sprawdza, czy pakiet jest wysłany na globalny adres rozgłoszeniowy (255.255.255.255), następnie sprawdza adres grupowy (224.0.0.0), a na koniec adres pętli zwrotnej (127.0.0.1).

Po sprawdzeniu tych adresów system wymienia adresy dla każdego interfejsu lokalnego (jeśli komputer posiada więcej kart sieciowych, wiersze te będą powtórzone dla każdego interfejsu). Dla każdego lokalnego interfejsu najpierw szuka adresu rozgłoszeniowego podsieci (.255), następnie wszelkich pakietów kierowanych do lokalnego hosta, a na koniec wszystkiego, co wychodzi do lokalnej podsieci. Sprawdzanie lokalnego adresu IP może wydać się nadmiarowe, biorąc pod uwagę, że system już sprawdził, iż pakiet przeznaczony jest dla sieci lokalnej; jednakże system z wieloma kartami sieciowymi wymaga sprawdzania lokalnych interfejsów, aby pakiety odebrane na jednym interfejsie (gdzie zostaną porównane z IP i maską podsieci tego interfejsu) mogły być wysłane z innego interfejsu.

Wpis 0.0.0.0, będący tzw. trasą domyślną (default route), wychwytuje wszystko i pojawia się tylko wtedy, gdy system posiada skonfigurowaną bramę domyślną. Jeśli nie zostanie znaleziona żadna trasa podczas porównywania przez system docelowego adresu IP z każdą maską sieci w tablicy tras, to trasa domyślna posłuży do wysłania pakietu do skonfigurowanego rutera.

Wracając do naszego przykładu (w którym 10.10.2.51 chce skomunikować się z 10.10.56.52), system lokalny używa pokazanej przed chwilą tablicy tras, aby ustalić kolejny przeskok (hop). W tym przypadku zostanie użyta trasa domyślna, a system za pomocą protokołu ARP znajdzie adres sprzętowy karty 10.10.2.1. Pakiet zostanie następnie przesłany do hosta o adresie IP 10.10.2.1, który w naszym przypadku jest ruterem.

Ruter odbierze pakiet i porówna go z adresem IP i maską podsieci lokalnego interfejsu. W tym przypadku ruter porówna pakiet skierowany do 10.10.56.52 z adresem IP 10.10.2.1. za pomocą maski podsieci 255.255.255.0. Podobnie jak przed chwilą, wynik porównania oznacza, że host docelowy jest zdalny (dla danego interfejsu) i zmusi ruter do sprawdzenia swojej tablicy tras.

Adres sieciowy Maska sieci Adres bramy Interfejs Metryka

10.10.2.0 255.255.255.0 10.10.2.1 10.10.2.1 1

10.10.2.1 255.255.255.255 127.0.0.1 127.0.0.1 1

10.255.255.255 255.255.255.255 10.10.2.1 10.10.2.1 1

10.10.56.0 255.255.255.0 10.10.56.1 10.10.56.1 1

10.10.56.1 255.255.255.255 127.0.0.1 127.0.0.1 1

10.255.255.255 255.255.255.255 10.10.56.1 10.10.56.1 1

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

224.0.0.0 224.0.0.0 10.10.2.51 10.10.2.51 1

255.255.255.255 255.255.255.255 10.10.2.51 10.10.2.51 1

W tym przykładzie IP odkryje, że trasa 10.10.56.0 współpracuje z maską 255.255. 255.0. System prześle więc pakiet do bramy 10.10.56.1 (do siebie samego), aby dostarczyć go do 10.10.56.52. Do znalezienia adresu karty sieciowej hosta końcowego posłuży protokół ARP i pakiet zostanie dostarczony.

Podsumowując proces: źródłowy host na podstawie swojego adresu IP i maski podsieci oraz docelowego adresu IP ustala, czy adresat jest lokalny. Jeśli tak, pakiet zostaje przesłany bezpośrednio do hosta pod jego adres sprzętowy (określony za pomocą ARP). Jeśli adresat nie jest lokalny, wówczas nadawca wyszukuje w swojej tablicy tras trasę do niego. Jeśli trasa zostanie znaleziona, pakiet będzie wysłany do bramy skonfigurowanej dla tej trasy, na podstawie jej adresu sprzętowego (ponownie ustalonego przez ARP).

Brama odbiera pakiet i w ten sam sposób porównuje adres docelowy ze swoim adresem IP i maską podsieci dla interfejsu, na którym pakiet został odebrany. Jeśli pakiet jest lokalny (co świadczy o wystąpieniu błędu gdzieś po drodze, ponieważ host już dokonał tego samego porównania), pakiet zostaje wysłany do hosta docelowego z wykorzystaniem jego adresu sprzętowego. Jeśli porównanie wykaże, iż adresat jest zdalny (powinien być), do ustalenia kolejnego hopu zostaje wykorzystana tablica tras bramy. Jeśli kolejny hop jest lokalny dla dowolnego z interfejsów bramy, pakiet zostaje przesłany do kolejki dla tego interfejsu i wysłany bezpośrednio do celu za pomocą adresu sprzętowego. Jeśli okaże się, że trasa nie jest lokalna, brama przesyła pakiet dalej. W przypadku braku trasy ruter zwraca do nadawcy pakietu komunikat „upłynął limit czasu żądania”, „host docelowy nie został znaleziony” lub „host docelowy jest nieosiągalny” za pomocą protokołu ICMP (Internet Control Message Protocol).

Budowanie tablicy tras

Czytelnik może zastanawiać się, skąd bierze się tablica tras. Czy jest ładowana z pliku? Czy jest wyliczana? Czy użytkownik musi coś zrobić, aby utworzyć tablicę tras? Odpowiedź na wszystkie trzy pytania jest twierdząca.

Lecz zacznijmy po kolei. W przykładzie używanym w tym podrozdziale trasowanie funkcjonowało, ponieważ ruter był podłączony fizycznie do każdej sieci i mógł dzięki temu budować swoją tablicę tras na podstawie tych sieci. Na rysunku 19.2. przedstawione zostały dwa rutery i trzy sieci, zaś żaden z ruterów nie jest bezpośrednio podłączony do wszystkich trzech sieci. Oznacza to, że ani jeden, ani drugi ruter nie może zbudować tablicy tras zawierającej wszystkie trzy sieci.

Rysunek 19.2.

Przykład rozbudowy prostej sieci

0x01 graphic

Rysunek 19.2 przedstawia dwa rutery, A i B. Ruter A „wie” o sieciach 10.10.2.0 i 10.10.56.0, ponieważ posiada fizyczne połączenie z każdą z nich. Podobnie, ruter B „wie” o sieciach 10.10.56.0 i 10.10.59.0.

Gdy host 10.10.2.50 próbuje skomunikować się z hostem 10.10.59.51, mamy problem. System sprawdza kombinację adresów IP i maski podsieci i ustala, że adresat jest zdalny. Dzięki wpisowi bramy domyślnej (0.0.0.0) w tablicy tras, pakiet zostanie wysłany do skonfigurowanego rutera (A). Ten również sprawdza IP i maskę podsieci na interfejsie, na którym odebrał pakiet i stwierdza, że ma on zostać dostarczony do hosta zdalnego względem tego interfejsu. Następnie sprawdza swoją tablicę tras, a ponieważ zawiera ona jedynie informacje zebrane z lokalnych interfejsów, nie znajdzie trasy. Ruter A nie „wie” nic o sieci 10.10.59.0, ponieważ nie ma z nią fizycznego połączenia. Na skutek tego zwraca komunikat „host docelowy jest nieosiągalny”.

Ruter A potrzebuje jakiejś metody przekazywania pakietu do rutera B. Najprostszym sposobem jest skonfigurowanie rutera A tak, by przesyłał wszelkie pakiety o nieznanych sobie adresach do rutera B — inaczej mówiąc, użycie rutera B jako bramy domyślnej dla rutera A. Wówczas ruter A mógłby użyć trasy domyślnej, aby przesłać pakiet do rutera B (ponieważ nie zna innej trasy). Ruter B „zna” sieć 10.10.59.0, ponieważ jest z nią fizycznie połączony. W wyniku tego ruter B dostarczy pakiet.

Pozostaje jednak pewien problem. Załóżmy, że host 10.10.2.50 wysyła żądanie echa (ping). Pakiet dociera do 10.10.59.1 i host ten zamierza teraz odesłać odpowiedź echa z powrotem do 10.10.2.50. Host dokonuje porównania, odkrywa że adresat jest zdalny, znajduje pierwszą bramę domyślną i wysyła pakiet do rutera B. Ten kontroluje pakiet na lokalnym interfejsie i ustala, że jest zdalny; zgodnie z tym sprawdza tablicę tras i zwraca do 10.10.59.1 komunikat „host docelowy jest nieosiągalny”. Host docelowy nie może zostać osiągnięty, ponieważ ruter B nie „wie” o sieci 10.10.2.0 więcej, niż ruter A wiedział o sieci 10.10.59.0. Wobec tego najlepszym sposobem, by umożliwić ruterowi B przekazanie pakietu do rutera A, jest skonfigurowanie A jako bramy domyślnej w ruterze B. Rozwiązanie to jest łatwe do wykonania, jednakże nie będzie działać, jeśli dodamy jeszcze jedną sieć. Rysunek 19.3 pokazuje potencjalne komplikacje.

Rysunek 19.3.

Dodajemy kolejną sieć

0x01 graphic

Statyczny wybór trasy

Wraz ze wzrostem rozmiarów sieci metoda bramy domyślnej przestaje się sprawdzać. Ponieważ tylko jeden wpis bramy domyślnej ma znaczenie, możemy wprowadzić kilka wpisów — lecz tylko pierwszy, który zostanie znaleziony przez system operacyjny, zostanie użyty, o ile nie jest nieczynny. W tym przypadku możemy poradzić sobie z siecią za pomocą rutera z wieloma interfejsami (na przykład czterema), aby wszystkie sieci były dla niego lokalne; staje się to jednak trudne, gdy musimy połączyć 50 lub 60 podsieci.

Musimy „powiedzieć” ruterom o istnieniu innych sieci, z którymi nie są bezpośrednio połączone. Możemy to uczynić, dodając statyczne trasy do każdego rutera, aby rozpoznawał, gdzie wysłać pakiety przeznaczone dla nieznanych sieci. Jak widać na rysunku 19.3, ruter A „zna” sieci 10.10.2.0 i 10.10.56.0. Możemy dodać informacje o 10.10.59.0 i 10.10.99.0, mówiące ruterowi A, aby wysyłał adresowane do nich pakiety do rutera B. Zasadniczo musimy dodać następujące wiersze do tablicy tras:

Adres sieciowy Maska sieci Adres bramy Interfejs Metryka

10.10.59.0 255.255.255.0 10.10.56.2 10.10.56.1 2

10.10.99.1 255.255.255.0 10.10.56.2 10.10.56.1 2

Jeśli dodamy te wiersze do tabeli tras w ruterze A i odpowiednie trasy w pozostałych dwóch ruterach, informacje będą mogły przepływać przez całą sieć. W małych organizacjach jest to metoda preferowana, ponieważ nie angażuje dodatkowego ruchu w sieci na wzór dynamicznego trasowania. Jedynym problemem jest konieczność przeróbek wszystkich statycznych tras, jeśli konfiguracja sieci ulegnie zmianie.

Dodanie trasy jest w większości systemów operacyjnych prostą czynnością. Praktycznie wszystkie systemy operacyjne używają do tego celu polecenia route. Podstawowe parametry sterujące tego polecenia są następujące:

Aby dodać trasy potrzebne w ruterze A do systemu Windows, należy wpisać:

route add 10.10.59.0 mask 255.255.255.0 10.10.56.2

route add 10.10.99.0 mask 255.255.255.0 10.10.56.2

W systemie Linux polecenia te będą wyglądać następująco:

route -A inet add -net 10.10.59.0 netmask 255.255.255.0 gw 10.10.56.2

route -A inet add -net 10.10.59.0 netmask 255.255.255.0 gw 10.10.56.2

Te polecenia dodają wymagane trasy w komputerze dla używanej właśnie konfiguracji. Jednakże jeśli system zawiesi się i będzie wymagał przeładowania, trasy zostaną utracone. Warto więc zapisać trasy w pliku (w środowisku uniksowym) lub w Rejestrze (w systemach Windows).

Wraz ze wzrostem rozmiarów sieci rośnie też liczba ruterów. Prędzej czy później dojdziemy więc do punktu, w którym ręczne aktualizacje ruterów nie będą możliwe i trzeba będzie znaleźć jakąś metodę automatycznej aktualizacji tablic tras. To zagadnienie zostanie omówione w jednym z kolejnych podpunktów, dotyczącym dynamicznego wyboru tras.

Tworzenie struktury trasowania

Omówiliśmy już podstawy trasowania, więc pora skierować dyskusję na fizyczny rozkład sieci. Typ używanej sieci fizycznej i wymagania dotyczące wydajności, omówione w rozdziale 18., również wchodzą w grę przy tworzeniu sieci. W istocie czynniki te są ściśle ze sobą powiązane.

Maski podsieci, które omówiliśmy w rozdziale 18., będą używane jako podstawowe maski dla klientów w podsieciach. Teraz musimy połączyć ze sobą wszystkie klienty za pomocą wybranego rodzaju sprzętu sieciowego, aby mogły komunikować się ze sobą. Oznacza to planowanie użycia koncentratorów lub przełączników do utworzenia topologii magistrali lub jednostek dostępu do stacji wieloterminalowych (MAU), aby utworzyć pierścień.

Ponieważ większość Czytelników zastosuje Ethernet, który jest topologią magistrali, skoncentrujemy się na tej właśnie topologii. Użytkownicy sieci Token Ring mogą, jak pamiętamy, do segmentu przyłączyć więcej hostów, niż jest w stanie obsłużyć Ethernet. W rozdziale 18. przedstawiliśmy podstawowy wzór do wyliczenia, ile hostów może zostać podłączonych do podsieci.

Łączenie podsieci

Jak połączyć ze sobą podsieci, aby trasowanie nadal funkcjonowało? Narzucającą się metodą (użytą w poprzednich przykładach) jest doczepianie kolejnych podsieci na koniec sieci logicznej (podsieć — ruter — podsieć), aż uzyskamy liczbę podsieci wystarczającą dla liczby posiadanych użytkowników (patrz rysunek 19.4).

Rysunek 19.4.

Szeregowe
łączenie podsieci

0x01 graphic

Ta metoda jest prosta i łatwa do zaimplementowania. Gdy jednak użytkownicy muszą komunikować się z innymi, oddalonymi o kilka hopów, rutery mogą zostać mocno obciążone. Jeśli którykolwiek z nich zawiedzie, może to mieć wpływ na całą sieć, ponieważ struktura nie jest nadmiarowa, a serwery nie są skoncentrowane.

Kolejnym oczywistym rozwiązaniem jest rozmieszczenie wszystkich sieci dookoła centralnego rutera. Równie łatwo wyobrazić sobie taką sieć, a wszystkie hosty powinny być w stanie łatwo komunikować się ze sobą (patrz rysunek 19.5).

Rysunek 19.5.

Podsieci rozmieszczone dookoła
centralnego
rutera

0x01 graphic

Centralny ruter dobrze sprawdza się w małych biurach. W takiej strukturze możemy też łatwo zapewnić nadmiarowość, dodając w centrum drugi ruter. Jedynym problemem jest duża objętość danych, przepływających przez jeden ruter lub parę ruterów. A jeśli nie zastosujemy zapasowego rutera, sieć będzie posiadać pojedynczy punkt awarii.

Struktura z centralnym ruterem to konstrukcja pozwalająca rozbudowywać sieć. Jeśli wyznaczymy jedną z podsieci z rysunku 19.5 do roli „szkieletu”, otrzymamy ruter łączący trzy podsieci z siecią szkieletową. Rozbudowując sieć, przyłączymy kolejny ruter do sieci szkieletowej, a następnie dołączymy podsieci klienckie do tego rutera (patrz rysunek 19.6).

Rysunek 19.6.

Wykorzystanie ruterów
do podłączenia podsieci
klienckich
do sieci
szkieletowej

0x01 graphic

Rysunek 19.6 przedstawia dość typowy projekt, używany w wielu sieciach. Wspólne serwery (na przykład serwer pocztowy) są zwykle przyłączone do sieci szkieletowej, zaś serwery klienckie (serwery plików i drukowania) mogą być przyłączone do podsieci razem z klientami. Awaria pojedynczego rutera nie wpływa na całą sieć i jest dość miejsca na rozwój. Patrząc na rysunek 19.6 przypomnijmy sobie obliczenia z rozdziału 18., gdzie każda z podsieci mogła pomieścić 30 lub 126 komputerów. W dwunastu podsieciach może pracować 360 użytkowników, a maksymalnie 1512. Dodawanie kolejnych użytkowników nie jest trudne; wystarczy dołączyć kolejny ruter i trzy kolejne podsieci lub przyłączyć 4 do 8 podsieci do każdego rutera.

Taka struktura jest bardzo elastyczna; jednakże objętość danych, z jaką może poradzić sobie sieć szkieletowa, jest ograniczona (nawet jeśli jest zbudowana w technice FDDI). Możemy zmniejszyć ten ruch, przenosząc więcej serwerów do podsieci klienckich i zapewniając, by użytkownicy udostępniający sobie nawzajem dane i komunikujący się ze sobą byli podłączeni do jednej podsieci, a przynajmniej do jednego rutera.

Prędzej czy później trzeba będzie jednak przekroczyć limit ruchu sieciowego, z jakim potrafi uporać się pojedyncza sieć szkieletowa. Można to zrobić, dzieląc szkielet na części i konfigurując trasowanie pomiędzy nimi. Prawdopodobnie nasza sieć i tak już posiada więcej szkieletów, ponieważ typowe sieci obejmują więcej niż jedną lokalizację, z osobną siecią szkieletową w każdej lokalizacji.

Maski podsieci o zmiennej długości

W strukturach posiadających jedną sieć szkieletową problemem jest ruch sieciowy. Jeśli wszystkie serwery podłączone są do jednego szkieletu lub użytkownicy intensywnie ze sobą współpracują, sieć szkieletowa będzie porządnie obciążona. Maski podsieci o zmiennej długości (VLSM — Variable Length Subnet Masking), zdefiniowane w RFC 1817, są rozwiązaniem pozwalającym tworzyć kilka poziomów sieci szkieletowej, a co za tym idzie, kilka różnych miejsc, w których dane mogą przechodzić z jednej sieci do drugiej. Implementacja VLS jest jednakże trudna, ponieważ w różnych częściach sieci mamy do czynienia z różnymi maskami podsieci.

Na potrzeby wyjaśnienia tego zagadnienia rozważmy maskę podsieci 255.255.255.224 jako opcjonalną maskę podsieci dla naszych klientów. Oznacza to, że chcemy ograniczyć każdą podsieć do 30 adresów IP, czyli 29 komputerów i interfejsu rutera. Możemy więc do budowania sieci wykorzystać 24-portowe przełączniki. Załóżmy dodatkowo, że stosujemy system Linux na potrzeby niskopoziomowych ruterów, i że każdy z nich będzie obsługiwał cztery karty sieciowe. Wobec tego kolejne podsieci będą miały adresy .0, .32, .64 i .96. Interfejsami ruterów będą przypuszczalnie pierwsze adresy IP z każdego segmentu — .1, .33, .65 i .97. Aby połączyć się z dużą siecią, potrzebne będzie jedno połączenie, więc wykorzystajmy podsieć .0. Rysunek 19.7 pokazuje, jak taki system może wyglądać.

Mamy teraz konfigurację, w której cały ruch do sieci.0, .32, .64 lub .96 będzie musiał przejść do .1. Dodajmy pozostałe oktety, żeby nasze adresy wyglądały bardziej normalnie. Cały ruch do podsieci 10.10.10.0, 10.10.10.32, 10.10.10.54 i 10.10.10.96 musi być kierowany na interfejs 10.10.10.1. Ruter ten następnie prześle do podsieci przeznaczone dla nich dane. Oznacza to jednak, że wszystkie dane dla adresów IP od 10.10.10.1 do

Rysunek 19.7.

Ruter łączący
cztery podsieci

0x01 graphic

10.10.10.127 muszą przejść przez ten ruter. Wprawdzie dla trzech klienckich podsieci maską podsieci musi być 255.255.255.22, lecz dla interfejsu łączącego je z większą siecią możemy użyć w masce sieci 255.255.255.128 lub mniej bitów.

0x01 graphic

W tym rozdziale używamy masek podsieci, lecz Czytelnik może również spotkać się z notacją /liczba_bitów, która jest łatwiejsza do czytania, gdy się już do niej przyzwyczaimy. Na przykład, adres 10.10.10.0 z maską podsieci 255.255.254.0 będzie zapisany jako 10.10.10.0/23.

Wykorzystanie takiego schematu adresowania oznacza, że inny ruter może posiadać adres 10.10.10.129 i obsługiwać ruch dla trzech innych podsieci. W istocie, na rysunku 19.8 widać, że jeśli użyjemy maski podsieci 255.255.254.0, będziemy mogli połączyć ze sobą jeszcze więcej ruterów.

Zbudowaliśmy więc strukturę sieci szkieletowej z własnymi maskami podsieci. Duże osiągnięcie, prawda? No cóż, jeśli przyjrzymy się dokładnie adresom na górze rysunku 19.8, zauważymy, że każda z tych dwunastu sieci może być opisana jako sieć 10.10. 10.0 z maską 255.255.254.0. Oznacza to, że możemy potraktować całą strukturę z rysunku 19.8 jako pojedynczy węzeł i powielić kilka razy, tworząc większą sieć. Rysunek 19.9 przedstawia następny poziom hierarchii.

Stosowanie masek o zmiennej długości wymaga oczywiście więcej pracy podczas planowania, zaczynając od decyzji o maksymalnej liczbie hostów. Jednakże skorzystanie z VLSM niesie ze sobą kilka korzyści: