Tajemnice protokołu IPv6
Jacek Światowiak
Jacek.Swiatowiak@lan-net.pl
Tajemnice protokołu IPv6
Cześć 3
ICMPv6
Protokół kontrolno-diagnostyczny
Tajemnice protokołu IPv6
Jacek Światowiak
Kilka słów o mnie:
MCSE+M, MCSE+S
MCTS: Forefront Client and Server, ISA 2006
MCTS: SQL 2005
MCTS: Vista, Windows 7
MCTS: Business Desktop Deployment, BDD
MCTS: Office Communications Server 2007
MCTS: SBS 2008, EBS 2008
MCTS: Exchange 2007, 2010
MCTS: Windows Server Virtualization,
MCTS: Windows Server 2008 R2, Desktop Virtualization
MCITP: Windows Server 2008, Server Administrator
MCITP: Windows Server 2008, Enterprise Administrator
MCITP: SQL 2005, Database Administrator
MCITP: Exchange Server 2007, Enterprise Messaging Administrator
MCITP: Exchange Server 2010, Enterprise Messaging Administrator
MCITP: Windows Server 2008 R2, Virtualization Administrator 2008 R2
MCITP: Windows 7, Enterprise Desktop Administrator
MSA: Office Communications Server 2007
– U.C.Voice
MVP: Forefront
od października 2010
Strefa eksperta ATE
2008 - 2010
2/29
Tajemnice protokołu IPv6
Jacek Światowiak
Rok 2001 !!!!!!!!!!!!!!
3/29
Tajemnice protokołu IPv6
Jacek Światowiak
Inżynieria Internetu Przyszłości
Projekt jest współfinansowany ze środków Unii Europejskiej poprzez Europejski
Fundusz Rozwoju Regionalnego w ramach Programu Operacyjnego
Innowacyjna Gospodarka na lata 2007-2013:
• Priorytet 1 - Badania i rozwój nowoczesnych technologii.
• Działanie 1.1 - Wsparcie badań naukowych dla budowy gospodarki opartej na wiedzy.
• Poddziałanie 1.1.2 - Strategiczne programy badań naukowych i prac rozwojowych.
Numer projektu: POIG.01.01.02-00-045/09-00.
Czas realizacji: 01.01.2010 - 31.12.2012.
http://www.iip.net.pl
4/29
Tajemnice protokołu IPv6
Jacek Światowiak
Inżynieria Internetu Przyszłości
Projekt jest realizowany przez konsorcjum, w którego skład wchodzą wiodące
uczelnie techniczne, instytuty Polskiej Akademii Nauk i instytuty branżowe.
Politechnika Warszawska
Instytut Łączności - Państwowy Instytut Badawczy
Politechnika Wrocławska
Politechnika Poznańska
Poznańskie Centrum Superkomputerowo-Sieciowe (Instytut Chemii
Bioorganicznej PAN)
Instytut Informatyki Teoretycznej i Stosowanej Polskiej Akademii Nauk
Politechnika Śląska
Politechnika Gdańska
Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie
5/29
Tajemnice protokołu IPv6
Jacek Światowiak
Inżynieria Internetu Przyszłości
Projekt dotyczy opracowania i przetestowania infrastruktury i usług dla nowych generacji sieci
Internet, tj. Internetu IPv6 i Internetu Przyszłości (ang. Future Internet). Oczekuje się, iż nowe
generacje Internetu (jeden z głównych priorytetów badawczych w ramach Programów
Ramowych Unii Europejskiej) przyczynią się istotnie do rozwoju cywilizacyjnego w Europie
powodując, że z ich możliwości będą korzystały wszystkie lub prawie wszystkie obszary
ludzkiej aktywności.
Celem projektu w ramach Internetu IPv6 jest opracowanie metodyki dla ewolucyjnego
zastąpienia w sieci krajowej obecnej wersji IP (IPv4) przez protokół IPv6 oraz
zaproponowanie nowych rozwiązań sieciowych i usług wynikających z IPv6.
Celem
projektu w ramach Internetu Przyszłości jest opracowanie i przetestowanie propozycji
nowej architektury opartej na wirtualizacji zasobów wraz z nowymi mechanizmami i
algorytmami dotyczącymi istotnych aspektów działania sieci. Projekt stawia sobie również za
cel stworzenie środowiska krajowej sieci testowej dla Internetu IPv6 i Internetu Przyszłości,
pozwalającego na prowadzenie działalności badawczo-rozwojowej opartej na weryfikacji
eksperymentalnej.
6/29
Tajemnice protokołu IPv6
Jacek Światowiak
Sesje
Zagadnienia adresacji
– odbyła się 11 listopada 2011
Datagram IPv6
– odbyła się 25 listopada 2011 r.
Protokół ICMPv6
Protokół Neighbor Discovery – 15 grudnia
Zagadnienia automatycznej adresacji
Technologie migracji
Tunelowanie 6to4
Tunelowanie ISATAP
Tunelowanie TEREDO
Zagadnienia dodatkowe
7/29
Tajemnice protokołu IPv6
Jacek Światowiak
Poprzednia sesja
Stosy protokolarne
Nazewnictwo
Przykład enkaspulacji
Nagłówki datagramu
Nagłówki rozszerzeń IPv6
Opcje nagłówków rozszerzeń IPv6
Nagłówek opcji międzywęzłowych - Hop-by-Hop
Nagłówek opcji miejsc przeznaczenia - Destination Options Header
Nagłówek routingu
Nagłówek fragmentacji
Brak następnego nagłówka
8/29
Tajemnice protokołu IPv6
Jacek Światowiak
Agenda
Wstęp
Podprotokoły ICMPv6
Typy komunikatów ICMPv6
Nagłówek protokołu ICMPv6
Komunikaty błędów protokołu ICMPv6
Komunikaty informacyjne ICMPv6
Komunikat błędu ICMPv6 - Miejsce docelowe nieosiągalne - Destination
Unreachable
Komunikat błędu ICMPv6 - Datagram za duży - Packet Too Big
Komunikat błędu ICMPv6 - Przekroczenie czasu - Time Exceeded
Komunikat błędu ICMPv6 - Problem z parametrem - Parameter Problem
Komunikaty informacyjne ICMPv6 - Echo Request oraz Echo Reply
Część praktyczna – manualne zarządzanie adresami IPv6 oraz
routingiem statycznym.
9/29
Tajemnice protokołu IPv6
Jacek Światowiak
Wstęp
Protokół IPv6 używa komunikatów diagnostyczno-kontrolnych pod wspólną nazwa
ICMPv6
. Jest to poprawiona wersja protokołu ICMPv4 oraz protokołu IGMPv4.
Należy zwrócić uwagę, iż podobnie jak ICMPv4, ICMPv6 jest uważany za
integralną część IPv6 i musi być implementowany na każdym węźle pracującym ze
stosem IPv6.
RFC 792, Internet Control Message Protocol (ICMPv4), J.Postel, Październik 1981
RFC 2236, IGMP Internet Group Management Protocol Version 2, W.Fenner, Listopad 1997
ICMPv6 jest aktualnie zdefiniowane w dokumencie RFC 4443 (marzec 2006)
Oraz uaktualnienie 4884 - Extended ICMP to Support Multi-Part Messages
(kwiecień 2007)
Superprotokół ICMPv6
10/29
Tajemnice protokołu IPv6
Jacek Światowiak
W skład protokołu ICMPv6 wchodzą również inne pod-protokoły określane, jako:
Neighbor Discovery
(ND) jest zestawem pięciu komunikatów informacyjnych
ICMPv6 wymienianych pomiędzy węzłami IPv6. ND zastępuje funkcjonalnie
Address Resolution Protocol (ARP), ICMPv4 Router Discovery oraz ICMPv4
Redirect.
Multicast Listener Discovery (MLD) oraz Multicast Listener Discovery
version 2
(MLDv2). MLD jest zestawem trzech komunikatów informacyjnych
ICMPv6, będących ekwiwalentem protokołu Internet Group Management
Protocol (IGMP) z IPv4 i przeznaczony jest do zarządzania członkostwem grup
multicastowych. MLDv2 definuije jeden dodatkowy komunikat.
Node Information Queries (NI)
– opisany w RFC 4620 precyzuje mechanizm
uzyskiwania informacji o węzłach nie korzystający z usługi DNS
Podprotokoły ICMPv6
11/29
Tajemnice protokołu IPv6
Jacek Światowiak
Typy komunikatów ICMPv6
ICMPv6 przenosić może dwa typy komunikatów:
• Komunikaty o błędach (typy 0 do 127)
• Komunikaty informacyjne (typy 128 do 255)
Typy komunikatów ICMPv6
12/29
Tajemnice protokołu IPv6
Jacek Światowiak
Nagłówek protokołu ICMPv6
Protokół ICMPv6 jest identyfikowany przez wartość 58 umieszczoną w polu
Następny nagłówek poprzedzającego nagłówka. Na rysunek przedstawiono
format nagłówka komunikatu ICMPv6.
13/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikaty błędów protokołu ICMPv6
Dotychczas zdefiniowano cztery typy komunikatów o błędach: węzeł
docelowy nieosiągalny, datagram zbyt duży, wygaśnięcie czasu, problem
z parametrem.
We
wszystkich przypadkach adres docelowy datagramu IPv6 określony w
nagłówku podstawowym kopiowany jest z pola Adres źródłowy datagramu,
który wywołał błąd. Z kolei węzeł odbierający komunikat ICMPv6 o błędzie
musi poinformować o tym protokół warstwy wyższej.
Typ Informacja
1
Węzeł docelowy nieosiągalny (ang. Destination Unreachable)
2
Datagram zbyt duży (ang. Packet Too Big)
3
Wygaśnięcie czasu (ang. Time Exceeded)
4
Problem z parametrem (ang. Parameter Problem)
Komunikaty specjalne:
100 Private experimentation
101 Private experimentation
127 Reserved for expansion of ICMPv6 error messages
14/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikaty informacyjne ICMPv6
Komunikaty informacyjne ICMPv6 umożliwiają diagnozowanie stanu sieci
oraz rozwiązywanie problemów.
Typ Informacja
128
Zapytanie o echo (ang. Echo Request)
129
Odpowiedź echo (ang. Echo Reply)
Komunikaty o numerach powyżej 129 wykorzystywane są w dodatkowych
protokołach jak Multicast Listener Discovery (MLD), MLDv2 Neighbor
Discovery (ND), Node Information Queries (NI) oraz inne specjalne
rozszerzenia.
Komunikaty specjalne:
200 Private experimentation
201 Private experimentation
255 Reserved for expansion of ICMPv6 error informational messages
15/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikat błędu ICMPv6 - Miejsce
docelowe nieosiągalne - Destination
Unreachable
Komunikat
węzeł docelowy nieosiągalny powinien być wysyłany przez router
lub przez warstwę IPv6 węzła źródłowego, w odpowiedzi, na datagram, który nie
może być dostarczony na adres docelowy z powodów innych niż przepełnienie,
(jeśli datagram został odrzucony z powodu przepełnienia bufora wejściowego
węzła, to komunikat ICMPv6 o błędzie nie może być wysłany). Format nagłówka
ICMPv6 dla komunikatu
węzeł docelowy nieosiągalny przedstawiono na
rysunku.
Pole
nagłówka
Przeznaczenie
Typ
Wartość 1 – oznacza komunikat węzeł docelowy nieosiągalny
Kod
Tabela 1 zawiera zestawienie kodów generowanych w przypadku
wystąpienia błędu węzeł docelowy nieosiągalny.
16/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikat błędu ICMPv6 - Miejsce
docelowe nieosiągalne - Destination
Unreachable
Kod
Informacja
0 - No Route to Destination
Nie znaleziono trasy do miejsca przeznaczenia.
1 - Communication with
Destination Administratively
Prohibited
Komunikacja z miejscem docelowym została administracyjnie
zabroniona. Typowo jest to realizowane poprzez odrzucanie
datagramów na firewallu.
2 - Beyond Scope of Source
Address
Przeznaczenie znajduje się poza zasięgiem adresu źródłowego.
Router musi wysłać ten datagram poprzez interfejs, nieznajdujący się
dostępności adresu nadawczego.
3 - Address Unreachable
Adres docelowy nieosiągalny. Komunikat generowany zwykle w
sytuacji braku możliwości określenia adresu MAC docelowego
interfejsu sieciowego.
4 - Port Unreachable
Port docelowy nieosiągalny. Komunikat generowany zwykle w
przypadku komunikacji realizowanej za pomocą protokołu UDP, gdy
adres docelowy jest osiągalny natomiast nie jest otwarty oczekiwany
port UDP lub nie korzysta z niego żadna aplikacja.
5 - Source Address Failed
Ingress/Egress Policy
Datagram z określonym adresem źródłowym jest niedozwolony ze
względu na określoną politykę ruchu wchodzącego (ingress) lub
wychodzącego (egress).
6 - Reject Route to Destination
Datagram został dopasowany do specjalnej trasy typu reject route i
został odrzucony. Trasa reject route jest zdefiniowana, jako określony
prefiks dla którego router zobligowany jest bezwarunkowo odrzucać
kierowane tam datagramy.
17/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikat błędu ICMPv6 - Miejsce
docelowe nieosiągalne - Destination
Unreachable
W przykładzie przedstawiono przykładowo przechwyconą komunikację dla komunikatu
Destination Unreachable-No Route to Destination.
Frame:
+ Ethernet: Etype = IPv6
- Ipv6: Next Protocol = ICMPv6, Payload Length = 88
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 88 (0x58)
NextProtocol: ICMPv6, 58(0x3a)
HopLimit: 128 (0x80)
SourceAddress: 2001:DB8:0:2:201:2FF:FEAA:BBCC
DestinationAddress: 2001:DB8:0:2:260:97FF:FEBB:CCDD
- Icmpv6:
Destination unreachable
MessageType: Destination unreachable, 1(0x1)
- DestUnreachable:
Code:
No route to destination
, 0(0)
Checksum: 6328 (0x18B8)
Unused: 0 (0x0)
- InvokingPacket: Next Protocol = ICMPv6, Payload Length = 40
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 40 (0x28)
NextProtocol: ICMPv6, 58(0x3a)
HopLimit: 128 (0x80)
SourceAddress: 2001:DB8:0:2:260:97FF:FEBB:CCDD
DestinationAddress: 2001:DB8:0:91:260:8FF:FE11:22DD
OriginalIPPayload: Binary Large Object (40 Bytes)
18/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikat błędu ICMPv6 - Datagram za
duży - Packet Too Big
W przypadku dotarcia do routera datagramu, który winien być przekierowany na
łącze („następny skok”) o MTU mniejszym niż wielkość datagramu, router wysyła
komunikat
datagram zbyt duży. Format nagłówka ICMPv6 dla komunikatu
datagram zbyt duży przedstawiono na rysunku. Informacja zawarta w tym
komunikacie jest używana w algorytmie określania wartości MTU dla łącza –
Path MTU Discovery.
Pole
nagłówka
Przeznaczenie
Typ
Wartość 2 – oznacza komunikat datagram za duży
Kod
0 (zero – wstawione przez nadawcę i ignorowane przez odbiorcę);
Suma
kontrolna
16-bitowym polu jest przechowywana wartość sumy kontrolnej
komunikatu ICMPv6.
MTU
Długość MTU następnego skoku
19/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikat błędu ICMPv6 - Datagram za
duży - Packet Too Big
W przykładzie 1 przedstawiono przechwyconą komunikację dla komunikatu Packet Too Big.
Komunikat został wygenerowany przez router przy próbie przesłania komunikatu Echo Request
(o wielkości 1500 bajtów) poprzez interfejs, którego MTU ma wartość 1280.
Frame:
+ Ethernet: Etype = IPv6
- Ipv6: Next Protocol = ICMPv6, Payload Length = 1240
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 1240 (0x4D8)
NextProtocol: ICMPv6, 58(0x3a)
HopLimit: 64 (0x40)
SourceAddress: FEC0:0:0:F282:201:2FF:FEAA:BBCC
DestinationAddress: FEC0:0:0:F282:2B0:D0FF:FEBB:CCDD
- Icmpv6:
Packet too big
MessageType: Packet too big, 2(0x2)
- PacketTooBig:
Code: 0 (0x0)
Checksum: 44349 (0xAD3D)
MTU: 1280 (0x500)
- InvokingPacket: Next Protocol = ICMPv6, Payload Length = 1460
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 1460 (0x5B4)
NextProtocol: ICMPv6, 58(0x3a)
HopLimit: 63 (0x3F)
SourceAddress: FEC0:0:0:F282:2B0:D0FF:FEBB:CCDD
DestinationAddress: FEC0:0:0:0:0:0:0:1
OriginalIPPayload: Binary Large Object (1192 Bytes)
20/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikat błędu ICMPv6 -
Przekroczenie czasu - Time Exceeded
Jeśli router odbiera datagram z wartością zero umieszczoną w polu Limit skoków
lub zmniejsza wartość pola Limit skoków datagramu do zera, to musi odrzucić ten
datagram i
wysłać do węzła źródłowego komunikat Przekroczony czas z
wartością 0 umieszczoną w polu Kod. Oznacza to, że mechanizm routingu nie
zapobiegł utworzeniu się pętli albo ustawiona została zbyt mała początkowa
wartość w polu Limit skoków. Format nagłówka ICMPv6 dla komunikatu błędu
przekroczony czas pokazano na rysunku.
Pole
nagłówka
Przeznaczenie
Typ
Wartość 3 – oznacza komunikat przekroczenie czasu
Kod
Opis w tabeli poniżej
Kod Informacja
0
Przekroczony limit liczby skoków
1
Przekroczony czas składania pakietów. Dokument RFC 2460 określa
ten czas na 60 sekund.
21/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikat błędu ICMPv6 - Problem z
parametrem - Parameter Problem
Jeśli węzeł IPv6 napotyka na problemy z przetwarzaniem podstawowego
nagłówka datagramu lub następnego nagłówka, to musi datagram odrzucić oraz
wysłać do węzła źródłowego datagramu komunikat problem z parametrem,
określając typ i miejsce wystąpienia problemu. Format nagłówka ICMPv6 dla
komunikatu problem z parametrem przedstawiono na rysunku.
Pole nagłówka
Przeznaczenie
Typ
Wartość 4 – oznacza komunikat problem z parametrem
Kod
Opis w tabeli poniżej
Suma kontrolna
16-bitowym polu jest przechowywana wartość sumy kontrolnej komunikatu ICMPv6.
Wskaźnik
Określa przesunięcie oktetu, w którym wykryto błąd, względem początku datagramu.
Kod
Informacja
0 - Erroneous Header Field Encountered
Napotkano błędne pole nagłówka
1 - Unrecognized Next Header Type Encountered
Napotkano nierozpoznany typ w polu
Następny Nagłówek
2 - Unrecognized IPv6 Option Encountered
Napotkano nierozpoznaną opcję IPv6
22/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikaty informacyjne ICMPv6 -
Echo Request oraz Echo Reply
Każdy węzeł IPv6 musi posiadać zaimplementowaną funkcję odbierania
komunikatu zapytanie o Echo
i wysyłania odpowiadającego mu komunikatu
odpowiedź Echo. Węzeł powinien także posiadać zaimplementowany interfejs
warstwy aplikacji do obsługi obu komunikatów w celach diagnostycznych. Postać
komunikatów zapytanie/odpowiedź Echo przedstawiono na rysunku.
23/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikaty informacyjne ICMPv6 -
Echo Request oraz Echo Reply
Pole nagłówka
Przeznaczenie
Typ
128
Kod
0
Suma kontrolna
16-bitowym polu jest przechowywana wartość sumy kontrolnej komunikatu ICMPv6.
Identyfikator
Liczba pomocna w dopasowaniu komunikatu odpowiedź Echo do komunikatu zapytanie o Echo. Może
mieć wartość zero;
Numer
sekwencyjny
Wartość z pola Numer sekwencyjny komunikatu zapytanie o Echo;
Dane
Zero lub więcej oktetów danych.
Tabela 1.
Znaczenie pól nagłówka dla komunikatu zapytanie o Echo
Pole nagłówka
Przeznaczenie
Typ
129
Kod
0
Suma kontrolna
16-bitowym polu jest przechowywana wartość sumy kontrolnej komunikatu ICMPv6.
Identyfikator
Wartość liczbowa uzyskana z komunikatu zapytanie o Echo
Numer
sekwencyjny
Wartość z pola Numer sekwencyjny komunikatu zapytanie o Echo;
Dane
Zero lub więcej oktetów danych z komunikatu zapytanie o Echo.
Tabela 2.
Znaczenie pól nagłówka dla komunikatu odpowiedź Echo
24/29
Tajemnice protokołu IPv6
Jacek Światowiak
Komunikaty informacyjne ICMPv6 -
Echo Request oraz Echo Reply
Komunikat Echo Request
Frame:
+ Ethernet: Etype = IPv6
- Ipv6: Next Protocol = ICMPv6, Payload Length = 40
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 40 (0x28)
NextProtocol: ICMPv6, 58(0x3a)
HopLimit: 128 (0x80)
SourceAddress: FE80:0:0:0:260:97FF:FEAA:BBCC
DestinationAddress:
FE80:0:0:0:260:97FF:FEBB:CCDD
- Icmpv6: Echo request, ID = 0x0, Seq = 0x18
MessageType: Echo request, 128(0x80)
- EchoRequest:
Code: 0 (0x0)
Checksum: 52045 (0xCB4D)
Identifier: 0 (0x0)
SequenceNumber: 24 (0x18)
EchoData: Binary Large Object (32 Bytes)
Komunikat Echo Reply
Frame:
+ Ethernet: Etype = IPv6
- Ipv6: Next Protocol = ICMPv6, Payload Length = 40
+ Versions: IPv6, Internet Protocol, DSCP 0
PayloadLength: 40 (0x28)
NextProtocol: ICMPv6, 58(0x3a)
HopLimit: 128 (0x80)
SourceAddress: FE80:0:0:0:260:97FF:FEBB:CCDD
DestinationAddress:
FE80:0:0:0:260:97FF:FEAA:BBCC
- Icmpv6: Echo reply, ID = 0x0, Seq = 0x18
MessageType: Echo reply, 129(0x81)
- EchoReply:
Code: 0 (0x0)
Checksum: 51789 (0xCA4D)
Identifier: 0 (0x0)
SequenceNumber: 24 (0x18)
EchoData: Binary Large Object (32 Bytes)
25/29
Tajemnice protokołu IPv6
Jacek Światowiak
Przykład praktyczny
Nadawanie manualne adresów
Routing statyczny
Przykład
26/29
Tajemnice protokołu IPv6
Jacek Światowiak
Dokumenty na których się opieramy:
RFC 4291 - IP Version 6 Addressing Architecture (luty 2006)
5952 - A Recommendation for IPv6 Address Text Representation
6052 - IPv6 Addressing of IPv4/IPv6 Translators
RFC 3484 - Default Address Selection for Internet Protocol version 6
(IPv6) (luty 2003)
5220 - Problem Statement for Default Address Selection in Multi-Prefix
Environments: Operational Issues of RFC 3484 Default Rules
Update to RFC 3484 Default Address Selection for IPv6 draft-ietf-
6man-rfc3484-revise-05.txt
RFC 4941 - Privacy Extensions for Stateless Address
Autoconfiguration in IPv6
(wrzesień 2007)
Przykład
27/29
Tajemnice protokołu IPv6
Jacek Światowiak
Przykład
28/29
Tajemnice protokołu IPv6
Jacek Światowiak
Dziękuję za uwagę…
W następnej części: Protokół Neighbor Discovery
29/29