Yggdrasil (2)

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 29 май 2023, 00:28

Olej писал(а):
29 май 2023, 00:23
На максимальной скорости - оба подключены к одному свитчу 1Gib.
Та же конфигурация...

IPv6:

- Сервер:

Код: Выделить всё

olej@esprimop420:~$ ip -6 a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fe80::921b:eff:fe2b:fe3a/64 scope link
       valid_lft forever preferred_lft forever
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 state UNKNOWN qlen 500
    inet6 201:617b:8699:5a7f:356b:1da6:a5d6:c960/7 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::879e:ccf9:5c8d:95b8/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

Код: Выделить всё

olej@esprimop420:~$ iperf -s --ipv6_domain
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size:  128 KByte (default)
------------------------------------------------------------
[  4] local 201:617b:8699:5a7f:356b:1da6:a5d6:c960 port 5001 connected with 31c:4cbf:9e0b:2904::2 port 59208
[ ID] Interval       Transfer     Bandwidth
[  4] 0.0000-10.0252 sec  1.06 GBytes   909 Mbits/sec
^C
- Клиент:

Код: Выделить всё

olej@nvme:~$ iperf -c 201:617b:8699:5a7f:356b:1da6:a5d6:c960 --ipv6_domain
------------------------------------------------------------
Client connecting to 201:617b:8699:5a7f:356b:1da6:a5d6:c960, TCP port 5001
TCP window size: 1.25 MByte (default)
------------------------------------------------------------
[  3] local 31c:4cbf:9e0b:2904::2 port 59208 connected with 201:617b:8699:5a7f:356b:1da6:a5d6:c960 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3] 0.0000-10.0002 sec  1.06 GBytes   912 Mbits/sec
909÷941 = 0,965993624 = 96.5% от прямого соединения на 1000Mib.
И это шифрованный несимметричным шифрованием на ходу трафик :!:
Шикарно :!: :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 30 май 2023, 12:09

Olej писал(а):
27 май 2023, 18:11
3. https://github.com/yggdrasil-network/yg ... o/releases - собранные релизы последней стабильной версии (и также предыдущих) непосредственно для инсталляции:
После инсталляции первое что нужно сделать - это выбрать + прописать публичные пиры. Источником может быть:

1. https://publicpeers.neilalexander.dev/ - страница регуляно обновляемых URL
2. GIT: https://github.com/yggdrasil-network/public-peers - оригинал, откуда обновляется п.1
3. GIT: https://github.com/zhoreeq/peer_checker.py.git - проверочная утилита на Python: берйт любой список (можно тот что п.1), и проверяет их мёртвый/живой, и живые сортирует по времени ping.
4. GIT: https://github.com/ygguser/peers_updater.git - ищет свежие пиры ... но для сборки нужно иметь установленную систему Rust (см. установка: Rust: новый подход к снаряду... + обновление: Rust: новый подход к снаряду...).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 31 май 2023, 12:23

Olej писал(а):
29 май 2023, 00:28
909÷941 = 0,965993624 = 96.5% от прямого соединения на 1000Mib.
В чём разница (кроме цифр) 2-х случаев IPv4 и IPv6? Только ли в том, что используются разные протоколы IPv6 против IPv4? Нет! В случае использования IPv4 (традиционный Интернет) трафик всегда идёт по статическому маршруту, настроенному трудами десятков, а то и сотен, сетевых администраторов на всех промежуточных хостах трассы, прописывающих объёмные таблицы роутинга на своих хостах.

Трафик же IPv6 Yggdrasil идёт по динамически прокладываемой трассе, исходя из местоположения пиров сети в общей топологии (дереве) сети Yggdrasil. На основании того что есть Coordinates каждого хоста Yggdrasil в общем дереве.

Код: Выделить всё

olej@R420:~/2023/Yggdrasil/yggdrasil-go$ sudo yggdrasilctl getSelf
Build name:   	yggdrasil                                                       	
Build version:	0.4.7                                                           	
IPv6 address: 	21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f                          	
IPv6 subnet:  	31d:8a7c:aafa:f346::/64                                         	
Coordinates:  	[1 1 14 15 172]                                                 	
Public key:   	00000005d60d541432e5fbabad558d6cca02aaddbb3363fcd3a8421934e4d575	
Как точно происходит выбор трассы между соседями-пирами на основе Coordinates я не разбирался ... пока.

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 31 май 2023, 12:32

Olej писал(а):
31 май 2023, 12:23
Трафик же IPv6 Yggdrasil идёт по динамически прокладываемой трассе
В этом смысле интересны, и показательны всегда, картины ping между Yggdrasil хостами... вот как между 2-мя хостами LAN за NAT от разных провайдеров - IPv6 доступ к хостам LAN снаружи - это компьютеры мой и моего соседа, территориально, которые проключены через внешние пиры в ОАЭ, Турции и т.д.:

Код: Выделить всё

olej@R420:~$ ping -6 -c3 200:cd1f:5278:a6cf:31c5:3303:82c1:f1d3
PING 200:cd1f:5278:a6cf:31c5:3303:82c1:f1d3(200:cd1f:5278:a6cf:31c5:3303:82c1:f1d3) 56 data bytes
64 bytes from 200:cd1f:5278:a6cf:31c5:3303:82c1:f1d3: icmp_seq=1 ttl=64 time=428 ms
64 bytes from 200:cd1f:5278:a6cf:31c5:3303:82c1:f1d3: icmp_seq=2 ttl=64 time=75.2 ms
64 bytes from 200:cd1f:5278:a6cf:31c5:3303:82c1:f1d3: icmp_seq=3 ttl=64 time=75.0 ms

--- 200:cd1f:5278:a6cf:31c5:3303:82c1:f1d3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 75.018/192.605/427.604/166.168 ms

1-й ping всегда длиннее (иногда надолго длиннее) - устанавливается динамическая трасса...
все следующие ping короткие - ICMP идут по "пробитой" трассе.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 31 май 2023, 12:38

Olej писал(а):
31 май 2023, 12:23
Трафик же IPv6 Yggdrasil идёт
Да это, на самом деле, не всегда и не везде это трафик IPv6 :-o
У меня (и у многих ... пожалуй, у большинства сейчас) провайдер не поддерживает никоим образом IPv6. И указанная в конфигурациях связь с внешними пирами - по IPv4 :!:
Т.е. IPv6 как-то инкапсулируется внутрь IPv4.
А на участках трассы, далее по пирам, идёт непосредственно по IPv6 ... и далее опять где-то инкапсулируясь в IPv4 ...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 31 май 2023, 12:43

По Yggdrasil для меня есть 2 вопроса, которые я нигде не видел чтобы даже назывались где-то в описаниях и обсуждениях:
Olej писал(а):
31 май 2023, 12:38
IPv6 как-то инкапсулируется внутрь IPv4
1.
Как, каким форматом IPv6 инкапсулируется внутрь IPv4 на коннектах с внешними пирами, где указан IPv4 :?: (тут уже не важно поддерживает или нет провайдер IPv6 - так определно в конфигурации Yggdrasil-хоста).
Olej писал(а):
31 май 2023, 12:23
Как точно происходит выбор трассы между соседями-пирами
2.
По какому алгоритму выбирается трасса между 2-мя Yggdrasil-хостами, если они не в LAN :?:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 31 май 2023, 14:36

Meshname – DNS судного дня
Среди опытных ай-тишников также развита профессиональная деформация личности, которая нередко подразумевает паранойю: тяжело спать спокойно, когда понимаешь технологии изнутри и хрупкость их бытия!

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 31 май 2023, 19:26

Очень полезная информация - Как определить геолокацию своих пиров
С помощью нижеследующих команд можно определить, в каких странах находятся узлы, к которым вы подключены (или которые подключены к вам).

Код: Выделить всё

olej@R420:~$ sudo yggdrasilctl getPeers | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read ip; do printf "%-16s" "$ip "; geoiplookup $ip | sed 's/GeoIP Country Edition: \([A-Z ]\{2\}\).*/\1/';done;
195.123.245.146 CZ
51.15.204.214   FR
212.154.86.134  TR
158.101.229.219 SA

Код: Выделить всё

olej@R420:~$ sudo yggdrasilctl getPeers|grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read ip; do printf "%-16s" "$ip "; whois $ip |grep country;done;
[sudo] пароль для olej:       
195.123.245.146 country:        CZ
51.15.204.214   country:        FR
212.154.86.134  country:        TR
158.101.229.219 

Код: Выделить всё

olej@R420:~$ sudo yggdrasilctl getPeers|grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read ip; do printf "%-16s" "$ip "; echo $(curl --silent "ipinfo.io/$ip") |jq '.country';done;
195.123.245.146 "CZ"
51.15.204.214   "FR"
212.154.86.134  "TR"
158.101.229.219 "SA"
Настолько полезно, что эти команды есть смысл сохранить как отдельные скрипты!
Вложения
ygg.geolock.1.sh
(208 байт) 19 скачиваний
ygg.geolock.3.sh
(187 байт) 19 скачиваний
ygg.geolock.2.sh
(158 байт) 19 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 01 июн 2023, 11:04

Olej писал(а):
31 май 2023, 19:26
Очень полезная информация
О большом MTU в Yggdrasil
В большинстве случаев, в сетях Ethernet это значение приблизительно равно 1500 байт.
Так что, возможно, вы были удивлены, увидев в Yggdrasil интерфейсный MTU со значением до 65535 байт.
На самом деле, это не ошибка, так задумано.

Код: Выделить всё

olej@esprimop420:~/2023/Yggdrasil/yggdrasil-go$ ip a s dev tun0
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet6 201:617b:8699:5a7f:356b:1da6:a5d6:c960/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::d3e3:1968:2219:841f/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
... не 65535, но тоже немало 53049 :lol:

Код: Выделить всё

olej@nvme:~$ yggdrasil --version
Build name: yggdrasil
Build version: 0.4.7
Там же:
Но... TCP поверх TCP?
Описанное означает, что мы туннелируем протокол TCP через TCP. Я слышу, как вы орете. Это же безумие, серьезно?
...
Это отчасти (но очень отчасти) отвечает на вопрос №1 выше сформулированный:
Olej писал(а):
31 май 2023, 12:43
1.
Как, каким форматом IPv6 инкапсулируется внутрь IPv4 на коннектах с внешними пирами, где указан IPv4 :?: (тут уже не важно поддерживает или нет провайдер IPv6 - так определно в конфигурации Yggdrasil-хоста).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Yggdrasil (2)

Непрочитанное сообщение Olej » 01 июн 2023, 12:13

Olej писал(а):
31 май 2023, 12:43
2.
По какому алгоритму выбирается трасса между 2-мя Yggdrasil-хостами, если они не в LAN
А намётки (только намётки, по самым верхам) на вопрос №2 находим здесь - Как получить информацию обо всех узлах сети:
Yggdrasil использует распределенную хеш-таблицу (DHT), в которой содержится вся необходимая информация для работы автоматической маршрутизации.

Обращаясь к этой хеш-таблице можно получить нужную нам информацию и далее, обращаясь к узлам с использованием Admin API, можно получить дополнительную информацию об узле.
Распределённая хеш-таблица
DHT (англ. distributed hash table — «распределённая хеш-таблица») — это класс децентрализованных распределённых систем поисковой службы, работающей подобно хеш-таблице. Как структура данных, хеш-таблица может представлять собой ассоциативный массив, содержащий пары (ключ-значение). Также с термином DHT связан ряд принципов и алгоритмов, позволяющих записывать данные, распределяя информацию среди некоторого набора узлов-хранителей, и восстанавливать их путём распределённого поиска по ключу. Особенностью распределённой таблицы является возможность распределить информацию среди некоторого набора узлов-хранителей таким образом, что каждый участвующий узел смог бы найти значение, ассоциированное с данным ключом. Ответственность за поддержание связи между именем и значением распределяется между узлами, в силу чего изменение набора участников является причиной минимального количества разрывов. Это позволяет легко масштабировать DHT, а также постоянно отслеживать добавление и удаление узлов и ошибки в их работе.
Исследования в области DHT изначально были мотивированы в частности пиринговыми системами, такими, как I2P, Napster, Gnutella, Freenet, которые использовали распределённые в интернете ресурсы для создания одного единственного приложения.

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: FAST WebCrawler [Crawler] и 8 гостей