• Что такое маршрутизация

    Структура таблицы маршрутизации стека TCP/IP, соответствуя общим принципам построения таблиц маршрутизации (см. предыдущий выпуск рубрики), зависит от конкретной реализации стека TCP/IP. В качестве примера рассмотрим несколько вариантов таблицы маршрутизации, с которыми мог бы работать маршрутизатор М1 в сети, представленной на Рисунке 1.

    Рисунок 1. Пример маршрутизируемой сети.

    Если в качестве маршрутизатора М1 в данной сети применяется программный маршрутизатор MPR операционной системы Microsoft Windows NT, то его таблица маршрутизации могла бы иметь такой же вид, как в Таблице 1. Если на месте маршрутизатора М1 установить аппаратный маршрутизатор NetBuil-der II компании 3Com, то его таблица маршрутизации для этой же сети может выглядеть так, как показано в Таблице 2. В Таблице 3 помещена таблица маршрутизации для маршрутизатора М1, реализованного в виде программного маршрутизатора одной из версий операционной системы UNIX.

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

    ОСНОВНЫЕ ПАРАМЕТРЫ ТАБЛИЦ МАРШРУТИЗАЦИИ

    Несмотря на достаточно заметные внешние различия, во всех трех таблицах присутствуют все ключевые параметры, необходимые для работы маршрутизатора, которые мы рассмотрели ранее при обсуждении концепции маршрутизации. К таким параметрам, безусловно, относятся адрес сети назначения (столбцы Destination в маршрутизаторах NetBuilder и UNIX или Network Address в маршрутизаторе MPR) и адрес следующего маршрутизатора (столбцы Gateway в маршрутизаторах NetBuilder и UNIX или Gateway Address в маршрутизаторе MPR). Третий ключевой параметр - адрес порта, на который нужно направить пакет, в одних таблицах указывается прямо (поле Interface в таблице Windows NT), а в других - косвенно. Так, в таблице UNIX-маршрутизатора вместо адреса порта задается его условное наименование - le0 для порта с адресом 198.21.17.5, le1 для порта с адресом 213.34.12.3 и lo0 для внутреннего порта с адресом 127.0.0.1.

    В маршрутизаторе NetBuilder II поле, указывающее выходной порт в какой-либо форме, вообще отсутствует. Это объясняется тем, что адрес выходного порта всегда можно косвенно определить по адресу следующего маршрутизатора. Например, попробуем определить по Таблице 2 адрес выходного порта для сети 56.0.0.0. Из таблицы видно, что следующим маршрутизатором для этой сети будет маршрутизатор с адресом 213.34.12.4. Адрес следующего маршрутизатора должен принадлежать одной из непосредственно присоединенных к маршрутизатору сетей, и в данном случае это сеть 213.34.12.0. Один из портов маршрутизатора подключен к этой сети, а его адрес 213.34.12.3 мы находим в поле Gateway второй строки таблицы маршрутизации, где указывается непосредственно присоединенная сеть 213.34.12.0. Для таких сетей адресом следующего маршрутизатора всегда будет адрес собственного порта маршрутизатора. Таким образом, адрес выходного порта для сети 56.0.0 - это 213.34.12.3.

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

    Наличие или отсутствие поля маски в таблице говорит о том, насколько современен данный маршрутизатор. Стандартным решением сегодня является использование поля маски в каждой записи таблицы, как это сделано в таблицах маршрутизаторов MPR Windows NT (поле Netmask) и NetBuilder (поле Mask). Отсутствие поля маски говорит о том, что либо маршрутизатор рассчитан на работу только с тремя стандартными классами адресов, либо он использует для всех записей одну и ту же маску, а это снижает гибкость маршрутизации.

    Как видно из примера таблицы Unix-маршрутизатора, метрика относится к необязательным параметрам. В остальных двух таблицах это поле имеется, однако оно используется только в качестве признака непосредственно подключенной сети. Действительно, если в таблице маршрутизации каждая сеть назначения упомянута только один раз, то поле метрики не будет приниматься во внимание при выборе маршрута, так как выбор отсутствует. А вот признак непосредственно подключенной сети маршрутизатору нужен, потому что пакет для этой сети обрабатывается особым способом - он не передается следующему маршрутизатору, а отправляется узлу назначения. Поэтому метрика 0 для маршрутизатора NetBuilder или 1 для маршрутизатора MPR сообщает, что эта сеть непосредственно подключена к конкретному порту. Другое значение метрики соответствует удаленной сети. Выбор значения метрики для непосредственно подключенной сети является достаточно произвольным, главное, чтобы метрика удаленной сети отсчитывалась с учетом этого выбранного начального значения. В UNIX-маршрутизаторе используется поле признаков, где флаг G отмечает удаленную сеть, а его отсутствие - непосредственно подключенную.

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

    Флаги записей присутствуют только в таблице UNIX-маршрутизатора. Они описывают характеристики записи:

    U показывает, что маршрут активен и работоспособен. Аналогичный смысл имеет поле Status в маршрутизаторе NetBuilder;

    H - признак специфического маршрута к определенному хосту. Маршрут ко всей сети, к которой принадлежит данный хост, может отличаться от данного маршрута;

    G означает, что маршрут пакета проходит через промежуточный маршрутизатор (gateway). Отсутствие этого флага указывает на непосредственно подключенную сеть;

    D означает, что маршрут получен из сообщения Redirect (перенаправление) протокола ICMP. Такой признак может присутствовать только в таблице маршрутизации конечного узла. Он означает, что конечный узел при какой-то предыдущей передаче пакета выбрал не самый рациональный следующий маршрутизатор на пути к данной сети, и этот маршрутизатор с помощью протокола ICMP сообщил, что все последующие пакеты в данную сеть нужно отправлять через другой соседний маршрутизатор. Протокол ICMP может посылать сообщения только узлу-отправителю, поэтому на промежуточном маршрутизаторе этот признак встретиться не может. Признак никак не влияет на процесс маршрутизации, он только указывает администратору источник появления записи.

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

    В таблице маршрутизатора NetBuil-der также имеются два справочных поля. Поле времени жизни TTL (Time To Live) имеет смысл для динамических записей, с ограниченным сроком жизни. Текущее значение поля показывает оставшийся срок жизни записи в секундах. Поле Source отражает источник появления записи в таблице маршрутизации. Хотя это поле присутствует не во всех таблицах маршрутизаторов, но практически для всех маршрутизаторов существует три основных источника появления записи в таблице.

    ИСТОЧНИКИ И ТИПЫ ЗАПИСЕЙ В ТАБЛИЦЕ МАРШРУТИЗАЦИИ

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

    Во-первых, это записи о непосредственно подключенных сетях и маршрутизаторах по умолчанию, информация о которых появляется в стеке при ручном конфигурировании интерфейсов компьютера или маршрутизатора. В приведенных примерах к ним относятся записи о сетях 213.34.12.0 и 198.21.17.0, а также о маршрутизаторе по умолчанию - default в UNIX-маршрутизаторе и 0.0.0.0 в маршрутизаторе MPR Windows NT. В рассматриваемой таблице для маршрутизатора NetBuilder маршрутизатор по умолчанию не используется, следовательно, при поступлении пакета с адресом назначения, отсутствующим в таблице, этот пакет будет отброшен.

    Во-вторых, программное обеспечение автоматически заносит в таблицу маршрутизации записи об адресах особого назначения. В таблице маршрутизатора MPR Windows NT содержится наиболее полный набор записей такого рода. Несколько записей связаны с особым адресом 127.0.0.0 (loopback), который используется для локального тестирования стека TCP/IP. Пакеты, направленные в сеть с номером 127.0.0.0, не передаются протоколом IP на канальный уровень для последующего направления в сеть, а возвращаются в источник - локальный модуль IP. Записи с адресом 224.0.0.0 предназначены для обработки групповых адресов (multicast address). Кроме того, в таблицу могут быть занесены адреса для широковещательных рассылок (например, записи 8 и 11 содержат адрес отправки широковещательного сообщения в соответствующих подсетях, а последняя запись в таблице - адрес ограниченной широковещательной рассылки сообщения). Заметим, что в некоторых таблицах записи об особых адресах вообще отсутствуют.

    Вторым источником появления записи в таблице является администратор, непосредственно формирующий ее с помощью некоторой системной утилиты, например программы route, имеющейся в операционных системах UNIX и Windows NT. В аппаратных маршрутизаторах также всегда поддерживается команда для ручного задания записей таблицы маршрутизации. Заданные вручную записи всегда являются статическими, т. е. не имеют срока истечения жизни. Они могут быть как постоянными, т. е. сохраняющимися при перезагрузке маршрутизатора, так и временными, хранящимися в таблице только до выключения устройства. Часто администратор вручную заносит запись default о маршрутизаторе по умолчанию. Таким же образом в таблицу маршрутизации может быть внесена запись о специфичном для узла маршруте, где вместо номера сети содержится полный IP-адрес, т. е. адрес, имеющий ненулевую информацию не только в поле номера сети, но и в поле номера узла. Для такого конечного узла маршрут должен выбираться не так, как для всех остальных узлов сети, к которой он относится. В случае, когда в таблице есть разные записи о продвижении пакетов для всей сети и ее отдельного узла, при поступлении пакета, адресованного узлу, маршрутизатор отдаст предпочтение записи с полным адресом узла.

    И, наконец, третьим источником записей могут быть протоколы маршрутизации, такие, как RIP или OSPF. Данные записи всегда являются динамическими, т. е. имеют ограниченный срок жизни. Программные маршрутизаторы Windows NT и UNIX не показывают источник появления той или иной записи в таблице, а маршрутизатор NetBuilder использует для этой цели поле Source. В приведенном в Таблице 2 примере первые две записи созданы программным обеспечением стека на основании данных о конфигурации портов маршрутизатора - это показывает признак Connected. Следующие две записи обозначены как Static, что указывает на то, что их ввел вручную администратор. Последняя запись появилась в результате работы протокола RIP, поэтому в ее поле TTL имеется значение 160.

    Наталья Олифер - ответственный редактор LAN. С ней можно связаться по адресу:

    Команда Route выводит на экран все содержимое таблицы IP-маршрутизации и изменяет записи. Запущенная без параметров, команда route выводит справку.

    Синтаксис параметры утилиты ROUTE

    route [-f] [-p] [команда [конечная_точка] [шлюз] ] ]

    • -f - Очищает таблицу маршрутизации от всех записей, которые не являются узловыми маршрутами (маршруты с маской подсети 255.255.255.255), сетевым маршрутом замыкания на себя (маршруты с конечной точкой 127.0.0.0 и маской подсети 255.0.0.0) или маршрутом многоадресной рассылки (маршруты с конечной точкой 224.0.0.0 и маской подсети 240.0.0.0). При использовании данного параметра совместно с одной из команд (таких, как add, change или delete) таблица очищается перед выполнением команды.
    • -p - При использовании данного параметра с командой add указанный маршрут добавляется в реестр и используется для инициализации таблицы IP-маршрутизации каждый раз при запуске протокола TCP/IP.
    • команда - Указывает команду, которая будет запущена на удаленной системе. Возжожна одна из следующих команд: PRINT - Печать маршрута, ADD - Добавление маршрута, DELETE - Удаление маршрута, CHANGE - Изменение существующего маршрута.
    • конечная_точка - Определяет конечную точку маршрута. Конечной точкой может быть сетевой IP-адрес (где разряды узла в сетевом адресе имеют значение 0), IP-адрес маршрута к узлу, или значение 0.0.0.0 для маршрута по умолчанию.
    • mask маска_сети - Указывает маску сети (также известной как маска подсети) в соответствии с точкой назначения. Маска сети может быть маской подсети соответствующей сетевому IP-адресу, например 255.255.255.255 для маршрута к узлу или 0.0.0.0. для маршрута по умолчанию. Если данный параметр пропущен, используется маска подсети 255.255.255.255. Конечная точка не может быть более точной, чем соответствующая маска подсети. Другими словами, значение разряда 1 в адресе конечной точки невозможно, если значение соответствующего разряда в маске подсети равно 0.
    • шлюз - Указывает IP-адрес пересылки или следующего перехода, по которому доступен набор адресов, определенный конечной точкой и маской подсети. Для локально подключенных маршрутов подсети, адрес шлюза - это IP-адрес, назначенный интерфейсу, который подключен к подсети. Для удаленных маршрутов, которые доступны через один или несколько маршрутизаторов, адрес шлюза - непосредственно доступный IP-адрес ближайшего маршрутизатора.
    • metric метрика - Задает целочисленную метрику стоимости маршрута (в пределах от 1 до 9999) для маршрута, которая используется при выборе в таблице маршрутизации одного из нескольких маршрутов, наиболее близко соответствующего адресу назначения пересылаемого пакета. Выбирается маршрут с наименьшей метрикой. Метрика отражает количество переходов, скорость прохождения пути, надежность пути, пропускную способность пути и средства администрирования.
    • if интерфейс - Указывает индекс интерфейса, через который доступна точка назначения. Для вывода списка интерфейсов и их соответствующих индексов используйте команду route print. Значения индексов интерфейсов могут быть как десятичные, так и шестнадцатеричные. Перед шестнадцатеричными номерами вводится 0х. В случае, когда параметр if пропущен, интерфейс определяется из адреса шлюза.

    Примеры команды Route

    • Чтобы вывести на экран все содержимое таблицы IP-маршрутизации, введите команду: route print ;
    • Чтобы вывести на экран маршруты из таблицы IP-маршрутизации, которые начинаются с 10., введите команду: route print 10.*;
    • Чтобы добавить маршрут по умолчанию с адресом стандартного шлюза 192.168.12.1, введите команду: route add 0.0.0.0 mask 0.0.0.0 192.168.12.1;
    • Чтобы добавить маршрут к конечной точке 10.41.0.0 с маской подсети 255.255.0.0 и следующим адресом перехода 10.27.0.1, введите команду: route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 ;
    • Чтобы добавить постоянный маршрут к конечной точке 10.41.0.0 с маской подсети 255.255.0.0 и следующим адресом перехода 10.27.0.1, введите команду: route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1.

    Видео - Работа с утилитой ROUTE

    Маршрутизация (Routing) - процесс определения маршрута следования пакетов. Маршруты могут задаваться непосредственно администратором (статические маршруты), либо вычисляться с помощью алгоритмов маршрутизации, базируясь на информации о топологии и состоянии сети, полученной с помощью протоколов маршрутизации (динамические маршруты).

      Статическими маршрутами могут быть:
    • маршруты, не изменяющиеся во времени
    • маршруты, изменяющиеся по расписанию
    • маршруты, изменяющиеся по ситуации - административно в момент возникновения стандартной ситуации

    Процесс маршрутизации в компьютерных сетях выполняется специальными программно-аппаратными средствами - маршрутизаторами. В дополнение к маршрутизации маршрутизаторы осуществляют и коммутацию каналов/сообщений/пакетов/ячеек, так же и коммутатор компьютерной сети выполняет маршрутизацию (определение на какой порт отправить пакет на основании таблицы MAC адресов), а называется в честь основной его функции - коммутации. Слово маршрутизация означает передачу информации от источника к приёмнику через объединенную сеть. При этом, хотя бы один раз необходимо преодолеть разветвление сети.

    3.1. Составляющие маршрутизации

    Маршрутизация состоит из двух основных составляющих: определение оптимального маршрута между источником и приёмником информации, и передача информации по сети. Последняя функция называется коммутацией.

    Определение оптимального маршрута

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

    Для облегчения процесса определения маршрута алгоритмы маршрутизации инициализируют и поддерживают таблицы маршрутизации, в которых содержится маршрутная информация. Маршрутная информация изменяется в зависимости от используемого алгоритма маршрутизации.

    Алгоритмы маршрутизации заполняют маршрутные таблицы необходимой информацией. Комбинации "Пункт назначения/Следующая пересылка" сообщают маршрутизатору, что пункт назначения может быть достигнут кратчайшим путем при отправке пакета в определенный маршрутизатор, представляющий "следующую пересылку" на пути к конечному пункту назначения. При приеме поступающего пакета маршрутизатор проверяет адрес пункта назначения и пытается ассоциировать этот адрес со следующей пересылкой. Табл. 3.1. – пример таблицы маршрутизации.

    C:\>route print =========================================================================== Список интерфейсов 0x1 ........................... MS TCP Loopback interface 0x2 ...00 1c 25 31 9a 32 ...... Marvell Yukon 88E8056 PCI-E Gigabit Etherne t Controller =========================================================================== =========================================================================== Активные маршруты: Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика 0.0.0.0 0.0.0.0 188.243.250.1 188.243.250.65 20 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 188.243.250.0 255.255.255.0 188.243.250.65 188.243.250.65 20 188.243.250.65 255.255.255.255 127.0.0.1 127.0.0.1 20 188.243.255.255 255.255.255.255 188.243.250.65 188.243.250.65 20 224.0.0.0 240.0.0.0 188.243.250.65 188.243.250.65 20 255.255.255.255 255.255.255.255 188.243.250.65 188.243.250.65 1 Основной шлюз: 188.243.250.1 =========================================================================== Постоянные маршруты: Отсутствует
    Таблица 3.1. Таблица маршрутизации

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

    Маршрутизаторы сообщаются друг с другом (и поддерживают свои маршрутные таблицы) путем передачи различных сообщений. Одним из таких сообщений является сообщение об "обновлении маршрутизации". Обновления маршрутизации обычно включают всю маршрутную таблицу или ее часть. Анализируя информацию об обновлении маршрутизации, поступающую ото всех маршрутизаторов, любой из них может построить детальную картину топологии сети. Другим примером сообщений, которыми обмениваются маршрутизаторы, является "объявление о состоянии канала". Объявление о состоянии канала информирует другие маршрутизаторы о состоянии каналов отправителя. Канальная информация также может быть использована для построения полной картины топологии сети. После того, как топология сети определена, маршрутизаторы могут определить оптимальные маршруты ко всем пунктам назначения.

    Передача информации по сети, коммутация

    Алгоритмы коммутации сравнительно просты и в основном одинаковы для большинства протоколов маршрутизации. В большинстве случаев хост определяет необходимость отправки пакета на другой хост. Получив адрес маршрутизатора, хост-источник отправляет пакет, адресованный специально на физический адрес маршрутизатора (уровень МАС), однако с адресом протокола (сетевой уровень) хоста пункта назначения.

    После проверки сетевого адреса пакета маршрутизатор определяет, находится или нет адрес пункта назначения в таблице маршрутизации. Во втором случае (когда маршрутизатор не нашёл адрес в таблице маршрутизации) пакет, как правило, игнорируется. В первом случае маршрутизатор отсылает пакет к следующему маршрутизатору путем замены физического адреса пункта назначения на физический адрес следующего маршрутизатора и последующей передачи пакета.

    По мере того, как пакет передаётся через объединенную сеть, его физический адрес меняется, однако адрес протокола сетевого уровня остается неизменным.

    3.2. Алгоритмы маршрутизации

    Протокол RIP

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

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

    К протоколам динамической маршрутизации относится протокол RIP (Routing Information Protocol).

    Таблица маршрутизации RIP содержит информацию о конечном пункте назначения пакета, адресе следующей пересылки на пути к пункту назначения и число пересылок (metric). В таблице маршрутизации может находиться также и другая информация, в том числе различные таймеры, связанные с данным маршрутом, например, таблица 3.2.

    Destination Next hop Distance Timers Flags
    Network A Router 1 3 t1, t2, t3 x, y
    Network B Router 2 5 t1, t2, t3 x, y
    Network C Router 1 2 t1, t2, t3 x, y
    Таблица 3.2.

    RIP поддерживает только самые лучшие маршруты к пункту назначения. Если новая информация обеспечивает лучший маршрут, то эта информация заменяет старую маршрутную информацию. Изменения в топологии сети могут вызывать изменения в маршрутах, приводя к тому, например, что какой-нибудь новый маршрут становится лучшим маршрутом до конкретного пункта назначения. Когда появляются изменения в топологии сети, то эти изменения отражаются в сообщениях о корректировке маршрутизации. Например, когда какой-нибудь маршрутизатор обнаруживает отказ одного из каналов или другого маршрутизатора, он повторно вычисляет свои маршруты и отправляет сообщения о корректировке маршрутизации. Каждый маршрутизатор, принимающий сообщение об обновлении маршрутизации, в котором содержится изменение, корректирует свои таблицы и распространяет это изменение.

    Протокол OSPF

    Протокол OSPF (Open Shortest Pass First, RFC-1245-48, RFC-1583-1587, std-54, алгоритмы предложены Дейкстрой) является альтернативой RIP в качестве внутреннего протокола маршрутизации. OSPF представляет собой протокол состояния маршрута (в качестве метрики используется - коэффициент качества обслуживания). Каждый маршрутизатор обладает полной информацией о состоянии всех интерфейсов всех маршрутизаторов (переключателей) автономной системы. Протокол OSPF реализован в демоне маршрутизации gated, который поддерживает также RIP и внешний протокол маршрутизации BGP.

    Автономная система может быть разделена на несколько областей, куда могут входить как отдельные ЭВМ, так и целые сети. В этом случае внутренние маршрутизаторы области могут и не иметь информации о топологии остальной части сети. В сети обычно имеется выделенный (designated) маршрутизатор, который является источником маршрутной информации для остальных маршрутизаторов. Каждый маршрутизатор самостоятельно решает задачу оптимизации маршрутов. Если к месту назначения ведут два или более эквивалентных маршрута, информационный поток будет поделен между ними поровну. Переходные процессы в OSPF завершаются быстрее, чем в RIP. В процессе выбора оптимального маршрута анализируется ориентированный граф сети.

    3.3. Доступ из LAN в Интернет, NAT

    Технология NAT (Network Address Translation) позволяет решать две основные проблемы, стоящие сегодня перед глобальной сетью Интернет. Это – ограниченность адресного пространства протокола IP и масштабирование маршрутизации.

    При необходимости подключения к сети Интернет, когда количество внутренних узлов сети превышает выданное поставщиком услуг Интернет количество реальных адресов IP, NAT позволяет частным сетям IP, использующим незарегистрированные адреса, получать доступ к ресурсам Интернет. Функции NAT конфигурируются на пограничном маршрутизаторе, разграничивающем частную (внутреннюю) сеть Интранет и сеть Интернет.

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

    При необходимости организации простого разделения трафика на основе портов TCP, функции NAT предоставляют возможность установления соответствия (mapping) множества локальных адресов одному внешнему адресу, используя функции распределения нагрузки TCP.

    Функционирование NAT

    Технология NAT определяет, как это оговорено в стандарте RFC 1631, способы трансляции IP адресов, используемых в одной сети, в адреса, используемые в другой.

    Существует 3 базовых концепции трансляции адресов - статическая, динамическая, и masquerading.

    Static Network Address Translation

    Статическая трансляция (static NAT). Маршрутизатор NAT хранит таблицу соответствия внутренних и внешних IP-адресов. В этом случае зарегистрированный в сети Интернет адрес нужен каждому внутреннему компьютеру, но внутренний компьютер становится доступным из сети Интернет, поскольку NAT обеспечивает взаимнооднозначное преобразование адресов.

    Dynamic Network Address Translation

    Динамическая трансляция необходима в случае, когда количество транслируемых адресов (внутренних и внешних) различно, впрочем, иногда применяется и в случае, когда их количество одинаково, но из каких-либо соображений зависимость не может быть описана правилами статической трансляции. Количество взаимодействующих хостов в любом случае будет ограничено числом свободных (доступных) на NAT-интерфейсе адресов. Динамическая реализация NAT более сложна, поскольку требует вести учет взаимодействующих хостов, а иногда и конкретных соединений, в случае, когда требуется просмотр и модификация содержимого на 4-м уровне (например, TCP).

    В этой технологии в отличие от статической трансляции появляется новое понятие – таблица NAT (NAT table), которая применительно к динамической трансляции представляет собой таблицу соответствия внутренних адресов и адресов интерфейса NAT (далее для краткости - NAT адресов).

    Masquerading (NAPT, PAT)

    Трансляция адреса порта PAT (Port Address Translation) – это частный случай динамической трансляции, при котором мы имеем только один внешний адрес, за которым "спрятаны" внутренние - их может быть теоретически сколько угодно. В отличие от оригинальной динамической трансляции, PAT, разумеется, не подразумевает функционирование единовременно только одного соединения. Дабы расширить количество одновременных сеансов, эта техника использует информацию о номере TCP порта. Таким образом, количество одновременных сеансов ограничено только количеством свободных (из числа выделенных под NAT портов).

    Структура реальных таблиц маршрутизации стека TCP/IP в целом соответствует упрощенной структуре рассмотренных ранее таблиц. Отметим, однако, что вид таблицы IP-маршрутизации зависит от конкретной реализации стека TCP/IP. Приведем пример нескольких вариантов таблицы маршрутизации, с которыми мог бы работать маршрутизатор R1 в сети, представленной на рис. 1.

    Начнем с «придуманного» предельно упрощенного варианта таблицы маршрутизации (табл. 1). Здесь имеются три маршрута к сетям (записи 56.0.0.0,116.0.0.0 и 129.13.0.0), две записи о непосредственно подсоединенных сетях (198.21.17.0 и 213.34.12.0), а также запись о маршруте по умолчанию.

    Таблица 1. Упрощенная таблица маршрутизации маршрутизатора R1

    Адрес сети назначения Адрес следующего маршрутизатора Адрес выходного интерфейса Расстояние до сети назначения
    15
    13
    2
    1 (подсоединена)
    1
    56.0.0.0 213.34.12.4 213.34.12.3 15
    116.0.0.0 213.34.12.4 213.34.12.3 13
    129.13.0.0 198.21.17.6 198.21.17.5 2
    198.21.17.0 198.21.17.5 198.21.17.5 1(подсоединена)
    213.34.12.0 213.34.12.3 213.34.12.3 1(подсоединена)
    Маршрут по умолчанию 198.21.17.7 198.21.17.5 -

    Более сложный вид имеют таблицы, которые генерируются в промышленно выпускаемом сетевом оборудовании.

    Если представить, что в качестве маршрутизатора R1 в данной сети работает штатный программный маршрутизатор операционной системы Microsoft Windows ХР, то его таблица маршрутизации могла бы выглядеть так, как табл. 2.

    Рис. 1 Пример маршрутизируемой сети

    Таблица 2. Таблица программного маршрутизатора ОС Windows ХР

    Сетевой адрес Маска Адрес шлюза Интерфейс Метрика
    127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
    0.0.0.0 0.0.0.0 198.21.17.7 198.21.17.5 1
    56.0.0.0 255.0.0.0 213.34.12.4 213.34.12.3 15
    116.0.0.0 255.0.0.0 213.34.12.4 213.34.12.3 13
    129.13.0.0 255.255.0.0 198.21.17.6 198.21.17.5 2
    198.21.17.0 255.255.255.0 198.21.17.5 198.21.17.5 1
    198.21.17.5 255.255.255.255 127.0.0.1 127.0.0.1 1
    198.21.17.255 255.255.255.255 198.21.17.5 198.21.17.5 1
    213.34.12.0 255.255.255.0 213.34.12.3 213.34.12.3 1
    213.34.12.3 255.255.255.255 127.0.0.1 127.0.0.1 1
    213.34.12.255 255.255.255.255 213.34.12.3 213.34.12.3 1
    224.0.0.0 224.0.0.0 198.21.17.6 198.21.17.6 1
    224.0.0.0 224.0.0.0 213.34.12.3 213.34.12.3 1
    255.255.255.255 255.255.255.255 198.21.17.6 198.21.17.6 1

    Если на месте маршрутизатора R1 установить один из популярных аппаратных маршрутизаторов, то его таблица маршрутизации для этой же сети может выглядеть совсем иначе (табл. 3).

    Таблица 3. Таблица маршрутизации аппаратного маршрутизатора

    И наконец табл. 4 представляет собой таблицу маршрутизации для того же маршрутизатора R1, реализованного в виде программного маршрутизатора одной из версий операционной системы Unix.

    Таблица 4. Таблица маршрутизации Unix-маршрутизатора

    Адрес назначения Шлюз Флаги Интерфейс
    127.0.0.0 127.0.0.1 UH 1 154 1о0
    Маршрут по умолчанию 198.21.17.7 UG 5 43270 1е0
    198.21.17.0 198.21.17.5 U 35 246876 1е0
    213.34.12.0 213.34.12.3 U 44 132435 le1
    129.13.0.0 198.21.1.7.6 UG 6 16450 1е0
    56.0.0.0 213.34.12.4 UG 12 5764 le1
    116.0.0.0 213.34.12.4 UG 21 23544 le1

    ПРИМЕЧАНИЕ
    Заметим, что поскольку между структурой сети и таблицей маршрутизации нет однозначного соответствия, для каждого из приведенных вариантов таблицы можно предложить свои «подварианты», отличающиеся выбранным маршрутом к той или иной сети. В данном случае внимание концентрируется на существенных различиях в форме представления маршрутной информации разными реализациями маршрутизаторов.

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

    К таким данным, во-первых, относятся адреса сети назначения (столбцы «Адрес назначения» в аппаратном маршрутизаторе и маршрутизаторе Unix или столбец «Сетевой адрес» в маршрутизаторе ОС Windows ХР).

    Вторым обязательным полем таблицы маршрутизации является адрес следующего маршрутизатора (столбцы «Шлюз» в аппаратном маршрутизаторе и маршрутизаторе Unix или столбец «Адрес шлюза» в маршрутизаторе ОС Windows ХР).

    Третий ключевой параметр - адрес порта, на который нужно направить пакет, в некоторых таблицах указывается прямо (столбец «Интерфейс» в таблице маршрутизатора ОС Windows ХР), а в некоторых - косвенно. Так, в таблице маршрутизатора Unix вместо адреса порта задается его условное наименование - 1е0 для порта с адресом 198.21.17.5, lei для порта с адресом 213.34.12.3 и 1о0 для внутреннего порта с адресом 127.0.0.1. В адпаратном маршрутизаторе поле, обозначающее выходной порт в какой-либо форме, вообще отсутствует. Это объясняется тем, что адрес выходного порта всегда можно косвенно определить по адресу следующего маршрутизатора. Например, определим по табл. 3 адрес выходного порта для сети 56.0.0.0. Из таблицы следует, что следующим маршрутизатором для этой сети будет маршрутизатор с адресом 213.34.12.4. Адрес следующего маршрутизатора должен принадлежать одной из непосредственно присоединенных к маршрутизатору сетей, и в данном случае это сеть 213.34.12.0. Маршрутизатор имеет порт, присоединенный к этой сети, и адрес этого порта 213.34.12.3 мы находим в столбце «Шлюз» второй строки таблицы маршрутизации, которая описывает непосредственно присоединенную сеть 213.34.12.0. Для непосредственно присоединенных сетей адресом следующего маршрутизатора всегда является адрес собственного порта маршрутизатора. Таким образом, для сети 56.0.0 адресом выходного порта является 213.34.12.3.

    Стандартным решением сегодня является использование поля маски в каждой записи таблицы, как это сделано в таблицах маршрутизатора ОС Windows ХР и аппаратного маршрутизатора (столбцы «Маска»). Механизм обработки масок при принятии решения маршрутизаторами рассматривается далее. Отсутствие поля маски говорит о том, что либо маршрутизатор рассчитан на работу только с тремя стандартными классами адресов, либо для всех записей используется одна и та же маска, что снижает гибкость маршрутизации.
    Поскольку в таблице маршрутизации маршрутизатора Unix каждая сеть назначения упомянута только один раз, а значит, возможность выбора маршрута отсутствует, то поле метрики является необязательным параметром. В остальных двух таблицах поле метрики используется только для указания на то, что сеть подключена непосредственно. Метрика 0 для аппаратного маршрутизатора или 1 для маршрутизатора ОС Windows ХР говорит маршрутизатору, что эта сеть непосредственно подключена к его порту, а другое значение метрики соответствует удаленной сети. Выбор метрики для непосредственно подключенной сети (1 или 0) является произвольным, главное, чтобы метрика удаленной сети отсчитывалась с учетом этого выбранного начального значения. В маршрутизаторе Unix используется поле признаков, где флаг G (Gateway - шлюз) отмечает удаленную сеть, а его отсутствие - непосредственно подключенную.

    Признак непосредственно подключенной сети говорит маршрутизатору, что пакет уже достиг своей сети, поэтому протокол IP активизирует ARP-запрос относительно IP-адреса узла назначения, а не следующего маршрутизатора.

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

    Флаги записей присутствуют только в таблице маршрутизатора Unix.

    • U - маршрут активен и работоспособен. Аналогичный смысл имеет поле статуса в аппаратном маршрутизаторе.
    • Н - признак специфического маршрута к определенному хосту.
    • G - означает, что маршрут пакета проходит через промежуточный маршрутизатор (шлюз). Отсутствие этого флага отмечает непосредственно подключенную сеть.
    • D - означает, что маршрут получен из перенаправленного сообщения протокола ICMP. Этот признак может присутствовать только в таблице маршрутизации конечного узла. Признак означает, что конечный узел при какой-то предыдущей передаче пакета выбрал не самый рациональный следующий маршрутизатор на пути к данной сети, и этот маршрутизатор с помощью протокола ICMP сообщил конечному узлу, что все последующие пакеты к данной сети нужно отправлять через другой маршрутизатор.

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

    В записях таблиц аппаратного маршрутизатора также имеются два справочных поля. Поле времени жизни записи (TTL) в данном случае никак не связано со временем жизни пакета. Здесь оно показывает время, в течение которого значение данной записи еще действительно. Поле источника говорит об источнике появления записи в таблице маршрутизации.

    Формат командной строки:

    ROUTE [-f] [-p] [-4|-6] command

    Подсказку по параметрам командной строки можно получить используя встроенную справку (route /?):

    -f - Очистка таблиц маршрутов от записей всех шлюзов. При указании одной из команд таблицы очищаются до выполнения команды.

    -p - При использовании с командой ADD задает сохранение маршрута при перезагрузке системы. По умолчанию маршруты не сохраняются при перезагрузке. Пропускается для остальных команд, изменяющих соответствующие постоянные маршруты. Этот параметр не поддерживается в Windows 95.

    -4 - Обязательное использование протокола IPv4.

    -6 - Обязательное использование протокола IPv6.

    command - Одна из следующих команд:

    - PRINT - Печать маршрута
    - ADD - Добавление маршрута
    - DELETE - Удаление маршрута
    - CHANGE - Изменение существующего маршрута

    destination - Адресуемый узел.

    MASK - Указывает, что следующий параметр интерпретируется как маска сети.

    netmask - Значение маски подсети для записи данного маршрута. Если этот параметр не задан, по умолчанию используется значение 255.255.255.255.

    gateway - Шлюз.

    interface - Номер интерфейса для указанного маршрута.

    METRIC - Определение метрики, т.е. цены для адресуемого узла. Чем ниже значение метрики, тем выше приоритет узла при построении маршрута.

    Поиск всех символических имен узлов проводится в файле сетевой базы данных NETWORKS. Поиск символических имен шлюзов проводится в файле базы данных имен узлов HOSTS.

    Для команд PRINT и DELETE можно указать узел и шлюз с помощью подстановочных знаков или опустить параметр "шлюз".

    Если адресуемый узел содержит подстановочные знаки * или?, он используется в качестве шаблона, и печатаются только соответствующие ему маршруты. Знак "*" соответствует любой строке, а "?" - одному знаку.

    Примеры: 157.*.1, 157.*, 127.*, *224*.

    Соответствие шаблону поддерживает только команда PRINT.

    Диагностические сообщения:

    Недопустимое значение MASK вызывает ошибку, если (УЗЕЛ & МАСКА) != УЗЕЛ.

    Например:
    route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1 - Добавление маршрута завершится ошибкой, поскольку указан недопустимый параметр маски. (Узел & Маска) != Узел.

    Примеры:

    route PRINT - отобразить таблицу маршрутов
    route PRINT -4 - отобразить таблицу маршрутов только для IPv4
    route PRINT -6 - отобразить таблицу маршрутов только для IPv6
    route PRINT 157* - отобразить таблицу маршрутов только для узлов, начинающихся со 157

    Если сетевой интерфейс (IF) не задан, то производится попытка найти лучший интерфейс для указанного шлюза.

    route ADD 3ffe::/32 3ffe::1 - добавить новый маршрут для узла с IPv6

    route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2 - изменить существующий маршрут для узла IPv4

    Параметр CHANGE используется только для изменения шлюза или метрики.

    route DELETE 157.0.0.0 - удалить маршрут для IPv4.

    route DELETE 3ffe::/32 - удалить маршрут для IPV6

    Примеры использования команды ROUTE

    route print - отобразить текущую таблицу маршрутов.

    Пример отображаемой таблицы:


    Список интерфейсов
    24...00 50 ba 5d 0c c4 ......D-Link DFE-538TX 10/100 адаптер
    13...00 19 db ce 97 9c ......Сетевая карта Realtek RTL8169/8110 Family NIC
    1...........................Software Loopback Interface 1
    17...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP
    12...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
    ===========================================================================

    IPv4 таблица маршрута

    ===========================================================================
    Активные маршруты:
    ===========================================================================

    Постоянные маршруты:
    ===========================================================================

    IPv6 таблица маршрута
    ===========================================================================
    Активные маршруты:
    ===========================================================================

    Постоянные маршруты:
    Отсутствует

    Список интерфейсов - отображаются идентификаторы (ID), физические (MAC) адреса и названия сетевых адаптеров. В примере:
    24 - идентификатор интерфейса
    00 50 ba 5d 0c c4 - MAC-адрес сетевого адаптера
    D-Link DFE-538TX 10/100 адаптер - название сетевого адаптера.

    Сетевой адрес (Network Destination) - IP-адрес, адрес сети, или адрес 0.0.0.0 используемый для шлюза по умолчанию (Default Gateway). Это конечная точка маршрута

    Маска сети (Netmask) - маска сети.

    Адрес шлюза (Gateway) - IP-адрес шлюза, через который будет выполняться отправка пакета для достижения конечной точки.

    В Windows Vista / Windows 7 / 8 и более поздних версиях, для адресов, достижимых локально, в данной колонке отображается On-link . Другими словами, значение On-link в колонке "Шлюз" означает, что шлюз не используется, адрес назначения достижим напрямую, без маршрутизации.

    Интерфейс (Interface) - IP-адрес сетевого интерфейса, через который выполняется доставка пакета конечной точке маршрута.

    Метрика (metric) - значение метрики (1-9999). Метрика представляет собой числовое значение, позволяющее оптимизировать доставку пакета получателю, если конечная точка маршрута может быть достижима по нескольким разным маршрутам. Чем меньше значение метрики, тем выше приоритет маршрута.

    route print 192.* - отобразить таблицу маршрутов только для адресов, начинающихся с 192.

    route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 - установить в качестве шлюза по умолчанию (основного шлюза) адрес 192.168.1.1

    route -p add 10.0.0.0 mask 255.0.0.0 10.0.0.1 - добавить маршрут для подсети 10.0.0.0/255.0.0.0 и запомнить его в реестре. Это постоянный статический маршрут. Если маршрут добавлен без использования параметра -p то он сохраняется только до перезагрузки системы (до перезапуска сетевого системного программного обеспечения). Если же, при добавлении маршрута искользовался данный параметр, то информация о маршруте записывается в реестр Windows (раздел HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes) и будет использоваться постоянно при активации сетевых интерфейсов.

    route delete 10.0.0.0 mask 255.0.0.0 - удалить маршрут для подсети 10.0.0.0/255.0.0.0 .

    route add 10.10.10.10 192.168.1.158 - добавить маршрут для узла с IP-адресом 10.10.10.10 . Если маска в команде не задана, то подразумевается ее значение равное 255.255.255.255 , т.е конечная точка назначения является одиночным IP-адресом узла.

    route delete 10.10.10.10 - удалить маршрут созданный предыдущей командой

    route change 10.0.0.0 mask 255.0.0.0 10.10.10.1 - изменить адрес шлюза для существующего маршрута к сети 10.0.0.0/255.0.0.0 на значение 10.10.10.1 Допускается использование данной команды только для изменения адреса шлюза и метрики.

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

    Не относятся к петлевому интерфейсу (интерфейсу с IP 127.0.0.1 и маской -255.0.0.0)
    - не являются маршрутами для многоадресной (multicast) рассылки (IP 224.0.0.1 маска 255.0.0.0)
    - не являются узловыми маршрутами (когда маска равна 255.255.255.255) .

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