Узнать, как коммутаторы ATM устроены внутри, будет полезно для читателя, так как за технологией ATM будущее.


ОБЩАЯ МОДЕЛЬ КОММУТАТОРА ATM
КОММУТАТОР С ВЫБЫВАНИЕМ
КОММУТАТОР БЭТЧЕРА ТИПА БАНЬЯНА
КОММУТАТОР С РАЗДЕЛЯЕМОЙ ПАМЯТЬЮ
ЗАКЛЮЧЕНИЕ

Асинхронный режим передачи (ATM) разрабатывался изначально как технология для общедоступных сетей связи с интегрированной передачей данных, голоса и видео. Однако благодаря своим возможностям передачи мультимедийного трафика, и высокой пропускной способности, и качеству услуг он находит все более широкое применение и на магистралях в локальных сетях. Использование небольших ячеек одинаковой длины с коротким заголовком позволяет создать высокоскоростные коммутаторы ATM.

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

ОБЩАЯ МОДЕЛЬ КОММУТАТОРА ATM

Коммутатор ячеек ATM имеет несколько входных и несколько выходных линий, причем, как правило, их число совпадает, так как соединения являются двусторонними. Коммутаторы ATM являются синхронными (хотя сам протокол асинхронный) в том смысле, что во время одного цикла одна ячейка берется с каждой входной линии (если она, конечно, есть), проводится через внутреннюю коммутационную структуру и подается на нужную выходную линию.

Коммутаторы могут производить и конвейерную обработку, т. е. обработка поступившей ячейки происходит за несколько циклов, прежде чем она появляется на выходной линии. Ячейки поступают нерегулярно, поэтому начало каждого цикла определяется главным тактовым генератором. Ячейка подвергается обработке, т. е. коммутации, в том случае, если она полностью поступила к началу очередного цикла, иначе она ждет начала следующего цикла. Если ячейки прибывают со скоростью 155 Мбит/с, то длительность цикла составляет 2,7 мкс, а при 622 Мбит/с цикл длится 700 нс.

Коммутатор ATM должен отвечать двум основным требованиям: во-первых, количество потерянных ячеек должно быть минимальным, а во-вторых, ячейки, принадлежащие к одному и тому же виртуальному соединению, ни при каких обстоятельствах не могут менять порядок следования. Первое требование в цифровом выражении составляет одну ячейку из 1012, т. е. крупный коммутатор может терять не более 1-2 ячеек в час. Второе условие налагает очень жесткие ограничения на схему коммутатора, но здесь ничего не поделаешь - таково требование стандарта ATM.

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

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

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

КОММУТАТОР С ВЫБЫВАНИЕМ

Коммутатор с выбыванием (knockout switch) использует очереди на выходных линиях (см. Рис. 1). Каждая входная линия подключена к шине, по которой поступившие ячейки вещаются. Наличие всего одного задающего устройства для каждой шины значительно упрощает схему и синхронизацию.

Picture 1(1x1)

Рисунок 1.
Коммутатор с выбыванием производит отсев ячеек, если число поступивших ячеек для данной выходной линии больше числа буферов.

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

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

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

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

КОММУТАТОР БЭТЧЕРА ТИПА БАНЬЯНА

Недостаток коммутатора с выбыванием состоит в том, что число коммутирующих элементов равно квадрату числа линий. При числе линий 1024 число коммутирующих элементов будет более миллиона. Эту проблему можно решить с помощью коммутатора Бэтчера типа баньяна. На самом деле он состоит из двух коммутаторов: коммутатора Бэтчера и коммутатора типа баньяна. Первый получил свое название по имени изобретателя, а второй - потому, что его схема напоминает корни дерева баньян (индийской смоковницы).

Во всех коммутаторах типа баньяна между каждой входной и выходной линиями существует только один путь (см. Рис. 2). Для рассматриваемого в качестве примера коммутатора 8х8 к каждой ячейке добавляется заголовок длиной три бита (номер выходной линии, определяемый из таблицы маршрутов по информации о виртуальном канале). Каждый из коммутирующих элементов имеет две входных и две выходных линии. Коммутирующий элемент просматривает один бит номера выходной линии, и в зависимости от его значения он направляет ячейку либо на порт 0, либо на порт 1. В случае коллизии одна ячейка передается, а одна отбрасывается. Первый ряд коммутирующих элементов просматривает левый крайний (старший) бит, второй ряд средний бит, а третий ряд правый крайний (младший) бит.

Picture 2

Рисунок 2.
Сама по себе данная схема не в состоянии исключить конфликты при коммутации ячеек.

К сожалению, как уже упоминалось, коммутатор типа баньяна может приводить к конфликтам, если две ячейки пытаются выйти через один и тот же выходной порт коммутирующего элемента. Однако если ячейки, поступающие на входные линии этого коммутатора, упорядочены определенным образом, то конфликтов не происходит. Упорядочить поступающие ячейки призван коммутатор Бэтчера. Например, если поступающие ячейки упорядочены по адресату и помещаются на входные линии 0, 2, 4, 6, 1, 3, 5, 7, то коммутатор типа баньяна ячеек не теряет.

Коммутатор Бэтчера (см. Рис. 3) также состоит из коммутирующих элементов 2х2, но они работают несколько по-иному, чем аналогичные элементы в коммутаторе типа баньяна. При получении двух ячеек коммутирующий элемент сравнивает их адреса и направляет ячейку с большим номером по стрелке, а ячейку с меньшим номером в противоположном направлении. Если ячейка только одна, то она посылается в направлении, противоположном тому, куда указывает стрелка. Вообще говоря, число коммутирующих элементов коммутатора Бэтчера растет как nlog2n с ростом числа линий n.

Picture 3(1x1)

Рисунок 3.
Являясь неблокирующим, данный коммутатор не теряет ячеек в процессе коммутации.

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

Коммутатор Бэтчера типа баньяна является неблокирующим коммутатором, т. е. его коммутационная структура не теряет ячеек в результате конфликтов внутри коммутационной структуры, если они направляются на разные выходные линии. Однако если две ячейки направляются на одну и ту же выходную линию, тогда опять встает проблема буферизации. В коммутаторах данного типа очередь организуется между двумя коммутационными структурами. Первый коммутатор Бэтчера был спроектирован Хуангом (Huang) и Кнауэром (Knauer) в 1987 году и назван ими Starlite ("звездный свет"). Затем появились Moonshine ("лунный свет") в 1987 году и Sunshine ("солнечный свет") в 1991 году. Starlite, Moonshine и Sunshine отличаются в основном способом реализации очередей и многоадресной рассылки.

КОММУТАТОР С РАЗДЕЛЯЕМОЙ ПАМЯТЬЮ

Отличительная особенность коммутатора с разделяемой памятью (см. Рис. 4) состоит в том, что он имеет высокоскоростную внутреннюю шину, причем пропускная способность ее равна общей пропускной способности входных/выходных линий. Внутренняя шина передает ячейку в разделяемую память за квант времени T/N, где T - длительность цикла, а N - число входных/выходных линий. Переход от последовательной передачи к параллельной необходим для того, чтобы длительность цикла (такта) оставалась на приемлемом уровне: тактовая частота шины в этом случае должна быть только в N/W раз больше, чем скорость входной линии в битах (здесь W - ширина или размерность шины).

Picture 4

Рисунок 4.
Эта схема наиболее широко используется в небольших коммутаторах.

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

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

Благодаря своей простоте архитектура с разделяемой памятью чрезвычайно популярна в небольших быстрых коммутаторах. Однако в более крупных коммутаторах тактовая частота внутренней шины становится неприемлемой. Например, для коммутатора ATM на 155 Мбит/с с 32 входными линиями и 16-разрядной шиной тактовая частота шины была бы равна 310 МГц.

ЗАКЛЮЧЕНИЕ

ATM имеет репутацию сложной технологии, но, как видно из этого урока, не так сложен ATM, как его малюют. Конечно, здесь есть доля лукавства, так как принципиальная сложность ATM состоит в сигнализации при установлении виртуальных соединений. Просто в этом же уроке мы коснулись только одной плоскости ATM - транспортная сеть ATM соответствует пользовательскому плану стека протоколов ATM, причем этот стек в отличие, например, от TCP/IP или OSI имеет трехмерную, а не двухмерную модель.


Дмитрий Ганьжа - ответственный редактор LAN. С ним можно связаться по адресу: dganzha@osp.ru.