4.2.2 Простые способы организации подсетей

Формирование подсетей было введено для преодо­ления следующих проблем:

- резкого роста размера и количества таблиц маршрутизации в Интернете;

- появления дефицита номеров сетей при необходимости расширения их ко­личества.

Обе эти проблемы решались путем добавления еще одного уровня иерархии к адресной структуре протокола IP .

Организацией подсетей называется процедура разбивки крупной сети на меньшие, более управляемые компоненты. Например, между IP-адресами класса С и класса В существует большое различие в части допустимого количест­ва хостов в каждой сети. Столь же значительное различие существует между адресами класса В и класса А, Но что если организации необходимо адресовать в сети только 1000 хостов? Ей потребуется получить адрес сети класса В даже несмотря на то, что свыше 64 000 адресов останутся неиспользованными. Кроме того, можно ли успешно подключить 65 000 компьютеров к одной сети без использования каких-либо каналов распределенной сети? Можно ли связать 65 000 компьютеров с помощью одного сегмента Ethernet , длина кото­рого не может превышать 500 метров? Должен быть предусмотрен способ разделения крупной сети на несколько подсетей. Именно этот принцип лежит в основе способа организации подсетей.

Организация подсетей осуществляется успешно благодаря тому, что в ее основе ле­жит двоичная арифметика. С помощью маски подсети мы можем "заимствовать" биты из части IP -адреса с обозначением хоста и присоединять их к части с обозначением се­ти. В результате количество возможных номеров сетей увеличивается, а количество но­меров хостов уменьшается.

Метод организации подсетей позволяет разбить одну большую сеть на меньшие сети, которые являются более подходящими для того количества хостов, которые можно успешно включить в один широковещательный домен. Например, предполо­жим, что компания зарегистрировала сеть класса В с адресом 190.1.0.0. При ис­пользовании маски, предусмотренной по умолчанию (которая является 16-битовой, или равна 255.255.0.0), в компании можно сформировать только одну сеть пример­но с 65 000 хостами. Но предположим, что компания имеет около 200 производствен­ных площадок, на каждой из которых находится не больше 200 хостов. Поэтому фак­тически компания сможет использовать только несколько сотен адресов класса С.

На рис. 4.9 представлен процесс формирова­ния подсетей, в котором номер хоста делится на две части: номер подсети и но­мер хоста в этой подсети.


Рис. 4.9. Формирование подсетей

 


С помощью метода организации подсетей компания может разбить свой адрес сети класса В на 254 адреса сети, соответствующих классу С. Для этого сети присваивается вместо 16-битовой маски 24-битовая маска (255.255.255.0). Если операция "И" выполняется с использованием 24-битовой маски, то при обработке ад­реса типа 190.1.1.1 обнаруживается, что адрес сети равен 190.1.1.0, а не 190.1.0.0, как было бы при использовании 16-битовой маски. В результате создает­ся сеть, аналогичная показанной на рис. 4.10.

 

 

Рис. 4.10. Введение подсетей в организации

 

Видно, что формирование подсетей решает проблему роста таблиц маршрутизации, так как конфигурация подсетей корпоративной сети никогда не видна за пределами организации. Маршруты из Интернета в любую подсеть данного IP -адреса одина­ковы, независимо от того, на какой подсети расположен получатель. Это стало возможным потому, что все подсети данного номера сети используют один и тот же сетевой префикс, но с разными номерами подсетей. Маршрутизаторам в частной сети требуется различать отдельные подсети, а у маршрутизаторов в Интерне­те все эти подсети определены единственной записью в таблицах маршрутизации. Это позволяет администратору частной сети вносить любые изменения в логиче­скую структуру сети без влияния на размер таблиц маршрутизации у маршру­тизаторов в Интернете.

Формирование подсетей также обеспечивает решение второй проблемы, свя­занной с выделением организации нового сетевого номера или номеров при ее росте. Организации можно выделить один номер сети, после чего администра­тор получает право произвольно присваивать номера подсетей каждой из своих внутренних сетей. Это позволяет внедрять дополнительные подсети без необхо­димости получения нового сетевого номера.

На рис.4.10 показан пример распределенной сети, состоящей из нескольких логических сетей, которые используют концепцию подсетей внутри одного ад­реса класса В. Граничный маршрутизатор получает весь трафик, адресованный сети 190.1.0.0 из Интернета, и передает его внутренним подсетям, основываясь на информации, содержащейся в третьем октете.

В стандартах, описывающих современные протоколы маршрутизации, часто делается ссылка на длину расширенного сетевого префикса, а не на маску под­сети. Данная длина эквивалентна количеству единичных битов в маске подсети. Это означает, что сетевой адрес 130.5.5.25 с маской подсети 255.255.255.0 может быть также записан как 130.5.5.25/24. Число 24 указывает на то, что в маске подсети 255.255.255.0 количество единичных битов равно 24. Такая запись яв­ляется более компактной и легкой для понимания, чем запись с оформлением маски подсети в традиционной точечно-десятичной нотации.

Следует отметить, что большинство современных протоколов маршрутиза­ции переносят маску подсети в своих сообщениях. В то же время не существует стандартного протокола маршрутизации, который имел бы дополнительное од­нобайтовое поле в заголовке своих сообщений, определяющее число битов в рас­ширенном сетевом префиксе. Протоколы маршрутизации передают полную четырехоктетную маску подсети.

Перед тем как разрабатывать сеть на базе протокола IP , сетевому админист­ратору необходимо ответить на следующие четыре важных вопроса.

- Сколько подсетей требуется организации сегодня?

- Сколько подсетей может потребоваться организации в будущем?

- Сколько хостов существует в наибольшей подсети организации сегодня?

- Сколько хостов необходимо будет поддерживать в наибольшей подсети организации в будущем?

Первым шагом в процессе планирования является определение максималь­ного количества требуемых подсетей. Данное значение округляется до ближай­шей степени числа 2. Когда выполняется эта оценка, важно учесть будущее уве­личение количества подсетей. На втором шаге проверяется факт существования достаточного количества адресов хостов в наибольшей подсети организации. И в заключение следует убедиться в том, что выделенный организации класс адреса предоставляет достаточное количество битов, необходимых для форми­рования подсетей.

Для определения того, какое количество подсетей и хостов позволяет получить оп­ределенная комбинация IP -адреса и маски подсети, необходимо вначале преобразо­вать этот адрес и применяемую по умолчанию маску подсети в двоичные числа, затем провести черту, называемую линией обозначения сети (или просто линией сети), после части адреса сети (обозначенной последней единицей в применяемой по умолчанию маске подсети). После этого нужно определить, какое количество битов требуется для получения необходимого количества подсетей. Затем необ­ходимо добавить это количество битов к маске подсети и про­вести вторую черту, называемую линией обозначения подсети (или просто линией под­сети). Все, что находится слева от этой линии (вплоть до линии сети), обозначает адрес подсети. А все, что находится справа от этой линии, обозначает адрес хоста.

Следует отметить, что при выборе маски подсети разрешается использовать только маску с подряд идущими (слева) единицами. Иными словами, маска подсети, равная 01010011 (83), применяться не может, а маска подсети 11110000 (248) является до­пустимой.

Итак, процесс определения маски должен выполняться в пять этапов.

- Преобразовать IP -адрес и маску, применяемую по умолчанию, в двоичные числа.

- Провести черту после последней единицы (бита 1) в маске подсети. Все, что находится слева от этой черты, представляет собой базовый адрес сети.

- Определить, какое количество битов требуется для получения необходимого количе­ства подсетей. Увеличить количество единиц в маске подсети на эту величину.

- Провести вторую черту после последней единицы в новой маске подсети. Все, что находится слева от этой черты до первой черты, представляет собой часть адреса с обозначением подсети, а все, что находится справа от нее, — это часть адреса с обозначением хоста.

- Убедиться в том, что количество оставшихся битов в маске позволяет адресо­вать достаточное количество хостов в каждой подсети.

После определения того, какая маска должна использоваться, на следующем этапе необходимо выяснить, какой перечень IP -адресов относится к каждой подсети. Этот этап является обязательным, поскольку необходимо знать, к какой подсети относится каждый конкретный IP -адрес. Если маска подсети является простой (такой как 255.255.255.0), то этот перечень определить несложно. Например, если имеется IP -адрес 172.16.1.1 с маской 255.255,255.0, то можно сразу же установить, что он от­носится к подсети с адресами от 172.16.1.1 до 172.16.1.254, не прибегая к двоичной арифметике. Кроме того, в этом случае можно легко определить, что хосты 172.16.200.1 и 172.16.50.1 находятся в разных подсетях. Но при использовании маски 255.255.224.0 уже не так легко узнать, что хосты 172.16.34.1 и 172.16.73.1 находятся в разных подсетях, а хосты 172.16.130.1 и 172.16.150.1 — в одной подсе­ти. В этом случае для определения начальных и конечных адресов подсетей необхо­димо выполнить некоторые вычисления с помощью двоичной арифметики. Теперь рассмотрим подробнее этот процесс.


Вначале необходимо взять IP -адрес и маску, преобразовать их в двоичные числа и провести две черты: линию сети (сразу после последней единицы в применяемой по умолчанию маске подсети, которая соответствует классу IP -адреса) и линию подсети (сразу после последней единицы в определяемой пользователем маске подсети). Все этапы подробно показаны на рисунке 4.11.

Рис. 4.11. Этапы расчета IP-адресов

Затем необходимо определить, все возможные двоичные комбинации, которые могут быть получены при разных значениях битов в части адреса, соответствующей подсети. Например, если в части подсети имеется четыре бита, то возможные ком­бинации являются следующими: 0000 (0), 0001 (1), 0010 (2), 0011 (3), 0100 (4), 0101 (5), 0110 (6), 0111 (7), 1000 (8), 1001 (9), 1010 (10), 1011 (11), 1100 (12), 1101 (13), 1110 (14) и 1111 (15). Это – наши 16 подсетей. Но подсети со всеми нулями и всеми единицами в номере являются недействительными, поэтому подсе­ти 0000 (0) и 1111 (15) должны быть исключены. Причина этого состоит в том, что подсеть со всеми нулями в номере обозначает базовый адрес сети, а подсеть со все­ми единицами в номере соответствует широковещательной рассылке по "всем под­сетям". В действительности исключение таких подсетей просто рекомендуется, а не является обязательным, но эта тема рассматривается дополнительно в настоящей главе в разделах об адресации VLSM и CIDR . После удаления этих двух подсетей остается 14 действительных подсетей:

 

Теперь, оставляя неизменными части адреса с обозна­чением сети и подсети, необходимо определить перечень адресов хостов, относя­щихся к этой подсети, от первого адреса до последнего. Эта задача является весьма несложной: первым адресом является базовый адрес подсети, а последним — тот же базовый адрес, в котором часть с обозначением хоста заполнена двоичными единицами. В данном случае октет, в котором часть с обозначением хоста заполне­на двоичными единицами (соответствующий последнему адресу), равен 00011111, или 31.

1. 10101100.00010000.00010000.00000000 (172.16.16.0) - наименьшее значение в диапазоне 1

10101100.00010000.0001 1111.11111111 (172.16.31.255) - наибольшее значение в диапазоне 1

2. 10101100.00010000.00100000.00000000 (172.16.32.0) - наименьшее значение в диапазоне 2

10101100.00010000.0010 0000.00000000 (172.16.47.255) - наибольшее значение в диапазоне 2

3. 10101100.00010000.00110000.00000000 (172.16.48.0) - наименьшее значение в диапазоне 3

10101100.00010000.0011 0000.00000000 (172.16.63.255) - наибольшее значение в диапазоне 3

И так далее.

Наконец, необходимо удалить первый и последний IP -адреса хостов, отно­сящиеся к рассматриваемой подсети. Следует помнить, что первый адрес обозначает "данную сеть", а последний является широковещательным адресом.

1. 10101100.00010000.0001 0000.00000000 (172.16.16.0) - наименьшее значение в диапазоне 1

10101100.00010000.0001 0000.00000001 (172.16.16.1) - наименьшее значение в диапазоне 1

10101100.00010000.0001 1111.11111111 (172.16.31.255) - наибольшее значение в диапазоне 1

10101100.00010000.0001 1111.11111110 (172.16.31.254) - наибольшее значение в диапазоне 1

2. 10101100.00010000.0010 0000.00000000 (172.16.32.0) - наименьшее значение в диапазоне 2

10101100.00010000.0010 0000.00000001 (172.16.32.1) - наименьшее значение в диапазоне 2

10101100.00010000.0010 1111.11111111 (172.16.47.255) - наибольшее значение в диапазоне 2

10101100.00010000.0010 1111.11111110 (172.16.47.254) - наибольшее значение в диапазоне 2

3. 10101100.00010000.0011 0000.00000000 (172.16.48.0) - наименьшее значение в диапазоне 3

10101100.00010000.0011 0000.00000001 (172.16.48.1) - наименьшее значение в диапазоне 3

10101100.00010000.0011 1111.11111111 (172.16.63.255) - наибольшее значение в диапазоне 3

10101100.00010000.0011 1111.11111110 (172.16.63.254) - наибольшее значение в диапазоне 3

И так далее.

Упрощенный метод

К сожалению, действительно простого метода выбора части маски с обозначением под­сети не существует. Но найти упрощенный метод определения допустимого диапазона ад­ресов очень легко. Он представляет собой четырехэтапный процесс, описанный ниже.

- Найти "интересующий" октет. Таковым является октет, в котором значение маски не равно 0 или 255. Поэтому в маске подсети 255.255.192.0 интере­сующим октетом является третий (192).

- Найти разницу между значениями интересующих октетов смежных диапазонов, N (называемую также просто значением диапазона), вычтя значение интересующего октета из 256. В данном примере разница между диапазонами составляет:

N = 256 - 192 = 64.

3. Определить первый и последний адреса для каждой подсети, вначале установив значение интересующего октета, равное нулю, затем последовательно увеличи­вая это значение на n. Например, если базовым адресом сети является 172.16.0.0 с маской 255.255.192.0, то разница между диапазонами (значение диапазона) равна 64 и интересующим октетом является третий. По­этому первая подсеть имеет диапазон адресов от 172.16.0.0 до 172.16.63.255, Вторая – от 172.16.64.0 до 172.16.127.255 и т.д.

4. Наконец, удалить первую и последнюю подсети, а также первый и последний IP -адреса для каждой подсети.

Существует рекомендация относительно порядка расположения битов при выделении подсетей. В документе RFC 1219 описано основное правило, которому желательно следовать при присвоении номеров подсетям и хостам. Номера под­сетей назначают таким образом, чтобы старшие биты в номере подсети устанавли­вались первыми. Например, если поле номера подсети состоит из четырех битов, то первые несколько номеров подсетей должны быть следующими: 8 (1000 2), 4 (0100 2), 12 (1100 2), 2 (0010 2), 6 (0110 2) и т. д. Иными словами, единичные биты номеров подсетей рекомендуется устанавливать, начиная с крайней левой позиции. В то время как единичные биты номеров хостов рекомендуется уста­навливать, начиная с крайней правой позиции.

Если следовать этому правилу, то на границе между номером подсети и но­мером хоста будут существовать нулевые биты. Это позволяет менять маску подсети без изменения IP -адреса, присвоенного хосту. Необходимость в измене­нии маски подсети может возникнуть при расширении числа хостов в каждой подсети, с учетом того, что планируемое число возможных подсетей обычно больше необходимого в настоящий момент. В таком случае существует возможность «заимствования» под номера подсетей некоторых битов из числа зарезервированных. Достоинством описанного правила является то, что администратору достаточно обновить маску подсети на каждом хосте и не нужно переконфигурировать IP-адреса хостов во всей организации. Изменение адресов потребует больших усилий от администратора, так как в данном случае может потребовать­ся перенастройка почтовых сервисов, статических таблиц маршрутизации и т. д.

На этом тема организации простых подсетей заканчивается. Теперь перейдем к более сложным темам: применение маски подсети переменной дли­ны ( Variable Length Subnet Masking — VLSM ) и бесклассовая междоменная маршрути­зация ( Classless InterDomain Routing — CIDR ).