Sieci Komputerowe, Wykład8, Inicjalizacja Winsock


Routing.

Rutowanie IP (routing, ruting, trasowanie).

Spojrzenie od strony hosta wysyłającego datagram: w przypadku, gdy docelowy host (IP) jest połączony bezpośrednio (połączenie punkt-punkt) lub leży w sieci LAN bezpośrednio dołączonej do hosta, wówczas datagram IP jest wysyłany bezpośrednio do punktu lub sieci. W pozostałych przypadkach host wysyła datagram do domyślnego rutera.

Systemy wielodostępne (w tym różne odmiany Unixa, Windows 2000 Serwer) można skonfigurować tak, by pełniły role ruterów.

W ogólności (zarówno dla zwykłych hostów jak i ruterów) warstwa IP może dostać datagram do przesłania od innego protokołu (warstwy), np. TCP, UDP. Może również otrzymać datagram od warstwy sieciowej.

System operacyjny (moduły realizujące IP) przechowują w pamięci tablicę rutowania. Tablica ta jest przeszukiwania po nadejściu pakietu. Oprogramowanie warstwy IP sprawdza adres przeznaczenia.

W przypadku, gdy jest to jeden z własnych adresów lub adres typu broadcast, wówczas datagram przekazywany jest do oprogramowania odpowiedniego protokołu (protokół ten jest określony w nagłówku IP).

W przeciwnym przypadku (adres docelowy jest adresem „obcym”) pakiet przesyłany jest dalej, zgodnie z algorytmem wykorzystującym tablicę rutowania. Jeśli oprogramowanie realizujące warstwę IP nie jest skonfigurowane do rutowania, wówczas pakiet, który przyjdzie z zewnątrz i zawiera docelowy adres IP „obcy”, zostaje odrzucony (bez generowania jakichkolwiek komunikatów).

Zapis w tablicy rutowania zawiera wiersze o następujących polach:

Adres IP przeznaczenia. Może to być adres hosta lub sieci.

Adres IP rutera następnego przejścia lub adres sieci bezpośrednio przyłączonej.

Znaczniki.

Określenie interfejsu sieciowego, na który ma być przesłany datagram.

Przykładowy wydruk tablicy rutowania z hosta działającego w systemie Unix (Biblia TCP/IP):

svr4 - adres IP 140.252.13.34

svr4% netstat -rn

Routing tables

Destination Gateway Flags Recfnt Use Interface

140.252.13.65 140.252.13.35 UGH 0 0 emd0

127.0.0.1 120.0.0.1 UH 1 0 lo0

default 140.252.13.33 UG 0 0 emd0

140.252.13.32 140.252.13.34 U 4 25043 emd0

Znaczniki:

U Trasa gotowa do wykorzystania (up).

G Trasa prowadzi do kolejnego gatewaya (rutera), czyli trasa jest pośrednia. Jeśli znacznik nie występuje, to znaczy, że host jest dołączony bezpośrednio.

H Trasa prowadzi do hosta (adres przeznaczenia to pełny adres hosta). Jeśli nie występuje, to znaczy, że trasa prowadzi do sieci.

D Trasa została utworzona na podstawie komunikatu przekierowania ICMP.

M Trasa została zmodyfikowana na podstawie komunikatu przekierowania ICMP.

Recfnt (reference count) oznacza liczbę aktywnych połączeń (TCP) na trasie.

Use oznacza liczbę pakietów przesłanych określoną trasą.

Na ogół IP nie zna całej trasy do punktu przeznaczenia. Datagram może być przekazany do rutera, który powinien znać następny fragment trasy.

Typowe działania przy przeszukiwaniu tablicy rutowania:

  1. Poszukiwanie rekordu z IP hosta przeznaczenia.

  2. Poszukiwanie rekordu z IP sieci.

  3. Poszukiwanie rekordu z wpisem „domyślny” (default).

Obecnie rutery muszą uwzględniać adresowanie podsieci.

Jeśli kroki te zakończą się niepowodzeniem, wówczas uznaje się, że datagramu nie da się dostarczyć.

Adres IP przeznaczenia nie ulega po drodze zmianie. Jednak na każdym z łączy może być używany inny nagłówek warstwy łącza, który zawsze zawiera adres łącza właściwy do następnego punktu trasy.

Działanie warstwy IP:

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

Komunikaty ICMP o nieosiągalnym hoście lub nieosiągalnej sieci (host unreachable, network unreachable).

Odpowiedni komunikat ICMP zostaje wysłany przez ruter do nadawcy datagramu w przypadku gdy nie może wysłać datagramu ani przekazać go dalej. Niektóre implementacje TCP/IP wysyłaja komunikat o nieosiągalnej sieci, jeśli adres przeznaczenia nie jest adresem hosta w lokalnej podsieci dostępnej dla rutera. W innych implementacjach wysyłane są tylko komunikaty o nieosiągalnym hoście.

Komunikat taki może pochodzić od rutera, który nie ma wpisów domyślnych (domeny rutowania górnego poziomu).

Komunikaty ICMP o przekierowaniu.

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

Komunikaty ICMP o przekierowaniu pozwalają hostom TCP/IP nic nie „wiedzieć” o rutingu. Hosty mogą zacząć pracę z jedną domyślną trasą i uczyć się topologii sieci (w szczególności informacji o rutowaniu) poprzez otrzymywanie komunikatów ICMP.

Komunikaty ICMP o przekierowaniu powinny być generowane przez rutery, ale korzystać z nich mogą tylko hosty - nie rutery.

Inicjalizacja i zmiany tablicy rutowania w hoście.

  1. Pliki inicjujące (startowe), np. /etc/netstart, /etc/rc.local, /etc/rc.inet, /etc/inet/rc.inet, /etc/defaultrouter. Jest to rutowanie statyczne.

  2. Polecenie route (rutowanie statyczne).

Postać polecenia route w systemie Windows 2000:

ROUTE [-f] [-p] [command [destination]

[MASK netmask] [gateway] [METRIC metric] [IF interface]

-f Clears the routing tables of all gateway entries. If this is

used in conjunction with one of the commands, the tables are

cleared prior to running the command.

-p When used with the ADD command, makes a route persistent across

boots of the system. By default, routes are not preserved

when the system is restarted. Ignored for all other commands,

which always affect the appropriate persistent routes. This

option is not supported in Windows 95.

command One of these:

PRINT Prints a route

ADD Adds a route

DELETE Deletes a route

CHANGE Modifies an existing route

destination Specifies the host.

MASK Specifies that the next parameter is the 'netmask' value.

netmask Specifies a subnet mask value for this route entry.

If not specified, it defaults to 255.255.255.255.

gateway Specifies gateway.

interface the interface number for the specified route.

METRIC specifies the metric, ie. cost for the destination.

All symbolic names used for destination are looked up in the network database

file NETWORKS. The symbolic names for gateway are looked up in the host name

database file HOSTS.

If the command is PRINT or DELETE. Destination or gateway can be a wildcard,

(wildcard is specified as a star '*'), or the gateway argument may be omitted.

If Dest contains a * or ?, it is treated as a shell pattern, and only

matching destination routes are printed. The '*' matches any string,

and '?' matches any one char. Examples: 157.*.1, 157.*, 127.*, *224*.

Diagnostic Notes:

Invalid MASK generates an error, that is when (DEST & MASK) != DEST.

Example> route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1

The route addition failed: The specified mask parameter is invalid.

(Destination & Mask) != Destination.

Examples:

> route PRINT

> route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2

destination^ ^mask ^gateway metric^ ^

Interface^

If IF is not given, it tries to find the best interface for a given

gateway.

> route PRINT

> route PRINT 157* .... Only prints those matching 157*

> route DELETE 157.0.0.0

> route PRINT

W systemach Unixowych składnia może być różna (patrz man route). W niektórych wersjach route nie potrafi wypisać zawartości tablicy rutowania. Należy wówczas użyć polecenia netstat z opcją -r (lub -rn aby widzieć tylko adresy IP bez nazw domenowych).

  1. Komunikaty ICMP router discovery. Po starcie systemu host przesyła komunikat ICMP z prośba o informacje (rozgłoszeniowy - router solicitation). Jeden lub więcej ruterów odpowiada przesyłając komunikat ICMP ogłoszeniowy.

  2. Co pewien czas rutery rozgłaszają komunikaty (ze wszystkich interfejsów obsługujących broadcast i multicast), aby hosty mogły zaktualizować tablice rutowania.

Format komunikatu rogłoszeniowego router solicitation ICMP:

typ (10) - bity 0-7,

kod (0) - bity 8-15,

suma kontrolna - bity 16-31,

nie używane (same zera) - bity 32-63

Format komunikatu ogłoszeniowego router advertisment ICMP:

typ (9) - bity 0-7,

kod (0) - bity 8-15,

suma kontrolna - bity 16-31,

liczba adresów - bity 32-39,

rozmiar obszaru adresów (2) - bity 40-47,

czas życia - bity 48-63,

adres rutera1 - 4 bajty,

poziom preferencji1 - 4 bajty (większe wartości oznaczają rutery bardziej preferowane)

adres rutera2 - 4 bajty,

poziom preferencji2 - 4 bajty

.....

Czas życia określa w sekundach jak długo rozgłaszane adresy należy uznać za ważne. Standardowo domyślny ruter w sieci rozszyła komunikat rozgłoszeniowy co kilka minut z czasem życia do 30 min.

Kiedy interfejs rutera przestaje pracować, wówczas ruter wysyła komunikat rozgłoszeniowy z tego interfejsu z czasem życia 0.

Rutowanie dynamiczne - wymiana informacji między ruterami.

Sposób obsługi rutowania przez warstwę IP nazywa się mechanizmem rutowania. Określenie to dotyczy przeglądania przez jądro tablicy rutowania i podejmowania określonych decyzji, co do przesyłania datagramów IP.

Przez pojęcie polityka rutowania określa się działania demona rutowania (w Unix najczęściej są to demony routed lub gated) podejmowane w celu ustanowienia i bieżącej modyfikacji tablicy rutowania. Polityka rutowania realizowana jest z wykorzystaniem protokołów rutowania.

Internet jest zorganizowany jako grupa tzw. systemów autonomicznych AS, z których każdy jest administrowany przez inną jednostkę. Każdy system autonomiczny może stosować własne protokoły rutowania, zwane wewnętrznymi protokołami rutowania (ang. IGP - interdomain gateway protocol lub IRP - interdomain routing protocol).

Są też tzw. zewnętrzne protokoły rutowania (EGP - exterior gateway protocols), miedzydomenowe protokoły rutowania (interdomain routing protocols) używane między ruterami działającymi w różnych systemach autonomicznych.

Nas będą interesowały protokoły klasy IGP. Będą to: RIP (Routing Information Protocol), RIP2, OSPF (Open Shortest Path First).

RIP (RFC 1058).

Cel protokołu RIP to nie tylko aktualizacja tablic rutowania tak, by znana była ścieżka między dowolnymi komputerami w ramach systemu autonomicznego. Obliczane są ścieżki optymalne (opis algorytmu w RFC 1058). Algorytm wykorzystuje wektor odległości (miary). Tablicca rutowania aktualizowana jest w oparciu o wektory odległości otrzymane od sąsiednich ruterów.

Forma komunikatu RIP.

Kominikaty RIP przesyłane sa w datagramach UDP:

Nagłówek IP (20 bajtów),

nagłówek UDP (8 bajtów),

Komunikat RIP:

polecenie (1-6) bity 0-7,

wersja (1) bity 8-15,

musi być zero bity 16-31,

rodzina adresów (2) bity 32-47,

musi być zero bity 48-63,

adres IP kolejne 32 bity,

musi być zero kolejne 32 bity,

musi być zero kolejne 32 bity,

metryka (1-16) kolejne 32 bity,

... (do 24 tras o formacie takim jak poprzednie 20 bajtów).

Normalna praca demona routed z wykorzystaniem RIP.

  1. Inicjalizacja, wysyłanie przez wszystkie interfejsy zapytania o tablice rutowania innych ruterów. Port przeznaczenia to UDP 520. Pakiet ten ma polecenie nr 1, rodzina adresów ustawiana jest na zero, miara na 16.

  2. Po odebraniu zapytania w zależnosci od jego postaci wysyłana jest albo cała albo część tablicy rutowania. W przypadku pytania o część w odpowiedzi ustawiana jest miara każdego adresu, przy czym jeśli nie uter nie ma trasy do określonego adresu to ustawia miarę na 16 (oznacza „nieskończoność”).

  3. Po odebraniu odpowiedzi mogą być modyfikowane (dodawane, kasowane) rekordy w tablicy rutowania. Stosowany jest specjalny algorytm ustalania tras optymalnych (z najmniejszymi miarami).

  4. Regularne rozgłaszanie swojej tablicy rutowania do sąsiednich ruterów (co 30 sekund).

  5. Ustawianie miary tras, które nie były uaktualniane przez kilka (3) minut na 16.

Miary - dla bezpośrednio dołączonych interfejsów przyjmuje się miarę 1. Miara oznacza liczbę przeskoków.

Przykład obliczania ścieżki między S1 a S3:

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

RIP2 (RFC 1388)

Umieszczone są dodatkowe informacje w polach oznaczonych jako zero w komunikacie RIP: są to 32 bitowa maska podsieci oraz 32 bitowy adres następnego przeskoku (można go w ten sposób wymusić).

RIP2 umożliwia prosta autentykację.

OSPF (RFC 1247).

Jest to tzw. protokół stanu połączenia (w odróżnieniu od RIP, który był protokołem wektora odległości). Protokół stanu połączenia potrafi szybciej wprowadzić zmiany do tablic rutowania po zajściu zmian w sieci.

Posiada on dodatkowe cechy korzystnie wyróżniające go od RIP:

  1. OSPF może liczyć odrębne trasy dla różnych typów usług IP.

  2. Koszt interfejsu (miara) zależy od odległości, przepustowości łącza, czasu podróży pakietów, poziomu niezawodności i wielu innych parametrów.

  3. W przypadku istnienia kilku tras o jednakowym koszcie realizowane jest równoważenie obciążeń (load balancing).

  4. Obsługiwane są maski podsieci (trasa do hosta ma maskę składającą się z samych zer).

Sieci komputerowe wykład 8.

1

demon

rutowania

(routed, gated)

polecenie route

polecenie netstat -r

Wyjście: wyznaczyć ruter kolejnego przeskoku (jeśli to konieczne)

Czy jeden z własnych adresów IP

(lub rozgłoszeniowy)?

ICMP

UDP

TCP

opcje IP

kolejka wejściowa IP

nie

tak

rutowanie źródłowe

przekierowanie ICMP

warstwa IP

tablica

rutowa-nia

uaktualnianie z siąsiednich ruterów

przekazanie, jeśli włączona taka opcja

interfejsy sieciowe

host

ruter 1

ruter 2

1) datagram IP

2) datagram IP

3) przekierowanie ICMP

ruter 1

ruter 2

S1

S2

S3

Do S2 miara równa 1

Do S1 miara równa 1

Do S3 miara równa 1

Do S2 miara równa 1



Wyszukiwarka