Маршрутизация
Категория: Сети TCP/IP | Автор: admin | 17-02-2010, 06:54 | Просмотров: 2972

Маршрутизация — это процесс направления пакета по лабиринту сетей, находящихся между отправителем и адресатом. Маршрутизация в TCP/IP происходит подобно тому, как путешественник, первый раз посетивший незнакомую страну, отыскивает нужный ему дом, задавая вопросы местным жителям. Первый человек, с которым он заговорит, возможно, укажет ему нужный город. Войдя в этот город, путешественник спросит другого прохожего о нужной улице, и тот расскажет, как туда попасть. В конце концов наш путешественник подойдет достаточно близко к конечному пункту своих странствий, чтобы кто-нибудь указал ему дом, который он ищет.

Данные маршрутизации в системе TCP/IP имеют форму правил (маршрутов), например: "Для того чтобы достичь сети А, посылайте пакеты через машину С". Может существовать и стандартный маршрут; он объясняет, что нужно делать с пакетами, предназначенными для отправки в сеть, маршрут к которой не указан явным образом.

Данные маршрутизации хранятся в одной из таблиц ядра. Любой элемент подобной таблицы содержит несколько параметров, включая сетевую маску для каждой перечисленной сети (раньше это поле было опциональным, но теперь оно обязательно, если стандартная сетевая маска неверна). Для направления пакета по конкретному адресу ядро подбирает наиболее подходящий маршрут (т.е. тот, где самая длинная маска). Если ни один из маршрутов (в том числе стандартный) не подходит, то отправителю возвращается ICMP-сообщение об ошибке "network unreachable" (сеть недоступна).

Слово "маршрутизация" употребляется:

  • с целью обозначения процедуры поиска сетевого адреса в специальной таблице для направления пакета в пункт его назначения;
  • для обозначение процесса построения упомянутой таблицы.

Ниже мы рассмотрим, как осуществляется переадресация пакетов и как вручную добавить или удалить маршрут. Более сложные вопросы, связанные с работой протоколов маршрутизации, создающих и обслуживающих маршрутные таблицы, освещаются в главе 14.

 

Таблицы маршрутизации

 

Таблицу маршрутизации можно просмотреть с помощью команды netstat -r, доступной во всех системах, или route get в BSD-системах. Команда будет подробно изучена в параграфе 20.4, здесь же мы приведем небольшой пример, чтобы у читателей было представление о том, что такое маршруты. В рассматриваемой системе две сетевые платы: 132.236.227.93 (eth0) в сети 132.236.227.0/24 и 132.236.212.1 (ethl) в сети 132.236.212.0/26.

% netstat -r -n

Kernel IP routing table

Destination      Mask             Gateway         Fl   MSS     If

132.236.227.0    255.255.255.0    132.236.227.93  U    1500    eth0

default          0.0.0.0          132.236.227.1   UG   1500    eth0

132.236.212.0    255.255.255.192  132.236.212.1   U    1500    ethl

132.236.220.64   255.255.255.192  132.236.212.6   UG   1500    ethl

127.0.0. 1       255.255.255.255  127.0.0.1       U    3584    lo0

 

Поле destination обычно содержит сетевой адрес. В поле gateway должен быть указан адрес узла. Например, четвертый маршрут говорит о том, что для достижения сети 132.236.220.64/26 пакеты следует посылать в шлюз 132.236.212.6 через интерфейс ethl. Вторая запись содержит стандартный маршрут; пакеты, не адресованные явно ни одной из указанных сетей (или самому компьютеру), будут направлены в стандартный шлюз 132.236.227.1. Компьютеры могут посылать пакеты только тем шлюзам, которые физически подключены к той же самой сети.

Вести таблицы маршрутизации можно статически, динамически или комбинированным методом. Статический маршрут — это маршрут, который задается явно с помощью команды route. Он должен оставаться в таблице маршрутизации на всем протяжении работы системы. Во многих случаях такие маршруты задаются с помощью одного из стартовых сценариев во время начального запуска системы. Например, в Red Hat команды

# route add -net 132.236.220.64 netmask 255.255.255.192 132.236.212.6

# route add default 132.236.227.1

 

добавляют четвертый и второй маршруты из числа тех, что отображаются выше командой netstat -r -n (первый и третий маршруты добавляются командой ifconfig при конфигурировании устройств eth0 и ethl).

 

Последний маршрут также добавляется на этапе начальной загрузки. Он определяет псевдоустройство, называемое интерфейсом обратной связи. Это устройство не дает пакетам, которые компьютер посылает сам себе, выходить в сеть. Вместо этого они напрямую переносятся из выходной очереди во входную внутри ядра.

В относительно стабильной локальной сети статическая маршрутизация — достаточно эффективное решение. Эта система проста в управлении и надежна, но она требует, чтобы системный администратор знал топологию сети на момент начальной загрузки и чтобы эта топология в периоды между загрузками не изменялась. Компьютеры локальной сети имеют один единственный выход во внешний мир, поэтому маршрутизация осуществляется очень просто: достаточно на этапе начальной загрузки добавить стандартный маршрут.

В сетях с более сложной топологией требуется динамическая маршрутизация. Она выполняется процессом-демоном, который ведет и модифицирует таблицу маршрутизации. Демоны маршрутизации, "обитающие" на различных машинах, общаются между собой с целью определения топологии сети и решения вопроса о том, как добраться до дальних адресатов. Имеется несколько таких демонов. В главе 14 мы опишем стандартный UNIX-демон routed и более совершенный демон gated, а также протоколы, на которых они общаются.

 

Переадресующие пакеты протокола ICMP

 

В принципе, протокол IP не предусматривает средств управления маршрутной информацией, но в нем есть небольшой механизм контроля нарушений — переадресующие ICMP-пакеты. Если маршрутизатор направляет пакет компьютеру, находящемуся в той же сети, из которой этот пакет был получен первоначально, то что-то работает явно неправильно. Поскольку отправитель, маршрутизатор и маршрутизатор следующего уровня находятся в одной сети, то пакет, вероятно, можно послать не через два перехода, а через один. Маршрутизатор делает вывод о том, что таблицы маршрутизации отправителя — неточные или неполные.

В этой ситуации маршрутизатор может уведомить отправителя о данной проблеме с помощью переадресующего ICMP-пакета. Такой пакет, по сути дела, сообщает: "Не нужно посылать мне пакеты для машины ххх; их следует адресовать машине ууу". Протокол ICMP позволяет посылать переадресующие пакеты как по адресам отдельных компьютеров, так и целым сетям. Во многих реализациях, однако, допускается создание пакетов только первого типа.

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

Стандартный ICMP-сценарий не подразумевает этапа аутентификации. Маршрутизатор получает от другого, известного ему маршрутизатора команду перенаправить трафик в другое место. Нужно ли подчиниться этой команде? В действительности такой сценарий создает определенные проблемы с точки зрения безопасности. Поэтому переадресующие пакеты запрещены в ядрах Linux и FreeBSD, а также в маршрутизаторах Cisco. Считается, что не стоит позволять непроверенным узлам модифицировать таблицы маршрутизации.


 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page