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

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

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

Protokoły sieciowe - TCP/IP

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. 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 / 24

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

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

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

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

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.

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

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

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

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

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

Przesyłania danych przez protokół TCP/IP

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

Adresy w sieciach komputerowych

ARP Address Resolution Protocol (RFC 826)

Iteracyjny serwer TCP i aplikacja UDP

ZiMSK NAT, PAT, ACL 1

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

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

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

Sieci komputerowe - administracja

Klient-Serwer Komunikacja przy pomocy gniazd

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

Model sieci OSI, protokoły sieciowe, adresy IP

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

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Programowanie Sieciowe 1

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

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

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

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

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

ADRESY PRYWATNE W IPv4

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

Gniazda BSD. komunikacja bezpołączeniowa

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

Internet Protocol v6 - w czym tkwi problem?

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

Programowanie Sieciowe 1

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

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

Komunikacja w sieciach komputerowych

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

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

Warstwa sieciowa. mgr inż. Krzysztof Szałajko

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

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

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

Struktura adresu IP v4

Dr Michał Tanaś(

MODEL OSI A INTERNET

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

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Sieci komputerowe Warstwa sieci i warstwa transportowa

Laboratorium Sieci Komputerowych - 2

Laboratorium 6.7.2: Śledzenie pakietów ICMP

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

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

Programowanie współbieżne i rozproszone

Podstawowe pojęcia dotyczące sieci komputerowych

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

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

Zadania z sieci Rozwiązanie

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

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

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

Adresacja IPv4 - podstawy

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

Co w sieci piszczy? Programowanie aplikacji sieciowych w C#

Adresowanie grupowe. Bartłomiej Świercz. Katedra Mikroelektroniki i Technik Informatycznych. Łódź, 25 kwietnia 2006

Bezpieczeństwo w M875

Połączenie sieci w intersieci ( internet ) Intersieci oparte o IP Internet

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

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

DLACZEGO QoS ROUTING

Sieci lokalne Adresowanie IP Usługi sieciowe. Sieci. Jacek Izdebski. ektanet.pl. 27 stycznia 2011

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

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

Systemy operacyjne i sieci komputerowe Szymon Wilk Adresowanie w sieciach Klasy adresów IP a) klasa A

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

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

Protokoły wspomagające. Mikołaj Leszczuk

Programowanie sieciowe

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

Instrukcja 5 - Zastosowania protokołu ICMP

Instrukcje dotyczące funkcji zarządzania pasmem w urządzeniach serii ZyWALL.

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Charakterystyka grupy protokołów TCP/IP

Uproszczony opis obsługi ruchu w węźle IP. Trasa routingu. Warunek:

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

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 HTTP warstwa transportowa SMTP TCP warstwa sieciowa warstwa łącza danych warstwa fizyczna DNS NTP UDP IP Ethernet PPP kable miedziane 802.11 (WiFi) światłowód DSL MPLS 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 przechowywany 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 67.32.41.23 router 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) ); dowolny ciąg bajtów, niekoniecznie napis 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]; Brak obsługi błędów, plików nagłówkowych, etc. } ssize_t datagram_len = recvfrom (sockfd, buffer, IP_MAXPACKET, 0, (struct sockaddr*)&sender, &sender_len); 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); demonstracja close (sockfd); 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 tymczasowy (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_addr; 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_addr.sin_addr); } char* message = "Hello server!"; sendto(sockfd, message, strlen(message), 0, (struct sockaddr*) &server_addr, sizeof(server_addr)); close (sockfd); &16 demonstracja cały kod klienta

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 Procesor routingu (tworzy tablice routingu) port wejściowy port wyjściowy port wejściowy port wyjściowy Struktura przełączająca port wyjściowy port wejściowy &19 część przekazująca część sterująca Router podejmuje decyzję na podstawie nagłówka pakietu w oparciu o tablicę przekazywania.

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: Port wejściowy odbiera pakiet i zgłasza przerwanie. Procesor kopiuje pakiet do RAM. Wolny port wyjściowy zgłasza przerwanie. Procesor kopiuje pakiet z RAM. &20

Przełączanie pakietów za pomocą RAM Procesor + tablica routingu + t. przekazywania Wczesne generacje routerów (jak PC). Brak struktury przełączającej. port wej. port wyj. port wej. port wyj. Tablica przekazywania w części sterującej. RAM port wej. port wyj. Późniejsze generacje routerów: szyna zamiast RAM Działanie: Port wejściowy odbiera pakiet i zgłasza przerwanie. Procesor kopiuje pakiet do RAM. Wolny port wyjściowy zgłasza przerwanie. Procesor kopiuje pakiet z 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. Zapobiegają utracie pakietów przy czasowym zwiększeniu liczby pakietów (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 każdego 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 maszyny). &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 (starsze systemy uniksowe) 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 (nowsze systemy uniksowe, routery sprzętowe) pamięć: O(n w) 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 (3) Drzewa trie (nowsze systemy uniksowe, routery sprzętowe) Kompresja ścieżek bez rozgałęzień daje pamięć O(n). pamięć: O(n w) lookup: O(w) insert, delete: O(w) Przechodzimy drzewo w dół i zwracamy ostatnią pasującą regułę: - 0 1 00 10 100 11 101 111 &29 dla adresu 10000 port zielony; dla adresu 11000 port czerwony.

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 (nowsze routery sprzętowe) TCAM = ternary content addressable memory. Przechowujemy pary (p,m) = (prefix, maska) 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. Dodatkowy 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 minimalnego MTU na ścieżce 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. bufor wyjściowy 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.). ponad 20 lat temu rozpoczęto pracę nad nową wersją (IPv6). 128-bitowe adresy. &40

Nagłówek IPv6 0 7 8 15 16 23 24 31 wersja typ usługi identyfikator strumienia rozmiar zawartości pakietu protokół TTL źródłowy adres IP (128 bit) docelowy adres IP (128 bit) Mniejszy narzut dla routerów: nagłówki stałej długości, brak fragmentacji, brak sumy kontrolnej, etykieta strumienia (nie trzeba patrzeć na porty). &41

Adresy IPv6 Notacja = 8 bloków po 4 cyfry szesnastkowe, rozdzielonych przez dwukropek. Przykładowo 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 (do niepustego ciągu). Jeden ciąg zerowych bloków zer można zastąpić przez ::. Przykłady: A = 2001:db8::1428:0 localhost = ::1/128 &42

Sieci Wszystkie sieci w IPv6 mają maskę /64 64 bity na adres sieci, 64 bity na adres komputera wewnątrz sieci. Wyjątki: łącza dwupunktowe używają masek /127. Brak adresu rozgłoszeniowego (broadcast). Zdefiniowane wiele specjalnych adresów multicastowych: ff02::1 - wszystkie adresy w sieci lokalnej (jak broadcast) ff02::2 - wszystkie routery w sieci lokalnej &43

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. Co zrobić, jeśli router naszego ISP nie ma adresu IPv6? &44

IPv4 a IPv6: mechanizmy migracji Tunelowanie 6in4 = pakiety IPv6 przesyłane jako dane pakietów IPv4. komputer klienta IPv4+IPv6 IPv4 broker tunelu IPv4+IPv6 IPv4 nagłówek IPv4 nagłówek IPv4 nagłówek IPv4 nagłówek IPv6 nagłówek IPv6 nagłówek IPv6 dane pakietu dane pakietu dane pakietu IPv6 IPv6 nagłówek IPv6 nagłówek IPv6 dane pakietu dane pakietu Pomiędzy komputerem a brokerem tworzony jest logiczny kanał (1 hop z punktu widzenia IPv6). &45

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. &47

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ć? &48

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, P B ). Tablica NAT: Przechowuje przez pewien czas przypisanie (A, P A, 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 ). &49

Adresy prywatne Adresy przeznaczone do sieci lokalnych. Pakiety z takimi adresami nie są przekazywane 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). &50

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). &51

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/ &52