Маршрутизатор, поддерживающий несколько сетевых протоколов, называется многопротокольным маршрутизатором (multiprotocol router). Он должен либо преобразовывать их, либо обеспечивать соединение на вышележащем уровне протокола. Ни один из двух вариантов не отвечает всем требованиям сети. Соединение на более высоком уровне, скажем, с применением TCP, предполагает, что TCP реализован во всех сетях (а это не всегда так). При этом в сетях могут функционировать только приложения, использующие TCP (к ним не относятся многие программы, работающие в реальном времени).
Другой вариант — конвертация пакетов между разными сетями. Однако если пакеты не близки по формату и не имеют одинаковых информационных полей, такое преобразование всегда будет неполным и часто обречено на ошибку. К примеру, длина IPv6-адресов составляет 128 бит. И как бы ни старался маршрутизатор, такой адрес ни за что не поместится в 32-битное поле адреса IPv4. Проблема использования IPv4 и IPv6 в одной сети оказалась серьезным препятствием к внедрению IPv6. (И честно говоря, по этой же причине потребителей так и не удалось убедить в том, что они должны его использовать.) Но еще более серьезные проблемы возникают, если нужно выполнять конвертацию между принципиально разными протоколами — например, между не требующим соединения и ориентированным на его установление. Такие преобразования практически никогда не выполняются. Вероятно, IP работает так хорошо только потому, что служит чем-то вроде наименьшего общего знаменателя. Он не многого требует от сетей, однако предоставляет только уровень обслуживания best effort.
5.5.4. Соединение конечных точек в гетерогенных сетях
Объединение сетей в общем случае является исключительно сложной задачей. Однако существует частный случай, реализация которого вполне осуществима даже для разных сетевых протоколов. Это ситуация, при которой хост-источник и хост-приемник расположены в одинаковых сетях, но между ними находится сеть другого типа. Например, представьте себе международный банк, у которого имеется сеть IPv6 в Париже и такая же — в Лондоне, а между ними находится IPv4, как показано на илл. 5.38.
Илл. 5.38. Туннелирование пакета из Парижа в Лондон
Для решения этой проблемы используется туннелирование (tunneling). Чтобы передать IP-пакет хосту в Лондоне, хост в Париже формирует пакет, содержащий лондонский IPv6-адрес, и отправляет его на многопротокольный маршрутизатор, соединяющий парижскую сеть IPv6 и сеть IPv4. Получив пакет IPv6, маршрутизатор помещает его в другой пакет с IPv4-адресом маршрутизатора, соединяющего сеть IPv4 и лондонскую сеть IPv6. Когда пакет попадает на этот адрес, лондонский многопротокольный маршрутизатор извлекает исходный IPv6-пакет и передает его дальше на хост назначения.
Путь через сеть IPv4 можно рассматривать как большой туннель, идущий от одного многопротокольного маршрутизатора до другого. IPv6-пакет просто перемещается от одного конца туннеля до другого в удобной «коробке». Ему не нужно беспокоиться о взаимодействии с сетью IPv4. Это также касается хостов Парижа и Лондона. Переупаковкой пакета и переадресацией занимаются многопротокольные маршрутизаторы. Для этого им нужно уметь разбираться в IPv6- и IPv4-пакетах. В результате весь путь от одного многопротокольного маршрутизатора до другого работает как один транзитный участок.
Чтобы сделать этот пример еще проще и понятнее, рассмотрим аналогию. Представьте водителя автомобиля, направляющегося из Парижа в Лондон. По дорогам Франции автомобиль едет самостоятельно. Но достигнув Ла-Манша, он загружается в высокоскоростной поезд и транспортируется под проливом по туннелю (автомобилям запрещено ездить по этому туннелю). Фактически автомобиль перевозится как груз (илл. 5.39). Прибыв в Великобританию, он спускается с железнодорожной платформы на английское шоссе и снова продолжает путь своим ходом. Точно такой же принцип применяется при туннелировании пакетов, проходящих через чужеродную сеть.
Туннелирование широко используется для соединения изолированных хостов и сетей посредством других сетей. В результате появляется новая сеть, которая, по сути, накладывается на старую. Она называется оверлейной сетью (overlay). Использование сетевого протокола с новым свойством (как в нашем примере, где сети IPv6 соединяются через IPv4) — достаточно распространенная причина применения этого метода. Недостатком туннелирования является то, что пакет невозможно доставить на хосты сети-посредника. Однако это становится преимуществом в сетях VPN. Это обычная оверлейная сеть, использующаяся в качестве меры безопасности. Более подробно о VPN мы поговорим в главе 8.
Илл. 5.39. Туннелирование автомобиля из Парижа в Лондон
5.5.5. Межсетевая маршрутизация