Общие принципы маршрутизации между несколькими подсистемами.

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

Начнем с определений. Сеть называется составной (internetwork или internet), если она может быть представлена в виде совокупности нескольких сетей,. Сети, входящие в составную сеть, называются подсетями (subnet), составляющими сетями или просто сетями (см. Рисунок 1).

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

Компонентами составной сети могут быть как локальные, так и глобальные сети. Внутренняя структура каждой из них на рисунке не показана, так как она не имеет значения при рассмотрении протокола сетевого уровня. Все узлы в пределах одной подсети взаимодействуют, используя единую для них технологию. Так, в составную сеть, изображенную на рисунке, входят несколько сетей на базе разных технологий: локальные сети Ethernet, Fast Ethernet, Token Ring, FDDI и глобальные сети frame relay, X.25, ISDN. Каждая из этих технологий достаточна для организации взаимодействия всех узлов в своей подсети, но не способна обеспечить информационную связь между произвольно выбранными узлами, принадлежащими разным подсетям, например между узлом А и узлом В. Следовательно, чтобы организовать взаимодействие между любой произвольной парой узлов этой "большой", составной сети, требуются дополнительные средства. Такие средства и предоставляет сетевой уровень.

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

Сетевой уровень выступает в качестве своего уровня координатора работы всех подсетей, лежащих на пути следования пакета по составной сети. Для перемещения данных в пределах подсетей сетевой уровень обращается к используемым в этих подсетях технологиям.

СЕТЕВЫЕ АДРЕСА

Хотя многие технологии локальных сетей (Ethernet, Token Ring, FDDI, Fast Ethernet и др.) используют одну и ту же систему адресации узлов на основе МАС-адресов, немало технологий (Х.25, АТМ, frame relay) опирается на другие схемы адресации. Адреса, присвоенные узлам в соответствии с применяемыми внутри подсетей технологиями, называют локальными. Чтобы сетевой уровень мог выполнить свою задачу, ему необходима собственная система адресации, не зависящая от того, как адресуются узлы в отдельных подсетях, и позволяющая ему ссылаться универсальным и однозначным способом на любой узел составной сети.

Естественным способом формирования сетевого адреса является уникальная нумерация всех подсетей составной сети и всех узлов в пределах каждой подсети. Таким образом, сетевой адрес представляет собой пару: номер сети (подсети) и номер узла.

В качестве номера узла может быть использован либо локальный адрес этого узла (такая схема принята в стеке IPX/SPX), либо некоторое число, никак не связанное с локальной технологией, которое однозначно идентифицирует узел в пределах данной подсети. В первом случае сетевой адрес становится зависимым от локальных технологий, что ограничивает его применение. Например, сетевые адреса IPX/SPX рассчитаны на работу в составных сетях, в которых используются только МАС-адреса или адреса аналогичного формата. Второй подход более универсален, он использован в стеке TCP/IP. И в том и в другом случае каждый узел составной сети имеет наряду со своим локальным адресом еще один - универсальный сетевой адрес.

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

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

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

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

  • номер фрагмента пакета, что необходимо для успешного проведения операций сборки/разборки фрагментов при соединении сетей с разными максимальными размерами пакетов;
  • время жизни пакета, указывающее, как долго он путешествует по составной сети; это время может использоваться для уничтожения "заблудившихся" пакетов
  • качество сервиса - критерий выбора маршрута при передачах между сетями: например, узел-отправитель может потребовать передать пакет с максимальной надежностью, возможно, в ущерб времени доставки.

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

Принципы маршрутизации мы рассмотрим на примере составной сети, изображенной на Рисунке 2, где 20 маршрутизаторов объединяют 18 подсетей в общую сеть ( S1, S2, .., S20 - это номера подсетей). Любой из маршрутизаторов имеет не менее двух портов для поджключения разных подсетей. Каждый порт можно рассматривать как отдельный узел сети: он имеет собственный сетевой адрес и собственный локальный адрес в той подсети, которая к нему подключена. Например, маршрутизатор 1 имеет три порта, к которым подключены подсети S1, S2, S3. На рисунке сетевые адреса этих портов обозначены как М1(1), М1(2) и М1(3). Порт М1(1) имеет локальный адрес в подсети с номером S1, порт М1(2) - в подсети S2, а порт М1(3) - в подсети S3. Таким образом, маршрутизатор можно рассматривать как совокупность нескольких узлов, каждый из которых входит в свою подсеть. Как единое устройство маршрутизатор не имеет ни отдельного сетевого, ни какого-либо локального адреса.

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

В сложных составных сетях почти всегда существует несколько альтернативных маршрутов для передачи пакетов между двумя конечными узлами. Маршрут - это последовательность маршрутизаторов, которые пакет должен пройти по пути от отправителя до пункта назначения. Так, пакет, отправленный из узла А в узел В, может пройти через маршрутизаторы 17, 12, 5, 4, и 1 или маршрутизаторы 17, 13, 7, 6, и 3. Нетрудно увидеть еще несколько маршрутов между узлами А и В.

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

ТАБЛИЦЫ МАРШРУТИЗАЦИИ

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

Данная таблица значительно упрощено по сравнению с реальными таблицами: например, в ней отсутствуют столбцы с масками, признаками состояния маршрута, временными интервалами, в течение которых действительны записи. Кроме этого, как уже было сказано, использованные здесь адреса сетей имеют условный формат, не соответствующий какому-либо определенному сетевому протоколу. Тем не менее в этом примере присутствуют основные поля, имеющиеся в реальных таблицах, применяемых при работе конкретных сетевых протоколов, таких, как IP, IPX или X.25.

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

Когда на маршрутизатор поступает новый пакет, номер сети назначения, извлеченный из поступившего кадра, последовательно сравнивается с номерами сетей из каждой строки таблицы. Строка с совпавшим номером сети указывает, на какой ближайший маршрутизатор следует направить пакет. Например, если на какой-либо порт маршрутизатора 4 поступает пакет, адресованный в сеть S6, то из таблицы маршрутизации следует, что адрес следующего маршрутизатора - М2(1), т. е. очередным этапом движения данного пакета будет перемещение к порту 1 маршрутизатора 2.

Поскольку пакет может быть адресован в любую подсеть составной сети, может показаться, что таблица маршрутизации должна иметь записи о каждой из них. Но при таком подходе в случае крупной сети объем таблиц может оказаться очень большим, что повлияет на время ее просмотра, потребует много места для хранения и т. п. Поэтому на практике число записей стараются уменьшить за счет использования специальной строки - "маршрутизатор по умолчанию". Действительно, принимая во внимание топологию составной сети, в таблицах маршрутизаторов, находящихся на периферии составной сети, достаточно записать номера сетей, непосредственно подсоединенных к данному маршрутизатору или расположенных поблизости, на тупиковых маршрутах. Обо всех же остальных сетях можно сделать в таблице единственную запись, указывающую на маршрутизатор, через который пролегает путь ко всем этим сетям. Такой маршрутизатор называется маршрутизатором по умолчанию, а вместо номера сети в соответствующей строке помещается особая запись, например default. В нашем примере таким маршрутизатором по умолчанию для сети S5 является маршрутизатор 5, точнее, его порт М5(1). Это означает, что путь из сети S5 почти ко всем сетям большой составной сети пролегает через этот порт маршрутизатора.

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

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

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

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

КАК СОЗДАЮТСЯ ТАБЛИЦЫ МАРШРУТИЗАЦИИ

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

Для автоматического построения таблиц маршрутизаторы обмениваются информацией о топологии составной сети в соответствии со специальным служебным протоколом. Протоколы этого типа называются протоколами маршрутизации (или маршрутизирующими протоколами). Их (например, RIP, OSPF, NLSP) следует отличать от собственно сетевых протоколов (например, IP, IPX). И те и другие обеспечивают функции сетевого уровня модели OSI - участвуют в доставке пакетов адресату через разнородную составную сеть. Но в то время, как первые собирают и передают по сети исключительно служебную информацию, вторые предназначены для передачи пользовательских данных так же, как это делают протоколы канального уровня. Протоколы маршрутизации используют сетевые протоколы как транспортное средство. При обмене маршрутной информацией пакеты протокола маршрутизации помещаются в поле данных пакетов сетевого или даже транспортного уровня, поэтому с точки зрения вложенности пакетов протоколы маршрутизации формально следовало бы отнести к более высокому уровню, чем сетевой.

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

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


Таблица. Таблица маршрутизации маршрутизатора 4.
Номер сети назначения Сетевой адрес следующего маршрутизатора Сетевой адрес выходного порта Расстояние до сети назначения
S1М1(2)М4(1)1
S2-М4(1)0 (подсоединена)
S3М1(2)М4(1)1
S4М2(1)М4(1)1
S5-М4(2)0 (подсоединена)
S6М2(1)М4(1)2
DefaultМ5(1)М4(2)-