В этой главе мы немного отвлечемся от конфигурирования маршрутизаторов Cisco. Для того чтобы успешно перемещать данные из одного места в другое, всем маршрутизаторам необходимо одно: протокол.
Поэтому на страницах этой главы будет рассказано о работе протоколов и о том, как они связаны с маршрутизаторами. Оставшаяся часть книги (в той или иной форме) знакомит с конфигурированием работы маршрутизатора в отношении используемых протоколов. Чтобы приступить к конфигурированию, необходимо иметь четкое представление о том, как на самом деле работают протоколы.
В главе будут обсуждаться следующие вопросы:
Протоколы можно разделить на две категории: маршрутизируемые протоколы и протоколы маршрутизации. Маршрутизируемые протоколы – это то, что большинство людей понимает под словом «протокол». Маршрутизируемые протоколы могут маршрутизироваться другими устройствами. Такие общеизвестные протоколы, как IP и IPX, относятся к маршрутизируемым.
Протоколы маршрутизации – это протоколы, которые маршрутизаторы используют для взаимодействия друг с другом (когда маршрутизируют маршрутизируемые протоколы). К протоколам маршрутизации относятся RIP и OSPF. Эти протоколы помогают маршрутизаторам наиболее эффективно передавать данные.
В данной главе мы будем изучать работу протоколов, использование их маршрутизаторами, а также поговорим о том, в каком случае и какому протоколу отдать предпочтение. Наиболее подробно будут рассмотрены протоколы IP и IPX. Именно эти два протокола вы, скорее всего, встретите при работе с маршрутизаторами Cisco.
Помните (особенно это касается новичков в маршрутизации), что не все протоколы можно маршрутизировать. То есть даже если протокол может применяться для передачи информации в сети, это не означает, что маршрутизаторы могут взаимодействовать с ним. Поэтому при планировании маршрутизируемой среды можно принять решение избегать использования некоторых протоколов. В конце главы будет представлено краткое описание немаршрутизируемых протоколов с пояснениями.
Чтобы иметь четкое представление о том, как работают протоколы, сначала необходимо понять, где они работают (имеется в виду не физическое местоположение, а способ взаимодействия протокола с компьютером или маршрутизатором). Разные протоколы работают на разных уровнях модели OSI; одно устройство может использовать набор протоколов для выполнения какойлибо задачи.
Примером двух протоколов, работающих вместе, служат TCP и IP. Эти протоколы работают на разных уровнях модели OSI, поддерживая связь между компьютерами. В следующих разделах будет описана роль модели OSI и ее влияние на работу маршрутизаторов Cisco.
Важно понимать, что протоколы служат определенной цели, и совсем не обязательно, что это маршрутизация. Одной из многих функций маршрутизируемых протоколов является сегментирование и инкапсулирование данных. Маршрутизаторы пользуются преимуществом этой функции, применяя ее для содействия процессу маршрутизации.
Но маршрутизируемые протоколы могут существовать и в средах, где нет маршрутизаторов. (Поэтому бывают и немаршрутизируемые протоколы.)
Чтобы научиться безошибочно определять, какие протоколы будут работать с маршрутизаторами Cisco, а какие – нет, необходимо сначала понять различия между ними. Проиллюстрировать эти различия поможет модель OSI.
В начале 1980х годов Международная организация по стандартизации (International Organization for Standardization, ISO) разработала модель OSI (Open Systems Interconnect, взаимодействие открытых систем). В основе OSI лежит получившая дополнительное развитие эталонная модель DoD. ISO взяла четырехуровневую модель DoD и структурировала ее еще сильнее. В результате появились семь уровней OSI.
Подразделение модели OSI на семь уровней помогает выделить некоторые области передачи данных для специализированных протоколов. Уровни модели OSI пронумерованы снизу вверх. Чтобы перенести информацию с одного компьютера на другой, данные должны пройти через эти уровни как на передающем, так и на принимающем устройствах. Информация седьмого уровня одной машины должна:
Каждый уровень модели OSI выполняет свою определенную функцию. Информация, поступающая с одного уровня, слегка изменяется, чтобы стать удобочитаемой для следующего уровня. Когда данные достигают принимающего устройства, они переходят от уровня к уровню в обратном порядке, чтобы аннулировать изменения, сделанные исходным компьютером. Поэтому даже если маршрутизатор имеет дело сданными только после того, как они попали на третий уровень, но при этом уровни с 4 по 7 работают некорректно, то эти уровни будут пагубно воздействовать на функционирование маршрутизатора.
В следующих разделах для обеспечения полного понимания роли протоколов в маршрутизации рассмотрены все уровни и выполняемые ими задачи. Изучив модель OSI, мы сможем перейти к обсуждению принципов IP и IPX.
Уровень приложений (уровень 7) занимается координированием связи между приложениями. Этот уровень модели OSI синхронизирует данные, перемещающиеся между клиентами и серверами, заведуя передачей файлов, сетевым управлением и обработкой услуг. В круг обязанностей уровня приложений входят:
Уровень приложений можно рассматривать как первый шаг, предпринимаемый данными, покидающими ПК, для их последующей маршрутизации. Уровень приложений – это прямой доступ маршрутизируемой информации к программе, в которую она направляется. То есть большая часть маршрутизируемой информации (если не вся) или исходит от приложения, работающего на устройстве, или же для него предназначена. Уровень приложений модели OSI задает правила, управляющие обработкой такой информации.
Например, когда вы просматриваете вебстраницу, вы просматриваете данные на уровне приложений. Информация, образующая вебстраницу, проходит через семь уровней модели OSI на удаленном сервере, «пересекает» пространство Интернета и поднимается по уровням OSI вашего компьютера. В конечном счете данные становятся удобочитаемыми на уровне приложений.
Функция уровня представлений состоит в преобразовании информации уровня приложений в формат, который понимают другие уровни. Любые шифрования, дешифрования и сжатия данных производятсяна шестом уровне модели OSI. Уровень представлений также отвечает за все функции аудио и видеопредставлений. Доступные на уровне представлений службы включают:
Заметьте, что все эти сервисы требуют сжатия. Для MP3 необходимо чрезвычайно эффективное сжатие звука, а GIF использует сжатие изображений. Если не применять к данным сжатие, их объем будет слишком велик, чтобы маршрутизатор смог обработать поступившие данные без ошибок. Чем больше информации маршрутизируется в рамках одного сеанса связи, тем меньше вероятность того, что она достигнет нужного получателя в целости и сохранности. Поэтому сжатие данных (вместе с шифрованием и дешифрованием) играет важную роль в обеспечении маршрутизации.
Сеансовый уровень (уровень 5) координирует связь между сетевыми устройствами. Сеансовый уровень (работая в паре с сеансовым уровнем другого устройства) устанавливает сеанс связи между двумя приложениями. Два сеансовых уровня контролируют «разговор» и в нужный момент заканчивают сеанс. Также сеансовый уровень отвечает за:
Информация, отправляемая (или получаемая) этими тремя верхними уровнями (уровни 5, 6 и 7), называется пользовательскими данными. Пользовательские данные преобразовываются в другие формы данных, подходящие для обработки остальными уровнями.
Транспортный уровень (уровень 4) отвечает за получение пользовательских данных от верхних уровней и разбиение их (или же обратную сборку) на удобные для передачи порции. Порции данных, формируемые транспортным уровнем, называются сегментами. Такие сегменты передаются нижним уровням для дальнейшей обработки.
Транспортный уровень также предоставляет возможность управления потоками данных. Управление потоками помогает этому уровню обеспечить надежную передачу данных от одного устройства к другому (с установлением соединений). Транспортный уровень забирает пользовательские данные с верхних уровней и сегментирует их. Затем эти сегменты по одному передаются указанному получателю. Получив сегмент, получатель отправляет обратно уведомление. Если отправитель не получает уведомления, он заново передает сегмент. После нескольких попыток отправляющее устройство старается заново установить соединение с получателем. Если оказывается, что получатель не отвечает (принимающее устройство больше не работает в сети), то генерируется ошибка и остальные сегменты не отправляются. Поток данных, передаваемых с одного ПК на другой по TCP, изображен на рис. 8.1.
Все уровни выполняют очень важные функции, но основная часть процесса маршрутизации проходит именно на уровне 3. Большая часть устройств межсетевого взаимодействия (маршрутизаторы, коммутаторы третьего уровня и мосты) работает на сетевом уровне модели OSI. Для обеспечения правильности маршрутизации сетевой уровень создает логическую карту сети. Эта карта работает как проводник при направлении данных из одной части сети в другую. Хотя функция составления карты сети имеет очень важное значение для маршрутизации, используется она не только маршрутизаторами. Персональные компьютеры и другие устройства также используют службы сетевого уровня для определения местоположения маршрутизаторов в окружении. Это позволяет им посылать маршрутизаторам информацию, которая должна быть доставлена по сети.
Первым этапом создания карты сети является преобразование сегментов транспортного уровня в пакеты. Затем эти пакеты, к которым добавлена адресная информация, передаются канальному уровню.
Когда устройство получает пакет, из него извлекается информация об отправителе и помещается в таблицу. По мере роста таблицы сетевой уровень получает более явную картину сетевого окружения. Другие протоколы и устройства могут использовать эту информацию для эффективной маршрутизации данных.
Например, если устройство сети A хочет отправить данные устройству сети B, оно посылает широковещательный пакет через свою локальную сеть (A). Этот широковещательный пакет проводит «разведку», разыскивая адрес получателя. Так как принимающее устройство не находится в сети A, то «разведчик» не получит ответ. Тогда устройство сети A предположит, что получатель находится в сети B, и отправит данные туда.
Прежде чем достичь сети B, пакет попадает на маршрутизатор 1. Маршрутизатор просматривает свою собственную таблицу маршрутов (составленную из данных сетевых уровней) и определяет, что получатель действительно находится в сети B. Тогда маршрутизатор 1 пересылает пакет в соответствующие сети. Маршрутизатор, соединяющий две сети, отметит эту ситуацию в своей таблице маршрутов и в дальнейшем будет направлять все пакеты, предназначающиеся данному устройству, в сеть B. Ключевым элементом сценария является знание адреса устройства, с которым вы пытаетесь поделиться информацией. Сбором и отслеживанием этих адресов занимается канальный уровень.
Сетевой уровень поддерживает карту сети, а канальный уровень (уровень 2) обеспечивает корректность информации в этой карте за счет адресации. Канальный уровень принимает пакеты от сетевого уровня и преобразует их в кадры данных. Кадры содержат следующую информацию:
Канальный уровень также обеспечивает много других возможностей, которые доступны не всем устройствам. Поэтому уровень был разбит на два подуровня: MAC и LLC. В каждом подуровне существуют свои правила и атрибуты.
Подуровень MAC (media access control, управление доступом к среде) отвечает за кадрирование пакетов сетевого уровня. Разбивая пакеты на кадры, подуровень MAC прикрепляет к пакету адресную информацию, в которую входит MACадрес.
Еще одной функцией подуровня MAC является обслуживание верхних уровней без установления соединения. Такое обслуживание имеет место, когда данные посылаются на устройство без предварительного установления с ним соединения. Другими словами, отправляющее устройство отсылает данные по сети, заранее не извещая об этом получателя.
Далее вы узнаете, что подуровень MAC имеет очень важное значение для маршрутизации. Так как MACадреса уникальны и распознаются почти всеми протоколами, то их можно встретить во многих аспектах маршрутизации.
Одной из задач подуровня LLC (logical link control, управление логическим соединением) является предоставление обслуживания с установлением соединений (в то время как MAC не устанавливает соединение). В этом случае перед отправкой кадров устанавливается соединение с получателем, благодаря чему доставка кадров гарантируется получением уведомлений.
Первый уровень модели OSI определяет физическое соединение между устройствами. Физический уровень принимает кадры от верхних уровней и передает их в виде битов по среде сети передачи данных. При работе с интерфейсами маршрутизаторов Cisco это становится гораздо более понятным. Все физические порты и интерфейсы оборудования Cisco для маршрутизации работают на физическом уровне модели OSI. Весь вышеописанный процесс представлен на рис. 8.2.
Осмысление модели OSI поможет вам понять, как работают протоколы, что, в свою очередь, поможет овладеть принципами маршрутизации, на постижение которых некоторые тратят долгие годы. Закончив разговор о внутреннем устройстве модели OSI, обсудим, как маршрутизаторы используют эту информацию для перемещения данных из системы в систему.
Для того чтобы понять, как протоколы работают и как они перемещают данные, необходимо знать, что у них «внутри». Для каких целей протокол был создан, на каких уровнях модели OSI он работает и что от него можно ожидать? Рассмотрение различных типов протоколов поможет вам понять, как работают протоколы маршрутизатора и как маршрутизаторы Cisco с ними управляются.
Протоколы с установлением соединения разработаны так, чтобы способствовать установлению соединений между системами. То есть когда две системы используют протоколы с установлением соединений, то прежде чем передавать информацию, они устанавливают между собой соединение. Протоколы с установлением соединения, такие как TCP (Transmission Control Protocol – протокол управления передачей), работают на транс портном уровне модели OSI. Так как многие маршрутизаторы работа ют на сетевом уровне (которому внутренне присуще отсутствие соединений), протоколы с установлением соединения не являются маршрутизируемыми. Но мы все же поговорим о них, так как у них имеется ряд полезных свойств, к тому же, они тесно связаны со многими дружественными маршрутизатору протоколами без установления соединений, с которыми мы их и сравним.
Когда одна система хочет отправить информацию в соседнюю, получателю отправляется запрос на установление соединения. Система - отправитель ждет уведомление о готовности к соединению. Получив его, система-отправитель устанавливает соединение, и две системы могут свободно обмениваться данными. По завершении соединения инициировавшая его система отправляет пакет «teardown», который показывает, что соединение закончено и используемые для его поддержания ресурсы должны быть освобождены. Процесс установления соединения представлен на рис. 8.3.
Сам процесс (инициирование соединений перед обменом информацией) не создает особых проблем; в действительности это один из наиболее привлекательных аспектов данной категории протоколов. Проблемы для некоторых сетей может вызвать тот способ, которым соединение поддерживается.
Когда инициатор запроса посылает пакет установления соединения, к пакету добавляется запись о пути, который он проходит. Таким образом пакет создает маршрут, по которому будет происходить обмен информацией между двумя устройствами. Получающая пакет система отправляет свое уведомление (acknowledgment – ACK) по тому же пути, который прошел пакет установления соединения. И после открытия сеанса связи между двумя системами все пересылаемые ими пакеты следуют по тому же самому маршруту, в результате чего между устройствами возникает гарантированный канал связи.
Но установление соединения и поддержание назначенного пути требуют значительных ресурсов. Накладные расходы протоколов с установлением соединения выше, чем у протоколов без установления соединений. К тому же, изза того что в основе работы маршрутизатора лежит случайность, он не может поддерживать назначенные пути.
Примечание
Кроме того, протоколы с установлением соединения работают по заданному пути. То есть каждый пакет отправляется по тому же пути, что и предыдущий, что облегчает поиск неисправностей в случае проблем с соединением. Используя такие средства, как пакетные анализаторы или модули проверки текущего состояния LAN, специалист легко может определить маршрут, по которому взаимодействовали два устройства, и диагностировать возможные проблемы.
Протоколы без установления соединений, такие как IP, работают (заредким исключением) на сетевом уровне модели OSI. Маршрутизаторы Cisco (и все остальные маршрутизаторы, присутствующие на рынке) также работают на сетевом уровне. Из чего можно сделать логический вывод о том, что все маршрутизируемые протоколы относятся к протоколам без установления соединений и что маршрутизаторы поддерживают обмен информацией только без установления соединений. Протоколы без установления соединений используют при доставке данных принцип «наибольших усилий». Когда устройство пытается отправить информацию другой системе, между ними не устанавливается специальное соединение. Использование протоколов без установления соединений несколько рискованно. С ними связаны такие возможные опасности, как:
Так как между устройствами нет выделенного соединения, каждый отправленный ими пакет может перемещаться по пути, не совпадающему с остальными. Поэтому вероятность того, что пакеты прибудут не в том порядке, в котором были отправлены (если вообще прибудут), гораздо больше, чем при использовании протоколов с установлением соединений.
Главным недостатком протоколов без установления соединений является неминуемая потеря данных, находящихся в недоставленных пакетах. И хотя в большинстве случаев потери минимальны и едва заметны, но риск все-таки есть.
Еще одним неудобством, вызванным отказом от использования выделенного пути, является то, что сложность поиска и устранения неисправностей возрастает экспоненциально при увеличении количества маршрутизаторов в сети. Так как пакеты могут использовать различные пути, чтобы попасть в один и тот же пункт назначения, то чрезвычайно сложно предсказать, где же может возникнуть проблема. Один из способов контроля маршрутизатора Cisco за доставкой данных из одной системы в другую – это использование статических маршрутов (когда возможно). Хотя статические маршруты, конечно же, подходят не для каждого случая (на самом деле они в большей или меньшей степени лишают маршрутизацию смысла), они могут помочь в особенно ненадежных системах.
Есть и явные преимущества использования протоколов без установления соединений. Обычно они быстрее и требуют меньших ресурсов, чем протоколы с установлением соединений. Именно поэтому они идеально подходят для маршрутизации. В условиях полиморфной природы маршрутизации протоколы без установления соединения предоставляют возможность быстро перемещать данные из системы в систему.
Так как протоколы без установления соединения не требуют установления сеанса связи, они могут быть быстрыми. Время, необходимое для установления и завершения соединения, на отправку уведомлений и ответы на них, в больших сетях накапливается. Поэтому для современных маршрутизируемых сетей так важно быстродействие протоколов без установления соединения.
Объяснять отличие классовых протоколов от бесклассовых лучше всего на примере IP. В том, что касается протоколов, в списке ваших приоритетов на первом месте должен стоять IP. Причина, по которой различия классовых и бесклассовых протоколов рассматриваются на примере IP, заключается в том, что в последние годы IP стал и тем и другим, то есть его можно сконфигурировать и как классовый, и как бесклассовый протокол.
По своей природе IP относится к классовым протоколам. Когда IP разрабатывался (вместе с первыми сетевыми окружениями), он был задуман как классовый протокол. Это означает, что IP может быть разделен на классы, каждый из которых будет ориентироваться на нужды конкретной сети клиента. Классы используются для определения предельного размера среды на основании соотношения количества машин и сетей. Каждый класспредлагает разное количество адресуемых машин для адресуемой сети.
Один класс может предлагать 127 адресуемых сетей и более 16 миллионов адресуемых машин в сети, а другой – 2 миллиона сетей и 254 машины в сети.
В случае с IP протокол разделен на три (общепринятых) класса. Классы были разработаны так, чтобы соответствовать потребностям организаций разных размеров.
Маршрутизатор определяет, какая часть адреса использована для сети, применяя вторичный адрес или маску. Маски (уникальные для классовых протоколов) указывают маршрутизирующему устройству, какие биты протокольного адреса представляют сеть. Эти вычисления являются ключом к функциональности маршрутизатора.
Проблема классовых протоколов, таких как IP, в том, что они конечны в том смысле, что существует определенный предел количества адресов, которые могут быть присвоены в течение жизни протокола. Поэтому стал популярным бесклассовый способ использования IP. Хотя бесклассовые протоколы тоже используют один адрес для представления как сети, так и машины, но их поведение неизменно. Часть адреса, относящаяся к машине, всегда имеет одинаковую длину. Поэтому маршрутизирующие устройства могут легко и быстро определять сетевые биты адреса, которые никогда не меняются.
В последние несколько лет широкое распространение получил протокол CIDR (Classless InterDomain Routing – бесклассовая междоменная маршрутизация). Разработанный с целью помочь удовлетворить растущий спрос на IPсети класса B, CIDR является бесклассовой формой IP. Когда маршрутизаторы сконфигурированы для использования CIDR, сетевые IPадреса сгруппированы в суперсети. Внутри структуры IP адреса биты сетевой части передаются адресной части машины, что обеспечивает более гибкую схему адресации. Эффект создания суперсетей заключается в том, что возникает возможность маршрутизации информации к любой машине группы сетей на основе адреса суперсети. Адрес суперсети используется для определения того, какие сети принадлежат к конкретной группе.
Протоколы способствуют движению данных из системы в систему, используя процедуру под названием инкапсуляция. В процессе инкапсуляции данные, пересылаемые из одной системы в другую, упаковываются так, чтобы промежуточные устройства сетевого взаимодействия могли определить, куда направляются данные. Инкапсуляция представляет собой процесс деления сплошного потока данных на небольшие сегменты одинакового размера. Эти маленькие одинаковые пакеты легче отправлять и получать, так как их размер легко спрогнозировать всем системам, использующим один и тот же протокол. Поэтому сеть может настраиваться на работу с сегментированными данными конкретного размера. Во время инкапсуляции протокол присоединяет к каждому сегменту или пакету свой собственный заголовок.
Содержимое заголовка зависит от протокола. (Поля заголовка будут описаны при рассмотрении конкретных протоколов в следующей главе. Заголовки IP обсуждались в главе 5 «Перемещение данных маршрутизаторами».) Но несколько полей присутствуют в заголовках почти всех протоколов. Два из них – это адрес отправителя и адрес получателя. Эти адреса сообщают маршрутизатору и другим устройствам сетевого взаимодействия, откуда отправлен пакет данных и куда его необходимо доставить.
Следующее поле – это порядковый номер. Данное поле очень важно для инкапсуляции. Так как протоколы берут большие порции данных и делят их на более мелкие, легко управляемые части, то система должна уметь определять, как вновь собрать из них поток данных. (Помните, что маршрутизаторы работают на сетевом уровне без установления соединений, поэтому пакеты почти всегда прибывают на место назначения не в том порядке, в каком были отправлены. Обеспечением того, чтобы пакеты были снова собраны в правильном порядке, занимаются маршрутизируемые протоколы.)
Еще одно необходимое поле содержит размер передаваемого пакета данных.
Последнее поле, о котором мы сейчас поговорим, – это контрольная сумма. По существу, контрольная сумма представляет (в краткой и легко воспроизводимой форме) содержимое передаваемого пакета. После получения пакета (но до его обратной сборки) устройство назначения на основе полученных данных вычисляет контрольную сумму заново и сравнивает ее с полученной контрольной суммой, чтобы определить, не был ли пакет поврежден во время пересылки. Эта функция маршрутизируемых протоколов также жизненно важна для правильной работы маршрутизаторов.
Этот короткий, но достаточно подробный рассказ о маршрутизируемых протоколах служит введением в оставшуюся часть книги, которая познакомит вас непосредственно с протоколами и расскажет, как маршрутизаторы Cisco их используют. Теперь же мы углубимся в конфигурирование маршрутизатора Cisco с тем, чтобы он смог использовать свой первый протокол – IP.
Данная глава служит введением в протоколы маршрутизации. До этого момента мы имели дело с двумя различными типами протоколов: протоколами глобальных сетей и маршрутизируемыми протоколами, ни один из которых в действительности не используется маршрутизаторами. Точнее говоря, эти протоколы – то, с чем работают маршрутизаторы, просто перемещая упакованные в них данные из одного места в другое. А протоколы маршрутизации – это те самые инструменты, с помощью которых маршрутизаторы выполняют свою задачу.
Маршрутизаторы используют протоколы маршрутизации для выполнения своей повседневной работы по транспортированию данных между сетями. Протоколы глобальных сетей и маршрутизируемые протоколы (такие как IP) служат лишь «материалом» для работы протоколов маршрутизации. Оставшаяся часть книги по мере углубления в процедуры конфигурирования маршрутизаторов и протоколов маршрутизации будет содержать все больше технических деталей.
В этой главе вы познакомитесь с основами «рабочих лошадок» маршрутизации – протоколов маршрутизации. Задача таких протоколов, как RIP, IGRP, OSPF и BGP, заключается в нахождении наилучшего пути, отправке по нему заключенных в маршрутизируемые протоколы данных и проверке того, что данные достигли пункта назначения. В этой главе рассматриваются следующие темы:
Давайте изучим работу протоколов маршрутизации в два этапа. Первая часть работы протокола состоит в определении наилучшего пути для отправки данных. Маршрутизатор выполняет сложные расчеты для точного определения способа перемещения данных в сеть назначения. Ответственность за эту часть работы лежит на алгоритме маршрутизации.
Вторая часть работы протокола маршрутизации заключается в том, чтобы обеспечить все маршрутизаторы сети одинаковыми «картинами» сетевого окружения. Это значит, что все маршрутизаторы должны получать одну и ту же информацию о наличии или отсутствии сетевых соединений.
Далее в этой главе мы подробно обсудим обе эти составляющие протоколов маршрутизации. Начнем с изучения алгоритмов маршрутизации.
Независимо от типа алгоритм маршрутизации представляет собой математическую формулу, которую протокол маршрутизации использует для определения степени предпочтительности тех или иных путей между устройствами и сетями назначения. Маршрутизатор хранит этот алгоритм в памяти и обращается к нему, когда необходимо принять решение о маршрутизации. В протоколах маршрутизации могут использоваться два основных типа алгоритмов: вектор расстояния и состояние канала. Хотя эти алгоритмы используются во всех протоколах маршрутизации, их реализации могут различаться. Существуют, однако, общие термины, в которых описываются назначение и функционирование алгоритмов маршрутизации.
Протокол маршрутизации собирает определенную информацию о сетях и маршрутизаторах в своем окружении. Эта информация хранится в таблице маршрутов в памяти маршрутизатора. Данные из таблицы используются алгоритмом маршрутизации. Результат вычислений, проделанных в соответствии с алгоритмом, используется для определения наилучшего пути по определенному сценарию. В табл. 14.1 приведен пример таблицы маршрутов (для гипотетической маршрутизируемой среды).
Маршрут | Метрика |
От маршрутизатора A к маршрутизатору B | 2 |
От маршрутизатора B к маршрутизатору C | 3 |
От маршрутизатора A к маршрутизатору C | 6 |
От маршрутизатора C к маршрутизатору D | 5 |
Согласно нашему упрощенному алгоритму, «наилучшим» путем к месту назначения будет тот, который имеет наименьшее значение метрики. Когда маршрутизатор A получает пакет, адресованный маршрутизатору C, в таблице маршрутов он может найти два подходящих пути. В первом случае пакет может быть отправлен от маршрутизатора A непосредственно к C. Во втором – пакет посылается сначала от A к B, а затем к C. Для определения того, какой из способов лучше, используется алгоритм маршрутизации.
Глядя на значения метрик в табл. 14.1, сопоставленных каждому из возможных соединений, мы видим, что пути от маршрутизатора A к В и от B к C имеют суммарную метрику 5, в то время как прямой путь к маршрутизатору C имеет метрику 6. Алгоритм выбирает путь A–B–C и отправляет информацию по этому «наилучшему» маршруту.
Этот упрощенный пример показывает, как действует алгоритм маршрутизации, принимая решение о выборе маршрута. Протокол определяет, какие именно данные содержатся в таблице маршрутов и как они используются алгоритмом. Протоколы состояния канала и вектора расстояния могут использовать разные метрики для выработки решения. В последующих разделах мы обсудим различия между этими двумя типами алгоритмов.
Алгоритмы вектора расстояния похожи на упрощенный алгоритм, использованный в нашем примере (табл. 14.1). Такие алгоритмы используют метрики (стоимости) с целью определения наилучшего пути к месту назначения. Путь с наименьшей общей стоимостью выбирается в качестве «наилучшего» пути.
При использовании в сети алгоритма вектора расстояния каждый маршрутизатор получает свои значения «стоимостей». Эти стоимости могут быть выбраны совершенно произвольно. Администраторы могут назначать любые значения, руководствуясь своими собственными соображениями. Например, если стоимость равна пяти, число 5 не имеет никакого значения для внешнего наблюдателя, в то время как с точки зрения администратора оно может означать меру надежности канала.
Значения стоимостей могут вычисляться динамически, например в зависимости от длительности задержек в канале по сравнению с другими каналами. Все стоимости (назначенные явно и прочие) собраны в таблице маршрутов. Оттуда значения стоимостей извлекаются алгоритмом для расчета наиболее подходящего пути в данном сетевом окружении.
Для того чтобы маршрутизаторы могли заполнять свои таблицы маршрутов, им необходим механизм обмена имеющимися у них данными. Этот механизм называется обновлением маршрутов. В процессе обмена данными между протоколами вектора расстояния таблицы маршрутов полностью или частично пересылаются от маршрутизатора к маршрутизатору. В результате каждый из маршрутизаторов получает информацию, имеющуюся в таблицах остальных маршрутизаторов. Это позволяет каждому из них получить более полное представление о сетевом окружении и обоснованно выбрать лучший маршрут.
Примерами использования алгоритма вектора расстояния могут служить протоколы RIP (Routing Information Protocol – протокол маршрутной информации) и BGP (Border Gateway Protocol – протокол граничного шлюза), чаще всего применяемые в сетях, построенных на оборудовании Cisco. Другие распространенные протоколы, в частности OSPF (Open Shortest Path First – первоочередное открытие кратчайших маршрутов), являются протоколами с объявлением о состоянии канала. Эти протоколы работают немного иначе, чем их аналоги, использующие алгоритм вектора расстояния.
Протоколы состояния канала работают по той же базовой схеме, что и алгоритмы вектора расстояния, в том смысле, что и те и другие выбирают путь с наименьшей стоимостью. Однако протоколы состояния канала действуют более локально. В то время как маршрутизатор, использующий протокол вектора расстояния, вычисляет полный путь пакетадо места назначения, протокол состояния канала выбирает наилучший путь среди каналов, находящихся в непосредственной близости.
Например, протокол вектора расстояния может вычислить, что наилучшим путем от маршрутизатора A к маршрутизатору E будет A–C–D–E, и отправит пакет именно по этому пути. В отличие от него, протокол состояния канала определит, что наилучший путь от A к E проходит через C, и отправит пакет ему, чтобы маршрутизатор C сам определил следующий шаг.
Такой метод больше подходит для больших систем, подверженных частым изменениям. В подобных вычислительных средах таблицы маршрутов могут быть очень большими. Поэтому таблица каждого маршрутизатора содержит лишь небольшую часть схемы сети. Когда какое-либо соединение становится недоступным (или меняет свое состояние), маршрутизатор посылает в сеть сообщение, извещающее об этом изменении.
Протоколы состояния канала и вектора расстояния выполняют маршрутизацию совсем по-разному. Обсуждая их в оставшихся главах этой книги, мы будем уточнять, как каждый из них проявляет себя в той или иной ситуации.
Первая часть работы протокола маршрутизации – определить, каким должен быть наилучший путь для передачи данных. Вторая часть работы любого протокола заключается в рассылке информации об изменениях в маршрутах всем устройствам, участвующим в маршрутизации.
В большинстве протоколов маршрутизации в том или ином виде реализовано динамическое обновление. Другими словами, в эти протоколы встроен механизм, позволяющий маршрутизаторам обмениваться информацией в пределах выбранной области или группы. Хотя отдельные параметры, такие как состав данных и преодолеваемое ими количество переходов, могут меняться от протокола к протоколу, ряд общих правил справедлив для всех обновлений. В этом списке перечислены некоторые положения, общие для всех маршрутизаторов и протоколов маршрутизации, использующих динамическое обновление:
Давайте разберемся, как эти правила используются для успешного завершения операций при обновлении. Когда мы перейдем к обсуждению конкретных протоколов, то рассмотрим эти правила более подробно.
Большинство маршрутизаторов собирают только ту информацию, которая непосредственно относится к их интерфейсам. Другими словами, маршрутизатор получает из первых рук сведения только о тех каналах, которые напрямую присоединены к его интерфейсам. На рис. 14.1 показана связанная сетевая среда.
Среда, изображенная на рис. 14.1, включает в себя семь маршрутизаторов с (произвольно) назначенными метриками. Так может выглядеть сеть типичной конфигурации. В табл. 14.2–14.8 приведены таблицы маршрутов для каждого из маршрутизаторов в том виде, в каком они существуют до начала каких-либо обновлений.
Путь | Метрика |
---|---|
A-C | 1 |
A-B | 3 |
A-E | 2 |
Путь | Метрика |
---|---|
B-A | 3 |
B-D | 4 |
Путь | Метрика |
---|---|
C-A | 1 |
Путь | Метрика |
---|---|
D-B | 4 |
D-E | 2 |
Путь | Метрика |
---|---|
E-A | 2 |
E-D | 2 |
E-F | 1 |
Путь | Метрика |
---|---|
F-E | 1 |
F-G | 3 |
Путь | Метрика |
---|---|
G-F | 3 |
Из этих таблиц видно, что не каждый маршрутизатор знает пути ко всем остальным. На самом деле каждый из них видит только своих непосредственных соседей. Если маршрутизатор A получает пакет, предназначенный маршрутизатору F, он не может определить, какой из маршрутов предпочтительнее. (Если бы маршрутизатор A использовал протокол вектора расстояния, то ему был бы известен полный путь к маршрутизатору F. Если же маршрутизатор A использует протокол состояния канала, то у него не будет никакого способа узнать, существуют ли еще работающие каналы связи кроме его собственных.) Каждый маршрутизатор должен сообщить остальным, как выглядит его сетевое окружение.
После полномасштабного обновления, когда каждый из маршрутизаторов проинформирует своих соседей о содержимом своей таблицы маршрутов, новая общая таблица маршрутов будет иметь вид, приведенный в табл. 14.9.
После того как обновление закончено, маршрутизатору A гораздо проще отправить пакет маршрутизатору F. Изучив свою таблицу, маршрутизатор A увидит, что маршрутизатор F находится за маршрутизатором E, который доступен как непосредственно, так и по маршруту A–B–D–E.
Путь | Метрика |
---|---|
A-B | 3 |
B-D | 4 |
A-C | 1 |
A-E | 2 |
D-E | 2 |
E-F | 1 |
F-G | 3 |
Таблицы маршрутов, подобные только что рассмотренной, могут образовываться двумя путями. Их заполнение может инициироваться событиями либо таймером через определенный интервал. Некоторые протоколы запускают процесс обновления в определенное время, например каждые 30 секунд. В этом случае, как только интервал истекает, каждый маршрутизатор посылает обновление, содержащее информацию из его таблицы. Это обновление может содержать важные сведения об изменениях в сети, а может быть и пустым.
Другие протоколы запускают процесс обновления по некоторому событию. Например, если отключается канал между маршрутизаторами A и E, то рассылается обновление, немедленно сообщающее остальным маршрутизаторам, что они не должны полагаться на это соединение.
В обоих случаях обновления приводят к одному результату: конвергенции. Конвергенция в сети достигается, когда все маршрутизаторы используют в своей работе одну и ту же картину сети. Быстрая конвергенция сети является важным требованием и существенно влияет на рыночные перспективы протокола.
В том, что касается маршрутизации, конвергенция – это волшебное слово. Конвергенцией называют такое состояние, в котором все маршрутизаторы некоторой среды используют в работе одинаковое представление сети. Например, при отключении какого-то из каналов начинается обновление маршрутных таблиц. С момента отключения канала и до завершения обновления всех таблиц маршрутизаторы находятся вне состояния конвергенции. Любой пакет, пересылаемый по сети, не достигшей конвергенции, рискует быть потерянным или отправленным не по адресу.
Состояние конвергенции труднее достигается в больших сетях со сложными маршрутами. Поэтому так важен правильный выбор типа протокола, подходящего для определенной среды. В очень больших сетях протоколы состояния канала достигают конвергенции намного быстрее, чем протоколы вектора расстояния. Однако в небольших сетях протоколы вектора расстояния выигрывают в скорости доставки информации.