Содержание

Фидограф

Как, наверное, многим известно, с 1996 года я невозбранно состою в международной сети Фидонет. Сначала был обычным пойнтом, но потом всё же решился стать полноправным членом сети, и 31 декабря 1999 года мой узел 2:5020/2613 появился в мировом нодлисте.

С 1984 года сеть Фидо активно развивалась и к 1996 году достигла своего расцвета. После этого число узлов сети стало неуклонно снижаться. Отмирают целые сети (города), регионы (страны) и даже зоны (континенты). Но, как говорится, не дождётесь. Старые узлы покидают сеть, появляются новые (хотя и намного меньше), меняются хабы, узлы перелинковываются, появляются новые пойнты, пишутся новые сервисы и ПО. Сеть продолжает жить.

Когда заходит речь о какой либо сети, сразу же начинают говорить о её геометрии, то есть о «конструкции», которая обычно изображается в виде графа. Теория графов была заложена в XVIII веке великим в том числе российским учёным Леонардом Эйлером в решении задачи о семи мостах. Долгое время меня терзало желание увидеть граф всей сети Фидо, но я никак не встречал никакой наглядной реализации. В какой-то момент мне пришла идея нарисовать такой граф. И когда под руку подвернулась красивая библиотека на яваскрипте, всё сложилось :)

Нодлист

Конечно, отобразить в онлайне все реальные связи между тысячами узлов невозможно, потому что не существует какого-то единого документа или конфигурационного файла, описывающего такие соединения. У каждого узла свой список линков и реальные пути хождения почты могут не соответствовать официальному роутингу, потому что между директными линками почта ходит напрямую. Тем не менее, незыблемым остаётся одно — нодлист, потому что, согласно самому первому пункту Фидополиси (Устава Фидонет), «Сеть Фидонет определяется файлом NodeList (нодлист, список узлов), еженедельно издаваемым международным координатором (International Coordinator)».

Информация об узле, указанная в нодлисте, включает в себя статус узла (Zone, Region, Host, Hub, Pvt, Down), его номер и наименование, географическое местонахождение, имя и фамилию оператора узла, номер телефона (для узлов, доступных посредством интернет-протоколов — доменное имя, IP- или E-mail-адрес) и флаги, указывающие на возможности программного и аппаратного обеспечения узла.

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

Число строк в нодлисте (за исключением комментариев) — это и есть число узлов в графе. Сейчас узлов сети чуть менее полутора тысяч, поэтому граф получается вполне «глазастым».

Изначально сеть Фидо была географически поделена на зоны (которые приблизительно соответствуют континентам), регионы (страна или группа стран или штатов) и сети (города). Так как связь была модемной, и межгород был платным, такое деление имело смысл. Сейчас, при развитии интернета и использовании tcp/ip в качестве транспорта для Фидо, географическое деление уже больше дань традиции. Тем не менее, нодлист отражает именно такую иерархию: зона — регион — сеть — хаб — узел. Причём, конечный узел может быть зональным, региональным, может входить в подхабник какого-то сетевого хаба или просто быть членом сети.

2020 год

Итак, мне под руку попалась библиотека vis.js. Вначале я потренировался на кошках и сделал эхограф, который рисовал пути прохождения сообщений по эхам. Потом уже стал думать о нодлисте. Для отрисовки структуры Фидонет я взял в качестве источника данных самый последний нодлист из файлэхи Z2DAILY (теоретически, там можно верить только данным по Z2, но будем считать, что это полный нодлист). Ниже то, что из этого получилось.

Всё Фидо

Это уже полностью отрисованная сеть. По умолчанию граф открывается в «перемешанном виде», а затем начинает упорядочиваться по правилам гравитации, стараясь сделать так, чтобы рёбра были как можно короче и не пересекались. Графу можно «помочь» — все узлы очень прикольно таскаются мышкой. А если даблкликнуть на «зону», то есть узел графа с надписью Z1, Z2, Z3 или Z4, то «провалимся» в зону. Откроется новая страничка с графом не всей сети Фидо, а только для конкретной зоны. Аналогично и дальше — если кликнуть на «регион», то откроется граф региона. Если кликнуть на сеть, откроется сеть. А если кликнуть на узел, то откроется история этого узла. (Да, сверху просто картинка, а кликать можно, если зайти по ссылкам внизу.)

Z2 - Европа

Вот картинка, которая получилась для второй зоны (Z2, Европа):

R50 - Россия

А это для 50 региона (R50, Россия):

N5020 - Москва

Так выглядит сеть 5020 (N5020, Москва):

Если тыкнуть на узел, то откроется очень интересный ресурс nodehist, который покажет историю, как менялась нодлистовая строка для определённого узла. А если на уровне сети тыкнуть в саму сеть, то откроется история узла /0 и можно увидеть, какие в сети были координаторы:

Роутинг

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

Вот такие красивые «фейерверки» или «соцветия» получаются для текущей сети. А что же было раньше?

1996 год

 Число узлов Фидонет с 1984 по 2020 год

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

А вот в 1996 году число узлов было максимальным за всю историю и приближалось к 40000. Пойнтов же было ещё в несколько раз больше, но все пойнтлисты собрать невозможно, да и это лишнее. А вот отрисовать фидограф за 1996 год я попробовал.

Вначале скрипт около получаса тупил, чтобы просто отобразить этот «Большой взрыв» на экране:

"Большой взрыв" - Состояние Фидонет в 1996 году

Затем начал всё это растаскивать. Если приблизить, то выглядит как-то так:

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

Вот какая красота получилась. Это расцвет Фидо в прямом и переносном смыслах :) «Букет» справа с крупными цветами — это Северная Америка (Z1), слева внизу Европа (Z2), а слева вверху «оставшиеся» зоны — Австралия с Новой Зеландией (Z3), Латинская Америка (Z4), Африка (Z5) и Азия (Z6).

Для сравнения, в 2020 году «букетик» существенно уменьшился (все зоны стали меньше, уменьшилось число регионов и сетей, Африка и Азия вообще исчезли). Америка, как и раньше, осталась справа чуть внизу, слева Европа (большой фиолетовый одуванчик — это Россия), справа вверху Z3 и Z4.

UPD: Ещё немного подкрутил, теперь с флагами. На картинке снизу вторая зона.

В общем, может быть потом как-нибудь доведу это всё до ума и выложу куда-нить на гитхаб :)

Ссылки

На всё это безобразие посмотреть вживую и потыкать можно вот тут:

Комментарии