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

Router vs. Switch (cz.2)

10.10.2011 01:01, aktualizacja: 08.12.2011 20:05

Po dość długiej przerwie kontynuuje wpis. Praca i przygotowania do CCNP pochłaniają mi tyle czasu, że ciężko zagospodarować coś na bloga.

Dawno dawno temu...

W poprzednim wpisie rozpracowaliśmy sobie router. Zgodnie z obietnicą teraz przyszła kolej na jego kolegę czyli switch. Aby temat omówić dokładnie zahaczymy lekko o zamierzchłe czasy. Switch jest urządzeniem , które zastąpiło hub. Zastąpiło je ponieważ ów hub działał tylko w warstwie 1. Oznacza to, że urządzenie otrzymując ramkę powielało ją i przesyłało każdym portem jakie tylko miało do każdego podłączonego urządzenia bez ingerencji w jej strukturę (ramki). Jedynym portem, przez który ramka nie była wysyłana to port, z którego była odebrana. Każdy komputer wpięty do huba musiał ramkę odebrać i sprawdzić czy jest do niego adresowana, a co za tym idzie każdy komputer słyszał wszystko co działo się w sieci. Teoretycznie komputer przetwarzał ramkę do 2 warstwy i jeśli okazało się, że nie jest do niego adresowana wtedy ramkę odrzucał. W praktyce każdy mógł (i dalej może) sobie podmienić MAC i IP komputera i podsłuchać komunikację. Dziś ciężko już o hub w sieci, aczkolwiek zdarzają się jeszcze jakieś schowane pod biurkiem u niczego nieświadomych użytkowników.

Model OSI po raz kolejny i nie ostatni

Jak widać wszystko się kręci wokół warstw. Tekst traktuje o switchach więc musimy poznać trochę warstwę 2 czyli warstwę dostępu do sieci. Z ową warstwą związane są adresy MAC (Media Access Control - angielska nazwa 2 warstwy) czyli adresy fizyczne urządzeń. Są to adresy urządzeń, na które teoretycznie nie mamy wpływu. Teoretycznie, ponieważ w praktyce możemy modyfikować owe adresy, ale nie o tym tekst. MAC adres składa się z 48 bitów, przedstawionych heksadecymalnie. Każdy bajt jest zazwyczaj oddzielony dwukropkiem.

Przykład MAC adresu: 00:1A:E8:DA:3D:45

MAC adresy urządzeń są przydzielane im przez producentów. Producenta da się rozpoznać po pierwszych 24 bitach. Przykładowo adresy zaczynające się od 00:1A:E8 to adresy należące do urządzeń firmy Siemens. Każdy producent może sobie wykupić/wystąpić (sam do końca nie wiem, oświećcie mnie roszę w komentarzach) o daną pule, po której będą rozpoznawane jego urządzenia, a jeśli chcesz sprawdzić swojego producenta karty sieciowej to zapraszam tutaj. Ramka w 2 warstwie posiada w swoim nagłówku informację o źródłowym i docelowym adresie MAC. Podobnie jak w 3 warstwie gdzie mieliśmy źródłowy i docelowy adres IP.

Switch - jak to działa?

Przewaga switcha nad hubem polega na tym, że zaczął on podejmować decyzję gdzie przesłać pakiet na podstawie docelowego MAC adresu ramki. Switch otrzymując ramkę sprawdza jej adres MAC i wysyła na odpowiedni port. Tylko teraz pytanie: na który? W przypadku routera mieliśmy tablice routingu, natomiast w przypadku switcha mamy do czynienia z tablicą CAM (Content Addressable Memory). W tablicy CAM switch przechowuje informacje o tym, na którym porcie znajduje się dany MAC adres. Ma ona prostszą budowę od tablicy routingu ponieważ są w niej odwzorowane tylko MAC adresy na porty do których należą. Przykładowo:

0012.80b6.4cd8 Port 1
 0012.80b6.4cd9 Port 2
 0014.6915.4100 Port 3 
 0018.b921.9200 Port 4
 0018.b921.9278 Port 5
 0018.b974.528f  Port 6
 0019.0617.660f  Port 7
 0019.0617.6610 Port 8

Informacje w tablicy CAM są umieszczane w niej w sposób dynamiczny. Po wpięciu urządzenia w port przełącznika, urządzenie zaczyna wysyłać ramki. W każdej ramce umieszczona zostaje informacja o źródłowym i docelowym adresie MAC. Przełącznik zapamiętuje sobie w tablicy CAM informacje o źródłowym adresie MAC wraz z informacją, na którym porcie ów MAC się odezwał. Po pierwszym uruchomieniu przełącznika tablica CAM jest pusta. teraz pytanie: skoro jest pusta, a na jej podstawie podejmowane są decyzje gdzie przesłać ramkę, to skąd przełącznik ma wiedzieć gdzie ta ramkę wysłać? Przełącznik w takim przypadku roześle ramkę na wszystkie aktywne porty z wyjątkiem portu, na którym ramka została odebrana. Jako adres docelowy zostanie podany adres MAC urządzenia, z którym host chce się komunikować. Jeśli w sieci istnieje host z podanym MAC adresem to odpowie on na żądanie, w przeciwnym wypadku nic się nie stanie. Jeśli urządzenie odpowie, wtedy to przełącznik przy okazji nauczy się nowego adresu MAC wraz z portem, na którym dane urządzenie odpowiedziało. Ruch wygenerowany przez switch w tym przypadku nazywa się unknown unicast. Aby ułatwić posłużę się przykładem. Poniżej mamy taką oto topologię:

390601

4 komputery zostały podłączone do switcha. Zakładamy, że PC1 zna adres MAC należący do PC2. Wysyła on ramkę do PC2 z adresem źródłowym 00:00:00:00:00:0A i docelowym 00:00:00:00:00:0B. Ramka idzie na port switcha, a ten nie ma żadnej informacji na temat adresu 00:00:00:00:00:0B. Powiela zatem ramkę na każdym porcie, oprócz tego na którym ją odebrał. PC4 odbiera ramkę i sprawdza adres docelowy. Nie zgadza mu się, zatem porzuca ramkę. PC3 robi to samo. PC2 odbiera ramkę, sprawdza adres docelowy i odpowiada na nią, ponieważ jest kierowana do niego. Teraz ramka wracając zostawia po sobie ślad na porcie do którego komputer został wpięty. Tym śladem jest wpis w tablicy CAM, który mówi że na tym porcie jest wpięte urządzenie 00:00:00:00:00:0B. Od teraz kiedy te 2 urządzenia będą chciały się komunikować, switch wysle ramkę bezpośrednio do 00:00:00:00:00:0B, ponieważ będzie widział o nim informację w tablicy CAM.

Podsumowując

Aby komunikacja przebiegała prawidłowo urządzenia potrzebują też adresów IP. Ponadto aby komunikacja przebiegała bez routera jedynie z wykorzystaniem switcha to muszą być to adresy z jednej podsieci. Zaletą switcha nad routerem jest na pewno jego prędkość, gdyż ruch jest przetwarzany sprzętowo, a nie software'owo jak w przypadku routera.

To tyle pokrótce o switchu. Temat jest bardzo rozległy i tutaj mamy naprawdę bardzo krótkie podstawy.

Czekam na baty w komentarzach bo przyznam się, że ciężko było mi ten rozległy temat zawrzeć w tak krótkim tekście :)

Wybrane dla Ciebie
Komentarze (8)