Routowanie datagramów IP

Materiały edukacyjne z informatyki

Proces wysyłania danych z hosta A do B w obrębie tej samej sieci przebiega następująco:

  1. Host A uznaje na podst. adresu IP hosta B, że należy on do tej samej sieci;
  2. Host A wysyła rozgłoszeniowy pakiet ARP z zapytaniem o adres MAC hosta B;
  3. Host B za pomocą pakietu ARP podaje hostowi A swój adres MAC;
  4. Host A uzupełnia swoją tablicę translacji ARP o adres MAC hosta B;
  5. Host A wysyła datagram z danymi do hosta B.

Trasowanie danych z hosta A z sieci A do hosta B znajdującego się w innej sieci B za pomocą routera C (router zwany bramką (gateway) to urządzenie (często komputer) zapewniający łączność między różnymi sieciami, posiada co najmniej dwa interfejsy sieciowe):

  1. Host A uznaje na podst. adresu IP hosta B, że nie należy on do tej samej sieci;
  2. Host A rozsyła rozgłoszeniowy pakiet ARP z pytaniem o adres MAC routera C;
  3. Router C za pomocą pakietu ARP podaje hostowi A swój adres MAC;
  4. Host A uzupełnia swoją tablicę translacji ARP o adres MAC routera C;
  5. Host A wysyła datagram z danymi do routera C;
  6. Router C dokonuje trasowania (routingu), tzn. podejmuje decyzję o przekazaniu datagramu interfejsowi podłączonemu do sieci B;
  7. Router C przez interfejs B wysyła rozgłoszeniową ramkę ARP z pytaniem o adres MAC hosta B;
  8. Host B podaje routerowi C swój adres MAC;
  9. Router C uzupełnia swoją tablicę translacji dla interfejsu B o adres MAC hosta B;
  10. Router C wysyła datagram z danymi do hosta B przez interfejs B.

Decyzje dotyczące trasowania podejmowane są na podstawie tablic routowania tworzonych przez administratora sieci bądź przez protokoły routujące. Tablica ta kojarzy ze sobą interfejsy sieciowe routera i osiągalne przez nie sieci. Odwołując się do poprzedniego przykładu tablica routowania hosta A będzie miała nast. postać:

Destinatation
(Cel)
Gateway
(Brama)
Genmask
(Maska sieci)
Flags
(Flagi)
Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

Wiersz trzeci zawiera definicję dla trasy domyślnej dla wszystkich datagramów, których adres przeznaczenia (symbolizowany przez 0.0.0.0, co oznacza wszystkie adresy IP) nie odpowiada poprzednim wpisom.

Tablica routingu routera łączącego dwie sieci o adresach 192.168.1.0/24 i 10.0.0.0/8 może wyglądać tak:

Destinatation
(Cel)
Gateway
(Brama)
Genmask
(Maska sieci)
Flags
(Flagi)
Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth1

Flagi oznaczają: U – dana trasa istnieje i nie sprawia problemów; G - wpis dotyczy bramki; H – wpis dotyczy jednego komputera; D – wpis zmieniony przez protokół ICMP.

Routing w połączeniach tworzących tzw. szkielet (backbone) Internetu odbywa się za pomocą protokołów routingu dynamicznego (m.in. RIP – Routing Information Protocol, BGP – Border Gateway Protocol, EGP – Exterior Gateway Protocol, OSPF – Open Shortest Path First).

NAT

Trasowanie pakietów wychodzących z sieci lokalnej, w której znajduje się wiele komputerów o adresach prywatnych, do internetu poprzez bramę sieciową, która ma przypisany jeden publiczny adres IP, realizowane jest jako tzw. NAT (ang. Network Address Translation). Zazwyczaj podstawową rolą jest tu zamiana prywatnego adresu źródłowego hosta z sieci lokalnej na adres publiczny routera (bramy), dzięki czemu wiele komputerów z sieci prywatnej łączy się z internetem.

Polecenia służące do obsługi tablicy routingu

># route - wyświetla tablicę
# route add -net 127.0.0.0 netmask 255.0.0.0 [dev] lo
#route add -net 192.168.0.0 netmask 255.255.255.0 [dev] eth0
#route add -net 10.0.0.0 netmask 255.0.0.0 [dev] eth1
#route add default gw 10.0.0.1 - konfiguracja tablicy routingu routera z poprzednich przykładów
# echo "1" > /proc/sys/net/ipv4/ip_forward - włączenie routowania w Linuksie

# ip route show - informacje o tablicy routingu
# ip route add 127.0.0.0/8 dev lo scope link
# ip route add 192.168.1.0/24 dev eth0 scope link
# ip route add 10.0.0.0/8 dev eth1 scope link
# ip route add default via 10.0.0.1 dev eth1
# echo "1" > /proc/sys/net/ipv4/ip_forward - konfiguracja i uruchomienie routingu

Routing źródłowy pozwala kierować przesyłaniem pakietów na podstawie adresu źródłowego. Dzięki temu można przekierowywać transmisję z wybranych hostów sieci lokalnej na dowolnie wybrane (różne) dostępne routery.

Na skróty
Kontakt