- •5. Сетевые службы и межсетевое взаимодействие
- •5.1. Задачи сетевого протокола
- •5.2. Задача маршрутизации
- •5.2.1. Таблицы маршрутизации
- •5.2.2. Классификация методов маршрутизации
- •5.3. Алгоритмы нахождения кратчайшего пути
- •5.3.1. Алгоритм Беллмана-Форда
- •5.3.2. Использование алгоритма Белмана-Форда в протоколах маршрутизации
- •5.3.3. Алгоритм Дейкстры
- •5.3.4. Применение алгоритма Дейкстры в протоколах маршрутизации
5.2. Задача маршрутизации
О
бъединенную
сеть можно представить набором локальных
сетей, коммутирующих устройств
(маршрутизаторов) и линий передачи,
связывающих эти устройства. Каждый
маршрутизатор имеет, как минимум, два
интерфейса, по одному в каждой из
связываемых локальных сетей. Обычно, в
объединенной сети существуют множество
путей между любой парой парциальных
сетей. Так, в примере, приведенном на
рис. 5.2., между сетями 1 и 4 можно
указать, в частности, следующие маршруты:
М1-М3-М6, М1- М4-
М5- М6, М1- М2- М5-
М6.
Рис. 5.2 Пример многосвязной объединенной
сети
Множественность маршрутов, повышая отказоустойчивость сетевой среды, ставит вопрос о выборе «наилучшего» из них. Оптимальность маршрута определяется в смысле минимума «расстояния» между конечными сетями (узлами). Такое определение выдвигает на первый план проблему метрики, используемой для вычисления расстояния. Если оно измеряется количеством переходов, необходимых для прохождения пути от узла А к узлу B, то оптимальным в данном примере будет маршрут М1-М3-М6. В условиях же когда необходимо обеспечить минимальное время передачи пакета (для этого потребуется информация о задержке передачи пакета на каждом из интерфейсов маршрутизаторов), наилучшим может оказаться другой маршрут, например М1-М2-М5-М6. Возможна постановка задачи выбора маршрута и по критерию максимизации пропускной способности соединения в условиях различных пропускных способностей каналов, формирующих путь между конечными узлами сети. Таким образом, алгоритмы маршрутизации должны решать свою задачу в смысле достижения минимума целевой функции, выбранной при проектировании маршрута. При этом, они должны:
вычислять наилучший маршрут за приемлемое время (сходимость);
обладать достаточной адаптивностью к изменениям топологии сети и к состоянию ее каналов связи;
иметь невысокие накладные расходы, т.е. генерировать служебный трафик, объем которого мал относительно объема данных, содержащихся в маршрутизируемых пакетах.
Всякий алгоритм маршрутизации реализуется специальным протоколом, результатом работы которого является таблица маршрутов от узла, на котором он выполняется, ко всем парциальным сетям объединенной сети.
5.2.1. Таблицы маршрутизации
Результат вычисления маршрута сохраняется в специальной таблице. Конкретное содержание информации о маршруте, содержащееся в ней, определяется типом сетевого сервиса. При реализации сервиса виртуальных каналов в таблице маршрутизации указывается входной и выходной идентификаторы виртуального канала (virtual circuit identifier, VCI), а также - номера портов (входного и выходного), которые на данном устройстве поддерживают существование этого виртуального канала. В дейтаграммных сетях каждая запись в таблице маршрутизации определяет логический адрес сети (или узла) назначения, адрес следующего узла на маршруте, «длину» маршрута и идентификатор выходного порта, через который пакет отправляется в сеть назначения.
Таблица 5.3.а соответствует сети рис. 5.2., в которой поддерживается сервис виртуального канала; она отражает существование трех соединений: «А-М1-М3-М6-B», «А-М1-М3-М4-М5-D» и «C-М2-М4-М3-М6-B». При их построении предполагалось, что линии работают в дуплексном режиме и идентификаторы соединений одинаковы при передаче пакетов в обоих направлениях.
Каждый сквозной виртуальный канал формируется совокупностью виртуальных каналов между парами маршрутизаторов. При этом, значения идентификаторов VCI являются локальными, т.е. идентификатор канала может изменяться в каждом узле коммутации. В рассматриваемом примере для первого виртуального канала идентификатор VCI=1 первым маршрутизатором преобразуется в VCI=2, который, в свою очередь, маршрутизатором 3 будет заменен на VCI=7 и маршрутизатором 6 – на VCI=8. Использование локальной нумерации виртуальных каналов дает два преимущества. Прежде всего, это позволяет поддерживать в сети большее число виртуальных каналов при неизменной (обычно – 2 байта) длине поля, отводимого для записи идентификатора VCI. Во-вторых, при локальной нумерации поиск в таблице маршрутизации существенно проще, ибо в ней будут представлены идентификаторы только тех каналов, которые действительно поддерживаются этим узлом в текущий момент времени. В случае же глобальной нумерации виртуальных каналов при назначении идентификатора канала на каждом узле необходимо было бы прежде убедиться в том, что данный идентификатор не используется нигде на других устройствах – весьма трудоемкая задача для больших сетей.
Наличие зафиксированного в таблицах маршрутизации виртуального канала позволяет одинаково решать задачу продвижения пакетов потока. Так, например, любой пакет, имеющий VCI=6 и прибывший от хоста С в узел 2, передается на выходной порт, связанный с узлом 4, а значение идентификатора виртуального канала, которому далее будет принадлежать этот пакет, становится равным 3. В узле 4 этот пакет будет передан на порт, связывающий узлы 4-5, и получит VCI=5. Наконец, в узле 5 этот пакет будет передан на порт, к которому подключена сеть 6 (узел D), и в нее он попадет со значением идентификатора VCI=2. Заметим, что объем информации, на основе которой принимается решение о передаче пакета, т.е. размер поля VCI, заметно меньше размера поля сетевого адреса, что сокращает накладные расходы протокола и ускоряет операцию поиска требуемой записи в таблице.
В дейтаграммной сети полный маршрут между парами сетей не фиксируется. Таблица маршрутизации узла коммутации в каждой своей строке содержит пару значений «Сеть назначения - Следующий узел», которые получены в результате работы специального алгоритма маршрутизации, или на основе предпочтений администратора.
Если в качестве целевой функции принять число переходов до сети назначения, то таблицы маршрутизации в узлах сети рис. 5.2 будут иметь вид, приведенный на рис. 5.3.б (номера портов маршрутизаторов и значения маршрутных метрик в этих таблицах опущены). Пусть пакет, адресованный в сеть 6 (узел D), которая непосредственно присоединена к узлу 5, прибывает на узел 1. В соответствии с его таблицей маршрутизации, этот пакет будет далее направлен узлу 2, далее – к узлу 5 и в сеть, которой принадлежит узел D.
Таблица каждого узла должна содержать записи маршрутов ко всем локальным сетям объединенной сети, которых может быть много и, следовательно, поиск требуемой записи может занимать относительно много времени. Поля адресов, которые содержит каждая запись, имеют размер не менее 4 байт, что также заметно больше размера поля VCI. Эти два обстоятельства увеличивают трудоемкость маршрутизации в дейтаграммных сетях.
