Так вышло, что у меня и у Рунета 7 апреля - День рождения. Ему в этом году 27, мне... чуть больше. На дне рождения часто можно услышать от "о, как вырос!!!" и "уже отца перерос" до "а ты совсем не изменился" или "каши надо больше есть".

Рунет и Интернет измерять можно по-разному. Геймеры и трейдеры измеряют в миллисекундах, стримеры - в битах/с, маркетологи - в уникальных посетителях.

Сегодня я предлагаю вашему вниманию свою оценку - в интернет-провайдерах и их связях.

Кстати, на Хабре есть подробный рассказ про устройство Интернета.

Сеть Интернет может быть представлена в виде графа, вершинами которого являются автономные системы (АС), а ребрами - связи между АС, о которых мы узнаем по протоколу BGP.

Примерно так атрибут AS_PATH превращается в граф
Примерно так атрибут AS_PATH превращается в граф

Поскольку имеем дело с аристократами графами, то и подход к их хранению и анализу нужен специальный. Я остановился на СУБД Neo4j тыц тыц.

В качестве исходных данных выбрана система сбора маршрутной информации Routing Information Service со следующими ограничениями:

  • рассматриваются маршрутные данные только коллектора на MSK-IX и только по префиксам IPv4;

  • период рассмотрения: 2006 – 2020 годы (коллектор начал работу в 2005 году);

  • каждый год представлен данными только за 1 день: 7 апреля

Немного про предобработку исходных данных

Таблицы маршрутизации представлены в формате MRT и нативного загрузчика в БД Neo4j нет, поэтому исходные данные преобразуются в формат csv:

as_from,as_to
28917,1299
1299,701
701,703
703,8057

Каждая строка описывает связь двух АС. Исходные данные обладают высокой избыточностью, поскольку одна и та же связь АС присутствует в маршрутах до различных IP-префиксов. Для устранения избыточности в csv-файл каждая связь АС добавляется только один раз.

Применение интернет-провайдерами искусственного удлинения маршрутов приводит к тому, что в атрибуте AS_PATH одна и та же АС присутствует несколько раз подряд. Для устранения избыточности в csv-файл не добавлялись связи АС с самой собой (петли).

Для создания графа Рунета были отобраны связи между российскими АС (по данным из этого источника).

После загрузки в БД имеем 15 графов для глобальной сети и столько же для Рунета. В качестве метрик выбраны:

  • количество АС

  • количество связей АС

  • максимальная степень связности АС

  • распределение степени связности АС

Количество АС

Тут без сюрпризов - линейный рост количества провайдеров во всемирной сети более чем в 3 раза. Полученные данные совпадают с результатами Джефа Хьюстона (Geoff Huston). В Рунете темп роста количества АС значительно замедлился в 2012-2013 годах - интернет-провайдеры стали появляться реже.

Количество связей АС и максимальная степень связности АС

Вместе с количеством вершин растет и количество связей, это ожидаемо.

В глобальной сети максимальная степень связности АС за 15 лет выросла почти в 3 раза, однако рост нельзя назвать линейным: в 2008, 2016 и 2019 годах зафиксированы ее уменьшения.

В Рунете максимальная степень связности выросла более чем в 5 раз, и это без учета связей с зарубежными АС! На графике хорошо виден спад максимальной степени связности в 2012 году, после которого выйти на прежнее максимальное значение получилось только к 2016 году.

Распределение степени связности АС

Предложенная учеными Альбертом-Ласло Барабаши и Ре?кой Альберт модель безмасштабного (scale-free) графа адекватно описывает граф связей АС. В этой модели степени вершин распределены в соответствии с показательным законом и учитывается принцип предпочтительного присоединения: чем больше степень вершины в графе, тем больше вероятность появления инцидентных ей ребер. Учитывая контекст повествования, можно сказать - чем крупнее интернет-провайдер, тем быстрее растет его связность.

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

Посмотрев на картинки, можно с уверенностью сказать - закономерности роста Рунета соответствуют закономерностям роста глобальной сети.

В планах - с применением граф-ориентированных алгоритмов из библиотеки Graph Data Science попытаться в графе АС найти следы пиринговых войн, а также построить модель для предсказания связей между интернет-провайдерами.

Всем графов!