Алгоритмы маршрутизации
Алгоритмы маршрутизации применяются для определения наилучшего пути пакетов от источника к приёмнику и являются основой любого протокола маршрутизации. Для формулирования алгоритмов маршрутизации сеть рассматривается как граф. При этом маршрутизаторы являются узлами, а физические линии между маршрутизаторами — рёбрами соответствующего графа. Каждой грани графа присваивается определённое число — стоимость, зависящая от физической длины линии, скорости передачи данных по линии или стоимости линии. КлассификацияАлгоритмы маршрутизации можно разделить на:
Требования
Типы алгоритмовАдаптивные алгоритмыОписаниепринимают во внимание состояние линии Плюсы и минусы+уменьшение среднего времени нахождения пакета в сети +возможность динамической адаптации к состоянию сети ЦентрализированныеОписаниеадаптивный централизированный алгоритм Плюсы и минусы+RCC(Routing Control Center) обладает всей информацией о состоянии сети, что позволяет принимать оптимальные решения ИзолированныеОписаниеУзел извлекает информацию из полученных пакетов. Плюсы и минусы+нет перегрузок РаспределённыеОписаниедистанционно-векторный алгоритм, link state routing Плюсы и минусы+лучшая адаптация Неадаптивные алгоритмыОписаниене принимают во внимание текущее состояние сети, все маршруты рассчитываются до начала использования сети. Они в свою очередь подразделяются на алгоритмы, учитывающие топологию сети (spanning tree, flow based routing) и не учитывающие (flooding). Плюсы и минусы+простота Примеры
Адаптивные алгоритмыЦентрализированный(англ. adaptive centralized routing) ОписаниеВ сети существует так называемый центр маршрутизации (Routing Control Center, RCC), который получает информацию от всех узлов об их соседних узлах, длине очереди и загрузке линии. В функции RCC входит сбор информации, подсчет оптимальных маршрутов для каждого узла, составление таблиц маршрутизации и рассылка их узлам. Плюсы и минусы+RCC обладает всей информацией и может создавать «идеальные» маршруты ИзолированныйBackward learningОписаниеКаждый узел берет только нужную информацию из полученных пакетов. Таким образом, каждый узел знает отправителя пакетов и количество хопов, которые этот пакет прошёл. Затем происходит сравнение с данными в таблице маршрутизации, и если у полученного пакета меньшее количество хопов, то происходит обновление таблицы. Плюсы и минусы+легкость реализации РаспределённыйДистанционно-векторный алгоритм(англ. distance vector routing) ОписаниеТакже известен как Distributed Bellman-Ford Routing или Ford Fulkerson Algorithm. Данный алгоритм является распределённым, итерационным и асинхронным. Его можно представить как: «расскажи своим соседям, как выглядит мир». Каждый узел ведёт таблицу маршрутизации с одной записью для каждого маршрутизатора подсети. Таблица представляет собой вектор, содержащий 2 компонента: выбранную линию и дистанцию. Узел оценивает дистанцию (количество хопов, задержку или длину очереди) до каждого соседа и рассылает её своим соседям, которые в свою очередь выполняют то же самое. В результате полученной информации каждый узел заново подсчитывает таблицу маршрутизации. Применяется в протоколе маршрутизации RIP. Впервые был применен в ARPANET. АлгоритмПредположим, что таблица только что была получена от соседа X, причём Xi является предположением X о том, сколько длится путь до маршрутизатора i. Если маршрутизатор знает, что передача данных до X длится m, то он знает так же, что он может достичь любой маршрутизатор і через X за Xi+m. Плюсы и минусы+самоорганизация ПримерПри использовании алгоритма возникают проблемы при отключении одного из узлов от сети — проблема «Count to Infinity» (счет до бесконечности). Предотвращение: Split Horizont Algorithm — «не говори мне то, что я сказал тебе» Маршрутизация по состоянию каналаангл. Link state routing ОписаниеАлгоритм, относящийся к адаптивным алгоритмам и основанный на анализе состояния связей. Его можно представить как: «расскажи миру о том, кто твои соседи». Сначала узел знает только своих соседей и метрику связей, соединяющих его с ними. В процессе обмена информацией с соседними узлами узел получает информацию о топологии сети, при этом обменивается только информацией о происшедших изменениях. В результате каждый узел знает всю топологию сети. Впервые был применен в ARPANET в 1979 году и пришёл на смену дистанционно-векторному алгоритму. Причинами перехода служили:
Алгоритм
Широковещательная маршрутизация(англ. broadcast routing) Терминологияunicast — 1:1 Простые методы
Multidestination RoutingКаждый пакет содержит список всех целей. Каждый узел создает для каждого исходящего соединения копию пакета, которая содержит только адреса тех узлов, которые достижимы через это соединение. Многоадресная рассылкаангл. multicast routing Алгоритм связующего дереваангл. spanning tree ОписаниеСвязующее дерево (Spanning tree): граф, не содержащий петель. Связующее дерево известно всем узлам. В соответствии с этим каждый узел рассылает копии пакетов Reverse path forwarding (Reverse path flooding)Алгоритм является самым простым и неадаптивным вариантом. Каждый полученный пакет пересылается по всем линиям, за исключением той, через которую он был получен. При этом только отправитель должен знать все связующее дерево. Алгоритм: Каждый маршрутизатор знает путь, который он должен использовать для unicast-пакетов. При получении пакета проверяется, был ли пакет получен по линии, которая обычно используется для unicast-пакетов. Если да, то пакет пересылается по всем линиям, за исключением той, через которую он был получен. В противном случае пакет отбрасывается. Reverse path broadcastВ отличие от Reverse path forwarding пакеты отправляются только по линиям, по которым другие узлы принимают данные Shortest Path RoutingОписаниеДанный алгоритм подсчитывает наименьший маршрут от корня дерева до узлов. Смысл заключается в создании пучка узлов Q, для которых уже был определен оптимальный маршрут. Оператор генерирует таблицы маршрутизации, которые загружаются при его инициализации и более не изменяются. Основывается на алгоритме Дейкстры. АлгоритмНаименьшее расстояние от A до D
Плюсы и минусы+простота НеадаптивныеFlow-Based RoutingОписаниеДанный алгоритм является одним из неадаптивных алгоритмов. Он учитывает не только дистанцию между маршрутизаторами, но и загрузку сети. Полезен для нахождения маршрута для больших дистанций с большими задержками в доставке пакетов ПримерДан граф для capacity и матрица трафика
Так как полученное значение слишком велико, то его можно уменьшить за счет замены пути с самой большой задержкой DF(Ti, max = 1000msec) на путь D->G->F Flooding (алгоритм «затопления»)Является самым простым алгоритмом маршрутизации для распространения информации по сети. При получении пакета каждый узел пересылает его соседним узлам за исключением того, от которого пришёл пакет. Данный алгоритм обладает низкой эффективностью из-за повышенной загрузки сети. Для улучшения эффективности алгоритма используются следующие способы:
Другие алгоритмыMultipath RoutingОписаниеОсновная цель алгоритма — подсчёт альтернативных маршрутов и стоимости маршрутов. Стоимость — это вероятность использования альтернативного маршрута. В зависимости от этого каждый раз будет использоваться другой маршрут, что приведёт к уменьшению количества недоставленных пакетов. Использование этого метода делает компьютерную сеть очень надёжной. Метод чаще всего применяется для мобильных сетей, где состояние сети может часто изменяться и некоторые маршрутизаторы могут выходить из строя. Иерархическая маршрутизацияангл. Hierarchical Routing Одноуровневые или иерархические алгоритмы. Некоторые алгоритмы маршрутизации оперируют в одноуровневом пространстве, в то время как другие используют иерархию маршрутизации. В одноуровневой системе маршрутизации все маршрутизаторы равны по отношению друг к другу. В иерархической системе маршрутизации некоторые маршрутизаторы формируют то, что составляет основу (базу) маршрутизации. Например, те, которые находятся на высокоскоростных магистралях. Пакеты из небазовых маршрутизаторов перемещаются к базовым маршрутизаторам и перемещаются через них до тех пор, пока не достигнут общей области пункта назначения. Начиная с этого момента, они перемещаются от последнего базового маршрутизатора через один или несколько небазовых маршрутизаторов до конечного пункта назначения. Системы маршрутизации часто устанавливают логические группы узлов, называемых доменами или областями. В иерархических системах одни маршрутизаторы какого-либо домена могут сообщаться с маршрутизаторами других доменов, в то время как другие маршрутизаторы этого домена могут поддерживать связь с маршрутизаторами только в пределах своего домена. В очень крупных сетях могут существовать дополнительные иерархические уровни. Маршрутизаторы наивысшего иерархического уровня образуют базу маршрутизации. Основным преимуществом иерархической маршрутизации является то, что она имитирует организацию большинства компаний и, следовательно, очень хорошо поддерживает их схемы трафика. Большая часть сетевого трафика компании сосредоточена в пределах своего домена, следовательно, внутридоменным маршрутизаторам необходимо иметь информацию только о других маршрутизаторах в пределах своего домена, поэтому их алгоритмы маршрутизации могут быть упрощенными. Соответственно, может быть уменьшен и трафик обновления маршрутизации, зависящий от используемого алгоритма маршрутизации. Литература
|