Routing. część 3: wewnątrz routera. Sieci komputerowe. Wykład 4. Marcin Bieńkowski

Podobne dokumenty
Routing. część 3: wewnątrz routera. Sieci komputerowe. Wykład 4. Marcin Bieńkowski

Routing. część 3: wewnątrz routera. Sieci komputerowe. Wykład 4. Marcin Bieńkowski

Routing. część 1: adresowanie. Sieci komputerowe. Wykład 2. Marcin Bieńkowski

Sieci komputerowe. Wykład 3: Protokół IP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski. Sieci komputerowe (II UWr) Wykład 3 1 / 25

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe

Warstwa sieciowa. Model OSI Model TCP/IP. Aplikacji. Aplikacji. Prezentacji. Sesji. Transportowa. Transportowa

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Protokoły sieciowe - TCP/IP

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe. Wykład 3: Protokół IP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski. Sieci komputerowe (II UWr) Wykład 3 1 / 24

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

Transport. część 1: niezawodny transport. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Iteracyjny serwer TCP i aplikacja UDP

Przesyłania danych przez protokół TCP/IP

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Rok szkolny 2014/15 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. SIECI KOMPUTEROWE kl. 2c

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

ARP Address Resolution Protocol (RFC 826)

Klient-Serwer Komunikacja przy pomocy gniazd

Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

Adresy w sieciach komputerowych

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła

ZiMSK NAT, PAT, ACL 1

Zarządzanie ruchem w sieci IP. Komunikat ICMP. Internet Control Message Protocol DSRG DSRG. DSRG Warstwa sieciowa DSRG. Protokół sterujący

Wstęp. Sieci komputerowe. Wykład 1. Marcin Bieńkowski

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Programowanie Sieciowe 1

Sieci komputerowe - administracja

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Routing. część 2: tworzenie tablic. Sieci komputerowe. Wykład 3. Marcin Bieńkowski

Routing. część 2: tworzenie tablic. Sieci komputerowe. Wykład 3. Marcin Bieńkowski

Gniazda BSD. komunikacja bezpołączeniowa

Dlaczego? Mało adresów IPv4. Wprowadzenie ulepszeń względem IPv4 NAT CIDR

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

ADRESY PRYWATNE W IPv4

Dr Michał Tanaś(

Wstęp. Sieci komputerowe. Wykład 1. Marcin Bieńkowski

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Plan wykładu. Wyznaczanie tras. Podsieci liczba urządzeń w klasie C. Funkcje warstwy sieciowej

Programowanie Sieciowe 1

Model sieci OSI, protokoły sieciowe, adresy IP

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

SIECI KOMPUTEROWE wykład dla kierunku informatyka semestr 4 i 5

Warstwa sieciowa. mgr inż. Krzysztof Szałajko

Podstawowe pojęcia dotyczące sieci komputerowych

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

TCP/IP formaty ramek, datagramów, pakietów...

Plan i problematyka wykładu. Sieci komputerowe IPv6. Rozwój sieci Internet. Dlaczego IPv6? Przykład zatykania dziur w funkcjonalności IPv4 - NAT

Routing. część 2: tworzenie tablic. Sieci komputerowe. Wykład 3. Marcin Bieńkowski

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 13 Topologie sieci i urządzenia

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Programowanie współbieżne i rozproszone

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców

Internet Protocol v6 - w czym tkwi problem?

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

MODEL OSI A INTERNET

WYŻSZA SZKOŁA ZARZĄDZANIA I MARKETINGU BIAŁYSTOK, ul. Ciepła 40 filia w EŁKU, ul. Grunwaldzka

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Co w sieci piszczy? Programowanie aplikacji sieciowych w C#

Model OSI. mgr inż. Krzysztof Szałajko

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Laboratorium Sieci Komputerowych - 2

Zadanie1: Odszukaj w Wolnej Encyklopedii Wikipedii informacje na temat NAT (ang. Network Address Translation).

Protokoły wspomagające. Mikołaj Leszczuk

polega na opakowaniu danych - w każdej warstwie modelu OSI, kolejno idąc z góry na dół - w konieczne nagłówki/stopki odpowiednich protokołów

router wielu sieci pakietów

Struktura adresu IP v4

Bezpieczeństwo w M875

Laboratorium 6.7.2: Śledzenie pakietów ICMP

Zadania z sieci Rozwiązanie

PROTOKOŁY WARSTWY TRANSPORTOWEJ

Warstwy i funkcje modelu ISO/OSI

Sieci komputerowe Warstwa sieci i warstwa transportowa

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Programowanie sieciowe

Internet Control Message Protocol (ICMP) Łukasz Trzciałkowski

Bazy Danych i Usługi Sieciowe

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Funkcje warstwy sieciowej. Podstawy wyznaczania tras. Dostarczenie pakietu od nadawcy od odbiorcy (RIP, IGRP, OSPF, EGP, BGP)

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013

Komunikacja w sieciach komputerowych

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

Technologie informacyjne - wykład 8 -

Sieci Komputerowe Modele warstwowe sieci

Dr Michał Tanaś(

ZiMSK. Charakterystyka urządzeń sieciowych: Switch, Router, Firewall (v.2012) 1

Sieci komputerowe test

Transkrypt:

Routing część 3: wewnątrz routera Sieci komputerowe Wykład 4 Marcin Bieńkowski

Ale najpierw: piszemy prostą aplikację (gniazda UDP)

Jedna warstwa sieci i globalne adresowanie Każde urządzenie w sieci posługuje się tym samym protokołem warstwy sieci. W Internecie: protokół IP. warstwa aplikacji warstwa transportowa warstwa sieciowa warstwa łącza danych HTTP SMTP DNS NTP TCP IP UDP Ethernet PPP 802.11 (WiFi) MPLS warstwa fizyczna kable miedziane światłowód DSL fale radiowe Każde urządzenie ma unikatowy adres. W Internecie: adresy IP 3

Gniazda Interfejs programistyczny do nadawania i odbierania pakietów Umożliwiają podawanie danych do umieszczenia w datagramach UDP lub segmentach TCP. nagłówek IP nagłówek TCP lub UDP dane zapisywane do gniazda dostęp do niektórych pól za pomocą funkcji gniazd Gniazda surowe: umożliwiają podawanie danych do umieszczenia bezpośrednio w danych pakietu IP. nagłówek IP dane zapisywane do gniazda 4

Nagłówek pakietu IP 0 7 8 15 16 23 24 31 wersja IHL typ usługi całkowita długość pakietu pola związane z fragmentacją pakietu TTL protokół suma kontrolna nagłówka IP źródłowy adres IP docelowy adres IP Protokół = datagram jakiego protokołu przechowywany jest w danych pakietu (np. 1 = ICMP, 6 = TCP, 17 = UDP). 5

Nagłówek UDP 0 7 8 15 16 23 24 31 port źródłowy port docelowy długość suma kontrolna Port: liczba 16-bitowa; identyfikuje aplikację wewnątrz danego komputera; Warstwa sieciowa zapewnia dostarczanie pakietów pomiędzy komputerami, warstwa transportowa pomiędzy aplikacjami. 6

Enkapsulacja i dekapsulacja warstwa aplikacji warstwa aplikacji warstwa transportowa warstwa transportowa warstwa sieciowa warstwa sieciowa warstwa sieciowa router 67.32.41.23 34.37.235.21 port 55245 port 12345 7

Gniazdo UDP Identyfikuje jeden koniec komunikacji UDP. Opisywane przez parę (lokalny adres IP, lokalny port). Związane z konkretnym procesem. 8

Tworzenie gniazda #include <arpa/inet.h> int sockfd = socket(af_inet, SOCK_DGRAM, 0); 9

Wiązanie gniazda z adresem i portem Struktura adresowa jak w przypadku gniazda surowego, ale wypełniamy w niej też port. struct sockaddr_in server_address; bzero (&server_address, sizeof(server_address)); server_address.sin_family = AF_INET; server_address.sin_port = htons(12345); server_address.sin_addr.s_addr = htonl(inaddr_any); bind ( sockfd, (struct sockaddr*)&server_address, sizeof(server_address) ); 10 demonstracja

Odbieranie pakietu z gniazda Identycznie jak w przypadku gniazd surowych. struct sockaddr_in socklen_t u_int8_t sender; sender_len = sizeof(sender); buffer[ip_maxpacket+1]; ssize_t packet_len = recvfrom ( sockfd, buffer, IP_MAXPACKET, 0, (struct sockaddr*)&sender, &sender_len ); pakiet jako ciąg bajtów informacje o nadawcy 11

Wysyłanie pakietu przez gniazdo Identycznie jak w przypadku gniazd surowych, ale recipient musi zawierać również port. char* reply = "Thank you! ; ssize_t reply_len = strlen(reply); ssize_t bytes_sent = sendto ( sockfd, reply, reply_len, 0, (struct sockaddr*)&recipient, sizeof(recipient) ); informacje o odbiorcy, np. to co wpisaliśmy do struktury sender 12

Zamykanie gniazda Zwalnia zasoby związane z gniazdem. close(sockfd); 13

Kod serwera UDP int sockfd = socket(af_inet, SOCK_DGRAM, 0); struct sockaddr_in server_address; bzero (&server_address, sizeof(server_address)); server_address.sin_family = AF_INET; server_address.sin_port = htons(12345); server_address.sin_addr.s_addr = htonl(inaddr_any); bind (sockfd, (struct sockaddr*)&server_address, sizeof(server_address)); for (;;) { struct sockaddr_in sender; socklen_t sender_len = sizeof(sender); u_int8_t buffer[ip_maxpacket+1]; ssize_t datagram_len = recvfrom (sockfd, buffer, IP_MAXPACKET, 0, (struct sockaddr*)&sender, &sender_len); Brak obsługi błędów, plików nagłówkowych, etc. char sender_ip_str[20]; inet_ntop(af_inet, &(sender.sin_addr), sender_ip_str, sizeof(sender_ip_str)); printf ("Received UDP packet from IP address: %s, port: %d\n", sender_ip_str, ntohs(sender.sin_port)); buffer[datagram_len] = 0; printf ("%ld-byte message: +%s+\n", datagram_len, buffer); } char* reply = "Thank you!"; ssize_t reply_len = strlen(reply); sendto(sockfd, reply, reply_len, 0, (struct sockaddr*)&sender, sender_len); close (sockfd); demonstracja cały kod serwera 14

Wiązanie z portem c.d. Serwer związuje się z danym portem funkcją bind(). Do związania z portem 1024 potrzebne uprawnienia administratora. Jeśli wyślemy coś przez gniazdo nie związując go z lokalnym portem, jądro przydzieli do tego gniazda automatycznie port. Port efemeryczny (zazwyczaj 32768). Tak działa większość klientów (np. program nc). 15

Kod klienta UDP int main() Brak obsługi błędów, etc. { int sockfd = socket(af_inet, SOCK_DGRAM, 0); struct sockaddr_in server_address; bzero (&server_address, sizeof(server_address)); server_address.sin_family = AF_INET; server_address.sin_port = htons(12345); inet_pton(af_inet, "127.0.0.1", &server_address.sin_addr); char* message = "Hello server!"; ssize_t message_len = strlen(message); sendto(sockfd, message, message_len, 0, (struct sockaddr*) &server_address, sizeof(server_address)); } close (sockfd); demonstracja cały kod klienta 16

Wysyłanie pakietu UDP na adres rozgłoszeniowy Wystarczy włączyć odpowiednią opcję gniazda. int broadcastpermission = 1; setsockopt (sockfd, SOL_SOCKET, SO_BROADCAST, (void *)&broadcastpermission, sizeof(broadcastpermission)); 17

Wewnątrz routera

Budowa routera Router podejmuje decyzję na podstawie nagłówka pakietu w oparciu o tablicę przekazywania. Procesor routingu (tworzy tablice routingu) część sterująca port wejściowy port wyjściowy port wejściowy Struktura przełączająca port wyjściowy część przekazująca port wejściowy port wyjściowy 19

Przełączanie pakietów za pomocą RAM Wczesne generacje routerów (jak PC). Procesor + tablica routingu + t. przekazywania Brak struktury przełączającej. port wej. port wyj. port wej. port wyj. Tablica przekazywania w części sterującej. port wej. RAM port wyj. Działanie: Późniejsze generacje routerów: szyna zamiast RAM Port wejściowy odbiera pakiet i zgłasza przerwanie. Procesor kopiuje pakiet do RAM. Wolny port wyjściowy zgłasza przerwanie. Procesor zapisuje pakiet do RAM. 20

Przełączanie pakietów za pomocą sieci przełączającej Współczesne generacje routerów. Procesor + tablica routingu port wej. port wyj. Procesor: Otrzymuje niektóre pakiety (RIP, OSPF). port wej. port wej. Struktura przełączająca port wyj. port wyj. Tworzy tablice przekazywania i wysyła je do portów wejściowych. Port wejściowy: Odbiera pakiet z łącza. Uaktualnia nagłówek IP (TTL, suma kontrolna). Sprawdza, do którego portu wyjściowego go przesłać. 21

Struktura przełączająca Cel: Przekazywać pakiety z prędkością łącza (lub zbliżoną). N portów wejściowych o prędkości R chcemy przepustowość N x R (typowe wartości to 10 Gbit/s - 1 Tbit/s). Sieci połączeń znane z sieci procesorów w systemach multiprocesorowych. każdy z każdym: O(N 2 ) połączeń (niepraktyczne); sieci Benesa i pochodne: O(N log N) połączeń (potrafią bezkolizyjnie przesłać dowolną permutację). Obrazek ze strony https://www.cs.cmu.edu/afs/cs.cmu.edu/project/phrensy/pub/papers/aroralm94/node7.html 22

Bufory z kolejkami pakietów Przy portach wyjściowych. Utrata pakietów przy przeciążeniach (wykład 1). Przy portach wejściowych. Jeśli przepustowość struktury przełączającej jest za mała. Pakiety kierowane do zajętych łącz wyjściowych są blokowane. Problem blokowania przodu kolejki: Niebieski pakiet musi czekać i blokuje wysłanie pakietu zielonego. Rozwiązywane przez wirtualne kolejki pakietów: jedna kolejka dla kadego portu wyjściowego. 23

Porty wejściowe

Tablice przekazywania Jeśli więcej niż jedna reguła pasuje, wybierana jest ta, która jest najdłuższym prefiksem = mechanizm LPM (longest prefix match) prefiks CIDR akcja 0.0.0.0/0 do portu A 156.17.4.0/24 do portu B 156.17.4.128/25 do portu C 156.17.4.128/26 do portu B 156.17.4.0 156.17.4.128 156.17.4.191 156.17.4.255 do A do B do B do C 25

Struktury danych dla LPM Struktura danych dla LPM musi obsługiwać: lookup (adres) miliony razy / sek. insert (prefix) / delete (prefix) setki razy / sek. Notacja: n - liczba prefiksów w tablicy; w - rozmiar adresu (adres mieści się w słowie). 26

Implementacja LPM (1) Lista prefiksów pamięć: O(n) lookup: O(n) insert: O(1), delete: O(n) 27

Implementacja LPM (2) Tablice haszujące w+1 tablic (dla każdej długości prefiksu) w czasach klas adresów IP wystarczało 5 tablic pamięć: O(n) lookup: O(w) (oczekiwany) insert, delete: O(1) (oczekiwany) 28

Implementacja LPM (3) Drzewa trie (faktycznie stosowane) pamięć: O(n x w) Kompresja ścieżek bez rozgałęzień daje pamięć O(n). lookup: O(w) insert, delete: O(w) 0-1 Przechodzimy drzewo w dół i zwracamy ostatnią pasującą regułę: 00 10 11 dla adresu 10000 port zielony; 100 101 111 dla adresu 11000 port czerwony. 29

Implementacja LPM (4) Trie ze dodatkowymi krawędziami skracającymi lookup: O(log w) insert, delete: O(n) (przynajmniej w najgorszym przypadku) Problem otwarty: czy da się wszystkie operacje w O(log w)? 30

Implementacja LPM (5) Rozwiązania sprzętowe oparte o TCAM (faktycznie stosowane) TCAM = ternary content addressable memory. Przechowujemy pary (p,m). Dla adresu w można równolegle znaleźć wszystkie pary takie, że w & m = p & m (bitowy and) = wszystkie pasujące prefiksy. Sprzętowo wybieramy najdłuższy z nich. 31

Porty wyjściowe

Fragmentacja (1) Jeśli rozmiar pakietu jest większy niż MTU (maximum transmission unit) łącza wyjściowego, to pakiet jest dzielony na fragmenty. Przykładowo: MTU Ethernetu = 1500 bajtów, MTU sieci bezprzewodowej 802.11 = 7981 bajtów. Procesor + tablica routingu port wej. port wej. port wyj. port wyj. Struktura przełączająca port wej. port wyj. 33

Fragmentacja (2) 0 7 8 15 16 23 24 31 wersja IHL typ usługi całkowita długość pakietu identyfikator przy fragmentacji 0 D F M F offset fragmentu TTL protokół suma kontrolna nagłówka IP źródłowy adres IP docelowy adres IP Dzielenie na dowolnym routerze na trasie Fragmenty dostają identyczny identyfikator. MF = czy jest więcej fragmentów? Offset = numer pierwszego bajtu w oryginalnym pakiecie. Łączenie fragmentów dopiero na komputerze docelowym. 34

Fragmentacja jest nieefektywna Dodatkowa praca dla routerów. Dodatkowe narzut (nagłówki pakietów): do wysłania 140.000 bajtów, pierwsze łącze na trasie umożliwia przesłanie 1400 bajtów w pakiecie, najmniejsze na trasie 1250 bajtów; bez fragmentacji: 140.000 / 1250 = 112 pakietów z fragmentacją: wysyłamy 140.000 / 1400 = 100 pakietów, ale każdy dzielony później na dwa. Jak poznać najmniejsze łącze na trasie? 35

Wykrywanie MTU dla ścieżki Ustaw bit DF (don t fragment) w nagłówku IP. Jeśli konieczna fragmentacja na routerze: pakiet wyrzucony; router odsyła komunikat ICMP (destination unreachable, can t fragment) z rozmiarem MTU kolejnego łącza. Zmniejsz odpowiednio rozmiar pakietu i ponów wysyłanie. 36

Co się dzieje w buforze wyjściowym? Kolejka FIFO: pakiety wysyłane w takiej kolejności jak nadeszły. Szeregowanie pakietów: Przypisujemy pakiety do strumieni (na podstawie adresu i portu źródłowego + docelowego). Pakiety szeregowane w zależności od strumienia. strumień 1 klasyfikator strumień 2 strumień 3 scheduler 37

Szeregowanie pakietów w buforze Szeregowanie względem priorytetów strumieni strumień o wysokim priorytecie strumień o średnim priorytecie scheduler strumień o niskim priorytecie Szeregowanie cykliczne (round-robin): po tyle samo pakietów z każdego strumienia. strumień 1 strumień 2 scheduler strumień 3 38

IPv6

Dlaczego nowa wersja? Adresy IPv4 wyczerpują się (IANA oddała ostatnią pulę regionalnym rejestratorom 3 lutego 2011 r.) 20 lat temu rozpoczęto pracę nad kolejną wersją protokołu (IPv6) 128-bitowe adresy. 40

Nagłówek IPv6 128-bitowe adresy. Mniejszy narzut dla routerów: nagłówki stałej długości, brak fragmentacji, brak sumy kontrolnej, etykieta strumienia (nie trzeba patrzeć na porty). Obrazek ze strony http://www.networksorcery.com/enp/protocol/ipv6.htm 41

Adresy IPv6 Notacja = 8 bloków po 4 cyfry szesnastkowe, rozdzielonych przez dwukropek. A = 2001:0db8:0000:0000:0000:0000:1428:0000 localhost = 0000:0000:0000:0000:0000:0000:0000:0001/128 Uproszczenia zapisu: Można opuszczać wiodące zera w każdym bloku (zostawiając jedno). Jeden z ciąg zerowych bloków zer można zastąpić przez ::. Przykłady: A = 2001:db8::1428:0 localhost = ::1/128 42

IPv4 a IPv6 Większość dużych serwisów (Google, Facebook, ) ma swoje wersje IPv6. Osobne serwery lub serwery z podwójnym stosem (potrafią interpretować pakiety IPv4 i IPv6). Duża część routerów w rdzeniu Internetu potrafi przesyłać pakiety IPv6. Ale ISP udostępniający Internet użytkownikom końcowym rzadko dają im obecnie możliwość korzystania z IPv6 (wyjątek: sieci komórkowe). 43

IPv4 a IPv6: mechanizmy migracji Tunelowanie 6in4 = pakiety IPv6 przesyłane jako dane pakietów IPv4. komputer klienta IPv4+IPv6 IPv4 IPv4 broker tunelu IPv4+IPv6 IPv4+IPv6 IPv6 nagłówek IPv4 nagłówek IPv4 nagłówek IPv4 nagłówek IPv6 nagłówek IPv6 nagłówek IPv6 nagłówek IPv6 nagłówek IPv6 dane pakietu dane pakietu dane pakietu dane pakietu dane pakietu Pomiędzy komputerem a brokerem tworzony jest logiczny kanał. 44

NAT

Coraz większe zapotrzebowanie na adresy IP Adresy IPv4 wyczerpują się. Wdrożenie IPv6 wciąż trwa. Adresy IP są dość kosztowne pojedyncze IP dla całych firm. 46

NAT Router z funkcją NAT sieć lokalna 192.168.0.0/24 Internet 192.168.0.1 12.34.56.78 Z reszty Internetu cała sieć lokalna wygląda tak samo, jak pojedynczy komputer z adresem 12.34.56.78. Nie można (w normalny sposób) dostać się z Internetu do komputerów z LAN. Jak sobie z tym radzić? 47

Co robi router z funkcją NAT? Komputer z sieci 192.168.1.0/24 wysyła pakiet do Internetu. Pakiet ma: źródłowy adres i port = A, P A, docelowy adres i port = C, P C. Pakiet przechodzi przez router NAT o zewnętrznym adresie B, który na podstawie krotki (A, P A, C, P C ) wybiera port P B. W pakiecie adres i port źródłowy zostają podmienione na (B, PB ). Tablica NAT: Przechowuje przez pewien czas przypisanie (A, PA, C, P C ) P B. Dla kolejnych podobnych pakietów przypisanie będzie takie samo. Jeśli przychodzi pakiet do (B, P B ) to jego adres i port docelowy zostanie podmieniony na (A, P A ). 48

Adresy prywatne Adresy przeznaczone do sieci lokalnych. Pakiety z takimi adresami nie powinny być przekazywane dalej przez routery. W różnych sieciach mogą być te same adresy. Pule adresów: 10.0.0.0/8 (jedna sieć klasy A), 172.16.0.0/12 (16 sieci klasy B), 192.168.0.0/16 (256 sieci klasy C). 49

Zalety i wady NAT Zalety: Rozwiązuje problem braku adresów IP. Można zmienić adresy IP wewnątrz sieci bez powiadamiania Internetu. Można zmienić ISP pozostawiając adresowanie IP wewnątrz sieci. Wady: Nieosiągalność komputerów z Internetu (aplikacje P2P). Psucie modelu warstwowego (router modyfikuje treść pakietu). 50

Lektura dodatkowa Kurose & Ross: rozdział 4. Tanenbaum: rozdział 5. Stevens: rozdział 8. Dokumentacja online: http://www.networksorcery.com/enp/protocol/ipv6.htm http://www.networksorcery.com/enp/protocol/udp.htm Beej's Guide to Network Programming: http://beej.us/guide/bgnet/ 51