Бесклассовая адресация

Бесклассовая адресация (англ. 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].

Выделение CIDR-блоков

Администрирование адресного пространства: 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.

CIDR-блоки IPv4

Формат
адреса
Приращение
к последнему адресу
Маска Количество адресов Отношение
к классу
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
0.0.0.1
255.255.255.254 2 21 1/128 °C d = 0 … (2n) … 254 Точка-точка (RFC 3021)
a.b.c.d/30
0.0.0.3
255.255.255.252 4 22 1/64 °C d = 0 … (4n) … 252 Точка-точка (backbone)
a.b.c.d/29
0.0.0.7
255.255.255.248 8 23 1/32 °C d = 0 … (8n) … 248 Минимальная мульти-хост сеть
a.b.c.d/28
0.0.0.15
255.255.255.240 16 24 1/16 °C d = 0 … (16n) … 240 Маленькая локальная сеть
a.b.c.d/27
0.0.0.31
255.255.255.224 32 25 1/8 C d = 0 … (32n) … 224
a.b.c.d/26
0.0.0.63
255.255.255.192 64 26 1/4 C d = 0, 64, 128, 192
a.b.c.d/25
0.0.0.127
255.255.255.128 128 27 1/2 C d = 0, 128 Крупная локальная сеть
a.b.c.0/24
0.0.0.255
255.255.255.0 256 28 1 C
a.b.c.0/23
0.0.1.255
255.255.254.0 512 29 2 C c = 0 … (2n) … 254
a.b.c.0/22
0.0.3.255
255.255.252.0 1 024 210 4 C c = 0 … (4n) … 252 Малый бизнес
a.b.c.0/21
0.0.7.255
255.255.248.0 2 048 211 8 C c = 0 … (8n) … 248 Малый провайдер/крупный бизнес
a.b.c.0/20
0.0.15.255
255.255.240.0 4 096 212 16 °C c = 0 … (16n) … 240
a.b.c.0/19
0.0.31.255
255.255.224.0 8 192 213 32 °C c = 0 … (32n) … 224 Крупный провайдер/предприятие
a.b.c.0/18
0.0.63.255
255.255.192.0 16 384 214 64 °C c = 0, 64, 128, 192
a.b.c.0/17
0.0.127.255
255.255.128.0 32 768 215 128 °C c = 0, 128
a.b.0.0/16
0.0.255.255
255.255.0.0 65 536 216 256 °C = B
a.b.0.0/15
0.1.255.255
255.254.0.0 131 072 217 2 B b = 0 … (2n) … 254
a.b.0.0/14
0.3.255.255
255.252.0.0 262 144 218 4 B b = 0 … (4n) … 252
a.b.0.0/13
0.7.255.255
255.248.0.0 524 288 219 8 B b = 0 … (8n) … 248
a.b.0.0/12
0.15.255.255
255.240.0.0 1 048 576 220 16 B b = 0 … (16n) … 240
a.b.0.0/11
0.31.255.255
255.224.0.0 2 097 152 221 32 B b = 0 … (32n) … 224
a.b.0.0/10
0.63.255.255
255.192.0.0 4 194 304 222 64 B b = 0, 64, 128, 192
a.b.0.0/9
0.127.255.255
255.128.0.0 8 388 608 223 128 B b = 0, 128
a.0.0.0/8
0.255.255.255
255.0.0.0 16 777 216 224 256 B = A Максимальный блок в распределениях IANA
a.0.0.0/7
1.255.255.255
254.0.0.0 33 554 432 225 2 A a = 0 … (2n) … 254
a.0.0.0/6
3.255.255.255
252.0.0.0 67 108 864 226 4 A a = 0 … (4n) … 252
a.0.0.0/5
7.255.255.255
248.0.0.0 134 217 728 227 8 A a = 0 … (8n) … 248
a.0.0.0/4
15.255.255.255
240.0.0.0 268 435 456 228 16 A a = 0 … (16n) … 240
a.0.0.0/3
31.255.255.255
224.0.0.0 536 870 912 229 32 A a = 0 … (32n) … 224
a.0.0.0/2
63.255.255.255
192.0.0.0 1 073 741 824 230 64 A a = 0, 64, 128, 192
a.0.0.0/1
127.255.255.255
128.0.0.0 2 147 483 648 231 128 A a = 0, 128
0.0.0.0/0
255.255.255.255
0.0.0.0 4 294 967 296 232 256 A Вся IPv4, маршрут по умолчанию

В подсетях больше /31 или /32 число доступных адресов хоста уменьшается на два: минимальный адрес (идентифицирующий сеть) и максимальный (broadcast) резервируются[15].[16]

Для /31 ранее считалось невозможным использовать такие подсети (остаются оба адреса резервными), однако RFC 3021 сняла это ограничение для точка-точка соединений. Адреса /32 (один хост) требуют явных маршрутов, поскольку шлюза нет.

CIDR-блоки IPv6

IPv6-префиксы CIDR
Размер префикса Число эквивалентных подсетей Битов 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 в таблице маршрутизации, что сокращает их объём.

Примечания

Литература