ВВЕДЕНИЕ
Hub-ы, организующие рабочую группу, bridge-и, соединяющие два сегмента
сети и локализующие трафик в пределах каждого из них, а также switch-и,
позволяющие соединять несколько сегментов локальной вычислительной сети -
это все устройства, предназначенные для работы в сетях IEEE 802.3 или
Еthernet. Однако, существует особый тип оборудования, называемый
маршрутизаторами (routеrs), который применяется в сетях со сложной
конфигурацией для связи ее участков с различными сетевыми протоколами (в
том числе и для доступа к глобальным (WАN) сетям), а также для более
эффективного разделения трафика и использования альтернативных путей между
узлами сети. Основная цель применения маршрутизаторов - объединение
разнородных сетей и обслуживание альтернативных путей.
Различные типы маршрутизаторов отличаются количеством и типами своих
портов, что собственно и определяет места их использования. Маршрутизаторы,
например, могут быть использованы в локальной сети Ethernet для
эффективного управления трафиком при наличии большого числа сегментов сети,
для соединения сети типа Еthernet с сетями другого типа, например Тоkеn
Ring, FDDI, а также для обеспечения выходов локальных сетей на глобальную
сеть.
Маршрутизаторы не просто осуществляют связь разных типов сетей и
обеспечивают доступ к глобальной сети, но и могут управлять трафиком на
основе протокола сетевого уровня (третьего в модели OSI), то есть на более
высоком уровне по сравнению с коммутаторами. Необходимость в таком
управлении возникает при усложнении топологии сети и росте числа ее узлов,
если в сети появляются избыточные пути (при поддержке протокола IEEE 802.1
Spanning Тгее), когда нужно решать задачу максимально эффективной и быстрой
доставки отправленного пакета по назначению.
1 ОБЩАЯ ЧАСТЬ
1.1 НАЗНАЧЕНИЕ МАРШРУТИЗАТОРОВ
Если бы существовала среда с безграничной пропускной способностью,
способная обеспечить непосредственную связь всех компьютеров друг с другом
в одной сети, никаких маршрутизаторов бы не понадобилось. В реальности же
мы зачастую не можем обеспечить такую связь даже в пределах одного здания.
Физические пределы, соображения надежности и безопасности заставляют
дробить сети на подсети. Маршрутизаторы же выступают в роли некоего клея,
их объединяющего.
Что это такое - маршрутизатор? Это компьютер, имеющий несколько
сетевых интерфейсов, причем разные интерфейсы принадлежат разным сетям.
(Всякого рода аппаратные маршрутизаторы, наподобие тех, что выпускают Bay
Networks и Cisco, тоже являются компьютерами, пусть и специализированными.)
Задача маршрутизатора - переправлять пакеты данных между интерфейсами.
Сетевые интерфейсы могут быть разными - сетевые карты Ethernet, модемы на
выделенных и коммутируемых линиях, X.25 PAD, ISDN и т. д.
В зависимости от сложности сети, нам требуется либо статическая, либо динамическая маршрутизация, либо их сочетание. Статическая маршрутизация применяется тогда, когда пути следования пакетов можно задать заранее. Один из жизненных примеров: сеть на тонком коаксиальном кабеле очень ненадежна, и, чтобы хоть немного повысить надежность, где-то в середине ее поставили компьютер с двумя сетевыми интерфейсами. Другой пример - подключение локальной сети к провайдеру Internet. Здесь известно, что все пакеты, не относящиеся к данной локальной сети, надо передать провайдеру, а он уже сам должен с ними разбираться.
Когда нужна динамическая маршрутизация? Возьмем такой пример, чисто
учебный (рисунок ниже). Пусть у нас имеются три сети (A, B и C), каждая из
которых соединена с каждой маршрутизаторами по выделенной линии.
Фактически, кстати, возникают еще три сети - это соединения AB, BC и AC
(обозначим их AB, BC и AC). Из сети A мы желаем работать с компьютером в B.
Пакеты могут достигнуть его двумя путями: либо через выделенную линию AB,
либо проходя через AC, сеть C и далее через BC. Мы можем воспользоваться
статической маршрутизацией и жестко задать маршрут (пакеты для B передавать
только через AB), но хочется, чтобы при возможном разрыве связи AB пакеты
автоматически пошли по альтернативному пути, а при восстановлении связи был
восстановлен старый путь. Это и есть динамическая маршрутизация. Программы-
демоны должны следить за состоянием сети и автоматически находить наиболее
выгодный маршрут.
1.2 ИСПОЛЬЗУЕМЫЕ УРОВНИ МОДЕЛИ OSI
Перемещение информации между компьютерами различных схем является
чрезвычайно сложной задачей. В начале 1980 гг. Международная Организация по
Стандартизации (ISO) признала необходимость в создания модели сети, которая
могла бы помочь поставщикам создавать реализации взаимодействующих сетей.
Эту потребность удовлетворяет эталонная модель "Взаимодействие Открытых
Систем" (OSI), выпущенная в 1984 г.
Эталонная модель OSI быстро стала основной архитектурной моделью для передачи межкомпьютерных сообщений. Несмотря на то, что были разработаны другие архитектурные модели (в основном патентованные), большинство поставщиков сетей, когда им необходимо предоставить обучающую информацию пользователям поставляемых ими изделий, ссылаются на них как на изделия для сети, соответствующей эталонной модели OSI. И действительно, эта модель является самым лучшим средством, имеющемся в распоряжении тех, кто надеется изучить технологию сетей.
Эталонная модель OSI делит проблему перемещения информации между компьютерами через среду сети на семь менее крупных, и следовательно, более легко разрешимых проблем. Каждая из этих семи проблем выбрана потому, что она относительно автономна, и следовательно, ее легче решить без чрезмерной опоры на внешнюю информацию.
Каждая из семи областей проблемы решалась с помощью одного из уровней модели. Большинство устройств сети реализует все семь уровней. Однако в режиме потока информации некоторые реализации сети пропускают один или более уровней. Два самых низших уровня OSI реализуются аппаратным и программным обеспечением; остальные пять высших уровней, как правило, реализуются программным обеспечением.
Справочная модель OSI описывает, каким образом информация проделывает
путь через среду сети (например, провода) от одной прикладной программы
(например, программы обработки крупноформатных таблиц) до другой прикладной
программы, находящейся в другом компьютере. Т.к.информация, которая должна
быть отослана, проходит вниз через уровни системы, по мере этого
продвижения она становится все меньше похожей на человеческий язык и все
больше похожей на ту информацию, которую понимают компьютеры, а именно
"единицы" и "нули".
Эталонная модель OSI не является реализацией сети. Она только определяет функции каждого уровня. В этом отношении она напоминает план для постройки корабля. Точно также, как для выполнения фактической работы по плану могут быть заключены контракты с любым количеством кораблестроительных компаний, любое число поставщиков сети могут построить протокол реализации по спецификации протокола. И если этот план не будет предельно понятным, корабли, построенные различными компаниями, пользующимися одним и тем же планом, пусть незначительно, но будут отличаться друг от друга. Примером самого незначительного отличия могут быть гвозди, забитые в разных местах.
Чем объясняется разница в реализациях одного и того же плана корабля
(или спецификации протокола)? Частично эта разница вызвана неспособностью
любой спецификации учесть все возможные детали реализации. Кроме того,
разные люди, реализующие один и тот же проект, всегда интерпретируют его
немного по-разному. И наконец, неизбежные ошибки реализации приводят к
тому, что изделия разных реализаций отличаются исполнением. Этим
объясняется то, что реализация протокола Х одной компании не всегда
взаимодействует с реализацией этого протокола, осуществленной другой
компанией.
Уровни OSI:
Прикладной уровень
Прикладной уровень - это самый близкий к пользователю уровень OSI. Он отличается от других уровней тем, что не обеспечивает услуг ни одному из других уровней OSI; однако он обеспечивает ими прикладные процессы, лежащие за пределами масштаба модели OSI. Примерами таких прикладных процессов могут служить программы обработки крупномасштабных таблиц, программы обработки слов, программы банковских терминалов и т.д.
Прикладной уровень идентифицирует и устанавливает наличие
предполагаемых партнеров для связи, синхронизирует совместно работающие
прикладные программы, а также устанавливает соглашение по процедурам
устранения ошибок и управления целостностью информации. Прикладной уровень
также определяет, имеется ли в наличии достаточно ресурсов для
предполагаемой связи.
Представительный уровень
Представительный уровень отвечает за то, чтобы информация, посылаемая
из прикладного уровня одной системы, была читаемой для прикладного уровня
другой системы. При необходимости представительный уровень осуществляет
трансляцию между множеством форматов представления информации путем
использования общего формата представления информации.
Представительный уровень занят не только форматом и представлением
фактических данных пользователя, но также структурами данных, которые
используют программы. Поэтому кроме трансформации формата фактических
данных (если она необходима), представительный уровень согласует синтаксис
передачи данных для прикладного уровня.
Сеансовый уровень
Как указывает его название, сеансовый уровень устанавливает, управляет
и завершает сеансы взаимодействия между прикладными задачами. Сеансы
состоят из диалога между двумя или более об'ектами представления (как вы
помните, сеансовый уровень обеспечивает своими услугами представительный
уровень). Сеансовый уровень синхронизирует диалог между об'ектами
представительного уровня и управляет обменом информации между ними. В
дополнение к основной регуляции диалогов (сеансов) сеансовый уровень
предоставляет средства для отправки информации, класса услуг и уведомления
в исключительных ситуациях о проблемах сеансового, представительного и
прикладного уровней.
Транспортный уровень
Граница между сеансовым и транспортным уровнями может быть представлена как граница между протоколами прикладного уровня и протоколами низших уровней. В то время как прикладной, представительный и сеансовый уровни заняты прикладными вопросами, четыре низших уровня решают проблемы транспортировки данных.
Транспортный уровень пытается обеспечить услуги по транспортировке
данных, которые избавляют высшие слои от необходимости вникать в ее детали.
В частности, заботой транспортного уровня является решение таких вопросов,
как выполнение надежной транспортировки данных через об'единенную сеть.
Предоставляя надежные услуги, транспортный уровень обеспечивает механизмы
для установки, поддержания и упорядоченного завершения действия виртуальных
каналов, систем обнаружения и устранения неисправностей транспортировки и
управления информационным потоком (с целью предотвращения переполнения
системы данными из другой системы).
Сетевой уровень
Сетевой уровень - это комплексный уровень, который обеспечивает
возможность соединения и выбор маршрута между двумя конечными системами,
подключенными к разным "подсетям", которые могут находиться в разных
географических пунктах. В данном случае "подсеть" - это по сути независимый
сетевой кабель (иногда называемый сегментом).
Т.к. две конечные системы, желающие организовать связь, может разделять
значительное географическое расстояние и множество подсетей, сетевой
уровень является доменом маршрутизации. Протоколы маршрутизации выбирают
оптимальные маршруты через последовательность соединенных между собой
подсетей. Традиционные протоколы сетевого уровня передают информацию вдоль
этих маршрутов.
Канальный уровень
Канальный уровень (формально называемый информационно-канальным
уровнем) обеспечивает надежный транзит данных через физический канал.
Выполняя эту задачу, канальный уровень решает вопросы физической адресации
(в противоположность сетевой или логической адресации), топологии сети,
линейной дисциплины (каким образом конечной системе использовать сетевой
канал), уведомления о неисправностях, упорядоченной доставки блоков данных
и управления потоком информации.
Физический уровень
Физический уровень определяет электротехнические, механические, процедурные и функциональные характеристики активации, поддержания и дезактивации физического канала между конечными системами. Спецификации физического уровня определяют такие характеристики, как уровни напряжений, синхронизацию изменения напряжений, скорость передачи физической информации, максимальные расстояния передачи информации, физические соединители и другие аналогичные характеристики.
2 СПЕЦИАЛЬНАЯ ЧАСТЬ
2.1 ПРОТОКОЛЫ МАРШРУТИЗАЦИИ И ИХ МЕТРИКИ
2.1.1 Дистанционно-векторный протокол RIP
Протокол RIP (Routing Information Protocol) представляет собой один из
старейших протоколов обмена маршрутной информацией, однако он до сих пор
чрезвычайно распространен в вычислительных сетях. Помимо версии RIP для
сетей TCP/IP, существует также версия RIP для сетей IPX/SPX компании
Novell.
В этом протоколе все сети имеют номера (способ образования номера
зависит от используемого в сети протокола сетевого уровня), а все
маршрутизаторы - идентификаторы. Протокол RIP широко использует понятие
"вектор расстояний". Вектор расстояний представляет собой набор пар чисел,
являющихся номерами сетей и расстояниями до них в хопах.
Вектора расстояний итерационно распространяются маршрутизаторами по сети, и через несколько шагов каждый маршрутизатор имеет данные о достижимых для него сетях и о расстояниях до них. Если связь с какой-либо сетью обрывается, то маршрутизатор отмечает этот факт тем, что присваивает элементу вектора, соответствующему расстоянию до этой сети, максимально возможное значение, которое имеет специальный смысл - "связи нет". Таким значением в протоколе RIP является число 16.
На рисунке ниже приведен пример сети, состоящей из шести
маршрутизаторов, имеющих идентификаторы от 1 до 6, и из шести сетей от A до
F, образованных прямыми связями типа "точка-точка".
Рис. Обмен маршрутной информацией по протоколу RIP
На рисунке приведена начальная информация, содержащаяся в топологической базе маршрутизатора 2, а также информация в этой же базе после двух итераций обмена маршрутными пакетами протокола RIP. После определенного числа итераций маршрутизатор 2 будет знать о расстояниях до всех сетей интерсети, причем у него может быть несколько альтернативных вариантов отправки пакета к сети назначения. Пусть в нашем примере сетью назначения является сеть D.
При необходимости отправить пакет в сеть D маршрутизатор просматривает
свою базу данных маршрутов и выбирает порт, имеющий наименьшее расстояния
до сети назначения (в данном случае порт, связывающий его с маршрутизатором
3).
Для адаптации к изменению состояния связей и оборудования с каждой записью таблицы маршрутизации связан таймер. Если за время тайм-аута не придет новое сообщение, подтверждающее этот маршрут, то он удаляется из маршрутной таблицы.
При использовании протокола RIP работает эвристический алгоритм динамического программирования Беллмана-Форда, и решение, найденное с его помощью является не оптимальным, а близким к оптимальному. Преимуществом протокола RIP является его вычислительная простота, а недостатками - увеличение трафика при периодической рассылке широковещательных пакетов и неоптимальность найденного маршрута.
На рисунке ниже показан случай неустойчивой работы сети по протоколу
RIP при изменении конфигурации - отказе линии связи маршрутизатора M1 с
сетью 1. При работоспособном состоянии этой связи в таблице маршрутов
каждого маршрутизатора есть запись о сети с номером 1 и соответствующим
расстоянием до нее.
Рис. Пример неустойчивой работы сети при использовании протокола RIP
При обрыве связи с сетью 1 маршрутизатор М1 отмечает, что расстояние до
этой сети приняло значение 16. Однако получив через некоторое время от
маршрутизатора М2 маршрутное сообщение о том, что от него до сети 1
расстояние составляет 2 хопа, маршрутизатор М1 наращивает это расстояние на
1 и отмечает, что сеть 1 достижима через маршрутизатор 2. В результате
пакет, предназначенный для сети 1, будет циркулировать между
маршрутизаторами М1 и М2 до тех пор, пока не истечет время хранения записи
о сети 1 в маршрутизаторе 2, и он не передаст эту информацию маршрутизатору
М1.
Для исключения подобных ситуаций маршрутная информация об известной
маршрутизатору сети не передается тому маршрутизатору, от которого она
пришла.
Существуют и другие, более сложные случаи нестабильного поведения сетей,
использующих протокол RIP, при изменениях в состоянии связей или
маршрутизаторов сети.
2.1.2 Протокол состояния связей OSPF
Протокол OSPF (Open Shortest Path Firs) является достаточно современной реализацией алгоритма состояния связей (он принят в 1991 году) и обладает многими особенностями, ориентированными на применение в больших гетерогенных сетях.
Протокол OSPF вычисляет маршруты в IP-сетях, сохраняя при этом другие
протоколы обмена маршрутной информацией.
Непосредственно связанные (то есть достижимые без использования
промежуточных маршрутизаторов) маршрутизаторы называются "соседями". Каждый
маршрутизатор хранит информацию о том, в каком состоянии по его мнению
находится сосед. Маршрутизатор полагается на соседние маршрутизаторы и
передает им пакеты данных только в том случае, если он уверен, что они
полностью работоспособны. Для выяснения состояния связей маршрутизаторы-
соседи достаточно часто обмениваются короткими сообщениями HELLO.
Для распространения по сети данных о состоянии связей маршрутизаторы обмениваются сообщениями другого типа. Эти сообщения называются router links advertisement - объявление о связях маршрутизатора (точнее, о состоянии связей). OSPF-маршрутизаторы обмениваются не только своими, но и чужими объявлениями о связях, получая в конце-концов информацию о состоянии всех связей сети. Эта информация и образует граф связей сети, который, естественно, один и тот же для всех маршрутизаторов сети.
Кроме информации о соседях, маршрутизатор в своем объявлении
перечисляет IP-подсети, с которыми он связан непосредственно, поэтому после
получения информации о графе связей сети, вычисление маршрута до каждой
сети производится непосредственно по этому графу по алгоритму Дэйкстры.
Более точно, маршрутизатор вычисляет путь не до конкретной сети, а до
маршрутизатора, к которому эта сеть подключена. Каждый маршрутизатор имеет
уникальный идентификатор, который передается в объявлении о состояниях
связей. Такой подход дает возможность не тратить IP-адреса на связи типа
"точка-точка" между маршрутизаторами, к которым не подключены рабочие
станции.
Маршрутизатор вычисляет оптимальный маршрут до каждой адресуемой сети, но запоминает только первый промежуточный маршрутизатор из каждого маршрута. Таким образом, результатом вычислений оптимальных маршрутов является список строк, в которых указывается номер сети и идентификатор маршрутизатора, которому нужно переслать пакет для этой сети. Указанный список маршрутов и является маршрутной таблицей, но вычислен он на основании полной информации о графе связей сети, а не частичной информации, как в протоколе RIP.
Описанный подход приводит к результату, который не может быть
достигнут при использовании протокола RIP или других дистанционно-векторных
алгоритмов. RIP предполагает, что все подсети определенной IP-сети имеют
один и тот же размер, то есть, что все они могут потенциально иметь
одинаковое число IP-узлов, адреса которых не перекрываются. Более того,
классическая реализация RIP требует, чтобы выделенные линии "точка-точка"
имели IP-адрес, что приводит к дополнительным затратам IP-адресов.
В OSPF такие требования отсутствуют: сети могут иметь различное число
хостов и могут перекрываться. Под перекрытием понимается наличие нескольких
маршрутов к одной и той же сети. В этом случае адрес сети в пришедшем
пакете может совпасть с адресом сети, присвоенным нескольким портам.
Если адрес принадлежит нескольким подсетям в базе данных маршрутов, то
продвигающий пакет маршрутизатор использует наиболее специфический маршрут,
то есть адрес подсети, имеющей более длинную маску.
Например, если рабочая группа ответвляется от главной сети, то она имеет
адрес главной сети наряду с более специфическим адресом, определяемым
маской подсети. При выборе маршрута к хосту в подсети этой рабочей группы
маршрутизатор найдет два пути, один для главной сети и один для рабочей
группы. Так как последний более специфичен, то он и будет выбран. Этот
механизм является обобщением понятия "маршрут по умолчанию", используемого
во многих сетях.
Использование подсетей с различным количеством хостов является вполне
естественным. Например, если в здании или кампусе на каждом этаже имеются
локальные сети, и на некоторых этажах компьютеров больше, чем на других, то
администратор может выбрать размеры подсетей, отражающие ожидаемые
требования каждого этажа, а не соответствующие размеру наибольшей подсети.
В протоколе OSPF подсети делятся на три категории:
"хост-сеть", представляющая собой подсеть из одного адреса,
"тупиковая сеть", которая представляет собой подсеть, подключенную только к
одному маршрутизатору,
"транзитная сеть", которая представляет собой подсеть, подключенную к более
чем одному маршрутизатору.
Транзитная сеть является для протокола OSPF особым случаем. В
транзитной сети несколько маршрутизаторов являются взаимно и одновременно
достижимыми. В широковещательных локальных сетях, таких как Ethernet или
Token Ring, маршрутизатор может послать одно сообщение, которое получат все
его соседи. Это уменьшает нагрузку на маршрутизатор, когда он посылает
сообщения для определения существования связи или обновленные объявления о
соседях. Однако, если каждый маршрутизатор будет перечислять всех своих
соседей в своих объявлениях о соседях, то объявления займут много места в
памяти маршрутизатора. При определении пути по адресам транзитной подсети
может обнаружиться много избыточных маршрутов к различным маршрутизаторам.
На вычисление, проверку и отбраковку этих маршрутов уйдет много времени.
Когда маршрутизатор начинает работать в первый раз (то есть инсталлируется), он пытается синхронизировать свою базу данных со всеми маршрутизаторами транзитной локальной сети, которые по определению имеют идентичные базы данных. Для упрощения и оптимизации этого процесса в протоколе OSPF используется понятие "выделенного" маршрутизатора, который выполняет две функции.
Во-первых, выделенный маршрутизатор и его резервный "напарник" являются единственными маршрутизаторами, с которыми новый маршрутизатор будет синхронизировать свою базу. Синхронизировав базу с выделенным маршрутизатором, новый маршрутизатор будет синхронизирован со всеми маршрутизаторами данной локальной сети.
Во-вторых, выделенный маршрутизатор делает объявление о сетевых связях, перечисляя своих соседей по подсети. Другие маршрутизаторы просто объявляют о своей связи с выделенным маршрутизатором. Это делает объявления о связях (которых много) более краткими, размером с объявление о связях отдельной сети.
Для начала работы маршрутизатора OSPF нужен минимум информации - IP- конфигурация (IP-адреса и маски подсетей), некоторая информация по умолчанию (default) и команда на включение. Для многих сетей информация по умолчанию весьма похожа. В то же время протокол OSPF предусматривает высокую степень программируемости.
Интерфейс OSPF (порт маршрутизатора, поддерживающего протокол OSPF) является обобщением подсети IP. Подобно подсети IP, интерфейс OSPF имеет IP- адрес и маску подсети. Если один порт OSPF поддерживает более, чем одну подсеть, протокол OSPF рассматривает эти подсети так, как если бы они были на разных физических интерфейсах, и вычисляет маршруты соответственно.
Интерфейсы, к которым подключены локальные сети, называются
широковещательными (broadcast) интерфейсами, так как они могут использовать
широковещательные возможности локальных сетей для обмена сигнальной
информацией между маршрутизаторами. Интерфейсы, к которым подключены
глобальные сети, не поддерживающие широковещание, но обеспечивающие доступ
ко многим узлам через одну точку входа, например сети Х.25 или frame relay,
называются нешироковещательными интерфейсами с множественным доступом или
NBMA (non-broadcast multi-access). Они рассматриваются аналогично
широковещательным интерфейсам за исключением того, что широковещательная
рассылка эмулируется путем посылки сообщения каждому соседу. Так как
обнаружение соседей не является автоматическим, как в широковещательных
сетях, NBMA-соседи должны задаваться при конфигурировании вручную. Как на
широковещательных, так и на NBMA-интерфейсах могут быть заданы приоритеты
маршрутизаторов для того, чтобы они могли выбрать выделенный маршрутизатор.
Интерфейсы "точка-точка", подобные PPP, несколько отличаются от
традиционной IP-модели. Хотя они и могут иметь IP-адреса и подмаски, но
необходимости в этом нет.
В простых сетях достаточно определить, что пункт назначения достижим и
найти маршрут, который будет удовлетворительным. В сложных сетях обычно
имеется несколько возможных маршрутов. Иногда хотелось бы иметь возможности
по установлению дополнительных критериев для выбора пути: например,
наименьшая задержка, максимальная пропускная способность или наименьшая
стоимость (в сетях с оплатой за пакет). По этим причинам протокол OSPF
позволяет сетевому администратору назначать каждому интерфейсу определенное
число, называемое метрикой, чтобы оказать нужное влияние на выбор маршрута.
Число, используемое в качестве метрики пути, может быть назначено
произвольным образом по желанию администратора. Но по умолчанию в качестве
метрики используется время передачи бита в 10-ти наносекундных единицах (10
Мб/с Ethernet'у назначается значение 10, а линии 56 Кб/с - число 1785).
Вычисляемая протоколом OSPF метрика пути представляет собой сумму метрик
всех проходимых в пути связей; это очень грубая оценка задержки пути. Если
маршрутизатор обнаруживает более, чем один путь к удаленной подсети, то он
использует путь с наименьшей стоимостью пути.
В протоколе OSPF используется несколько временных параметров, и среди них наиболее важными являются интервал сообщения HELLO и интервал отказа маршрутизатора (router dead interval).
HELLO - это сообщение, которым обмениваются соседние, то есть непосредственно связанные маршрутизаторы подсети, с целью установить состояние линии связи и состояние маршрутизатора-соседа. В сообщении HELLO маршрутизатор передает свои рабочие параметры и говорит о том, кого он рассматривает в качестве своих ближайших соседей. Маршрутизаторы с разными рабочими параметрами игнорируют сообщения HELLO друг друга, поэтому неверно сконфигурированные маршрутизаторы не будут влиять на работу сети. Каждый маршрутизатор шлет сообщение HELLO каждому своему соседу по крайней мере один раз на протяжении интервала HELLO. Если интервал отказа маршрутизатора истекает без получения сообщения HELLO от соседа, то считается, что сосед неработоспособен, и распространяется новое объявление о сетевых связях, чтобы в сети произошел пересчет маршрутов.
Пример маршрутизации по алгоритму OSPF
Представим себе один день из жизни транзитной локальной сети. Пусть у
нас имеется сеть Ethernet, в которой есть три маршрутизатора - Джон, Фред и
Роб (имена членов рабочей группы Internet, разработавшей протокол OSPF).
Эти маршрутизаторы связаны с сетями в других городах с помощью выделенных
линий.
Пусть произошло восстановление сетевого питания после сбоя.
Маршрутизаторы и компьютеры перезагружаются и начинают работать по сети
Ethernet. После того, как маршрутизаторы обнаруживают, что порты Ethernet
работают нормально, они начинают генерировать сообщения HELLO, которые
говорят о их присутствии в сети и их конфигурации. Однако маршрутизация
пакетов начинает осуществляться не сразу - сначала маршрутизаторы должны
синхронизировать свои маршрутные базы (рисунок).
Рис. Гипотетическая сеть с OSPF маршрутизаторами
На протяжении интервала отказа маршрутизаторы продолжают посылать сообщения HELLO. Когда какой-либо маршрутизатор посылает такое сообщение, другие его получают и отмечают, что в локальной сети есть другой маршрутизатор. Когда они посылают следующее HELLO, они перечисляют там и своего нового соседа.
Когда период отказа маршрутизатора истекает, то маршрутизатор с наивысшим приоритетом и наибольшим идентификатором объявляет себя выделенным (а следующий за ним по приоритету маршрутизатор объявляет себя резервным выделенным маршрутизатором) и начинает синхронизировать свою базу данных с другими маршрутизаторами.
С этого момента времени база данных маршрутных объявлений каждого маршрутизатора может содержать информацию, полученную от маршрутизаторов других локальных сетей или из выделенных линий. Роб, например, вероятно получил информацию от Мило и Робина об их сетях, и он может передавать туда пакеты данных. Они содержат информацию о собственных связях маршрутизатора и объявления о связях сети.
Базы данных теперь синхронизированы с выделенным маршрутизатором, которым является Джон. Джон суммирует свою базу данных с каждой базой данных своих соседей - базами Фреда, Роба и Джеффа - индивидуально. В каждой синхронизирующейся паре объявления, найденные только в какой-либо одной базе, копируются в другую. Выделенный маршрутизатор, Джон, распространяет новые объявления среди других маршрутизаторов своей локальной сети. Например, объявления Мило и Робина передаются Джону Робом, а Джон в свою очередь передает их Фреду и Джеффри. Обмен информацией между базами продолжается некоторое время, и пока он не завершится, маршрутизаторы не будут считать себя работоспособными. После этого они себя таковыми считают, потому что имеют всю доступную информацию о сети.
Посмотрим теперь, как Робин вычисляет маршрут через сеть. Две из
связей, присоединенных к его портам, представляют линии T-1, а одна - линию
56 Кб/c. Робин сначала обнаруживает двух соседей - Роба с метрикой 65 и
Мило с метрикой 1785. Из объявления о связях Роба Робин обнаружил наилучший
путь к Мило со стоимостью 130, поэтому он отверг непосредственный путь к
Мило, поскольку он связан с большей задержкой, так как проходит через линии
с меньшей пропускной способностью. Робин также обнаруживает транзитную
локальную сеть с выделенным маршрутизатором Джоном. Из объявлений о связях
Джона Робин узнает о пути к Фреду и, наконец, узнает о пути к
маршрутизаторам Келли и Джеффу и к их тупиковым сетям.
После того, как маршрутизаторы полностью входят в рабочий режим, интенсивность обмена сообщениями резко падает. Обычно они посылают сообщение HELLO по своим подсетям каждые 10 секунд и делают объявления о состоянии связей каждые 30 минут (если обнаруживаются изменения в состоянии связей, то объявление передается, естественно, немедленно). Обновленные объявления о связях служат гарантией того, что маршрутизатор работает в сети. Старые объявления удаляются из базы через определенное время.
Представим, однако, что какая-либо выделенная линия сети отказала.
Присоединенные к ней маршрутизаторы распространяют свои объявления, в
которых они уже не упоминают друг друга. Эта информация распространяется по
сети, включая маршрутизаторы транзитной локальной сети. Каждый
маршрутизатор в сети пересчитывает свои маршруты, находя, может быть, новые
пути для восстановления утраченного взаимодействия.
2.1.3 Сравнение протоколов RIP и OSPF по затратам на широковещательный трафик
В сетях, где используется протокол RIP, накладные расходы на обмен
маршрутной информацией строго фиксированы. Если в сети имеется определенное
число маршрутизаторов, то трафик, создаваемый передаваемой маршрутной
информацией, описываются формулой (1):
(1) F = (число объявляемых маршрутов/25) x 528 (байтов в сообщении) x
(число копий в единицу времени) x 8 (битов в байте)
В сети с протоколом OSPF загрузка при неизменном состоянии линий связи
создается сообщениями HELLO и обновленными объявлениями о состоянии связей,
что описывается формулой (2):
(2) F = { [ 20 + 24 + 20 + (4 x число соседей)] x
(число копий HELLO в единицу времени) }x 8 +
[(число объявлений x средний размер объявления) x
(число копий объявлений в единицу времени)] x 8,
где 20 - размер заголовка IP-пакета,
24 - заголовок пакета OSPF,
20 - размер заголовка сообщения HELLO,
4 - данные на каждого соседа.
Интенсивность посылки сообщений HELLO - каждые 10 секунд, объявлений о
состоянии связей - каждые полчаса. По связям "точка-точка" или по
широковещательным локальным сетям в единицу времени посылается только одна
копия сообщения, по NBMA сетям типа frame relay каждому соседу посылается
своя копия сообщения. В сети frame relay с 10 соседними маршрутизаторами и
100 маршрутами в сети (подразумевается, что каждый маршрут представляет
собой отдельное OSPF-обобщение о сетевых связях и что RIP распространяет
информацию о всех этих маршрутах) трафик маршрутной информации определяется
соотношениями (3) и (4):
(3) RIP: (100 маршрутов / 25 маршрутов в объявлении) x 528 x
(10 копий / 30 сек) = 5 632 б/с
(4) OSPF: {[20 + 24 + 20 + (4 x 10) x (10 копий / 10 сек)] +
[100 маршрутов x (32 + 24 + 20) + (10 копий / 30 x 60 сек]} x 8 = 1 170 б/с
Как видно из полученных результатов, для нашего гипотетического примера трафик, создаваемый протоколом RIP, почти в пять раз интенсивней трафика, создаваемого протоколом OSPF.
2.2 ОРГАНИЗАЦИЯ ФОРМИРОВАНИЯ ТАБЛИЦ МАРШРУТИЗАЦИИ
Важнейшей задачей сетевого уровня является маршрутизация - передача пакетов между двумя конечными узлами в составной сети.
Рассмотрим принципы формирования таблиц маршрутизации на примере
составной сети, изображенной на рисунке ниже. В этой сети 20
маршрутизаторов объединяют 18 сетей в общую сеть; S1, S2, ... , S20 - это
номера сетей. Маршрутизаторы имеют по нескольку портов (по крайней мере, по
два), к которым присоединяются сети. Каждый порт маршрутизатора можно
рассматривать как отдельный узел сети: он имеет собственный сетевой адрес и
собственный локальный адрес в той подсети, которая к нему подключена.
Например, маршрутизатор под номером 1 имеет три порта, к которым подключены
сети S1, S2, S3. На рисунке сетевые адреса этих портов обозначены как
М1(1), Ml (2) и М1(3). Порт М1(1) имеет локальный адрес в сети с номером
S1, порт Ml (2) - в сети S2, а порт М1(3) - в сети S3. Таким образом,
маршрутизатор можно рассматривать как совокупность нескольких узлов, каждый
из которых входит в свою сеть. Как единое устройство маршрутизатор не имеет
ни отдельного сетевого адреса, ни какого-либо локального адреса.
Рис. Принципы маршрутизации в составной сети
В сложных составных сетях почти всегда существует несколько
альтернативных маршрутов для передачи пакетов между двумя конечными узлами.
Маршрут - это последовательность маршрутизаторов, которые должен пройти
пакет от отправителя до пункта назначения. Так, пакет, отправленный из узла
А в узел В, может пройти через маршрутизаторы 17, 12, 5, 4 и 1 или
маршрутизаторы 17,13, 7, 6 и З. Нетрудно найти еще несколько маршрутов
между узлами А и В.
Задачу выбора маршрута из нескольких возможных решают маршрутизаторы, а также конечные узлы. Маршрут выбирается на основании имеющейся у этих устройств информации о текущей конфигурации сети, а также на основании указанного критерия выбора маршрута. Обычно в качестве критерия выступает задержка прохождения маршрута отдельным пакетом или средняя пропускная способность маршрута для последовательности пакетов. Часто также используется весьма простой критерий, учитывающий только количество пройденных в маршруте промежуточных маршрутизаторов (хопов).
Чтобы по адресу сети назначения можно было бы выбрать рациональный маршрут дальнейшего следования пакета, каждый конечный узел и маршрутизатор анализируют специальную информационную структуру, которая называется таблицей маршрутизации. Используя условные обозначения для сетевых адресов маршрутизаторов и номеров сетей в том виде, как они приведены на рису