принимать и посылать пакеты на любой сайт Интернета. Однако прохождение через автономную систему пакета, отправитель и получатель которого находятся за пределами данного государства, может быть нежелательно, даже если кратчайший путь между отправителем и получателем пролегает через эту автономную систему («Это их заботы, а не наши»). С другой стороны, может оказаться желательным транзит трафика для других автономных систем, возможно, соседних, которые специально заплатили за эту услугу. Например, телефонные компании были бы рады оказывать подобные услуги, но только своим клиентам. Протоколы внешнего шлюза вообще и протокол BGP в частности разрабатывались для возможности учета различных стратегий при выборе маршрута между автономными системами.
Типичные стратегии выбора маршрутов учитывают политические, экономические факторы, а также соображения безопасности. К типичным примерам ограничений при выборе маршрутов относятся следующие.
1. Не передавать коммерческий трафик в образовательные сети.
2. Никогда не прокладывать через Ирак маршрут, начинающийся в Пентагоне.
3. Использовать TeliaSonera вместо Verizon, так как она дешевле.
4. Не использовать AT&T в Австралии, так как производительность будет низкой.
5. Трафик, начинающийся или заканчивающийся в Apple, не должен проходить через
Google.
Как вы, наверное, уже поняли, политика маршрутизации может носить в высшей степени индивидуальный характер. Часто стратегии не разглашаются по соображениям безопасности. Однако существуют схемы, объясняющие такой выбор этой компании. Часто эти схемы берутся в качестве отправной точки.
Реализация политики маршрутизации заключается в том, чтобы решить, какой трафик может перемещаться по каким каналам, соединяющим автономные системы. Один из довольно популярных вариантов выглядит так: провайдер-клиент платит другому провайдеру за отправку пакетов на любой адрес в сети Интернет и получение пакетов с любого адреса. В таком случае говорят, что провайдер-клиент покупает у другого провайдера транзитные услуги. Эта ситуация аналогична тому, как обычный пользователь домашней сети покупает у провайдера услугу доступа к Интернету. Чтобы это работало, провайдер должен объявить абоненту маршруты на все адреса в сети Интернет по каналу, который их соединяет. Тогда абонент будет знать маршрут, по которому можно отправить пакет куда угодно. И наоборот, абонент должен объявить провайдеру маршруты на все адреса в пределах своей сети. Тогда провайдер сможет передавать трафик только на эти адреса — абоненту не нужен трафик, предназначенный для кого-то другого.
Пример предоставления транзитных услуг приведен на рис. 5.57. Перед нами четыре автономные системы, соединенные между собой. Соединение часто осуществляется через точку обмена интернет-трафиком (IXP, Internet eXchange Point),
инфраструктуру, с которой соединяются многие интернет-провайдеры, чтобы получить доступ к другим интернет-провайдерам. AS2, AS3 и AS4 — клиенты AS1. Они покупают у AS1 транзитные услуги. Таким образом, пакет, отправленный источником A на C, передается из AS2 в AS1. а затем в AS4. Объявления о маршрутах перемещаются в противоположном направлении. Чтобы источник мог передать пакет C через AS1,
AS4 объявляет C в качестве адреса назначения своему провайдеру (AS1). После этого AS1 объявляет маршрут до C другим своим клиентам, включая AS2, чтобы они могли отправлять трафик на C через AS1.
Рис. 5.57. Политика маршрутизации между четырьмя автономными системами
На рис. 5.57 все остальные АС покупают транзитные услуги у AS1. Благодаря этому они могут связаться с любым хостом в сети Интернет. Но за эту возможность им приходится платить. Пусть AS2 и AS3 обмениваются большим количеством трафика. Если эти сети соединены, то они могут выбрать другую политику — передавать трафик напрямую и бесплатно. Это уменьшит количество трафика, передаваемого AS1 от их имени, и сократит их расходы. Такая политика называется пирингом (peering).
Для реализации пиринга две АС должны передавать друг другу объявления о маршрутах для своих адресов. Это позволяет AS2 отправлять пакеты AS3 из A в B, и наоборот. Однако следует обратить внимание на то, что пиринг не транзитивен. На рис. 5.57 сети 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 может состоять из одного компьютера, а может быть сетью компании с множеством ЛВС. Но в любом случае A не нужно использовать BGP, так как она является тупиковой сетью (stub network), соединенной с остальным Интернетом только одной линией. Отправлять пакеты за пределы сети можно только через эту единственную линию. Такой путь можно задать в качестве пути по умолчанию. Именно поэтому A, B и C на рисунке не представлены в виде автономных систем с внутридоменной маршрутизацией.
С другой стороны, некоторые сети компаний подключены к нескольким интернет-провайдерам. Это делается с целью повышения надежности, так как при отказе одного из провайдеров трафик может быть передан через другого провайдера. Этот метод называется многолинейным подключением (multihoming). В таком случае компания, скорее всего, будет использовать протокол междоменной маршрутизации (например, BGP), чтобы АС знали, через какого провайдера следует передавать трафик.
Существует множество вариантов политик маршрутизации, и это хорошая иллюстрация того, как деловые отношения и контроль над объявлениями о маршрутизации приводят к созданию новых политик. Теперь мы перейдем к обсуждению того, как BGP-маршрутизаторы передают друг другу объявления о маршрутах и выбирают пути для передачи пакетов.
BGP по сути является вариантом протокола маршрутизации по вектору расстояний, однако он значительно отличается от других подобных протоколов, например протокола RIP (Routing Information Protocol — протокол маршрутной информации).
Как мы уже видели, вместо минимального расстояния при выборе маршрута учитывается политика. Еще одно отличие состоит в том, что вместо того чтобы периодически сообщать всем своим соседям свои расчеты цены передачи до каждого возможного адресата, каждый BGP-маршрутизатор передает соседям точную информацию об используемых им маршрутах. Этот подход называется протоколом векторов маршрутов (Path Vector Protocol). Путь состоит из следующего маршрутизатора (совсем не обязательно смежного: он может находиться в другой части сети провайдера) и последовательности АС, или пути АС (AS path), через которые проходит маршрут (в обратном порядке). Пары BGP-маршрутизаторов общаются друг с другом, устанавливая TCP-соединения. Таким образом обеспечивается надежная связь и скрываются детали устройства сети, по которой проходит трафик.
На рис. 5.58 показан пример того, как маршрутизаторы обмениваются объявлениями о маршрутах. Здесь мы видим три автономных сети, причем средняя предоставляет транзитные услуги правому и левому интернет-провайдеру. Объявление о маршруте к префиксу C начинается на AS3. Когда оно доходит до R2c (вверху), оно состоит из AS3 и следующего маршрутизатора R3a. Внизу этот маршрут имеет тот же путь АС, но другой следующий маршрутизатор, так как он пришел по другому каналу. Это объявление распространяется дальше и пересекает границу AS1. На маршрутизаторе R1a (вверху) путь АС состоит из AS2 и AS3, а следующий маршрутизатор — R2a.