
СПО / Semestr 2 / Lectures 2semestr / Lecture 2_01 / Использование масок переменной длины
.docМаршрутизация с использованием масок
Допустим, администратор получил в свое распоряжение адрес класса В: 129.44.0.0. Он может организовать сеть с большим числом узлов, номера которых он может брать из диапазона 0.0.0.1-0.0.255.254. Требуется, чтобы сеть была разделена на три отдельных подсети, при этом трафик в каждой подсети должен быть локализован. Это позволит легче диагностировать сеть и проводить в каждой из подсетей свою политику безопасности.
В качестве маски было выбрано значение 255.255.192.0. После наложения маски на этот адрес число разрядов, интерпретируемых как номер сети, увеличилось с 16 (стандартная маска сети класса В) до 18. Это позволяет сделать из одного, централизованно заданного ему номера сети, четыре: 129.44.0.0; 129.44.64.0; 129.44.128.0; 129.44.192.0.
Замечание. Некоторые программные и аппаратные маршрутизаторы не поддерживают номера подсетей, которые состаят либо только из одних нулей, либо только из одних единиц. Например, для некоторых типов оборудования номер сети 129.44.0.0 с маской 255.255.192.0, использованный в нашем примере, окажется недопустимым, поскольку в этом случае разряды в поле номера подсети имеют значение 00.
Рассмотрим, как изменяется работа модуля IP, когда становится необходимым учитывать наличие масок. Во-первых, в каждой записи таблицы маршрутизации появляется новое поле — поле маски. Во-вторых, меняется алгоритм определения маршрута по таблице маршрутизации. После того как IP-адрес извлекается из очередного полученного IP-пакета, необходимо определить адрес следующего маршрутизатора, на который надо передать пакет с этим адресом. Модуль IP последовательно просматривает все записи таблицы маршрутизации. С каждой записью производятся следующие действия.
-
Маска, содержащаяся в данной записи, накладывается на IP-адрес узла назначения, извлеченный из пакета.
-
Полученное в результате число является номером сети назначения обрабатываемого пакета. Оно сравнивается с номером сети, который помещен в данной записи таблицы маршрутизации.
-
Если номера сетей совпадают, то пакет передается маршрутизатору, адрес которого помещен в соответствующем поле данной записи.
Таблица 5.12. Таблица маршрутизатора М2 в сети с масками одинаковой длины
Номер сети
|
Маска
|
Адрес следующего маршрутизатора
|
Адрес порта
|
Расстояние
|
129.44.0.0 |
255.255.192.0 |
129.44.0.1 |
129.44.0.1 |
Подключена |
129.44.64.0 |
255.255.192.0 |
129.44.64.7 |
129.44.64.7 |
Подключена |
129.44.128.0 |
255.255.192.0 |
129.44.128.5 |
129.44.128.5 |
Подключена |
129.44.192.0 |
255.255.192.0 |
129.44.192.1 |
129.44.192.1 |
Подключена |
0.0.0.0 |
0.0.0.0 |
129.44.192.2 |
129.44.192.1 |
— |
Пусть, например, с маршрутизатора Ml на порт 129.44.192.1 маршрутизатора М2 поступает пакет с адресом назначения 129.44.78.200. Модуль IP начинает последовательно просматривать все строки таблицы, до тех пор пока не найдет совпадения номера сети в адресе назначения и в строке таблицы. Маска из первой строки 255.255.192.0 накладывается на адрес 129.44.78.200, в результате чего тип чается номер сети 129.44.64.0. Полученный номер 129.44.64.0 совпадает с номером сети во второй строке таблицы, а значит, пакет должен быть отправлен на порт маршрутизатора 129.44.64.7 в сеть непосредственно подключенную к данному маршрутизатору.
Упр. Как маршрутизируется пакет с IP-адресом 129.44.141.15 (10000001 00101100 10001101 00001111).
Использование масок переменной длины
В предыдущем примере использования масок все подсети имеют одинаковую длину поля номера сети - 18 двоичных разрядов, и, следовательно, для нумерации узлов в каждой из них отводится по 14 разрядов. Все сети являются очень большими и имеют одинаковый размер. Однако более эффективным явиляется разбиение сети на подсети разного размера. Например, большое число узлов, подходящее для пользовательской подсети, является избыточным для подсети, которая связывает два маршрутизатора по схеме «точка-точка». В предыдущем примере для этой вспомогательной сети был использован номер, позволяющий адресовать 214 узлов.
Предлагается свести избыточность к минимуму следующим образом. Половина из имеющихся адресов (215) была отведена для создания сети с адресом 129.44.0.0 и маской 255.255.128.0. Следующая порция адресов, составляющая четверть всего адресного пространства (214), была назначена для сети 129.44.64.0 с маской 255.255.192.0. Далее в пространстве адресов был «вырезан» небольшой фрагмент для создания сети, предназначенной для связывания внутреннего маршрутизатора М2 с внешним маршрутизатором Ml.
В IP-адресе такой вырожденной сети для поля номера узла как минимум должны быть отведены два двоичных разряда. Из четырех возможных комбинаций номеров узлов: 00, 01, 10 и 11 два номера имеют специальное назначение и не могут быть присвоены узлам, но оставшиеся два 10 и 01 позволяет адресовать порты маршрутизаторов. В нашем примере сеть выбрана на 8 узлов. Поле номера узла имеет 3 двоичных разряда, маска имеет вид 255.255.255.248, а номер сети равен 129.44.128.0. Если эта сеть является локальной, то на ней могут быть расположены еще четыре узла помимо двух портов маршуртизаторов.
Замечание. Глобальным связям между маршрутизаторами типа «точка-точка» не обязательно давать IP-адреса. Однако так делается для того, чтобы скрыть внутреннюю структуру сети и обращаться к ней по одному адресу входного порта маршрутизатора, в данном примере по адресу 129.44.128.1.
Таблица маршрутизации М2 содержит записи о четырех непосредственно подключенных сетях и запись о маршрутизаторе по умолчанию. Процедура поиска маршрута при использовании масок переменной длины ничем не отличается от подобной процедуры, описанной ранее для масок одинаковой длины.
Таблица маршрутизации М2
Номер сети |
Маска |
Адрес следующего маршрутизатора |
Адрес порта |
Расстояние |
129.44.0.0 |
255.255.128.0 |
129.44.0.1 |
129.44.0.1 |
Подключена |
129.44.128.0 |
255.255.192.0 |
129.44.128.3 |
129.44.128.3 |
Подключена |
129.44.192.0 |
255.255.255.248 |
129.44.192.1 |
129.44.192.1 |
Подключена |
129.44.224.0 |
255.255.224.0 |
129.44.224.5 |
129.44.224.5 |
Подключена |
0.0.0.0 |
0.0.0.0 |
129.44.192.2 |
129.44.192.1 |
|
Таблица маршрутизации М1
Номер сети |
Маска |
Адрес следующего маршрутизатора |
Адрес порта |
Расстояние |
… |
… |
… |
… |
… |
129.44.0.0 129.44.192.0 … |
255.255.0.0 255.255.255.248 … |
129.44.192.1 129.44.192.2 … |
129.44.192.2 129.44.192.2 … |
2 Подключена … |
Рассмотрим пример. Пусть пакет, поступивший из внешней сети на маршрутизатор Ml, имеет адрес назначения 129.44.192.5. Ниже приведен фрагмент таблицы маршрутизации маршрутизатора Ml. Первая из приведенных двух записей говорит о том, что все пакеты, адреса которых начинаются на 129.44, должны быть переданы на маршрутизатор М2. Эта запись выполняет агрегирование адресов всех подсетей, созданных на базе одной сети 129.44.0.0. Вторая строка говорит о том, что среди всех возможных подсетей сети 129.44.0.0 есть одна, 129.44.192.0, для которой пакеты можно направлять непосредственно, а не через маршрутизатор М2.
Если следовать стандартному алгоритму поиска маршрута по таблице, то сначала на адрес назначения 129.44.192.5 накладывается маска из первой строки 255.255.0.0 и получается результат 129.44.0.0, который совпадает с номером сети в этой строке. Но и при наложении на адрес 129.44.192.5 маски из второй строки 255.255.255.248 полученный результат 129.44.192.0 также совпадает с номером сети во второй строке. В таких случаях должно быть применено следующее правило: «Если адрес принадлежит нескольким подсетям в базе данных маршрутов, то продвигающий пакет маршрутизатор использует наиболее специфический маршрут, то есть выбирается адрес подсети, дающий большее совпадение разрядов».
В данном примере будет выбран второй маршрут, то есть пакет будет передан в непосредственно подключенную сеть, а не пойдет кружным путем через маршрутизатор М2. Механизм выбора самого специфического маршрута является обобщением понятия «маршрут по умолчанию». Поскольку в традиционной записи для маршрута по умолчанию 0.0.0.0 маска 0.0.0.0 имеет нулевую длину, то этот маршрут считается самым неспецифическим и используется только при отсутствии совпадений со всеми остальными записями из таблицы маршрутизации.
Замечание. В IP-пакетах при использовании механизма масок по-прежнему передается только IP-адрес назначения, а маска сети назначения не передается. Поэтому из IP-адреса пришедшего пакета невозможно выяснить, какая часть адреса относится к номеру сети, а какая – к номеру узла. Если маски во всех подсетях имеют один размер, то это не создает проблем. Если же для образования подсетей применяют маски переменной длины, то маршрутизатор должен каким-то образом узнавать, каким адресам сетей какие маски соответствуют. Для этого используются протоколы маршрутизации, переносящие между маршрутизаторами не только служебную информацию об адресах сетей, но и о масках, соответствующих этим номерам. К таким протоколам относятся протоколы RIPv2 и OSPF. Протокол RIPv1 маски не распространяет и для использования масок переменной длины не подходит.