Компьютерные сети

Куроуз Дж., Росс К.


Источник: Куроуз Дж., Росс К. Компьютерные сети. 2-е изд. - СПб.: Питер, 2004. - с. 372-375.


Рассмотрим довольно практический вопрос: как перевести на IPv6 Интернет, функционирующий по протоколу IPv4? Проблема заключается в том, что, хотя новые IPv6-системы можно сделать обратно совместимыми, то есть реализовать в них поддержку дейтаграмм старого формата, уже работающие IPv4-системы не смогут обрабатывать IPv6-дейтаграммы. Решений может быть несколько.

Одним из решений могло бы стать объявление о некой дате перехода с IPv4 на IPv6. Последняя подобная глобальная смена технологий (переход с протокола NCP на TCP для предоставления надежной транспортной службы) произошла почти 20 лет назад. ОДнако уже довольно давно, еще когда Интернет был крошечный и управлялся небольшим колическтвом "волшебников", стало ясно, что подобный "день икс" невозможен. Сегодня такая операция затронула бы сотни миллионов машин и миллионы сетевых администраторов и пользователей. В RFC 2893 описывается два подхода (которые можно использовать вместе или по отдельности) постепенного ввода IPv6-хостов в "мир" IPv4 (с долгосрочной целью, разумеется, полного перехода IPv4-узлов на протокол IPv6).

Вероятно, наиболее простой способ внедрить в Интернет узлы, поддерживающие протокол IPv6, представляет собой метод двойного стека, при котором IPv6-узлы обладают полной поддержкой протокола IPv4. Некоторые узлы, называемые в RFC 2893 IPv6/IPv4-узлами, обладают способностью принимать и посылать как IPv4-дейтаграммы, так и IPv6-дейтаграммы. Взаимодействуя с IPv4-узлом, IPv6/IPv4-узел может использовать IPv4-дейтаграммы; взаимодействуя с IPv6-узлом, он может использовать IPv6-дейтаграммы. У IPv6/IPv4-узла должен быть как IPv4-адрес, так и IPv6-адрес. Кроме того, они должны уметь определять, поддерживает ли другой узел протокол IPv6 или только IPv4. Эта проблема может быть разрешена с помощью DNS-сервера, возращающего IPv6-адрес узла, если данный узел поддерживает протокол IPv6, или IPv4-адрес узла в противном случае. Разумеется, если узел, выдающий DNS-запрос, сам поддерживает только протокол IPv4, DNS-сервер возращает только IPv4-адрес.

При таком подходе, если либо отправитель, либо получатель поддерживает только протокол IPv4, должна быть использована IPv4-дейтаграмма. В результате возможна ситуация, когда два узла, поддерживающие протокол IPv6, обмениваются дейтаграмамми в формате IPv4. Эту ситуацию иллюстрирует рис. 4.40. Предположим, что узел А, поддерживающий протокол IPv6, хочет переслать IP-дейтаграмму узлу F, который также обеспечивает поддержку протокола IPv6. То есть узлы А и В могут обмениваться дейтаграммами формата IPv6, но чтобы переслать дейтаграмму узлу С, узел В должен создать IPv4-дейтаграмму. Разумеется, поле данных IPv6-дейтаграммы копируется в поле данных IPv4-дейтаграммы, также выполняется соответствующее преобразование адресов. ОДнако некоторые поля протокола IPv6 (например, поле идентификатора потока) не имеют соответствий в IPv4-дейтаграммах. В результате при подобном преобразовании хранящаяся в этих полях информация теряется. Таким образом, хотя узлы E и F могут обмениваться дейтаграммами формата IPv6, переданная узлу Е узлом D IPv4-дейтаграмма не содержит всех полей, которые были в оригинальной дейтаграмме, полученной от узла А.