Перейти к содержанию

Transition

Коротко

IPv6 и IPv4 несовместимы напрямую - нужны механизмы перехода. Два подхода:

  • CGN-based - NAT централизованно (DS-Lite, NAT64). Центральный узел хранит состояние сессий.
  • A+P-based - NAT на CPE (MAP-E, MAP-T). Центральный узел stateless, лучше масштабируется.

Любой механизм добавляет сложность. Предпочтителен native dual-stack или native IPv6.

NAT64 / DNS64

Позволяет IPv6-only клиентам обращаться к IPv4 серверам. RFC 6146 (NAT64), RFC 6147 (DNS64).

Компоненты:

  • DNS64 - синтезирует AAAA-записи из A-записей, добавляя NAT64-префикс
  • NAT64 - транслирует IPv6 <-> IPv4, хранит state

Префикс NAT64:

  • Well-Known: 64:ff9b::/96
  • Network-Specific: любой /32, /40, /48, /56, /64, /96 провайдера

Процесс:

  1. Клиент запрашивает AAAA для example.com
  2. DNS64 не находит AAAA, получает A: 93.184.216.34
  3. DNS64 синтезирует: 64:ff9b::5db8:d822 (5db8:d822 = 93.184.216.34 в hex)
  4. Клиент шлет пакет на 64:ff9b::5db8:d822
  5. NAT64 транслирует и форвардит на 93.184.216.34

Ограничения:

  • Не работает с IPv4-литералами в приложениях (http://192.0.2.1)
  • Только исходящие соединения (IPv6 -> IPv4)
  • Не поддерживает протоколы с IP в payload (SIP, FTP active)

Применение: мобильные операторы (T-Mobile US, Telstra, Orange).

464XLAT

Решает проблему IPv4-литералов в приложениях. RFC 6877.

Компоненты:

  • CLAT - на устройстве клиента, транслирует IPv4 -> IPv6
  • PLAT - NAT64 провайдера

Процесс:

  1. Приложение использует IPv4-литерал (192.0.2.1)
  2. CLAT перехватывает, транслирует в IPv6 с NAT64-префиксом
  3. Пакет идет по IPv6-сети до PLAT
  4. PLAT транслирует обратно в IPv4

Применение: Android с 4.3, iOS, Windows 10+.

6to4

Deprecated. RFC 3056 (2001), deprecated RFC 7526 (2015).

Идея: инкапсуляция IPv6 в IPv4 через anycast-релеи. Префикс 2002::/16, где следующие 32 бита - IPv4 адрес.

Проблемы:

  • Асимметричная маршрутизация
  • Ненадежные публичные relay-роутеры
  • Не работает за NAT
  • Высокие задержки

Не использовать в новых развертываниях.

6RD (IPv6 Rapid Deployment)

Улучшенный 6to4 под контролем провайдера. RFC 5969 (2010).

Отличия от 6to4:

  • Префикс провайдера вместо 2002::/16
  • Relay-роутеры (BR) в сети провайдера
  • Трафик симметричный и контролируемый

Компоненты:

  • 6RD CE - Customer Edge, инкапсулирует IPv6 в IPv4
  • 6RD BR - Border Relay, терминирует туннели

Процесс:

  1. CE получает 6RD-префикс и адрес BR через DHCP option 212
  2. CE формирует /64 из 6RD-префикса + своего IPv4
  3. CE инкапсулирует IPv6 в IPv4, шлет на BR
  4. BR декапсулирует и маршрутизирует в IPv6-интернет

Применение: Free (Франция) развернул для миллионов клиентов за 5 недель.

DS-Lite (Dual-Stack Lite)

IPv4 через IPv6-сеть провайдера. RFC 6333 (2011).

CPE не получает публичный IPv4. NAT выполняется централизованно.

Компоненты:

  • B4 - Basic Bridging BroadBand, на CPE. Инкапсулирует IPv4 в IPv6.
  • AFTR - Address Family Transition Router. Терминирует туннель, выполняет CGNAT.

Адреса:

  • AFTR: 192.0.0.1 (well-known)
  • B4: из 192.0.0.0/29

Процесс:

  1. B4 получает адрес AFTR через DHCPv6 option 64
  2. Хост в LAN получает приватный IPv4 (RFC1918)
  3. B4 инкапсулирует IPv4 в IPv6, шлет на AFTR
  4. AFTR декапсулирует, выполняет NAT44, маршрутизирует в IPv4

NAT на CPE не нужен - B4 передает пакеты без трансляции.

Особенности:

  • Централизованное состояние NAT на AFTR
  • AFTR - точка отказа и узкое место
  • ALG для проблемных протоколов на AFTR

MAP-E

Mapping of Address and Port with Encapsulation. RFC 7597 (2015).

NAT на CPE, центральный узел stateless.

Компоненты:

  • MAP CE - выполняет NAPT44 + инкапсуляцию IPv4 в IPv6
  • MAP BR - Border Relay, декапсулирует, без NAT-состояния

Принцип:

  • CE получает часть портов публичного IPv4 (port set)
  • Mapping rules определяют соответствие IPv4+port <-> IPv6

Процесс:

  1. CE получает MAP rules через DHCPv6
  2. CE выполняет NAT44 с выделенным IPv4 и port set
  3. CE инкапсулирует в IPv6, шлет на BR
  4. BR декапсулирует, форвардит по IPv4 без NAT

Оверхед: 40 байт на пакет (IPv6 заголовок). MTU нужно учитывать.

MAP-T

Mapping of Address and Port using Translation. RFC 7599 (2015).

Как MAP-E, но трансляция вместо инкапсуляции.

Отличия от MAP-E:

  • CE: NAT44 + NAT46 (stateless)
  • BR: NAT64 (stateless)
  • Нет оверхеда инкапсуляции
  • IPv4 destination кодируется в IPv6 destination

Применение: когда оверхед MAP-E критичен или нужна классификация по IPv6-заголовкам.

Туннелирование routing protocols

IPv6 routing protocols (OSPFv3, BGP, RIPng) можно запустить через IPv4 backbone используя туннели.

Типы туннелей:

  • Manual IPv6-in-IPv4 (RFC 4213) - protocol 41
  • GRE - более универсальный, поддерживает multicast

GRE предпочтителен для IGP (OSPFv3, EIGRP) - поддерживает multicast для обмена hello/LSA.

Настройка:

  1. Tunnel source/destination - IPv4 адреса
  2. Tunnel mode: ipv6ip или gre ip
  3. На tunnel interface назначается IPv6 (достаточно ipv6 enable для link-local)
  4. Включается routing protocol на tunnel interface

Особенности:

  • OSPFv3 использует link-local как next-hop
  • Можно комбинировать с IPSec для шифрования
  • MTU учитывать: GRE добавляет 24+ байт оверхеда

Сравнение

Механизм NAT на State на Оверхед Статус
NAT64 NAT64 NAT64 - Активно используется
6to4 - - 20B Deprecated
6RD - - 20B Используется
DS-Lite AFTR AFTR 40B Используется
MAP-E CE - 40B Используется
MAP-T CE - - Используется