Все идеи и алгоритмы, описываемые в данной статье, являются результатом моей независимой и полностью самостоятельной интеллектуальной деятельности. Как автор, разрешаю свободно использовать, изменять, дополнять все идеи и алгоритмы любому человеку или организации в любых типах проектов при обязательном указании моего авторства.
© Балыбердин Андрей Леонидович 2019 Rutel@Mail.ru
Синхронная Символьная Иерархия
Принципы работы коммутатора синхронных потоков
Выбор структуры коммутатора.
Синхронные коммутаторы достаточно просты по своей конструкции и представляю собой различным образом соединяемые небольшие FIFO (сети Клоза и тд), весь вопрос только в размерах коммутационного поля.
ССИ изначально предназначается для достижения предельно возможных скоростей передачи при малых задержках, значит наиболее оптимальным будет «однослойный» коммутатор. В настоящее время скорости передачи выросли до такого уровня что появилась потребность в физическом сокращении пути между источником и приемником данных.
Если для первых IP сетей передачи данных размер пакета в кабеле (путь проделываемый электромагнитной волной за время передачи пакета данных) достигал 150 км и было все равно в какой части города поставить коммутатор (кроме экономии кабеля), можно было укладывать «красивые» пучки проводов, создавать специальные зоны для размещения коммутаторов.
В настоящее время эти расстояния варьируются от полутора метров до размера кристалла (единицы миллиметров) и дополнительный путь по кабелю в несколько метров вносит большую задержку чем непосредственно передача пакета в канал. Тоже самое можно сказать и о времени коммутации.
Вывод: Для высокопроизводительных систем более оптимальной является сеть соединяющая физически соседние элементы и для такой сети необходим коммутатор с минимальным временем коммутации. Можно даже ввести метрику отношение задержки передачи при прямом соединении или через коммутатор. Необходимо решение оптимальное для коммутатора с числом входов до 10 и однослойным коммутационным полем (мультиплексор, FIFO, демультиплексор).
Структура коммутатора
Приемная часть состоит из стандартного канального уровня с модулем фрагментации потока (ССИ_Синхронный поток_Фрагментация потока (2)) и FIFO буфера физического канала. FIFO является обязательным, оно необходимо для переноса принимаемых символов через «клоковый» барьер. Со стороны приемной части тактовая частота восстанавливается из принимаемых данных, со стороны коммутатора это частота тактирования ядра коммутатора. Именно на входе этого FIFO и происходит удаление «Компенсирующих символов» (ССИ_Синхронный поток_Эффект проскальзывания (1)) из принимаемого потока. Это гарантирует меньшую среднюю скорость на приеме символов чем скорость обработки ядром коммутатора.
Доступ пользователя к сети происходит через модифицированные приемники (передатчики), где канальный уровень заменен на пользовательский физический интерфейс.
Ядро коммутатора представляет собой набор небольших модулей, по одному на каждый виртуальный канал. Число физических каналов относительно невелико, поэтому можно каждый модуль (или группу модулей) сделать коммутируемым на любой из имеющихся каналов. Коммутация происходит в момент создания виртуального канала и не изменяется до его удаления. Модуль после создания (назначения) его конкретному виртуальному каналу (конфигурирования) начинает откликаться только на сигналы от конкретного физического интерфейса и на конкретный диапазон адресов (тоже самое и на выходе). Следует отметить, что на один и тот же диапазон адресов (на прием) может откликнуться несколько модулей, что дает возможность копировать поток и направлять его в несколько физических каналов. Копирование позволяет строить не просто линейные маршруты, а широковещательные для нескольких получателей (дерево), один источник много получателей. При этом каждый получатель увидит одинаковую последовательность символов (последовательная консистентность). Принимаемые данные могут быть служебными (обрабатываются УУ коммутатора) и данными пользователя (передаются в рамках созданных виртуальных каналов), определяются младшим битом символа.
Примерно таким же образом происходит формирование суммарного канала. Из циклического счетчика символов формируется адрес буфера виртуального канала. Если выбранный канал содержит данные, то они считываются и отправляются в передатчик. Если их нет или адрес не принадлежит ни одному буферу, то запрашивается наличие данных в модуле УУ коммутатора. Если их нет, то запрашиваются данные модуля передачи асинхронных данных. Если и их нет, то передается компенсирующий символ. На приемной стороне по типу символа определяется обрабатывающий блок (буфер виртуального канала,УУ коммутатора, блок асинхронных данных). Если адрес принадлежит буферу асинхронного канала, но тип символа неправильный (служебный), то запись в FIFO не производится.
В случае приема ошибочного символа (приемник не смог восстановить символ из принятого сигнала), происходит замена на служебный символ «ошибка». Далее этот символ так и передается в виртуальном канале. При приеме данных из виртуального канала, для восстановления данных можно запрашивать повторную передачу только этого символа.
Закрытие (удаление) виртуального канала происходит при вычитывании из FIFO пользовательского символа - «сигнал закрыть канал», после его чтения (в сторону передатчика) модуль виртуального канала сбрасывается в неактивное состояние (пока его не инициализирует УУ коммутатора).
Принципы организации асинхронной передачи, функционирования устройства управления, алгоритм создания виртуального канала будут описаны в следующих статьях.
Особенности построения высокоскоростного коммутатора.
Высокоскоростным коммутатором будем считать такой коммутатор, для которого за один такт синхронизации принимается больше одного символа. Простое наращивание размера символа в коммутаторе не слишком эффективно, оно создает массу проблем и не особенно способствует уменьшению размера логики. Поскольку большое число символов за такт в основном приходит от интерфейсов состоящих из большого числа физических каналов, то наиболее оптимальным будет рассматривать такой интерфейс как несколько независимых физических каналов передачи данных.
(Например, коммутатор с 8 входными портами по 8 линий по 100G становится коммутатором с 64 портами.)
Для получения символьной скорости большей чем период тактирования коммутатора, УУ коммутатора разбивает затребованный суммарный поток на несколько равных по скорости (так проще восстанавливать данные) и пишет (читает) данные сразу в несколько модулей виртуальных каналов. Минусом такого алгоритма будет необходимость задействовать все модули для передачи данных при каждой записи или чтении. Для передачи компенсирующего символа тоже обязательно использовать все задействованные модули. Данное требование происходит из невозможности определить на приемной стороне, был ли принятый компенсирующий символ добавлен на передающей стороне или появился в результате отсутствия данных в одном из промежуточных коммутаторов.
Темы для НИР :
1.Устройство синхронного коммутатора достаточно прозрачно и на этом этапе нужно проработать именно структуру, без реализации УУ и блока передачи асинхронных данных. Интерфейс для инициализации модулей виртуальных каналов должен обеспечивать полную инициализацию за один такт.
Комментарии
А отработаны алгоритмы коммутации? В свое время начинал думать, но проблему алгоритмов не сумел решить.
А идея красивая, в целом.
Все продумано, надеюсь что до сильного ИИ не будет ошибок ))
Вот только внедрять придется либо в США либо в Китае, у на только после поджаривания филейной части импортозаместят.
Статья 4 будет описывать алгоритм построения виртуального канала (все крайне примитивно).
С интересом ознакомлюсь и прокомментирую.