[Децентрализованные сети, Сетевые технологии] Синхронный интернет — Синхронная символьная иерархия
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Многие считают, что современные технологии цифровой связи являются наиболее оптимальными, победившими в естественном отборе своих «оппонентов», но мало кто понимает что сегодняшнее состояние дел во многом случайно, можно даже сказать: «так кости выпали».
Предлагаю «помечтать», а что «было бы если бы» изобретатели цифровых систем связи знали о роли данного вида связи в будущем и подошли к своей работе «более ответственно», сразу стараясь изобрести максимально универсальный протокол цифровой связи.
Прошу, у кого есть свои мысли, записать их и после прочтения статьи отразить в комментариях.
Итак, пробуем еще раз «бросить кости»:
Внимание:
Все идеи и алгоритмы, описываемые в данной статье, являются результатом моей независимой и полностью самостоятельной интеллектуальной деятельности. Как автор, разрешаю свободно использовать, изменять, дополнять все идеи и алгоритмы любому человеку или организации в любых типах проектов при обязательном указании моего авторства (Балыбердин Андрей Леонидович).
Современные технологии с большой долей вероятности не самыми эффективные (из всех теоретически возможных), но при попытке найти другие варианты большинство приходит к модификациям уже существующих или вообще не могут дать ответ.
Думаю, что такое положение дел обусловлено строением мозга и способом человеческого мышления. Если на картинке со случайными линиями что то увидеть, то при следующем взгляде на картинку этот образ будет найден практически сразу. За счет инерции мышления с каждым следующим разом рассмотреть другой образ будет все труднее и труднее. Далее в дело вступает технический прогресс, а он очень похож на железнодорожный транспорт. Однажды свернув, практически невозможно повторить выбор, легче реализовать «костыль» решающий возникшую проблему.
И так начнем создавать простую в реализации, гибкую и универсальную в использовании телекоммуникационную парадигму. Снизу она должна быть совместима со всеми существующими и теоретически возможными каналами передачи цифровых данных. Сверху наиболее полно удовлетворять запросы всех теоретически возможных потребителей, при условии что эти запросы поддержаны «снизу». Иными словами сама система связи не должна быть «бутылочным горлышком». Сразу отмечу, что «совершенство» недостижимо, но это не отменяет необходимости к нему стремиться.
Идеальная система связи описывается достаточно просто:
1. Возможность в любой момент мгновенно установить соединение любого абонента с любым абонентом.
2. Мгновенная и безошибочная доставка сообщения от одного абонента к другому.
3. Скорость канала связи в каждый момент времени должна точно соответствовать возможностям источника предоставить, а приемника принять данные.
Если проектировать систему снизу вверх, то первый вопрос будет:
Какой тип канала связи необходимо создать.
Тут все просто: строго последовательная передача данных с постоянной и достаточной для потребителя скоростью. Все остальные типы каналов достаточно просто получить из этого типа.
Следующий (второй ) вопрос:
Интерфейс системы к физическим каналам связи и пользователям системы.
На заре становления телекоммуникационных систем в основном использовался битовый интерфейс. В настоящее время в качестве носителя информации выбирается «символ», он в отличии от битового интерфейса переносит больше одного бита данных и может иметь дополнительное свойство «тип».
Если рассматривать типы передаваемой информации, далее будем пользоваться понятием символ как носитель информации, то передаваемые символы можно разделить на четыре типа (группы):
1. Пользовательские данные.
2. Пользовательские управляющие символы.
3. Служебные данные.
4. Служебные управляющие символы.
Такой набор вариантов символов достаточно универсален при построении различных информационных конструкций. Служебные символы предназначаются для построения обращений к системе связи. Пользовательские символы для общения между пользователями. Наличие отдельных служебных символов несколько избыточно, но оправданно необходимостью интерфейса управления практически во всех коммуникационных системах.
Минимальным объемом кодируемой символом информации является один бит (связь цифровая). В изначальной фиксации информационной емкости различных типов символов нет необходимости, даже вредно. Достаточно зафиксировать параметры связи с использованием минимального набора из 4 типов символов, а в остальном приемник и передатчик «договариваются» при установлении непосредственного соединения. С физической (электронной или программной ) точки зрения в момент включения интерфейс к телекоммуникационной системе выглядит как:
1. Сигнал наличия символа (1 бит)
2. Тип символа (2 бита)
3. Передаваемые данные (1 бит, а далее в соответствии с информационной емкостью)
4. Сигнал синхронизации (для синхронной электроники).
В современных системах связи такого единства не предусмотрено, хотя для компьютерной связи аналогом можно считать IP пакет и правила его формирования.
Третьим вопросом будет:
Распределение физического канала между пользователями.
Для реальных систем связи с достаточно большим числом абонентов невыгодно строить соединения по схеме каждый с каждым и приходится реализовывать схему связи с использованием посредников. Посредники в процессе исполнения функции ретрансляции вынуждены разделять соединяющие их каналы между «своими» и «чужими» данными.
В момент рождения современных коммуникационных систем наиболее распространенными были следующие способы совместного использования канала связи:
1. Произвольный доступ (радиосвязь, селекторная связь).
2. Пакетная коммутация (телеграф).
3. Временное выделение фиксированной пропускной способности (телефония).
Ни один из указанных способов в значимой степени не удовлетворяет требованиям идеальной системы связи.
Лучше всего подходит «временное выделение пропускной способности», но есть проблемы с гибкостью по параметру скорости предоставляемого канала, времени создания канала и эффективности использования ресурсов физического канала.
Пакетная коммутация эффективна по утилизации ресурса, но есть проблемы с постоянством скорости, последовательности канала и потерям данных. Произвольный доступ и вообще возможен только для малого числа абонентов, при превышении которого (или интенсивности обмена) эффективность падает до неудовлетворительных величин.
Для максимального соответствия идеальной системе связи пришлось «переизобрести» технологию основанную на временном выделении части пропускной пропускной способности физического канала. Нужно было решить проблему с гибкостью по скорости создаваемого канала передачи данных, быстрым его созданием и удалением.
Мультиплексирование (разделение) канала связи.
Для иллюстрации нового способа разделения физического канала на составляющие, разделим единый канал на части.
Поток R в 1/3, поток G в ¼ и поток B в 1/5, от пропускной способности исходного физического канала. Оставшуюся пропускную способность можно использовать для других нужд.
На картинке показано как исходные потоки раскладываются в суммарный поток. Оранжевый — поток R, Зеленый поток G, Синий поток B и Черный свободная пропускная способность. (Символы суммарного потока забираются последовательно с левой стороны)
(Алгоритм симметричен, одинаков для приемника и передатчика)
Общий принцип разделения достаточно прозрачен:
1. Сортируем создаваемые каналы по убыванию скорости передачи.
2. Для каждого канала создаем счетчик (регулирует скорость передачи) и буфер передаваемых символов.
3. Каждый такт символьной синхронизации в каждый счетчик прибавляем константу пропорциональную скорости передачи, константа = V (требуемая) / V (физического потока).
4. Каждый такт проверяем счетчики, в очередности убывания скоростей привязанных к ним каналов, на переполнение (значение больше единицы), пока не найдем первый счетчик содержащий значение больше единицы.
5. Из найденного счетчика вычитаем единицу, а в суммарный поток добавляем один символ из буфера передаваемых символов (создан в связке со счетчиком).
Более подробно алгоритма мультиплексирования будет описан в конце текста статьи, рекомендуется для чтения специалистам в коммуникационных технологиях.
Видим, что если создаваемые потоки имеют одинаковую скорость, то получается обычный алгоритм PDH (Е1 и тд) из цифрой телефонной связи. Если скорость потока равна 100% пропускной способности канала, получится пакетная коммутация.
После приема данные необходимо отправить в другой канал и этим занимается коммутатор. Построение коммутатора для синхронного (равномерного) потока, является тривиальной задачей. Емкость такого коммутатора будет зависеть только от объема «транзисторов» (для современных микросхем в районе миллиона одновременных соединений). Частота переключения транзисторов будет зависеть только от скорости поступления символов, а она зависит от информационной емкости символа. Возможность изменения информационной емкости символов дает возможность регулировать значение тактовой частоты коммутатора, а параллельность обработки каждого из физических каналов делает ее не зависимой от числа физических каналов.
Данный тип мультиплексирования и коммутации можно назвать синхронной символьной иерархией.
И последний вопрос:
Управление коммуникационной средой.
Для современной компьютерной связи наиболее распространенным является набор протоколов TCP/IP. Данный протокол ориентирован на пакетную коммутацию, для последовательного канала не является оптимальным. Учитывая первоначальное назначение новой системы связи (коммуникационная основа dataflow процессора — будет описан в следующих статьях), наиболее оптимальным будет гибкий и универсальный язык ориентированный на последовательные каналы связи или расширение уже существующего языка программирования. При создании языка сетевого управления следует руководствоваться парадигмой, в которой вычислительная система это объединение различных устройств в сети цифровой связи.
Зачем нужен новый тип сети?
Самое первое это универсальность и простота алгоритмов. Простота устройства высокоскоростных коммутаторов, нет фундаментальных ограничений ни на число каналов ни на их скорость, позволит существенно улучшить характеристики многоядерных вычислительных систем (связь между ядрами и модулями).
Где требуется существенное увеличение скорости и числа каналов?
И тут все просто — нужно решить существующую проблему стягивания вычислительной системы в один кристалл, существенно поднять скорость меж-кристального взаимодействия. В настоящее время в компьютерной сети взаимодействуют отдельные, самостоятельные вычислительные системы (самостоятельные компьютеры). Новый тип сети должен существенно подтолкнуть (ускорить) начавшийся процесс «миграции» понятия «вычислительная система» от физической сущности (ящик на столе) к логическому объединению многих вычислителей (ядер) в распределенную вычислительную систему. При создании языка сетевого взаимодействия следует руководствоваться парадигмой, в которой вычислительная система это объединение различных устройств в сети цифровой связи.
В настоящее время происходит процесс выбора новой вычислительной парадигмы. Старая (фон Нейман) исчерпала свой потенциал и стагнирует, а новая еще не выделилась из большого числа существующих «идей». Предлагаю описанную коммуникационную парадигму доработать и использовать как основу будущей единой информационной среды.
И еще, необходимо придумать название новой сети, а то прилипнет «SkyNet» и характер у AI будет вредным.
Алгоритм разделения (мультиплексирования) физического канала канала на отдельные виртуальные каналы:
1. Передача данных осуществляется квантами — символами. Применение символов необходимо для обеспечения линейного кодирования, нормальной работы системы синхронизации, преобразования последовательных данных в информационные конструкции, увеличение помехоустойчивости канала и тд. Используемые символы разделены на четыре группы: данные пользователя, управляющие символы пользователя, служебные данные и служебные управляющие символы. Разделение набора символов данных на обычные и служебные облегчает разделение пользовательского трафика и трафика с запросами к системе. Так же разделение данных на данные виртуальных каналов и данные служебного канала по разным наборам символов позволяет сильно поднять КПД использования первичного канала (без риска перегрузки канала). Размер символа (битовая информационная емкость) не фиксирована и потенциально может быть любой. Конкретный размер символа выбирается для каждого соединения индивидуально.
2. Передаваемые данные находятся в буфере, который выполняет функцию сглаживания отклонений от равномерной (синхронной) передачи. Служит для вставки и удаления символов «пусто» при приеме или попытке чтения из пустого буфера, также преобразует размеры символов приемника в размер символов передатчика (они могут быть различными). Число физических буферов ограничивает число виртуальных каналов проходящих через коммутатор одновременно.
3. Виртуальные каналы добавляются в суммарный поток в порядке понижения затребованной скорости передачи. При такой последовательности сборки суммарного канала, получается минимальный размер промежуточных буферов в коммутаторах. Каждому виртуальному каналу соответствует «таймер», к которому каждый такт символьной синхронизации добавляется значение равное отношению скорости виртуального канала к скорости суммарного физического. Как только значение таймера становится больше единицы и все таймеры каналов с большей скоростью имеют значение меньше единицы, необходимо переместить символ из буфера этого виртуального канала в суммарный канал (или наоборот для приемника) и вычесть единицу из значения «таймера». Если все «таймеры» виртуальных каналов содержат значение меньше единицы, то в канал помещается служебный символ «пусто». Алгоритм проверен на программной модели, максимальное расстояние по времени между принимаемыми данными виртуального канала не более 2.5 периода передачи виртуального канала. Для предотвращения переполнения и потерь данных минимальный требуемый буфер должен иметь размер 3 символа.
4. Символ «пусто» предназначен, для устранения зависимости структуры суммарного потока от неравномерностей предоставления данных конкретными передатчиками и устранения влияния неравномерности скорости передачи физического канала. При создании канала связи необходимо запрашивать немного большую скорость, примерно на 0.01% больше чем реально требуется, для реальных систем связи. Излишняя производительность необходима для коррекции ошибки скорости физического канала (неточность задающего генератора).
5. После создания (все виртуальные каналы добавлены) суммарного потока передатчик может заменить все встреченные символы «пусто» на символы из набора служебных данных. На приемной стороне происходит обратная замена. Такая замена позволяет эффективнее использовать пропускную способность физического канала и максимально оперативно реагировать на запросы к сети. Физический канал максимально эффективно используется для передачи данных, без риска переполнения и потерь.
6. Если требуется создать виртуальный канал для передачи заранее известного и малого числа символов, то можно и не создавать виртуальный канал (манипуляции со списком и таймерами достаточно затратны). В таком случае необходимо собрать все символы в единый пакет (используя только набор служебных символов) и передавать такие пакеты с использованием не занятой (служебной) части физического канала. Главным требованием к такому каналу будет размер, не превышающий размера буфера в промежуточных коммутаторах. При проектировании коммутатора это требование необходимо учесть или предоставить возможность соединять несколько соседних буферов в один.
7. Служебные символы (добавляемые передатчиком), образуют канал с запросами к коммуникационной системе. Данный канал существует всегда и именно из части его пропускной способности, происходит выделение пропускной способности создаваемого виртуального канала. В момент приема служебные символы отправляются в отдельный служебный поток, а на их место помещаются символы «пусто». Часть символов служебного потока обрабатывается приемником сразу (сервисы добавления и удаления виртуальных каналов и тд), остальные помещаются в буфер и обрабатываются управляющей коммутатором вычислительной системой в асинхронном режиме.
8. Приемник производит «раскладку» принимаемых символов по индивидуальным буферам виртуальных каналов с использованием такого же как и передатчик алгоритма. Раскладка произойдет правильно только в том случае если приемник и передатчик содержат одинаковый список каналов и значения «таймеров» на приемной и передающей сторонах синхронизированы относительно суммарной последовательности. Если после раскладки в суммарном канале остаются любые символы кроме «пусто», то это означает рассинхронизацию или таймеров или списка каналов на приемной и передающей стороне.
В процессе передачи, суммарный поток необходимо обязательно разбирать в коммутаторах не только по причине перекомпоновки виртуальных каналов между физическими, но и из-за потенциальной необходимости добавить или удалить символы «пусто», что возможно только в момент чтения или записи буфера виртуального канала. Можно добавить возможность создания не разбираемого в промежуточных коммутаторах суммарного потока «тоннеля». Такой поток не будет разбираться в промежуточных коммутаторах на составляющие и обрабатываться как пользовательский виртуальный канал. Создание виртуального «тоннеля» возможно если создать суммарный поток используя альтернативные служебные символы (алгоритм остается тем же самым, для каждого уровня тоннеля требуется свой набор служебных символов). На приемной стороне потребуется произвести дополнительную процедуру разборки такого канала на составляющие (число таких «разборов» можно считать уровнем «тоннеля»). Создавать «тоннели» выгодно по причине уменьшения числа виртуальных каналов и соответственно требуемых буферов в промежуточных коммутаторах или в местах где происходит коммутация очень больших информационных потоков (да и задержка коммутации пропорциональная скорости виртуального канала будет меньше).
Алгоритм создания виртуального канала.
1. В начальный момент времени между передатчиком и приемником существует только служебный поток (ранее созданные виртуальные каналы не считаем). В передатчике есть буфер в котором накапливаются данные необходимые для создания нового виртуального канала.
2. Когда в буфере появится объем данных достаточный для того что бы создать виртуальный канал (данные о направлении и требуемой скорости и тд), необходимо сформировать и отправить (используя только служебные символы) в служебный поток нужного физического канала пакет данных с запросом на создание нового виртуального канала. В момент передачи, а потом и приема (на другой стороне физического канала) пакета, его содержимое интерпретируется и сначала создается новый сортированный список виртуальных каналов, а в момент появления символа активирующего создание нового виртуального канала загружает новый список каналов (фазы уже существующих каналов сохраняются) в мультиплексор (демультиплексор) суммарного канала. Таким образом достигается постоянная синхронность «таймеров» и списка каналов на принимающей и передающей стороне.
3. После создания нового канала, начинается выборка данных из буфера и вставка в соответствующие слоты суммарного физического канала. Создание нового канала происходит без предварительного уведомления приемника, основываясь только на свободной пропускной способности локального физического канала.
4. Для закрытия виртуального канала нет необходимости пересылать пакет используя служебный канал, достаточно в передаваемые данные удаляемого канала поместить служебный символ «удалить канал». Процедура удаления виртуального канала аналогична процедуре создания, инициируется служебным символом «закрыть канал», считанным из буфера данных. На приемной стороне будет получено уведомление о закрытии канала в виде символа «закрыть канал» помещаемого в буфер виртуального канала.
5. Для автоматического удаления (очистки), предотвращения утечек производительности физического канала необходимо встроить в аппаратуру буферов виртуальных каналов, счетчик числа переданных символов (любых) и по достижении некоторого значения (timeout) автоматически передать символ «закрыть канал». Для продления времени жизни виртуального канала можно ввести символ «сбросить счетчик», добавляемый в данные.
6. Если в процессе создания виртуального канала выясняется что он должен коммутироваться на физический канал с дефицитом свободной пропускной способности, скорости служебного канала не хватает для создания нового виртуального канала или нет свободных буферов или другой причиной, то пакет с запросом должен быть уничтожен. Правильнее сказать, перенаправлен на модуль заглушки, который примет все символы.
7. Отправка данных «в никуда» в целом не удовлетворяет никого, а проверка доставки данных путем ожидания ответного сообщения очень «неприятна» из-за отсутствия гарантии ответа уже и от приемника. Для каналов с малым физическим расстоянием передачи (в метрах), выгоднее сразу создавать «кольцевой» канал и ожидать заранее известное время (постоянство и предсказуемость этого времени гарантирует алгоритм мультиплексирования).
Алгоритм работы коммутатора
1. Создание канала можно разбить на два этапа: администрирование (поиск маршрута, назначение скорости, разрешение доступа и тд) и непосредственное создание виртуального канала (в момент необходимости передачи данных). Первый этап выполняется сравнительно редко (сеть относительно статична) и это возможно сделать заранее на этапе запуска приложения. Второй этап требуется производить максимально быстро, именно этот этап определяет производительность сети передачи данных и производительность всей распределенной вычислительной системы.
2. Клиент подключается к сети через устройство, аналогичное обычному коммутатору, отличительной особенностью которого является возможность доступа к буферам данных аппаратурой самой вычислительной системы и их больший объем (ну или к памяти самой вычислительной системы). Как только принимаемые данные создаваемого виртуального канала записываются в буфер коммутатора связанного с вычислительной системой, включается механизм (аналогичный прерыванию в обычной вычислительной системе), определяющий тип вызываемой «службы» и для обслуживание данного буфера подключается соответствующее ПО. Вычислительная система представляет собой большое число различных исполнительных модулей, объединяемых сетью связи. Сеть связи может заменить собой все локальные шины и интерфейсы от доступа в память до подключения клавиатуры
3. Маршрутизация в существующих сетях с пакетной коммутацией осуществляется на основе адреса в заголовке пакета, таблиц маршрутов и другими правилами в промежуточных маршрутизаторах. Такой подход хорошо работает для относительно небольшого числа возможных вариантов маршрута и возможности буферизации принимаемых данных отдельного пакета, требуется относительно много времени для определения номера порта, в который необходимо направить пакет. Для высокоскоростных систем с малым временем существования виртуального канала, не хватит скорости доступа к памяти таблиц коммутации. Предлагаю сразу прописывать маршрут в запросе, каждый коммутатор после создания канала убирает часть информации о маршруте. Размер адресной информации не будет слишком большим, число промежуточных коммутаторов относительно небольшое и если на каждый коммутатор выделить 8 бит (номер физического порта или тоннеля), то аналог адреса IP6 позволит строить маршрут из 16 коммутаторов, а это сопоставимо с типичным маршрутом в реальной сети. Для предлагаемого способа таблица коммутации превращается в номер буфера виртуального канала и может храниться прямо в мультиплексоре (де-мультиплексоре).
4. Построение маршрута, как последовательности каналов, через которые должен быть построен виртуальный канал можно производить через высокоуровневое ПО маршрутизатора. Для построения цепочек физических каналов можно использовать аналог обычных поисковых систем или DNS из современных сетей, задаем параметры пункта назначения (любой набор параметров: IP адрес тоже обычный параметр) и получаем результатом набор цепочек с альтернативными маршрутами. Относительная адресация обладает повышенной защитой от несанкционированного доступа, есть полный контроль над маршрутом. Для работы сети, нет необходимости в обязательном наличии (работе) высокоуровневых компонент, маршрут может быть задан заранее (для сетей с постоянной системой связи, как пример разводка на печатной плате — соединения не изменяются).
5. Непосредственное управление трафиком, выделение (планирование) полосы пропускания и др невозможно из-за большой скорости создания канала и потенциально большого размера сети. Для балансирования загрузки каналов необходимо использовать опосредованные методы, такие как планирование различных маршрутов, назначение скоростей передачи с учетом накапливаемой статистики использования виртуального канала. Скорости виртуальных каналов могут изменяться во времени в зависимости от различных факторов, например зависеть от исполняемого сейчас кода. При перегрузках физического канала не происходит отбрасывания данных уже существующих виртуальных каналов, невозможно только создать новый канал. Если учитывать характер трафика (преимущественно короткие сообщения), наличие резервных маршрутов и очень быструю процедуру создания (удаления) виртуального канала, то отказ в создании канала не приведет к катастрофическому падению производительности, будет просто небольшое проседание в скорости вычислений. При накоплении отрицательной статистики (именно статистики, а не реакция на отдельное событие) управляющее ПО коммутаторов отслеживает частоту ошибок соединения и выполняет планирование параметров каналов с учетом этих данных. С большой вероятностью перегрузка сама прекратится за время в сотни наносекунд, а ПО маршрутизатора должно заниматься вопросами именно стратегического планирования. К такому планированию можно отнести возможность редактирования уже созданных маршрутов (данные хранятся в мультиплексоре), иначе невозможно гарантированно перестроить маршрутную сеть (когда еще ПО запросит пересоздание маршрута).
Сеть на основе синхронной символьной коммутация может коренным образом изменить всю информационную среду.
Вычислительные системы окончательно превратятся из персонального «калькулятора», чем они сейчас в основном и являются, в единое информационное измерение (пространство) нашего мира. Компьютер пользователя станет просто устройством доступа в это мир и возможно устройством для хранения и обработки конфиденциальной информации. Существенным образом изменится роль сетевого оборудования в вычислительной архитектуре. Сейчас в основном сеть является способом связать отдельные вычислительные машины (каждая из них обладает собственной ОС) и исполняемые на них приложения. В будущем понятия отдельной вычислительной машины (как физического объекта) не будет, вычислительная система станет полностью виртуальной, она будет «размазана» по различным аппаратным ресурсам сети. Вопрос администрирования (управления ресурсами параметрами доступа вычислительной системы) полностью перейдет в плоскость управления сетью, соединяющей отдельные исполнительные модули.
===========
Источник:
habr.com
===========
Похожие новости:
- [Сетевое оборудование, Сетевые технологии, Системное администрирование] Паук для паутины или центральный узел распределенной сети
- [IPv6, Сетевые технологии] Открыт прием заявок на соискание грантов от RIPE NCC
- [Браузеры, Видеоконференцсвязь, Расширения для браузеров, Сетевые технологии] Серверный WebRTC в 2020 году — обзор возможностей
- [Solidity, Децентрализованные сети, Криптовалюты] Разбираемся с форматами токенов на Ethereum
- [Сетевые технологии, Сотовая связь] Индия, Jio и четыре Интернета (перевод)
- [Сетевое оборудование, Сетевые технологии] Huawei CloudFabric 2.0: какими должны быть сетевые решения для ЦОДов в умном цифровом банкинге
- [Информационная безопасность, Сетевое оборудование, Сетевые технологии, Системное администрирование] 3. NGFW для малого бизнеса. Беспроводная передача данных: WiFi и LTE
- [Open source, Децентрализованные сети, Информационная безопасность, Криптография, Сетевые технологии] Почему я использую Matrix вместо Telegram
- [Распределённые системы, Сетевые технологии, Тестирование IT-систем] RIPE Atlas
- [Информационная безопасность, Сетевые технологии] Концепция Network 2030: как изменится интернет через 10 лет
Теги для поиска: #_detsentralizovannye_seti (Децентрализованные сети), #_setevye_tehnologii (Сетевые технологии), #_sinhronnyj_internet (Синхронный интернет), #_sinhronnaja_simvolnaja_ierarhija (Синхронная символьная иерархия), #_vysokoskorostnaja_kompjuternaja_set (Высокоскоростная компьютерная сеть), #_detsentralizovannye_seti (
Децентрализованные сети
), #_setevye_tehnologii (
Сетевые технологии
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 01:19
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Многие считают, что современные технологии цифровой связи являются наиболее оптимальными, победившими в естественном отборе своих «оппонентов», но мало кто понимает что сегодняшнее состояние дел во многом случайно, можно даже сказать: «так кости выпали». Предлагаю «помечтать», а что «было бы если бы» изобретатели цифровых систем связи знали о роли данного вида связи в будущем и подошли к своей работе «более ответственно», сразу стараясь изобрести максимально универсальный протокол цифровой связи. Прошу, у кого есть свои мысли, записать их и после прочтения статьи отразить в комментариях. Итак, пробуем еще раз «бросить кости»: Внимание: Все идеи и алгоритмы, описываемые в данной статье, являются результатом моей независимой и полностью самостоятельной интеллектуальной деятельности. Как автор, разрешаю свободно использовать, изменять, дополнять все идеи и алгоритмы любому человеку или организации в любых типах проектов при обязательном указании моего авторства (Балыбердин Андрей Леонидович). Современные технологии с большой долей вероятности не самыми эффективные (из всех теоретически возможных), но при попытке найти другие варианты большинство приходит к модификациям уже существующих или вообще не могут дать ответ. Думаю, что такое положение дел обусловлено строением мозга и способом человеческого мышления. Если на картинке со случайными линиями что то увидеть, то при следующем взгляде на картинку этот образ будет найден практически сразу. За счет инерции мышления с каждым следующим разом рассмотреть другой образ будет все труднее и труднее. Далее в дело вступает технический прогресс, а он очень похож на железнодорожный транспорт. Однажды свернув, практически невозможно повторить выбор, легче реализовать «костыль» решающий возникшую проблему. И так начнем создавать простую в реализации, гибкую и универсальную в использовании телекоммуникационную парадигму. Снизу она должна быть совместима со всеми существующими и теоретически возможными каналами передачи цифровых данных. Сверху наиболее полно удовлетворять запросы всех теоретически возможных потребителей, при условии что эти запросы поддержаны «снизу». Иными словами сама система связи не должна быть «бутылочным горлышком». Сразу отмечу, что «совершенство» недостижимо, но это не отменяет необходимости к нему стремиться. Идеальная система связи описывается достаточно просто: 1. Возможность в любой момент мгновенно установить соединение любого абонента с любым абонентом. 2. Мгновенная и безошибочная доставка сообщения от одного абонента к другому. 3. Скорость канала связи в каждый момент времени должна точно соответствовать возможностям источника предоставить, а приемника принять данные. Если проектировать систему снизу вверх, то первый вопрос будет: Какой тип канала связи необходимо создать. Тут все просто: строго последовательная передача данных с постоянной и достаточной для потребителя скоростью. Все остальные типы каналов достаточно просто получить из этого типа. Следующий (второй ) вопрос: Интерфейс системы к физическим каналам связи и пользователям системы. На заре становления телекоммуникационных систем в основном использовался битовый интерфейс. В настоящее время в качестве носителя информации выбирается «символ», он в отличии от битового интерфейса переносит больше одного бита данных и может иметь дополнительное свойство «тип». Если рассматривать типы передаваемой информации, далее будем пользоваться понятием символ как носитель информации, то передаваемые символы можно разделить на четыре типа (группы): 1. Пользовательские данные. 2. Пользовательские управляющие символы. 3. Служебные данные. 4. Служебные управляющие символы. Такой набор вариантов символов достаточно универсален при построении различных информационных конструкций. Служебные символы предназначаются для построения обращений к системе связи. Пользовательские символы для общения между пользователями. Наличие отдельных служебных символов несколько избыточно, но оправданно необходимостью интерфейса управления практически во всех коммуникационных системах. Минимальным объемом кодируемой символом информации является один бит (связь цифровая). В изначальной фиксации информационной емкости различных типов символов нет необходимости, даже вредно. Достаточно зафиксировать параметры связи с использованием минимального набора из 4 типов символов, а в остальном приемник и передатчик «договариваются» при установлении непосредственного соединения. С физической (электронной или программной ) точки зрения в момент включения интерфейс к телекоммуникационной системе выглядит как: 1. Сигнал наличия символа (1 бит) 2. Тип символа (2 бита) 3. Передаваемые данные (1 бит, а далее в соответствии с информационной емкостью) 4. Сигнал синхронизации (для синхронной электроники). В современных системах связи такого единства не предусмотрено, хотя для компьютерной связи аналогом можно считать IP пакет и правила его формирования. Третьим вопросом будет: Распределение физического канала между пользователями. Для реальных систем связи с достаточно большим числом абонентов невыгодно строить соединения по схеме каждый с каждым и приходится реализовывать схему связи с использованием посредников. Посредники в процессе исполнения функции ретрансляции вынуждены разделять соединяющие их каналы между «своими» и «чужими» данными. В момент рождения современных коммуникационных систем наиболее распространенными были следующие способы совместного использования канала связи: 1. Произвольный доступ (радиосвязь, селекторная связь). 2. Пакетная коммутация (телеграф). 3. Временное выделение фиксированной пропускной способности (телефония). Ни один из указанных способов в значимой степени не удовлетворяет требованиям идеальной системы связи. Лучше всего подходит «временное выделение пропускной способности», но есть проблемы с гибкостью по параметру скорости предоставляемого канала, времени создания канала и эффективности использования ресурсов физического канала. Пакетная коммутация эффективна по утилизации ресурса, но есть проблемы с постоянством скорости, последовательности канала и потерям данных. Произвольный доступ и вообще возможен только для малого числа абонентов, при превышении которого (или интенсивности обмена) эффективность падает до неудовлетворительных величин. Для максимального соответствия идеальной системе связи пришлось «переизобрести» технологию основанную на временном выделении части пропускной пропускной способности физического канала. Нужно было решить проблему с гибкостью по скорости создаваемого канала передачи данных, быстрым его созданием и удалением. Мультиплексирование (разделение) канала связи. Для иллюстрации нового способа разделения физического канала на составляющие, разделим единый канал на части. Поток R в 1/3, поток G в ¼ и поток B в 1/5, от пропускной способности исходного физического канала. Оставшуюся пропускную способность можно использовать для других нужд. На картинке показано как исходные потоки раскладываются в суммарный поток. Оранжевый — поток R, Зеленый поток G, Синий поток B и Черный свободная пропускная способность. (Символы суммарного потока забираются последовательно с левой стороны) (Алгоритм симметричен, одинаков для приемника и передатчика) Общий принцип разделения достаточно прозрачен: 1. Сортируем создаваемые каналы по убыванию скорости передачи. 2. Для каждого канала создаем счетчик (регулирует скорость передачи) и буфер передаваемых символов. 3. Каждый такт символьной синхронизации в каждый счетчик прибавляем константу пропорциональную скорости передачи, константа = V (требуемая) / V (физического потока). 4. Каждый такт проверяем счетчики, в очередности убывания скоростей привязанных к ним каналов, на переполнение (значение больше единицы), пока не найдем первый счетчик содержащий значение больше единицы. 5. Из найденного счетчика вычитаем единицу, а в суммарный поток добавляем один символ из буфера передаваемых символов (создан в связке со счетчиком). Более подробно алгоритма мультиплексирования будет описан в конце текста статьи, рекомендуется для чтения специалистам в коммуникационных технологиях. Видим, что если создаваемые потоки имеют одинаковую скорость, то получается обычный алгоритм PDH (Е1 и тд) из цифрой телефонной связи. Если скорость потока равна 100% пропускной способности канала, получится пакетная коммутация. После приема данные необходимо отправить в другой канал и этим занимается коммутатор. Построение коммутатора для синхронного (равномерного) потока, является тривиальной задачей. Емкость такого коммутатора будет зависеть только от объема «транзисторов» (для современных микросхем в районе миллиона одновременных соединений). Частота переключения транзисторов будет зависеть только от скорости поступления символов, а она зависит от информационной емкости символа. Возможность изменения информационной емкости символов дает возможность регулировать значение тактовой частоты коммутатора, а параллельность обработки каждого из физических каналов делает ее не зависимой от числа физических каналов. Данный тип мультиплексирования и коммутации можно назвать синхронной символьной иерархией. И последний вопрос: Управление коммуникационной средой. Для современной компьютерной связи наиболее распространенным является набор протоколов TCP/IP. Данный протокол ориентирован на пакетную коммутацию, для последовательного канала не является оптимальным. Учитывая первоначальное назначение новой системы связи (коммуникационная основа dataflow процессора — будет описан в следующих статьях), наиболее оптимальным будет гибкий и универсальный язык ориентированный на последовательные каналы связи или расширение уже существующего языка программирования. При создании языка сетевого управления следует руководствоваться парадигмой, в которой вычислительная система это объединение различных устройств в сети цифровой связи. Зачем нужен новый тип сети? Самое первое это универсальность и простота алгоритмов. Простота устройства высокоскоростных коммутаторов, нет фундаментальных ограничений ни на число каналов ни на их скорость, позволит существенно улучшить характеристики многоядерных вычислительных систем (связь между ядрами и модулями). Где требуется существенное увеличение скорости и числа каналов? И тут все просто — нужно решить существующую проблему стягивания вычислительной системы в один кристалл, существенно поднять скорость меж-кристального взаимодействия. В настоящее время в компьютерной сети взаимодействуют отдельные, самостоятельные вычислительные системы (самостоятельные компьютеры). Новый тип сети должен существенно подтолкнуть (ускорить) начавшийся процесс «миграции» понятия «вычислительная система» от физической сущности (ящик на столе) к логическому объединению многих вычислителей (ядер) в распределенную вычислительную систему. При создании языка сетевого взаимодействия следует руководствоваться парадигмой, в которой вычислительная система это объединение различных устройств в сети цифровой связи. В настоящее время происходит процесс выбора новой вычислительной парадигмы. Старая (фон Нейман) исчерпала свой потенциал и стагнирует, а новая еще не выделилась из большого числа существующих «идей». Предлагаю описанную коммуникационную парадигму доработать и использовать как основу будущей единой информационной среды. И еще, необходимо придумать название новой сети, а то прилипнет «SkyNet» и характер у AI будет вредным. Алгоритм разделения (мультиплексирования) физического канала канала на отдельные виртуальные каналы: 1. Передача данных осуществляется квантами — символами. Применение символов необходимо для обеспечения линейного кодирования, нормальной работы системы синхронизации, преобразования последовательных данных в информационные конструкции, увеличение помехоустойчивости канала и тд. Используемые символы разделены на четыре группы: данные пользователя, управляющие символы пользователя, служебные данные и служебные управляющие символы. Разделение набора символов данных на обычные и служебные облегчает разделение пользовательского трафика и трафика с запросами к системе. Так же разделение данных на данные виртуальных каналов и данные служебного канала по разным наборам символов позволяет сильно поднять КПД использования первичного канала (без риска перегрузки канала). Размер символа (битовая информационная емкость) не фиксирована и потенциально может быть любой. Конкретный размер символа выбирается для каждого соединения индивидуально. 2. Передаваемые данные находятся в буфере, который выполняет функцию сглаживания отклонений от равномерной (синхронной) передачи. Служит для вставки и удаления символов «пусто» при приеме или попытке чтения из пустого буфера, также преобразует размеры символов приемника в размер символов передатчика (они могут быть различными). Число физических буферов ограничивает число виртуальных каналов проходящих через коммутатор одновременно. 3. Виртуальные каналы добавляются в суммарный поток в порядке понижения затребованной скорости передачи. При такой последовательности сборки суммарного канала, получается минимальный размер промежуточных буферов в коммутаторах. Каждому виртуальному каналу соответствует «таймер», к которому каждый такт символьной синхронизации добавляется значение равное отношению скорости виртуального канала к скорости суммарного физического. Как только значение таймера становится больше единицы и все таймеры каналов с большей скоростью имеют значение меньше единицы, необходимо переместить символ из буфера этого виртуального канала в суммарный канал (или наоборот для приемника) и вычесть единицу из значения «таймера». Если все «таймеры» виртуальных каналов содержат значение меньше единицы, то в канал помещается служебный символ «пусто». Алгоритм проверен на программной модели, максимальное расстояние по времени между принимаемыми данными виртуального канала не более 2.5 периода передачи виртуального канала. Для предотвращения переполнения и потерь данных минимальный требуемый буфер должен иметь размер 3 символа. 4. Символ «пусто» предназначен, для устранения зависимости структуры суммарного потока от неравномерностей предоставления данных конкретными передатчиками и устранения влияния неравномерности скорости передачи физического канала. При создании канала связи необходимо запрашивать немного большую скорость, примерно на 0.01% больше чем реально требуется, для реальных систем связи. Излишняя производительность необходима для коррекции ошибки скорости физического канала (неточность задающего генератора). 5. После создания (все виртуальные каналы добавлены) суммарного потока передатчик может заменить все встреченные символы «пусто» на символы из набора служебных данных. На приемной стороне происходит обратная замена. Такая замена позволяет эффективнее использовать пропускную способность физического канала и максимально оперативно реагировать на запросы к сети. Физический канал максимально эффективно используется для передачи данных, без риска переполнения и потерь. 6. Если требуется создать виртуальный канал для передачи заранее известного и малого числа символов, то можно и не создавать виртуальный канал (манипуляции со списком и таймерами достаточно затратны). В таком случае необходимо собрать все символы в единый пакет (используя только набор служебных символов) и передавать такие пакеты с использованием не занятой (служебной) части физического канала. Главным требованием к такому каналу будет размер, не превышающий размера буфера в промежуточных коммутаторах. При проектировании коммутатора это требование необходимо учесть или предоставить возможность соединять несколько соседних буферов в один. 7. Служебные символы (добавляемые передатчиком), образуют канал с запросами к коммуникационной системе. Данный канал существует всегда и именно из части его пропускной способности, происходит выделение пропускной способности создаваемого виртуального канала. В момент приема служебные символы отправляются в отдельный служебный поток, а на их место помещаются символы «пусто». Часть символов служебного потока обрабатывается приемником сразу (сервисы добавления и удаления виртуальных каналов и тд), остальные помещаются в буфер и обрабатываются управляющей коммутатором вычислительной системой в асинхронном режиме. 8. Приемник производит «раскладку» принимаемых символов по индивидуальным буферам виртуальных каналов с использованием такого же как и передатчик алгоритма. Раскладка произойдет правильно только в том случае если приемник и передатчик содержат одинаковый список каналов и значения «таймеров» на приемной и передающей сторонах синхронизированы относительно суммарной последовательности. Если после раскладки в суммарном канале остаются любые символы кроме «пусто», то это означает рассинхронизацию или таймеров или списка каналов на приемной и передающей стороне. В процессе передачи, суммарный поток необходимо обязательно разбирать в коммутаторах не только по причине перекомпоновки виртуальных каналов между физическими, но и из-за потенциальной необходимости добавить или удалить символы «пусто», что возможно только в момент чтения или записи буфера виртуального канала. Можно добавить возможность создания не разбираемого в промежуточных коммутаторах суммарного потока «тоннеля». Такой поток не будет разбираться в промежуточных коммутаторах на составляющие и обрабатываться как пользовательский виртуальный канал. Создание виртуального «тоннеля» возможно если создать суммарный поток используя альтернативные служебные символы (алгоритм остается тем же самым, для каждого уровня тоннеля требуется свой набор служебных символов). На приемной стороне потребуется произвести дополнительную процедуру разборки такого канала на составляющие (число таких «разборов» можно считать уровнем «тоннеля»). Создавать «тоннели» выгодно по причине уменьшения числа виртуальных каналов и соответственно требуемых буферов в промежуточных коммутаторах или в местах где происходит коммутация очень больших информационных потоков (да и задержка коммутации пропорциональная скорости виртуального канала будет меньше). Алгоритм создания виртуального канала. 1. В начальный момент времени между передатчиком и приемником существует только служебный поток (ранее созданные виртуальные каналы не считаем). В передатчике есть буфер в котором накапливаются данные необходимые для создания нового виртуального канала. 2. Когда в буфере появится объем данных достаточный для того что бы создать виртуальный канал (данные о направлении и требуемой скорости и тд), необходимо сформировать и отправить (используя только служебные символы) в служебный поток нужного физического канала пакет данных с запросом на создание нового виртуального канала. В момент передачи, а потом и приема (на другой стороне физического канала) пакета, его содержимое интерпретируется и сначала создается новый сортированный список виртуальных каналов, а в момент появления символа активирующего создание нового виртуального канала загружает новый список каналов (фазы уже существующих каналов сохраняются) в мультиплексор (демультиплексор) суммарного канала. Таким образом достигается постоянная синхронность «таймеров» и списка каналов на принимающей и передающей стороне. 3. После создания нового канала, начинается выборка данных из буфера и вставка в соответствующие слоты суммарного физического канала. Создание нового канала происходит без предварительного уведомления приемника, основываясь только на свободной пропускной способности локального физического канала. 4. Для закрытия виртуального канала нет необходимости пересылать пакет используя служебный канал, достаточно в передаваемые данные удаляемого канала поместить служебный символ «удалить канал». Процедура удаления виртуального канала аналогична процедуре создания, инициируется служебным символом «закрыть канал», считанным из буфера данных. На приемной стороне будет получено уведомление о закрытии канала в виде символа «закрыть канал» помещаемого в буфер виртуального канала. 5. Для автоматического удаления (очистки), предотвращения утечек производительности физического канала необходимо встроить в аппаратуру буферов виртуальных каналов, счетчик числа переданных символов (любых) и по достижении некоторого значения (timeout) автоматически передать символ «закрыть канал». Для продления времени жизни виртуального канала можно ввести символ «сбросить счетчик», добавляемый в данные. 6. Если в процессе создания виртуального канала выясняется что он должен коммутироваться на физический канал с дефицитом свободной пропускной способности, скорости служебного канала не хватает для создания нового виртуального канала или нет свободных буферов или другой причиной, то пакет с запросом должен быть уничтожен. Правильнее сказать, перенаправлен на модуль заглушки, который примет все символы. 7. Отправка данных «в никуда» в целом не удовлетворяет никого, а проверка доставки данных путем ожидания ответного сообщения очень «неприятна» из-за отсутствия гарантии ответа уже и от приемника. Для каналов с малым физическим расстоянием передачи (в метрах), выгоднее сразу создавать «кольцевой» канал и ожидать заранее известное время (постоянство и предсказуемость этого времени гарантирует алгоритм мультиплексирования). Алгоритм работы коммутатора 1. Создание канала можно разбить на два этапа: администрирование (поиск маршрута, назначение скорости, разрешение доступа и тд) и непосредственное создание виртуального канала (в момент необходимости передачи данных). Первый этап выполняется сравнительно редко (сеть относительно статична) и это возможно сделать заранее на этапе запуска приложения. Второй этап требуется производить максимально быстро, именно этот этап определяет производительность сети передачи данных и производительность всей распределенной вычислительной системы. 2. Клиент подключается к сети через устройство, аналогичное обычному коммутатору, отличительной особенностью которого является возможность доступа к буферам данных аппаратурой самой вычислительной системы и их больший объем (ну или к памяти самой вычислительной системы). Как только принимаемые данные создаваемого виртуального канала записываются в буфер коммутатора связанного с вычислительной системой, включается механизм (аналогичный прерыванию в обычной вычислительной системе), определяющий тип вызываемой «службы» и для обслуживание данного буфера подключается соответствующее ПО. Вычислительная система представляет собой большое число различных исполнительных модулей, объединяемых сетью связи. Сеть связи может заменить собой все локальные шины и интерфейсы от доступа в память до подключения клавиатуры 3. Маршрутизация в существующих сетях с пакетной коммутацией осуществляется на основе адреса в заголовке пакета, таблиц маршрутов и другими правилами в промежуточных маршрутизаторах. Такой подход хорошо работает для относительно небольшого числа возможных вариантов маршрута и возможности буферизации принимаемых данных отдельного пакета, требуется относительно много времени для определения номера порта, в который необходимо направить пакет. Для высокоскоростных систем с малым временем существования виртуального канала, не хватит скорости доступа к памяти таблиц коммутации. Предлагаю сразу прописывать маршрут в запросе, каждый коммутатор после создания канала убирает часть информации о маршруте. Размер адресной информации не будет слишком большим, число промежуточных коммутаторов относительно небольшое и если на каждый коммутатор выделить 8 бит (номер физического порта или тоннеля), то аналог адреса IP6 позволит строить маршрут из 16 коммутаторов, а это сопоставимо с типичным маршрутом в реальной сети. Для предлагаемого способа таблица коммутации превращается в номер буфера виртуального канала и может храниться прямо в мультиплексоре (де-мультиплексоре). 4. Построение маршрута, как последовательности каналов, через которые должен быть построен виртуальный канал можно производить через высокоуровневое ПО маршрутизатора. Для построения цепочек физических каналов можно использовать аналог обычных поисковых систем или DNS из современных сетей, задаем параметры пункта назначения (любой набор параметров: IP адрес тоже обычный параметр) и получаем результатом набор цепочек с альтернативными маршрутами. Относительная адресация обладает повышенной защитой от несанкционированного доступа, есть полный контроль над маршрутом. Для работы сети, нет необходимости в обязательном наличии (работе) высокоуровневых компонент, маршрут может быть задан заранее (для сетей с постоянной системой связи, как пример разводка на печатной плате — соединения не изменяются). 5. Непосредственное управление трафиком, выделение (планирование) полосы пропускания и др невозможно из-за большой скорости создания канала и потенциально большого размера сети. Для балансирования загрузки каналов необходимо использовать опосредованные методы, такие как планирование различных маршрутов, назначение скоростей передачи с учетом накапливаемой статистики использования виртуального канала. Скорости виртуальных каналов могут изменяться во времени в зависимости от различных факторов, например зависеть от исполняемого сейчас кода. При перегрузках физического канала не происходит отбрасывания данных уже существующих виртуальных каналов, невозможно только создать новый канал. Если учитывать характер трафика (преимущественно короткие сообщения), наличие резервных маршрутов и очень быструю процедуру создания (удаления) виртуального канала, то отказ в создании канала не приведет к катастрофическому падению производительности, будет просто небольшое проседание в скорости вычислений. При накоплении отрицательной статистики (именно статистики, а не реакция на отдельное событие) управляющее ПО коммутаторов отслеживает частоту ошибок соединения и выполняет планирование параметров каналов с учетом этих данных. С большой вероятностью перегрузка сама прекратится за время в сотни наносекунд, а ПО маршрутизатора должно заниматься вопросами именно стратегического планирования. К такому планированию можно отнести возможность редактирования уже созданных маршрутов (данные хранятся в мультиплексоре), иначе невозможно гарантированно перестроить маршрутную сеть (когда еще ПО запросит пересоздание маршрута). Сеть на основе синхронной символьной коммутация может коренным образом изменить всю информационную среду. Вычислительные системы окончательно превратятся из персонального «калькулятора», чем они сейчас в основном и являются, в единое информационное измерение (пространство) нашего мира. Компьютер пользователя станет просто устройством доступа в это мир и возможно устройством для хранения и обработки конфиденциальной информации. Существенным образом изменится роль сетевого оборудования в вычислительной архитектуре. Сейчас в основном сеть является способом связать отдельные вычислительные машины (каждая из них обладает собственной ОС) и исполняемые на них приложения. В будущем понятия отдельной вычислительной машины (как физического объекта) не будет, вычислительная система станет полностью виртуальной, она будет «размазана» по различным аппаратным ресурсам сети. Вопрос администрирования (управления ресурсами параметрами доступа вычислительной системы) полностью перейдет в плоскость управления сетью, соединяющей отдельные исполнительные модули. =========== Источник: habr.com =========== Похожие новости:
Децентрализованные сети ), #_setevye_tehnologii ( Сетевые технологии ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 01:19
Часовой пояс: UTC + 5