Все идеи и алгоритмы, описываемые в данной статье, являются результатом моей независимой и полностью самостоятельной интеллектуальной деятельности. Как автор, разрешаю свободно использовать, изменять, дополнять все идеи и алгоритмы любому человеку или организации в любых типах проектов при обязательном указании моего авторства.
© Балыбердин Андрей Леонидович 2019 Rutel@Mail.ru
Синхронная Символьная Иерархия
Принципы формирования виртуальных каналов
(разделение единого физического канала на множество виртуальных)
Новосибирск, 2022 г.
Введение:
Обязательным атрибутом современной сети, является разделение физических линий связи на много отдельных виртуальных каналов. Каналы могут быть и совсем виртуальными, как в случае с пакетной коммутацией так и прописаны в формате передаваемых конструкций (PDH, SHD и тд). Поскольку плезиохронные каналы появились во времена голосовой телефонии и других потребителей не было, виртуальные каналы имели одинаковую скорость 64КБит\сек. Для современных сетей требуются каналы с различной скоростью и различными свойствами.
В статье «ССИ_Синхронный поток_Эффект проскальзывания (1)» показан принцип формирования базового потока символов, теперь будет описан принцип его разделения на отдельные плезиохронные потоки с произвольной скоростью передачи символов.
Требования :
Сумма скоростей виртуальных каналов не должна быть больше скорости физического канала. Время коммутации не должно быть больше единиц периодов передачи символов в виртуальном канале и стремиться к одному периоду передачи в конкретном виртуальном канале (Чем медленнее виртуальный канал, тем больше времени его данные находятся в FIFO коммутатора)
Ограничение на время коммутации существенно ограничивает варианты построения коммутатора. Самый простой вариант это массив модулей много-портового FIFO (3-5 символов), число портов чтения (записи) равно числу внешних интерфейсов коммутатора. Каждое FIFO соединяет вход коммутатора с выходом, какой вход с каким выходом определяется в момент создания виртуального канала. Число модулей FIFO ограничивает (равно), числу одновременных виртуальных каналов создаваемых коммутатором.
Модули приемника (передатчика) должны выдавать на адресные входы коммутатора номер FIFO к которому происходит обращение. Для примера, зададим точность установки скорости передачи виртуального канала в один символ в секунду при скорости физического канала 100G и размере символа в 100 бит потребуется 1Е9 тайм-слотов. Максимальное число виртуальных каналов ограничивается числом FIFO модулей, для современных техпроцессов это 100К-1М каналов. Формирование последовательности опроса FIFO производится с учетом скорости передачи в каждом виртуальном канале. Необходимо гарантировать что FIFO размером 3-5 символов не переполнится. При этом не снижать КПД использования физического канала больше чем на единицы процентов (допускается использование для пользовательских данных до 95 % пропускной способности физического канала на постоянной основе).
Думаю алгоритмов раскладки достаточно много, лично я нашел два. Первый больше подходит для пояснения принципа раскладки, но сильно неудобен для реализации. Второй сильно оптимальнее для практической реализации.
Мультиплексирование (разделение) канала связи (1)
(Алгоритм симметричен, одинаков для приемника и передатчика)
1. Сортируем создаваемые каналы по убыванию скорости передачи.
2. Для каждого канала создаем счетчик (регулирует скорость передачи) и назначаем FIFO где хранятся передаваемые символы.
3. Каждый такт синхронизации в каждый счетчик прибавляем константу пропорциональную скорости передачи, Константа = V (требуемая) / V (физического потока).
4. Каждый такт проверяем счетчики, в очередности убывания скоростей привязанных к ним каналов, на переполнение (значение больше единицы), пока не найдем первый счетчик содержащий значение больше единицы.
5. Из найденного счетчика вычитаем единицу, а в суммарный поток добавляем один символ из буфера передаваемых символов (создан в связке со счетчиком).
Данный алгоритм проверен на программной модели, максимальное расстояние между соседними символами в пределах виртуального канала составляет 2.3 периода передачи символа в пределах данного виртуального канала.
Мультиплексирование (разделение) канала связи (2)
(Алгоритм симметричен, одинаков для приемника и передатчика)
1. Создаем по одному счетчику для каждого приемника и передатчика физического канала (примерно как в «ССИ_Синхронный поток_Эффект проскальзывания (1)»), с помощью служебных символов синхронизируем их относительно потока символов в данном физическом канале. Для выбранного примера счетчик от 0 до 1М-1.
2. При обращении к коммутатору преобразовываем содержимое счетчика в адрес (номер) FIFO.
Алгоритм преобразования — Счетчик <:> Адрес FIFO:
1. Диапазон значений в 1М, по сути является номерами тайм-слотов в передаваемой периодической структуре. Остается только распределить эти тайм-слоты максимально равномерно и пропорционально скорости каждого виртуального канала.
2. Каждому адресу FIFO соответствует несколько значений счетчика. Ноль если канал не создан и единица если канал имеет скорость один символ в секунду.
3. Представим весь диапазон значений счетчика как некоторое адресное пространство и присвоим каждому каналу непрерывный диапазон значений равный символьной скорости виртуального канала. Выглядит как выделение памяти в современных вычислительных системах.
4. Каждый модуль FIFO откликается на любое значение в пределах этого диапазона, выдавая или записывая символ.
5. Просто подавать счетчик на адресные входы FIFO нельзя, данные будут передаваться непрерывными последовательностями раз в секунду. Для равномерного распределения опросов FIFO нужно «перевернуть» значение счетчика (поменять местами старшие разряды с младшими).
6. FIFO также должно сравнивать этот «перевернутый» счетчик с перевернутым диапазоном значений (или повторно перевернуть адрес).
Второй алгоритм распределения тайм-слотов гораздо эффективнее в реализации чем первый и соответствует всем требованиям ССИ, но не был проверен на программной или аппаратной модели.
Темы для НИР
1. Проверить равномерность получаемых виртуальных потоков.
2. Практически измерить максимальное число символов в FIFO, для разного числа виртуальных каналов и различных вариантов скоростей.
3. Проверить зависимость неравномерности символьной скорости от последовательности (места расположения) виртуальных каналов в пространстве комбинаций счетчика.
4. Проверить работу алгоритма, когда число комбинаций счетчика не равно степени двойки.
Комментарии
дядя, вы дурак?
Сам дурак )))
Какой вопрос такой ответ.
Интересно.. У меня статью приняли в ваковский журнал, но и в голову не придёт ее выкладывать на ресурсе посвящённом политике и экономике.
Зачем вы это здесь изложили?
В нашей стране есть проблема, которая и политическая и экономическая одновременно :
У нас умерли науки посвященные исследованиям в областях телекоммуникаций и вычислительным архитектурам.
За 50 лет все импортозаместилось (заместилось импортом), писать банально некуда.
Для научных журналов нужны рецензенты, а их нет.
Вот я и решил записывать их в свой блог.
Когда напишу все, может кто заинтересуется и реализует и если я не ошибаюсь, то уничтожит большую часть населения планеты.
Шучу конечно, но следует заметить что законы робототехники это просто выдумка писателей .)))
Вот Вам высказывание от декана факультета СибГУТИ :
Письмо и распечатка получены. Могу уверенно ответить, что в открытом доступе о научных школах указанного направления информации нет. Можно попробовать обратиться в компанию Т8, где работают известные специалисты по современным телекоммуникациям из МГУ, МГТУ им. Баумана, ФизТеха. Они ближе всего к разработкам такого типа и их практическому внедрению. Работу по этой тематике рекомендую продолжить. При наличии патентов и публикаций в научных изданиях из списка ВАК и Scopus может потянуть на учёную степень.
Понятно :)
Надеюсь, прорветесь
Ждём ВладиславаЛ. Подходят ли сии алгоритмы для стаи дронов. И есть ли уже работающие аналоги за 25гр. Золота.
О це дiло!
Самая первая статья https://aftershock.news/?q=node/838095, не вызвала неприятия.
Жить наверное все хотят, остальные это последовательность шагов для решения этой задачи.
Зачем изобретать велосипед ? У меня одновременно на компе и торренты качаются и ютуб показывает и сайты открываются, значит всё нормально с потоками цифроданных. Главное правило программиста "работает - не трогай"
Этот "велосипед" в первую очередь предназначен для суперкомпьютеров и коммутаторов верхнего уровня, систем повышенной надежности (космос, авиация, энергетика и тд где требуется практически абсолютная надежность).
По суперкомпьютерам это минимальные задержки при скоростях в сотни террабит и триллионах устанавливаемых соединений в секунду.
Для пользователя плюсом будет никогда не пропадающая и не заикающаяся госовая и видео связь.
По поводу сайтов, незнаю как Вы, а меня раздражает все что открывается за время большее чем "щелчок мыши".
Да и торренты скачивать - как то не очень - Щелкнул кнопкой и все тут )))
Сайты долго открываются потому что html - это сложная система костылей которую наваротили за 30 лет. И браузер должен обрабатывать каждый костыль. Подробно об этом писали на хабре но потом автора забанили и статью его там забанили. Но есть копия тут - https://m.vk.com/@scienceandlive-kto-pohoronit-sovremennyi-veb
Хабр странный сайт: вроде программисты электроники пишут статьи, а модерацию (политику) определяют филологи.
И эти самые филологи стараются минусить всех, кто указывает на проблемы в существующем порядке проблем и предлагает новые решения.
Главная претензия (в комментах) : У Вас не литературный слог, разбиение на абзацы и форматирование.
ГраММАтнАсть это безусловно нужно, но еще в СССР знали что на двух стульях не усидеть и при приеме в технические вузы русский язых учитывался как плюс (5-3 в литературном вузе) или (2 и меньше). Я бы не поступил в НЭТИ если бы учитывали именно оценку (5 математика 5 физика и 3 за сочинение).
Сочинение на тему "Инженеры озоновый слой нашего общества" - на первой странице привел параллели между озоном и инженером (первый защищает от вредных излучений, второй от безграмотности в технических решениях) дальше описал принципы получения озона (там был минимум 6 листов). Допустил примерно 6 ошибок на 6 листов и получил тройку. В этот год поступили только те кто набрал высший бал на всех экзаменах, ну кроме различных "квот".
Не понял сакрального смысла возвращения от коммутации пакетов к коммутации каналов. Да ещё и через... кхм... FIFO. Давно есть протоколы ограничивающие ширину полосы пропускания для каждого "виртуального канала". А так же есть протоколы динамически изменяющие ширину полосы пропускания в зависимости от загрузки в "виртуальных каналах".
Зачем это всё? Какую задачу предполагается решить?
Автор изобрёл велосипед.... лучше изобретать что-то новое
ответил чуть ниже
Первое : Предлагаемая сеть одновременно является и коммутацией каналов и коммутацией пакетов (поверх коммутации каналов). В следующих "записях" я раскрою эту особенность. Чисто синхронные каналы не могут на 100% использовать все пропускную способность, вот для этого и нужен асинхронный трафик.
FIFO : Все синхронные каналы имеют в своем составе фифо - без него они просто не работают, у разных коммутаторов физически разные генераторы и алгоритмы противодействующие эффекту проскальзывания без фифо не работают. В предложенной мной сети FIFO минимально (может быть 3 символа) и практически всегда содержит один символЮ фактически регистр (по задержкам).
IP протоколы изменяющие ширину полосы, всяческие ограничители входящего трафика, низкоскоростные и очень плохо работают при уровнях загрузки физического канала больше 30% и начинают умирать на 50%, при 75% уходят в "штопор".
На всякий случай я не говорю о коммутаторах доступа, тут все пакеты от клиентов отправляются в один выходной канал с шириной практически равной сумме пользовательских (например 16 каналов по 1G и 10G в сторону основной сети).
По поводу, что все хорошо, почитайте про попытки внедрить SDN (software-defined networking), про сложности с которыми решаются тривиальные задачи компьютерной телефонии, передачи видео, резервирования каналов (гарантированный доступ без временных потерь связи - недавно занимался схемотехникой для такой приблуды). И все эти проблемы появляются при необходимости создать стабильный канал с полосой 64кбит в сети с каналами 100-1000 мегабит.
Представьте вы летите на самолете, все системы которого "общаются" по IP сети. Самолет немного тряхнуло на "яме", большинство приборов почувствовало это и поспешило уведомить систему пилотирования. Начнется "шторм", да аппаратура через секунду "прочихается", но этой секунды хватит что бы планер самолета мог получить непоправимые повреждения. Про невозможность гарантировать точное время доставки я и не говорю. Вот именно поэтому и IP до недавнего времени не сертифицировался в авиации космосе.
Если на уровне отдельного пользователя это не сильно чувствуется, тут трафик направлен только по одному машруту и редко достигает даже 10% от пропускной способности, то когда таких пользователей миллионы и направлений десятки и сотни тысяч....
А теперь самое главное, в суперкомпьютере все требования можно возвести в квадрат: каналы заняты до значений близких к 100%, это при необходимости иметь времена доставки в субмикросекундном диапазоне и при практически полном отсутствии потерь.
Производительность и степень распараллеливания вычислений квадратично записит от задержек коммутации.
Современные суперкомпьютерные грид системы это скорее пародия на настоящие суперкомпьютеры, так "вагон" калькуляторов объединенный в медленную сеть.
Показателем задержки сети считаю отношение скорости света (в кабеле) по прямой между приемником и передатчиком к времени доставки сообщения сетью. Для сети ССИ достижимы значения около 0,5.
Для МЦСТ считал примерный "бюджет" - 75 нс для куба со стороной 3 метра и числом процессоров 1000 (правда это совсем простые требования - по ощущения можно уложиться в один метр, но там нужны знания параметров конкретной системы охлаждения).
Косвенным показателем качества служит кабельная инфраструктура, когда для связи с "соседним процессором" перестанут прокладывать кабель к вынесенному не понять куда коммутатору и назад вот тогда действительно использованы все возможности сети.
Отличить суперкомпьютер от "сети калькуляторов" можно по плотности упаковки, а она ограничивается тепловыделением. В качестве критерия оценки компактности, а значит и задержек на коммутацию можно использовать уровень мощности на единицу объема суперкомпьютера.
Вас очень сложно понять. Вы, вроде бы пытаетесь обобщить, но валите всё в кучу. Например, IP-телефонию и суперкомпьютеры; аппаратную реализацию и программную.
Во-первых, на IP свет клином не сошёлся. Предлагаю начать с модели OSI или, если она не устраивает, нарисовать свою. А её уже наполнять протоколами, алгоритмами, реализациями...
Во-вторых, необходимость использования FIFO, как минимум, не очевидна. В синхронных сетях с мультиплексированием используется именно именно регистр. А пополняется он из очереди передатчика. Объединение в одном устройстве нескольких функций (коммутации, мультиплексирования, да ещё и хранения) считаю непродуктивным.
В-третьих, ваш пример с приборами в самолёте это не более чем ошибка проектирования - незачем каждому прибору оповещать о тряске. Как, мне кажется этот пример отголосок широковещательного шторма в сетях IP. Но и против подобных штормов есть приёмы.
А вообще конкретная реализация сети зависит от очень многого. И начинать нужно с топологии. Если, конечно, вы не впали в иллюзию, что каждого нужно соединить с каждым; исключительно по выделенному каналу; и каждый должен быть в курсе всего. В таком случае не хватит никакой пропускной способности.
"Вас очень сложно понять."
Я предлагаю универсальное решение для всех задач имеющик коммуникационную составляющую
"из очереди передатчика"
это же и есть FIFO, но тут самое главное это гарантия того что в FIFO небудет находиться более 3х символов (мой случай).
Это гарантирует отсутствие потерь из-за переполнения, минимальное время нахождения данных в коммутаторе , ну и экономия транзисторов.
"В-третьих, ваш пример с приборами в самолёте"
Каждый прибор сообщает о чем то своем, предельных усилиях на приводах, не штатных изгибах, запредельных ускорениях и тд.
Зачем бороться с врожденной проблемой, давайте применим технологию не имеющую таких проблем ?
Для такой сети, никто никак не влияет на соседей и соответственно число состояний системы сыщественно падает.
Для IP сетей мы банально упремся в информационный взрыв - те учесть все варианты из-за взаимного влияния банально нельзя.
"вы не впали в иллюзию"
Мне больше нравится соединениея с ближайними соседями, тогда можно построить много альтернативных путей без использования примитивного троирования проводов (сейчас именно так - провода это еще легко, а вот гидравлику троировать).
Для примера "Какую задачу решить" :
1. Увеличить в 3-4 раза пропускную способность сети без прокладки дополнительных кабельных линий или перехода на более сложные и высокоскоростные устройства.
2. Политическое : Прозрачно, пошагово, без отключения даже на секунду заменить импортную телекоммуникационную сеть на полностью нашу, да еще и лучшую по потребительским качествам.
Вроде нормальные задачи для раздела телекоммуникаций ?
Политические задачи оставим политике. К тому же, от одного хотения всего хорошего они не решаются.
Ну а так-то, к коммутации пакетов и перешли ради увеличения пропускной способности сетей. И мне непонятно откуда возьмётся увеличение при обратном переходе. Да ещё в 3-4 раза. От накладных расходов никуда не деться, хотя их можно уменьшить, но они далеко не 66-75%. У вас же, в погоне за синхронностью, я пока вижу только стремление эти накладные расходы увеличить.
"Ну а так-то, к коммутации пакетов и перешли ради увеличения пропускной способности сетей"
Ошибаетесь, у синхронных сетей есть проблема невозможности быстро изменять пропускную способность канала (быстро создавать и удалять виртуальные каналы). Соответственно выделенный канал не используется здесь и сейчас (да и каналов немного), но его ресурс нельзя отдать другому - это плохо для загрузки канала. В ССИ канал создается сразу когда есть свободный ресурс и есть потребность, примерно как в пакетной сети - начал передавать, канал монопольно твой пока не закончишь передавать пакет. В случае ССИ начал создавать виртуальный канал - вся неиспользуемая производительность (в том числе закрепленная за другими каналами, но не используемая в данный момент) твой пока не передал запрос на создание канала (заголовок пакета). После отправки запроса - из постоянно не распределенной производительности под новый канал выделяется запрошенное.
В каждый момент все что не используется, будет использовано для реализации негарантированных по скорости асинхронных передач данных или
для каналов имеющих гарантированный минимум скорости, но допускающих ее временное и очень локальное повышение.
по факту всегда используется все 100% скорости передачи символов (если есть потребители)
Можно сказать ССИ пакетная сеть для заголовков пакета и канальная для тела пакета неограниченного размера
Нет, не ошибаюсь. Коммутация каналов реализуется путём резервирования полосы пропускания. Соответственно, когда данные не передаются канал простаивает. Из-за этого и перешли на коммутацию пакетов.
Вы, похоже, хотите одного из двух. Либо (1) сохраняя синхронность, играть шириной полосы пропускания - передавать полосу простаивающего канала другим. Это если в идеале. Но сразу вижу увеличение накладных расходов, на такие игры. И, раз изменение потока данных непредсказуемо, обязательно будут потери. Либо (2) для уменьшения накладных расходов накапливать данные в большой пакет, передавая его только после накопления. Но тогда ни о какой синхронности и коммутации каналов речи уже не идёт.
Кстати, в IP сетях уже есть "гарантированный минимум скорости" и приоритизация трафика.
"Но сразу вижу увеличение накладименно неиспользуемойных расходов, на такие игры"
25% от не использованной полосы (именно не используемой).
Если в момент запроса очередного символа для передачи он отсутствует в FIFO коммутатора его подменит символ из канала допускающего асинхронную передачу.
Если интересно, прочитайте два последних файла и ответьте вы согласны:
1. Утверждаю, что алгоритм описываемый в "ССИ_Синхронный поток_Эффект проскальзывания (1)" позволит проходить любое число коммутаторов без риска потерь от переполнения.
2. Утверждаю, что алгоритм описываемый в "ССИ_Синхронный поток_Эффект проскальзывания (1)" гарантирует минимально возможное число слов в промежуточных FIFO.
3. Утверждаю, алгоритм описываемый в "ССИ_Синхронный поток_Фрагментация потока (2)" позволит разделять один физический канал на любое число подканалов с любой скоростью, так что бы сумма скоростей не превышала скорость исходного канала и при этом максимальное число одновременно сохраняемых в промежуточных FIFO символов не превысит трех.
Однако, надо целиком осмыслить и без пива внутри, а то как то не понял