Назад | Перейти на главную страницу

Туннелирование в IPv6:

Концепция туннелирования 6to4 заключается в инкапсуляции и декапсуляции пакета ipv6 через сеть ipv4. Процесс инкапсуляции:

[IPv6 header][Transport Header][Application Protocol data]

=> инкапсуляция:

[Ip4 Header][IPv6 header][Transport Header][Application Protocol data]

Я говорю из этой инфраструктуры:

Хост A (IPv6) -> Маршрутизатор R1 (двойной стек) -> Сеть IPv4 -> Маршрутизатор R2 (двойной стек) -> Пакет Host B (Ipv6).

Заголовок Ipv4 в инкапсуляции, среди каких заголовков Ipv4: Хост A, Маршрутизатор R1, Маршрутизатор R2 и Хост B?

Заранее спасибо.

6to4 - это обычное туннелирование IP через IP. Кто бы ни делал туннелирование, отправляет пакеты. Поскольку ваш хост A не имеет возможности подключения по протоколу IPv4, он не может действовать как конечная точка туннеля.

В качестве примера у меня есть маршрутизатор (R1) Linux с маршрутом 6to4, который выглядит следующим образом:

2000 :: / 3 через :: 192.88.99.1 dev sit0 metric 1024 mtu 1480 advmss 1420 hoplimit 0

и маршрут IPv4 таким образом:

по умолчанию через XXX.YYY.210.1 dev br0

Интернет-трафик IPv6, поступающий из LAN (например, от хоста A), направляется к sit0. Boxen в локальной сети считает, что они напрямую подключены к Интернету IPv6. Трафик от sit0 упаковывается в пакеты IPv4 с R1 в качестве адреса источника и вводится в br0, который подключается к Интернету IPv4.

Два маршрутизатора R1 и R2 будут выполнять туннелирование. Пакеты, исходящие от R1, будут иметь заголовок IPv4 с IPv4-адресом R1 в качестве источника и IPv4-адресом R2 в качестве пункта назначения (R1 отправляет R2). В ответных пакетах IPv4 адреса отправителя и получателя будут перевернуты (R2 отправляет R1). Адреса IPv6 хостов A и B будут передаваться непереведенными в заголовке инкапсулированного пакета. Обычно используется минимальный 20-байтовый заголовок IP4v, поэтому MTU IPv6 (максимальная единица передачи) в туннеле не превышает 1480 байтов.

Инкапсуляция просто заключается в добавлении заголовка IPv4 к пакету IPv6 и его маршрутизации с использованием обычной маршрутизации IPv6. Деинкапсуляция просто удаляет заголовок IPv4 и нормально маршрутизирует оставшийся пакет IPv6. Пакет IPv6 может проходить более чем через один туннель между двумя хостами. Адреса IPv4 в IPv4 всегда будут адресом туннельного маршрутизатора (источника) и адресом маршрутизатора конечной точки туннеля (получателем).

РЕДАКТИРОВАТЬ: Следующее было написано для описания случая, описанного в следующем абзаце. В других параграфах содержится дополнительная информация.

HostA (IPv6) и HostB (IPv4) не смогут взаимодействовать, поскольку у них нет совместимых стеков. Если бы у HostB был стек IPv6, они могли бы общаться.

Хост с двойным стеком может выполнять собственное туннелирование, и в этом случае его адрес IPv4 будет использоваться в качестве адреса конечной точки IPv4. Если используется NAT, то адрес его маршрутизатора будет адресом конечной точки IPv4, когда пакет находился в сети IPv4 между маршрутизаторами.

IPv6 не имеет NAT, поэтому адреса IPv6 никогда не будут транслироваться.

Чтобы хост только IPv6 мог взаимодействовать с хостом IPv4, требуется трансляция протокола. Хост A может обращаться к хосту B, используя одну из схем IPv6 для кодирования адресов IPv4 в IPv6. Маршрутизатору R1 потребуется выполнить трансляцию протокола. (Хотя я не думаю, что на рынке есть такие маршрутизаторы.) Опять же, адрес конечной точки IPv4 в сети IPv4 будет адресом IPv4 R1. Некоторые параметры сети могут не переводиться во время трансляции протокола.