Как найти в сетке шару

Во время прохождения Immortals Fenyx Rising вам предстоит решить не мало загада. И сегодня в этом гайде мы расскажим вам как решить загадку с синими шарами в Immortals Fenyx Rising и получить часть крылаю.

В начале своего прохождения Immortals Fenyx Rising вы получите квест под названием Нечеткое зрение (Blurry Vision), в котором вам будет предложена головоломка с синей сферой для получения части крыла. Часть крыла дает вам способность парить, поэтому это очень важный предмет, который поможет вам пересечь Золотой остров.

Этот квест — последний шаг перед тем, как покинуть стартовую зону и отправиться на материк, где начинается настоящая игра. Однако найти эти синие шары может быть немного сложно, поэтому мы составили этот гайд. Вот где найти синие шары и получить часть крыла в Immortals Fenyx Rising.

Где найти синие шары

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

  • Уже размещен на сетке.
  • За запертыми воротами, открываемыми рычагом.
  • За запертыми воротами открывается Сфера №2.
  • За запертыми воротами открылись огненной стрелой.
  • За бьющейся стеной.

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

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

Чтобы найти четвертую сферу, поднимитесь по лестнице рядом с сеткой сфер и поверните направо. Вы увидите шар за запертыми воротами. Рядом есть нажимная пластина, на которой можно стоять, а рядом — две зажженные жаровни. Встаньте на нажимную пластину и увидите Стрелу Аполлона, чтобы направить стрелу через зажженную жаровню перед вами и зажечь не зажженный факел в правом верхнем углу ворот. Как только факел зажжется, ворота откроются, обнажив шар. Возьмите его и верните в сетку.

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

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

Как получить часть крыла в Immortals Fenyx Rising

Как только вы решите загадку, появится желтый портал. Пройдите внутрь, чтобы получить две монеты Харона, после чего начнется кат-сцена. По окончании ролика вы получите Крылья Дедала. Они пока не позволят вам скользить, но вы скоро откроете эту способность.

На этом, это все что вам нужно знать о том, как получить часть крыла в Immortals Fenyx Rising. Читайте также и другие наши гайды по игре: 

  • Сколько весит Immortals Fenyx Rising на PS5, Xbox Series X, Xbox One, PS4 и ПК
  • Время предзагрузки Immortals Fenyx Rising. Когда можно будет скачать и начать играть

Immortals Fenyx Rising выходит 3 декабря на ПК, PS4, PS5, Xbox One, Xbox Series X | S и Nintendo Switch.

21.11.2021 | Категория Информационная безопасность

Дисклеймер: Мы не несем ответственность за Ваши действия и не призываем Вас к каким-либо действиям! Все материалы взяты с открытых источников, опубликованы для образовательных целей. 

Оглавление

  1. Широковещательный шторм в состоянии петли
  2. Методы предотвращения
  3. Создание широковещательного шторма (петли)
  4. LLMNR
  5. Анализ последствий

1. Широковещательный шторм в состоянии петли

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

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

Для большего понимания простейшая схема петли представлена ниже.

Компьютер ПК-1 отправляет кадр (frame) по сети через коммутатор компьютеру ПК-N. Коммутатор получает кадр и в таблицу коммутации заносит адрес компьютера ПК-1 с портом. Коммутатор не знает где расположен порт получателя кадра, кроме порта, из которого этот кадр был получен.

Соответственно, кадр получает ПК-N и получает виртуальный коммутатор GNS3 (далее будет подробно показано, как реализовать виртуальную сеть с помощью GNS3). Виртуальный коммутатор GNS3, который расположен в ПК-N, производит аналогичные действия.

Компьютеры расположенные в локальной сети получают несколько кадров — один от коммутатора локальной сети, другой от виртуального коммутатора. Одновременно с этим, копию кадра от коммутатора локальной сети получает виртуальный коммутатор GNS3.

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

2. Методы предотвращения

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

3. Создание широковещательного шторма (петли)

Рассмотрим проблему создания петли в сетевом программном эмуляторе GNS3. GNS3 позволяет комбинировать виртуальные и реальные устройства, используемые для моделирования сложных сетей.

Он использует программное обеспечение эмуляции Dynamips для имитации Cisco IOS. Для создания петли воспользуемся одним из способов подключения GNS3 к реальной физической сети.

Этот способ возможен, если компьютер подключен к коммутатору (к локальной сети). Схема изображена на рисунке 3. 

  1. Как найти петлю в локальной сети?
  2. Рис. 3 Схема соединения 2 хостов и 1 коммутатора
  3. У хостов в качестве интерфейса указываем “nio_gen_eth:Ethernet N”.

Перед этим проведем анализ трафика в сети с помощью ПО Wireshark (рис. 3). 

Как найти петлю в локальной сети?

Рис.4 Анализ трафика в сети с помощью Wireshark

В среднем в сети проходит 5-10 пакетов в секунду. Основной пакет — это LLMNR,  который в последствии будет являться причиной нарушения работоспособности коммутатора. Сначала стоит разобрать сам протокол LLMNR.

4. LLMNR

LLMNR, англ. Link-Local Multicast Name Resolution — протокол стека TCP/IP, основанный на формате пакета данных DNS, который позволяет компьютерам выполнять разрешение имен хостов в локальной сети.

Для LLMNR выделены порты 5355/UDP и 5355/TCP, в IPv4 выделен широковещательный адрес 224.0.0.

252 и MAC-адрес 01-00-5E-00-00-FC, в IPv6 — FF02:0:0:0:0:0:1:3 (сокращённая запись — FF02::1:3) и MAC-адрес 33-33-00-01-00-03. 

Как найти петлю в локальной сети?

Рис. 5 Структура заголовка пакета LLMNR

Служба LLMNR (Link-Local Multicast Name Resolution) позволяет организовать одноранговое разрешение имен в пределах одной подсети для IPv4, IPv6 или обоих видов адресов сразу без обращения к серверам, на что не способны ни DNS, ни WINS. WINS предоставляет как клиент-серверную, так и одноранговую службу разрешения имен, но не поддерживает адреса IPv6.

DNS, с другой стороны, поддерживает оба тина адресов, но требует наличия серверов. Разрешение имен LLMNR, работает для адресов IPv6 и IPv4 в тех случаях, когда другие службы разрешения имен недоступны, например, в домашних сетях, в небольших предприятиях, во временных сетях или  корпоративных сетях, где по каким-то причинам недоступны DNS-службы.

Поскольку трафик LLMNR не проходит через маршрутизаторы, вы не рискуете случайно заполнить им сеть.Как и WINS, LLMNR позволяет преобразовать имя хоста в IP-адрес. По умолчанию LLMNR включен на всех компьютерах под управлением Windows. Эти компьютеры прибегают к LLMNR, если попытки узнать имя хоста через DNS окончились неудачей.

В результате, разрешение имен в Windows работает следующим образом:

  1. Хост посылает запрос на первичный DNS-сервер. Если он не получает ответа или получает сообщение об ошибке, он по очереди посылает запросы на все вторичные DNS-серверы. Если и это не помогло, разрешение имени передается LLMNR.
  2. Хост посылает многоадресный UDP-запрос, запрашивая IP-адрес для нужного имени компьютера. Этот запрос идет только по локальной подсети.
  3. Каждый компьютер локальной подсети, поддерживающий LLMNR и сконфигурированный для ответа на поступающие запросы, сравнивает имя со своим хост-именем. Если они не совпадают, компьютер отбрасывает запрос. Если имена совпадают, компьютер пересылает исходному хосту одноадресное сообщение с ІР-адресом.

5. Анализ последствий

Компьютеры с LLMNR должны проверять уникальность своих имен в подсети.

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

Если компьютер еще не проверил уникальность своего имени, он должен указывать это в ответе на запрос. После создания петли в GNS3 (рис. 3), увидим некоторые особенности в Wireshark (рис. 6). 

Как найти петлю в локальной сети?

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

Считается нормальным, если широковещательные пакеты составляют не более 10 % от общего числа пакетов в сети.Довольно часто к широковещательному шторму приводят петли в сети при неправильной настройке канального протокола Spanning Tree. Spanning Tree Protocol (STP) — канальный протокол.

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

STP решает эту задачу, автоматически блокируя соединения, которые в данный момент для полной связности коммутаторов являются избыточными.

Рассмотрим, создадим и заюзаем аппаратную петлю на порте коммутатора

Если взять кусок патч-корда и воткнуть оба хвоста в один коммутатор, то получится петля. И в целом петля на порте коммутатора или сетевой карты — зло. Но если постараться, то и этому явлению можно найти полезное применение, например сделать сигнализацию с тревожной кнопкой.

INFO

  • Rx и Tx — обозначения Receive и Transmit на схемах (приём и передача).
  • Loop — англ. петля, контур, шлейф, виток, спираль.

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

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

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

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

Представь, что устройство «кричит» себе в порт: «Я здесь!» — слушает и получает в ответ: «Я здесь!».

Оно по-детски наивно радуется: есть соседи! Потом оно кричит: «Привет! Лови пакет данных!» — «Поймал?» — «Поймал!» — «И ты лови пакет данных! Поймал?» — «Конечно, дружище!»

Вот такой сумасшедший разговор с самим собой может начаться из-за петли на порте коммутатора.

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

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

Такое явление называется широковещательным штормом (broadcast storm).

Меня удивил случай, когда установщик цифрового телевидения вот так подсоединил патч-корд (рис. 1). «Куда-то же он должен быть воткнут…» — беспомощно лепетал он.

Как найти петлю в локальной сети?Рис. 1. Синий свитч с петлей на борту
Другие статьи в выпуске: Как найти петлю в локальной сети?

  • Содержание выпуска
  • Подписка на «Хакер»-60%

Однако не всё так страшно. Почти в каждом приличном коммутаторе есть функция loop_detection, которая защищает устройство и его порт от перегрузок в случае возникновения петли.

Настраиваем коммутаторы

Перед тем как начинать настройку, необходимо установить физическое соединение между коммутатором и рабочей станцией.

Существует два типа кабельных соединений для управления коммутатором: соединение через консольный порт (если он имеется у устройства) и через порт Ethernet (по протоколу Telnet или через web-интерфейс).

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

Для того чтобы получить доступ к коммутатору через порт Ethernet, устройству необходимо назначить IP-адрес.

Web-интерфейс является альтернативой командной строке и отображает в режиме реального времени подробную информацию о состоянии портов, модулей, их типе и т. д. Как правило, web-интерфейс живет на 80 HTTP-порте IP-коммутатора.

Настройка DLink DES-3200

Для того чтобы подключиться к НТТР-серверу, необходимо выполнить перечисленные ниже действия с использованием интерфейса командной строки.

  1. Назначить коммутатору IP-адрес из диапазона адресов твоей сети с помощью следующей команды:
    DES-3200# config ipif System
    ipaddress xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy.

    Здесь xxx.xxx.xxx.xxx — IP-адрес, yyy.yyy.yyy.yyy. — маска подсети.

  2. Проверить, правильно ли задан IP-адрес коммутатора, с помощью следующей команды:
    DES-3200# show ipif
  3. Запустить на рабочей станции web-браузер и ввести в его командной строке IP- адрес коммутатора.

Управляемые коммутаторы D-Link имеют консольный порт, который с помощью кабеля RS-232, входящего в комплект поставки, подключается к последовательному порту компьютера. Подключение по консоли иногда называют подключением Out-of-Band. Его можно использовать для установки коммутатора и управления им, даже если нет подключения к сети.

После подключения к консольному порту следует запустить эмулятор терминала (например, программу HyperTerminal в Windows). В программе необходимо задать следующие параметры:

Baud rate: 9,600
Data width: 8 bits
Parity: none
Stop bits: 1
Flow Control: none

При соединении коммутатора с консолью появится окно командной строки. Если оно не появилось, нажми Ctrl+r , чтобы обновить окно.

Коммутатор предложит ввести пароль. Первоначально имя пользователя и пароль не заданы, поэтому смело жми клавишу Enter два раза. После этого в командной строке появится приглашение, например DES-3200#. Теперь можно вводить команды.

Команды бывают сложными, многоуровневыми, с множеством параметров, и простыми, для которых требуется всего один параметр.Введи «?» в командной строке, чтобы вывести на экран список всех команд данного уровня или узнать параметры команды.

Например, если надо узнать синтаксис команды config, введи в командной строке:

DES-3200#config + пробел

Далее можно ввести «?» или нажать кнопку Enter. На экране появится список всех возможных способов завершения команды. Лично я для вывода этого списка на экран пользуюсь клавишей TAB.

Как найти петлю в локальной сети?Loopback-тест

Базовая конфигурация коммутатора

При создании конфигурации коммутатора прежде всего необходимо обеспечить защиту от доступа к нему неавторизованных пользователей.

Самый простой способ обеспечения безопасности — создание учетных записей для пользователей с соответствующими правами. Для учетной записи пользователя можно задать один из двух уровней привилегий: Admin или User.

Учетная запись Admin имеет наивысший уровень привилегий. Создать учетную запись пользователя можно с помощью следующих команд CLI:

DES-3200# create account admin/user
(знак «/» означает ввод одного из двух параметров)

После этого на экране появится приглашение для ввода пароля и его подтверждения: «Enter a case-sensitive new password». Максимальная длина имени пользователя и пароля составляет 15 символов. После успешного создания учетной записи на экране появится слово Success. Ниже приведен пример создания учетной записи с уровнем привилегий Admin:

Username «dlink»:
DES-3200#create account admin dlink
Command: create account admin dlink
Enter a case-sensitive new password:****
Enter the new password again for confirmation:****
Success.
DES-3200#

Изменить пароль для существующей учетной записи пользователя можно с помощью следующей команды: DES-3200# config account Ниже приведен пример установки нового пароля для учетной записи dlink:

DES-3200#config account dlink
Command: config account dlink
Enter a old password:****
Enter a case-sensitive new password:****
Enter the new password again for confirmation:****
Success.

Проверка созданной учетной записи выполняется с помощью следующей команды: DES-3200# show account. Для удаления учетной записи используется команда delete account .

Шаг второй. Чтобы коммутатором можно было удаленно управлять через web-интерфейс или Telnet, коммутатору необходимо назначить IP-адрес из адресного пространства сети, в которой планируется использовать устройство. IP-адрес задается автоматически с помощью протоколов DHCP или BOOTP или статически с помощью следующих команд CLI:

DES-3200# config ipif System dhcp,
DES-3200# config ipif System ipaddress
xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy.

Здесь xxx.xxx.xxx.xxx — IP-адрес, yyy.yyy.yyy.yyy. — маска подсети, System — имя управляющего интерфейса коммутатора.

Шаг третий. Теперь нужно настроить параметры портов коммутатора. По умолчанию порты всех коммутаторов D-Link поддерживают автоматическое определение скорости и режима работы (дуплекса). Но иногда автоопределение производится некорректно, в результате чего требуется устанавливать скорость и режим вручную.

Для установки параметров портов на коммутаторе D-Link служит команда config ports. Ниже я привел пример, в котором показано, как установить скорость 10 Мбит/с, дуплексный режим работы и состояние для портов коммутатора 1–3 и перевести их в режим обучения.

DES-3200#config ports 1-3 speed 10_full learning
enable state enable
Command: config ports 1-3 speed 10_full learning
enable state enable
Success

Команда show ports выводит на экран информацию о настройках портов коммутатора.

Шаг четвертый. Сохранение текущей конфигурации коммутатора в энергонезависимой памяти NVRAM. Для этого необходимо выполнить команду save:

DES-3200#save
Command: save
Saving all settings to NV-RAM… 100%
done.
DES-3200#

Шаг пятый. Перезагрузка коммутатора с помощью команды reboot:

DES-3200#reboot
Command: reboot

Будь внимателен! Восстановление заводских настроек коммутатора выполняется с помощью команды reset.

DES-3200#reset config

А то я знал одного горе-админа, который перезагружал коммутаторы командой reset, тем самым стирая все настройки.

loop_detection для коммутаторов Alcatel
interface range ethernet e(1-24)
loopback-detection enable
exit
loopback-detection enable

loop_detection для коммутаторов Dlink
enable loopdetect
config loopdetect recover_timer 1800
config loopdetect interval 1
config loopdetect mode port-based
config loopdetect trap none
config loopdetect ports 1-24 state enabled
config loopdetect ports 25-26 state disabled

Грамотный админ обязательно установит на каждом порте соответствующую защиту.

Но сегодня мы хотим применить loopback во благо. У такого включения есть замечательное свойство. Если на порте коммутатора имеется петля, устройство считает, что к нему что-то подключено, и переходит в UP-состояние, или, как еще говорят, «порт поднимается». Вот эта-то фишка нам с тобой и нужна.

Loopback

Loop — это аппаратный или программный метод, который позволяет направлять полученный сигнал или данные обратно отправителю. На этом методе основан тест, который называется loopback-тест.

Для его выполнения необходимо соединить выход устройства с его же входом. Смотри фото «loopback-тест».

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

Устраиваем аппаратную петлю

Устроить обратную связь очень просто: соединяется канал приема и передачи, вход с выходом (Rx и Tx).

Как найти петлю в локальной сети?Таблица 1. Распиновка RJ45

Обожми один конец кабеля стандартно, а при обжиме второго замкни жилы 2 и 6, а также 1 и 3. Если жилы имеют стандартную расцветку, надо замкнуть оранжевую с зеленой, а бело-оранжевую с бело-зеленой. Смотри рис. 3.

Как найти петлю в локальной сети?Нумерация контактов RJ-45

Теперь, если воткнешь такой «хвостик» в порт коммутатора или в свою же сетевую карту, загорится зелёненький сигнал link. Ура! Порт определил наше «устройство»!

Красная кнопка, или Hello world

Ну куда же без Hello world? Каждый должен хоть раз в жизни вывести эти слова на экран монитора! Сейчас мы с тобой напишем простейший обработчик событий, который будет срабатывать при замыкании красной кнопки. Для этого нам понадобятся только кнопка с двумя парами контактов, работающих на замыкание, витая пара и коннектор. На всякий случай приведу схему красной кнопки (рис. 4).

Как найти петлю в локальной сети?Схема красной кнопки

Паяльник в руках держать умеешь? Соединяем так, чтобы одна пара контактов замыкала оранжевую жилу с зеленой, а другая — бело-оранжевую с бело-зеленой. На всяких случай прозвони соединение мультиметром.

Все, теперь можно тестировать. Вставь обжатую часть в порт сетевой карты или в порт коммутатора. Ничего не произошло? Хорошо. Нажми кнопку. Линк поднялся? Замечательно!

Как найти петлю в локальной сети?Сама красная кнопка

Вот листинг простейшего обработчика Hello World на Cshell:

Скрипт на Cshell, генерящий Hello word
#!/bin/csh
# ver. 1.0
# Проверяем, запущен ли процесс в памяти
if ( ‘ps | grep ‘redbut’ | grep -v ‘grep’ | wc -l’

Реально ли найти петлю в локальной сети из неуправляемых коммутаторов?

Локальные сети, построенные в конце 90-х уже, конечно, изжили себя. Однако, их модернизация или полное обновление в некоторых ситуациях просто физически невозможно или финансово нецелесообразно — не позволяет планировка здания, реже — топология сети.

Часто проблемой с «петлей» страдают именно такие сети, которые еще можно встретить с студенческих общежитиях. Так как цены на ремонт или перепланировку общежития на голову выше цены ремонт квартиры. Речь идет не о косметическом ремонте, от которого толку, в общем-то, будет мало.

А капитальный ремонт в текущих реалиях непостижимая цель для наших МОУ.

Для начала разберемся, что же такое петля.

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

Cisco тоже делает неуправляемые коммутаторы
Как найти петлю в локальной сети?

Хорошо, если ядро сети построено на хорошем управляемом коммутаторе, вроде Mikrotik, который сообщит (в логах) на каком интерфейсе появилась петля. Есть две основные причины появления петли — сбойный свитч, либо неверно настроенное абонентское устройство, подключенное в общую сеть (например, DHCP-сервер на роутере, использующий широковещательные пакеты). А теперь плохие новости:

В сети, построенной на неуправляемых свитчах, определить местонахождение петли ни аппаратными, ни программными средствами, нельзя!

Знаменитый MikroTik RB951G-2HnD
Как найти петлю в локальной сети?

Единственное, что может помочь — визуальный осмотр всех свитчей в сети. Зачастую проблемное устройство выдает беспорядочная, взбесившаяся индикация на всех портах, но далеко не факт, что это не полезный трафик. «Защиты от дураков» без костылей, в общем-то нет, даже если вы привяжете мак-адрес сетевых карт к IP-адресу, который выставите вручную — это не спасёт от широковещательного запроса.

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

Коммутаторы Маршрутизация

Петля в локальной сети: что такое и как найти

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

Петля является крайне неприятным явлением для локальной сети или её отдельного участка и требует немедленного решения. Для большего понимания простейшая схема петли представлена ниже.

Как найти петлю в локальной сети?Пример петли в локальной сети

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

Поняв, что проблема, скорее всего, в неисправности коммутатора или кольце, я отправился в коммутационную. Там меня ждали три неуправляемых D-Link’а (это не оскорбление, а вполне себе термин для коммутатора).

Поначалу я всё же думал на неисправность коммутатора (тем более, что есть у меня субъективное недоверие к D-link). Количество портов трех 24-портовых коммутаторов для небольшого офиса на 10-15 машин было излишним, и оставалось еще от старых-добрых времен, когда компов в сетке было больше.

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

Тогда ко мне и закралась мысль о кольце.

Первым делом я стал проверять, не может ли быть так, что один и тот же патч-корд воткнут обоими концами в один свич. Мне повезло, и такой кабель действительно был. Это вполне могло быть «подарком» предыдущего админа, чем-то не сошедшегося с руководством. Во всяком случае, вряд ли бы кто-то полез к свичам случайно.

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

Итак, несколько советов как вычислить петлю в локальной сети:

  1. Локализуйте проблему. Падает вся сеть или отдельный участок? Если у одного отдела сеть есть, а у другого нет, то проверяйте коммутатор, раздающий сеть на тот отдел.
  2. Какой тип коммутатора(-ов) используется? Это может быть управляемый коммутатор или неуправляемый. В проблемном участке может быть и смесь из обоих вариантов. В случае с неуправляемым коммутатором придется вычислять проблемный порт методом научного тыка. В управляемом коммутаторе порты можно закрыть через веб-интерфейс.
  3. Проверьте кабели. Скорее всего, дело всё-таки в физическом закольцевании сети. Но может «сдуреть» отдельно взятый порт в коммутаторе или сетевой плате компьютера. Редко, но может встретиться ситуация с дублированием функций DHCP-сервера, когда устройство (роутер, коммутатор или компьютер), которое этого делать не должно, раздаёт остальным некорректные настройки сети. В таком случае выключите DHCP-сервер и попробуйте получить адрес с какого-либо компьютера в проблемном участке сети. Если опасения подтвердились — проверяйте устройства на предмет включения функции DHCP-сервера. В первую очередь, конечно, роутеры и коммутаторы.

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

Как найти петлю в локальной сети и как её оперативно устранить

Сетевая петля — на самом деле, опасная штука. Очень часто ее появление связано с неправильным подсоединением линков маршрутизаторов или коммутаторов. Реже она случается из-за неверных настроек маршрутного адреса.

Как найти такую петлю, мы разберем чуть ниже. Но в целом предугадывать возникновение таких петель не получается. Ее наличие становится видимым, уже когда проявляются признаки зацикливания или когда уже полностью «ложится» вся наша сеть.

Как образуется сетевая петля

Если посмотреть на принцип «сетевой петли», то для большего понимания скажем, что это когда пакет каких-либо данных долго блуждает по одному и тому же маршрутному кругу от коммутатора к коммутатору и никак не может достичь своего конечного получателя.

От этого случается перегрузка сети и она «ложится», так как становится просто перегруженной IP-пакетами, которые не перестают множиться из-за коммуникации между сетевыми устройствами.

Но пакеты не покидают маршрутную сеть, а блуждают внутри сетевой петли, так и образуется сетевой шторм.

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

Как определить сетевую петлю по ее признакам

Чтобы найти сетевую петлю, нужно определить ее сначала по ее признакам. Благо, они четко определяемые и заметные. Для начала нужно закрепить 2 определения:

  1. TTL — это временное ограничение жизни сетевого пакета;
  2. IP ID — это и так понятно.

Любой сетевой пакет, пройдя через коммутатор в своем поле TTL, заполучает значение на одну единицу меньше. Так вот, очень уменьшенное значение TTL — это явный признак зацикленной локальной сети.

Потому что низкий TTL объясняется тем, что пакет проходил много раз через маршрутизатор, с каждым разом уменьшаясь. Его нормальное значение обычно не превышает 30.

Уменьшаясь до единицы в сетевой петле, он потом «погибает».

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

Как найти сетевую петлю в локальной сети

Чтобы найти петлю в сети, можно воспользоваться анализатором сетевого трафика — сниффером. Его плюс, что он показывает не только имеющуюся петлю, но и все устройства, которые ее создали. Чтобы воспользоваться сниффером, нужно следовать определенным шагам:

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

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

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

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

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

Discovering Network Loops (Layer 2) with Wireshark

A network loop occurs when there is more than one path exists between the source and destination. Consider the figure below, in which two switches are connected to each other with multiple path. Imagine that Layer 2 loop prevention mechanism is not enabled or is broken on the switches somehow.

The broadcast or multicast frames created by any end point in the network will be received by the switches and flooded out of every port except the port that the frame was received on, creating a layer 2 loop between two switches.

Even if you disconnect every end point from the network, there will still be an infinite broadcast and multicast storm between both switches.

What is broadcast, multicast, unicast and how does it work?

In packet switching network, there are 3 types of frames; broadcast, multicast and unicast.

1. Broadcast Frame

Broadcast is the term used to describe communication where a frame is sent from one end point to all other end points at the same time. In this type of communication, there is only one sender that sends data frames to all connected receivers.

2. Multicast Frame

Multicast is the term used to describe communication where a frame is sent from one end point to one or multiple end points at the same time. In this type of communication, there is only one sender that sends data frame to one or multiple connected receivers.

3. Unicast Frame

Unicast is the term used to describe communication where a frame is sent from one end point to the only one end point. In this type of communication, there is only one sender that sends data frame to one connected receiver.

How does a switch know if a frame is broadcast, multicast or unicast?

It is all about how mac address format is designed. MAC address is 48 bits (6 bytes) unique identifier. Each byte is called an “octet”. See more details below.

source: https://en.wikipedia.org

The first 24 bits (3 bytes) of mac address is called organisationally Unique Identifier (OUI), which identifies a vendor, manufacturer, or other organization. See some OUI below.

  • 00:12:1e: represents Juniper Networks.
  • 00:19:06:  represents Cisco Systems, Inc.
  • 00:1d:60: represents ASUSTek COMPUTER INC.
  • 52:54:00:  represents Realtek.
  • 08:00:27: represent PCS Systemtechnik GmbH.

ALSO READ: Configure and Test FreeRADIUS PAP & CHAP Authentication

Individual/Group (IG) bit is used to differentiate unicast frames from multicast frames. When the bit is set to zero (0), it means it is a unicast frame. When it is set to one (1), it means the frame is a multicast.

The bit is located in the most significant byte of mac address. In the figure above, “b0” is the IG bit.

When it comes to broadcast frames, a special mac address (FF-FF-FF-FF-FF-FF) is used to distinguish broadcast frames from the other traffics.

What are the reasons behind a network loop?

Network loops occur due to many reasons. The most common causes are below.

  • Human error in cabling.
  • Unidirectional link failure in a fiber cable.
  • Buggy spanning tree.
  • Buggy network devices (IP Phones).

As a network administrator, I mostly experience the first and last one.

For learning and testing purpose, the easiest way to create a loop is just disabling spanning tree on the switch and plugging network cable from one port to the other one. But it is a rare case in a network to have that kind of loop.

It happens only with hubs and dummy switches that do not run a spanning tree. A second method to easily create a loop is using buggy IP phones. Here is a list from Cisco: https://quickview.cloudapps.cisco.com/quickview/bug/CSCvd03371

ALSO READ: Analyze TLS and mTLS Authentication with Wireshark

If you have one of the phones in the list, you can create a loop. (I am sure there are some other models that have the bug but not listed there)

When you accidentally plug both PC Port cable and Network Port cable of the phone into the network switch, it’ll cause a network loop that brings down the network.

The reason is that the STP packet sent by the switch through the Network Port gets filtered by the phone.

Since the switch does not get the STP packet back through the PC Port, it will not block that port, leaving the network prone to a broadcast or multicast storm. In a short time, a loop occurs and the network goes down.

How to protect your network from loop?

It actually depends on what kind of equipment you have and what sort of loop prevention mechanisms it has. Protection method commonly used are below.

  • Enabling Storm control
  • Enabling Spanning Tree Protocol (STP, RSTP, MSTP, etc)
  • Enabling the other proprietary loop prevention mechanism

Find a loop with Wireshark

Use “unicast / (broadcast +multicast)” formula which gives you a great idea. Let’s test it on my packets I captured during the loop. We will create a filter (eth.dst.lg == 0) that shows the packets contain IG bit of zero (0), which displays unicast packets. See the details below.

ALSO READ: 100% proven ways to find hidden endpoints [Tutorial]

Number of unicast packets is 510. The number of total packets is 1870829.

Broadcasts + multicast = total packetsunicasts = 1870829-510 = 1870319

As you see both in the screenshot and calculation, unicast packet ratio is pretty low which indicate that a loop has occurred. The number of broadcast and multicast packets can be found with this filter: (eth.dst.lg == 1  ) or (eth.addr == ff:ff:ff:ff:ff:ff)

Header Checksum or Identification fields in IP header can be used to check if a loop has happened.

Since every time both fields change for each packet, when you see multiple the same Header Checksum or Identification field in other packets, you can easily say there has been a loop. Remember that Header Checksum and Identification are 2 bytes fields.

Even if it is low, there is always a chance there would be a collision of the fields. Collision simply means that the same identifier or calculation to be assigned to the different packets.

  • 1) Select a broadcast or multicast packet and go to IP header section.
  • 2) Right click on the “Header Checksum” and a menu appears.
  • 3) Click on “Apply as Colum”

4) Do the same steps for “Identification” filed too.

шары в майнинге

При запуске любого майнинга пользователь периодически видит текст с найденными шарами, в etherium это надпись share found в других майнерах может быть Accepted share, или просто слово yes.

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

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

share found

Шары в процессе майнинга

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

непринятые шары

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

  • устаревшее оборудование;
  • конфликт «железа» на ферме;
  • износ видеокарт или процессора.

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

Зачем нужны шары

Кроме того, что share необходимы для поиска цифровой подписи нового блока, они используются в качестве идентификатора майнера. Сложность добычи любых альтов растет в геометрической прогрессии, соответственно, на одном ПК или ферме найти блок крайне сложно. На это уйдет от нескольких месяцев до 2-3 лет. Проблема решается объединением майнеров в сообщество – pool.

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

Сложность шары

Найденная шара еще не означает, что будет открыт новый блок. Это только возможное решение. Поэтому считать будущий доход, отталкиваясь от количества принятых share, нельзя. Рассмотрим простой пример, как сложность решений влияет на добычу криптовалюты: хэшрейт пула – 5 Ph/s, мощность видеокарты класса GeForce 1070 – около 35 Mh/s. Установлено 5 карт. Составляем пропорцию: 35 000 000*5*100%/5 000 000 000 000 000=0,0000035%. Соответственно, чтобы получать хотя бы 1% от доходов пула, нужно около 300 000 ферм.

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

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

При расчете вознаграждения сложность шар подбирается еще и с учетом времени, которое требуется для нахождения одного блока. Все эти нюансы привели к тому, что появились различные системы формирования выплат: PPS, PROP, PPLNT и др. Наиболее часто используется PPLNS.

Как работают выплаты PPLNS

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

Рассмотрим пример: ограничение установлено в 30 000, за время нахождения блока майнер успел передать 500 шар, вознаграждение за блок – 10 альткоинов. Формула выглядит так: 500*10/30000=0,16. Пользователь получит столько альтов на баланс.

Каждый раз решение задачи занимает разное время и приносит различный результат. Используя одни и те же технические ресурсы, за час можно получить как 1000 шар, так и 500 или 2000. Поэтому предложенная система расчетов считается одной из наиболее честных и удобных.

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

Инспектирование CSS Grid

От автора: в этом руководстве показано, как определять сетки CSS на странице, инспектировать их и устранять проблемы с макетом в панели Элементы Chrome DevTools.

Откройте для себя CSS-сетки

Когда к HTML-элемент на странице применено display: grid или display: inline-grid, вы можете увидеть значок grid рядом с ним в панели Элементы.

Инспектирование CSS Grid

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

Инспектирование CSS Grid

Профессия Frontend-разработчик PRO

Готовим Frontend-разработчиков с нуля

На курсе вы научитесь создавать интерфейсы веб-сервисов с помощью языков программирования и
дополнительных технологий. Сможете разрабатывать планировщики задач, мессенджеры, интернет-магазины…

Узнать подробнее

До 10 проектов в портфолио для старта карьеры

Подходит для новичков без опыта в программировании

Практика на вебинарах с разработчиками из крупных компаний

Откройте панель Макет. Когда на странице включены сетки, панель Макет включает раздел Сетка, содержащий ряд параметров для просмотра сеток.

Инспектирование CSS Grid

Параметры просмотра сетки

Раздел Сетка в панели Макет содержит 2 подраздела:

Настройки отображения наложения

Наложения сетки

Давайте подробно рассмотрим каждый из этих подразделов.

Настройки отображения наложения

Настройки отображения наложения состоят из 2 частей:

а. Выпадающее меню с параметрами:

Скрыть метки линий: скрыть метки линий для каждого наложения сетки.

Показать номера строк: отображение номеров строк для каждого наложения сетки (выбрано по умолчанию).

Показать имена линий: отображение имен линий для каждого наложения сетки в случае сеток с именами линий.

б. Чек-боксы с опциями:

Показать размеры треков: переключает отображение размеров треков.

Отображать имена областей: переключает отображение имен областей в случае сеток с именованными областями сетки.

Удлинение линий сетки: по умолчанию линии сетки отображаются только внутри элемента с display: grid или display: inline-grid; при включении этого параметра линии сетки доходят до края области просмотра вдоль каждой оси.

Рассмотрим эти настройки более подробно.

Показать номера строк

По умолчанию положительные и отрицательные номера строк отображаются в наложенной сетке.

Инспектирование CSS Grid

Скрыть метки линий

Выберите Скрыть метки линий, чтобы скрыть номера строк.

Инспектирование CSS Grid

Показать имена линий

Вы можете выбрать Показать имена линий, чтобы просматривать имена линий вместо номеров. В этом примере у нас есть 4 строки с именами: left, middle1, middle2 и right.

В этой демонстрации элемент orange располагается слева направо с помощью CSS grid-column: left / right. Отображение имен линий упрощает визуализацию начальной и конечной позиции элемента.

Инспектирование CSS Grid

Показать размеры треков

Установите флажок Показать размеры треков, чтобы просмотреть размеры треков в таблице.

DevTools будет отображать [authored size] — [computed size] в каждой строке: Указанный размер: размер, определенный в таблице стилей (опускается, если не определен). Рассчитанный размер: фактический размер на экране.

В этой демонстрации размеры колонок snack-box определены в CSS grid-template-columns:1fr 2fr;. Таким образом, метки линий колонок показывают как указанные, так и вычисленные размеры: 1fr — 96,66 пикселей и 2fr — 193,32 пикселей.

Метки строк рядов показывают только вычисленные размеры: 80 пикселей и 80 пикселей, так как в таблице стилей не определены размеры рядов.

Инспектирование CSS Grid

Показать имена областей

Чтобы просмотреть имена областей, установите флажок Показать имена областей. В этом примере есть 3 области сетки — top, bottom1 и bottom2.

Инспектирование CSS Grid

Продлить линии сетки

Установите флажок Продлить линии сетки, чтобы удлинить линии сетки до края области просмотра по каждой оси.

Инспектирование CSS Grid

Наложения сетки

Раздел Наложения сетки содержит список сеток, присутствующих на странице, каждая с чек-боксом с различными параметрами.

Включить отображение наложения нескольких сеток

Вы можете включить отображение наложения нескольких сеток. В этом примере есть наложение 2 сеток — main и div.snack-box, каждая из которых представлена различными цветами.

Инспектирование CSS Grid

Настроить цвет наложения сетки

Вы можете настроить цвет наложения каждой сетки, щелкнув палитру цветов.

Инспектирование CSS Grid

Выделить сетку

Щелкните значок выделения, чтобы сразу выделить элемент HTML, прокрутите до него на странице и выберите его в панели Элементы.

Инспектирование CSS Grid

Автор: Jecelyn Yeen

Источник: developers.google.com

Профессия Frontend-разработчик PRO

Готовим Frontend-разработчиков с нуля

На курсе вы научитесь создавать интерфейсы веб-сервисов с помощью языков программирования и
дополнительных технологий. Сможете разрабатывать планировщики задач, мессенджеры, интернет-магазины…

Узнать подробнее

До 10 проектов в портфолио для старта карьеры

Подходит для новичков без опыта в программировании

Практика на вебинарах с разработчиками из крупных компаний

Редакция: Команда webformyself.

Равномерное распределение точек на сфере

Время на прочтение
8 мин

Количество просмотров 19K

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

Какое-то время назад этот пост появился на главной странице Hacker News. Его обсуждение можно прочитать здесь.

Введение

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

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

  • Упаковка и покрытие
  • Выпуклые оболочки, ячейки Вороного и треугольники Делоне
  • Ядра $s$-энергии Риса
  • Кубатура и определители

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

Ради краткости в этом посте мы рассмотрим только два критерия: минимальное расстояние упаковки и выпуклую оболочку/сетку Делоне (объём и площадь).

В разделе 1 мы покажем, как можно изменить каноническую сетку Фибоначчи для построения улучшенного распределения упаковки. В разделе 2 мы покажем, как можно изменить каноническую сетку Фибоначчи для построения улучшенных параметров выпуклых оболочек (объёма и площади поверхности).

Раздел 1. Оптимизация расстояния упаковки

Часто эту задачу называют задачей Тэммса в честь ботаника Тэммса, искавшего объяснение структуры поверхности пыльцевых зёрен. Критерий упаковки требует от нас максимизировать наименьшее расстояние между соседями для

$N$ точек. То есть

$d_N = min_{i neq j} | x_i – x_j |$

Это значение уменьшается со скоростью

$~ 1/sqrt{N}$, поэтому полезно будет определить нормализованное расстояние, а также асимптотический предел нормализованного расстояния как

$d^*_N = sqrt{N} d_N ,quad quad d^* = lim_{N rightarrow infty} d^*_N$

Сетка Фибоначчи

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

$F_k ={1, 1, 2, 3, 5, 8, 13, …}$ и золотым сечением

$phi = (1+sqrt{5})/2$.

В литературе встречается два схожих определения множества точек сферической сетки Фибоначчи. Исходное определено строго для

$N$, равного одному из членов ряда Фибоначчи,

$F_m$, и хорошо изучено в теории чисел.

$t_i = left( frac{i}{F_m}, frac{i F_{m-1}}{F_m} right) quad textrm{for }; 0 leq i leq N-1$

Второе определение обобщает формулу до произвольного количества

$N$ и используется в вычислениях чаще:

$t_i = left( frac{i}{N}, frac{i }{phi} right) quad textrm{for }; 0 leq i leq N tag{1}$

где

$phi = frac{1+sqrt{5}}{2} = lim_{n rightarrow infty} left( frac{F_{n+1}}{F_n} right)$

Ниже показан пример таки сеток Фибоначчи. Преобразованием можно превратить эти множества точек в хорошо известные нам спирали Фибоначчи

$(r,theta) = (sqrt{x_1}, 2pi x_2)$

Аналогичным образом эти множества точек можно перенести из единичного квадрата

$[0, 1]^2$ на сферу при помощи цилиндрической равновеликой проекции:

$(x,y) rightarrow (theta, phi) : quad left( cos^{-1}(2x-1) – pi/2, 2pi y right)$

$(theta,phi) rightarrow (x,y,z) : quad left (costheta cosphi, cos theta sin phi, sin theta right)$

Множество различный версий код на Python для неё можно найти на stackoverflow: Evenly distributing points on a sphere.

Даже несмотря на то, что сферические множества Фибоначчи глобально не являются наилучшим распределением сэмплов на сфере (потому что их решения не совпадают с решениями для платоновых тел при

$n=4,6,8,12,20$), они обладают превосходными свойствами сэмплирования и очень легки в построении по сравнению с другими, более сложными схемами сферического сэмплирования.

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

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

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

Вторую проблему сложнее всего решить с точки зрения практики: наложение имеет на каждом полюсе две вырожденные точки. Рассмотрим две точки, находящиеся очень близко к полюсу, но отличающиеся на 180 градусов по долготе. На единичном квадрате (и на цилиндрической проекции) они будут соответствовать двум очень далёким друг от друга точкам, однако при наложении на поверхность сферы они могут быть соединены очень малой дугой, проходящей через северный полюс. Из-за этой конкретной проблемы многие спиральные наложения оказываются недостаточно оптимальными.

Сферическая спираль Фибоначчи, полученная из уравнения 1, даёт значение

$d_N^*$ для всех

$N$, то есть

$d^* = 2$.

Сетка 1

Более распространённая версия (особенно в компьютерных системах), создающая более хорошее значение

$d^*=3.09$, имеет вид:

$t_i = left( frac{i+1/2}{N}, frac{i}{phi} right) quad textrm{for }; 0 leq i leq N-1 tag{2}$

Она располагает точки в средних точках интервалах (по правилу средней точки в квадратной формуле Гаусса), поэтому для

$n=100$, значения первой координаты будут такими:

${ frac{0.5}{100},frac{1.5}{100},frac{2.5}{100},ldots, frac{97.5}{100},frac{98.5}{100},frac{99.5}{100} }$

Сетка 2.

Ключевым моментом для дальнейшего улучшения уравнения 2, является осознание того, что

$d^*_N$ всегда соответствует расстоянию между точками

$t_0$ и

$t_3$, которые находятся на полюсах. То есть для улучшения

$d_N$ точки рядом с полюсами должны быть разнесены ещё дальше.

Если мы определим следующее распределение:

$t_i(varepsilon) = left( frac{i+1/2+ varepsilon}{N+2varepsilon}, frac{i}{phi} right) quad textrm{for }; 0 leq i leq N-1$

$d^*_N$ — кривые для различных значений.

$varepsilon=0$ (синяя);

$varepsilon=frac{1}{2}$ (оранжевая);

$varepsilon=frac{3}{2}$ (зелёная); и

$varepsilon=frac{5}{2}$ (красная). Можно увидеть, что

$varepsilon = frac{5}{2}$ даёт результаты ближе к асимптотическим результатам. То есть при

$N>20$ следующее простое выражение генерирует значительно более хорошие результаты

$d^* = 3.29$ по сравнению с канонической сферической сеткой Фибоначчи:

$t_i = left( frac{i+3}{N+5}, frac{i}{phi} right) quad textrm{for }; 0 leq i leq N-1 tag{3}$

То есть при

$N=100$ значения первой координаты будут равны:

${ frac{3}{105},frac{4}{105},frac{5}{105},ldots, frac{100}{105},frac{101}{105},frac{102}{105} }$

Рисунок 1. Различные значения $d_N^*$ при разных значениях $epsilon$. Чем больше значение, тем оптимальнее конфигурации. Мы видим, что $epsilon simeq 2.5$ обеспечивает решение, близкое к оптимальному.

Сетка 3.

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

$d_N^*$ иногда почти «не прощают ошибок» — единственная точка в недостаточно оптимальной позиции может катастрофически снизить оценку всего распределения точек.

В нашем случае вне зависимости от величины

$N$ значение

$D_N^*$ обычно определяется четырьмя точками, наиболее близкими к каждому из полюсов, особенно

$t_0$ и

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

$d_N$ разделением изначальных полярных точек в ряду, мы на самом деле ещё больше увеличиваем пустоту на полюсе! Поэтому мы представили альтернативу сетке 2, которая в общем случае более предпочтительна, потому что она не демонстрирует такой большой пустоты рядом с полюсами.

Она почти идентична сетке 2, но имеет два отличия. Во-первых, она использует

$varepsilon = 11/2$ при

$1 leq i leq N-2$. Во-вторых, кроме этих

$N-2$ точек первая и последняя точки располагаются на каждом из полюсов.

То есть:

$t_0=(0,0); ; t_n = (1,0); quad t_i = left( frac{i+6}{N+11}, frac{i}{phi} right) quad textrm{for }; 1 leq i leq N-2 tag{4}$

Удивительное свойство этого метода построения заключается в том, что несмотря на то, что его создание было мотивировано желанием минимизировать пустоты на полюсах, он на самом деле имеет наилучшее среди всех методов значение $d_N$ и $d^*$ с $d^* = 3.31$!

То есть при

$N=100$ значения первой координаты будут такими:

${ 0; ; frac{7}{111},frac{8}{111},frac{9}{1111},ldots, frac{102}{111},frac{103}{111},frac{104}{111} ; ; 1}$

Рисунок 2. Различные конфигурации сеток. Каноническая сетка Фибоначчи слева. Заметьте, что несмотря на то, что у средней сетки $d_N^*$ улучшено, на полюсе у неё есть заметная пустота. Сетка 3 не имеет пустоты на полюсе и обладает наилучшим значением $d_N^*$.

Сравнение

При больших значениях

$N$ это значение

$d^*$ чрезвычайно хорошо сравнимо с другими методами, например, геодезическими куполами, которые основаны на триангулированных проекциях с граней платоновых тел на поверхность сферы. Неудивительно что самые качественные геодезические купола построены на основе икосаэдра или додекаэдра.

Основанные на икосаэдре геодезические купола при различных значениях

$N$.

$begin{array}{|c|cccccccccc|} hline
 N & 12 & 42 & 92 & 162 & 252& 362 & 492 & 642 & 812 & 1002 \ hline
 d^* & 3.64 & 3.54 & 3.34 & 3.22 & 3.15 & 3.09 & 3.06 & 3.03 & 3.00 & 2.99 \ hline
 end{array}$

Основанные на додекаэдре геодезические купола при различных значениях

$N$.

$begin{array}{|c|ccccccc|} hline
 N & 20 & 32 & 122 & 272 & 482 & 752 & 1082\ hline
 d^* & 3.19 & 3.63 & 3.16 & 2.99 & 2.90 & 2.84 & 2.81 \ hline
 end{array}$

Кроме того, усечённый икосаэдр, соответствующий форме фуллерена

$C_{60}$, имеет всего лишь

$d^* = 3.125$.

То есть при

$N>100$ сетки на основе уравнения 3 лучше любых геодезических многограннико.

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

$begin{array}{|lr|} hline
 text{Lattice 1} & 3.09\ hline
 text{Max Determinant} & 3.19 \ hline
 text{Lattice 2} & 3.28 \ hline
 text{Lattice 3} & 3.31 \ hline
 text{Zonal Equal Area} & 3.32 \ hline
 text{Coulomb} & 3.37 \ hline
 text{Log Energy} & 3.37\ hline
 end{array}$

Вывод из раздела 1

Сетка 3, созданная по уравнению 3, является модификацией канонической сетки Фибоначчи, обеспечивающей гораздо более качественную упаковку распределения точек. То есть

$t_0 = (0,0); ; ; t_i = left( frac{i+6}{N+11}, frac{i}{phi} right); ;; t_{N-1} = (0,1); quad textrm{for }; 1 leq i leq N-2$

Раздел 2. Оптимизация выпуклой оболочки (сетки Делоне)

В предыдущем разделе мы оптимизировали распределение по

$d^*_N$, однако эти модификации ухудшают другие показатели, например объём выпуклой оболочки (сетки Делоне). В этом разделе рассказывается, как равномерно распределить точки на сфере таким образом чтобы оптимизировать (максимизировать) такой более глобальный показатель, как объём выпуклой оболочки.

Обозначим

$C_N$ как выпуклую оболочку

$N$ точек,

$epsilon_N = N left( frac{4pi }{3} ; – textrm{Vol}(C_N) right)$

сюда включён фактор нормализации

$N$, потому что абсолютное расхождение снижается со скоростью

$~ 1/N$.

Поведение

$epsilon_N$ при различных

$N$ можно увидеть на рисунке 3 (синяя линия).

Для снижения рассогласованности объёмов необходимо заметить, что несмотря на использование

$phi$, из логичности золотого сечения при

$N rightarrow infty$ необязательно следует, что оно является наилучшим значением для конечного

$N$. Говоря по-научному, можно сказать, что нужно учесть влияние коррекции конечности членов.

Давайте обобщим уравнение 1 следующим образом:

$t_i = left( frac{i+1/2}{N}, frac{i}{g(N)} right) quad textrm{for }; 0 leq i leq N-1 tag{4}$

где определим

$g(n)$ как

$g(n) =
 begin{cases}
 3-phi, & text{if $k$ is even} \
 phi, & text{if $k$ is odd}
 end{cases}
 tag{5}$

где

$k = leftlfloor textrm{log}_{phi}(frac{n}{1.5}) rightrfloor = leftlfloor frac{ln (n/1.5)}{ln phi } rightrfloor$

где

$lfloor x rfloor$ — функция округления до ближайшего целого в меньшую сторону.

На рисунке 3 показано, насколько значительно оптимизируется рассогласованность объёмов для половины значений

$N$.

Причина этого заключается в малоизвестном факте: все числа

$x$, удовлетворяющие особому преобразованию Мёбиуса, исходя из иррациональности эквивалентны

$phi$.

$x = frac{aphi+b}{cphi+d}, quad textrm{for all integers} ; ; a,b,c,d ; textrm{such that } |ad-bc|=1$

Следовательно, причина того, что

$phi$ и

$3-phi$ так хорошо подходят друг другу, заключается в том, что

$frac{1}{phi} = frac{phi+1}{2phi+1}, quad quad frac{1}{3-phi }= frac{2phi+1}{1phi+1}$

Рисунок 3. Рассогласованность между объёмом выпуклой оболочки из точек и объёмом единичной сферы. Учтите, что чем она меньше, тем лучше. Рисунок показывает, что гибридная модель (оранжевая линия), основанная на $phi$ и $3-phi$, обеспечивает более качественное распределение точек, чем каноническая сетка Фибоначчи (голубая линия).

Для оставшейся половины мы сначала определим вспомогательный ряд

$A_N$, являющийся разновидностью ряда Фибоначчи

$A_1 =1, ; A_2 = 4; ; A_{n+2}= A_{n+1}+A_n ; textrm{for } n = 1,2,3,…$

То есть

$A_N = 1,4,5,9,14,23,37,60,97,157,254,411,…$

Все дроби этого ряда имеют изящные непрерывные дроби, а в пределе сходятся к

$phi$. Например,

$t _5/t_4 = 1+cfrac{1}{1+cfrac{1}{1+cfrac{1}{1+cfrac{1}{4}}}}$

Теперь мы можем полностью обобщить

$g(n)$ следующим образом:

$g(N) =
 begin{cases}
 3-phi, & text{if $k$ is even} \
 A_{j+1}/A_j , & text{if $k$ is odd, where $j= (k+7)/2$}
 end{cases}
 tag{6}$

В таблице ниже показаны значения

$g(N)$ для различных

$N$.

$begin{array}{|c|c|c|c|c|c|c|c|c|} hline
 N & 4-6 & 7-10 & 11-16& 17-26& 27-43& 44-70& 71-114 & 115-184 & 185-300\ hline
 g(n) &3-phi & frac{23}{14} & 3-phi & frac{37}{23} & 3-phi & frac{60}{37} & 3-phi & frac{97}{60} & 3-phi \ hline
 end{array}$

Из рисунка 4 видно, что относительно объёма выпуклой оболочки это новое распределение лучше, чем каноническая сетка для всех значений

$n$

Рисунок 4. Рассогласование между объёмом выпуклой оболочки и объёмом единичной сферы. Чем меньше значения, тем лучше. Это говорит нам, что предлагаемый новый метод (зелёная линия) постоянно обеспечивает лучшее по сравнению с канонической сеткой Фибоначчи (синяя линия) распределение.

Рисунок 5. Наглядное сравнение канонической сетки (слева) с новой модифицированной сеткой (справа) при n=35 и n=150. Визуально различия почти незаметны. Однако в условиях, требующих максимальной эффективности, модифицированная версия (справа) обеспечивает небольшое, но поддающееся количественному измерению улучшению и в объёме, и в площади поверхности выпуклой оболочки.

Любопытно, что это распределение также незначительно, но неуклонно снижает рассогласование между площадью поверхности выпуклой оболочки и площадью поверхности единичной сферы. Это показано на рисунке 6.

Рисунок 5. Нормализованное рассогласование площадей между площадью поверхности выпуклой оболочки (сетки Делоне) и площадью поверхности единичной сферы. Чем ниже значения, тем лучше. Это показывает, что предложенная новая модификация (зелёные точки) демонстрирует небольшое, но постоянное снижение разности площадей поверхностей по сравнению с канонической сеткой Фибоначчи (синие точки)

Вывод из раздела 2

Сетка, соответствующая уравнению 6, является модификацией канонической сетки Фибоначчи, создающей значительно лучшее распределение точек, исходя из объёма и площади поверхности выпуклой оболочки (сетки Делоне).

Источники

  • A Comparison of popular point confugrations on S^2“:
  • web.archive.org/web/20120421191837
  • www.cgafaq.info/wiki/Evenly_distributed_points_on_sphere
  • perswww.kuleuven.be/~u0017946/publications/Papers97/art97a-Saff-Kuijlaars-MI/Saff-Kuijlaars-MathIntel97.pdf
  • projecteuclid.org/download/pdf_1/euclid.em/1067634731
  • maths-people.anu.edu.au/~leopardi/Leopardi-Sphere-PhD-Thesis.pdf
  • www.irit.fr/~David.Vanderhaeghe/M2IGAI-CO/2016-g1/docs/spherical_fibonacci_mapping.pdf
  • arxiv.org/pdf/1407.8282.pdf
  • maths-people.anu.edu.au/~leopardi/Macquarie-sphere-talk.pdf

Понравилась статья? Поделить с друзьями:
  • Как найти аудиозапись на смартфоне
  • Как найти биссектрису угла в равностороннем треугольнике
  • Как найти телефон мужа дома
  • Как найти телефон хонор если украли
  • Как найти в маке командную строку