Інтернету не існує. Є шістдесят тисяч мереж, які домовилися розмовляти
Найкорисніше, що варто зрозуміти про інтернет, — у нього немає центру, немає власника магістралі й немає головної таблиці маршрутів. Це добровільне з'єднання десятків тисяч незалежно керованих мереж, кожна з яких сама вирішує, з ким обмінюватись трафіком і на яких умовах.
Усім цим не керує ніхто. Тримається воно на тому, що кожна мережа оголошує сусідам, до яких адрес вона вміє доправити трафік, а кожен сусід передає це твердження далі. З безлічі таких тверджень кожна мережа будує власну картину того, як дістатися будь-якої частини інтернету. Спільної копії цієї картини не існує ніде.
Тому в інтернету немає вимикача, тому збій в одній країні рідко зачіпає іншу — і тому ж одне неправильно налаштоване оголошення здатне мовчки перетягнути чужий трафік через півпланети.
Автономна система — одиниця, з якої складено інтернет
Автономна система — це одна мережа з однією маршрутною політикою: провайдер, хостингова компанія, банк, університет, мережа доставки контенту, державна установа. Ключове слово тут «автономна»: вона сама визначає свою маршрутизацію, і ніхто ззовні змінити це не може.
Кожна отримує номер — ASN. Спершу номери були 16-бітними, тобто їх було 65 536; цей простір закінчився, і 2012 року стандартизували 32-бітні — тому тепер регулярно трапляються значення далеко за 65535. Виділено вже понад 100 тисяч, а в глобальній таблиці маршрутів у будь-який момент видно близько 75 тисяч; різниця — це організації, які номер мають, але зараз нічого ним не оголошують.
ASN — те поле, якому варто вірити, коли дивишся на адресу, і причина в його джерелі. Країна в базі геолокації — це твердження, яке хтось увів. Автономна система — спостережуваний факт: адреса лежить усередині блоку, який конкретна мережа оголошує сусідам просто зараз, і якби перестала, адреса стала б недосяжною. Тут просто нема чому застаріти. Побачити це для будь-якої адреси можна в довідці про адресу.
Частина номерів зарезервована, а не видана: два блоки відведено для приватного використання всередині організації — так само, як приватні діапазони IP, — і в публічній таблиці маршрутів вони не з'являються ніколи. Ще кілька зарезервовано для документації та прикладів.
Як пакет насправді знаходить дорогу
Маршрутизатор не знає маршруту до вашого комп'ютера. Він знає маршрут до блоку адрес —
префікса на кшталт 203.0.113.0/24 — і пересилає все з цього блоку тому самому сусідові.
Коли надходить пакет, маршрутизатор шукає його адресу призначення й застосовує одне правило:
найдовший збіг префікса. Якщо він знає маршрут для 203.0.113.0/24 і ще
один для 203.0.0.0/16, виграє конкретніший — бо конкретніше оголошення означає, що хтось
ближчий до призначення заявляє на нього права.
З цього одного правила випливає дві речі, які пояснюють дуже багато:
- Розділити блок означає виграти. Оголосивши менший, конкретніший шматок власного простору, ви перекриваєте більше оголошення. Так роблять керування трафіком — і так само, коли це робить хтось інший із вашими адресами, працює перехоплення маршруту.
- Більшість маршрутизаторів не знає майже нічого. У вашого домашнього маршрутизатора один маршрут: «усе інше — нагору». Маршрут за замовчуванням і є те, що дозволяє пристрою брати участь в інтернеті, нічого про нього не знаючи.
Маршрутизатори, у яких маршруту за замовчуванням немає — тобто які зобов'язані знати шлях до кожного оголошеного префікса на планеті, — утворюють так звану зону без замовчування. Їхні таблиці зараз тримають близько мільйона префіксів IPv4 і понад 200 тисяч IPv6, і обидва числа щороку зростають. Це не академічна деталь: саме вона задає вимогу до пам'яті обладнання, і саме через неї маршрутизатори списують за нездатність утримати таблицю, а не за брак швидкості.
BGP: протокол, який переносить ці твердження
Усе це працює на одному протоколі між мережами — BGP. Він не хитрий. Мережа каже сусідові: «я вмію дістатися цього префікса, і шлях іде через оці автономні системи»; сусід дописує себе до шляху й може передати це далі. Маршрути обираються спершу за політикою і лише потім за довжиною шляху, і це важливо: BGP не шукає найшвидшого маршруту, він шукає той, який дозволяє політика.
Список шляху заразом рятує від петель: мережа, яка бачить власний номер уже всередині шляху, відкидає оголошення, бо прийняти його означало б замкнути коло.
Чого в BGP не було ніколи — це доказу. Більшу частину його життя оголошенню вірили тому, що воно прийшло. Якщо мережа оголошувала чужий префікс — помилково чи ні, — сусіди не мали способу це розпізнати, і трафік для тих адрес починав приходити не туди. Кілька задокументованих випадків поклали великі сервіси на години, а принаймні один перенаправив трафік цілої країни через інший континент.
Лікування — RPKI: власники адрес публікують підписане твердження про те, яка автономна система має право оголошувати їхні префікси, а мережі відкидають оголошення, що йому суперечать. Покриття не суцільне, але значна частина таблиці маршрутів уже підписана, і більшість великих мереж це перевіряє. Є й ширший набір узгоджених практик — фільтрувати те, що приймаєш, фільтрувати те, що оголошуєш, тримати контакти актуальними, — до якого мережі публічно приєднуються.
Звідки беруться адреси і хто за них платить
Адреси не купують «в інтернету». Вони йдуть ланцюгом:
- IANA
- Тримає пули верхнього рівня й видає великі блоки регіональним реєстрам. Її запас IPv4 вичерпався в лютому 2011 року, і видавати більше нема чого.
- П'ять регіональних реєстрів
- ARIN для Північної Америки, RIPE NCC для Європи, Близького Сходу й Центральної Азії, APNIC для Азійсько-Тихоокеанського регіону, LACNIC для Латинської Америки, AFRINIC для Африки. Вони виділяють блоки своїм членам і ведуть публічний запис про те, хто чим володіє, — той самий, який ви читаєте в реєстровій довідці.
- Локальні реєстри (LIR)
- Організації-члени — провайдери, хостинги, великі підприємства, — які отримують блоки й призначають їхні частини своїм клієнтам.
Регулярні витрати сидять у членстві. Реєстр — це членська організація, яку утримують самі члени, і річний внесок має порядок кількох тисяч євро або доларів на рік, залежно від реєстру й від того, скільки простору ви тримаєте. Точні цифри затверджують самі члени, і вони змінюються щороку, тож єдине надійне джерело — власний тарифний перелік реєстру.
Далі проблема IPv4. Регіональні пули вичерпані — європейський реєстр видав останній вільно доступний блок у листопаді 2019-го, — тож новий простір IPv4 беруть на ринку передачі, де наявний власник продає блок, а реєстр записує зміну. Ціни визначає попит і пропозиція, і вже кілька років вони тримаються на рівні десятків доларів за адресу, тобто /24 — двісті п'ятдесят шість адрес — це покупка на пʼятизначну суму. Це реальний рядок у бюджеті провайдера й головна фінансова причина, чому IPv6 просувається далі.
IPv6 коштує майже нічого: новий член зазвичай отримує /32 у складі членства, а це 65 536 підмереж стандартного розміру /64 — стільки, що питанням проєктування стає «яка схема нумерації читабельна», а не «як усе вмістити».
Одна відмінність важлива, якщо ви колись зберетеся міняти провайдера. Простір, виданий вам провайдером, є частиною його блоку, і ви повертаєте його, коли йдете, — перенумеровуючи все. Простір, який ви тримаєте безпосередньо від реєстру, ваш і переїжджає з вами. Ця різниця — одна з головних причин, чому організації стають членами реєстру, а не лишаються клієнтами.
Транзит, пірінг і чому частина трафіку безкоштовна
Мережі обмінюються трафіком двома способами, і різниця між ними комерційна, а не технічна.
- Транзит — ви платите
- Більша мережа погоджується нести ваш трафік усюди й оголошує ваші префікси решті інтернету від вашого імені. Рахунок зазвичай за смугу, виміряну так, щоб короткі сплески не визначали суму.
- Пірінг — зазвичай не платить ніхто
- Дві мережі з'єднуються напряму й обмінюються лише тим трафіком, який призначений одна одній та їхнім власним клієнтам. Це не транзит: ваш пір не понесе ваш трафік далі до третіх сторін. Економлять обидві сторони, тому там, де обсяги приблизно рівні, пірінг звична річ.
Здебільшого пірінг відбувається на точці обміну трафіком — спільній комутаційній фабриці в дата-центрі, куди сотні мереж під'єднуються один раз і далі пірять із багатьма через цей один порт. Великі європейські точки обміну пропускають на піку десятки терабітів за секунду. Для нової мережі порт на найближчій точці обміну зазвичай є найдешевшим способом дістатися напряму до великої кількості напрямків.
Неформальний поділ на рівні випливає саме звідси. Мережа, яка дістається всього інтернету виключно пірінгом і не купує транзиту ні в кого, зветься першим рівнем; таких одиниці. Решта купує якийсь транзит, пірить там, де це має сенс, і перебуває десь посередині.
Як стати власною гілкою інтернету
Стати незалежно маршрутизованою мережею — добре вторований шлях. Дешевим його не назвеш, але жодного воротаря, який вирішує, чи можна вам, тут немає.
- Вступити до регіонального реєстру. Це паперовий крок: юридична особа, договір, річний внесок. Усе подальше випливає з членства.
- Отримати номер автономної системи. Реєстри видають його на підставі того, що у вас буде власна маршрутна політика, — тобто зазвичай більш ніж одне з'єднання із зовнішнім світом.
- Отримати адресний простір. Блок IPv6 іде разом із членством. IPv4 — це черга, якщо вона в реєстрі ще є, або ринок передачі.
- Домовитися щонайменше про два підключення нагору. Один транзитний провайдер — це єдина точка відмови, і, строго кажучи, власна автономна система для цього не потрібна взагалі. Два — або транзит плюс точка обміну — це той момент, з якого власний номер починає себе виправдовувати.
- Купити обладнання, здатне тримати таблицю. Маршрутизатору в зоні без замовчування потрібна пам'ять під мільйон із гаком маршрутів IPv4 і далі більше, до того ж на кожну сесію. Саме тут концентрується бюджет на залізо, і саме тут дешеве обладнання підводить через рік, а не в перший день.
- Оприлюднити свої наміри. Підписані твердження RPKI про те, яка автономна система має право оголошувати ваші префікси, і об'єкти в маршрутному реєстрі з описом політики. Мережі дедалі частіше відмовляються приймати оголошення без них, тож на практиці це вже не опція.
- Взяти делегування зворотного DNS. Реєстр делегує зворотну зону вашого блоку на ваші сервери імен. Пропустити цей крок — поширений недогляд із конкретним наслідком: пошту з ваших адрес почне відхиляти або штрафувати чимала частина приймальних систем.
- Перевірити, чого вимагає ваша країна. Ця частина не технічна й різниться радикально: десь потрібна реєстрація чи ліцензія на продаж зв'язку населенню, а десь не потрібно нічого.
Реальні витрати визначають три речі: транзит, який іде постійно й зростає з трафіком; простір IPv4, який за нинішніх ринкових цін є великою разовою покупкою; і обладнання. Внесок у реєстр, про який питають першим, зазвичай найменший із них.
Що з цього випливає, коли дивишся на адресу
Коли конструкція зрозуміла, довідка про адресу читається інакше. Країна — це твердження з бази, і воно правильне здебільшого на рівні країни й значно рідше нижче. Автономна система — це спостереження, і вона каже, з якою мережею ви маєте справу, а це майже завжди і є те питання, яке у вас було. Реєстровий запис каже, хто відповідає за блок і куди писати скаргу, — а цей контакт переглядають частіше, ніж прийнято думати.
А затримка, за яку хапаються першою, обмежена фізикою, а не обладнанням. Світло у волокні долає приблизно 100 км за мілісекунду в один бік, тому трансатлантичний обіг не може бути значно меншим за 60 мс, хоч би що вам продавали. Побачити цю межу на практиці просто: виміряйте кілька напрямків на різній відстані справжніми ICMP-пакетами й порівняйте мінімальні часи з картою — числа лягають на маршрути кабелів, а не на прямі лінії.