Схемы маршрутизации
|
---|
|
|
|
|
Маршрутизация (англ. Routing) — процесс определения маршрута следования информации в сетях связи.
Маршруты могут задаваться административно (статические маршруты), либо вычисляться с помощью алгоритмов маршрутизации, базируясь на информации о топологии и состоянии сети, полученной с помощью протоколов маршрутизации(динамические маршруты).
Статическими маршрутами могут быть:
маршруты, не изменяющиеся во времени;
маршруты, изменяющиеся по расписанию;
маршруты, изменяющиеся по ситуации — административно в момент возникновения стандартной ситуации.[источник не указан 37 дней]
Маршрутизация в компьютерных сетях типично выполняется специальными программно-аппаратными средствами —маршрутизаторами; в простых конфигурациях может выполняться и компьютерами общего назначения, соответственно настроенными.
Протокол маршрутизации может работать только с пакетами, принадлежащими к одному из маршрутизируемых протоколов, например, IP, IPX или Xerox Network System, AppleTalk. Маршрутизируемые протоколы определяют формат пакетов (заголовков), важнейшей информацией из которых для маршрутизации является адрес назначения. Протоколы, не поддерживающие маршрутизацию, могут передаваться между сетями с помощью туннелей. Подобные возможности обычно предоставляют программные маршрутизаторы и некоторые модели аппаратных маршрутизаторов.
Первые маршрутизаторы представляли из себя специализированное ПО, обрабатывающее приходящие IP-пакеты специфичным образом. Это ПО работало на компьютерах, у которых было несколько сетевых интерфейсов, входящих в состав различных сетей (между которыми осуществляется маршрутизация). В дальнейшем появились маршрутизаторы в форме специализированных устройств. Компьютеры с маршрутизирующим ПО называют программные маршрутизаторы, оборудование - аппаратные маршрутизаторы.
В современных аппаратных маршрутизаторах для построения таблиц маршрутизации используется специализированное ПО ("прошивка"), для обработки же IP-пакетов используется коммутационная матрица (или другая технология аппаратной коммутации), расширенная фильтрами адресов в заголовке IP-пакета.
Выделяют два типа аппаратной маршрутизации: со статическими шаблонами потоков и с динамически адаптируемыми таблицами.
Статические шаблоны потоков подразумевают разделение всех входящих в маршрутизатор IP-пакетов на виртуальные потоки; каждый поток характеризуется набором признаков для пакета: IP-адресами отправителя/получателя, TCP/UDP-порт отправителя/получателя (в случае поддержки маршрутизации на основании информации 4 уровня), порт, через который пришёл пакет. Оптимизация маршрутизации при этом строится на идее, что все пакеты с одинаковыми признаками должны обрабатываться одинаково (по одинаковым правилам), при этом правила проверяются только для первого пакета в потоке (при появлении пакета с набором признаков, не укладывающимся в существующие потоки, создаётся новый поток), по результатам анализа этого пакета формируется статический шаблон, который и используется для определения правил коммутации приходящих пакетов (внутри потока). Обычно время хранения неиспользующегося шаблона ограничено (для освобождения ресурсов маршрутизатора). Ключевым недостатком подобной схемы является инерциональность по отношению к изменению таблицы маршрутизации (в случае существующего потока изменение правил маршрутизации пакетов не будет "замечено" до момента удаления шаблона).
Динамически адаптируемые таблицы используют правила маршрутизации "напрямую", используя маску и номер сети из таблицы маршрутизации для проверки пакета и определения порта, на который нужно передать пакет. При этом изменения в таблице маршрутизации (в результате работы, например, протоколов маршрутизации/резервирования) сразу же влияют на обработку всех новопришедших пакетов. Динамически адаптируемые таблицы также позволяют легко реализовывать быструю (аппаратную) проверку списков доступа.
Программная маршрутизация выполняется либо специализированным ПО маршрутизаторов (в случае, когда аппаратные методы не могут быть использованы, например, в случае организации туннелей), либо программным обеспечением на компьютере. В общем случае, любой компьютер осуществляет маршрутизацию своих собственных исходящих пакетов (как минимум, для разделения пакетов, отправляемых на шлюз по умолчанию и пакетов, предназначенных узлам в локальном сегменте сети). Для маршрутизации чужих IP-пакетов, а также построения таблиц маршрутизации используется различное ПО:
Сервис RRAS (англ. routing and remote access service) в Windows Server
Демоны routed, gated, quagga в Unix-подобных операционных системах (Linux, FreeBSD и т.д..)
Основными формами каждого маршрутизатора, реализуемым в соответствии с протоколами маршрутизации, являются:
Определение наилучших маршрутов до возможных пунктов назначения и сохранение полученной информации в таблице маршрутизации;
Передача пакетов по оптимальным путям, выбранным из таблицы маршрутизации на основе адресов получателей.
Современные протоколы маршрутизации предусматривают автоматическое формирование таблиц маршрутизации и поддержание их виртуального состояния на основе взаимодействия маршрутизаторов друг с другом. На каждом маршрутизаторе функции определяют программы опроса и прослушивания, с помощью которых он обменивается информацией с другими маршрутизаторами. Полученная информация используется для построения и обновления таблицы маршрутизации.
Таблица маршрутизации, иногда называемая базой банных маршрутизации, включает набор оптимальных путей, используемых маршрутизатором при передаче пакетов в данный момент времени. Каждая строка этой таблицы содержит, по крайней мере, следующею информацию:
Адрес следующего маршрутизатора, пересылка к которому соответствует оптимальному пути до пункта назначения;
Характеристику пути, например, пропускная способность канала связи и отметку времени, когда эта характеристика была определена;
Информацию о способе пересылки, например, номер выходного порта.
В одной строке таблицы могут храниться данные о нескольких возможных следующих транзитных маршрутизаторах, задающих различные критерии оптимальности пути. Способ выбора транзитного маршрутизатора зависит от используемой схемы протокола маршрутизации.
Определение оптимальности путей при формировании и обновлении таблицы маршрутизации может производиться в соответствии с такими критериями или их комбинациями, как:
Длина маршрута, измеренная количеством маршрутизаторов, через которое необходимо пройти до пункта назначения;
Пропускная способность канала связи;
Прогнозируемое суммарное время пересылки;
Стоимость канала связи.
При наличии таблицы маршрутизации функцию передачи пакетов по оптимальным путям маршрутизатор реализует достаточно просто. Для отправки пакета через маршрутизатор узел локальной сети помещает в заголовок пакета на сетевом уровне мадуля OSI адрес действительного получателя, а на канальном уровне – MAC- адрес маршрутизатора. После получения очередного пакета маршрутизатор выполняет следующие действия:
Считывает из заголовка пакета, соответствующий сетевому уровню модели OSI, адрес назначения, т.е. сетевой адрес получателя;
По таблице маршрутизации определяется адрес следующего транзитного маршрутизатора, пересылка к которому соответствует оптимальному пути до пункта назначения;
Заменяет в заголовке пакета, соответствующий канальному уровню модели OSI, свой МАС- адрес на МАС- адрес выбранного транзитного маршрутизатора;
Отсылает пакет выбранному транзитному маршрутизатору.
По мере того, как пакет передвигается через сеть, физический адрес (МАС- адрес) его получателя меняется, но логический адрес пункта назначения, соответствующий сетевому уровню модели OSI, остается без изменений.
Алгоритмы, положенные в основу формирования и обновления таблицы маршрутизации, называют алгоритмами маршрутизации. В соответствии с данными алгоритмами и определяются наилучшие маршруты до возможных пунктов назначения. Алгоритмы передачи пакетов по оптимальным путям, выбранным из таблицы маршрутизации, называются алгоритмами коммутации.
Алгоритмы коммутации, задающие порядок транспортировки пакетов через сеть при известных оптимальных маршрутах, являются достаточно простыми. Сложными и наиболее важными являются алгоритмы маршрутизации, которые и составляют основу протоколов маршрутизации. К данным алгоритмам предъявляют следующие функциональные требования:
По оптимизации определенных маршрутов – способности определять наилучший маршрут в зависимости от заданных показателей и их весовых коэффициентов;
По гибкости – способность быстро и точно адаптироваться к изменениям структуры и условий функционирования сети;
По сходимости – способности достичь быстрого соглашения между маршрутизаторнами сети по оптимальным маршрутам.
В протоколах маршрутизации показатель оптимальности маршрута часто называют метрикой. Оптимальным считается кратчайший путь. При этом метрика, т.е. мера длины пути задается определенной формулой, в качестве переменных, которой могут выступать любые характеристики маршрута, например, общее число транзитных маршрутизаторов и суммарное время пересылки.
Требования к алгоритмам маршрутизации по гибкости и сходимости взаимосвязаны друг с другом. Когда в сети происходит какие- либо изменения, влияющие на выбор оптимальных маршрутов, например, перегрузка какого- либо участка сети или появления нового канала связи, узнавшие первыми об этих изменениях маршрутизаторы должны переопределить свои оптимальные маршруты, адаптируясь к возникшим изменениям. Кроме того, они должны разослать сообщения об изменениях другим маршрутизаторам. Данные сообщения пронизывают сети, стимулируя пересчет оптимальных маршрутов. В конечном итоге все маршрутизаторы должны прийти к общему соглашению по оптимальным маршрутам.
Алгоритмы маршрутизации, не обладающие высокой гибкостью и быстрой сходимостью, приводят к образованию петель маршрутизации и даже выхода сети из строя.
Признаки классификации алгоритмов и протоколов маршрутизации в большинстве случаев совпадают друг с другом. Наиболее важными признаками являются:
Степень динамичности, отражающая наличие или отсутствие гибкости и сходимости;
Количество одновременно поддерживаемых маршрутов к одному пункту назначения;
Способ организации маршрутов;
Область влияния;
Способ получения маршрутной информации.
По степени гибкости и сходимости различают статические и динамические алгоритмы маршрутизации.
Статические алгоритмы представляют собой свод правил по запоминанию и использованию статических таблиц маршрутизации, которые не изменяются в автоматическом режиме. Данные таблицы формируются и обновляются администратором, который сам должен отслеживать все изменения в сети. Статические алгоритмы не обеспечивают гибкость и сходность. Их целесообразно использовать только в простых и небольших сетях, где трафик является предсказуемым.
Динамические алгоритмы маршрутизации обеспечивают автоматическое формирование и обновление таблиц маршрутизации в масштабе реального времени. В соответствии с данными алгоритмами между маршрутизаторами осуществляется обмен сообщениями. При отсутствии маршрутной информации маршрутизаторы запрашивают ее друг у друга. В случае возникновения изменений в сети мершрутизаторы уведомляют друг друга. Полученные друг от друга сообщения стимулируют пересчет оптимальных маршрутов и обновление таблиц маршрутизации в масштабе реального времени. Без динамических алгоритмов маршрутизации администрирование больших и сложных сетей существенно затрудняется. Все перечисленные ниже протоколы маршрутизации основаны на динамических алгоритмах:
По количеству одновременно поддерживаемых маршрутов к одному пункту назначения алгоритмы маршрутизации могут иметь одномаршрутными или многомаршрутными.
По способу организации маршрутов различают алгоритмы одноуровневой и иерархической организации.
По области влияния алгоритмы маршрутизации могут быть внутредоменными и междоменными.
По способу получения маршрутной информации различают алгоритмы вектора расстояния и алгоритмы состояния канала.
Алгоритмы маршрутизации применяются для определения наилучшего пути пакетов от источника к приёмнику и являются основой любого протокола маршрутизации. Для формулирования алгоритмов маршрутизации сеть рассматривается как граф. При этом маршрутизаторы являются узлами, а физические линии между маршрутизаторами — рёбрами соответствующего графа. Каждой грани графа присваивается определённое число — стоимость, зависящая от физической длины линии, скорости передачи данных по линии или финансовой стоимости линии.
Алгоритмы маршрутизации можно разделить на:
адаптивные и неадаптивные
глобальные и децентрализованные
статические и динамические
точность
простота
надёжность
стабильность
справедливость
оптимальность
принимают во внимание состояние линии
+возможность динамической адаптации к состоянию сети
-необходимо постоянно пересчитывать таблицы маршрутизации
адаптивный централизированный алгоритм
+RCC обладает всей информацией о состоянии сети, что позволяет принимать оптимальные решения
+узлы освобождены от подсчета таблиц маршрутизации
-низкая надежность
-узлы получают таблицы маршрутизации в различное время
-концентрация трафика возле RCC
Узел извлекает информацию из полученных пакетов.
+нет перегрузок
-медленная адаптация к состоянию сети (время конвергенции)
дистанционно-векторный алгоритм, link state routing
+лучшая адаптация
-перегрузки
не принимают во внимание текущее состояние сети, все маршруты рассчитываются до начала использования сети. Они в свою очередь подразделяются на алгоритмы, учитывающие топологию сети (spanning tree, flow based routing) и не учитывающие (flooding).
+простота
+хорошие результаты при неизменной топологии и нагрузке
-невозможность реагирования на изменения
-низкая скорость в неоднородных сетях
Shortest Path
Flow based
Flooding
(англ. adaptive centralized routing)
В сети существует так называемый центр маршрутизации (Routing Control Center, RCC), который получает информацию от всех узлов об их соседних узлах, длине очереди и загрузке линии. В функции RCC входит сбор информации, подсчет оптимальных маршрутов для каждого узла, составление таблиц маршрутизации и рассылка их узлам.
+RCC обладает всей информацией и может создавать «идеальные» маршруты
+узлы освобождены от необходимости расчета таблиц маршрутизации
-низкая надежность
-время от времени требуется перерасчет таблиц маршрутизации
-некорректная работа при разделенных сетях
-IS получают информации в различное время
-концентрация трафика возле RCC
Каждый узел берет только нужную информацию из полученных пакетов. Таким образом, каждый узел знает отправителя пакетов и количество хопов, которые этот пакет прошёл. Затем происходит сравнение с данными в таблице маршрутизации, и если у полученного пакета меньшее количество хопов, то происходит обновление таблицы.
+легкость реализации
-проблемы при изменении топологии и нагрузки
-не происходит обмен данными о маршрутизации между узлами
(англ. 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 году и пришёл на смену дистанционно-векторному алгоритму. Причинами перехода служили:
рост пропускной способности каналов и отсутствие её учета в дистанционно-векторном алгоритме
медленность дистанционно-векторного алгоритма, вызванная «счетом до бесконечности»
определение адресов соседних узлов: новые узлы рассылают приветствие (HELLO-сообщения), соседние узлы сообщают свои адреса
измерение метрики линий или времени передачи данных до соседних узлов
организация собранных данных в пакет, содержащий личный адрес, порядковый номер (для избежания повторений), возраст (для отброса устаревшей информации), дистанцию
рассылка пакетов всем узлам сети (flooding)
подсчет маршрутов на основе полученной от других узлов информации
(англ. broadcast routing)
unicast — 1:1
multicast — 1:n
broadcast — 1:всем
индивидуальная отправка пакетов каждому получателю, что предъявляет определенные требования к сети, излишняя трата полосы пропускания, отправитель должен знать всех получателей
flooding: слишком много повторяющихся пакетов
Каждый пакет содержит список всех целей. Каждый узел создает для каждого исходящего соединения копию пакета, которая содержит только адреса тех узлов, которые достижимы через это соединение.
англ. multicast routing
англ. spanning tree
Связующее дерево (Spanning tree): граф, не содержащий петель. Связующее дерево известно всем узлам. В соответствии с этим каждый узел рассылает копии пакетов
Алгоритм является самым простым и неадаптивным вариантом. Каждый полученный пакет пересылается по всем линиям, за исключением той, через которую он был получен. При этом только отправитель должен знать все связующее дерево. Алгоритм: Каждый маршрутизатор знает путь, который он должен использовать для unicast-пакетов. При получении пакета проверяется, был ли пакет получен по линии, которая обычно используется и пересылается по всем линиям, за исключением той, через которую он был получен. В противном случае пакет отбрасывается.
В отличие от Reverse path forwarding пакеты отправляются только по линиям, по которым другие узлы принимают данные
Данный алгоритм подсчитывает наименьший маршрут от корня дерева до узлов. Смысл заключается в создании пучка узлов Q, для которых уже был определен оптимальный маршрут. Оператор генерирует таблицы маршрутизации, которые загружаются при его инициализации и более не изменяются. Основывается наалгоритме Дейкстры.
Наименьшее расстояние от A до D
узел A помечается как рассматриваемый
присвоить всем соседним узлам значение с дистанцией до рассматриваемого узла B(2,A), G(6,A) и добавить их в список кандидатов
выбрать из списка кандидатов узел с наименьшей дистанцией B(2,A)
пометить этот узел как рассматриваемый и добавить его в дерево
перейти к пункту 2
+простота
+хорошие результаты при постоянной топологии сети и нагрузке
Данный алгоритм является одним из неадаптивных алгоритмов. Он учитывает не только дистанцию между маршрутизаторами, но и загрузку сети. Полезен для нахождения маршрута для больших дистанций с большими задержками в доставке пакетов
Протокол маршрутизации — сетевой протокол, используемый маршрутизаторами для определения возможных маршрутов следования данных в составнойкомпьютерной сети. Применение протокола маршрутизации позволяет избежать ручного ввода всех допустимых маршрутов, что, в свою очередь, снижает количество ошибок, обеспечивает согласованность действий всех маршрутизаторов в сети и облегчает труд администраторов.
Протоколы маршрутизации делятся на два вида, зависящие от типов алгоритмов, на которых они основаны:
Дистанционно-векторные протоколы, основаны на Distance Vector Algorithm (DVA);
Протоколы состояния каналов связи, основаны на Link State Algorithm (LSA).
Так же протоколы маршрутизации делятся на два вида в зависимости от сферы применения:
Междоменной маршрутизации;
Внутридоменной маршрутизации.
RIP — Routing Information Protocol;
IGRP — Interior Gateway Routing Protocol (лицензированный протокол Cisco Systems);
BGP — Border GateWay Protocol;
EIGRP — Enhanced Interior Gateway Routing Protocol (на самом деле он гибридный — объединяет свойства дистанционно-векторных протоколов и протоколов по состоянию канала; лицензированный протокол Cisco Systems);
IS-IS — Intermediate System to Intermediate System (стек OSI);
OSPF — Open Shortest Path First;
HSRP и CARP — протоколы резервирования шлюза в Ethernet-сетях.