Перейти до вмісту

IPv6

Матеріал з Вікіпедії — вільної енциклопедії.

IPv6 (англ. Internet Protocol version 6) — нова версія IP-протоколу — IP версії 6. Розробка протоколу IPv6 почалася 1992 року, а з 2003 р. його підтримку забезпечують виробники більшості телекомунікаційного устаткування (корпоративного рівня). IPv6 — новий крок у розвитку Інтернету. Цей протокол розроблено з урахуванням вимог до Глобальної мережі, що постійно зростають. 3 лютого 2011 року IANA виділила останні п'ять блоків IP-адрес /8 (IPv4).

Найбільш суттєва різниця між IPv4 та IPv6 полягає в тому, що раніше на інтернет-адресу виділяли 4 байти (32 біти), що відповідає стандартній на сьогодні чотириблоковій адресі IP, а протокол IPv6 виділяє на адресу 16 байтів (128 бітів). Це відповідає 340 секстильйонам адрес (3,4x1038) або по 5x1028 адрес на кожну людину.

Вночі 5 лютого 2008 року організація ICANN, яка наглядає за використанням інтернет-протоколів, почала додавати в DNS-сервери записи, що містять адреси у форматі протоколу IPv6[1]. Це поклало початок переходу з нинішнього протоколу IPv4 на сучасніший IPv6.

У квітні 2009 у мережі UA-IX запущено процес перевірки протоколу IPv6. Серед перших компаній, що ухвалили рішення про участь в тестуванні, — «ТопНЕТ» і «Датагруп». Вони встановили IPv6 BGP-з'єднання з маршрутизатором UA-IX і здійснили обмін маршрутною інформацією між ними. У квітні 2011 розпочалось масове впровадження IPv6 серед домашніх користувачів інтернет.

Історія виникнення

[ред. | ред. код]

Наприкінці 1980-х стала очевидною нестача адресного простору Інтернет. На початку 1990-х, навіть після введення безкласової адресації, виявилось, що однієї економії та використання NAT'у буде замало, щоб запобігти вичерпання адресного простору, і необхідна зміна адресації. Крім того, накопичилась певна кількість пропозицій щодо усунення недоліків наявної моделі Інтернет. Наприкінці 1992 року IETF оголосила конкурс на створення протоколу Інтернет наступного покоління (англ. IP Next Generation — IPng). 25 липня 1994 року IETF ствердила модель IPng з утворенням кількох робочих груп IPng. У 1996 було створено серію RFC, що визначали новий протокол Інтернет. Оскільки версія 5 вже була раніше призначена експериментальному протоколу передачі мультимедійних потоків, новий протокол отримав версію 6.

Вичерпання IPv4 адрес

[ред. | ред. код]

Оцінки повного вичерпання IPv4 адрес розрізнялись в 2000-х, але потім всі оцінки збігалися до 2011 року. У 2003 році директор APNIC Пол Уілсон (англ. Paul Wilson) заявив, що, виходячи з темпів поширення мережі Інтернет того часу, вільного адресного простору вистачить на одне-два десятиріччя. У вересні 2005 року Cisco Systems відзначила, що пула доступних адрес вистачить на 4—5 років. У вересні 2010, виходячи з даних IANA, весь пул адрес IPv4 буде розподілено реєстратурам (RIR) до середини 2011 року[2], в листопаді ця дата була перенесена на березень 2011. 3 лютого 2011 року IANA виділила останні п'ять блоків IP-адрес /8 (IPv4).

Тестування протоколу

[ред. | ред. код]

8 червня 2011 року відбувся Міжнародний день IPv6 — захід з тестування готовності світової інтернет-спільноти до переходу з IPv4 на IPv6, в рамках якого компанії-учасники додали до своїх сайтів IPv6-записи на один день. Тестування пройшло вдало, накопичені дані будуть проаналізовані та враховані при наступному впровадженні протоколу і для підготовки рекомендацій.

Впровадження протоколу

[ред. | ред. код]

Переведення на IPv6 почало виконуватись всередині Google з 2008 року. У специфікації стандарту мобільних мереж LTE вказана обов'язкова підтримка IPv6. Проблемою для впровадження IPv6 є те, що не всі операційні системи повністю підтримують протокол IPv6.

Порівняння з IPv4

[ред. | ред. код]

Розширення адресного простору скасовує необхідність використання NAT, оскільки на кожну людину припадає близько 3*108 унікальних адрес.

Принцип призначення хосту IPv6 адреси є ієрархічним. Мінімальний розмір підмережі — /64 (264). Молодша частина адреси (64 біти) використовується як унікальний ідентифікатор користувача, наступна частина визначає підмережу всередині оператора зв'язку, далі йде ідентифікатор самого оператора. Такий підхід значно спрощує маршрутизацію.

З IPv6 вилучено кілька функцій, що ускладнюють роботу маршрутизаторів:

  • Маршрутизатори більше не розбивають (фрагментують) пакет на частини (розбиття пакета можливо тільки на боці передавача). Відповідно, оптимальний MTU має визначатися за допомогою Path MTU discovery. Для покращення роботи протоколів, що потребують низького рівня втрати пакетів, мінімальний MTU збільшено до 1280 байт. Інформацію про фрагментацію пакетів перенесено з основного заголовка в розширені;
  • Зникла контрольна сума. Оскільки канальні (Ethernet) та транспортні (TCP) протоколи також перевіряють коректність пакета, контрольна сума на рівні IP вважається зайвою. Крім того, кожен маршрутизатор зменшує hop limit на одиницю, що призводить до потреби у перерахуванні суми в IPv4.

Незважаючи на суттєве збільшення розміру адреси IPv6, завдяки цим покращенням основний заголовок пакета збільшився лише у 2 рази: з 20 до 40 байтів.

Покращення IPv6 у порівнянні з IPv4:

  • В надшвидкісних мережах можлива підтримка надвеликих пакетів (джамбограм) — до 4 гігабайт;
  • Time to Live перейменовано в Hop limit;
  • З'явились відмітки потоків та класи трафіку;
  • З'явилась багатоадресна передача;
  • Протокол IPsec з рекомендованого перетворився на обов'язковий.

Автоконфігурація

[ред. | ред. код]

У момент ініціалізації мережевого інтерфейсу йому призначується локальна IPv6-адреса, з префіксом fe80::/10, у молодшій частині адреси розміщується ідентифікатор інтерфейсу. Ідентифікатором інтерфейсу часто слугує 64-бітний розширений унікальний ідентифікатор EUI-64[en], що найчастіше формується з MAC адреси. Локальна адреса дійсна тільки в межах мережевого сегмента канального рівня, і використовується, в основному, для обміну інформаційними ICMPv6 пакетами.

Для отримання інших адрес вузол може запросити інформацію про налаштування мережі у маршрутизаторів за допомогою ICMPv6 повідомлення «Router Solicitation». Цей запит відсилається на групову (multicast) адресу маршрутизаторів. У відповідь маршрутизатори відсилають ICMPv6 повідомлення «Router Advertisement», що може містити інформацію про префікс мережі, адресу шлюзу, адреси рекурсивних серверів DNS[3], MTU та багато інших параметрів. Поєднуючи мережевий префікс та ідентифікатор інтерфейсу, вузол отримує нову адресу. Для захисту персональних даних ідентифікатор інтерфейсу може бути замінений на псевдовипадкове число.

Для більшого адміністративного контролю може бути використаний DHCPv6[en], що дозволяє адміністратору маршрутизатора призначати вузлам конкретні адреси.

Адресація

[ред. | ред. код]

Адреси IPv6 мають 128 бітів. Дизайн адресного простору IPv6 реалізує зовсім іншу філософію дизайну, ніж в IPv4, в якій підмережа використовувалася для підвищення ефективності використання малого адресного простору. У IPv6 адресний простір вважається досить великим у передбачуваному майбутньому, а локальна підмережа завжди використовує 64 біти для частини що приймає адрес, позначеної як ідентифікатор інтерфейсу, тоді як найважливіші 64 біти використовуються як префікс для маршрутизаторів.

Ідентифікатор унікальний лише в підмережі, до якої підключений хост. IPv6 має механізм автоматичного виявлення адреси, так що адресу автоконфігурації завжди створює унікальну передачу.

Відмітки потоків

[ред. | ред. код]

Введення поля «Відмітка потоку» в протоколі IPv6 дозволяє значно спростити процедуру маршрутизації однорідного потоку пакетів. Потік — це послідовність пакетів, що надсилаються відправником певному адресату. При цьому припускається, що всі пакети даного потоку мають бути оброблені певним чином. Характер даної обробки задається додатковими заголовками.

Припускається існування декількох потоків між відправником та отримувачем. Відмітка потоку призначається вузлом-відправником шляхом генерації псевдовипадкового 20-бітного числа. Всі пакети одного потоку мають містити однакові заголовки, що оброблюються маршрутизатором.

При отриманні першого пакета з відміткою потоку маршрутизатор аналізує додаткові заголовки, виконує певні операції відповідно до цих заголовків та запам'ятовує результати обробки (адресу наступного вузла, опції заголовку переходів, переміщення адрес у заголовку маршрутизації тощо) в локальному кеші. Ключем для такого запису є комбінація адреси відправника та відмітки потоку. Наступні пакети з тією самою комбінацією адреси відправника та відмітки потоку обробляються з урахуванням інформації кешу без детального аналізу усіх полів заголовка.

Час життя запису у кеші становить не більше 6 секунд, навіть якщо пакети цього потоку продовжують надходити. Після видалення запису з кешу при отриманні наступного пакета потоку, пакет обробляється у звичайному режимі і для нього відбувається формування нового запису в кеші. Слід зауважити, що вказаний час життя потоку може бути явно заданий вузлом відправником за допомогою протоколу керування або опцій заголовку переходів, і може перевищувати 6 секунд.

Пріоритезація пакетів забезпечується маршрутизаторами на основі перших шести бітів поля Traffic Class. Перші три біти визначають клас трафіку, решта бітів визначають пріоритет видалення. Чим більше значення пріоритету, тим вище пріоритет пакета.

В залежності від задач розробники IPv6 рекомендують використовувати наступні коди класу трафіку:

Клас трафіку Призначення
0 Нехарактеризований трафік
1 Наповнювальний трафік (мережеві новини)
2 Автономний інформаційний трафік (електронна пошта)
3 Резерв
4 Неавтономний масовий трафік (FTP, HTTP, NFS)
5 Резерв
6 Інтерактивний трафік (Telnet, X terminal[en], SSH)
7 Керівний трафік (BGP, SNMP)

Нотація

[ред. | ред. код]

IPv6 адреси показуються як вісім груп по чотири шістнадцяткові цифри, розділених двокрапками. Приклад адреси:

2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d

Якщо одна чи більше груп підряд дорівнюють 0000, то вони можуть скорочено записуватись як подвійна двокрапка (::). Наприклад, 2001:0db8:0000:0000:0000:0000:ae21:ad12 може бути скорочена до 2001:db8::ae21:ad12, 0000:0000:0000:0000:0000:0000:ae21:ad12 — до ::ae21:ad12. Скорочення не дозволяється у випадку, коли адреса містить 2 окремі нульові групи через виникнення невизначеності.

При використанні IPv6-адреси в URL необхідно брати адресу в квадратні дужки:

http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]/

Якщо потрібно вказати порт, то він пишеться після дужок:

http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/

Структура пакета

[ред. | ред. код]

Заголовок пакета

[ред. | ред. код]
Зміщення в байтах 0 1 2 3
Відступ в бітах 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 Version Traffic Class Flow Label
4 32 Payload Length Next Header Hop Limit
8 64 Source Address
C 96
10 128
14 160
18 192 Destination Address
1C 224
20 256
24 288

Опис полів:

  • Version: версія протоколу; для IPv6 це значення дорівнює 6 (значення в бітах — 0110).
  • Traffic class: пріоритет пакета (8 бітів). Це поле містить два параметри. Старші 6 бітів використовуються DSCP для класифікації пакетів.[4][5] Решта два біти використовуються ECN для контролю перевантаження.[6]
  • Flow label: відмітка потоку (див. відмітки потоків).
  • Payload length: на відміну від поля Total length протоколу IPv4 дане поле не включає заголовок пакета (16 бітів). Максимальний розмір, що визначається розміром поля, — 64 Кбайти. Для пакетів більшого розміру використовується Jumbo payload[7].
  • Next header: вказує тип розширеного заголовка (англ. IPv6 extension), що розміщений одразу за основним. В останньому розширеному заголовку поле Next header вказує тип транспортного протоколу (TCP, UDP і т. д.)
  • Hop limit: аналог поля time to live в IPv4 (8 бітів).
  • Source Address і Destination Address: адреси відправника та отримувача відповідно; по 128 бітів.

Коди розширених заголовків (поле Next header)

[ред. | ред. код]
Заголовок Тип Розмір Опис RFC
Hop-By-Hop Options 0 Містить вказівки для всіх пристроїв на шляху передачі пакета. RFC 2460
Routing 43 Дозволяє відправнику визначати перелік вузлів, крізь які пакет має пройти. RFC 2460, RFC 3775, RFC 5095
Fragment 44 64 біти Заголовок містить інформацію щодо фрагментації пакета. RFC 2460
Authentication Header (AH) 51 див. IPsec RFC 4302
Encapsulating Security Payload (ESP) 50 див. IPsec RFC 4303
Destination Options 60 Опції, що мають оброблятися тільки отримувачем. RFC 2460
No Next Header 59 0 Визначає відсутність наступного заголовка. Дані, що містяться за цим заголовком мають ігноруватися і передаватися без змін (у випадку маршрутизації). RFC 2460

Якщо використовується декілька заголовків розширення, RFC 1883 рекомендує наступний порядок:

  • IPv6 заголовок
  • Hop-by-Hop Options
  • Destination Options
  • Routing
  • Fragment
  • Authentication
  • Encapsulating Security Payload
  • Destination Options
  • заголовок вищого рівня (наприклад TCP)

Зарезервовані адреси IPv6

[ред. | ред. код]
IPv6 адреса Довжина префікса (біти) Опис Примітки
:: 128 див. 0.0.0.0 в IPv4
::1 128 loopback адреса див. 127.0.0.1 в IPv4
::xx.xx.xx.xx 96 вбудований IPv4 Нижні 32 біти — це IPv4 адреса. Також називається IPv4-сумісною IPv6 адресою. Застарілий, більше не використовується.
::ffff: xx.xx.xx.xx 96 Адреса IPv6, що відображена на IPv4 Нижні 32 біти — це адреса IPv4. Для хостів, що не підтримують IPv6.
2001:db8:: 32 Документування Зарезервовано для прикладів в документації в rfc3849 [Архівовано 20 серпня 2010 у Wayback Machine.]
fe80:: — febf:: 10 link-local Аналог 169.254.0.0/16 в IPv4
fec0:: — feff:: 10 site-local Відмічений як застарілий в rfc3879 [Архівовано 28 липня 2010 у Wayback Machine.]
fc00:: 7 Unique Local Unicast Прийшов на заміну Site-Local rfc4193 [Архівовано 1 серпня 2010 у Wayback Machine.]
ffxx:: 8 multicast

[8]

Див. також

[ред. | ред. код]
  • IPv4
  • IPv5
  • Teredo — протокол інкапсуляції IPv6 в IPv4 UDP
  • 6to4[en] — протокол інкапсуляції IPv6 в IPv4
  • TCP/IP

Примітки

[ред. | ред. код]
  1. Новинар: В інтернеті почалася тотальна заміна IP-адрес. Архів оригіналу за 27 грудня 2016. Процитовано 5 лютого 2008.
  2. IPv4 Address Report. Архів оригіналу за 19 лютого 2011. Процитовано 28 листопада 2010.
  3. RFC 5006
  4. Nickols, K.; Blake, S.; Baker, F.; Black, D. (December 1998) Definition of the Differentiated Service Field (DS Field) in the IPv4 and IPv6 Headers [Архівовано 1 грудня 2012 у Wayback Machine.], IETF. RFC 2474.
  5. Grossman, D. (April 2002) New Terminology and Clarifications for DiffServ [Архівовано 12 травня 2012 у Wayback Machine.], IETF. RFC 3260.
  6. Ramakrishnan, K.; Floyd, S.; Black, D. (September 2001) The Addition of Explicit Congestion Notification (ECN) to IP [Архівовано 29 квітня 2013 у Wayback Machine.], IETF. RFC 3168.
  7. Архівована копія. Архів оригіналу за 29 липня 2012. Процитовано 27 листопада 2010.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  8. IPv6. Архів оригіналу за 23 грудня 2010. Процитовано 2 грудня 2010.

Посилання

[ред. | ред. код]