Picture Доставку всего этого трафика по назначению обеспечивают маршрутизаторы, с помощью которых соединяются между собой сети IP. Эти маршрутизаторы можно сконфигурировать и вручную, однако состояние любой сети, кроме самых маленьких, меняется так быстро, что администратор просто не успевает соответствующим образом установить все маршруты на всех маршрутизаторах. Для автоматизации этой задачи используются протоколы маршрутизации. Раньше невозможно было даже представить себе, что сотни тысяч сетей окажутся соединены между собой. Поскольку старые IP-протоколы создавались с ориентацией на малые сети, совсем неудивительно, что они не годятся для новых, в особенности подключенных к Internet. По алфавиту: GGP (Gateway-to-Gateway Protocol), IGP (Interior Gateway Protocol), EGP (Exterior Gateway Protocol), IDRP (Inter-Domain Routing Protocol), SDRP (Source Demand Routing Protocol).


Новый путь
Выводы
Своя рубашка ближе к телу
Маршрутизация 101
Строение протоколов маршрутизации
IPv6: что день грядущий нам готовит?

Самый старый протокол, используемый в наши дни, это RIP1 (Routing Information Protocol, Version 1). Этот протокол все еще нельзя списывать со счетов: он вполне пригоден для малых сетей с небольшим числом маршрутизаторов и допускает масштабирование при росте сети. Однако изменения топологии сети он отслеживает медленно, что в свою очередь приводит к большим накладным расходам.

Работа RIP1 основана на использовании векторов расстояний (distance vector protocol): RIP-маршрутизаторы каждые 30 секунд рассылают широковещательные сообщения со списками сетей, до которых они могут "дотянуться", указывая при этом, сколько скачков (проходов через маршрутизатор) для этого потребуется. Каждый маршрутизатор в RIP-сети принимает такие сообщения от остальных и заносит доступные им сети в свою таблицу маршрутизации, при этом счетчик скачков (или метрика) увеличивается на единицу. Так продолжается до тех пор, пока информация о маршруте не распространится по всей сети либо пока счетчик скачков не станет равен 16, что в RIP принимается равным бесконечности. Маршрут с метрикой 17 не подлежит дальнейшей передаче, поэтому в RIP-окружении сети, разделенные 16 скачками, считаются недостижимыми друг для друга.

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

Мало того, если каждый маршрутизатор большой сети каждые 30 секунд будет передавать свою таблицу, то сеть, а в особенности низкосокростные каналы, может оказаться сильно загружена. Это не просто неудобно: в результате может возникнуть ситуация, когда пакет начнет "болтаться" взад-вперед между двумя маршрутизаторами, каждый из которых считает, что оптимальный для этого пакета путь лежит через соседнее устройство. Рано или поздно время жизни пакета (TTL, time to live) будет исчерпано, и он никогда не будет доставлен по месту назначения. Избежать двухточечных циклов помогает метод разделения горизонта при модификации (split-horizon updates), однако от циклов с участием трех и более устройств RIP не свободен. Кроме того, в RIP невозможен динамический выбор маршрутов на основании таких факторов, как задержка при передаче, полоса пропускания, стоимость услуг каналов или загрузка сети.

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

RIP2 - это не более чем подновленный вариант RIP1; в него добавлена поддержка для нулевых подсетей, IP-адресов без разделения на классы и некоторых простейших функций аутентификации.

Новый путь

В 1989 году появился протокол OSPF (Open Shortest Path First). Комиссия Internet Architecture Board рекомендует его для использования в Сети Internet. OSPF - почти стандартный протокол маршрутизации по состоянию каналов (link state protocol, LSP), поддерживающий принятый в Internet протокол CIDR (Classless Inter-Domain Routing).

В OSPF поддерживаются также маски подсетей переменной длины (Variable Length Subnet Masks, VLSM), что позволяет экономно расходовать адресное пространство и обеспечить расчет метрик по полосе пропускания. Для эффективного увеличения пропускной способности пакеты могут доставляться к месту назначения по нескольким маршрутам одновременно. Для пересылки сообщений между маршрутизаторами в OSPF используются IP-пакеты особого вида. В отличие от большинства других протоколов, в OSPF для доставки пакетов к соседним устройствам применяется многоадресная рассылка (multicasting).

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

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

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

Опорную область нашей сети составляли каналы связи между разными территориями. Область представляла собой совокупность сети главного офиса территории и сетей филиалов, соединенных с центральной сетью каналами на 56 Кбит/с. Так, локальная сеть офиса, Сан-Франциско и ближайших филиалов составляла "Область 1"; "Область 2" была расположена в Далласе, "Область 3" в Атланте и так далее.

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

Далее вступает в действие протокол обмена. На этой стадии маршрутизаторы сравнивают номер версии поддерживаемых ими каналов с номерами версий, хранимых на DR. Далее, используя протокол затопления (flooding), маршрутизаторы обмениваются представляющими интерс каналами, поддерживая актуальность своих баз данных и базы данных DR.

Мы тестировали OSPF, поработав сначала с RIP1, RIP2 и разработанным Cisco протоколом EIGRP (Enhanced Gateway Routing Protocol), так как пришлось переконфигурировать всю сеть целиком, чтобы обеспечить поддержку переходных (transitory) каналов на последовательных линиях связи. До этого нам удавалось избежать переконфигурации всех IP-адресов, поскольку мы использовали интерфейсы, не имеющие собственных адресов (unnumbered interface). На конфигурацию OSPF ушло вдесятеро больше времени, чем на работу с другими протоколами, однако нам удалось переконфигурировать всю сеть, избежав визитов на места установки маршрутизаторов.

Ни один из протоколов не свободен от недостатков. У OSPF их два. Во-первых, это необходимость использования переходных сетей между каналами связи. Для тех, кто работает с маршрутизаторами Cisco, это означает, что каналам связи между маршрутизаторами должны обязательно присваиваться адреса, в результате чего для работы с OSPF понадобится больше адресов, чем для других протоколов, например EIGRP. Второй серьезный недостаток - то, что OSPF поддерживает только IP.

Мы, безусловно, согласны, что вряд ли стоит маршрутизировать что-либо помимо IP, однако иногда приходится осуществлять маршрутизацию IPX. И все же трудно отрицать, что OSPF - единственный стандартный протокол внутренней маршрутизации (interior protocol), поддерживающий CIDR и VLSM.

В 1988 году, пытаясь преодолеть недостатки RIP, Cisco разработала протокол IGRP (Internet Gateway Routing Protocol). Это была первая попытка компании создать интеллектуальный протокол маршрутизации, позволяющий учитывать полосу пропускания и запаздывание сообщений. Поскольку этот протокол был одним из первых, очень многие компании приняли его в качестве стандарта. И в настоящее время позиции данного протокола очень сильны, несмотря на то, что его сильно потеснил EIGRP. Сети, работающие под IGRP, ведут себя значительно лучше тех, где используется RIP; естественной модификацией таких сетей представляется их перевод на EIGRP. Последний появился в 1994 году, когда Cisco добавила в IGRP поддержку CIDR и VLSM, маршрутизацию по нескольким путям (multipath), а также распознавание циклов. Подобно IGRP и RIP, протокол EIGRP основан на использовании вектора расстояний, однако это не означает, что EIGRP менее совершенен, чем OSPF.

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

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

В отличие от OSPF протокол EIGRP поддерживает интерфейсы, не имеющие собственных IP-адресов, и потому оставляет свободными те адреса, которые в OSPF использовались бы для организации переходных каналов между сетями. В IGRP и EIGRP задействованы метрики, наиболее полно описывающие сеть. Расчет маршрутов в них происходит на основе данных о полосе пропускания, запаздывании сообщений, надежности и загрузке каналов. В результате получаются более точные значения метрик, чем в любом другом протоколе. В EIGRP поддерживается балансировка нагрузки среди нескольких путей, что позволяет полностью использовать пропускную спосбность сети.

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

Кроме того, в EIGRP поддерживается распознавание зацикливания маршрутов, что отличает EIGRP от всех прочих протоколов на базе векторов расстояний. Алгоритм, позволяющий избежать циклов, носит название DUAL (Diffusing Update Algorithm); в его основе лежит следующая идея: зацикливания можно избежать, выбирая всегда самый короткий путь к точке назначения.

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

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

Мы тестировали EIGRP после RIP1 и RIP2. Переход от RIP к EIGRP сводился просто к перенастройке маршрутизаторов, для чего достаточно было просто выполнить несколько команд на каждом устройстве. Мы обнаружили, что время обработки возросло по сравнению с RIP, превысив, кроме того, время обработки под OSPF. Из-за недостаточно большого размера нашей сети в ней не сложилось ситуации, при которой OSPF начинает работать с той же скоростью, что и EIGRP.

Как и у OSPF, у EIGRP есть свои достоинства и недостатки. При планировании сетей, в которых используется только оборудование Cisco, имеет смысл внимательно рассмотреть оба протокола. Некоторые сети практически невозможно реорганизовать таким образом, чтобы удовлетворить требованиям иерархии OSPF. В тех сетях, где надо выполнять маршрутизацию IPX или же AppleTalk, лучше всего использовать EIGRP.

BGP4 - единственный протокол пограничной маршрутизации, где поддерживается CIDR. Он был выпущен IETF в 1994 году, когда стало ясно, что если не принять соответствующих мер, адреса класса B скоро окажутся исчерпаны. Чтобы BGP4 мог работать с таблицами маршрутизации, создававшимися в конце эры использования классов адресов, в этом протоколе была предусмотрена поддержка объединения маршрутов. В этом случае маршрутизатор может запоминать группу маршрутов как один элемент таблицы.

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

Свои недостатки есть и у BGP. В частности, здесь отсутствует возможность управления трафиком на основе правил (policy-based), однако такие работы уже ведутся.

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

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

Выводы

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

Routing Information Protocol (RIP). Во многих местах он еще используется, однако вряд ли кто-либо станет устанавливать его преднамеренно - разве что в очень маленькой сети, которая, вероятнее всего, таковой и останется. Однако даже в этом случае лучше будет выбрать более современный протокол. Помимо прочего, RIP не хватает надежности. Положительная черта RIP - его очень легко конфигурировать.

Enhanced Internet Gateway Routing Protocol (EIGRP). В настоящее время EIGRP работает только с продуктами Cisco. Маршрутизаторы от других производителей не в состоянии принимать участие в игре, им остается либо использовать статические маршруты, либо иметь дело с комбинацией RIP и EIGRP, что представляется не очень осмысленным.

В сетях же, где работает только Cisco (а таких немало), и в особенности там, где в настоящее время используется Internet Gateway Routing Protocol, протокол EIGRP представляет собой идеальное решение. Поскольку лежащий в его основе алгоритм поддается настройке, администратор глобальной сети может выжать из нее максимальную производительность. Поддержка VLSM и отсутствие переходных сетей позволяет экономить адресное пространство.

Переход от RIP к EIGRP происходит практически незаметно. Отказ от RIP приводит к ускорению сходимости на порядки.

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

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

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

Border Gateway Protocol (BGP). Администратор сети обычно не свободен в выборе пограничного протокола - сервис-провайдер указывает ему, какую версию BGP использовать. Пограничные протоколы обычно нужны только в тех случаях, когда сеть организации связана с одной и той же внешней сетью (например, Internet) несколькими каналами или когда она работает как промежуточное звено между двумя или более сетями, причем необходимо обеспечить резервные каналы связи (типичная ситуация для сервис-провайдера Internet).

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


Авторы: Брукс Тэлли, руководитель тестовой лаборатории Computerworld, и Марк Пейс, вице-президент по технологиям компании Action Systems. С Пейсом можно связаться через Internet по адресу pace@actioninc.com. По всем вопросам, связанным с данной статьей, следует обращаться к Бруксу Тэлли по адресу brooks_talley@infoworld.com.

Своя рубашка ближе к телу

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

Мы задали несколько вопросов, связанных с использованием протоколов маршрутизации в российских сетях, представителям компаний, так или иначе связанных с этой технологией: крупных провайдеров Internet, системных интеграторов, производителей оборудования. На наш призыв откликнулись не все. И тем не менее нам кажется, что из полученных ответов можно составить примерное представление о том, как российские компании смотрят на современные технологии маршрутизации.

Все наши собеседники были единодушны в том, что у протокола RIP имеются серьезные недостатки, но он распространен весьма широко, в особенности в тех компаниях, которые раньше других начали строительство корпоративной сети. В новых сетях, по мнению Олега Табаровского, технического директора AMT Group, протокол RIP практически не используется; редко применяется он и при организации обмена данными между провайдерами Internet и субпровайдерами и/или клиентами. Попытки дать количественные оценки размера сети, с которого начинают серьезным образом проявляться недостатки RIP, наталкиваются на определенные трудности - "при одинаковом количестве маршрутизаторов на характер недостатков RIP влияет диаметр конкретной сети, топология, скорость каналов и другие аспекты". В целом, как считает Табаровский, использование RIP крайне нежелательно в сетях диаметром больше пяти.

По мнению Алексея Руднева, старшего системного администратора компании "Релком", не следует впадать в заблуждение, будто чем проще устроен протокол, тем легче с ним работать: "Сеть из 40 роутеров на протоколе OSPF делается одним движением пера, точнее клавиатуры - создается 40 очень простых "конфигов", в которых говорится что-то типа "протокол роутинга - OSPF - везде", роутеры втыкаются в каналы, сами определяют друг друга, и все работает. Сеть из 40 роутеров на протоколе RIP делается только после серьезных размышлений относительно путей пакетов". Правда, никто особенно и не спорит, что установить OSPF в создаваемой вновь сети не очень сложно. Трудности вызывает переход с уже установленного RIP на OSPF.

По мнению большинства опрошенных нами специалистов, переход с одного протокола на другой достаточно болезнен, особенно когда речь идет о переходе с протокола на основе векторов расстояний (каким является RIP) на протокол типа LSP (link-state protocol), и в этом смысле на переход с RIP на IGRP/EIGRP решиться значительно легче. Обычно организации идут на замену протокола либо под давлением внешних обстоятельств, либо из-за желания повысить отказоустойчивость сети и обеспечить пользователям новые услуги. Андрей Зюзин, менеджер по работе с телекоммуникационными компаниями московского представительства Cisco Systems, отмечает, что склонность учреждений переходить на новые протоколы в значительной мере определяется уровнем квалификации инженеров - чем он выше, тем больше стремление работать на современном уровне. С другой стороны, чем квалифицированнее персонал, тем легче переход.

В настоящее время, судя по полученным нами ответам, вырисовывается следующая картина. Крупные провайдеры, имеющие прямые каналы связи с западными сетями, используют BGP4 на границе и OSPF или IS-IS внутри опорной сети. Для связи с другими автономными системами применяется EBGP. Как указывает Руднев, если в сети стоят серверы Dial-UP и/или нет необходимости работать с клиентами по BGP, то вся маршрутизация в опорной сети может быть выполнена на OSPF. По словам Сергея Турчина, менеджера проектов AMT Group, при подключении клиентов провайдеры Internet используют в основном статическую маршрутизацию, иногда RIP, редко - OSPF или EIGRP/IGRP. Подсоединение вторичных провайдеров (не имеющих собственных каналов связи с международными сетями) иногда происходит с помощью EBGP.

Для внутренней маршрутизации в крупных корпоративных сетях применяется либо OSPF, либо EIGRP/IGRP. Относительно того, как соотносятся между собой отдельные структурные единицы организаций, использующих каждый из перечисленных протоколов, единого мнения получить не удалось. Тем не менее большинство наших респондентов склонны считать, что администраторы гомогенных сетей, построенных исключительно на Cisco, предпочитают EIGRP, в сетях же, где есть оборудование от других производителей, применяется, как правило, OSPF. Впрочем, иногда используется и RIP, и другие протоколы, особенно там, где протокол сетевого уровня - не IP, а, скажем, IPX или NetBIOS. Впрочем, в IPX-сетях, по мнению Турчина, иногда приходится прибегать даже к статической маршрутизации.

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

Интересовал нас также вопрос о возможных сроках внедрения IPv6. Большинство респондентов называют срок в три-пять лет, уточняя, что это в значительной степени зависит от появления приложений, рассчитанных на работу с данным протоколом. Зюзин считает, что на магистральных сетях новый протокол может появиться еще до 2000 года. Он подчеркивает, что переход на новый протокол вряд ли окажется сложным для администраторов сетей, но потребует от них знания функциональных возможностей IPv6. В переходе на новый протокол, по мнению Зюзина, могут быть заинтересованы очень крупные организации (такие, например, как РАО "Газпром"), которые уже сейчас могут столкнуться с проблемой исчерпания IP-адресов при построении своих интрасетей. Что касается дополнительных услуг, которые будут оказывать провайдеры после перехода на IPv6, то это может заработать в полную силу только после того, как конкуренция на рынке заставит провайдеров дифференцировать свои услуги.

- Александр Крейнес,
"Сети"


Маршрутизация 101

Магия Internet и сетей IP зиждется на маршрутизации. Ее часто воспринимают как нечто само собой разумеющееся - или недопонимают.

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

Чтобы выяснить, принадлежит ли адрес назначения к локальной сети, сетевая станция выполняет операцию "исключающее ИЛИ" (XOR) по отношению к своему IP-адресу и адресу назначения, получая таким образом информацию о том, какие биты в этих адресах отличаются друг от друга. Результат умножается (операция "И", или AND) на маску подсети. Если получается ноль, то станция назначения принадлежит локальной подсети. В этом случае вступает в действие протокол разрешения адреса (Address Resolution Protocol, ARP), служащий мостиком между вторым и третьим уровнями в IP-сети. ARP отображает IP-адрес в MAC-адрес устройства, принадлежащего локальной сети, и записывает эту пару адресов в таблицу. После этого пакет отправляется через локальную сеть по назначению.

Если точка назначения находится за пределами локальной сети, то станция-источник вначале проверяет свою собственную таблицу маршрутизации, чтобы узнать, не описан ли в ней заранее установленный маршрут в сеть назначения. Таблица маршрутизации - это просто список адресов с указанием того, каким образом до этих адресов можно добраться. Например, если в таблице маршрутизации имеется запись, указывающая что сетевой адрес 10.1.1.0 с маской подсети 255.255.255.0 соответствует шлюзу 10.1.2.1, это попросту означает, что все пакеты, чьи адреса назначения начинаются с 10.1.1, должны пересылаться через этот шлюз.

Если в таблице маршрутизации нет записи о пути пересылки к пункту назначения, то станция отправляет пакет к своему шлюзу по умолчанию, после чего все начинается сначала. В конце концов пакет попадает по назначению.

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

Термин "класс C" обозначает сеть с маской подсети 255.255.255.0. По современной терминологии сеть с адресами класса C можно обозначить как /24, что означает, что под адрес сети используются 24 бит, а остальные 8 бит задают конкретный хост. Раньше, если сеть имела адрес от 1 до 127, то это автоматически означало наличие адреса класса A, и соответственно в такой сети могло насчитываться до 16 млн. хостов. После отказа от использования классов адреса, прежде принадлежавшие к классу A, могут попасть, например, в категории /24 или /30. В результате большое число адресов освобождается, а сама система адресации становится гораздо более логичной.

Еще одна новая черта IP-маршрутизации - маски подсети переменной длины (Variable Length Subnet Mask, VLSM) - позволяет делить адресное пространство на неравные части. Например, одну область /24 можно поделить на одну /25 и четыре /27, в результате чего получится одна сеть со 128 адресами и четыре сети по 32 адреса в каждой.

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


Строение протоколов маршрутизации

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

Проще всего устроены протоколы векторов расстояний: в каждом маршрутизаторе имеется база данных доступных ему маршрутов и каждому маршруту сопоставлена метрика, на основании которой маршрутизатор и определяет наилучший путь; по существу, метрика представляет собой меру расстояния от одного маршрутизатора до другого. В протоколе RIP метрика - это не что иное, как число маршрутизаторов, через которые должен пройти пакет на пути к месту назначения. В других протоколах векторов расстояний (например, IGRP и EIGRP) используются более сложные метрики.

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

Чтобы решить эту проблему, в протоколы векторов расстояний было введено понятие "расщепления горизонта" (split horizon). Идея состоит в том, что хост не должен передавать информацию о маршруте от него до известной точки сети всем маршрутизаторам, расположенным между ним и этой точкой. Дальнейшему ускорению сходимости способствовало применение "вынужденных модификаций" (triggered update) - информация об изменении топологии сети передается немедленно, а не по заранее составленному расписанию.

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

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

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

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

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

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

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

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

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

- Марк Пейс


IPv6: что день грядущий нам готовит?

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

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

Широко известно, что в текущей версии IP (IPv4) остро стоит проблема исчерпания адресного пространства. Впрочем, как оказалось, все не так плохо: ввод в действие протокола CIDR (Classless Inter-Domain Routing) позволил надеяться, что адресов хватит на все начало следующего века. Тем не менее лучше будет подготовиться к возможным неприятностям заранее. В IPv4 используются 32-разрядные адреса, что обеспечивает общий объем адресного пространства в 4 294 967 296 адресов (на самом деле их несколько меньше - из-за резервирования части адресов под адреса сетей и широковещательную рассылку). В IPv6 длина адреса составит 128 разрядов, что дает 340 282 366 920 938 463 463 374 607 431 768 211 456 адресов. На первое время должно хватить.

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

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

В IPv6 имеется механизм предупреждения "дезинформации" (spoofing); это одна из наиболее серьезных проблем защиты данных в IPv4. Имеется в виду отправка по сети пакета, в котором информация об источнике сообщения не соответствует действительности. В текущей версии IPv6 для предупреждения таких действий применяется алгоритм MD5, однако предусматривается также возможность использования других подходов, если MD5 устареет.

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

Еще одна многообещающая функция IPv6 - рассылка по методу "кому-нибудь" (anycast). В IPv4 пакеты могут либо пересылаться какой-то одной станции (unicast), либо рассылаться всем станциям (broadcast). В IPv6 также есть возможность отсылать пакеты одной, и только одной станции из заданного списка. Маршрутизаторы сами доставят пакеты ближайшей станции из списка. Такую функцию удобно встраивать в клиентские программы, которые могут быть установлены в любой части света; в такой программе можно задавать просто список серверов, тогда маршрутизаторы будут сами выбирать тот сервер, который лучше всего использовать.

Какое воздействие IPv6 окажет на протоколы маршрутизации, еще не вполне ясно. Cisco уже разработала версии RIP и BGP4 для IPv6; обе они проходят экспериментальное использование на 6bone. (См. http://www-6bone.lbl.gov/6bone.) Далее предстоит интегрировать протокол IS-IS, поскольку именно он используется во многих опорных сетях Internet. Кроме того, IS-IS рассчитан на 160-разрядное адресное поле протокола Connectionless Network, разработанного OSI. В остальном же остается надеяться, что IPv6 справится со своей задачей и обеспечит более быструю маршрутизацию сообщений.

Интересным обещает быть и сам процесс перехода на IPv6. На обеспечение безболезненного перехода тратится много сил; в частности, разработана схема адресации для IPv4, совместимая с IPv6 (обычный IP-адрес плюс 12 равных нулю байт).

- Брукс Тэлли

Поделитесь материалом с коллегами и друзьями