Когда я читаю новости про IPv6 у меня складывается впечатление, что все сводится к выводам:
При этом забывается масса важных деталей, которые сильно портят картину.
Когда создавался интернет, казалось, что 4 миллиарда адресов хватит всем с избытком. Сейчас, кол-во устройств, которые хотят в сеть, давно перевалило за это число и каждому адреса не хватает.
Самое интересное, что архитектура IP разрабатывалась с учетом избытка адресов — маршрутизация идет по префиксам адресов. В идеале, с точки зрения IP, сети должны быть в виде дерева, каждый узел которого имеет префикс, включающий все дочерние сети. Нарушение этого правила карается добавлением дополнительных записей в таблицу маршрутизации.
Из этого следуют следующие выводы:
Очень распространено мнение, что нас спасет NAT.
Для того, чтобы разобраться с ним, надо понять, как он работает. Общий принцип примерно следующий:
Этот принцип накладывет следующие ограничения:
На примере, это выглядит следующим образом:
То есть мы будем получать проблемы с некоторыми сайтами в периоды пиковой нагрузки.
В реальности, цифры при этом будут существенно менее оптимистичными, по следующим причинам:
При этом список ресурсов, которые массово используются пользователями не ограничивается сайтами. Он так же включает в себя:
Из этого следуют следующие выводы:
Очень распростанено мнение, что простому человеку белый IP-адрес не нужен, но это не совсем так.
Белый IP-адрес, может понадобиться:
То есть белый IP часто жизненно необходим людям, которым нужно работать из дома. При этом, заказать услугу «белый IP» у провайдера не всегда возможно.
Так же подсети белых IP-адресов могут понадобиться организациям, которые оказывает поддержку других организаций по VPN: когда используется несколько VPN до разных организаций, становится трудно избегать пересечения адресного пространства внутри своей и сторонней организации.
У IPv6 помимо увеличения адресного пространства есть еще ряд преимуществ, среди них хотелось бы отметить:
Лично у меня напрашиваются следующие выводы:
- Единственный плюс IPv6 — практически безграничное адресное пространство;
- IP-адресов мало, но, так как большинству белый адрес не нужен, нас спасет NAT;
- Если «отжать» IP-адреса у компаний, получивших большие пулы на заре интернета, то хватит еще на несколько лет.
При этом забывается масса важных деталей, которые сильно портят картину.
О проблеме нехватки IP-адресов
Когда создавался интернет, казалось, что 4 миллиарда адресов хватит всем с избытком. Сейчас, кол-во устройств, которые хотят в сеть, давно перевалило за это число и каждому адреса не хватает.
Самое интересное, что архитектура IP разрабатывалась с учетом избытка адресов — маршрутизация идет по префиксам адресов. В идеале, с точки зрения IP, сети должны быть в виде дерева, каждый узел которого имеет префикс, включающий все дочерние сети. Нарушение этого правила карается добавлением дополнительных записей в таблицу маршрутизации.
Из этого следуют следующие выводы:
- Чем более плотно используется адресное пространство, тем больше таблицы маршрутизации и затраты на их поддержание;
- Выдавать IP-адреса можно только пачками;
- Перераспределять адресное пространство дорого, то есть отнимание IP-адресов у зажравшихся империалистов ситуацию изменит не сильно.
Почему NAT не панацея?
Очень распространено мнение, что нас спасет NAT.
Для того, чтобы разобраться с ним, надо понять, как он работает. Общий принцип примерно следующий:
- Каждому сетевому IP-соединению соответствует комбинация: <IP-адрес клиента>:<порт на клиенте> — <IP-адрес сервера>:<порт на сервере>
- Порт на клиенте может быть произвольным, благодаря этому NAT может подменять внутренний адрес клиента на свой и общаться от своего имени.
Для этого ему нужно хранить табличку с соответствием:
<IP-адрес клиента>:<порт на клиенте> — <IP-адрес сервера>:<порт на сервере>, <порт на NAT>
Этот принцип накладывет следующие ограничения:
- Общее кол-во соединений с одного внешнего IP-адреса на один сетевой ресурс (комбинация <IP-адрес сервера>:<порт на сервере>) может быть не больше количества портов (для TCP и UDP оно равно 65535 — 4096 = 61439).
- Сервер не может быть за NAT, если NAT о нем ничего не знает (на домашних маршрутизаторах эта проблема обычно решается при помощи UPnP).
- Протоколы, которые не имеют понятие порта (например GRE), идентифицируются в NAT только по <IP-адресу сервера>, из-за этого за NAT по этим протоколам может к серверу подключиться только один клиент.
- Если пользователя за NAT-ом банят по IP, то страдают все, кто за тем же NAT-ом.
Общее кол-во соединений с одного внешнего IP-адреса на один сетевой ресурс может быть не больше количества портов
На примере, это выглядит следующим образом:
- Допустим за NAT-сидит 62000 человек;
- Все эти пользователи попытаются открыть окошко с сайтами yandex.ru и vk.ru;
- yandex.ru откроется у всех, так как имя yandex.ru ссылается на 6 IP-адресов;
- vk.ru откроется только у части пользователей, так как имя vk.ru ссылается на 1 IP-адрес (портов не хватило).
То есть мы будем получать проблемы с некоторыми сайтами в периоды пиковой нагрузки.
В реальности, цифры при этом будут существенно менее оптимистичными, по следующим причинам:
- браузеры обычно открывают несколько соединений на один сайт;
- после закрытия соединения порт некоторое время нельзя использовать для соединения с тем же ресурсом (особенно это актуально для UDP, где факт закрытия отсутствует).
При этом список ресурсов, которые массово используются пользователями не ограничивается сайтами. Он так же включает в себя:
- мессенджеры (ICQ, Google Talk и т.п.);
- сервера с обновления операционной системы, антивирусов и т.п.;
- службы хранения информации в online (Google Android, Dropbox, Ubuntu one и т.п.);
- сервера времени;
- DNS-сервера;
- teredo-сервера.
Из этого следуют следующие выводы:
- Емкость NAT-а ограничена. NAT позволяет «отодвинуть» решение проблемы, но не решает её.
- Слишком большое число пользователей за NAT-ом может приводить к трудноуловимым проблемам.
Кому нужен «белый» IP-адрес?
Очень распростанено мнение, что простому человеку белый IP-адрес не нужен, но это не совсем так.
Белый IP-адрес, может понадобиться:
- Тем, кому нужен VPN до работы.
В Microsoft Windows штатная реализация VPN использует протокол GRE, у которого нет понятия порта. Из-за этого с NAT-ом этот протокол работает плохо.
OpenVPN, Cisco VPN от этой проблемы не страдают, но и пользователю их настроить сложнее (в комплект Microsoft Windows они не входят). - Тем, кому нужно использование P2P соединений.
VoIP, Torrent и некоторые другие приложения любят передавать данные напрямую без участия внешнего сервера. NAT препятствует созданию прямого соединения. Обходится это путем хитрых алгоритмов, успешность которых зависит от типа NAT и использования внешних серверов.
То есть белый IP часто жизненно необходим людям, которым нужно работать из дома. При этом, заказать услугу «белый IP» у провайдера не всегда возможно.
Так же подсети белых IP-адресов могут понадобиться организациям, которые оказывает поддержку других организаций по VPN: когда используется несколько VPN до разных организаций, становится трудно избегать пересечения адресного пространства внутри своей и сторонней организации.
Какие плюшки дает IPv6, кроме увеличения адресного пространства?
У IPv6 помимо увеличения адресного пространства есть еще ряд преимуществ, среди них хотелось бы отметить:
- Упрощение маршрутизации.
IP изначально проектировался с учетом на разряженное адресное пространсво. - Увеличение скорости передачи данных.
В IPv4 максимальная скорость передачи данных по TCP из-за размеров «окна» равна: 64Кбайт / <время отклика>
То есть, если время отклика равно 150 мс, то данные по одному TCP-потоку можно прокачивать со скоростью не более 426 Кбайт/сек.
Обычно это ограничение обходится путем передачи данных по UDP или в несколько TCP-потоков. Именно из-за этого лимита появились бесчисленные программы для быстрого скачивания с сайтов.
В IPv6 такого жесткого ограничения нет. - Мультикаст.
Сейчас интернет-радиостанции вынуждены вещать каждому пользователю персонально одно и то же. Эфирное телевещание при такой схеме даже представить страшно.
В IPv6 можно отправлять данные сразу нескольким подписчикам.
Итого
Лично у меня напрашиваются следующие выводы:
- Момент когда разом закончатся IP-адреса наступит очень не скоро, но от этого не легче;
- Процесс перехода на IPv6 идет черепашьими темпами и ускорения не предвидится, пока не начнутся реальные проблемы с получением IP-адреса;
- Из-за нехватки IP-адресов все больше пользователей будут запихивать за NAT;
- Пользователи без IPv6-адресов за NAT-ом начнут испытывать неожиданные проблемы при доступе к различным ресурсам.