Бесклассовая адресация
Бесклассовая адресация (англ. Classless Inter-Domain Routing, CIDR, произносится как «сайдер» или «сидр») — метод выделения и маршрутизации IP-адресов для маршрутизации в Интернет. Бесклассовая адресация (CIDR) была предложена Рабочей группой инженерии Интернета (IETF) в 1993 году в качестве замены прежней архитектуры адресации классового типа в Интернете. Целью внедрения CIDR было замедление роста таблиц маршрутизации на маршрутизаторах в Интернете, а также отсрочка быстрого исчерпания IPv4-адресов[1].[2]
В CIDR IP-адрес структурно состоит из двух групп битов: наиболее значащие биты (слева) определяют сетевой префикс, который идентифицирует всю сеть или подсеть, а младшие биты образуют идентификатор хоста (host identifier), указывающий конкретный интерфейс в данной сети. Эта схема лежит в основе маршрутизации трафика между сетями и политик распределения адресов.
В системах классовой адресации для IPv4 сетевой префикс ограничивался целым числом октетов, образуя класс A, B или C. В CIDR адресное пространство выделяется провайдерам интернет-услуг и конечным пользователям по произвольной границе бит. В IPv6 идентификатор интерфейса (host identifier) согласно принятым соглашениям всегда равен 64 битам, а подсети меньших размеров конечным пользователям не назначаются.
CIDR основана на принципе маски с переменной длиной префикса (англ. Variable-Length Subnet Masking, VLSM), то есть позволяет использовать сетевые префиксы произвольной длины. Ключевое преимущество такого подхода — возможность более гибко выделять адресные блоки организациям, замедляя исчерпание IPv4-адресов и уменьшая избыточные выделения больших подсетей. Введённая CIDR нотация (CIDR notation) указывает IP-адрес и длину префикса (например, 192.0.2.0/24 для IPv4 или 2001:db8::/32 для IPv6). Подмножества адресов с совпадающими префиксами могут агрегироваться в суперсети, что значительно сокращает размер глобальных таблиц маршрутизации.
Контекст
Каждый IP-адрес состоит из сетевого префикса и идентификатора хоста. В системах классовой адресации IPv4 три наиболее значащих бита 32-битного адреса определяют класс сети (A, B или C), а значит — и длину префикса для unicast-сетей[3].
| Класс | Наиболее значащие биты | Длина префикса сети (бит) |
Длина идентификатора хоста (бит) |
Диапазон адресов |
|---|---|---|---|---|
| A | 0 | 8 | 24 | 0.0.0.0 — 126.255.255.255 |
| Лупбэк | 0 | 8 | 24 | 127.0.0.0 — 127.255.255.255 |
| B | 10 | 16 | 16 | 128.0.0.0 — 191.255.255.255 |
| C | 110 | 24 | 8 | 192.0.0.0 — 223.255.255.255 |
| D(мультикаст) | 1110 | — | — | 224.0.0.0 — 239.255.255.255 |
| E(зарезервировано) | 1111 | — | — | 240.0.0.0 — 255.255.255.255 |
Преимущество этой системы заключалось в простоте определения сетевого префикса без дополнительной информации. Недостатком стала низкая гибкость: размер выделяемых сетей редко соответствовал реальным потребностям организаций, так как существовало всего три типа блоков. Например, минимальный класс содержал 256 адресов (2⁸), что избыточно для небольших сетей, а следующий — 65 536 адресов (2¹⁶), что слишком много даже для крупных компаний; для тех, кому требовалось больше адресов, оставался только 16-миллионный блок (2²⁴).
Подобная неэффективность расходования адресного пространства, а также постоянная необходимость в агрегации множества разбросанных класс C-сетей, привела к существенным затруднениям в маршрутизации. Через десять лет после появления DNS классовая система адресации была признана не масштабируемой[4]. Были введены механизмы подсетей и CIDR, а выделение адресных блоков стало производиться в «бесклассовом» стиле. Для поддержки новой схемы роутинга были доработаны сетевые протоколы: они стали передавать не только сами адреса, но и маски подсетей.
Внедрение CIDR потребовало поэтапной модификации программного обеспечения на каждом сетевом устройстве и узле, что стало значительным испытанием в период бурного роста Интернета. В 1993 году IETF определила новые стандарты RFC 1518 и RFC 1519, регламентирующие новые правила выделения блоков IP-адресов и маршрутизации для IPv4. В 2006 году вышла их обновлённая версия — RFC 4632[5].
После тестирования различных подходов CIDR была основана на идее маски с переменной длиной префикса (VLSM), предложенной ещё в RFC 950[6]. Кластеризация, как основной метод агрегирования адресных блоков, впервые была предложена Карлом-Хербертом Рокитанским[7].[8]
Нотация CIDR
CIDR-нотация — это компактный способ одновременного указания IP-адреса и соответствующей ему сетевой маски. Она предложена Филом Карном (Phil Karn) в 1980-х годах[9].[10] Нотация представляет собой IP-адрес, за которым следует символ «/» и десятичное число, равное количеству начальных единиц (слева) в сетевой маске. Каждый такой бит определяет фиксированную часть адреса, общую для всех адресов данного блока. Адрес записывается в виде, принятом для IPv4 или IPv6.
Адрес может обозначать как конкретный интерфейс (например, 10.0.0.1/8), так и всю сеть (10.0.0.0/8 или 10/8). Иногда используется запись только длины префикса (например, /24 для любой подсети IPv4 с префиксом 24 бита).
Примеры:
- 198.51.100.14/24 — адрес 198.51.100.14 и его сетевой префикс 198.51.100.0 или эквивалентная маска 255.255.255.0 (24 начальных единицы).
- Блок 198.51.100.0/22 — диапазон 1024 адреса от 198.51.100.0 до 198.51.103.255.
- 2001:db8::/48 — все адреса от 2001:db8:0:0:0:0:0:0 до 2001:db8:0:ffff: ffff: ffff: ffff: ffff (IPv6).
- ::1/128 — адрес лупбэк IPv6; его префикс — 128 (все биты адреса фиксированы).
Для IPv4 CIDR-нотация стала стандартом после официального внедрения CIDR, первоначально параллельно использовалась и десятичная маска (например, 192.24.12.0/22 ≡ 255.255.252.0)[2] Окончательное закрепление компактной записи в стандартах произошло позже,[11].[12] и повсеместно вошла в сетевые интерфейсы.
Число адресов в блоке вычисляется как 2длина_адреса − длина_префикса (адрес — 128 бит для IPv6, 32 бита для IPv4). Пример: для префикса /29 в IPv4 — 232-29 = 8 адресов.
Маски подсетей
Маска подсети — это битовая маска, однозначно задающая длину префикса для IPv4-адреса в виде четырёх десятичных октетов: 32 бита, последовательность из длины префикса единиц, остальное — нули (например, 255.255.255.0 для /24). Маска подсети исторически предшествует CIDR-нотации. В CIDR префикс всегда состоит из последовательных (смежных) единиц; ранние стандарты разрешали более произвольные маски, но с RFC 4632[5]:{{{1}}} закрепилось требование строгой непрерывности единиц и нулей.
CIDR-блоки
CIDR реализует битовую адресацию с возможностью агрегирования адресов в крупные блоки по сетевому префиксу. Такие группы называются CIDR-блоками: для IPv4 задаются формой a.b.c.d/n, где n — длина общего префикса (0-32), а для IPv6 — (0-128). Чаще для иллюстраций оставляют только длину (например, /20), опуская конкретный адресной базис.
Адрес принадлежит CIDR-блоку, если n первых (старших) бит адреса и префикса совпадают. Короткие префиксы (малое n) охватывают больше адресов; длинные — меньше. В случае перекрытия блоков один адрес может попадать сразу в несколько блоков.
Тот же принцип применяется для IPv6, но длина блоков может быть до 128, а стандартно для локальных соединений в MAC-сетях резервируется 64 бита для идентификатора интерфейса[13]. Префиксы до /127 применяются для точка-точка соединений между маршрутизаторами[14].
Администрирование адресного пространства: IANA выделяет региональным интернет-регистрам (RIR) крупные CIDR-блоки небольшой длины префикса (например, /8 — более 16 миллионов адресов). RIR (например, европейский RIPE NCC) далее дробят эти блоки между региональными и локальными регистраторами, которые распределяют их среди конечных пользователей (сетей). Как правило, сети с одним провайдером получают адресацию от провайдера, а обслуживаемые несколькими провайдерами могут обратиться за независимым адресным блоком непосредственно в RIR.
Пример: в конце 1990-х IP-адрес 208.130.29.33 использовался сайтом www.freesoft.org. Анализ выделения адресного пространства: CIDR-префикс 208.128.0.0/11 (2 млн адресов) выделен ARIN для компании MCI Communications. Компания ARS арендовала канал у MCI и получила блок 208.130.28.0/22 (немногим более 1000 устройств). Для общедоступных серверов ARS использовала ещё меньший блок /24, одним из адресов которого был 208.130.29.33. Различные префиксы участвовали в роутинге на разных уровнях: вне сети MCI использовался маршрутизируемый блок /11, внутри сети MCI — /22, внутри сети ARS — /24.
| Формат адреса |
Приращение к последнему адресу |
Маска | Количество адресов | Отношение к классу A, B, C |
Ограничения по a, b, c, d (0..255, если не указан иной диапазон) |
Типовое назначение | |
|---|---|---|---|---|---|---|---|
| Десятичная форма | 2 n | ||||||
| a.b.c.d/32 | 255.255.255.255 | 1 | 20 | 1/256 °C | Маршрут к одному хосту | ||
| a.b.c.d/31 | |||||||
| 255.255.255.254 | 2 | 21 | 1/128 °C | d = 0 … (2n) … 254 | Точка-точка (RFC 3021) | ||
| a.b.c.d/30 | |||||||
| 255.255.255.252 | 4 | 22 | 1/64 °C | d = 0 … (4n) … 252 | Точка-точка (backbone) | ||
| a.b.c.d/29 | |||||||
| 255.255.255.248 | 8 | 23 | 1/32 °C | d = 0 … (8n) … 248 | Минимальная мульти-хост сеть | ||
| a.b.c.d/28 | |||||||
| 255.255.255.240 | 16 | 24 | 1/16 °C | d = 0 … (16n) … 240 | Маленькая локальная сеть | ||
| a.b.c.d/27 | |||||||
| 255.255.255.224 | 32 | 25 | 1/8 C | d = 0 … (32n) … 224 | |||
| a.b.c.d/26 | |||||||
| 255.255.255.192 | 64 | 26 | 1/4 C | d = 0, 64, 128, 192 | |||
| a.b.c.d/25 | |||||||
| 255.255.255.128 | 128 | 27 | 1/2 C | d = 0, 128 | Крупная локальная сеть | ||
| a.b.c.0/24 | |||||||
| 255.255.255.0 | 256 | 28 | 1 C | ||||
| a.b.c.0/23 | |||||||
| 255.255.254.0 | 512 | 29 | 2 C | c = 0 … (2n) … 254 | |||
| a.b.c.0/22 | |||||||
| 255.255.252.0 | 1 024 | 210 | 4 C | c = 0 … (4n) … 252 | Малый бизнес | ||
| a.b.c.0/21 | |||||||
| 255.255.248.0 | 2 048 | 211 | 8 C | c = 0 … (8n) … 248 | Малый провайдер/крупный бизнес | ||
| a.b.c.0/20 | |||||||
| 255.255.240.0 | 4 096 | 212 | 16 °C | c = 0 … (16n) … 240 | |||
| a.b.c.0/19 | |||||||
| 255.255.224.0 | 8 192 | 213 | 32 °C | c = 0 … (32n) … 224 | Крупный провайдер/предприятие | ||
| a.b.c.0/18 | |||||||
| 255.255.192.0 | 16 384 | 214 | 64 °C | c = 0, 64, 128, 192 | |||
| a.b.c.0/17 | |||||||
| 255.255.128.0 | 32 768 | 215 | 128 °C | c = 0, 128 | |||
| a.b.0.0/16 | |||||||
| 255.255.0.0 | 65 536 | 216 | 256 °C = B | ||||
| a.b.0.0/15 | |||||||
| 255.254.0.0 | 131 072 | 217 | 2 B | b = 0 … (2n) … 254 | |||
| a.b.0.0/14 | |||||||
| 255.252.0.0 | 262 144 | 218 | 4 B | b = 0 … (4n) … 252 | |||
| a.b.0.0/13 | |||||||
| 255.248.0.0 | 524 288 | 219 | 8 B | b = 0 … (8n) … 248 | |||
| a.b.0.0/12 | |||||||
| 255.240.0.0 | 1 048 576 | 220 | 16 B | b = 0 … (16n) … 240 | |||
| a.b.0.0/11 | |||||||
| 255.224.0.0 | 2 097 152 | 221 | 32 B | b = 0 … (32n) … 224 | |||
| a.b.0.0/10 | |||||||
| 255.192.0.0 | 4 194 304 | 222 | 64 B | b = 0, 64, 128, 192 | |||
| a.b.0.0/9 | |||||||
| 255.128.0.0 | 8 388 608 | 223 | 128 B | b = 0, 128 | |||
| a.0.0.0/8 | |||||||
| 255.0.0.0 | 16 777 216 | 224 | 256 B = A | Максимальный блок в распределениях IANA | |||
| a.0.0.0/7 | |||||||
| 254.0.0.0 | 33 554 432 | 225 | 2 A | a = 0 … (2n) … 254 | |||
| a.0.0.0/6 | |||||||
| 252.0.0.0 | 67 108 864 | 226 | 4 A | a = 0 … (4n) … 252 | |||
| a.0.0.0/5 | |||||||
| 248.0.0.0 | 134 217 728 | 227 | 8 A | a = 0 … (8n) … 248 | |||
| a.0.0.0/4 | |||||||
| 240.0.0.0 | 268 435 456 | 228 | 16 A | a = 0 … (16n) … 240 | |||
| a.0.0.0/3 | |||||||
| 224.0.0.0 | 536 870 912 | 229 | 32 A | a = 0 … (32n) … 224 | |||
| a.0.0.0/2 | |||||||
| 192.0.0.0 | 1 073 741 824 | 230 | 64 A | a = 0, 64, 128, 192 | |||
| a.0.0.0/1 | |||||||
| 128.0.0.0 | 2 147 483 648 | 231 | 128 A | a = 0, 128 | |||
| 0.0.0.0/0 | |||||||
| 0.0.0.0 | 4 294 967 296 | 232 | 256 A | Вся IPv4, маршрут по умолчанию | |||
В подсетях больше /31 или /32 число доступных адресов хоста уменьшается на два: минимальный адрес (идентифицирующий сеть) и максимальный (broadcast) резервируются[15].[16]
Для /31 ранее считалось невозможным использовать такие подсети (остаются оба адреса резервными), однако RFC 3021 сняла это ограничение для точка-точка соединений. Адреса /32 (один хост) требуют явных маршрутов, поскольку шлюза нет.
| Размер префикса | Число эквивалентных подсетей | Битов ID интерфейса | ||
|---|---|---|---|---|
| /48 | /56 | /64 | ||
| /24 | 16M | 4G | 1T | 104 |
| /25 | 8M | 2G | 512G | 103 |
| /26 | 4M | 1G | 256G | 102 |
| /27 | 2M | 512M | 128G | 101 |
| /28 | 1M | 256M | 64G | 100 |
| /29 | 512K | 128M | 32G | 99 |
| /30 | 256K | 64M | 16G | 98 |
| /31 | 128K | 32M | 8G | 97 |
| /32 | 64K | 16M | 4G | 96 |
| /33 | 32K | 8M | 2G | 95 |
| /34 | 16K | 4M | 1G | 94 |
| /35 | 8K | 2M | 512M | 93 |
| /36 | 4K | 1M | 256M | 92 |
| /37 | 2K | 512K | 128M | 91 |
| /38 | 1K | 256K | 64M | 90 |
| /39 | 512 | 128K | 32M | 89 |
| /40 | 256 | 64K | 16M | 88 |
| /41 | 128 | 32K | 8M | 87 |
| /42 | 64 | 16K | 4M | 86 |
| /43 | 32 | 8K | 2M | 85 |
| /44 | 16 | 4K | 1M | 84 |
| /45 | 8 | 2K | 512K | 83 |
| /46 | 4 | 1K | 256K | 82 |
| /47 | 2 | 512 | 128K | 81 |
| /48 | 1 | 256 | 64K | 80 |
| /49 | 128 | 32K | 79 | |
| /50 | 64 | 16K | 78 | |
| /51 | 32 | 8K | 77 | |
| /52 | 16 | 4K | 76 | |
| /53 | 8 | 2K | 75 | |
| /54 | 4 | 1K | 74 | |
| /55 | 2 | 512 | 73 | |
| /56 | 1 | 256 | 72 | |
| /57 | 128 | 71 | ||
| /58 | 64 | 70 | ||
| /59 | 32 | 69 | ||
| /60 | 16 | 68 | ||
| /61 | 8 | 67 | ||
| /62 | 4 | 66 | ||
| /63 | 2 | 65 | ||
| /64 | 1 | 64 | ||
| K = 1 024, M = 1 048 576, G = 1 073 741 824, T = 1 099 511 627 776 | ||||
Большая длина IPv6-адреса позволяет сохранять достаточные резервы префиксов на каждом уровне и агрегировать маршруты по всему миру. Принятый стандартный размер подсети для IPv6 — /64, что необходимо для работы Stateless Address Autoconfiguration[17]. Ранние рекомендации IETF (RFC 3177) советовали выдавать конечным сайтам блоки не менее /48[18], но позднее были приняты более гибкие подходы (RFC 6177)[19], допускающие распределение блоков и меньшего размера (например, /56 для домашних сетей).
Разным видам сетей могут быть необходимы различные размеры подсетей[20]. Маска префикса отделяет идентификатор подсети от идентификатора интерфейса. Меньший префикс (большее число) означает большее число адресов в каждой сети; больший — меньшее их число, но больше сетей[21].
2001:0db8:0123:4567:89ab:cdef:1234:5678 |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||128 Уникальные крайние адреса и лупбэк |||| |||| |||| |||| |||| |||| |||127 Точка-точка (маршрутизатор–маршрутизатор) ... |||| |||| |||| |||| |||64 Одиночная локальная сеть; стандартный префикс для SLAAC ... |||| |||| |56 Минимальное выделение для конечных сайтов[19] (например, /56 = 256 блоков /64) ... |||48 Типичное выделение для компаний (/48 = 65 536 блоков /64) ... |||32 Минимальные выделения LIR ... ||12 RIR–IANA[22] ...
Математическая интерпретация
Множество подсетей, описываемых CIDR, образует покрытие адресного пространства. Запись X/n/ соответствует всем адресам формата [x·2^{32-n}, x·2^{32-n} + 2^{32-n} — 1] для IPv4 и [x·2^{128-n}, x·2^{128-n} + 2^{128-n} — 1] — для IPv6; здесь X кратно 2^{32-n}. При фиксированном n все такие блоки образуют разбиение адресного пространства; увеличение n приводит к более детализированному разбиению.
Агрегация префиксов
CIDR позволяет эффективную агрегацию префиксов: например, 16 последовательных сетей /24 с одинаковыми 20 начальными битами можно представить одной записью /20 в таблице маршрутизации, что сокращает их объём.
Примечания
Литература
- Classless IN-ADDR.ARPA delegation (англ.). IETF RFC (март 1998). Дата обращения: 21 июня 2024. Архивировано 21 июня 2024 года.
- CIDR and Classful Routing (англ.). IETF RFC (август 1995). Дата обращения: 21 июня 2024. Архивировано 21 июня 2024 года.


