- •6. Сети tcp/ip
- •6.1. Архитектура стека протоколов tcp/ip
- •6.2.1. Структура ip-пакета
- •6.2.2. Адресация в сетях ip
- •6.2.3. Разрешение ip-адресов в физические адреса сетевых устройств. Протокол arp
- •6.2.5. Icmp-протокол обмена управляющей информацией
- •6.2.5. Ip маршрутизация
- •6.2.6. Обработка ip-пакетов маршрутизатором
6.2.5. Ip маршрутизация
Каждый хост (станция, маршрутизатор) ведет свои маршрутные таблицы, которые и определяют передачу IP-пакетов с их входного на выходной интерфейсы. Передача пакетов между конечными станциями, требует взаимодействия IP-модулей программного обеспечения этих станций и IP-модулей маршрутизаторов, формирующих путь между сетями, в которых эти станции находятся. Рассмотрим, как обрабатывается пакет на этих сетевых устройствах.
Если станция назначения является непосредственно присоединенной к той же ЛВС, что и станция-отправитель, то из таблицы физических адресов (ARP-таблицы), отправителя, извлекается физический адрес узла назначения, пакет инкансулируется в кадр канального протокола и передается к станции назначения. В противном случае, пакет отправляется по адресу маршрутизатора, который был указан в таблице маршрутизации станции-отправителя в качестве следующего узла на маршруте в целевую сеть, или по адресу маршрутизатора, указанного при конфигурировании станции в качестве шлюза по умолчанию (default router, default gateway). Этот шлюз обязательно имеет физический интерфейс в той же ЛС, что и станция-отправитель.
При получении пакета маршрутизатор проверяет, не совпадает ли адрес назначения этого пакета с его собственным IP-адресом. Если это так, то пакет передается модулю протокола, указанного в поле «Протокол» заголовка пакета. В противном случае, маршрутизатор посредством своей таблицы определяет адрес следующего хоста, которому он должен передать этот пакет, и свой интерфейс, на который следует его направить.
Каждая строка в таблице маршрутизации содержит следующую информацию:
IP-адрес сети (узла) назначения,
IP-адрес следующего маршрутизатора, способного обеспечить передачу пакета в эту сеть (этому узлу),
«стоимость» маршрута в целевую сеть,
имя выходного интерфейса.
Также в таблице маршрутизации могут содержаться некоторые флаговые поля. Последние содержат уточняющую информацию о записи в таблице. Так, например, флаг H определяет, что данная строка - марщрут к хосту; флаг G уточняет, что строка определят маршрут к другому маршрутизатору.
Поиск в таблице маршрутизации ведется следующим образом. Прежде всего, сканируется ее первый столбец с целью нахождения записи, точно соответствующей адресу назначения пакета. Если такая запись обнаруживается, то пакет отправляется по адресу, указанному в столбце «Следующий маршрутизатор». Если такой записи не обнаружено, то ищется запись, соответствующая сети назначения. Заметим, что в таблице могут быть несколько таких записей, определяющих маршруты к сети назначения и к ее подсетям. Адреса всех таких записей совпадают, в пределах их сетевых префиксов, с адресом назначения пакета. В этом случае, предпочтение отдается записи, для которой длина маски наибольшая. Если адрес назначения не совпадает ни с одной из записей таблицы, то ищется строка, определяющая маршрут по умолчанию, т.е. маршрут к узлу с более полной информацией о возможных путях передачи этого пакета. В случае, когда ни один из перечисленных вариантов не реализуется, пакет уничтожается и узлу-отправителю отправляется ICMP-сообщение «Хост недостижим». В качестве примера, рассмотрим процедуру маршрутизации в сети, изображенной на рис. 6.12.
Эта сеть содержит три подсети: 149.100.1.0/25 149.100.1.128/26, 149.100.2.0/24, которые объединены двумя маршрутизаторами М1 и М2. При этом маршрутизатор М2 является и шлюзом в Интернет. Адреса интерфейсов маршрутизаторов показаны на рисунке. Предположим, что станция С6 имеет пакет с адресом назначения 149.100.1.159. Таблица маршрутизации узла С6 представлена в таблице 6.8.
Таблица 6.8.
-
Адрес назначения
Маска сети
Следующий узел
Флаг
Интерфейс
127.0.0.0
255.0.0.0
127.0.0.1
Н
lo0
Default
0.0.0.0
149.100.2.1
G
Eth0
149.100.2.0
255.255.255.0
149.100.2.21
Eth0
Первая строка таблицы определяет закольцовывающий интерфейс. Вторая строка описывает маршрут по умолчанию и флаг G уточняет, что узел 149.100.2.1 является маршрутизатором. Третья запись таблицы не имеет флага Н, следовательно, она определяет сеть; нет в ней и флага G и это говорит о том, что определяется маршрут к непосредственно подключенной сети и интерфейсом к ней является интерфейс станции С6, имеющий адрес149.100.2.21.
Прежде всего С6 производит поиск адреса станции С2, или сети, к которой С2 принадлежит в своей таблице. Поскольку ни тот, ни другой в ней не присутствуют, то пакет будет отправлен в соответствии с маршрутом по умолчанию на маршрутизатор М2 с адресом 149.100.2.1 через интерфейс Eth0. Таблица маршрутизации М2 может иметь следующий вид.
Таблица 6.9.
-
Адрес назначения
Маска
Следующий узел
Флаг
Интерфейс
127.0.0.0
255.0.0.0
127.0.0.1
Н
lo0
default
0.0.0.0
149.100.0.2
G
Serial 01
149.100.2.0
255.255.255.0
149.100.2.1
Eth0
149.100.1.0
255.255.255.128
149.100.1.2
Eth1
149.100.1.128
255.255.255.192
149.100.1.1
G
Eth1
Выполнив поиск в этой таблице маршрутизатор М2 найдет, что наиболее полно согласуется с адресом назначения маршрут, определенный в строке 5, и отправит пакет к маршрутизатору М1 через интерфейс Eth1. Таблица маршрутизации М1 представлена ниже.
Таблица 8.10.
-
Адрес назначения
Маска
Следующий узел
Флаг
Интерфейс
default
0.0.0.0
149.100.1.2
G
Eth1
149.100.2.0
255.255.255.0
149.100.1.2
G
Eth1
149.100.1.0
255.255.255.192
149.100.1.1
Eth1
149.100.1.159
255.255.255.255
149.100.1.159
Н
Eth0
149.100.1.128
255.255.255.192
149.100.1.129
Eth0
В ней представлен маршрут с адресом назначения точно соответствующим адресу назначения пакета. Поэтому последний передается на интерфейс Eth0 и доставляется станции С2 с IP-адресом 149.100.1.159.
Бесклассовая маршрутизация
Использование масок переменной длины дало возможность разделения адресного пространства сети на подсети переменного размера. Это улучшило использование выделенного адресного пространства, повысило гибкость сетевой инфраструктуры, но не решило (даже усугубило) проблему роста таблиц магистральных маршрутизаторов.
В 1993 году была предложена технология бесклассовой маршрутизации (Classless InterDomain Routing, CIDR). Она базируется на использовании масок переменной длины, но уже не для разбиения сетей на подсети, а для объединения их в бесклассовые блоки (суперсети). По сути, CIDR – это констатация необходимости выделять сети непрерывными блоками в соответствии с каким-то административным или географическим принципом, что даст возможность последующего «суммирования» записей к этим сетям в таблицах маршрутизаторов.
Рассмотрим пример. Документ RFC 1466 рекомендует, чтобы новые адреса класса С в Европе назначались из диапазона 194.0.0.0 - 195.255.255.255. В этот диапазон входят 131072 сетей класса С, и все их адреса имеют одинаковые 7 старших бит. В таблицах маршрутизаторов других (неевропейских) стран может быть единственная запись с IP адресом 194 и маской 254.0.0.0, определяющая маршрут ко всем этим сетям класса С через одну точку на магистрали Интернет. Дальнейшая последовательность битов в адресе (это биты, следующие за 194 или 195), в свою очередь, может быть распределена в иерархическом порядке, например, по странам или по поставщикам сервиса. Это позволит объединить маршруты к региональным сетям в таблицах европейских маршрутизаторов с использованием дополнительных, после седьмого, битов маски.
При выборе записи в таблице маршрутизации протоколы, поддерживающие технологию CIDR, используют принцип "лучшее совпадение - это наиболее длинное совпадение (longest match)". Это означает, что из нескольких записей, удовлетворяющих условию совпадения битов сетевого префикса, выбирается та, у которой он более длинный. Предположим, что один из Европейских провайдеров (пусть провайдер Z) использует другой маршрутизатор для связи с магистралью Internet, чем все остальные европейские провайдеры. Ему принадлежат 16 сетей класса С, адреса которых образуют непрерывный блок 194.0.16.0 - 194.0.31.255. Записи в таблицах магистральных маршрутизаторов для этой группы сетей имеют вид: 194.0.16.0/20 (маска 255.255.240.0). Адрес назначения 194.0.22.1 конкретного пакета в пределах первых 20 бит совпадает с адресом блока сетей провайдера Z и, в пределах первых 7 бит с адресом блока сетей, определенного записью (194.0.0.0, 254.0.0.0), представляющей маршрут ко всем сетям Европы (в том числе и к сетям провайдера Z). Однако, так как маска 255.255.240 "длиннее" чем маска 254.0.0.0, будет использована запись таблицы маршрутизации, которая указывает на этот индивидуальный маршрут к блоку сетей провайдера Z.
