• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll

logo

  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • За год
    • Положительные
    • Отрицательные
  • Сортировка
    • По дате (возр)
    • По дате (убыв)
    • По рейтингу (возр)
    • По рейтингу (убыв)
    • По комментам (возр)
    • По комментам (убыв)
    • По просмотрам (возр)
    • По просмотрам (убыв)
Главная
  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • Главная
  • Быстрый роуминг (802.11r) в WiFi сети на базе Lede (aka OpenWRT)

Быстрый роуминг (802.11r) в WiFi сети на базе Lede (aka OpenWRT) +14

23.04.2017 04:17
Spider55 33 7300 Источник
Сетевые технологии*, Настройка Linux*, Беспроводные технологии*
Всем привет. Решил я закрепить полученный результат написав статью. А результат этот — это объединение нескольких WiFi точек доступа в сеть в одну неразрывную сеть, ещё её называют бесшовную. Смысл сего действия состоял в том, что моя «локальная» домашняя сеть разрослась до нескольких WiFi точек по причине её (сети) большой площади и невозможности достичь надлежащего качества всего одной точкой.

image

Первое и лобовое решение было поставить ещё несколько WiFi AP с тем же BSSID и с виду вроде всё работало, но как оказалось не всё. К примеру мой Android based телефон нормально переваривал эту ситуацию перепрыгивая с точки на точку при потере сигнала от одной и обнаружении сигнала от другой, но у пользователей чудного яФона возникла с этим проблема, сие устройства напрочь отказывались отключаться от уже пропавшей из радиуса действия точки и подключаться к новой, хоть и с более жирным сигналом. Ну и как полагается у сего контингента (никакой неприязни — просто сухие факты) началась вонь, что всё вокруг Г. мой чудный телефончик не может работать с этим барахлом. И начал я искать методы борьбы с этим.

Мои поиски привели меня к стандарту 802.11r. В котором нам обещают полную прозрачность для WiFi устройств сети их нескольких AP. И даже Apple подтверждает, что умеет так.

Ну ладно, ради спокойствия души своей и любителей яблок освоим новую дисциплину. Беглое изучение теории и практики показало, что hostapd вроде как умеет сие чудо. Все мои роутеры уже давно на Lede (кто не в курсе, это бывший OpenWRT) ну и как бы в этой связи настройка не должна была бы создать проблем. Но как всегда не всё так просто, либо я туговат :)

Для начала в lede по умолчанию устанавливается пакет wpad-mini, в нём собрана основная поддержка WiFi AP с минимумом возможной, дабы работало. Меня такой расклад не устраивает. Поэтому необходимо заменить пакет на wpad.

В простейшем случае для этого нужно выполнить команду:

opkg install wpad

пакет притянет с собой всё необходимое и заменит собою wpad-mini. В идеальном же варианте не плохо просто пере собрать образ прошивки средствами ImageBuilder.

После установки пакета нужно его под настроить. Если вы используете luci интерфейс, то в настройках WiFi сети в разделе Wireless Security появится галочка Enables fast roaming among access points that belong to the same Mobility Domain.



Включив которую нам предоставляют кучу полей для настройки функции роуминга между AP.
Если же у вас нет luci или вы предпочитаете настраивать железку изменяя кофиги, то это же делается строчкой:

option ieee80211r '1'

в секции config wifi-iface файла конфигурации /etc/config/wireless. Я надеюсь не нужно объяснять, что это надо проделать на всех AP участвующих в роуминге.

Это было самое простое. А вот далее началось веселье.

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

Пробежимся по полям, которые предлагает нам заполнить luci:

NAS ID — как я понял идентификатор текущей точки доступа в RADIUS сервере. И не нужен при отсутствии последнего, но Luci не даёт сохранить настройки, если это поле не заполнено. Ну чтож — заполним. Обычно все рекомендуют вписывать туда MAC адрес устройства без разделителей.

Mobility Domain — идентификатор конкретно вашей сети. Должен быть один у всех участвующих в роуминге точек. Представляет из себя 16битное число в шестнадцетиричной форме (HEX).

External R0 Key Holder List — вот тут будут участвовать NAS ID, а говорили нужен только для RADIUS. Или же эта функция не участвует без RADIUS? Поясните кто в курсе? Тут я добавил столько строк, сколько у меня точек доступа в сеть. В формате: MAC-адрес, NAS-ID, 128-bit ключ в виде HEX строки
Например: 12:fe:ed:6d:bf:ea, 12feed6dbfea, 8a7fcc966ed0691ff2809e1f38c16996
И так несколько раз с каждой точкой доступа, ключ я использовал один и тот же. Тоже, если кто в курсе как правильно?

External R1 Key Holder List — аналог предыдущей секции, только вместо NAS-ID некий R1KH-ID.

Я заполнил так: 12:fe:ed:6d:bf:ea, 12:fe:ed:6d:bf:ea, 8a7fcc966ed0691ff2809e1f38c16996

В итоге получилось примерно вот так:



В виде конфига всё это выглядит так:

        option ieee80211r '1'
        option mobility_domain '4f57'
        option pmk_r1_push '1'
        list r0kh '12:fe:ed:6d:bf:ea,12feed6dbfea,8a7fcc966ed0691ff2809e1f38c16996'
        list r0kh 'e8:94:f6:e5:46:72,e894f6e54672,8a7fcc966ed0691ff2809e1f38c16996'
        list r1kh '12:fe:ed:6d:bf:ea,12:fe:ed:6d:bf:ea,8a7fcc966ed0691ff2809e1f38c16996'
        list r1kh 'e8:94:f6:e5:46:72,e8:94:f6:e5:46:72,8a7fcc966ed0691ff2809e1f38c16996'
        option nasid '12feed6dbfea'
        option r1_key_holder '12feed6dbfea'

Сохранив и перезагрузив все устройства не первый взгляд всё продолжило работать. У меня на Телефоне с Android с виду ничего не изменилось. Владельцы iPhone пока довольны — будем наблюдать. WiFi Анализатор видит мою сеть по прежнему как несколько точек, но помимо WPA-PSK авторизации добавилась FT-PSK.

Я писал статью, чтобы и самому не потерять найденное и чтобы получить критику и помощь в понимании сделанного :) Буду благодарен за любые замечания.
Поделиться с друзьями
-->

Комментарии (33)


  1. alexyr
    23.04.2017 09:55
    #10186894

    Я правильно понял, что для этой магии нужно иметь все точки доступа с Lede/OpenWRT? Просто роутер с OpenWRT с пакетом wpad и экстендер (например: tp-link RE200) не будет работать?


    1. Prototik
      23.04.2017 10:19
      #10186926
      +1

      Нужны устройства, которые умеют 802.11r и дают его самостоятельно настроить. Lede/OpenWRT или что там ещё внутри — не столь важно.


  1. roginvs
    23.04.2017 11:13
    #10186978

    Точки доступа как-то между собой обмениваются информацией? Если да, то как? По мультикасту?


  1. zlukfo
    23.04.2017 11:19
    #10186988
    +1

    А вот это первое ваше «лобовое» решение — пробовали на всех точках доступа установить одинаковый номер канала? У меня так работает уже три года и поддерживается всеми имеющимися системами ios, android, ubuntu, windows. И даже с медиа проблем нет (ну подвиснет иногда на пару секунд при переключении между точками)


    1. Spider55
      23.04.2017 11:21
      #10186992

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


      1. navion
        23.04.2017 22:10
        #10187730

        После включения 802.11r тоже могут начать жаловаться, ещё не встречали проблемные устройства?


      1. J_o_k_e_R
        24.04.2017 01:23
        #10187850

        Оно работает, но постоянно жалуются люди, что перейдя с этажа на этфж связь ухудшается, но если перезапустить WiFi в телефоне, то всё значительно лучше становится.


        Классическое и простое решение проблемы — настроить пороги для уровня сигнала клиента на точках. Так чтоб, если у клиента ухудшается сигнал, то его точка сама отключит, чтоб он в дальнейшем переключился на точку с хорошим сигналом.


        1. gotch
          24.04.2017 08:42
          #10187998

          Keenetic так случайно не умеет?


          1. J_o_k_e_R
            24.04.2017 11:51
            #10188290

            Не могу сказать, у меня всё на микротиках.


  1. gvitalik
    23.04.2017 11:21
    #10186994

    Подскажите пробовали ли MESH решения не использующие 802.11r, например, https://habrahabr.ru/post/277721/?


    1. Spider55
      23.04.2017 11:21
      #10186998

      Нет не пробовал. 802.11r показался проще в быстрой реализации.


    1. J_o_k_e_R
      24.04.2017 01:21
      #10187848

      MESH очень медленный.


  1. dmitry_dvm
    23.04.2017 19:41
    #10187552

    А пачка таких штук не была бы проще/дешевле/надежней?


    1. Spider55
      23.04.2017 20:08
      #10187576

      Вы вищимо из столичного региона? У нас такого днем с огнем не найти. На заказ от 27 дней.
      Дешевле? Только если даром, чтобы настроить OpenWrt нужно 0р. 00 коп.


    1. Spider55
      23.04.2017 20:08
      #10187578

      Вы видимо из столичного региона? У нас такого днем с огнем не найти. На заказ от 27 дней.
      Дешевле? Только если даром, чтобы настроить OpenWrt нужно 0р. 00 коп.


    1. neumeika
      24.04.2017 02:17
      #10187868

      Дмитрий, вы же, надеюсь, не предлагаете этот кал ставить вместо хендмейда, в котором хоть можно отдебажить проблемы? Даже настроя мониторинг всего и вся (rssi/dbi/tof/etc) клиентских устройств и точек (zabbix lld), фиг это помогает на этих устройствах. Просто пустите туда больше 30 клиентов на точку и смотрите, как оно умирает.
      Можно даже включить псевдороуминг, но тут уже при 20 клиентах начнутся неинтересные вещи.
      И таки, да, я имею опыт хендмейда, cisco, и печальный опыт в убикьюти и микротах.
      ТС, нижеуказанные полезняшки в вашем случае не рабочие?
      disassoc_low_ack
      rsn_preauth
      И я вот чё-то слабо представляю безрадиусную безшовщину, но исходя из логов и дебага у людей сие работает, хотя я пробовал онли WPA-Ent


      1. dmitry_dvm
        24.04.2017 09:56
        #10188104
        +1

        Ну автор вроде для дома юзкейс воплощает, какие уж там 30 клиентов на точку)


    1. Pave1
      24.04.2017 09:25
      #10188042

      Так у юбиквити как раз с роумингом печалька пока.


    1. Udavf
      30.04.2017 14:56
      #10198230

      Возможно что то не донастроено было, но на моей прошлой работе их роуминг работах крайне плохо


  1. dmitry_dvm
    23.04.2017 21:08
    #10187660

    Не из самого столичного. Из мск заказывал на той неделе железку этого же производителя, доставили за 3 дня и 350р. OpenWrt же на каком-то железе ненулевой стоимости работает? Да, комплект не дешев, но и качество другого уровня.

    Промахнулся, ответ в эту ветку


    1. Spider55
      24.04.2017 07:34
      #10187968

      Были у меня Кинетики и Тплинки, их я и зашил. Пока работают, полет нормалтный.


  1. vagonovozhaty
    24.04.2017 07:34
    #10187970
    +1

    На форумах филологов неразрывные Wi-Fi-сети обычно называют бесшовными.
    Извините.


    1. Spider55
      24.04.2017 07:34
      #10187972

      Не спорю


  1. usheynet
    24.04.2017 07:34
    #10187974
    +1

    А MikroTik? Вполне себе умеют в бесшовный роуминг из коробки, доступны по всей стране, недороги.
    Разворачивал бесшовный роумниг на них (RB20XXui + набор wAP) — делается на изи, работает на ура. Ubnt, кстати, можно и подождать — их железки того стоят. Так же стоит отметить, что у каждого вендора своя реализация бесшовного переключения между точками (BSSFT тут как одно из средств), поэтому, даже при использовании непроприетарных протоколов дружбы между устройствами не случиться — не выйдет к микроше прицепить циску. C OpenWRT то же самое.


    P.S. iOS изначально рассчитана на корректно настроенный роуминг, без него она действительно плоховато сама определяет, к кому подключаться, что логично — так устроен город: куча точек доступа к одной сети, между которыми надо быстро переключаться, что без потерь передачи возможно только в контролируемом режиме точек.


    1. Spider55
      24.04.2017 07:38
      #10187978

      Ну тут, как я уже говорил, все сводилось к работе на том что есть.
      Ну микротики у меня есть, но и их я зашил в WRT, поэтому они тоже у меня в одной саязке.
      Мне роднее linux, чем все эти микротиковые оси с их наворотами. Мне проще линухи, уж простите.


      1. J_o_k_e_R
        24.04.2017 11:55
        #10188298
        +1

        routeros — linux 3.3.* с мордой и некоторым количеством проприетарных расширений. Вплоть до некоторых нюансов работы iptables. После понимания как работает линукс, разобраться в routeros проблем нет.


    1. J_o_k_e_R
      24.04.2017 11:56
      #10188302
      +1

      А MikroTik? Вполне себе умеют в бесшовный роуминг из коробки, доступны по всей стране, недороги.
      Разворачивал бесшовный роумниг на них (RB20XXui + набор wAP) — делается на изи, работает на ура.


      Настоящий, 802.11r, бесшовный роуминг не умеют. Если вы говорите про точки на одной частоте и фильтры по уровни приёма, то это псевдобесшовный.


  1. LESHIY_ODESSA
    26.04.2017 17:33
    #10192512
    +1

    Немного комментариев с хабра для понимания «бесшовности» или роуминга:

    Как я создавал бесшовный Wi-Fi (EDIMAX)

    протоколы 802.11r и 802.11k. Эти протоколы отвечают за быстрое, практически мгновенное переключение абонентов от одной точки к другой.


    Источник
    Во-первых, далеко не все клиенты умеют что в r что в k
    Во-вторых, по-настоящему бесшовного роуминга (а-ля WiMAX или 3G или DECT) вы не получите никогда, это просто невозможно ввиду «особенностей» протокола WiFi.
    Так что «роуминг» был, есть и остается маркетинговой фичей, за которую можно срубить бабла с ло..^W с клиента. почитайте обсуждения на форуме НАГа, хотя бы, там знающие люди сидят.


    Источник
    Пара слов о бесшовном роуминге на Mikrotik, если кратко — его нет и никогда не было, ни на Mikrotik ни на Ubiquiti UniFi. Причем Ubiquiti уже достаточно давно отказались от своего Zero-Handoff, т.к. он не дал желаемых результатов.

    Роуминг от одной AP к другой AP, как и ранее — прерогатива самого клиента. Именно клиент решает, когда ему переходить на другую точку, а когда нет. Стандарты 802.11a/b/g/n/ac, к сожалению, не предусматривают возможности сообщить клиенту о ближайших AP и уровне их загрузки.


  1. Louie
    28.04.2017 15:32
    #10196128

    «Бесшовный» роуминг нужен только при реальной необходимости поддерживать какую-то потоковую передачу, типа человек идет от точки к точке и говорит по sip-телефону. То есть — почти никогда.
    Посему, не зная реальных условий, рискну предположить, что у точек хорошо бы настроить мощность передатчика (Tx power) и, как сказано выше, порог отключения клиентов со слабым сигналом


  1. 4aba
    02.05.2017 15:20
    #10200102

    Одного не понял, точки в итоге должны быть на одном канале и ssid/пароль иметь одинаковые, или разные можно?


    1. LESHIY_ODESSA
      02.05.2017 18:47
      #10200496

      SSID/пароль одинаковые.

      А с каналами нет общего мнения. Я долгое время считал, что каналы должны быть разными, чтобы точки не пересекались в диапазоне. Но потом выяснилось, что у многих (например UniFi) требование наоборот — одинаковый канал.


      1. Louie
        03.05.2017 08:20
        #10200876

        Каналы не должны пересекаться в зоне покрытия. Т.е., если представить длинный холл, покрытый 3-мя AP, то каналы будут, например, 1-6-1


        1. LESHIY_ODESSA
          03.05.2017 12:37
          #10201330

          Есть мнение, что переключение между каналами создает большую паузу (потери). То есть для «бесшовности» лучше одинаковый канал, но в тоже время, нужно ограничить мощность точек для из наименьшего пересечения.

МЕТКИ

  • Хабы
  • Теги

Сетевые технологии

Настройка Linux

Беспроводные технологии

LEDE

openwrt

wpad

hostapd

СЕРВИСЫ
  • logo

    CloudLogs.ru - Облачное логирование

    • Храните логи вашего сервиса или приложения в облаке. Удобно просматривайте и анализируйте их.
Все публикации автора
  • Быстрый роуминг (802.11r) в WiFi сети на базе Lede (aka OpenWRT) +14

    • 23.04.2017 04:17

Подписка


ЛУЧШЕЕ

  • Сегодня
  • Вчера
  • Позавчера
08:23

MLечный путь 2025 — знания, опыт, коммьюнити. Как это было? +25

06:00

Сделали copilot-сервис для техподдержки и делимся секретами RAG c глубоким пониманием контекста +18

07:18

Этот крошечный винт отвечает за будущее гуманоидных роботов +15

07:00

Автоматизация трехуровневой квартиры: хочу лучше, чем в Дубае +15

06:00

Альтернативы свинцовому аккумулятору ИБП +15

07:55

Как сделать улётную ИТ-конференцию: опыт программного директора CodeFest +14

07:03

Как мы внедряем ALD Pro: подробный обзор решения, кейсы и лайфхаки для крупных ИТ-инфраструктур +13

07:00

Как научить ИИ обслуживать клиентов не хуже человека? +8

07:15

Доступ к приватным методам класса в С++ +7

06:33

Кто ты, воин? Версионирование go бинарников +6

09:00

Terraform уже не тот? Как Pulumi меняет правила игры в Infrastructure as Code +4

08:07

IQ — во многом псевдонаучный обман +4

07:20

«Желтая» энергия: производство зеленого водорода из урины +4

07:00

Как быстро проверить скилы Go-разработчика: пул задач для собеседований и одна фаворитка +4

05:00

Системный аналитик и управление хаосом на проекте. Часть 2: Методика структурирования требований +4

08:54

Джобспидхоппер — 30+ работ в IT за 10 лет. Как стать легендой +3

08:05

Объяснение графических процессоров для тех, кто привык работать с ЦП +3

08:00

Распределённый инференс и шардирование LLM. Часть 2: скрипт vLLM, Ray Serve для вывода API и настройка KubeRay Cluster +3

07:01

Домашняя серверная для DevOps: установка GitLab + Let's Encrypt +3

05:54

Как с помощью Typescript я получал свойства React-компонентов +3

05:26

One-shot промптинг. Как я начал вайбкодить в 10? раз быстрее +83

08:05

Самодельная паяльная станция с цифровой индикацией температуры на жесткой логике +58

08:00

Всё везде и сразу +43

13:00

Массовые увольнения в российском IT: что на самом деле происходит в компаниях — взгляд CEO +39

08:34

Лабиринты текста как игровая механика, или как неэкранизируемая литература становится источником геймдизайна +38

13:01

Введение в RawTherapee +32

06:54

Picodata: вторая жизнь in-memory баз данных +30

05:15

Как я разработал расширение для браузера за 3 дня — и получил первого платного пользователя уже на следующий день +29

07:58

Я нашёл огромную дыру в дейтинг-приложении, а разработчики попытались её скрыть +28

14:45

Переходим от legacy к построению Feature Store +27

09:01

ЦОД 2050: три реалистичные концепции развития дата-центров +26

09:34

Криптография эпохи Ренессанса: классика не стареет +19

14:12

Как я сменил лопату на клавиатуру: мой путь в IT после 30 +18

07:00

LLM as a Judge: опыт оптимизации генератора описаний Pull Request +18

14:45

Интервью про ИИ, которое меня выбесило +16

09:18

Распродажа в издательстве «Питер» +16

10:57

Вселенная дистрибутивов Linux: От Ubuntu до Arch, от Mint до Fedora – подробный гид по выбору +15

07:00

Электрокэбы, полный привод и гонки: история дореволюционного автопрома +15

07:01

Финансовый учет: всё и немного больше про проводки +14

04:56

Кто выполняет функции системного аналитика в США? +14

14:22

Ещё 10 ошибок авторов Хабра +138

07:43

Больше нет входа в IT. Только выход +71

14:15

Мое производство электрощитов приносит 40 млн в год. Спасибо нейросетям и СССР за конструкторскую школу +63

05:16

Дело о Транзитроне — или Ламповый тьюториал для любопытных +49

08:01

Трамплин в интернет: как мы ускорили запуск Яндекс Браузера +44

13:06

Введение в Angie: краткая история и отличия от Nginx +43

08:35

Распределённый инференс и шардирование LLM. Часть 1: настройка GPU, проброс в Proxmox и настройка Kubernetes +39

03:22

Как за один вечер создать репутацию вашего стартапа в поисковой выдаче: 20 бесплатных площадок для быстрого буста +39

07:00

DevOps без боли: 8 инструментов для мониторинга, автоматизации и стабильной работы команд +36

16:15

Как я написал эмулятор Nintendo Gameboy на C++ за две недели +33

12:00

Story Points не работают? И другие мифы про оценку задач, в которые мы почему-то верим +33

13:01

Как создавались вокальные эффекты Daft Punk +32

06:53

Важное обновление BatteryTest 2 +32

04:53

Баффет наконец накопил достаточно для выхода на пенсию, а в OpenAI выкатили новый хитрый план +28

10:09

Как настраивать сети: готовые решения Selectel для максимальной отказоустойчивости +26

10:26

От релиз-менеджера до разработчика: почему я ушел из QA и не жалею +25

09:01

Почему из технологий делают культы +24

12:08

Эффект душа: почему отдых и переключение на хобби помогают принимать крутые решения +23

09:31

Как ESLint помогает управлять архитектурой проекта +23

15:16

Бирюзовые компании в РФ: как не посинеть в найме +22

ОБСУЖДАЕМОЕ

  • Больше нет входа в IT. Только выход +71

    • 550   128000

    Массовые увольнения в российском IT: что на самом деле происходит в компаниях — взгляд CEO +39

    • 262   58000

    Мое производство электрощитов приносит 40 млн в год. Спасибо нейросетям и СССР за конструкторскую школу +63

    • 194   70000

    Ещё 10 ошибок авторов Хабра +138

    • 125   7300

    Личный VPN: юзер ликует, VLESS смеётся, а РКН плачет -8

    • 83   37000

    Дело о Транзитроне — или Ламповый тьюториал для любопытных +49

    • 62   4900

    One-shot промптинг. Как я начал вайбкодить в 10? раз быстрее +83

    • 59   21000

    Самодельная паяльная станция с цифровой индикацией температуры на жесткой логике +58

    • 51   5300

    Бирюзовые компании в РФ: как не посинеть в найме +22

    • 49   50000

    Трамплин в интернет: как мы ускорили запуск Яндекс Браузера +44

    • 47   4200

    Шесть лет на диване: мои выводы об удалённой работе -1

    • 43   18000

    Интервью про ИИ, которое меня выбесило +16

    • 42   3100

    Быстрый алгоритм fulltext-поиска без токенизации +15

    • 42   2400

    Вселенная дистрибутивов Linux: От Ubuntu до Arch, от Mint до Fedora – подробный гид по выбору +15

    • 32   9200

    Разбираем архитектуру. Часть 2. Чистая архитектура на примере FastAPI приложения +4

    • 32   4300
  • Главная
  • Контакты
© 2025. Все публикации принадлежат авторам.