Интерфейс между частными сетями (Private Network-to-Network Interface - PNNI) разработан форумом ATM для установления соединений между частными коммутаторами (сетевыми узлами private network node interface) и между группами частных сетей (Private Network-to-Network Interface), как это показано на рис. 6.16.
Определение PNNI включает в себя два протокола
Сигнальный протокол обеспечивает установление и разъединение соединения "точкаточка" и "точкамноготочие". Протокол основан на UNI 4.0 с некоторыми расширениями для обеспечения поддержки маршрутизации от источника, для проверки работы собственного передатчика по линии (crank back) и для поиска обходных путей в случае сбоя установления соединения. На рис. 6.17 источник передал запрос первой станции на соединение с получателем Б, при этом он передает сигнальное сообщение ВЫЗОВ (SETUP), затем, используя сигнализацию UNI, устанавливает соединения с контролем качества QoS (функция Connection Admission Ccontrol - CAC) и отвечает сигналом СВЯЗЬ УСТАНАВЛИВАЕТСЯ (CALL_PROCEEDING), если обработка вызова возможна. Первая станция имеет записанную базу данных по топологии сети, которая позволяет вычислить маршрут так, чтобы были выполнены требования, записанные в контракте. Сообщение ВЫЗОВ (SETUP) распространяется далее по сети, используя маршрут, заданный станцией источника. Каждая станция анализирует маршрут для выполнения качества обслуживания и в случае успеха передает далее сигнал ВЫЗОВ (SETUP). Источник также вырабатывает сигнал СВЯЗЬ УСТАНАВЛИВАЕТСЯ (CALL_PROCEEDING) в сторону предыдущей станции. Если станция назначения может обслужить вызов, то она отвечает сигналом ПРОКЛЮЧЕНО (CONNECT), который также передается по сети к источнику. При разъединении обмен сигналами проводится так, как это показано на рис. 6.17.
Маршрутизация сетей ATM разработана не так хорошо, как другие вопросы ATM, такие как управление при перегрузках и коммутация. Наиболее ощутимый результат - это стандарт PNNI.
Согласно PNNI в каждом узле накапливаются сведения о топологии сети, при этом в этом интерфейсе возможно изменение этих сведений при изменении сети от самых малых размеров до больших сетей, содержащих много узлов. Это достигается с помощью иерархии маршрутизации, показанной на рис. 6.18.
Как показано на рис. 6.18, группа одного ранга (peer group) собирает узлы (физические или логические), которые эксплуатируются и административно управляются на одном уровне. Например, группа одного ранга \[ A1 \] содержит узлы \[ A1.1, A1.2, A1.3 \] . Группы одного ранга представлены на более высоком уровне иерархии узлом логической группы (Logical Group Node - LGN). Например, узел логической группы B представляет на высшем уровне группу одного ранга \[ B \] . На нижнем уровне иерархии группа одного ранга соединяет узлы с помощью физических каналов. На высшем уровне - узел логической группы соединяется с помощью логического канала. Каждая группа одного ранга содержит один главный узел одноранговой группы, который выполняет функции узла логической группы для одноранговой группы. Главный узел суммирует топологическую информацию в пределах одноранговой группы и вводит ее в группу более высокого порядка. Преимущество использования иерархической структуры в том, что каждая станция обслуживает только часть всей сети, при этом уменьшается объем информации маршрутизации, которая сохраняется в каждой станции. Например, для рассмотрения топологии сети со станции \[ A1.1 \] применяется порядок сбора информации, показанный на рис. 6.19. Он гораздо проще, чем рассмотрение всей топологии сети.
PNNI использует маршрутизацию от источника. Этот метод заключается в том, что маршрут определяется не отправителем, а фактически первым маршрутизатором на пути следования сообщения. В отправляемом пакете указан точный маршрут его следования. Задача промежуточных маршрутизаторов состоит только в выполнении записанного маршрута, что ускоряет прохождение информации по сети. В начале узел источника определяет путь внутри группы одного ранга, которая отображается с помощью списка путей, предназначенных для транзита (Designed Transit List - DTL). Предположим, что запрос на установление соединения пришел на станцию \[ A1.1 \] для установления соединения с другой станцией - \[ B.3 \] .
После получения запроса на установление соединения станция \[ A1.1 \] выбирает назначенный путь ( \[ A1.1, A1.2, A2, B \] ), где \[ A1.1 \] и \[ A1.2 \] - обозначение станций, \[ A2, B \] - обозначение станций либо групп. В этом случае используются совместно три списка \[ DTL \] :
\[ DTL: [A1.1, A1.2] \] указатель \[ 2 \]
\[ DTL: [A1, A2] \] указатель \[ 1 \]
\[ DTL: [A, B] \] указатель \[ 1 \]
Текущее значение указателя может изменяться на каждом узле и показывает, какой узел, записанный в списке, надо посетить следующим (значение указателя \[ 2 \] ). Первыми указаны исходящие узлы. Так, первая строка указывает, что от узла \[ A1.1 \] надо установить соединение \[ A1.2 \] (указатель \[ 2 \] ). Все остальные строки указывают возможные дальнейшие пути.
Когда \[ A1.2 \] получает сообщение ЗАНЯТИЕ (SETUP), она удаляет первую строку списка и действует согласно второй строке принятого списка маршрутизации, которой присваивает значения указателя \[ 2 \] . Она ищет путь к одноранговой группе \[ PG (A2) \] . Маршрутная таблица выглядит следующим образом
\[ DTL: [A1, A2] \] указатель \[ 2 \]
\[ DTL: [A, B] \] указатель \[ 1 \]
По этой таблице станция \[ A1.2 \] ищет путь к одноранговой группе \[ PG (A2) \] . С этой группой имеется непосредственная связь станции \[ A1.2 с A2.1 \] .
Когда станция \[ A2.1 \] получит сообщение ЗАНЯТИЕ (SETUP), она начнет поиск согласно таблице в группе 2. Она находит маршрут к оконечной группе B через станции \[ A2.3 \] и \[ A2.4 \] и создает новый список.
\[ DTL: [A2.1, A2.3, A2.4] \] указатель \[ 2 \]
\[ DTL: [A1,A2] \] указатель \[ 2 \]
\[ DTL: [A,B] \] указатель \[ 1 \]
Второй указатель 2 показывает, что соединение идет через две группы.
Когда станция \[ A2.3 \] получает сигнал ЗАНЯТИЕ (SETUP), она устанавливает соединение со станцией \[ A2.4 \] , определяет, что имеет непосредственную связь с группой \[ PG (B) \] , удаляет две верхних строки таблицы и изменяет указатель.
Тогда таблица имеет вид
\[ DTL: [A, B] \] указатель \[ 2 \] .
Когда станция \[ B1 \] группы \[ PG (B) \] получает сигнал ЗАНЯТИЕ (SETUP), она находит список внутри данной группы:
\[ DTL: [ B1, B3 ] \] указатель \[ 2 \]
\[ DTL: [A, B] \] указатель \[ 2 \] .
Когда сообщение достигает станции \[ B3 \] , там определяется, что эта станция есть пункт назначения.
Бывает случай, когда по сигналу ЗАНЯТИЕ (SETUP) выясняется, что отсутствуют ресурсы; тогда возможно нахождение обходных путей.