Как CIDR замедлил исчерпание IPv4 и рост таблиц маршрутов

Запись вроде 192.168.1.0/24 выглядит как короткий технический параметр, однако число после слеша появилось не ради удобства калькуляторов. Оно стало частью реформы, которая помогла интернету пережить собственный рост. В начале 1990-х инженерам пришлось одновременно экономнее распределять IPv4-адреса и сдерживать глобальную таблицу маршрутизации, причём для этих двух проблем понадобились разные свойства одной системы.
Классы работали, пока интернет оставался небольшим
В RFC 791, опубликованном в 1981 году, IPv4-сети делились на фиксированные форматы. У сети класса A было 7 бит номера сети и 24 бита локальной части, у класса B соответственно 14 и 16 бит, а у класса C было 21 и 8 бит. Поэтому один блок класса A содержал 16 777 216 адресов, класса B содержал 65 536, а класса C всего 256.
Такая схема оставляла слишком большие промежутки между доступными размерами. Организации примерно с 300 хостами одного класса C уже не хватало. Можно было использовать несколько сетей класса C, но это усложняло эксплуатацию и добавляло маршруты, либо пытаться получить класс B, где большая часть из 65 536 адресов оставалась незадействованной. Адресное пространство расходовалось неравномерно, а маршрутизаторам приходилось хранить всё больше отдельных записей.
Масштаб второй проблемы хорошо виден в RFC 1519. В январе 1992 года таблица маршрутов без default route насчитывала около 4 700 записей, а к декабрю того же года выросла примерно до 8 500. Авторы документа рассматривали истощение сетей класса B и перегрузку маршрутизационной информацией как непосредственные угрозы, а полное исчерпание IPv4 уже как следующую, более долгосрочную проблему.
CIDR решил две задачи разными механизмами
В сентябре 1993 года IETF опубликовала RFC 1518 об архитектуре распределения адресов и их агрегации, а также RFC 1519 о Classless Inter-Domain Routing. Вместо выбора только между классами A, B и C сеть стала описываться адресом и длиной префикса. Записи /13, /21 или /27 теперь имели такое же системное значение, как привычные /8, /16 и /24.
Для распределения адресов это означало более точный выбор блока. IPv4-префикс /p оставляет 32 − p изменяемых бит, поэтому блок содержит 2^(32 − p) адресов. Однако CIDR не позволяет заказать буквально любое количество: размер всегда равен степени двойки, а начало блока должно совпадать с границей префикса. Для 300 обычных хостов можно выбрать /23, где есть 512 адресов всего и 510 традиционно доступных адресов после исключения network и broadcast. Это намного ближе к потребности, чем целый блок класса B.
Второй механизм называется агрегацией маршрутов. Если шестнадцать соседних сетей от 10.24.0.0/24 до 10.24.15.0/24 имеют общий путь и одинаковую маршрутную политику, внутри организации их можно представить одной записью 10.24.0.0/20. Первые 20 бит у всех адресов совпадают, а следующие четыре бита перебирают значения от 0000 до 1111. Маршрутизатору выше по иерархии достаточно знать один суммарный маршрут вместо шестнадцати подробных.
Этот пример использует частный диапазон и относится только к внутренней маршрутизации. RFC 1918 прямо запрещает распространять такие маршруты между организациями. В глобальном интернете агрегация работает по тому же принципу, но только для корректно выровненных публичных блоков с общим направлением и политикой. Если часть адресов уходит к другому провайдеру, требуется более специфичный маршрут, поэтому CIDR замедлил рост таблиц, но не остановил его.

Что именно означает длина префикса
У /24 остаётся 8 бит для адресов, поэтому блок содержит 256 значений. У /26 остаётся 6 бит, что даёт 64 значения. В обычной IPv4-подсети до /30 первое значение обозначает сеть, а последнее используется как broadcast, поэтому принято говорить о 254 доступных адресах в /24 и 62 в /26.
На границе этой арифметики есть важные специальные случаи. RFC 3021 разрешает использовать оба адреса /31 на соединении point-to-point, если такой режим поддерживают обе стороны. Префикс /32 обозначает ровно один IPv4-адрес и часто используется как host route. Префикс /0, напротив, охватывает всё пространство IPv4 и служит default route, но это не означает, что все входящие в него адреса можно свободно назначать или маршрутизировать.
Частные адреса и NAT не являются частью CIDR
В 1996 году RFC 1918 закрепил три диапазона для частных сетей: 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Их можно повторно использовать в независимых домашних и корпоративных сетях, а маршруты к ним не должны распространяться в глобальном интернете.
NAT часто упоминают рядом с этими диапазонами, потому что преобразование адресов позволяет множеству внутренних устройств выходить наружу через небольшое число публичных адресов. Однако это отдельный механизм, ранняя схема которого была описана ещё в RFC 1631 в 1994 году. CIDR, частные адреса и NAT вместе снизили давление на IPv4, но приписывать весь результат одному RFC было бы неверно.
Исчерпание происходило поэтапно
Фраза «IPv4 закончился» скрывает несколько разных событий. IANA распределяет крупные блоки региональным интернет-регистраторам, а те выдают более мелкие блоки сетевым операторам. Поэтому единая дата здесь невозможна:
- 3 февраля 2011 года IANA передала последние пять свободных
/8, по одному каждому региональному регистратору. - 15 апреля 2011 года APNIC перешёл к политике последнего
/8, резко ограничив размер новых выдач. - 14 сентября 2012 года RIPE NCC начал распределять свой последний
/8; 25 ноября 2019 года он объявил об исчерпании оставшегося свободного пула. - 10 июня 2014 года LACNIC перешёл к фазе ограниченных выдач, а 19 августа 2020 года сообщил о распределении последнего доступного резервного блока.
- 24 сентября 2015 года ARIN объявил об исчерпании свободного пула IPv4.
- Согласно хронологии AFRINIC, регион вошёл в первую фазу исчерпания 31 марта 2017 года, а во вторую фазу с более строгими лимитами 13 января 2020 года.
Эти даты означают изменение правил выдачи, а не отключение уже работающих адресов. Операторы продолжают использовать ранее полученные блоки, покупать адреса на трансферном рынке, возвращать или дробить ресурсы и разворачивать IPv6. Текущая базовая спецификация IPv6, RFC 8200, использует 128-битные адреса, но переход требует поддержки на всех участках сети, поэтому IPv4, dual stack и механизмы трансляции пока сосуществуют.
Что показывает Subnet Calculator
Subnet Calculator выполняет всю арифметику локально в браузере. Для IPv4 он показывает адрес сети, broadcast, первый и последний адрес хоста, маску, wildcard, общее и доступное количество адресов, а также двоичную запись с границей префикса. Для /31 инструмент считает доступными оба адреса и не показывает broadcast, а для /32 возвращает один адрес.
В режиме IPv6 калькулятор принимает обычную шестнадцатеричную запись с префиксом от /0 до /128, вычисляет первый и последний адрес блока, показывает сокращённую и полную формы, число host bits и точный размер диапазона. У IPv6 нет broadcast в смысле IPv4, поэтому такого поля в результате нет.
Калькулятор не определяет, можно ли реально получить выбранный публичный блок, относится ли адрес к специальному диапазону и допустим ли маршрут в конкретной сети. Он также не проверяет маршрутную политику, пересечения подсетей и принятый в IPv6 выбор /64 для локального сегмента. Его задача уже и полезнее: точно показать границы заданного префикса, чтобы их можно было проверить до настройки DHCP, firewall или маршрутизатора.
Чтобы увидеть принцип в работе, введите 192.0.2.130/26. Адрес попадёт в сеть 192.0.2.128/26, где диапазон идёт до 192.0.2.191, а обычные адреса хостов находятся между 192.0.2.129 и 192.0.2.190. Затем измените префикс на /31 и сравните результат: два значения станут адресами сторон point-to-point соединения, а поле broadcast исчезнет.
Похожие инструменты
Частые вопросы
Что такое CIDR и зачем его придумали?
CIDR, или Classless Inter-Domain Routing, появился в 1993 году как ответ сразу на две проблемы: неэкономное распределение IPv4-адресов и быстрый рост глобальной таблицы маршрутизации. Он заменил фиксированные классы сетей префиксами переменной длины и позволил объединять подходящие соседние маршруты.
Можно ли с помощью CIDR создать блок любого размера?
Нет. Длина префикса может быть любой от /0 до /32, но сам блок всегда содержит степень двойки адресов и должен начинаться на соответствующей границе. Например, для 300 обычных IPv4-хостов подходит /23: в нём 512 адресов всего и 510 адресов после исключения network и broadcast.
Что означает 192.168.1.0/24?
Число после слеша показывает длину сетевого префикса. В /24 первые 24 бита определяют сеть, а оставшиеся 8 меняются внутри блока, поэтому он содержит 256 адресов. В обычной подсети два из них заняты под network и broadcast, но для /31 и /32 действуют отдельные правила.
Почему в подсети /31 нет network и broadcast?
RFC 3021 разрешает использовать оба адреса /31 на соединении point-to-point, где есть ровно две стороны и broadcast не нужен. Это экономит половину адресов по сравнению с /30, однако режим применим только тогда, когда его поддерживают оба конца соединения.
RFC 1918 и NAT являются частью CIDR?
Нет. CIDR задаёт бесклассовую адресацию и агрегацию маршрутов, RFC 1918 определяет частные IPv4-диапазоны, а NAT преобразует адреса на границе сети. Эти механизмы часто используются вместе, но решают разные задачи и были описаны в разных документах.
Почему после исчерпания свободных IPv4-адресов сеть продолжает работать?
Исчерпание означает, что региональный регистратор больше не может выдавать обычные крупные блоки из прежнего свободного пула. Уже распределённые адреса никуда не исчезли; кроме того, работают трансферы, возврат небольших блоков, частные сети с NAT и переход на IPv6.
Автор
Alex RelFullstack Engineer
В коммерческой разработке с 2011 года — больше 15 лет. Автор двух SaaS-продуктов: TeleGo.io и LingvoHabit.com. Статьи здесь выросли из реальной клиентской и продуктовой работы.



