Шрифт:
Закладка:
Предоставление транзитных услуг показано на илл. 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.
Указание полного пути при прохождении маршрута упрощает обнаружение и устранение маршрутных петель. Главный принцип состоит в том, что каждый маршрутизатор, передающий маршрут за пределы своей АС, добавляет в его начало номер