Страница 3 из 6

Yggdrasil (2)

Добавлено: 29 май 2023, 00:28
Olej
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:

Yggdrasil (2)

Добавлено: 30 май 2023, 12:09
Olej
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: новый подход к снаряду...).

Yggdrasil (2)

Добавлено: 31 май 2023, 12:23
Olej
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-сетей как автоконфигурация — никто из штатных системных администраторов не прикладывает к этому руки.

Yggdrasil (2)

Добавлено: 31 май 2023, 12:32
Olej
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 идут по "пробитой" трассе.

Yggdrasil (2)

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

Yggdrasil (2)

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

Yggdrasil (2)

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

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

Yggdrasil (2)

Добавлено: 31 май 2023, 19:26
Olej
Очень полезная информация - Как определить геолокацию своих пиров
С помощью нижеследующих команд можно определить, в каких странах находятся узлы, к которым вы подключены (или которые подключены к вам).

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

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"
Настолько полезно, что эти команды есть смысл сохранить как отдельные скрипты!

Yggdrasil (2)

Добавлено: 01 июн 2023, 11:04
Olej
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-хоста).

Yggdrasil (2)

Добавлено: 01 июн 2023, 12:13
Olej
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, которые использовали распределённые в интернете ресурсы для создания одного единственного приложения.