Первоисточник: http://www.osp.ru/nets/1998/01/16.htm
Александр
Крейнес
16.01.1998
Не так давно мне довелось услышать выражение "магия маршрутизации". На рисунках сеть часто изображают чем-то вроде облачка или, если это сеть ATM, соединенных между собой квадратиков с крестами в каждом из них. Может создаться впечатление, что никто толком не знает, каким образом сообщения попадают к адресату. Конечно же, это не так. Сегодня мы расскажем о появившемся не так давно протоколе Private Network-to-Network Interface (PNNI), предназначенном для маршрутизации сообщений в сети ATM.
В отличие от многих других стандартов передачи данных, технология ATM может использоваться в сетях практически любого масштаба - от небольших локальных и кампусных сетей до глобальных, состоящих из сотен и тысяч узлов. Конечно, далеко не каждый захочет строить локальную сеть ATM, но технически это возможно. Передача данных осуществляется с установкой логических соединений между конечными станциями, что отличает ATM от такой распространенной технологии, как frame relay. В сети ATM можно зарезервировать за соединением определенный уровень обслуживания (quality of service, QoS), который, например, определяет, с какой задержкой будут передаваться данные.
Ясно, что протокол маршрутизации сообщения в такой сети должен отличаться от принятых, скажем, в сетях IP. На разных этапах развития ATM применялись различные подходы к установке соединения. Некоторое время назад ATM Forum утвердил протокол PNNI, который можно применять на всем пути передачи пакетов через ATM - от входного до выходного узла.
Это отличает данный протокол от используемых, например в IP-сетях OSPF и BGP: OSPF применяется для маршрутизации внутри сети, а BGP - на ее границе. PNNI обеспечивает сквозную передачу данных по коммутируемым виртуальным каналам (switched virtual circuit, SVC) прежде чем он был принят, на отдельных участках сети приходилось поддерживать постоянные соединения (permanent virtual circuit, PVC), вручную конфигурируемые администратором сети.
Установку соединения в сети ATM с использованием PNNI можно представить следующим образом. Когда какой-либо конечной станции необходимо обменяться данными с другой станцией, она сообщает об этом коммутатору, к которому подключена. Коммутатор, исходя из имеющейся у него информации о состоянии каналов сети на данный момент (что это за информация и откуда она берется, мы рассмотрим несколько ниже), вычисляет, по какому пути следует направить пакеты. Список узлов, участвующих в соединении, именуется designated transit list (DTL). Всем узлам, входящим в DTL, рассылается сообщение об установке соединения (setup message), в котором указываются требуемые параметры. Получив сообщение, узел проверяет, способен ли он предоставить затребованный ресурс; при положительном результате проверки он сообщает об установке соединения следующему узлу из DTL и отправляет подтверждение исходному. Соединение считается установленным, если все входящие в DTL узлы прислали подтверждения.
Соединению присваивается идентификатор, который в дальнейшем включается в заголовки всех пакетов, пересылаемых от исходного узла к конечному. При обмене данными после установки соединения промежуточный узел проверяет только этот идентификатор и отправляет пакеты следующему узлу из соответствующего DTL (который хранится в его памяти, пока поддерживается соединение). По окончании обмена данными исходный узел рассылает всем узлам из DTL сообщение об освобождении ресурсов (release message).
Итак, в сетях ATM используется маршрутизация от источника (source routing): путь передачи сообщения вычисляется в момент отправки. Данный подход позволяет значительно снизить накладные расходы на обмен сообщениями. Чтобы любой узел сети мог определить путь пересылки сообщения к точке назначения, он должен обладать полной информацией о состоянии сети. Именно таким образом устроены все протоколы маршрутизации на основе информации о состоянии каналов сети (link-state protocol, LSP), к которым относится и протокол PNNI.
В стандарте PNNI сеть ATM рассматривается как совокупность соединенных между собой коммутаторов, представляющих собой узлы сети; конечные станции в общую топологическую структуру сети не входят. При маршрутизации сообщений учитываются первые 19 байт ATM-адреса. Двадцатый байт, именуемый также селектором, предназначен для внутреннего использования в конечной системе.
Ключевым понятием протокола PNNI является кластер узлов сети (peer group). В данном случае кластером называют объединение узлов, каждый из которых имеет полную информацию о каждом канале связи между любыми узлами кластера, об ATM-адресах всех конечных станций, подключенных к узлам кластера (часто эта информация представляется не в виде полного перечня всех адресов конечных станций, а в более короткой форме), а также об узлах сети, достижимых (reachable) из узлов данного кластера. Каждый кластер снабжается идентификатором длиной 14 байт.
Согласно принятой в PNNI схеме адресации, адреса узлов, принадлежащих одному и тому же кластеру, начинаются с одной и той же последовательности байт, именуемой префиксом адреса. Местоположение любого узла (в топологическом смысле) полностью определяется его адресом. Длина (уровень) префикса может составлять до 13 байт.
Рассмотрим пример кластера уровня 96 (рис.1), адреса всех устройств которого начинаются с префикса A=59.6.6.0.6.6.0.6.6.0.0.1 длиной 12 байт. Пусть тринадцатый байт ATM-адреса используется для нумерации коммутаторов кластера: A.1, A.2, A.3, A.4. К каждому из коммутаторов подключен ряд конечных устройств; их полные ATM-адреса получаются из адреса коммутатора путем добавления к нему 6 байт MAC-адреса, зашитого в ATM-адаптер конечного устройства. Например, устройства, подключенные к коммутатору A.1, могут иметь адреса A.1.1.1.1.1.1.1., A.1.1.1.1.1.1.2. и т. д. Эти последние шесть байт называют также идентификатром конечного устройства (ESI, end system identifier). Вообще говоря, к коммутаторам могут быть подключены и устройства, чьи адреса не подчиняются указанному правилу; ниже мы увидим, каким образом информация об адресах конечных устройств, подключенных к тому или иному узлу кластера, становится известной остальным узлам этого кластера.
Рисунок 1.
Схема кластера сети
ATM.
Все коммутаторы кластера периодически обмениваются со своими соседями сообщениями-"приветствиями", благодаря которым они выясняют локальную топологию сети: адреса соседей, номера портов, к которым они подключены, а также идентификаторы кластеров соседних коммутаторов (таким образом удается выявлять каналы, соединяющие между собой разные кластеры). Если какой-либо из коммутаторов перестает отвечать на приветствия, его соседи вносят соответствующие изменения в свои таблицы и передают полученную информацию в другие узлы кластера.
В стандарте PNNI определено, что информация о топологии сети должна храниться в виде таблиц записей под названием PTSE (PNNI Topology State Elements). Таблицы служат для описания топологии сети с учетом индивидуальных характеристик каналов, например пропускной способности, предпочтительности использования и др. В каждом из узлов формируются PTSE, описывающие собственно узел, исходящие из него каналы связи, а также адреса конечных станций, достижимых из этого узла.
Здесь необходимо сделать пару замечаний. Как уже указывалось, адреса многих подключенных к коммутатору станций могут иметь один и тот же префикс. Тогда коммутатор формирует не индивидуальную PTSE для каждой станции, а общую для всех станций с данным адресным префиксом. Если к коммутаторам подключены каналы связи с системами, где PNNI не применяется (такие системы называют достижимыми для этого коммутатора), то для них формируются индивидуальные PTSE, что обеспечивает корректную маршрутизацию сообщений через такие каналы.
Возвратимся к рис. 1 и рассмотрим, какие PTSE будут созданы в узле A.1. Во-первых, PTSE, описывающая сам узел. Во-вторых, две PTSE, которые соответствуют установленным каналам связи (от порта 1 коммутатора A.1 к порту 2 коммутатора A.2 и от порта 2 коммутатора A.1 к порту 3 коммутатора A.3 ). В-третьих, PTSE, указывающая, что достижимыми (reachable) для коммутатора A.1 являются конечные станции, чьи ATM-адреса имеют префикс A.1 (сколько бы таких станций ни было, будет создана только одна PTSE).
Полученная каждым из коммутаторов информация о локальной топологии сети может быть использована для составления маршрутов только в том случае, если она "доведена до сведения" всех узлов кластера. В PNNI предусмотрены два механизма рассылки топологической информации: первичный обмен базами данных о топологии и "затопление" (flooding).
Первый из них вступает в действие при образовании нового канала связи. Если в ходе обмена приветствиями какой-либо из коммутаторов обнаруживает, что у него появился новый сосед, он немедленно посылает ему свою базу данных о топологии сети. В ответ новый узел посылает ему свой набор PTSE. Этот механизм позволяет новым узлам очень быстро включаться в полноценную работу.
Второй алгоритм используется при изменении топологии сети (не только при возникновении или разрыве каналов связи, но и при изменении полосы пропускания каналов в зависимости от загрузки сети). Об этом в первую очередь узнают коммутаторы, непосредственно подключенные к изменившимся каналам связи. Они модифицируют свои таблицы PTSE, а затем рассылают новую PTSE соседям, которые, в свою очередь, поступают точно так же. Таким образом, информация о локальных топологических изменениях распространяется по всей сети.
Допустимые размеры кластера определяются объемом памяти и вычислительной мощностью коммутаторов, входящих в кластер. Действительно, чем больше кластер, тем больше объем таблиц, характеризующих его топологию. Чтобы обеспечить масштабируемость протокола маршрутизации, в стандарте PNNI предусмотрена иерархическая организация сети; она позволяет строить сети практически неограниченного размера.
Иерархия PPNI основана на понятии уровня кластера. То, что было описано выше, - кластер самого низкого уровня. Его узлами являются реально существующие коммутаторы, а логическими каналами связи между ними - реально существующие линии передачи данных. Представим себе сеть, состоящую из некоторого (большого) числа кластеров низкого уровня. Каждый из них будет соответствовать логическому узлу кластера следующего уровня иерархии, а те, в свою очередь, - логическому узлу (logical group node, LGN) кластера еще более высокого уровня. На следующем уровне иерархии каждый кластер предыдущего уровня рассматривается как единое целое.
Соответствующие PTSE описывают только каналы связи между кластерами; не указывается, какие конкретно узлы кластеров связаны между собой. Кластеры, соответствующие разным уровням иерархии PNNI, характеризуются адресными префиксами разной длины (именно поэтому длина префикса и называется его уровнем). Таблицы, которые характеризуют топологию кластера как целого, хранятся на одном из его узлов, называемом лидером кластера (peer group leader, PGL). Таблицы, характеризующие топологию кластера следующего уровня, также физически хранятся на одном из коммутаторов вместе с таблицами предыдущих уровней.
Для примера рассмотрим сеть из девяти узлов, в которой организованы два кластера самого низкого уровня (рис. 2). Рядом с каждым узлом указано условное обозначение его адреса ATM. Узлы, имеющие адресный префикс A.B, включены в один кластер, а узлы с адресным префиксом A.C - в другой. Каждый узел имеет детальную информацию о топологии собственного кластера и знает, по каким каналам связи можно добраться до другого кластера и какие адреса являются для него достижимыми (в нашем примере таких адресов нет). Однако узлы не имеют информации о внутренней топологии другого кластера, они лишь осведомлены о его существовании.
Как видит сеть узел А.В.1:
Рисунок 2.
Иерархические уровни протокола
PNNI.
Если, например, узлу A.B.1 понадобится послать сообщение узлу A.C.4, он сможет определить лишь путь до границы соседнего кластера. Внутреннюю маршрутизацию выполнит первый узел соседнего кластера, который получит сообщение (в зависимости от конкретных требований к соединению и состояния сети в данный момент) A.C.2, A.C.1 или A.C.5. Все эти действия выполняются в момент установки соединения; передача данных осуществляется по уже готовому виртуальному каналу. При создании такого канала последовательно формируются два DTL: один - для передачи сообщения до границы кластера A.C (его составляет узел A.B.1), а второй - для передачи внутри кластера (его составляет тот узел кластера A.C, через который сообщение попадает внутрь этого кластера). Отметим, что сами логические узлы A.B и A.C могут входить в кластер следующего уровня, определяемый адресным префиксом A.
В ходе обмена информацией (уже после установки соединения) состояние сети может измениться. Иногда это приводит к невозможности обеспечения требуемого уровня обслуживания или полному разрыву одного из каналов связи, включенных в виртуальный канал передачи данных. Узел, обнаруживший неисправность, посылает сообщение узлу, составившему DTL, а тот, в свою очередь, пытается создать альтернативный путь передачи сообщения. Таким образом обеспечивается отказоустойчивость сети.
Стандарт PNNI поддерживается изделиями таких компаний, как Cisco Systems, FORE Systems, IBM. Благодаря его применению можно создавать сети, в которых совместно работают коммутаторы от разных производителей. Как сообщает ATM Forum, первая демонстрация сети на базе PNNI была осуществлена летом прошлого года на промышленной выставке "NetWorld + Interop Tokyo". В сети одновременно использовались коммутаторы ATM от шести компаний. Основные приложения, работавшие в сети: видео по запросу, передача видео в реальном времени, обмен данными между локальными сетями по технологии LAN Emulation.