Разбиение IP-сети на подсети

IP-протокол

Основной протокол стека TCP/IP, - Internet Protocol (IP), - по своим функциям соответствует протоколу уровня межсетевого взаимодействия модели взаимодействия открытых систем (OSI). Наиболее известной и широко используемой стала его 4-я версия (IP v.4, RFC 791, сентябрь 1981). Версия 5 описывает протокол ST2, разработанный для передачи данных потоковых приложений реального времени. В 1998 году была опубликована 6-я версия IP-протокола (RFC 2460, декабрь 1998). Пока она не стала доминирующей, - в 2012 году доля трафика IP v.6 в узле обмена трафиком Амстердама не превышала 8% (самое высокое значение), в Нью-Йорке – 4%, Москве и Санкт-Петербурге – 3.5%. Однако эти показатели быстро растут - в 2015 году доля трафика IPv6 в общемировом IP-трафике достигла уже 9%. Особенности IP v6 будут рассмотрены отдельно, но ниже, если не оговаривается особо, рассматриваются свойства протокола четвертой версии.

Механизмы IP-протокола обеспечивают ненадежную доставку пакетов данных через распределенную сеть в режиме без предварительного установления соединения (дейтаграммный сервис). Решение задачи надежности доставки возлагается на протоколы верхних уровней, главным образом, на TCP. Основными функциями протокола IP являются:

· формирование пакетов из сегментов транспортного уровня, с предварительной фрагментацией (если необходимо) последних;

· логическая адресация сетей и узлов и поддержка процесса маршрутизации.

Структура IP-пакета

Функции IP-протокола реализуются посредством специальной структуры заголовка пакета, формат которого приведен на рис. 6.3.

 
 

 

 


Заголовок содержит поля фиксированной длины (первые 20 байт) и два поля переменной длины: поле «Опции», размер которого может достигать 40 байт, и поле «Выравнивание» (Padding), которое заполняется нулями, для дополнения поля поле «Опции» до величины, кратной 32 битам. Рассмотрим назначение полей заголовка.

Версия (Version) –поле содержит номер версии протокола. Включение версии в каждую дейтограмму позволяет использовать разные, но согласующиеся, версии протолов на разных узлах сети. Так в версии 6 протокола предусмотрены механизмы обработки пакетов протокола версии 4. Во всех остальных случаях пакеты, имеющие несогласующуюся с протокольным модулем узла обработки приемника версию, отбрасываются.

Размер заголовка (Internet Header Length, IHL) -поле определяет размер заголовка в 32-битных словах. Корректный заголовок имеет длину не менее 20 байт (5 слов). Размер поля опций (в 32-разрядных словах) может быть определен как значение этого поля минус 5.

Тип сервиса (Type of service, ToS).В традиционной IP-сети это поле определяет предпочтительный тип обслуживания пакета. Первые три бита поля задают уровень приоритета (0-7); 3-5 биты определяют желательный тип обслуживания по критериям: сетевой задержки (третий бит, какая получится/низкая), пропускной способности (четвертый бит, какая угодно/высокая) и уровню потерь (пятый бит, неконтролируемый/низкий). Маршрутизаторы часто не содержат механизмов приоритетной обработки и удовлетворения перечисленных выше требований к качеству обслуживания, поскольку это выходят за пределы сервиса «как получится»; такие устройства просто игнорируют информацию, содержащуюся в этом поле. Однако, в IP-сетях для удовлетворения требований разнообразных приложений были определены несколько моделей поддержки требований качества обслуживания. Все реализации служб с согласованным качеством обслуживания непременно используют значения битов этого поля. В частности, модель дифференцированного сервиса первые 6 бит этого поля использует для задания класса сервиса доставки (Differentiated Services Code Point, DSCP; RFC 2474, 2475).Граничный маршрутизатор сети или конечный хост, задавая значение этого поля, определяют один из 64 возможных типов обслуживания пакетов. По сути, этим кодом задаются правила классификации пакетов входным интерфейсом маршрутизатора и дисциплина обслуживания очередей. В настоящее время определены четыре класса обслуживания и три уровня вероятности потерь пакетов, что дает 12 типов обслуживания. Отметим, что 3 старших бита кода DSCPнепосредственно отражаются в биты приоритета, чем достигается совместимость этих кодов с уровнями приоритетов на устройствах, не поддерживающих дифференцированный сервис. Биты 6 и 7 в модели DSCP не используются. В канонической трактовке протокола они реализуют функцию управления потоком (ECN, Explicit Congestion Notification). Бит 6 устанавливается отправителем с целью индикации того, что его система способна реагировать на сигналы ECN (бит ECN). Бит 7 является собственно сигналом перегрузки (СЕ-бит, Congestion Experienced) и устанавливается маршрутизатором, если при обработке конкретного пакета размер его очереди достигает порогового значения.

Полный размер (Total length) - поле содержит общий размер пакета, величина которого не может превышать 65535 байт. Практически пакеты такой величины никогда не передаются, поскольку технологии канального уровня, в абсолютном большинстве своем не выполняющие фрагментацию, накладывают свои ограничения. Так, Ethernet не допускает кадров размером более 1518 байт, FDDI – 4096 байт и т.д. Значение параметра «Максимальная величина кадра» (Maximim Transmission Unit, MTU) определяется технологией канального уровня и, следовательно, может отличаться на разных сетевых интерфейсах даже одного устройства. В соответствии с MTU интерфейса, через который пакет должен быть отправлен на следующий узел, модуль IP выполняет фрагментацию поступающих к нему сегментов. В RFC 791 установлено, что IP-протокол должен доставлять пакеты, размер которых не превышает 576 байт без фрагментации (с такими пакетами «справляется» любая канальная технология). Следует отметить, что маршрутизатор не выполняет объединение пакетов, даже если выходной интерфейс имеет параметр MTU, допускающий кадры достаточно большого размера. Сборка фрагментированных пакетов в исходный производится станцией назначения.

Поля «Идентификатор», «Флаги» и «Смещение фрагмента» управляют процессом сборки фрагментированного пакета. Идентификатор (порядковый номер пакета) назначается хостом-источником (отправителем пакета); он остается неизменным на всем пути и устанавливается у всех его частей, если пакет подвергся фрагментации. Флаг «Don’t Fragment» - это запрещение фрагментации пакета узлами его обработки, а флаг «More Fragment» свидетельствует о наличии других фрагментов данного пакета; в последнем фрагменте этот флаг устанавливается в 0. Заметим, что размер фрагментов (без IP заголовока) должен быть кратным 8 байтам для всех фрагментов за исключением последнего. Поэтому и значение смещения задается в 8-байтовых словах; оно указывает положение поля данных текущего пакета в поле данных исходного пакета, подвергшегося фрагментации.

Время жизни (Time to live, TTL) -поле определяет максимальное время, которое пакет может существовать в сети. Его наличие помогает избежать перегрузок сети при возникновении ошибок в таблицах маршруизации, приводящих к образованию петель. Значение этого поля устанавливается при отправке пакета и уменьшается на единицу по мере прохождения им каждого маршрутизатора. При достижении нулевого значения этого поля пакет уничтожается. Максимальное значение поля – 255. Начальное значение TTL определяется операционной системой хоста-отправителя.

Протокол (Protocol) – поле указывает модулю какого протокола (TCP, UDP, ICMP, OSPF, …) следует передать полученный IP-пакет. Ниже. приведены значения этого поля для некоторых протоколов.

Таблица 6.1

Значение поля Ключевое слово Протокол
Reserved Зарезервировано
ICMP Internet Control Message Protocol
IP Internet Protocol
TCP Transmission Control Protocol
UDP User Datagram Protocol
OSPF Open Shortest Path First

Контрольная сумма (Header checksum) –поле содержит значение контрольной суммы,рассчитанной только по заголовку. Поскольку значения некоторых полей заголовка пакета изменяются по мере его прохождения по маршруту (поле TTL, например), то значение контрольной суммы пересчитываются на каждом маршрутизаторе. Этот механизм является единственным средством обеспечения достоверности передачи, содержащимся в протоколе IP.

Адрес отправителя (Source IP address)и Адрес получателя (Destination IP address)– поля одинаковой длины (32 бита), содержащие соответствующие адреса. Правила адресации в IP-сетях будут рассмотрены ниже.

Опции (Options)– необязательное поле, используемое при отладке сетей для запроса и реализации определенных специфических процедур обработки. Всего документом RFC 791 определены 8 опций. В частности, в этих полях могут записываться обязательный маршрут пакета от источника, реализуемый маршрут (трассировка), временные метки получения пакета каждым узлом. До недавнего времени возможности этих опциональных полей использовались редко. Однако, в связи с разработкой новых протоколов, обеспечивающих большую гибкость в обработке IP-трафика, возможность использования этих полей вновь стала предметом обсуждения соответствующих комитетов. Размер опциональных полей переменный, поэтому в заголовке каждой опции предусматривается поле ее размера. Обработка опциональных полей IP-пакета обязательна каждым узлом.

Адресация в сетях IP

Для идентификации каждого компьютера в IP-сети необходима система их адресации. Но главное, необходима возможность адресации логической совокупности компьютеров, называемой далее сетью. При этом учитывается, что сетевые устройства (компьютер, маршрутизатор и т.д.) могут иметь несколько интерфейсов, и каждый из них должен иметь уникальный адрес. Принятая в протоколк IP система адресации описана в документах RFC 990 и RFC 997.

Каждое сетевое устройство имеет адреса трех типов:

1. Физический адрес узла, формат которого определяется используемой технологией канального уровня. Для Ethernet и Token Ring – это 6-ти байтовый MAC-адрес сетевой карты, назначаемый ей фирмой-производителем.

2. Уникальный сетевой адрес (IP-адрес), имеющий размер 4 байта.

3. Символьный адрес – имя, назначаемое по определенным правилам и являющееся полным эквивалентом IP-адреса.

Первоначально IP-адрес имел двухуровневую структуру, т.е. он объединял в себе адрес сети и адрес хоста. Разделение сетевого адреса на 2 части имеет большой практический смысл, ибо позволяет маршрутизаторам существенно сократить размер своих таблиц, формируя их на основании только адресов сетей назначения. Для удовлетворения потребностей адресации сетей различного масштаба были введены несколько классов сетей, отличающиеся размером полей, отводимых для указания адреса сети и номера хоста. При этом, размер поля полного адреса всегда равен 32 битам. Структура адресов сетей разных классов приведена на рис. 6.4.

 
 

 

 


IP-адрес обычно записывается в форме 4-х трехразрядных десятичных чисел, разделяемых точкой. Каждое из этих десятичных чисел является представлением двоичного числа каждого байта адреса. Так, например, адрес 10000000 10000111 01000100 00000101 в десятичном представлении имеет вид 128.135.68.5. Поскольку первые два бита адреса суть 10, то это адрес хоста, принадлежащего сети класса B, и, следовательно, левые 16 бит являются адресом сети, а правые16 бит – адресом хоста.

Некоторые адреса являются зарезервированными и не могут присваиваться хостам. Так, адрес 127.х.х.х (х – означает любое число, обычно 0) зарезервирован для обратной связи, используемой при тестировании взаимодействия процессов на одной сетевой станции. Когда приложение использует этот адрес в качестве адреса назначения, стек TCP/IP данного хоста копирует данные из передающего буфера в приемный и ничего не передает на физический интерфейс. Поэтому адреса, начинающиеся на 127, запрещается присваивать сетевым устройствам. Другим зарезервированным адресом является, так называемый, широковещательный адрес, содержащий 1 во всех своих битах. Пакет с адресом назначения 255.255.255.255 будет доставлен всем устройствам сети, к которой принадлежит узел-отправитель, но маршрутизаторы такие пакеты не обрабатывают и в другие сети не передают. Вместе с тем, существует и направленное широковещание – способ адресации, при котором один пакет, отосланный в определенную сеть, будет доставлен всем ее хостам. Такой пакет должен содержать корректный адрес сети и иметь все биты адреса хоста установленными в 1. Так, например, пакет с адресом 184.90.255.255 будет доставлен всем станциям сети класса В, имеющей адрес 184.90.0.0.

Из рис. 6.4. хорошо видно, что значения первых четырех битов адреса однозначно определяют обе границы его сетевой части. Нетрудно сосчитать, что максимальное число сетей класса А равно 26+25+ ….+20 –1 =126 (сетевой префикс, состоящий из одних нулей недопустим). Каждая сеть класса А может содержать 224-2 = 16 777 214 устройств. В целом, адресный блок сетей класса А занимает около 50% общего адресного пространства. Таблица 6.2. содержит аналогичные показатели для сетей класса B и C.

 

Таблица6.2.

Класс сетей Значение первого байта адреса Количество сетей Количество хостов в сети класса Удельный вес класса в IP-адресном пространстве (%)
А 001 – 126 16 777 214
В 128 – 191 16 384 65 534
С 192 - 223 2 097 152 12,5

Для обеспечения уникальности сетевых адресов их распределение ведется специальными центрами, представляющими сеть взаимосвязанных структур, руководимых профильной организацией Интернет - Internet Assigned Numbers Authority (IANA). IANA делегирует свои полномочия по распределению IP-адресов региональным регистраторам (LIR), выделяя им определенные диапазоны сетей. Региональные регистраторы, в свою очередь, выделяют более мелкие диапазоны интернет-провайдерам и организациям.

Разбиение IP-сети на подсети

Рассмотренная выше двухуровневая схема адресации оказалась недостаточно гибкой в части как расходования адресного пространства, так и в части группировки сетей в логические подмножества. Для устранения этих недостатков в 1985 году была определена трехуровневая схема адресации (RFC 950). Необходимость перехода к ней можно проиллюстрировать следующим примером. Организация получила сеть класса В, позволяющую адресовать 65000 хостов. Пока в сети работало относительно немного станций, она функционировала благополучно. Но с ростом числа активных хостов неизбежно растет и широковещательный трафик, поскольку этот тип пакетов активно используется в служебных целях многими протоколами. Это обстоятельство неизбежно ведет к снижению эффективной производительности сети. Кроме того, управление несколькими десятками тысяч подключений из единого административного центра является очень трудной задачей. К этим проблемам следует добавить и то, что развитие любой организации сопровождается ростом самостоятельности ее подразделений, что также неизбежно должно отражаться и в структуре сети. Возможность же структурирования сети организации за счет получения дополнительных сетей была быстро исчерпана и резкая нехватка адресного пространства стала реальностью еще во второй половине 80-х годов. Кроме того, рост числа используемых малых сетей (класса С) вел к росту таблиц маршрутизации магистральных (межсетевых) маршрутизаторов и, следовательно, к снижению их производительности.

Перечисленные проблемы ограничивали масштабируемость сети; они, в значительной степени, были разрешены посредством введения в иерархию адресации третьего уровня. Этот уровень, получивший название «уровень подсети», был выделен в пространстве адресов хоста (рис. 6.5).

 
 

 


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

Отрицательным следствием введения подсетей стало усложнение процедуры определения адреса хоста. Действительно, сетевые устройства на основании анализа четырех старших битов сетевого адреса легко определяют класс сети, после чего, в случае двухуровневой иерархии, находится и граница между битами сетевого адреса и адреса хоста. В трехуровневой системе адресации этот прием работать не сможет. Для определения адреса подсети и адреса хоста потребовалось ввести сетевую маску –дополнительный 32-битный адрес, в котором все биты, соответствующие битам расширенного сетевого префикса, устанавливаются в 1, а биты, соответствующие битам адреса хоста – в 0. Так, например, пусть в сети класса В 132.10.0.0 необходимо выделить подсети, самая большая из которых содержит не более 100 хостов. Для адресации такого числа сетевых устройств достаточно располагать 7 битами (27 =128), которые и отводятся в нижней части битового пространства поля адреса. Оставшиеся 9 бит, из числа 16, предназначенных в сетях класса B для адресации хостов, будут использованы для задания номера подсети (их можно организовать 29-2=510). Старшие 16 бит, как и в двухуровневой иерархии, адресуют сеть. Таким образом, подсеть 132.10.12.128, в которой находятся хосты с адресами:

132.10.12.129, 132.10.12.130,….,132.10.12.254

будет иметь маску вида

11111111 11111111 11111111 10000000 (255.255.255.128).

Если маршрутизатор получит пакет с адресом назначения 132.10.12.176, в двоичной нотации имеющий вид

10000100 00001010 00001100 10110000,

и ему будет известна маска сети назначения (255.255.255.128), то выполнение по отношению к адресу и сетевой маске операции логического И даст адрес подсети. В данном случае получаем:

10000100 00001010 00001100 10000000,

что действительно соответствует адресу подсети 132.10.12.128. Далее, по таблице маршрутизации будет найден следующий узел на пути к этой подсети, и пакет будет отправлен на соответствующий интерфейс.

Заметим, что информация о маске подсети IP-пакетом не переносится (хост-источник о структуре сети, в которой находится получатель, ничего не знает). Передача информации о сетях (подсетях) является задачей протоколов маршрутизации, а все непосредственно присоединенные к маршрутизатору подсети вместе с их масками указываются администратором при конфигурировании маршрутизатора. Очевидно, что необходимость кроме адреса сети передавать и ее маску ведет к росту объема служебного трафика.

В документах, описывающих современные протоколы маршрутизации, часто делается ссылка на длину расширенного сетевого префикса, а не на маску подсети. В такой нотации сетевой адрес устройства в рассмотренном выше примере имеет вид 132.10.12.176/25. В качестве примера нумерации подсетей в таблице 6.3. приведено разбиение сети класса С на подсети. Указанное в таблице число хостов в каждой из подсетей на два меньше возможного числа адресов, поскольку адреса, в которых все биты поля адреса хоста установлены в ноль и в единицу, являются зарезервированными и используются как адрес подсети и ее широковещательный адрес, соответственно. Так при подсетях, приведенных в табл. 6.3., адрес 193.10.1.0 является адресом подсети 193.10.1.0/25, а не всей сети 193.10.1.0. Аналогично, адрес 193.10.1.255 является широковещательным только для подсети 193.10.1.224/27.

 

Таблица 6.3.

  Адрес Маска Эквивалентный адрес подсети Число хостов в подсети  
Исходная сеть 193.10.1.0 255.255.255.0 193.10.1.0/24
Подсеть 1 193.10.1.0 255.255.255. 192 193.10.1.0/26
Подсеть 2 193.10.1.64 255.255.255. 192 193.10.1.64/26
Подсеть 3 193.10.1.128 255.255.255. 192 193.10.1.128/26
Подсеть 4 193.10.1.192 255.255.255. 192 193.10.1.192/26

Исходным документом (RFC 950) о подсетях предусматривалось, что "классовая" сеть может быть разделена на подсети фиксированного размера (подсети с общей маской). Однако это существенно ограничивало возможности рационального использования адресного пространства. Поэтому, дальнейшим развитием трехуровневой модели адресации стало снятие ограничения на постоянство длины расширенного сетевого префикса во всех подсетях. Использование масок переменной длины (Variable Length Subnet Mask, VLSM) явилось полным отказом от «классовой» иерархии в адресном пространстве. Для этой технологии адресное пространство любой сети может содержать 2n адресов ( ). При этом отпадает необходимость в использовании крайних левых битов для определения класса сети, что дает дополнительные возможности расширения адресного пространства. Ниже в таблице 6.4 представлены возможные блоки сетевых адресов, сформированные на основе иерархии VLSM.

Таблица 6.4

Длина сетевого префикса Количество адресов Максимальное количество хостов Маска сети Количество "классовых" сетей
2 147 483 648 2 147 483 646 128.0.0.0 128 A
1 073 741 824 1 073 741 822 192.0.0.0 64 A
536 870 912 536 870 910 224.0.0.0 32 A
268 435 456 268 435 454 240.0.0.0 16 A
134 217 728 134 217 726 248.0.0.0 8 A
67 108 864 67 108 862 252.0.0.0 4 A
33 554 432 33 554 430 254.0.0.0 2 A
16 777 216 16 777 214 255.0.0.0 1 A (256 B)
8 388 608 8 388 606 255.128.0.0 (1/2 A) 128 B
4 194 304 4 194 302 255.192.0.0 (1/4 A) 64 B
2 097 152 2 097 150 255.224.0.0 (1/8 A) 32 B
1 048 576 1 048 574 255.240.0.0 16 B
524 288 524 286 255.248.0.0 8 B
262 144 262 142 255.252.0.0 4 B
131 072 13 107 255.254.0.0 2 B
65 536 65 534 255.255.0.0 1 B (256 C)
32 768 32 766 255.255.128.0 (1/2 B) 128 C
16 384 16 382 255.255.192.0 (1/4 B) 64 C
8 192 255.255.224.0 (1/8 B) 32 C
4 096 4 094 255.255.240.0 16 C
2 048 2 046 255.255.248.0 8 C
1 024 1 022 255.255.252.0 4 C
255.255.254.0 2 C
255.255.255.0 1 C
255.255.255.128 1/2 C
255.255.255.192 1/4 C
255.255.255.224 1/8 C
255.255.255.240 1/16 C
255.255.255.248 1/32 C
255.255.255.252 1/64 C
255.255.255.254 1/128 C
255.255.255.255 1/256 C

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

Введение подсетей, решив проблемы масштабирования адресного пространства, потребовало определенного усложнения протоколов маршрутизации, которые должны переносить не только адрес сети (подсети), но и ее маску. В настоящее время все широко используемые протоколы маршрутизации (RIP-2, IS-IS, OSPF) переносят эту информацию.