Туннелирование в 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 (двойной стек) -> Пакет хоста B (Ipv6).
Заголовок Ipv4 в инкапсуляции, какой заголовок Ipv4 это среди: Хост A, Маршрутизатор R1, Маршрутизатор R2 и Хост B?
Заранее спасибо.
2 ответа
6to4 - это обычное IP-туннелирование. Тот, кто выполняет туннелирование, создает пакеты. Так как ваш хост A не имеет подключения IPv4, он не может выступать в качестве конечной точки туннеля.
Например, у меня есть Linux-маршрутизатор (R1) с маршрутом 6to4, который выглядит следующим образом:
2000:: / 3 via:: 192.88.99.1 dev sit0 метрика 1024 mtu 1480 advmss 1420 hoplimit 0
и маршрут IPv4 таким образом:
по умолчанию через XXX.YYY.210.1 dev br0
Интернет-трафик IPv6, поступающий из локальной сети (например, из хоста 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. Некоторые параметры сети могут не переводиться во время трансляции протокола.