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

Избыточная маршрутизация обеспечивается разработанными IETF (Internet Engineering Task Force, группа технического развития Internet) протоколами FIRP (Fault Isolation and Recovery Protocol, протокол обнаружения неисправностей и восстановления), IRDP (Internet Router Discovery Protocol, протокол обнаружения маршрутизаторов Internet), VRRP (Virtual Router Redundancy Protocol, протокол избыточных виртуальных маршрутизаторов) и BGP (Border Gateway Protocol, протокол пограничного межсетевого шлюза). Протоколы FIRP, IRDP и VRRP позволяют строить схемы с избыточными локальными, а BGP – с избыточными межсетевыми маршрутизаторами.

Поддержка протоколов FIRP и IRDP реализована в Windows 2000 и Windows NT 4.0, протоколы IRDP, VRRP, и BGP -- во многих маршрутизаторах и продуктах межсетевого объединения. Для обеспечения избыточной маршрутизации в инфраструктуре электронной коммерции необходимо иметь общее представление о принципах работы этих протоколов и построения добавочных схем маршрутизации.

Множественные шлюзы

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

Реализация протоколов TCP/IP в Windows 2000 и NT 4.0 поддерживает работу с несколькими шлюзами по умолчанию. Следует заметить, что до выхода Service Pack 4 система Windows NT 4.0 неверно выполняла переключение на новый шлюз, корректная поддержка множественных шлюзов появилась в NT лишь после выпуска SP4. Более подробно о поддержке множественных шлюзов по умолчанию можно прочитать в документе "TCP/IP Dead Gateway Detection Algorithm Updated for Windows NT" по адресу http://support.microsoft.com/support/kb/articles/q171/5/64.asp. При статическом задании адресов IP множественные шлюзы назначаются в сетевых настройках TCP/IP, заданием шлюза по умолчанию. При динамическом выделении адресов множественные адреса IP-маршрутизаторов назначаются в настройке шлюза по умолчанию для диапазонов подсетей DHCP. Адреса маршрутизаторов в списке указываются в порядке предпочтения. После запуска системы сначала используется первый адрес из списка. Если он недоступен, то после нескольких повторных попыток система переходит к следующему и так далее. Число повторных попыток обращения к первому маршрутизатору соответствует половине значения параметра реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Adaptername\Parameters \Tcpip\TcpMaxDataRetransmissions. Если число неудач при обращении к первому шлюзу превышает 25%, система переключается на второй шлюз и продолжает работать с ним до его отказа или перезагрузки ОС.

Множественные шлюзы позволяют равномерно распределить нагрузку на маршрутизаторы. Так, если в подсети имеются два маршрутизатора Router 1 и Router 2, то для половины компьютеров в подсети можно указать первым Router 1, а для другой половины – Router 2. Такой способ не подходит для динамического присвоения адресов, т.к. в одной подсети не может задаваться несколько диапазонов одновременно. В Windows 2000 настройка сервера DHCP допускает указание дополнительных параметров, что позволяет определить несколько областей видимости в одной подсети.

Множественные шлюзы по умолчанию обеспечивают работу коммуникаций на основе TCP, но для UDP не подходят. Сеанс UDP (например, процесс Netlogon) не может определить неработающий шлюз. Более подробно об этом говорится в документе "Dead Gateway Detection Is Not Triggered During Logon" на сайте Microsoft http://support.microsoft.com/support/kb/articles/q183/9/02.asp. Однако для регистрации в домене NT необходимо, чтобы контроллер домена находился в той же подсети. В этом случае на помощь приходит протокол IRDP.

Обнаружение маршрутизаторов

В случае настройки нескольких шлюзов по умолчанию необходимо использовать на обслуживаемых компьютерах согласованные установки для шлюзов по умолчанию или диапазонов DHCP. Можно придерживаться другого подхода, с применением протокола IRDP, который позволяет маршрутизатору сообщать о том, что он доступен. Компьютер может динамически обнаружить наиболее подходящий шлюз из доступных в подсети и автоматически переключиться на него при отказе текущего. Описание протокола IRDP можно найти в RFC 1256.

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

Если маршрутизатор поддерживает IRDP, то активизировать эту функцию легко. Так, для маршрутизаторов Cisco Systems для включения IRDP, установки уровня предпочтения и других анонсируемых параметров следует выполнить команду

ip irdp

Windows 2000 и NT 4.0 SP 5 содержат поддержку IRDP на уровне хоста, однако, чтобы включить использование протокола IRDP, требуется внести изменения в раздел HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\Adaptername\Parameters\Tcpip системного реестра. Необходимо добавить два параметра типа REG_DWORD -- PerformRouterDiscovery (выполнять обнаружение маршрутизатора) и SolicitationAddressBcast (способ рассылки запроса об услугах). Параметр PerformRouterDiscovery следует установить равным 1, а SolicitationAddressBcast -- в зависимости от варианта рассылки: для многоадресной 0, для широковещательной 1.

Виртуальные маршрутизаторы

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

Как следует из названия протокола VRRP, избыточность достигается путем организации виртуального маршрутизатора. Такой маршрутизатор имеет виртуальный идентификатор VRID (virtual router ID) и виртуальный адрес VRIP (virtual routerIP). Физически виртуальный маршрутизатор состоит из двух или более маршрутизаторов: главного или активного (master) и нескольких резервных (backup). Главный маршрутизатор обеспечивает основные функции маршрутизации для указанного адреса VRIP. Резервные маршрутизаторы отслеживают состояние главного маршрутизатора и начинают работать в случае его отказа. Главный маршрутизатор периодически рассылает резервным уведомления о том, что он доступен. Интервал рассылки уведомлений задается администратором при настройке системы. Если резервные маршрутизаторы не получают уведомление три раза подряд, для них это означает, что главный маршрутизатор стал недоступен. Например, если задан интервал уведомления равный 3 секундам, то резервные маршрутизаторы включатся в работу через 9 секунд после отказа главного.

При наличии нескольких резервных маршрутизаторов порядок их включения определяется заданными приоритетами. При восстановлении работоспособности главного маршрутизатора трафик вновь переключается на него, а резервные устройства переходят в режим мониторинга. Уровень приоритета изменяется от 0 до 255, большим значениям соответствует более высокий приоритет. По умолчанию приоритет VRRP установлен равным 100. Если в качестве VRIP используется адрес интерфейса главного маршрутизатора, его приоритет должен быть установлен равным 255. Приоритет главного маршрутизатора, равный 0, сообщает резервным, что главный не работает.

На рисунке 1 изображена конфигурация VRRP с адресом VRIP 192.1.1.1, состоящего из двух физических маршрутизаторов. Маршрутизатор Router 1 является основным для VRID 1 (имеет приоритет 110), маршрутизатор Router 2 является резервным (приоритет 100). Виртуальный маршрутизатор использует уникальный MAC-адрес, образованный добавлением VRID к MAC-адресу одного из маршрутизаторов. Так, изображенный на рисунке 1 виртуальный маршрутизатор имеет MAC-адрес 00005E000101, образованный путем добавления к адресу одного из маршрутизаторов 00005E0001 номера VRID 01. Компьютеры в подсети на рисунке 1 используют в качестве шлюза по умолчанию адрес VRIP 192.1.1.1 . Когда компьютер посылает шлюзу информацию, сопутствующее сообщение ARP (Address Resolution Protocol, протокол разрешения адреса) запрашивает MAC-адрес шлюза. Активный маршрутизатор виртуального маршрутизатора посылает в ответ виртуальный адрес MAC вместо физического. Таким образом, компьютер подключается к доступному маршрутизатору без использования адреса физического маршрутизатора.

Изображенная на рисунке 1 конфигурация VRRP обеспечивает защиту от сбоев, но тратит понапрасну ресурсы резервного маршрутизатора, поскольку он простаивает. Можно построить конфигурацию VRRP, в которой активно работают оба маршрутизатора. Маршрутизатор VRRP может обслуживать несколько адресов VRID и VRIP по одному интерфейсу. Например, на рисунке 2 маршрутизатор Router 2 является основным для VRID 02 и адреса VRIP 192.1.1.2, а маршрутизатор Router 1 является резервным в виртуальном маршрутизаторе VRID 02. Теперь половину компьютеров в подсети можно настроить на использование VRIP 192.1.1.1 адреса как шлюза по умолчанию, а вторую половину – на использование VRIP 192.1.1.2. Эта конфигурация обеспечивает балансировку нагрузки и отказоустойчивость.

Ведущие поставщики оборудования реализуют такие схемы VRRP в своих маршрутизаторах и коммутаторах. Cisco поддерживает собственный протокол Hot Standby Router Protocol (HSRP), подобный VRRP. Alteon и Arrowpoint используют VRRP для обеспечения избыточности при балансировки нагрузки серверов. Используемые для описания конфигураций термины активный-резервный и активный-активный соответствуют конфигурациям, изображенным на рисунках 1 и 2 соответственно. О системах балансировки нагрузки Web-серверов было рассказано в статье "Системы балансировки Web-cерверов", опубликованной в 3(6) номере Windows 2000 Magazine/RE.

BGP

Зачастую протоколы маршрутизации используются для обмена информацией о маршрутах и динамического обновления таблиц маршрутизации при изменениях топологии сети (например, при отказе канала или маршрутизатора). Сеть, принадлежащая одному административному домену, например intranet, называется автономной системой (AS, autonomous system). Применяемый в AS протокол маршрутизации называется внутренним протоколом маршрутизации. Широко применяются такие протоколы как Routing Information Protocol (RIP) и Open Shortest Path First (OSPF). Различные AS обычно используют также внешний протокол (называемый иначе междоменным протоколом маршрутизации) для обмена информацией о маршрутах. В Internet в качестве внешнего протокола маршрутизации принят BGP, описание которого можно найти в RFC 1771. Для работы в Internet с протоколом BGP каждая автономная система должна иметь уникальный идентификатор (распределяется InterNIC)

BGP обычно используется в маршрутизаторах на границе AS (например, маршрутизаторы между провайдером и клиентом или между провайдерами). Маршрутизаторы BGP, которые непосредственно обмениваются информацией о маршрутах BGP, считаются соседними. Например, на рисунке 3 маршрутизатор Router 1 в AS1 и Router 4 в AS4-соседние. Также соседними являются Router 2 и Router 3; Router 2 и Router 5; Router 3 и Router 6; Router 4, Router 5 и Router 6. Кроме того, соседними считаются также AS2 и AS3, которые используются для соединения BGP.

После того, как два пограничных маршрутизатора установили соединение TCP, они начинают использовать BGP-сообщения об обновлении для обмена и распространения информации о маршрутизации. Маршрутизаторы BGP посылают информацию о маршрутизации BGP в автономные системы, доступные им и соседним маршрутизаторам. Эта информация содержит сведения об Internet-маршрутах, которые маршрутизаторы получили от внешних маршрутизаторов, и Intranet маршрутах, полученных из протоколов внутренней маршрутизации или из параметров статической маршрутизации. BGP использует собирательный обобщенный адрес IP CIDR (Classless Inter-Domain Routing, адрес IP бесклассовой междоменной маршрутизации), называемый также префиксом, например 192.1.0.0./16 для обозначения маршрута в автономную систему. Кроме того, маршрутизатор BGP связывает с каждым маршрутом атрибут AS-PATH. Этот атрибут отмечает маршрут от автономной системы оповещающего маршрутизатора к автономной системе с адресом CIDR. Например, автономная система AS3 на рисунке 3 имеет адрес 192.100.0.0/16. Система AS1, соседняя по отношению к AS3, передает сообщение, что один из возможных маршрутов к 192.100.0.0/16 имеет атрибут AS-PATH равный 1 3. AS4, соседняя по отношению к AS1, получив эти сведения, сможет выбрать кратчайший путь из AS4 в AS1.

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

Если BGP используется между автономными системами, это называется внешним BGP (EBGP, external BGP). Если же он задействован между маршрутизаторами внутри одной автономной системы, это называется внутренним BGP (IBGP, internal BGP). Применение BGP в рамках AS предпочтительно по сравнению с обычными внутренними протоколами (OSPF), так как BGP имеет усовершенствованный механизм маршрутизации. BGP позволяет прозрачно ретранслировать изученные маршруты BGP и ассоциированные атрибуты AS-PATH между маршрутизаторами IBGP. Многие провайдеры и компании, имеющие различные внешние каналы, используют IBGP для пограничных маршрутизаторов. Для маршрутизаторов IBGP необязательно иметь непосредственное физическое соединение, достаточно чтобы существовал маршрут через внутренний протокол маршрутизации или статически заданный маршрут. Так, на рисунке 3 протокол IBGP логически связывает маршрутизаторы Router 4, Router 5 и Router 6 в AS4. Таким образом, расположенный в Лос-Анджелесе Router 4 может объявлять маршруты, полученные от Router 1 из AS1 маршрутизатору Router 5 в Чикаго и Router 6 в Нью-Йорке.

Многодомность

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

При подключении через одного провайдера опять же есть два варианта: подключение единственного маршрутизатора к двум и более маршрутизаторам провайдера в разных POP (Point of Presence, точка присутствия), как показано на рисунке 4 . Другой вариант изображен на рисунке 5 -- подключение двух и более маршрутизаторов к различным POP. Хотя первый вариант и обеспечивает избыточность подключения, единственный маршрутизатор является потенциальным слабым звеном. Второй вариант обеспечивает избыточность как каналов, так и оборудования. Если маршрутизаторы обеспечивают подключение разных узлов, то отказ одного маршрутизатора не остановит работу других узлов. При правильно организованном глобальном равномерном распределении нагрузки Web-серверов, пользователи смогут работать с другими сайтами даже в случае отказа маршрутизатора или линии связи.

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

Отказоустойчивая многодомная конфигурация

Можно установить отказоустойчивую многодомную конфигурацию так, что одно соединение будет главным, а остальные резервными. При отказе главного, трафик перейдет на резервные соединения. Например, на рисунке 4 соединение от маршрутизатора Router 3 компании А к маршрутизатору Router 1 провайдера ISP1 в Лос-Анджелесе является главным, а соединение маршрутизатора Router 3 с маршрутизатором Router 2 провайдера ISP1 в Нью-Йорке -- резервным. Для распределения ролей главного и резервного маршрутизаторов администратор маршрутизатора Router 3 может настроить два статических маршрута по умолчанию -- короткий к Router 1 и длинный к Router 2. В этом случае маршрутизатор Router 3 будет выбирать для исходящего трафика более короткий маршрут.

При другом варианте настройки маршрутизатор Router 3 принимает объявленные маршруты по умолчанию от Router 1 и Router 2 и присваивает значение атрибуту локальной преференции BGP (LOCAL-PREF) каждого маршрута для определения предпочтительного маршрутизатора. Большее значение параметра соответствует более предпочтительному маршруту. Например, администратор Router 3 может установить значение атрибута LOCAL-PREF для Router 1 равным 200, а для Router 2 равным 100, так что Лос-Анджелес станет предпочтительным маршрутом для исходящего трафика.

Для назначения Лос-Анджелеса в качестве предпочтительного соединения для входящего трафика, администратору Router 3 может применить атрибут BGP MED (multiple-exit-discrimination) к объявленному маршруту (192.1.0.0/16). Атрибут MED предписывает соседним автономным системам использовать связь с наименьшим значением MED в качестве выхода в сеть, если AS имеет несколько выходов. Например, если маршрутизатор Router 3 сообщил маршрутизатору Router 1 маршрут 192.1.0.0/16 со значением MED равным 100, а маршрутизатору Router 2 его же со значением MED 200, провайдер ISP1 будет использовать соединение через Лос-Анджелес в качестве главного, а соединение через Нью-Йорк в качестве резервного для входящего трафика маршрутизатора Router 3. При этом провайдер ISP1 по своему усмотрению может использовать значение LOCAL-PREF, которое будет иметь приоритет по отношению к атрибуту MED, сообщенному маршрутизатором Router 3 (протокол BGP для определения маршрута в первую очередь использует атрибут LOCAL-PREF). Во избежание таких накладок следует договориться с провайдером о согласованном использовании необходимых значений MED.

Многодомная конфигурация с распределением загрузки

Равномерное распределение загрузки в многодомной конфигурации можно обеспечить путем специальной настройки маршрутизаторов на объявление и прием информации об определенных маршрутах. На рисунке 5 для компании А существует два маршрута. Маршрут 192.1.0.0/16 является кратчайшим между провайдером ISP1 и маршрутизатором Router 3, а 130.1.0.0/16 -- кратчайший между ISP1 и Router 4. Исходя из этого, администратор может настроить Router 3 для предпочтительного обслуживания Лос-Анджелеса, для этого маршруту присваивается меньшее значение MED, который Router 3 сообщает Router 1 в Лос-Анджелесе и большее значение MED маршруту, сообщаемому Router 3 маршрутизатору Router 2 в Нью-Йорке. Администратор также может задать меньшее значение MED для маршрута, объявляемого маршрутизатором Router 4 маршрутизатору Router 2 в Нью-Йорке и большее для маршрута, объявляемого маршрутизатором Router 4 маршрутизатору Router 1 в Лос-Анджелесе. В результате такой настройки соединение с Лос-Анджелесом будет главным для 192.1.0.0/16 и резервным для 130.1.0.0/16, и наоборот, соединение с Нью-Йорком -- главным для 130.1.0.0/16 и резервным для 192.1.0.0/16.

Если маршрутизатор Internet принимает определенные маршруты, сообщаемые провайдером, можно обеспечить распределение загрузки для исходящего трафика. Так, на рисунке 5 , компания А имеет одного партнера с коротким маршрутом (193.1.0.0/16) к точке POP провайдера ISP1 в Лос-Анджелесе, второго партнера с коротким маршрутом 11.0.0.0/8 через ISP1 в Нью-Йорке. Это позволяет администратору компании А связать большее значение LOCAL-PREF, принимаемое маршрутизатором Router 3, с маршрутом 193.1.0.0/16 и меньшее -- с 11.0.0.0/8 (соединение с Лос-Анджелесом будет главным для 193.1.0.0/16 и резервным для 11.0.0.0/8). Чтобы назначить соединение с Нью-Йорком главным для 11.0.0.0/8 и резервным для 193.1.0.0/16 следует указать обратные значения для двух маршрутов, принимаемых маршрутизатором Router 4. Кроме того, администратор компании А может определить соединение с Лос-Анджелесом как главное для маршрута по умолчанию (т.е. для всех остальных маршрутов в Internet), а с Нью-Йорком – как резервное.

Для распределения нагрузки и обеспечения отказоустойчивости в многодомной конфигурации, имеющей резервные подключения к различным провайдерам (см. рис.6) используются те же методы, что и при многодомной конфигурации с единственным провайдером. Следует, однако, помнить, что атрибут MED используется только в тех случаях, когда AS имеет множественные связи с другой AS (т.к. действие MED не является транзитивным). Поэтому если к каждому провайдеру имеется только по одному соединению, атрибут MED задействовать нельзя (такая конфигурация показана на рисунке 6 для компании А). Вместо этого администратор для объявления маршрута может воспользоваться атрибутом AS-PATH. Например, чтобы установить AS1 как резервное соединение для 130.1.0.0/16, администратор может создать фиктивное значение AS-PATH, увеличив нормальное значение атрибута (4) на 4. Когда Router 3 объявляет 130.1.0.0/16 со значением атрибута AS-PATH равным 4 для AS1, система AS1 будет объявлять для AS3 маршрут с атрибутом 1 4 4. Маршрутизатор Router 4 рекламирует 130.1.0.0/16 для AS2 с нормальным значением 4, а AS2 рекламирует для AS3 этот адрес со значением AS-PATH 2 4. Таким образом, AS3 будет выбирать для трафика 130.1.0.0/16 маршрут через AS2 как наиболее короткий.

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

Пристегните ремни

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

Тао Чжоу - внештатный редактор журнала Windows NT Magazine и сервисный инженер, работающий в сфере Internet. Имеет сертификаты MCSE и Master CNE, а также степень магистра компьютерных наук. С ним можно связаться по электронной почте по адресу taoz@ix.netcom.com.