Blog (3)
Komentarze (44)
Recenzje (0)
@silvestrRouter vs. Switch (cz.1)

Router vs. Switch (cz.1)

20.07.2011 21:58, aktualizacja: 08.12.2011 20:05

Tytułem bardzo krótkiego wstępu

Na początek polecam artykuł kolegi 997, który opowiada adresacji IP. W zasadzie należy go przeczytać najpierw, ponieważ nie będzie dla was tajemnicą co oznacza np. zapis 20.0.0.0 255.255.255.252, a to dużo ułatwia.

Model OSI

Warto zaznaczyć, w których warstwach tego modelu pracują owe urządzenia. Otóż jeśli myślimy o routerze musimy zapamiętać, że router pracuje w 3 warstwie modelu OSI. Dla osób, które nie mają pojęcia o modelu OSI oznacza to tyle, że router do podejmowania decyzji o tym gdzie przesłać informacje potrzebuje źródłowego i docelowego adresu IP pakietu. W przypadku switcha mówimy o warstwie 2 czyli warstwie łącza danych. A to oznacza, że switch podejmuje decyzje na podstawie adresów MAC zawartych w ramkach. Należy zwrócić tutaj uwagę na fakt, iż w warstwie 3 mówimy o pakietach , a w 2 mówimy o ramkach. Oczywiście nie oznacza to że router pracuje tylko w warstwie 3 i nie wie nic o warstwie 2. Router pracuje w warstwie 1,2 i 3. Switch w 1 i 2. O modelu OSI w planach jest osobny wpis, w którym postaram się przybliżyć trochę temat i wtedy będzie to jaśniejsze.

Router

Jak już wcześniej zostało wspomniane router podejmuje decyzje o tym gdzie przesłać pakiet na podstawie źródłowego i docelowego adresu IP zawartego w nagłówku pakietu. Do tego celu wspomaga się tablicą routingu. Tablica routingu jest dla routera swego rodzaju mapą, na której to ma zapisane wszystkie znane mu trasy. Trasy te mogą być wpisane ręcznie(trasy statyczne) lub router może sam się ich nauczyć (protokoły routingu dynamicznego - o tym też będzie osobny wpis). Router posiada też trasy do sieci bezpośrednio podłączonych do niego. Router w momencie otrzymania pakietu zagląda w jego nagłówek i odczytuje z niego informacje dotyczącą źródła i miejsca docelowego pakietu. Po odczytaniu tej informacji sprawdza w swojej tablicy routingu czy ma w niej informację o trasie do miejsca przeznaczenia pakietu. Jeśli ma taką informację, wtedy to pakiet jest przesyłany dalej. Jak to wygląda w praktyce przeanalizujemy na podstawie poniższej topologii:

390397

Sytuacja jest następująca:

Komputer po prawej stronie chce dostać się do serwera po lewej stronie. Przykładowo jest tam strona WWW. Zatem wygeneruje on zapytanie HTTP z adresem docelowym 192.168.0.20 i adresem źródłowym 10.1.1.1. Pakiet z takimi parametrami idzie do routera R4. Teraz zakładamy że wszystkie routery znają do siebie wszystkie trasy (abstrahując od tego w jaki sposób się o nich dowiedziały - jak już wspomniałem o tym będzie osobny wpis). A zatem router R4 będzie miał następującą tablicę routingu (w dużym uproszczeniu):

Sieć 20.0.0.0 255.255.255.252 < sieć bezpośrednio podłączona
Sieć 30.0.0.0 255.255.255.252 dostępna poprzez R3
Sieć 40.0.0.0 255.255.255.252 dostępna poprzez R3
Sieć 192.168.0.0 255.255.255.0 dostępna poprzez R3
Sieć 10.1.1.0 255.255.255.0 <sieć bezpośrednio podłączona

Żeby trochę ułatwić, poniżej tablica routingu routera R3:

Sieć 20.0.0.0 255.255.255.252 < sieć bezpośrednio podłączona
Sieć 30.0.0.0 255.255.255.252 < sieć bezpośrednio podłączona
Sieć 40.0.0.0 255.255.255.252 dostępna poprzez R2
Sieć 192.168.0.0 255.255.255.0 dostępna poprzez R2
Sieć 10.1.1.0 255.255.255.0 dostępna poprzez R4

W tym momencie router otrzymał pakiet z adresem docelowym 192.168.0.20. Sprawdza swoją tablicę routingu i napotyka w niej wpis:

Sieć 192.168.0.0 255.255.255.0 dostępna poprzez R3

Ten wpis najbardziej pasuje do adresu docelowego umieszczonego w otrzymanym od komputera pakiecie. Zatem pakiet jest przesyłany do routera R3 z adresem docelowym 192.168.0.20 i źródłowym 10.1.1.1. Teraz następny kolega wykonuje tą sama akcje. Odczytuje adres źródłowy i docelowy. Zagląda do tablicy routingu i widzi wpis:

Sieć 192.168.0.0 255.255.255.0 dostępna poprzez R2

A zatem jest to jedyny wpis, który pasuje do adresu docelowego zawartego w otrzymanym pakiecie, co powoduje przesłanie pakietu do routera R2. Ten wykonuje tą samą procedurę i pakiet wędruje do R1, a ten przesyła pakiet do serwera o adresie 192.168.0.20. To oznacza, że pakiet dotarł do celu. W tym momencie wyjaśnia się po co komu ten adres źródłowy w pakiecie. Na jego podstawie serwer wie komu odpowiedzieć na żądanie WWW przesłane do niego. Serwer odczytuje adres IP docelowy i widzi, że pakiet jest kierowany do niego z adresu 10.1.1.1 przez co wie, że musi na ten adres przesłać odpowiedź. I znów jest ta sama procedura. Pakiet idzie do R1, ten zagląda w tablice...itd. Tak pokrótce wygląda komunikacja w warstwie 3 potocznie zwaną L3 (Layer 3).

Pytanie co router zrobi z pakietem o docelowym adresie, którego nie ma w swojej tablicy? Najnormalniej w świecie odrzuci pakiet i zadowolony z siebie będzie dalej stał i ładnie wyglądał (zakładając że nie ma trasy domyślnej - o tym dalej). Nie raczy o tym poinformować nikogo, ponieważ to nie jest jego sprawa. Router pracuje w warstwie 3 i ma nad sobą warstwę 4, która go nie interesuje, a która to poinformuje pozostałe warstwy o zaistniałym problemie. Jest to też główna różnica między routerem a switchem, o czym przekonamy się w kolejnej części traktującej o switchach.

Domowa rzeczywistość

W większości domów stoi już dzisiaj router, którym łączymy się z internetem. Jeśli nie mieszkasz z informatykiem, to twoja topologia na 90% wygląda tak jak ta poniżej:

390411

W rzeczywistości te małe pudełka, sprzedawane w sklepach, to nic innego jak router z wbudowanym kilkuportowym switchem. Jeśli chodzi o tablice routingu takiego urządzenia to ma on 2 trasy. Jedna to trasa do sieci bezpośrednio podłączonej oraz druga trasa domyślna, która mówi routerowi, że każdy pakiet, który jest kierowany do sieci, której nie znasz, kieruj interfejsem x. W rzeczywistości prawie wszystkie pakiety idą tą trasą, ponieważ wszystkie zasoby, które znajdują się w internecie to dla niego sieć zewnętrzna. Interfejs x w naszym przypadku to gniazdko łączące nasz router z operatorem lub urządzeniem operatora. Powoduje to, że nasze małe urządzenie nie musi znać tras do wszystkich sieci w internecie. Tym zajmują się urządzenia operatora.

Trobleshooting naszych małych sieci

Co robić kiedy nam nie działa mała domowa sieć? Proste połączenie to i prosty troubleshooting. Przede wszystkim sprawdź okablowanie:

Czy każdy kabel jest wpięty i czy tam gdzie powinien? Czy nie jest uszkodzony? Czy końcówka jest sprawna? Czy na karcie sieciowej świecą się diody?

Po sprawdzeniu powyższych:

1.

Polecenie ipconfig (w przypadku linuxa ifconfig) czyli sprawdzamy czy mamy przydzielony poprawny adres. Adres musi być z podsieci, do której należy router. Jeśli mamy niepoprawny zmieniamy go ręcznie na poprawny lub wymuszamy ponowne pobranie adresu z DHCP poprzez komendę ipconfig /renew (linux - dhclient eth0) i po przydzieleniu prawidłowego adresu przechodzimy do kroku następnego. Moim zdaniem najlepiej ustawić sobie na sztywno prawidłowy adres i mieć to z głowy.

2.

Ping, czyli puszczamy pinga na bramę i sprawdzamy czy odpowiada. Nie odpowiada? To znaczy że jest problem z routerem. Zawiesił się albo się zawiesił (większość problemów z desktopami). Rozwiązanie? Reset urządzenia poprzez odłączenie z prądu lub pstryczkiem magicznym na routerze opisanym "reset". Puszczamy ping ponownie i jak odpowiada przechodzimy dalej. Jeśli nie to upewniamy się, że nasza karta sieciowa jest sprawna, a router działa prawidłowo.

3.

Puszczamy ping na 8.8.8.8. Jest to adres dns google. W zasadzie może to być każdy inny znany nam adres tylko musimy być pewni że jest to adres, który powinien odpowiadać. Ja puszczam zazwyczaj na 8.8.8.8 lub na adres DNS operatora (jeśli pamiętam) i wtedy wiem na czym stoję jeśli nie dopowiada DNS operatora. W każdym bądź razie brak odpowiedzi z zewnętrznego adresu oznacza, że nie mamy połączenia z operatorem. Jeśli odpowiedz otrzymamy wtedy to oznacza, że do warstwy 3 włącznie nasza sieć działa prawidłowo.

Jeśli zdiagnozowaliśmy już brak połączenia z operatorem nie pozostaje nam nic innego jak po prostu zadzwonić do niego, opisać co zdiagnozowaliśmy i poprosić aby sprawdzili po swojej stronie czy wszystko jest ok. Zazwyczaj rozwiązują problem lub mówią kiedy rozwiążą. Najlepiej gdy jesteśmy na 100% pewni, że u nas wszystko działa jak powinno. Pomocne są w tym przypadku logi urządzenia dotyczące zestawiania połączenia między nami a operatorem, ale czytanie ich to trochę wyższa szkoła jazdy.

Wychodzę z założenia, że linuxiarzom nie muszę troubleshootingu sieci tłumaczyć, bo jak udało wam się odpalić linuxa i na nim pracować to i z siecią sobie poradzicie :) Poza tym o troubleshootingu sieci w linuxie to można osobny wpis wygenerować o długości powyższego.

To by było tyle w kwestii routingu na początek. Dziękuje za poświęcony czas na czytanie. Czekam na pytania i uwagi poniżej.

P.S. W drugiej części będzie vs. Switch.

Wybrane dla Ciebie
Komentarze (15)