У каждой АС есть магистральная область (backbone area), область 0. Маршрутизаторы, расположенные в ней, называются магистральными маршрутизаторами (backbone routers). Все области соединены с магистралью, например, туннелями, так что по магистрали можно попасть из одной области АС в любую другую. Туннель представляется на графе в виде ребра и обладает стоимостью. Как и в случае других областей, топология магистрали за ее пределами не видна.

Маршрутизатор, подключенный одновременно к двум или нескольким областям, называется пограничным маршрутизатором области (area border router). Он также должен быть частью магистрали. Его задача — собирать сведения об адресах одной области и передавать их другим областям. Эти сведения включают стоимость передачи, но не содержат полной информации о топологии области. Зная стоимость, хосты других областей могут выбрать пограничный маршрутизатор, через который они войдут в эту область. Отсутствие информации о топологии уменьшает трафик и упрощает вычисление кратчайших путей для маршрутизаторов вне данной области. Но если вне области есть только один пограничный маршрутизатор, эти сведения передавать бессмысленно. Все пути за ее пределы начинаются с указания «Идите на пограничный маршрутизатор». Такая область называется тупиковой областью (stub area).

Последний тип маршрутизаторов — пограничные маршрутизаторы автономной системы (AS boundary routers). Они прокладывают пути на внешние адреса в других АС области. Внешние маршруты становятся адресатами, до которых можно добраться через пограничный маршрутизатор АС с определенными затратами. Внешний путь может проходить один или несколько таких маршрутизаторов. Связь между АС, областями и разными типами маршрутизаторов показана на илл. 5.66. Один маршрутизатор может играть несколько ролей — например, быть и пограничным, и магистральным.

Илл. 5.66. Взаимосвязь между АС, магистралями и областями в OSPF

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

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

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

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

Работая в штатном режиме, каждый маршрутизатор периодически рассылает методом лавинной адресации сообщение LINK STATE UPDATE (Обновление состояния каналов) смежным маршрутизаторам. Сообщение предоставляет сведения о состоянии маршрутизатора и о затратах на топологическую базу данных. В ответ приходят подтверждения LINK STATE ACK, что повышает надежность. Каждое сообщение имеет последовательный номер, чтобы маршрутизатор мог определить, какое из них новее: только что полученное или уже имеющееся. Маршрутизаторы также рассылают эти сообщения, когда включается или выключается канал или изменяется его стоимость.

Сообщение DATABASE DESCRIPTION (Описание базы данных) содержит порядковые номера всех имеющихся у отправителя записей о состоянии линий. Сравнив свои значения с данными источника, получатель определяет, чья информация актуальнее. Эти сообщения передаются при восстановлении линии.

Каждый маршрутизатор может запросить информацию о состоянии линий у своего партнера с помощью сообщения LINK STATE REQUEST (Запрос о состоянии канала). Таким образом каждая пара смежных маршрутизаторов выясняет, чьи сведения более свежие, и по области распространяется самая новая информация. Все сообщения отсылаются в виде IP-пакетов. Пять типов сообщений приведены на илл. 5.67.

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

Тип сообщения

Описание

Hello

Используется для знакомства с соседями

Link state update

Сообщает соседям информацию о каналах отправителя

Link state ack

Подтверждает обновление состояния каналов

Database description

Сообщает о том, насколько свежей информацией располагает отправитель

Link state request

Запрашивает информацию у партнера

Илл. 5.67. Пять типов сообщений протокола OSPF

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


5.7.7. Протокол внешнего шлюза BGP

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

Междоменный протокол, напротив, вынужден ее учитывать (Мец; Metz, 2001). Допустим, корпоративная АС хочет принимать и отправлять пакеты на любой интернет-сайт. Но скорее всего, она откажется от роли транзитной сети для пакета, источник и адресат которого находятся за пределами данного государства (даже если через нее проходит кратчайший путь — «Это их проблемы!»). С другой стороны, АС совсем не против передавать трафик других систем (возможно, соседних), которые оплачивают эту услугу. Например, телефонные компании были бы рады предоставлять такой сервис, но только своим клиентам. Протоколы внешнего шлюза вообще и BGP в частности разрабатывались, чтобы обеспечить реализацию разных стратегий выбора маршрута между АС.

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


1. Не передавать коммерческий трафик в образовательные сети.

2. Никогда не передавать трафик Пентагона по маршруту, идущему через Ирак.

3. Использовать TeliaSonera вместо Verizon, потому что это обойдется дешевле.

4. Не пользоваться услугами AT&T в Австралии, так как производительность будет низкой.

5. Трафик компании Apple (или для нее) не должен проходить через Google.

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

Реализация этой политики сводится к принятию решений о том, какой трафик будет передаваться между АС и какие каналы будут использоваться. Один из распространенных вариантов выглядит так: провайдер-клиент платит другому провайдеру за обмен пакетами с любыми получателями в интернете, то есть покупает транзитные услуги (transit service). Эта ситуация аналогична тому, как обычный пользователь домашней сети покупает у провайдера доступ в интернет. Чтобы это сработало, провайдер сообщает абоненту маршруты ко всем интернет-адресам по каналу между ними. Тогда пользователь будет знать путь, по которому можно отправить пакет куда угодно. И наоборот, абонент информирует провайдера о путях ко всем адресам в пределах своей сети. Это позволит провайдеру передавать пакеты только на эти адреса — клиенту не нужен трафик, предназначенный для кого-то еще.

Предоставление транзитных услуг показано на илл. 5.68. Перед нами четыре АС (AS1, AS2, AS3, AS4), соединенные между собой. Соединение часто осуществляется через точку обмена интернет-трафиком (Internet eXchange Point, IXP). Это инфраструктура, к которой подключаются многие интернет-провайдеры, чтобы получить доступ к другим провайдерам. AS2, AS3 и AS4 — клиенты AS1. Они покупают у AS1 транзитные услуги. Таким образом, пакет, отправленный источником A на C, передается из AS2 в AS1, а затем в AS4. Объявления о маршрутах перемещаются в противоположном направлении. Чтобы источник мог передать пакет C через AS1, AS4 объявляет C в качестве адреса назначения своему провайдеру (AS1). Затем AS1 объявляет путь до C остальным своим клиентам, включая AS2, чтобы они могли отправлять трафик на C через AS1.

Илл. 5.68. Политика маршрутизации между четырьмя АС

На илл. 5.68 все остальные АС покупают транзитные услуги у AS1. Благодаря этому они могут связаться с любым интернет-хостом. Но за эту возможность им приходится платить. Пусть AS2 и AS3 обмениваются большим объемом трафика. Если эти сети соединены, они могут выбрать другую политику — передавать трафик напрямую и бесплатно. Это уменьшит количество трафика, пересылаемого AS1 от их имени, и сократит их расходы. Такая политика называется пирингом без взаиморасчетов (settlement-free peering) или подключением без взаиморасчетов (settlement-free interconnection).

Для реализации пиринга без взаиморасчетов две АС передают друг другу объявления о маршрутах для своих адресов. Это позволяет AS2 отправлять пакеты AS3 из A в B и наоборот. Но следует заметить, что пиринг без взаиморасчетов не транзитивен. На илл. 5.68 сети AS3 и AS4 тоже используют политику пиринга, поэтому трафик от C к B может передаваться напрямую в AS4. Но что, если пакет нужно отправить от C к A? AS3 объявляет AS4 маршрут до B, но не объявляет маршрута до A. Поэтому трафик не сможет пройти из AS4 в AS3, а затем в AS2, хотя физический путь существует. Но именно это и выгодно AS3. Она хочет обмениваться трафиком с AS4, но не хочет, чтобы AS4 передавала через нее трафик для остального интернета. Вместо этого AS4 придется пользоваться транзитными услугами AS1, которая, кстати, и передаст пакет от C к A.

Теперь, разобравшись с транзитными услугами и пирингом без взаиморасчетов, мы видим, что у хостов A, B и C есть транзитные соглашения. К примеру, клиент A должен покупать интернет-доступ у AS2. A может быть представлен одним компьютером или сетью организации с многочисленными LAN. Но в любом случае клиент A не нуждается в BGP, так как он является тупиковой сетью (stub network), соединенной с остальным интернетом одной линией. Отправлять пакеты за пределы сети можно только по этой единственной линии к AS2. Такой маршрут можно задать в качестве пути по умолчанию. Именно поэтому клиенты A, B и C на рисунке не представлены в качестве АС, участвующих в междоменной маршрутизации.

Коммерческие договоренности о транзите и пиринге без взаиморасчетов реализуются за счет объединения двух принципов маршрутизации — приоритизации путей к получателю и фильтрации способов их объявления в соседних сетях. Приоритизация состоит в следующем: в первую очередь обрабатываются маршруты для платных пользователей, затем — для узлов пиринговой сети без взаиморасчетов и, наконец, — для сетей провайдеров. За этим стоит простая логика: АС предпочитает передавать трафик по тем маршрутам, где за него платят, а не по тем, где за него приходится платить. По тем же причинам АС объявляет клиентам все свои маршруты, но не должна при этом повторно объявлять маршруты, полученные от узла пиринговой сети без взаиморасчетов или от транзитного провайдера, остальным узлам пиринговой сети или провайдерам. АС также реализуют и несколько других коммерческих договоренностей, включая платный пиринг (paid peering), при котором одна АС платит другой за доступ к маршрутам, полученным от ее клиентов. Это похоже на пиринг без взаиморасчетов, но с денежными выплатами. Также возможны договоренности о частичном транзите (partial transit), при котором одна АС платит другой за маршруты к некоторому подмножеству получателей в интернете.

Иногда сети компаний подключены сразу к нескольким интернет-провайдерам. Это делается с целью повышения надежности, так как при отказе одного провайдера трафик может быть передан через другого. Этот метод называется многолинейным подключением (multihoming). В таком случае компания, скорее всего, будет использовать протокол междоменной маршрутизации (например, BGP), чтобы АС знали, через какого провайдера следует передавать трафик.

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

BGP, по сути, является вариантом протокола маршрутизации по вектору расстояний, однако он значительно отличается от других подобных протоколов, например протокола RIP. Как мы убедились, при выборе маршрута вместо минимального расстояния учитывается политика. Другое отличие состоит в следующем. Вместо того чтобы периодически сообщать всем соседям свои расчеты стоимости передачи до каждого возможного адресата, BGP-маршрутизатор передает им точную информацию о тех маршрутах, которые он использует. Этот подход называется протоколом векторов маршрутов (Path Vector Protocol). Путь включает следующий маршрутизатор (он не должен быть смежным и может находиться в другой части сети провайдера) и последовательность автономных систем, или путь АС (AS path), через которые проходит маршрут (АС даются в обратном порядке). Пары BGP-маршрутизаторов взаимодействуют друг с другом, устанавливая TCP-соединения. Так обеспечивается надежная связь и скрываются детали устройства сети, по которой проходит трафик.

На илл. 5.69 показано, как маршрутизаторы обмениваются объявлениями о BGP-путях. Мы видим три АС; средняя предоставляет транзитные услуги провайдерам слева и справа. Объявление о маршруте к префиксу C начинается на AS3. Когда оно доходит до R2c (вверху), то состоит из AS3 и следующего маршрутизатора R3a. Внизу этот маршрут имеет тот же путь АС, но другой следующий маршрутизатор, так как он пришел по другому каналу. Это объявление распространяется дальше и пересекает границу AS1. На маршрутизаторе R1a (вверху) путь АС состоит из AS2 и AS3, а следующий маршрутизатор при этом — R2a.

Указание полного пути при прохождении маршрута упрощает обнаружение и устранение маршрутных петель. Главный принцип состоит в том, что каждый маршрутизатор, передающий маршрут за пределы своей АС, добавляет в его начало номер АС. (Именно поэтому список имеет обратный порядок.) Когда маршрутизатор получает маршрут, он проверяет путь АС на наличие номера его собственной АС. Положительный ответ означает, что в маршруте есть петля; в таком случае объявление отвергается. Однако несмотря на такие меры предосторожности, в конце 1990-х было обнаружено, что BGP все же сталкивается с вариантом проблемы счета до бесконечности (Лейбовиц и др.; Labovitz et al., 2001). Из-за медленной конвергенции маршрутов могут возникать временные петли, пусть и ненадолго.

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

Илл. 5.69. Распространение объявлений о BGP-маршруте

Итак, мы обсудили, как объявление маршрута передается по каналу между двумя интернет-провайдерами. Но кроме этого, нужно уметь отправлять BGP-маршруты в другие части сети провайдера, чтобы оттуда они могли быть переданы другим провайдерам. С такой задачей может справиться внутридоменный протокол. Но поскольку BGP отлично масштабируется для крупных сетей, в этих случаях часто используется его вариант. Он называется внутренним BGP (internal BGP, iBGP), в противоположность обычному, или внешнему BGP (external BGP, eBGP).

Правило распространения маршрутов внутри сети провайдера звучит так: маршрутизатор, расположенный на границе сети, узнает обо всех маршрутах, о которых знают другие пограничные маршрутизаторы (в целях согласованности их действий). Если какому-то пограничному маршрутизатору становится известен префикс к IP 128.208.0.0/16, все другие маршрутизаторы тоже о нем узнают. Тогда до этого префикса можно будет добраться из любой точки сети, при этом не важно, как пакет попал в эту сеть.

Во избежание перегруженности этот процесс не показан на илл. 5.69. Но можно привести такой пример: маршрутизатор R2b узнает, что он может достичь C либо через R2c (вверху), либо через R2d (внизу). Данные о следующем маршрутизаторе будут обновляться, пока маршрут будет перемещаться по сети провайдера. Благодаря этому маршрутизаторы на разных концах сети будут знать, через какой маршрутизатор можно выйти за пределы сети с другой стороны. Если посмотреть на крайние левые маршруты, то можно увидеть, что для них следующий маршрутизатор находится в той же сети, а не в соседней.

Теперь можно перейти к обсуждению важного вопроса: как BGP-маршрутизаторы выбирают маршрут до адресата? Каждый BGP-маршрутизатор узнает этот маршрут от соединенного с ним маршрутизатора в соседней сети провайдера, а также от других пограничных маршрутизаторов (которые узнают другие возможные пути от своего соседнего маршрутизатора). Далее каждый маршрутизатор выбирает наилучший маршрут. В конечном итоге получается, что политику выбора маршрута определяет провайдер. Однако это слишком общее и не вполне удовлетворительное объяснение, так что мы опишем несколько возможных стратегий.

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

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

Наконец, существует стратегия, согласно которой выбирается самый дешевый маршрут в сети провайдера. Пример ее реализации показан на илл. 5.69. Пакеты из A в C покидают AS1 через верхний маршрутизатор R1a. Пакет из B выходит через нижний маршрутизатор R1b. Это происходит, поскольку A и B выбирают наименее затратный способ выхода из AS1. А поскольку они расположены в разных частях сети провайдера, наилучшие пути для них различаются. То же самое происходит, когда пакеты проходят через AS2. На последнем участке AS3 должна переправить пакет из B по своей сети.

Эта стратегия называется ранним выходом (early exit), или методом «горячей картошки» (hot-potato routing). Интересно, что при такой маршрутизации пути обычно несимметричны. Рассмотрим маршрут пакета, переданного из C в B. Пакет сразу же выйдет из AS3 через верхний маршрутизатор. При переходе из AS2 в AS1 он останется наверху, а уже потом будет долго путешествовать внутри AS1. Это зеркальное отражение пути от B к C.

Из всего этого следует, что каждый BGP-маршрутизатор выбирает свой оптимальный путь из нескольких возможных. Но вопреки первоначальным ожиданиям, нельзя сказать, что BGP отвечает за маршруты между разными АС, а OSPF — за маршруты внутри одной АС. BGP и протокол внутреннего шлюза связаны более сложным образом. В частности, это значит, что BGP может найти наилучшую точку выхода за пределы сети провайдера. При этом выбор точки будет отличаться для разных уголков сети, как в случае метода «горячей картошки». Также это значит, что BGP-маршрутизаторы из разных частей одной АС могут использовать разные пути АС к одному и тому же получателю. Провайдер должен позаботиться о том, чтобы при такой свободе выбора маршруты были совместимы, — это вполне осуществимо на практике.

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


1. Выбрать маршрут с наибольшим значением локального приоритета.

2. Выбрать маршрут с наименьшей длиной пути АС.

3. Выбрать маршруты, полученные через внешние подключения (с помощью протокола eBGP), а не через внутренние (с помощью протокола iBGP).

4. Среди маршрутов, полученных от одной и той же соседней АС, выбрать маршрут с наименьшим значением атрибута MED (multiple exit discriminator — дискриминатор множественного выхода).

5. Выбрать маршруты с наименьшей стоимостью пути IGP к IP-адресу следующего транзитного участка в BGP-маршруте (в качестве которого обычно выступает IP-адрес пограничного маршрутизатора).

Эти шаги выполняются последовательно до тех пор, пока не останется один маршрут для каждого IP-префикса. Маршрутизатор делает это для каждого IP-префикса, указанного в его таблице маршрутизации. Хотя этот процесс кажется длинным и запутанным, в действительности он достаточно прост. Значение локального предпочтения (local preference) для каждого маршрута устанавливается оператором LAN и остается внутренним для этой АС. Оно имеет наивысший приоритет среди правил маршрутизации, что позволяет оператору реализовать упомянутые выше способы приоритизации (например, выбрать маршрут от клиента вместо пути без взаиморасчетов). Остальные правила служат главным образом для выбора коротких маршрутов и реализации «раннего выхода». В последнем случае выбираются маршруты от внешней АС вместо полученных от внутреннего маршрутизатора. Той же цели служит и выбор маршрутов с наименьшей стоимостью пути IGP к пограничному маршрутизатору.

Как это ни удивительно, мы лишь слегка коснулись вопроса использования BGP. Для более подробной информации см. спецификацию BGP версии 4 в RFC 427 и другие RFC. Но помните, что большинство трудностей касаются политики маршрутизации, о которой не говорится в спецификации этого протокола.


Регулирование междоменного трафика

Как уже говорилось в этой главе, операторам сетей часто приходится настраивать параметры и конфигурацию сетевых протоколов для управления загруженностью сети и недопущения перегрузок. Такие методы регулирования трафика широко применяются при использовании BGP. Оператор контролирует выбор маршрутов протоколом, чтобы управлять поступлением трафика в сеть или его выходом из сети. В первом случае процесс называется регулированием входящего трафика (inbound traffic engineering), во втором — регулированием исходящего трафика (outbound traffic engineering).

Наиболее распространенный способ регулирования входящего трафика сводится к тому, чтобы корректировать то, как маршрутизаторы устанавливают атрибут локального приоритета для отдельных маршрутов. Например, можно присвоить более высокое значение приоритета всем маршрутам, полученным от АС конкретного клиента. Таким образом оператор гарантирует, что при наличии возможности всегда будет выбираться один из них, а не, скажем, транзитный маршрут. Регулирование исходящего трафика — более сложный процесс, поскольку протокол BGP не позволяет одной АС сообщать другой о том, как выбирать маршруты (именно поэтому они и называются автономными). Но оператор может отправлять маршрутизаторам соседних сетей косвенные сигналы, чтобы контролировать, как они выбирают маршруты. Один из распространенных способов — искусственно увеличить длину пути АС путем многократного повторения собственной АС сети в объявлении маршрута, то есть произвести префиксацию пути АС (AS path prepending). Другой подход — использовать самый длинный совпадающий префикс, просто разбив его на несколько мелких (более длинных) префиксов так, чтобы восходящие маршрутизаторы предпочитали маршруты с такими префиксами. Например, маршрут для префикса /20 можно разбить на маршруты для двух префиксов /21, четырех префиксов /22 и т.д. Этот подход, однако, приводит к некоторым затратам, поскольку таблицы маршрутизации разрастаются, а при превышении определенного порога их размера маршрутизаторы начинают фильтровать объявления маршрутов.


5.7.8. Многоадресная интернет-рассылка

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

IP поддерживает многоадресную рассылку при использовании адресов класса D. Каждый такой адрес соответствует группе хостов. Для обозначения номера группы может быть использовано 28 бит, то есть одновременно могут существовать 250 млн групп. Когда процесс отправляет пакет по адресу класса D, протокол прилагает максимальные усилия по его доставке всем членам группы, но не дает гарантий. Некоторые хосты могут не получить пакет.

Диапазон IP-адресов 224.0.0.0/24 зарезервирован для многоадресной рассылки в локальной сети. В таком случае протокол маршрутизации не требуется. Пакеты передаются всей LAN с помощью широковещания с указанием группового адреса. Все хосты сети получают пакет, но обрабатывают его только члены группы. За пределы LAN пакет не передается. Вот некоторые примеры групповых адресов:

224.0.0.1 — все системы LAN;

224.0.0.2 — все маршрутизаторы LAN;

224.0.0.5 — все OSPF-маршрутизаторы LAN;

224.0.0.251 — все DNS-серверы LAN.

В других случаях члены группы могут располагаться в разных сетях. Тогда протокол маршрутизации необходим. Но для начала маршрутизаторы, передающие многоадресные сообщения, должны знать, какие хосты входят в группу. Процесс может попросить свой хост присоединиться к какой-либо группе или покинуть ее. Каждый хост следит за тем, в какие группы входят его процессы в текущий момент. Когда последний процесс хоста покидает группу, хост больше не является ее участником. Примерно раз в минуту каждый многоадресный маршрутизатор рассылает пакет с запросом на все хосты своей LAN (естественно, по локальному групповому адресу 224.0.0.1) с просьбой сообщить о группах, к которым они принадлежат в данный момент. Многоадресные маршрутизаторы не обязаны находиться там же, где обычные. Каждый хост отсылает обратно ответы для всех интересующих его адресов класса D. Эти пакеты запросов и ответов используются протоколом управления группами в интернете (Internet Group Management Protocol, IGMP). Он описан в RFC 3376.

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

О соответствующих алгоритмах мы уже говорили в разделе 5.2.8. Внутри АС чаще всего используется протокольно-независимая многоадресная рассылка (Protocol Independent Multicast, PIM). Существует несколько ее вариантов. При PIM в плотном режиме (Dense Mode PIM) создается усеченное дерево, построенное методом продвижения по встречному пути. Этот вариант подходит, когда члены группы находятся во всех частях сети, например, при рассылке файлов на многочисленные серверы сети дата-центра. При PIM в разреженном режиме (Sparse Mode PIM) создаются связующие деревья, похожие на деревья с основанием в ядре. Такой вид PIM может использоваться, к примеру, когда поставщик контента транслирует ТВ-сигнал абонентам своей IP-сети. Также разработан вариант PIM с указанием конкретного источника (Source-Specific Multicast PIM). Наконец, если члены группы находятся в нескольких АС, для построения многоадресных маршрутов нужны специальные расширения BGP или туннелирование.



30 Эта сказка (которую многие считают русской народной) на самом деле была написана англичанином Робертом Саути. В ней медведи — крошечный, среднего размера и огромный — были не семейством, а просто друзьями. — Примеч. ред.

31 Число молекул в моле любого вещества или число атомов в моле простого вещества; обозначается как NA, реже L. NA = 6,022 140 76 × 1023 моль–1. — Примеч. ред.

32 Во Франции шифрование возможно при условии передачи ключа правительственным органам. — Примеч. науч. ред.

33 Американский бейсболист, известный парадоксальными высказываниями, «йогизмами». — Примеч. ред.

Загрузка...