Большинство экспертов по межсетевому взаимодействию рекомендуют
оставлять решение проблем маршрутизации шлюзам. Плохо иметь на каждой машине большую таблицу маршрутов. Дело в том, что при каких-либо изменениях в IP-сети приходится менять информацию во всех машинах. Например, при отключении какого-нибудь канала связи для восстановления нормальной работы нужно ждать, пока кто-то заметит это изменение в конфигурации IP-сети и внесет исправления во все таблицы маршрутов
Простейший способ поддержания адекватности маршрутов заключается в том, что изменение таблицы маршрутов каждой машины выполняется по командам только одного шлюза. Этот шлюз должен быть установлен как маршрут по умолчанию. (В ОС UNIX это делается командой “route add default 128.6.4.27.1”, где 128.6.4.27 является IP-адресом шлюза ) Как было описано выше, каждая машина посылает IP-пакет шлюзу по умолчанию в том случае, когда не находит лучшего маршрута. Однако, когда в IP-сети есть несколько шлюзов, этот метод работает не так хорошо. Кроме того, если таблица маршрутов имеет только одну запись о маршруте по умолчанию, то как использовать другие шлюзы, если это более выгодно? Ответ состоит в том, что большинство шлюзов способны выполнять “перенаправление” в тех случаях, когда они получают IP-пакеты, для которых существуют более выгодные маршруты. “Перенаправление” является специальным типом сообщения протокола ICMP (Internet Control Message Protocol - протокол межсетевых управляющих сообщений). Сообщение о перенаправлении содержит информацию, которую можно интерпретировать так: “В будущем для IP-адреса XXXX используйте шлюз YYYY, а не меня”. Корректные реализации TCP/IP должны использовать сообщения о перенаправлении для добавления записей в таблицу маршрутов. Предположим, таблица маршрутов в начале выглядит следующим образом:
--------------------------------------------------------
| адрес флаг вида шлюз интерфейс | | назначения маршрутизации | -------------------------------------------------------- | 127.0.0 прямая <пусто> lo0 | | 128.6.4 прямая <пусто> pe0 | | default косвенная 128.6.4.27 pe0 | -------------------------------------------------------- |
-------------------------------------------------------- | адрес флаг вида шлюз интерфейс | | назначения маршрутизации | -------------------------------------------------------- | 128.6.7.23 косвенная 128.6.4.30 pe0 | -------------------------------------------------------- |