Pull to refresh

Отнимаем и делим — исследуем целостность Рунета

Reading time 7 min
Views 3.2K

В России постановлением Правительства определены виды угроз устойчивости, безопасности и целостности Рунета. О процессе принятия этого документа ранее писали на Хабре. "Но одно дело – определить виды угроз и совсем другое – выявлять сами угрозы и реагировать на них!" – скажете Вы и ... будете абсолютно правы. Кому это под силу, учитывая скорость изменения сети, ее масштабы и уровень ответственности?

Ответ на этот вопрос дает пункт 7 упомянутого выше постановления Правительства. Это три богатыря – Минцифры, Роскомнадзор и ФСБ. Как они будут выявлять угрозы? Есть три взаимодополняющих способа: по результатам учений, по результатам мониторинга сетей и по результатам исследований.

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

Часть первая. Скучная, но нужная

Перед тем, как перейти к сути проведенного исследования, я еще раз вернусь к постановлению Правительства № 127 от 12.02.2021 г. Обещаю, это в последний раз в этом посте. Согласно п. 6 этого документа

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

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

Для справки – выдержки из постановления. С моими сокращениями

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

б) угрозы нарушения функционирования сети Интернет, вследствие которого становятся невозможными соединение и передача информации между пользователями сети Интернет или ресурсами в сети Интернет, находящимися на территории России, и пользователями сети Интернет или ресурсами в сети Интернет, находящимися на территории России либо ... иностранных государств;

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

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

а) нарушение на стыке Рунет-неРунет. Последствия:

  1. Пользователям Рунета недоступны ресурсы сети Интернет, расположенные за рубежом. Очевидное последствие для исходящего из Рунета трафика.

  2. Пользователям неРунета недоступны ресурсы сети Интернет, расположенные за рубежом. Менее очевидное, поскольку в данном случае Рунет должен обеспечивать транзит трафика по схеме неРунет-Рунет-неРунет, но из-за нарушения делать этого не может. Хм. Без широких каналов "Европа" <–> "Юго-Восточная Азия" это какой-то фантастический сценарий. Хотя, если вспомнить РОТАКС, это последствие может стать весьма болезненным.

б) нарушение где-то в сети Интернет. Как в Рунете, так и в неРунете или на их стыке. Последствия:

  1. Пользователям Рунета недоступны ресурсы Рунета.

  2. Пользователям Рунета недоступны ресурсы неРунета.

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

  1. Пользователям одного оператора недоступны пользователи другого оператора. Очень похоже на б.1.

  2. Пользователям одного оператора недоступны ресурсы Рунета. И это очень похоже на б.1.

г) нарушение между технологическими сетями, каждая из которых имеет номер АС. Последствия:

  1. Пользователям одной технологической сети недоступны пользователи другой технологической сети. Поскольку статья 15 Закона "О связи" устанавливает, что "При наличии свободных ресурсов технологической сети связи часть этой сети может быть присоединена к сети связи общего пользования с переводом в категорию сети связи общего пользования", то данный пункт опять таки похож на б.1. Факт присоединения технологической сети к сети связи общего пользования подтвержается наличием номера АС у технологической сети.

  2. Пользователям технологической сети недоступны ресурсы сети Интернет. А это б.1 плюс б.2.

Эту классификацию можно критиковать, но не это задача первой части. Задача – показать актуальность исследования тех вопросов, которые влияют на целостность Рунета, а именно:

  • если несколько российских провайдеров "сломаются", что произойдет с Рунетом? Распадется ли он на несколько отдельных сегментов?

  • а если пропадет связность между крупными операторами?

Часть вторая. Ближе к делу

Итак, Рунет. Как я строю графовую модель на уровне АС, я рассказал в предыдушем посте. Если вкратце, то данные маршрутных коллекторов помещаются в графовую БД neo4j. Получается достаточно просто.

Похоже на гирю. Кто сдюжит с такой тяжестью!?
Похоже на гирю. Кто сдюжит с такой тяжестью!?

В этот раз данные взяты по состоянию на май 2021 года. Краткие характеристики распределения степени связности вершин графа, соcтоящего из 4904-х АС:

Максимальная степень связности

829

Средняя степень связности

4,62

Медиана

2

90-й перцентиль

6

99-й перцентиль

33

99,9-й перцентиль

424

Анализ показывает, что распределение степени связности имеет "тяжелый хвост": в то время, как половина АС имеют степень не более 2, только 1% операторов может похвастаться связностью более чем 33 соседями. И только 0,1% АС (то есть примерно 4-5 операторов) имеют связность более 424. Что поделать – тесный мир.

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

Предположение 1. Если убрать из сети крупных операторов, Рунет будет разделен на несколько крупных частей. Что в реальной жизни может означать выражение убрать оператора из сети? Причины могут быть разные. Например, целенаправленная атака извне на его инфраструктуру. Или злонамеренное воздействие обиженного админа изнутри. Или отключение оператора в результате административного давления.

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

Прежде, чем переходить к проверке предположений, оценим, является ли Рунет связным. Далее я буду использовать библиотеку Graph Data Science, плагин для neo4j.

Создаем проекцию графа и ищем его слабо связанные компоненты
# запросы написаны на CYPHER

# создаем проекцию
CALL gds.graph.create(
    'runet', 
    'As', {
        	CONNECT_TO: {
            					type: 'CONNECT_TO',
            					orientation: 'UNDIRECTED'
        	}
    }    
)
YIELD graphName, nodeCount, relationshipCount;

# используем алгоритм Weakly Connected Component 
# для нахождения несвязанных компонентов графа
CALL gds.wcc.stats('runet')
YIELD componentCount

И тут сюрприз – в Рунете оказалось два компонента! Размерами 4902 и 2. Выяснилось, что AS43370 (OBIT-KZ-AS Obit Telecommunications, Kazakhstan network, RU) и AS209665 (OBIT-KZ-ASTANA-AS, RU) не связаны с остальными АС. Судя по названиям это казахстанские сети, поэтому удаляем их из графа и заново создаем проекцию.

Теперь необходимо определиться с метриками для выявления крупных операторов. Я выбрал следующие частные метрики:

Пример расчета Page Rank
CALL gds.pageRank.stream(
		'runet', { 
    					relationshipTypes: ['CONNECT_TO'],
      				maxIterations: 50
    }
) 
YIELD nodeId, score
RETURN 	gds.util.asNode(nodeId).num AS ASN,
				score AS PageRank_score
ORDER BY score DESC
LIMIT 100

Рассчитав частные метрики, делаем следующее:

  1. По каждой метрике ранжируем операторов (меньше ранг – крупнее оператор) и отбираем топ-100;

  2. Объединяем по outer join (пустые поля заполняем значением 101);

  3. Суммируем ранги и сортируем в порядке возрастания суммы рангов.

Вуаля, мой вариант списка крупных операторов:

Топ-20 операторов, а всего в рейтинг попали 168 АС
Топ-20 операторов, а всего в рейтинг попали 168 АС

Важность связи между двумя операторами я оценивал как произведение рангов операторов. В процессе моделирования выяснилось, что, чем "мельче" операторы, тем ниже вероятность существования связи между ними: из 14028 связей, которые возможны между 168-ю АС, в графе существуют только 1276 связей. И это вполне логично. Если этим пренебречь, то в процессе моделирования можно попытаться удалить несуществующую связь. Перемножаем ранги операторов и сортируем связи в порядке убывания их важности.

Топ-20 (из 1276) связей операторов
Топ-20 (из 1276) связей операторов

Часть третья. Отнимаем и делим

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

  • количество вершин в топ-3 кластерах ("кластер"="компонент");

  • количество вершин в кластерах размером 1. Эти АС или полностью изолированы от сети Интернет, или изолированы только от Рунета, но подключены к глобальной сети.

Проверка предположения 1. Удаляем крупных операторов и после каждого удаления рассчитываем показатели целостности.

Кликабельно
Кликабельно

Проверка предположения 2. Удаляем связи между крупными операторами и после каждого удаления рассчитываем показатели целостности.

Кликабельно
Кликабельно

Анализ изображений позволяет утверждать, что выдвинутые предположения неверны:

  • удаления АС не приводят к делению Рунета на кластеры сопоставимого размера. Да, количество изолированных АС при этом увеличивается, но это происходит за счет тех мелких провайдеров, для которых удаленный оператор являлся единственным апстримом. То есть в Рунете нет "узких мест" на уровне IP-маршрутов;

  • удаление связей между АС в порядке их "важности" влияет на целостность Рунета в меньшей степени, нежели удаление целых АС. Даже при удалении 700 связей не появилось ни одного изолированного интернет-провайдера.

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

Децентрализация основа сети Интернет.

Надеюсь, было интересно. Всем графов!

P.S. I want to thank the Neo4j company for their startup program

P.P.S. Спасибо https://www.goodfon.ru/user/vidmulia за изображение наверху

/

Tags:
Hubs:
+1
Comments 1
Comments Comments 1

Articles