Маршрутизация. Таблицы маршрутизации
Процесс маршрутизации дейтаграмм состоит в определении следующего узла (next hop) в пути следования дейтаграммы (пакет данных) и пересылки дейтаграммы этому узлу, который является либо узлом назначения, либо промежуточным маршрутизатором, задача которого — определить следующий узел и переслать ему дейтаграмму. Ни узел-отправитель, ни любой промежуточный маршрутизатор не имеют информации о всей цепочке, по которой пересылается дейтаграмма; каждый маршрутизатор, а также узел-отправитель, основываясь на адресе назначения дейтаграммы, находит только следующий узел ее маршрута.
Маршрутизация дейтаграмм осуществляется на уровне протокола IP.
Маршрутизация выполняется на основе данных, содержащихся в таблице маршрутов. Таблица состоит из некоторого числа записей — маршрутов, в каждой из которых содержится адрес сети получателя, адрес следующего узла, которому следует передавать пакеты и некоторый вес записи — метрика. Метрики записей в таблице играют роль в вычислении кратчайших маршрутов к различным получателям. В зависимости от модели маршрутизатора и используемых протоколов маршрутизации, в таблице может содержаться некоторая дополнительная служебная информация. Например:
192.168.64.0/16 [110/49] via 192.168.1.2, 00:34:34, FastEthernet0/0.1
где 192.168.64.0/16 — сеть назначения,
110/- административное расстояние
192.168.1.2 — адрес следующего маршрутизатора, которому следует
передавать пакеты для сети 192.168.64.0/16,
00:34:34 — время, в течение которого был известен этот маршрут,
FastEthernet0/0.1 — интерфейс маршрутизатора, через который
можно достичь «соседа» 192.168.1.2.
Таблица маршрутизации может составляться двумя способами:
- статическая маршрутизация — когда записи в таблице вводятся и изменяются вручную. Такой способ требует вмешательства администратора каждый раз, когда происходят изменения в топологии сети. С другой стороны, он является наиболее стабильным и требующим минимума аппаратных ресурсов маршрутизатора для обслуживания таблицы.
- динамическая маршрутизация — когда записи в таблице обновляются автоматически при помощи одного или нескольких протоколов маршрутизации — RIP, OSPF, IGRP, EIGRP, IS-IS, BGP, и др. Кроме того, маршрутизатор строит таблицу оптимальных путей к сетям назначения на основе различных критериев — количества промежуточных узлов, пропускной способности каналов, задержки передачи данных и т. п. Критерии вычисления оптимальных маршрутов чаще всего зависят от протокола маршрутизации, а также задаются конфигурацией маршрутизатора. Такой способ построения таблицы позволяет автоматически держать таблицу маршрутизации в актуальном состоянии и вычислять оптимальные маршруты на основе текущей топологии сети. Однако динамическая маршрутизация оказывает дополнительную нагрузку на устройства, а высокая нестабильность сети может приводить к ситуациям, когда маршрутизаторы не успевают синхронизировать свои таблицы, что приводит к противоречивым сведениям о топологии сети в различных её частях и потере передаваемых данных.
Зачастую для построения таблиц маршрутизации используют теорию графов.
Таблица маршрутизации обычно содержит:
- адрес сети или узла назначения, либо указание, что маршрут является маршрутом по умолчанию
- маску сети назначения (для IPv4-сетей маска /32 (255.255.255.255) позволяет указать единичный узел сети)
- шлюз, обозначающий адрес маршрутизатора в сети, на который необходимо отправить пакет, следующий до указанного адреса назначения
- интерфейс (в зависимости от системы это может быть порядковый номер, GUID или символьное имя устройства)
- метрику — числовой показатель, задающий предпочтительность маршрута. Чем меньше число, тем более предпочтителен маршрут (интуитивно представляется как расстояние).
В таблице может быть один, а в некоторых операционных системах и несколько шлюзов по умолчанию. Такой шлюз используется для сетей, для которых нет более конкретных маршрутов в таблице маршрутизации.
Структура таблицы маршрутизации
Таблица маршрутизации состоит из следующих основных полей:
- Destination(Адрес назначения) – содержит адрес сети или хоста назначения.
- Gateway(Шлюз) – содержит адрес шлюза (маршрутизатора), через который будут отправляться пакеты по адресу, указанному в полеDestination.
- Mask (МаскаIP-адреса) – содержит маску для определения того, что обозначает IP-адрес поля назначения – хост или сеть определенной размерности.
- Flags (Флаги) – содержит информацию о состоянии указанной записи маршрутизации.U(Up) – показывает, что маршрут активен;H(Host) – указывает, что адресом назначения является адрес хоста;G(Gateway) – указывает, что маршрут пакета проходит через промежуточный маршрутизатор;S(Static) – указывает, что запись была введена вручную (статически).D(Dynamic) – указывает, что запись была создана динамически протоколом маршрутизации;M(Modified) – указывает, что запись была изменена динамически протоколом маршрутизации;Rили ! (Reject) – указывает, что адрес назначения не доступен.
- Metric(Метрика) – расстояние до указаной сети (хоста)
- Refcnt(Счетчик ссылок) – сколько раз на данный маршрут ссылались при движении пакетов.
- Use– количество пакетов, переданных по данному маршруту.
- Interface– имя интерфейса вUnix-маршрутизаторах
Источники записей в таблице маршрутизации.
- Первым источником является ПО стека TCP/IP. При инициализации маршрутизатора это ПО автоматически заносит в таблицу несколько записей о локальных сетях и маршрутизаторе по умолчанию, о внутренних специальных адресах. Создается так называемая мининимальная таблица маршрутизации.
- Вторым источником записей является администратор системы, непосредственно формирующий запись с помощью системной утилиты (например, route). Эти записи могут быть как постоянными, так и временными, т.е. хранящимися до перезагрузки системы.
- Третьим источником являются протоколы маршрутизации (RIP, OSPF). Такие записи всегда являются динамическими и имеют ограниченный срок жизни.
Маршрутизация с использованием масок
Допустим, администратор получил в свое распоряжение адрес класса В: 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).