Использование масок переменной длины

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

На рис. 1 приведен другой пример распределения того же адресного пространства 129.44.0.0/16, что и в предыдущем примере. Здесь половина из имеющихся адресов (215) отведена для создания сети 1 имеющей адрес 129.44.0.0 и маску 255.255.128.0.

Рис. 1. Разделение адресного пространства 129.44.0.0 сети класса В на сети разного размера путем использования масок переменной длины

Следующая порция адресов, составляющая четверть всего адресного пространства (214), назначена для сети 2 129.44.128.0 с маской 255.255.192.0.

Далее в пространстве адресов был «вырезан» небольшой фрагмент для создания вспомогательной сети 3, предназначенной для связывания внутреннего маршрутизатора R2 с внешним маршрутизатором R1. Для нумерации узлов в такой вырожденной сети достаточно отвести два двоичных разряда. Из четырех возможных комбинаций номеров узлов: 00,01,10 и 11 два номера имеют специальное назначение и не могут быть присвоены узлам, но оставшиеся два 10 и 01 позволяют адресовать порты маршрутизаторов. Поле номера узла в таком случае имеет два двоичных разряда, маска в десятичной нотации имеет вид 255.255.255.252, а номер сети, как видно из рисунка, равен 129.44.192.0.

ПРИМЕЧАНИЕ
Глобальным связям между маршрутизаторами, соединенными по двухточечной схеме, не обязательно давать IP-адреса. Однако чаще всего такой вырожденной сети все же дают IP-адрес. Помимо прочего, это делается, например, для того, чтобы скрыть внутреннюю структуру сети и обращаться к ней по одному адресу входного порта маршрутизатора, в данном примере по адресу 129.44.192.1, применяя технику трансляции сетевых адресов (Network Address Translation, NAT1).

Оставшееся адресное пространство администратор может «нарезать» на разное количество сетей разного объема в зависимости от своих потребностей. Из оставшегося пула (214 - 4) адресов администратор, например, может образовать еще одну достаточно большую сеть с числом узлов 213 — на рисунке это сеть 4. При этом свободными останутся почти столько же адресов (213 - 4), которые также могут быть использованы для создания новых сетей. К примеру, из этого «остатка» можно образовать 31 сеть, каждая из которых равна размеру сети класса С, и к тому же еще несколько сетей меньшего размера. Ясно, что разбиение может быть другим, но в любом случае с помощью масок переменного размера администратор имеет больше возможностей рационально использовать все имеющиеся у него адреса.

На рис. 2 показан пример сети, структурированной с помощью масок переменной длины.

Рис. 2. Структуризация сети масками переменной длины

Давайте посмотрим, как маршрутизатор R2 обрабатывает поступающие на его интерфейсы пакеты (табл. 1).

Таблица 1. Таблица маршрутизатора R2 в сети с масками переменной длины

Адрес назначения         Маска          Адрес следующего маршрутизатора Адрес порта  Расстояние
129.44.0.0 255.255.128.0 129.44.128.3 129.44.128.1 1
129.44.128.0 255.255.192.0 129.44.128.1 129.44.128.1 Подключена
129.44.192.0 255.255.255.252 129.44.192.1 129.44.192.1 Подключена
129.44.224.0 255.255.224.0 129.44.128.2 129.44.128.1 1
0.0.0.0 0.0.0.0 129.44.192.2 129.44.192.1 -

Пусть поступивший на R2 пакет имеет адрес назначения 129.44.162.5. Поскольку специфические маршруты в таблице отсутствуют, маршрутизатор переходит ко второй фазе — фазе последовательного анализа строк на предмет поиска совпадения с адресом назначения:

  • (129.44.162.5) AND (255.255.128.0) = 129.44.128.0 - нет совпадения;
  • (129.44.162.5) AND (255.255.192.0) = 129.44.128.0 - совпадение;
  • (129.44.162.5) AND (255.255.255.252) = 129.44.162.4 - нет совпадения;
  • (129.44.162.5) AND (255.255.224.0) - 129.44.160.0 - нет совпадения.

Таким образом, совпадение имеет место в одной строке. Пакет будет отправлен в непосредственно подключенную к данному маршрутизатору сеть на выходной интерфейс 129.44.128.1.

Если пакет с адресом 129.44.192.1 поступает из внешней сети и маршрутизатор R1 не использует маски, пакет передается маршрутизатору R2, а потом снова возвращается в соединительную сеть. Очевидно, что такие передачи пакета не выглядят рациональными.

Маршрутизация будет более эффективной, если в таблице маршрутизации маршрутизатора R1 задать маршруты масками переменной длины (табл. 2). Первая из приведенных двух записей говорит о том, что все пакеты, адреса которых начинаются с 129.44, должны быть переданы на маршрутизатор R2. Эта запись выполняет агрегирование адресов всех подсетей, созданных на базе одной сети 129.44.0.0. Вторая строка говорит о том, что среди всех возможных подсетей сети 129.44.0.0 есть одна (129.44.192.0/30), которой пакеты можно направлять непосредственно, а не через маршрутизатор R2.

ПРИМЕЧАНИЕ
В IP-пакетах при использовании механизма масок по-прежнему передается только IP-адрес назначения, а маска сети назначения не передается. Поэтому из IP-адреса пришедшего пакета невозможно выяснить, какая часть адреса относится к номеру сети, а какая — к номеру узла. Если маски во всех подсетях имеют один размер, то это не создает проблем. Если же для образования подсетей применяют маски переменной длины, то маршрутизатор должен как-то узнавать, каким адресам сетей какие маски соответствуют. Для этого используются протоколы маршрутизации, переносящие между маршрутизаторами не только служебную информацию об адресах сетей, но и о масках, соответствующих этим номерам. К таким протоколам относятся протоколы RIPv2 и OSPF, а вот, например, протокол RIP маски не переносит й для маршрутизации на основе масок переменной длины не подходит.

Таблица 2 Фрагмент таблицы маршрутизатора R1

Адрес назначения  Маска  Адрес следующего маршрутизатора   Адрес порта Расстояние
129.44.0.0 255.255.0.0      129.44.192.1 129.44.191.2 2
129.44.192.0  255.255.255.192 129.44.192.2 129.44.191.2 Подключена