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 провайдера
Процесс:
- Клиент запрашивает AAAA для example.com
- DNS64 не находит AAAA, получает A: 93.184.216.34
- DNS64 синтезирует:
64:ff9b::5db8:d822(5db8:d822 = 93.184.216.34 в hex) - Клиент шлет пакет на 64:ff9b::5db8:d822
- 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 провайдера
Процесс:
- Приложение использует IPv4-литерал (192.0.2.1)
- CLAT перехватывает, транслирует в IPv6 с NAT64-префиксом
- Пакет идет по IPv6-сети до PLAT
- 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, терминирует туннели
Процесс:
- CE получает 6RD-префикс и адрес BR через DHCP option 212
- CE формирует /64 из 6RD-префикса + своего IPv4
- CE инкапсулирует IPv6 в IPv4, шлет на BR
- 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
Процесс:
- B4 получает адрес AFTR через DHCPv6 option 64
- Хост в LAN получает приватный IPv4 (RFC1918)
- B4 инкапсулирует IPv4 в IPv6, шлет на AFTR
- 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
Процесс:
- CE получает MAP rules через DHCPv6
- CE выполняет NAT44 с выделенным IPv4 и port set
- CE инкапсулирует в IPv6, шлет на BR
- 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.
Настройка:
- Tunnel source/destination - IPv4 адреса
- Tunnel mode: ipv6ip или gre ip
- На tunnel interface назначается IPv6 (достаточно
ipv6 enableдля link-local) - Включается 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 | - | - | Используется |