Какая информация в таблице маршрутизации определяет эффективность маршрута: Выбор маршрута в маршрутизаторах Cisco

Содержание

Выбор маршрута в маршрутизаторах Cisco

Один из самых интересных аспектов маршрутизаторов Cisco, особенно для пользователей, малознакомых с маршрутизацией, — это метод, который маршрутизатор использует для выбора наилучшего из доступных маршрутов, созданных протоколами маршрутизации, при помощи ручной настройки и другими способами. Несмотря на то что процесс выбора маршрута проще, чем можно предположить, полное понимание этого процесса требует некоторых знаний принципа работы маршрутизаторов Cisco.

Требования

Для данного документа отсутствуют предварительные условия.

Используемые компоненты

Настоящий документ не имеет жесткой привязки к каким-либо конкретным версиям программного обеспечения и оборудования.

Условные обозначения

Дополнительные сведения об условных обозначениях см. в документе Технические рекомендации Cisco. Условные обозначения.

В создание и поддержку таблицы маршрутизации в маршрутизаторе Cisco вовлечены три процесса:

  • Различные процессы маршрутизации, которые фактически запускают сетевой протокол или протокол маршрутизации, такой как улучшенный протокол маршрутизации внутреннего шлюза (EIGRP), связь между промежуточными системами (IS-IS), первоочередное открытие кратчайших маршрутов (OSPF).

  • Сама таблица маршрутизации, которая получает сведения от процессов маршрутизации и отвечает на запросы данных от процесса переадресации.

  • Процесс переадресации, который запрашивает информацию из таблицы маршрутизации, чтобы принять решение о переадресации пакета.

Чтобы понять, как происходит построение таблицы маршрутизации, рассмотрим взаимодействие между протоколами маршрутизации и таблицей маршрутизации.

Основные вопроси при построении маршрутной таблицы:

  • Административное расстояние – Это мера надежности источника маршрута. Если маршрутизатор узнает о получателе из нескольких протоколов маршрутизации, то сравниваются административные расстояния и преимущество получают маршруты с меньшим административным расстоянием. Другими словами, это степень доверия источнику маршрута.

  • Метрики – это мера, используемая протоколом маршрутизации для вычисления лучшего пути к данному месту назначения, если известно множество путей к нему. Каждый протокол маршрутизации использует свою метрику.

  • Длина префикса

Поскольку каждый процесс маршрутизации получает обновления и иную информацию, он выбирает наилучший путь к указанному пункту назначения и предпринимает попытку внедрить данный путь в таблицу маршрутизации. Например, если протокол EIGRP определяет наилучший путь к адресу 10.1.1.0/24, выполняется попытка установки данного пути в таблицу маршрутизации.

Маршрутизатор решает, устанавливать ли маршруты, представленные процессом маршрутизации, основанном на административном расстоянии маршрута. Если данный маршрут имеет наименьшую административную длину до цели (по сравнению с другими маршрутами таблицы), он будет прописан в таблице маршрутизации. Если этот маршрут не является маршрутом с лучшим административным расстоянием, он отклоняется.

Для лучшего понимания давайте обратимся к примеру. Предположим, что в маршрутизаторе работает 4 процесса маршрутизации —: EIGRP, OSPF, RIP и IGRP. Все 4 процесса получили данные о различных маршрутах к сети 192.168.24.0/24, и каждый выбрал наилучший путь к этой сети, используя внутренние метрики и процессы.

Каждый из четырех процессов пытается установить свой маршрут к сети 192.168.24.0/24 в таблицу маршрутизации. Каждый из процессов маршрутизации назначил административное расстояние, которое используется для определения маршрута, который следует установить.

Административное расстояние по умолчанию
Подключено 0
Статичный 1
eBGP 20
EIGRP (внутренний) 90
IGRP 100
OSPF 110
IS-IS 115
RIP 120
EIGRP (внешний) 170
iBGP 200
Суммарный маршрут EIGRP 5

Так как внутренний маршрут EIGRP имеет наилучшее административное расстояние (чем меньше административное расстояние, тем выше приоритет), он устанавливается в таблицу маршрутизации.

Резервные маршруты

Что другие протоколы, RIP, IGRP и OSPF, делают с неустановленными маршрутами? Что делать, если оптимальный маршрут, полученный от EIGRP, недоступен? ПО Cisco IOS® использует два похода к решению этой проблемы: Сначала каждый процесс маршрутизации должен периодически пытаться установить свои лучшие маршруты. Если наиболее предпочтительный маршрут недоступен, то на следующей попытке будет выбран следующий по приоритету маршрут (в соответствие с административным расстоянием). Другим решением для протокола маршрутизации, которому не удалось установить маршрут в таблице, является использование маршрута и передача процессу таблицы маршрутизации команды послать отчет, если лучший маршрут даст сбой.

Для протоколов, не имеющих своей информации таблиц маршрутизации, например IGRP, используется первый метод. Каждый раз, когда протокол IGRP получает обновление маршрута, он пытается установить обновленные данные в таблицу маршрутизации. Если в таблице маршрутизации на это направление уже назначен маршрут, попытка установки закончится неудачей.

Для протоколов, не имеющих БД маршрутной информации, например EIGRP, IS-IS, OSPF, BGP и RIP, резервный маршрут регистрируется при сбое первоначальной попытки установить маршрут. Если маршрут, установленный в таблице маршрутизации, отказывает по тем или иным причинам, процесс обслуживания таблицы маршрутизации вызывает процессы всех протоколов маршрутизации, которые зарегистрировали резервный маршрут, и просит установить этот маршрут в таблицу. Если резервный маршрут зарегистрировали несколько протоколов, предпочтительный маршрут выбирается на основе административного расстояния.

Настройка административного расстояния

Административное расстояние по умолчанию не всегда подходит для вашей сети; можно внести изменение, чтобы маршруты RIP были предпочтительны, например, по сравнению с маршрутами IGRP. Перед тем как объяснить, как регулировать административные расстояния, необходимо посмотреть на последствия изменения административного расстояния.

Опасно изменять административное расстояние в протоколах маршрутизации! Изменение расстояний по умолчанию может привести к образованию петель маршрутизации. Рекомендуется изменять административное расстояние с осторожностью и с полным представлением о том, что требуется получить, и всех последствиях своих действий.

Для полных протоколов изменение расстояния относительно просто. Для этого необходимо ввести команду distance в режиме субконфигурации процесса маршрутизации. Также можно изменить расстояние маршрутов, полученных только из одного источника или расстояние только определенных маршрутов. Для получения дополнительной информации см. Изменение административного расстояния для выбора маршрута в примере настройки маршрутизаторов Cisco IOS.

Чтобы изменить расстояние для статических маршрутов, введите нужное расстояние после следующей команды ip route:

ip-маршрут подсеть сети маска следующий транзитный участок расстояние

Невозможно одновременно изменить административное расстояние для всех статических маршрутов.

Как метрика определяет процесс выбора маршрута

Маршрутизаторы выбираются и включаются в маршрутизационную таблицу на основании административного расстояния протокола маршрутизации. Маршруты с наименьшим административным расстоянием, полученные от протокола маршрутизации, устанавливаются в таблицу маршрутизации. Если с одного протокола маршрутизации существует несколько путей к одному и тому же получателю, то эти пути имеют одно административное расстояние, а оптимальный путь выбирается на основе метрики. Метрики представляют собой значения, связанные с определенными маршрутами, ранжирующие их в интервале от наиболее предпочитаемых до наименее предпочитаемых. Параметры, используемые для расчета метрик, зависят от протокола маршрутизации. Путь с самой низкой метрикой выбирается в качестве оптимального пути и устанавливается в таблице маршрутизации. Если существует несколько путей с равной метрикой до одного назначения, распределение нагрузки выполняется по этим путям эквивалентной стоимости. Дополнительные сведения о распределении нагрузки см. в разделе «Как работает средство распределения нагрузки»?

Длина префикса

Давайте посмотрим на другой сценарий, чтобы увидеть, как маршрутизатор обрабатывает другую типичную ситуацию: переменные длины прификсов. Предположим, что в маршрутизаторе запущено четыре процесса со следующими маршрутами:

Который из этих маршрутов будет установлен в таблице маршрутизации? Поскольку внутренний маршрут EIGRP имеет наилучшее административное расстояние, легко предположить, что он будет установлен первым. Однако, маршруты имеют разные длины префиксов (маски подсети) и, следовательно, считаются маршрутами к разным местам назначения. В этом случае в таблицу маршрутизации будут добавлены все маршруты.

Давайте посмотрим, как переадресующий инструмент использует информацию таблицы маршрутизации для принятия решений о пересылке.

Давайте взглянем на три маршрута, которые мы только что установили в таблице маршрутизации, и посмотрим, как они выглядят на маршрутизаторе.

router# show ip route
     ....
     D   192.168.32.0/26 [90/25789217] via 10.1.1.1
     R   192.168.32.0/24 [120/4] via 10.1.1.2
     O   192.168.32.0/19 [110/229840] via 10.1.1.3
     ....

Если пакет прибывает на интерфейс маршрутизатора с адресом назначения 192.168.32.1, какой маршрут выберет маршрутизатор? Это зависит от длины префикса или количества бит, установленного в маске подсети. При пересылке пакета более длинные префиксы всегда предпочтительнее коротких.

В этом примере, пакет, отправленный по адресу 192.168.32.1 направляется в сеть 10.1.1.1, так как адрес 192.168.32.1 находится в сети 192.168.32.0/26 (192.168.32.0–192.168.32.63). Адресу соответствуют еще два доступных маршрута, но у 192.168.32.0/26 наиболее длинный префикс в таблице маршрутизации (26 бит против 24 и 19).

Точно так же, если пакет, направленный на адрес 192.168.32.100, прибывает на один из интерфейсов маршрутизатора, он перенаправляется на 10.1.1.2, поскольку 192.168.32.100 не попадает в диапазон адресов 192.168.32.0/26 (от 192.168.32.0 до 192.168.32.63), но попадает в диапазон адресов 192.168.32.0/24 назначения (от 192.168.32.0 до 192.168.32.255). Опять, он также попадает в область, перекрытую 192.168.32.0/19, но 192.168.32.0/24 имеет более длинный префикс.

Ip classless

Для тех адресов, для которых команда ip classless configuration попадает в данный диапазон, возможно возникновение сбоев в процессе маршрутизации и пересылки. В реальности команда «IP classless» влияет только на работу процессов переадресации IOS, но не влияет на построение таблицы маршрутизации. Если функция «IP classless» не настроена (с помощью команды no ip classless), маршрутизатор не будет переадресовать пакеты в подсети. Для примера снова поместим три маршрута в таблицу маршрутизации и проведем пакеты через маршрутизатор.

Примечание: Если суперсеть или маршрут по умолчанию получены через IS-IS или OSPF, то команда no ip classless configuration игнорируется. В этом случае режим коммутация пакетов работает так, как если бы команда ip classless была настроена.

router# show ip route
....
     172.30.0.0/16 is variably  subnetted, 2 subnets, 2 masks
D        172.30.32.0/20 [90/4879540] via  10.1.1.2
D       172.30.32.0/24  [90/25789217] via 10.1.1.1
S*   0.0.0.0/0 [1/0] via 10.1.1.3  

Помня о том, что сеть 172.30.32.0/24 включает адреса с 172.30.32.0 по 172.30.32.255, а сеть 172.30.32.0/20 включает адреса с 172.30.32.0 по 172.30.47.255, мы можем выполнить коммутацию трех пакетов с использованием этой таблицы маршрутизации и проанализировать результаты.

  • Пакет, направленный по адресу 172.30.33.1, переадресуются на 10.1.1.2, так как этот маршрут имеет наибольший префикс.

  • Пакет, предназначенный для адреса 172.30.33.1, пересылается на 10.1.1.2, из-за совпадения самого длинного префикса.

  • Пакет, направленный по адресу 192.168.10.1 переадресуются на 10.1.1.3. Так как сеть отсутствует в таблице маршрутизации, пакет переадресуется на маршрут по умолчанию.

  • Пакет, отправленный по адресу 172.30.254.1, отбрасывается.

Удивительно, что из этих четырех пакетов был отброшен последний. Он отброшен потому, что его место назначения 172.30.254.1 находится внутри известной крупной сети 172.30.0.0/16, но маршрутизатор не знает об этой отдельной подсети внутри этой крупной сети.

На этом основана маршрутизация типа classful: Если одна часть основной сети известна, но подсеть в этой основной сети, для которой предназначен пакет, не известна, пакет отбрасывается.

Самым сложным для понимания аспектом этого правила является то, что маршрутизатор использует только маршрут по умолчанию, если крупная сеть назначения вообще не существует в таблице маршрутизации.

Это может вызвать проблемы в сети, когда удаленный участок с одной связью к остальной части сети не выполняет никаких протоколов маршрутизации, как проиллюстрировано.

Маршрутизатор удаленного сайта настраивается следующим образом:

interface Serial 0
     ip address 10.1.2.2 255.255.255.0
   !
   interface Ethernet 0
     ip address 10.1.1.1 255.255.255.0
   !
   ip route 0.0.0.0 0.0.0.0 10.1.2.1
   !
   no ip classless

В такой конфигурации узлы на удаленном узле могут достичь назначения через Интернет (через облако 10.x.x.x), но не назначений в облаке 10.x.x.x, которое является корпоративной сетью. Поскольку удаленный маршрутизатор обладает информацией о части сети 10.0.0.0/8, двух напрямую подключенных подсетях и ничего не знает о другой подсети диапазона 10.x.x.x, то он предполагает, что таких подсетей не существует, и сбрасывает предназначенные для них пакеты. Однако трафик, направленный в Интернет, не имеет получателя в диапазоне адресов 10.x.x.x и поэтому правильно направляется по стандартному маршруту.

Настройка бесклассового IP на удаленном маршрутизаторе позволяет решить эту проблему, так как она позволяет удаленному маршрутизатору игнорировать границы класса сетей в таблице маршрутизации и выполнять маршрутизацию просто по совпадению с наибольшей длиной префикса.

В общих словах, переадресация состоит из трех наборов процессов: протоколы маршрутизации, таблица маршрутизации и процесс переадресации, который принимает решения о переадресации и коммутирует пакеты. Ниже иллюстрируются эти три набора процессов, а также их взаимосвязь.

Совпадение с наибольшей длиной префикса всегда выигрывает у маршрутов, установленных в таблице маршрутизации, в то время как протокол маршрутизации с самым коротким административным расстоянием всегда выигрывает при установке маршрутов в таблицу маршрутизации.

Основные принципы работы сетевой маршрутизации

  • Bot
  • 30.12.2020
  • 12 307
  • 0
  • 28.03.2021
  • 25
  • 25
  • 0
  • Содержание статьи

Маршрутизация в IP-сетях

Маршрутизация служит для приема пакета от одного устройства и передачи его по сети другому устройству через другие сети. Если в сети нет маршрутизаторов, то не поддерживается маршрутизация. Маршрутизаторы направляют (перенаправляют) трафик во все сети, составляющие объединенную сеть.

Для маршрутизации пакета маршрутизатор должен владеть следующей информацией:

  • Адрес назначения
  • Соседний маршрутизатор, от которого он может узнать об удаленных сетях
  • Доступные пути ко всем удаленным сетям
  • Наилучший путь к каждой удаленной сети
  • Методы обслуживания и проверки информации о маршрутизации

Маршрутизатор узнает об удаленных сетях от соседних маршрутизаторов или от сетевого администратора. Затем маршрутизатор строит таблицу маршрутизации, которая описывает, как найти удаленные сети.

Если сеть подключена непосредственно к маршрутизатору, он уже знает, как направить пакет в эту сеть. Если же сеть не подключена напрямую, маршрутизатор должен узнать (изучить) пути доступа к удаленной сети с помощью статической маршрутизации (ввод администратором вручную местоположения всех сетей в таблицу маршрутизации) или с помощью динамической маршрутизации.

Динамическая маршрутизация — это процесс протокола маршрутизации, определяющий взаимодействие устройства с соседними маршрутизаторами. Маршрутизатор будет обновлять сведения о каждой изученной им сети. Если в сети произойдет изменение, протокол динамической маршрутизации автоматически информирует об изменении все маршрутизаторы. Если же используется статическая маршрутизация, обновить таблицы маршрутизации на всех устройствах придется системному администратору.

Что такое маршрутизатор (шлюз, gateway)?

Маршрутизатором, или шлюзом, называется узел сети с несколькими IP-интерфейсами (содержащими свой MAC-адрес и IP-адрес), подключенными к разным IP-сетям, осуществляющий на основе решения задачи маршрутизации перенаправление дейтаграмм из одной сети в другую для доставки от отправителя к получателю.

Маршрутизаторы представляют собой либо специализированные вычислительные машины, либо компьютеры с несколькими IP-интерфейсами, работа которых управляется специальным программным обеспечением.

Процесс IP-маршрутизации

IP-маршрутизация — простой процесс, который одинаков в сетях любого размера. Например, на рисунке показан процесс пошагового взаимодействия хоста А с хостом В в другой сети. В примере пользователь хоста А запрашивает по ping IP-адрес хоста В. Дальнейшие операции не так просты, поэтому рассмотрим их подробнее:

  • В командной строке пользователь вводит ping 172.16.20.2. На хосте А генерируется пакет с помощью протоколов сетевого уровня IP и ICMP.
  • IP обращается к протоколу ARP для выяснения сети назначения для пакета, просматривая IP-адрес и маску подсети хоста А. Это запрос к удаленному хосту, т.е. пакет не предназначен хосту локальной сети, поэтому пакет должен быть направлен маршрутизатору для перенаправления в нужную удаленную сеть.
  • Чтобы хост А смог послать пакет маршрутизатору, хост должен знать аппаратный адрес интерфейса маршрутизатора, подключенный к локальной сети. Сетевой уровень передает пакет и аппаратный адрес назначения канальному уровню для деления на кадры и пересылки локальному хосту. Для получения аппаратного адреса хост ищет местоположение точки назначения в собственной памяти, называемой кэшем ARP.
  • Если IP-адрес еще не был доступен и не присутствует в кэше ARP, хост посылает широковещательную рассылку ARP для поиска аппаратного адреса по IP-адресу 172.16.10.1. Именно поэтому первый запрос Ping обычно заканчивается тайм-аутом, но четыре остальные запроса будут успешны. После кэширования адреса тайм-аута обычно не возникает.
  • Маршрутизатор отвечает и сообщает аппаратный адрес интерфейса Ethernet, подключенного к локальной сети. Теперь хост имеет всю информацию для пересылки пакета маршрутизатору по локальной сети. Сетевой уровень спускает пакет вниз для генерации эхо-запроса ICMP (Ping) на канальном уровне, дополняя пакет аппаратным адресом, по которому хост должен послать пакет. Пакет имеет IP-адреса источника и назначения вместе с указанием на тип пакета (ICMP) в поле протокола сетевого уровня.
  • Канальный уровень формирует кадр, в котором инкапсулируется пакет вместе с управляющей информацией, необходимой для пересылки по локальной сети. К такой информации относятся аппаратные адреса источника и назначения, а также значение в поле типа, установленное протоколом сетевого уровня (это будет поле типа, поскольку IP по умолчанию пользуется кадрами Ethernet_II). Рисунок 3 показывает кадр, генерируемый на канальном уровне и пересылаемый по локальному носителю. На рисунке 3 показана вся информация, необходимая для взаимодействия с маршрутизатором: аппаратные адреса источника и назначения, IP-адреса источника и назначения, данные, а также контрольная сумма CRC кадра, находящаяся в поле FCS (Frame Check Sequence).
  • Канальный уровень хоста А передает кадр физическому уровню. Там выполняется кодирование нулей и единиц в цифровой сигнал с последующей передачей этого сигнала по локальной физической сети.
  • Сигнал достигает интерфейса Ethernet 0 маршрутизатора, который синхронизируется по преамбуле цифрового сигнала для извлечения кадра. Интерфейс маршрутизатора после построения кадра проверяет CRC, а в конце приема кадра сравнивает полученное значение с содержимым поля FCS. Кроме того, он проверяет процесс передачи на отсутствие фрагментации и конфликтов носителя.
  • Проверяется аппаратный адрес назначения. Поскольку он совпадает с адресом маршрутизатора, анализируется поле типа кадра для определения дальнейших действий с этим пакетом данных. В поле типа указан протокол IP, поэтому маршрутизатор передает пакет процессу протокола IP, исполняемому маршрутизатором. Кадр удаляется. Исходный пакет (сгенерированный хостом А) помещается в буфер маршрутизатора.
  • Протокол IP смотрит на IP-адрес назначения в пакете, чтобы определить, не направлен ли пакет самому маршрутизатору. Поскольку IP-адрес назначения равен 172.16.20.2, маршрутизатор определяет по своей таблице маршрутизации, что сеть 172.16.20.0 непосредственно подключена к интерфейсу Ethernet 1.
  • Маршрутизатор передает пакет из буфера в интерфейс Ethernet 1. Маршрутизатору необходимо сформировать кадр для пересылки пакета хосту назначения. Сначала маршрутизатор проверяет свой кэш ARP, чтобы определить, был ли уже разрешен аппаратный адрес во время предыдущих взаимодействий с данной сетью. Если адреса нет в кэше ARP, маршрутизатор посылает широковещательный запрос ARP в интерфейс Ethernet 1 для поиска аппаратного адреса для IP-адреса 172.16.20.2.
  • Хост В откликается аппаратным адресом своего сетевого адаптера на запрос ARP. Интерфейс Ethernet 1 маршрутизатора теперь имеет все необходимое для пересылки пакета в точку окончательного приема. На рисунке показывает кадр, сгенерированный маршрутизатором и переданный по локальной физической сети.

Кадр, сгенерированный интерфейсом Ethernet 1 маршрутизатора, имеет аппаратный адрес источника от интерфейса Ethernet 1 и аппаратный адрес назначения для сетевого адаптера хоста В. Важно отметить, что, несмотря на изменения аппаратных адресов источника и назначения, в каждом передавшем пакет интерфейсе маршрутизатора, IP-адреса источника и назначения никогда не изменяются. Пакет никоим образом не модифицируется, но меняются кадры.

  • Хост В принимает кадр и проверяет CRC. Если проверка будет успешной, кадр удаляется, а пакет передается протоколу IP. Он анализирует IP-адрес назначения. Поскольку IP-адрес назначения совпадает с установленным в хосте В адресом, протокол IP исследует поле протокола для определения цели пакета.
  • В нашем пакете содержится эхо-запрос ICMP, поэтому хост В генерирует новый эхо-ответ ICMP с IP-адресом источника, равным адресу хоста В, и IP-адресом назначения, равным адресу хоста А. Процесс запускается заново, но в противоположном направлении. Однако аппаратные адреса всех устройств по пути следования пакета уже известны, поэтому все устройства смогут получить аппаратные адреса интерфейсов из собственных кэшей ARP.

В крупных сетях процесс происходит аналогично, но пакету придется пройти больше участков по пути к хосту назначения.

Таблицы маршрутизации

В стеке TCP/IP маршрутизаторы и конечные узлы принимают решения о том, кому передавать пакет для его успешной доставки узлу назначения, на основании так называемых таблиц маршрутизации (routing tables).

Таблица представляет собой типичный пример таблицы маршрутов, использующей IP-адреса сетей, для сети, представленной на рисунке.

Таблица маршрутизации для Router 2

В таблице представлена таблица маршрутизации многомаршрутная, так как содержится два маршрута до сети 116.0.0.0. В случае построения одномаршрутной таблицы маршрутизации, необходимо указывать только один путь до сети 116.0.0.0 по наименьшему значению метрики.

Как нетрудно видеть, в таблице определено несколько маршрутов с разными параметрами. Читать каждую такую запись в таблице маршрутизации нужно следующим образом:

Чтобы доставить пакет в сеть с адресом из поля Сетевой адрес и маской из поля Маска сети, нужно с интерфейса с IP-адресом из поля Интерфейс послать пакет по IP-адресу из поля Адрес шлюза, а «стоимость» такой доставки будет равна числу из поля Метрика.

В этой таблице в столбце «Адрес сети назначения» указываются адреса всех сетей, которым данный маршрутизатор может передавать пакеты. В стеке TCP/IP принят так называемый одношаговый подход к оптимизации маршрута продвижения пакета (next-hop routing) – каждый маршрутизатор и конечный узел принимает участие в выборе только одного шага передачи пакета. Поэтому в каждой строке таблицы маршрутизации указывается не весь маршрут в виде последовательности IP-адресов маршрутизаторов, через которые должен пройти пакет, а только один IP-адрес — адрес следующего маршрутизатора, которому нужно передать пакет. Вместе с пакетом следующему маршрутизатору передается ответственность за выбор следующего шага маршрутизации. Одношаговый подход к маршрутизации означает распределенное решение задачи выбора маршрута. Это снимает ограничение на максимальное количество транзитных маршрутизаторов на пути пакета.

Для отправки пакета следующему маршрутизатору требуется знание его локального адреса, но в стеке TCP/IP в таблицах маршрутизации принято использование только IP-адресов для сохранения их универсального формата, не зависящего от типа сетей, входящих в интерсеть. Для нахождения локального адреса по известному IP-адресу необходимо воспользоваться протоколом ARP.

Одношаговая маршрутизация обладает еще одним преимуществом — она позволяет сократить объем таблиц маршрутизации в конечных узлах и маршрутизаторах за счет использования в качестве номера сети назначения так называемого маршрута по умолчанию – default (0.0.0.0), который обычно занимает в таблице маршрутизации последнюю строку. Если в таблице маршрутизации есть такая запись, то все пакеты с номерами сетей, которые отсутствуют в таблице маршрутизации, передаются маршрутизатору, указанному в строке default. Поэтому маршрутизаторы часто хранят в своих таблицах ограниченную информацию о сетях интерсети, пересылая пакеты для остальных сетей в порт и маршрутизатор, используемые по умолчанию. Подразумевается, что маршрутизатор, используемый по умолчанию, передаст пакет на магистральную сеть, а маршрутизаторы, подключенные к магистрали, имеют полную информацию о составе интерсети.

Кроме маршрута default, в таблице маршрутизации могут встретиться два типа специальных записей — запись о специфичном для узла маршруте и запись об адресах сетей, непосредственно подключенных к портам маршрутизатора.

Специфичный для узла маршрут содержит вместо номера сети полный IP-адрес, то есть адрес, имеющий ненулевую информацию не только в поле номера сети, но и в поле номера узла. Предполагается, что для такого конечного узла маршрут должен выбираться не так, как для всех остальных узлов сети, к которой он относится. В случае, когда в таблице есть разные записи о продвижении пакетов для всей сети N и ее отдельного узла, имеющего адрес N,D, при поступлении пакета, адресованного узлу N,D, маршрутизатор отдаст предпочтение записи для N,D.

Записи в таблице маршрутизации, относящиеся к сетям, непосредственно подключенным к маршрутизатору, в поле «Метрика» содержат нули («подключено»).

Алгоритмы маршрутизации

Основные требования к алгоритмам маршрутизации:

  • точность;
  • простота;
  • надёжность;
  • стабильность;
  • справедливость;
  • оптимальность.

Существуют различные алгоритмы построения таблиц для одношаговой маршрутизации. Их можно разделить на три класса:

  • алгоритмы простой маршрутизации;
  • алгоритмы фиксированной маршрутизации;
  • алгоритмы адаптивной маршрутизации.

Независимо от алгоритма, используемого для построения таблицы маршрутизации, результат их работы имеет единый формат. За счет этого в одной и той же сети различные узлы могут строить таблицы маршрутизации по своим алгоритмам, а затем обмениваться между собой недостающими данными, так как форматы этих таблиц фиксированы. Поэтому маршрутизатор, работающий по алгоритму адаптивной маршрутизации, может снабдить конечный узел, применяющий алгоритм фиксированной маршрутизации, сведениями о пути к сети, о которой конечный узел ничего не знает.

Простая маршрутизация

Это способ маршрутизации не изменяющийся при изменении топологии и состоянии сети передачи данных (СПД).

Простая маршрутизация обеспечивается различными алгоритмами, типичными из которых являются следующие:

  • Случайная маршрутизация – это передача сообщения из узла в любом случайно выбранном направлении, за исключением направлений по которым сообщение поступило узел.
  • Лавинная маршрутизация – это передача сообщения из узла во всех направлениях, кроме направления по которому сообщение поступило в узел. Такая маршрутизация гарантирует малое время доставки пакета, засчет ухудшения пропускной способности.
  • Маршрутизация по предыдущему опыту – каждый пакет имеет счетчик числа пройденных узлов, в каждом узле связи анализируется счетчик и запоминается тот маршрут, который соответствует минимальному значению счетчика. Такой алгоритм позволяет приспосабливаться к изменению топологии сети, но процесс адаптации протекает медленно и неэффективно.

В целом, простая маршрутизация не обеспечивает направленную передачу пакета и имеет низкую эффективности. Основным ее достоинством является обеспечение устойчивой работы сети при выходе из строя различных частей сети.

Фиксированная маршрутизация

Этот алгоритм применяется в сетях с простой топологией связей и основан на ручном составлении таблицы маршрутизации администратором сети. Алгоритм часто эффективно работает также для магистралей крупных сетей, так как сама магистраль может иметь простую структуру с очевидными наилучшими путями следования пакетов в подсети, присоединенные к магистрали, выделяют следующие алгоритмы:

  • Однопутевая фиксированная маршрутизация – это когда между двумя абонентами устанавливается единственный путь. Сеть с такой маршрутизацией неустойчива к отказам и перегрузкам.
  • Многопутевая фиксированная маршрутизация – может быть установлено несколько возможных путей и вводится правило выбора пути. Эффективность такой маршрутизации падает при увеличении нагрузки. При отказе какой-либо линии связи необходимо менять таблицу маршрутизации, для этого в каждом узле связи храниться несколько таблиц.

Адаптивная маршрутизация

Это основной вид алгоритмов маршрутизации, применяющихся маршрутизаторами в современных сетях со сложной топологией. Адаптивная маршрутизация основана на том, что маршрутизаторы периодически обмениваются специальной топологической информацией об имеющихся в интерсети сетях, а также о связях между маршрутизаторами. Обычно учитывается не только топология связей, но и их пропускная способность и состояние.

Адаптивные протоколы позволяют всем маршрутизаторам собирать информацию о топологии связей в сети, оперативно отрабатывая все изменения конфигурации связей. Эти протоколы имеют распределенный характер, который выражается в том, что в сети отсутствуют какие-либо выделенные маршрутизаторы, которые бы собирали и обобщали топологическую информацию: эта работа распределена между всеми маршрутизаторами, выделяют следующие алгоритмы:

  • Локальная адаптивная маршрутизация – каждый узел содержит информацию о состоянии линии связи, длины очереди и таблицу маршрутизации.
  • Глобальная адаптивная маршрутизация – основана на использовании информации получаемой от соседних узлов. Для этого каждый узел содержит таблицу маршрутизации, в которой указано время прохождения сообщений. На основе информации, получаемой из соседних узлов, значение таблицы пересчитывается с учетом длины очереди в самом узле.
  • Централизованная адаптивная маршрутизация – существует некоторый центральный узел, который занимается сбором информации о состоянии сети. Этот центр формирует управляющие пакеты, содержащие таблицы маршрутизации и рассылает их в узлы связи.
  • Гибридная адаптивная маршрутизация – основана на использовании таблицы периодически рассылаемой центром и на анализе длины очереди с самом узле.

Показатели алгоритмов (метрики)

Маршрутные таблицы содержат информацию, которую используют программы коммутации для выбора наилучшего маршрута. Чем характеризуется построение маршрутных таблиц? Какова особенность природы информации, которую они содержат? В данном разделе, посвященном показателям алгоритмов, сделана попытка ответить на вопрос о том, каким образом алгоритм определяет предпочтительность одного маршрута по сравнению с другими.

В алгоритмах маршрутизации используется множество различных показателей. Сложные алгоритмы маршрутизации при выборе маршрута могут базироваться на множестве показателей, комбинируя их таким образом, что в результате получается один гибридный показатель. Ниже перечислены показатели, которые используются в алгоритмах маршрутизации:

  • Длина маршрута.
  • Надежность.
  • Задержка.
  • Ширина полосы пропускания.

Длина маршрута

Длина маршрута является наиболее общим показателем маршрутизации. Некоторые протоколы маршрутизации позволяют администраторам сети назначать произвольные цены на каждый канал сети. В этом случае длиной тракта является сумма расходов, связанных с каждым каналом, который был траверсирован. Другие протоколы маршрутизации определяют «количество пересылок» (количество хопов), т. е. показатель, характеризующий число проходов, которые пакет должен совершить на пути от источника до пункта назначения через элементы объединения сетей (такие как маршрутизаторы).

Надежность

Надежность, в контексте алгоритмов маршрутизации, относится к надежности каждого канала сети (обычно описываемой в терминах соотношения бит/ошибка). Некоторые каналы сети могут отказывать чаще, чем другие. Отказы одних каналов сети могут быть устранены легче или быстрее, чем отказы других каналов. При назначении оценок надежности могут быть приняты в расчет любые факторы надежности. Оценки надежности обычно назначаются каналам сети администраторами. Как правило, это произвольные цифровые величины.

Задержка

Под задержкой маршрутизации обычно понимают отрезок времени, необходимый для передвижения пакета от источника до пункта назначения через объединенную сеть. Задержка зависит от многих факторов, включая полосу пропускания промежуточных каналов сети, очереди в порт каждого маршрутизатора на пути передвижения пакета, перегруженность сети на всех промежуточных каналах сети и физическое расстояние, на которое необходимо переместить пакет. Т. к. здесь имеет место конгломерация нескольких важных переменных, задержка является наиболее общим и полезным показателем.

Полоса пропускания

Полоса пропускания относится к имеющейся мощности трафика какого-либо канала. При прочих равных показателях, канал Ethernet 10 Mbps предпочтителен любой арендованной линии с полосой пропускания 64 Кбайт/с. Хотя полоса пропускания является оценкой максимально достижимой пропускной способности канала, маршруты, проходящие через каналы с большей полосой пропускания, не обязательно будут лучше маршрутов, проходящих через менее быстродействующие каналы.

Маршрутизация. Операционная система UNIX

Маршрутизация

Сетевая подсистема предназначена для работы в коммуникационной среде, представляющей собой набор сетевых сегментов, связанных между собой. Связь между отдельными сегментами достигается путем подключения их к хостам, имеющим несколько различных сетевых интерфейсов, как показано на рис. 6.24. Такие хосты при необходимости выполняют передачу данных от одного сегмента к другому (forwarding).[83] Для сетей пакетной коммутации, о которых идет речь, выполнение этой задачи непосредственно связано с выбором маршрута прохождения пакетов данных (routing). Для этого система хранит таблицы маршрутизации, которые используются протоколами сетевого уровня (например, IP) для выбора требуемого интерфейса для передачи пакета адресату.

Рис. 6.24. Коммуникационная среда UNIX (internetwork)

Маршрутизационная информация хранится в виде двух таблиц, одна из которых предназначена для маршрутов к хостам, а другая — для маршрутов к сетям. Такой подход позволяет использовать универсальные механизмы определения маршрута как для сетей с разделяемой средой передачи (например, Ethernet), так и для сетей с каналами типа точка-точка. Например, для доставки пакета удаленному хосту, подключенному к сети первого типа, достаточно знать адрес этой сети, в то время как для каналов точка-точка необходимо явно задать адрес интерфейса противоположного конца канала.[84]


При определении маршрута модуль сетевого протокола (IP) сначала просматривает элементы таблицы для хостов, а затем для сетей. Если оба поиска не дают результата, используется маршрут по умолчанию (если такой установлен), определенный как маршрут в сеть с адресом 0. Обычно используется первый найденный маршрут. Таким образом, порядок поиска обеспечивает приоритетность маршрутов к хостам по отношению к маршрутам к сетям, что естественно, поскольку первые представлены более конкретными адресами.

Каждый элемент таблицы маршрутизации, показанный на рис. 6.25, содержит адрес получателя (это может быть адрес сети получателя или адрес конкретного хоста). Это значение хранится в поле rt_dst. Следующее поле, rt_gateway, определяет следующий шлюз, которому необходимо направить пакет, чтобы последний в конечном итоге достиг адресата. Поле rt_flags определяет тип маршрута (к хосту или к сети), а также его состояние. В поле rt_use хранится число переданных по данному маршруту пакетов, a rt_refcnt определяет использование маршрута сетевыми процессами (виртуальными каналами). Наконец, поле rt_ifp адресует сетевой интерфейс, которому необходимо направить пакет для дальнейшей передачи по данному маршруту.

Рис. 6.25. Элемент таблицы маршрутизации

Различают не только маршруты к хостам и сетям, но также маршруты прямые (direct) и косвенные (indirect). Первое различие определяет критерий сравнения адреса получателя пакета с полем rt_dst элемента таблицы маршрутизации. Если маршрут к сети, то сравнивается только сетевая часть адреса, в противном случае требуется полное совпадение адресов.

Определение маршрута как прямого или косвенного зависит от того, имеется ли непосредственная связь между получателем, указанным в поле rt_dst, и сетевым интерфейсом, обслуживающим данный маршрут. Например, маршрут в сеть, непосредственно подключенную к сетевому интерфейсу, является прямым. Напротив, маршрут по умолчанию является косвенным маршрутом, поскольку всегда адресует получателя, расположенного вне непосредственно доступных сетевых сегментов. Эта информация необходима при формировании кадра уровня канала данных. Если пакет адресован хосту или сети, которые непосредственно не подключены к сетевому интерфейсу, то, хотя сетевой адрес этого пакета будет равен сетевому адресу фактического получателя данных, заголовок уровня канала данных будет адресовать соседний шлюз, используемый для дальнейшей передачи пакета. Если пакет не выходит за пределы непосредственно подключенной сети, адреса и сетевого уровня и уровня канала будут совпадать с соответствующими адресами фактического получателя.

Данный аспект проиллюстрирован на рис. 6.26. Здесь мы рассмотрели процесс передачи IP-датаграммы хосту, расположенному в удаленном сетевом сегменте Ethernet. Поскольку доставка датаграммы предполагает использование промежуточного шлюза, передача данных на канальном уровне требует соответствующей адресации: на первом «перегоне» в качестве адреса получателя используется МАС-адрес шлюза, и только затем — МАС-адрес фактического адресата.

Рис. 6.26. Инкапсуляция пакетов для косвенных маршрутов

На то, что маршрут является косвенным, указывает флаг RTF_GATEWAY элемента таблицы маршрутов. В этом случае MAC-адрес получателя при формировании кадра канального уровня, будет определяться исходя из сетевого адреса шлюза, хранящегося в поле rt_gateway.[85]

Модуль протокола имеет возможность доступа к маршрутизационной информации с помощью трех функций: rtalloc() для получения маршрута, rtfree() для его освобождения и rtredirect() для обработки управляющих сообщений о перенаправлении маршрута (ICMP REDIRECT).

Функция rtalloc() позволяет модулю протокола определить маршрут к требуемому адресату. В результате модуль размещает структуру route, имеющую следующие поля:

struct rtentry *ro_rt
Указатель на соответствующий элемент таблицы маршрутизации

struct sockaddr ro_dst
Адрес получателя данных

Возвращаемый функцией rtalloc() маршрут может быть освобожден с помощью функции rtfree() (это не означает, что маршрут будет удален из таблицы маршрутизации). Время жизни маршрута зависит от протокола верхнего уровня. Например, модуль протокола TCP хранит маршрут на протяжении жизни виртуального канала.

Функция rtredirect() обычно вызывается модулем протокола в ответ на получение от соседних шлюзов управляющих сообщений о перенаправлении маршрута.[86] Шлюз генерирует такое сообщение в случае, когда обнаружен более предпочтительный маршрут для передаваемого пакета. Например, если хосты А и В находятся в одной и той же сети, и хост А направляет пакеты В через шлюз С, последний отправит А сообщение о перенаправлении маршрута, информирующее, что А в дальнейшем должен посылать данные В непосредственно. Этот процесс показан на рис. 6.27.

Рис. 6.27. Перенаправление маршрутов

Данная возможность может использоваться для упрощения процедуры формирования таблицы маршрутизации. Например, рабочие станции могут хранить только маршрут по умолчанию (в сеть 0), адресующий соседний шлюз. При передаче данных хостам той же сети, что и источник, шлюз будет информировать последний о перенаправлении маршрутов, позволяя тем самым заполнить элементы маршрутизационной таблицы.

Функция rtredirect() вызывается с параметрами, указывающими на адрес получателя, новый адрес шлюза, который необходимо миновать для достижения адресата, а также источник перенаправления маршрута. Заметим, что сообщения о перенаправлении маршрута принимаются только от текущего шлюза для данного получателя. Если существует маршрут, отличный от маршрута по умолчанию, то для него изменяется поле rt_gateway согласно указанному в сообщении новому адресу шлюза. В противном случае создается новая запись таблицы маршрутизации.

Вопросы определения маршрутов в UNIX являются прерогативой специальных прикладных процессов, а не ядра операционной системы. Ядро размещает и хранит необходимую маршрутизационную информацию, а также обеспечивает интерфейс доступа к этой информации. Процесс имеет возможность добавить или удалить маршрут с помощью системного вызова ioctl(2). Для добавления маршрута используется команда SIOCADDRT, а для удаления — SIOCDELRT.

В качестве процессов, отвечающих за заполнение таблиц маршрутизации и ее динамическое обновление, можно назвать стандартный демон routed(1M), использующий протокол RIP (Routing Information Protocol) для динамического определения и обновления маршрутов, а также демон gated(1M), поддерживающий работу нескольких протоколов обмена маршрутизационной информацией (RIP, OSPF, BGP).


Текущую таблицу маршрутизации можно увидеть, воспользовавшись командой netstat(1M):

$ netstat -rn

Routing Table:

Destination  Gateway       Flags Ref Use   Interface

———— ————- —— — —— ———

127.0.0.1    127.0.0.1     UH    0    5054 lo0

194.85.160.0 194.85.160.50 U     3   30926 le0

default      194.85.160.1  UG    0   47150 le0

Первая запись таблицы показывает маршрут для псевдохоста (localhost) логической сети операционной системы. Следующий маршрут адресует непосредственно подключенную к интерфейсу (его адрес 194.85.160.50) сеть (194.85.160.0). Наконец, последняя запись определяет маршрут по умолчанию, направляя все пакеты, адресованные получателям «внешнего мира», для которых наш хост не знает конкретных маршрутов, на шлюз с адресом 194.85.160.1, который обладает большей информацией о возможных маршрутах.







Данный текст является ознакомительным фрагментом.




Продолжение на ЛитРес








Анализ таблиц маршрутизации, или зачем ещё сетевому инженеру Python / Хабр

Hello Habr! Эта моя первая статья на Хабре, и родилась она из вопроса на одном из профессиональных форумов. Выглядел вопрос, несколько перефразируя, следующим образом:

  • Имеется набор текстовых файлов, содержащих вывод таблиц маршрутизации с различных сетевых устройств;
  • Каждый файл содержит информацию с одного устройства;
  • Устройства могут иметь различный формат вывода таблицы маршрутизации;
  • Необходимо на основании имеющихся данных по запросу выводить путь до произвольной подсети или IP-адреса с каждого из устройств;
  • Вывод должен включать на каждом участке пути информацию о записи из таблицы маршрутизации, по которой будет смаршрутизирован пакет.

Задача мне показалась мне интересной и перекликалась с одной из собственных сетевых утилит, планируемых в перспективе.Поэтому в свободный вечер, поразмыслив над ее решением, написал Proof-of-Concept реализацию на Python 2.7 под формат Cisco IOS, IOS-XE и ASA, отвечающую основным требованиям.

В статье попытаюсь воспроизвести ход мысли и прокомментировать основные моменты.

Материал рассчитан на людей, уже базово знакомых с основами сетей и Python.

Всем заинтересовавшимся добро пожаловать под кат!

Дисклеймер

Автор статьи, будучи сетевым инженером, не является профессиональным разработчиком и может пока не знать отличие интерфейса от абстрактного класса, но всегда открыт конструктивной критике и обратной связи. Замечания по коду, выбранным подходам и алгоритмам от более опытных коллег приветствуются.

Весь код в данной статье распространяется под лицензией MIT, в т.ч. приведён «как есть» и не дает гарантий никакого рода.

UPD: в 2021 при переводе этой статьи на английский решение было адаптировано под Python3 и более актуальную библиотеку, реализующую префиксное дерево.

Благодаря выбранному подходу к разделению логики это потребовало минимальных изменений в коде.

Уточнение условия и выбор алгоритма решения

С учетом вводной, задачу можно разделить на две основные части: парсинг исходных файлов с таблицами маршрутизации и непосредственный поиск пути по инициализированным данным.

Подобное разделение также позволит, при необходимости, делать импорт маршрутов с устройств для поиска пути произвольным образом (к примеру, по SNMP или REST API).

Для улучшения производительности инициализацию файлов имеет смысл делать однократно при запуске скрипта.

Парсер файлов должен распознавать формат таблиц маршрутизации из различных операционных систем. Далее будет рассмотрен вариант для Cisco IOS, IOS-XE и ASA для IPv4. Поддержка других форматов и IPv6 может быть добавлена позднее.

Как известно, выбор маршрута по таблице маршрутизации делается по принципу совпадения с префиксом наибольшей длины (longest prefix match).

В качестве одного из решений для быстрого поиска такого совпадения можно по исходным данным построить префиксное дерево. Так как ограничений по внешним зависимостям у нас нет, остановимся на готовом модуле SubnetTree.

На анализируемом участке сети потенциально могут быть петли маршрутизации, они должны детектироваться и не должны влиять на работу скрипта. Кроме того, на любом из узлов может не быть маршрута до искомой подсети. Это также следует учитывать.

При наличии VRF на устройстве таблицы маршрутизации из каждого инстанса должны быть сохранены в отдельных файлах, так как с точки зрения топологии они являются отдельными маршрутизаторами.

Ограничения по производительности железа для запуска скрипта, количеству и размеру анализируемых таблиц маршрутизации в условии не заявлены, но стоит иметь их в виду.

Специфика области применения подсказывает средний лимит в 1.000.000 записей в таблице маршрутизации на одно современное устройство. На роутере с BGP Full View по состоянию на июнь 2018 фактически может быть 724.000+ маршрутов.

По грубой оценке и результатам тестов на in-memory хранение и обработку каждого 1.000.000 префиксов потребуется около 500MB RAM. Таким образом средней производительности рабочая станция с 8GB RAM (2018 год все еще держим в уме) позволит проанализировать топологию с совокупной емкостью до 14-16.000.000 маршрутов. То есть сегмент из примерно 18-20 маршрутизаторов с full view на каждом.

Для большинства случаев этого вполне достаточно, а для больших (как ударение ни ставь) сетей нужно или разбивать анализ на сегменты, или переносить логику на out-of-memory базу данных.
640КБ хватит всем.Остановимся на in-memory варианте.

Парсинг исходных файлов и выбор структур данных

Файлы с таблицами маршрутизации вынесем в отдельную суб-директорию и сделаем ее переменной:

RT_DIRECTORY = "./routing_tables"

Для Cisco IOS и IOS-XE таблица маршрутизации может выглядеть примерно так:

show ip route

S* 0.0.0.0/0 [1/0] via 10.220.88.1
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.220.88.0/24 is directly connected, FastEthernet4
L 10.220.88.20/32 is directly connected, FastEthernet4
     1.0.0.0/32 is subnetted, 1 subnets
S       1.1.1.1 [1/0] via 212.0.0.1
                [1/0] via 192.168.0.1
D EX     10.1.198.0/24 [170/1683712] via 172.16.209.47, 1w2d, Vlan910
                       [170/1683712] via 172.16.60.33, 1w2d, Vlan60
                       [170/1683712] via 10.25.20.132, 1w2d, Vlan220
                       [170/1683712] via 10.25.20.9, 1w2d, Vlan20
     4.0.0.0/16 is subnetted, 1 subnets
O E2    4.4.0.0 [110/20] via 194.0.0.2, 00:02:00, FastEthernet0/0
     5.0.0.0/24 is subnetted, 1 subnets
D EX    5.5.5.0 [170/2297856] via 10.0.1.2, 00:12:01, Serial0/0
     6.0.0.0/16 is subnetted, 1 subnets
B       6.6.0.0 [200/0] via 195.0.0.1, 00:00:04
     172.16.0.0/26 is subnetted, 1 subnets
i L2    172.16.1.0 [115/10] via 10.0.1.2, Serial0/0
     172.20.0.0/32 is subnetted, 3 subnets
O       172.20.1.1 [110/11] via 194.0.0.2, 00:05:45, FastEthernet0/0
O       172.20.3.1 [110/11] via 194.0.0.2, 00:05:45, FastEthernet0/0
O       172.20.2.1 [110/11] via 194.0.0.2, 00:05:45, FastEthernet0/0
     10.0.0.0/8 is variably subnetted, 5 subnets, 3 masks
C       10.0.1.0/24 is directly connected, Serial0/0
D       10.0.5.0/26 [90/2297856] via 10.0.1.2, 00:12:03, Serial0/0
D       10.0.5.64/26 [90/2297856] via 10.0.1.2, 00:12:03, Serial0/0
D       10.0.5.128/26 [90/2297856] via 10.0.1.2, 00:12:03, Serial0/0
D       10.0.5.192/27 [90/2297856] via 10.0.1.2, 00:12:03, Serial0/0
     192.168.0.0/32 is subnetted, 1 subnets
D       192.168.0.1 [90/2297856] via 10.0.1.2, 00:12:03, Serial0/0
O IA 195.0.0.0/24 [110/11] via 194.0.0.2, 00:05:45, FastEthernet0/0
O E2 212.0.0.0/8 [110/20] via 194.0.0.2, 00:05:35, FastEthernet0/0
C    194.0.0.0/16 is directly connected, FastEthernet0/0

В Cisco ASA формат схожий, но, вместо длин префиксов, отображается маска подсети в десятичном представлении:

show route

S    10.1.1.0 255.255.255.0 [3/0] via 10.86.194.1, outside
C    10.86.194.0 255.255.254.0 is directly connected, outside
S*   0.0.0.0 0.0.0.0 [1/0] via 10.86.194.1, outside

Как видно из примера, маршруты, несмотря на большое разнообразие, имеют одинаковую и предсказуемую структуру, а значит могут быть обработаны регулярными выражениями.(\S\S?\*?\s?\S?\S?)’
+ ‘\s+’
+ ‘((?P<subnet>\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)’
+ ‘\s?’
+ ‘(?P<maskOrPrefixLength>(\/\d\d?)?’
+’|(\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)?))’
+ ‘\s*’
+ ‘(?P<viaPortion>(?:\n?\s+(\[\d\d?\d?\/\d+\])\s+’
+ ‘via\s+(\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)(.*)\n?)+)’,
re.MULTILINE
)

Оба выражения содержат именованные группы (named groups) для удобства извлечения данных при поиске совпадений и поддержания кода.

В частности, из каждого маршрута нужно получить префикс (группы subnet/interface и maskOrPrefixLength) и информацию о том, куда он ведёт (группы viaPortion/interface).

Так как выражения учитывают несколько вариантов представления префикса, в группе maskOrPrefixLength может быть как маска подсети, так и длина префикса. Будем приводить это к единому формату при обработке, остановимся на длине префикса:

def convert_netmask_to_prefix_length(mask_or_pref):
    if not mask_or_pref:
        return ""
    if re." + REGEXP_IPv4_STR + "(\/\d\d?)?$")

Теперь перенесем представление нашей сети на структуры данных Python.

Полученные в результате парсинга таблиц маршрутизации префиксы будем использовать в качестве ключей в префиксном дереве. Объект префиксного дерева наследуем из модуля SubnetTree.

Результат поиска по префиксу в дереве будет возвращать список из списка next-hop’ов и полного текстового представления соответствующего маршрута из оригинального файла.

Дополнительно создадим лист локальных интерфейсов.

Каждый маршрутизатор представим словарем, в который поместим вышеперечисленные данные.

# Example data structures
route_tree = SubnetTree.SubnetTree()
route_tree[’subnet’] = ((next_hop_1, next_hop_n), raw_route_string)
interface_list = ((interface_1, ip_address_1), (interface_n, ip_address_n))
connected_networks = ((interface_1, subnet_1), (interface_n, subnet_n))
router = {
    ‘routing_table’: route_tree,
    ‘interface_list’: interface_list,
    ‘connected_networks’: connected_networks,
}

Запрос к таблице маршрутизации вынесем в отдельную функцию:

def route_lookup(destination, router):
    if destination in router['routing_table']:
        return router['routing_table'][destination]
    else:
        return (None, None)

Каждому маршрутизатору поставим в соответствие некоторый уникальный идентификатор. Назначать его можно множеством путей, в текущем примере будет допустимо и наглядно делать это на основе имени оригинального файла.

В результате будем добавлять получившиеся объекты маршрутизаторов в словарь с ключом в виде этого уникального идентификатора.

ROUTERS = {
    ‘router_id_1’: router_1,
    ‘router_id_n’: router_n,
}

Нам также необходим механизм для поиска следующего маршрутизатора по IP-адресу next-hop’а, полученного из таблицы маршрутизации во время поиска пути. Создадим для этого еще одно глобальное префиксное дерево с ключами в виде IP-адресов всех известных маршрутизаторов в топологии и возвращаемым по ним листам с идентификатором маршрутизатора и типом интерфейса.

# Example
GLOBAL_INTERFACE_TREE = SubnetTree.SubnetTree()
GLOBAL_INTERFACE_TREE[‘ip_address’] = (router_id, interface_type)

# Returns RouterID by Interface IP address which it belongs to.
def get_rid_by_interface_ip(interface_ip):
    if interface_ip in GLOBAL_INTERFACE_TREE:
        return GLOBAL_INTERFACE_TREE[interface_ip][0]

Соберём парсер для формата IOS/IOS-XE/ASA воедино. На входе передаем ему таблицу маршрутизации в текстовом виде, на выходе получаем словарь router в заданном выше формате.

def parse_show_ip_route_ios_like(raw_routing_table):
    router = {}
    route_tree = SubnetTree.SubnetTree()
    interface_list = []
    # Parse Local and Connected route strings in text.
    for raw_route_string in REGEXP_ROUTE_LOCAL_CONNECTED.finditer(raw_routing_table):
        subnet = (
            raw_route_string.group('ipaddress') 
          + convert_netmask_to_prefix_length(
                raw_route_string.group('maskOrPrefixLength')
            )
        )
        interface = raw_route_string.group('interface')
        route_tree[subnet] = ((interface,), raw_route_string.group(0))
        if raw_route_string.group('routeType') == 'L':
            interface_list.append((interface, subnet,))
    if not interface_list:
        print('Failed to find routing table entries in given output')
        return None
    # parse static and dynamic route strings in text
    for raw_route_string in REGEXP_ROUTE.finditer(raw_routing_table):
        subnet = (
            raw_route_string.group('subnet') 
          + convert_netmask_to_prefix_length(
                raw_route_string.group('maskOrPrefixLength')
            )
        )
        via_portion =  raw_route_string.group('viaPortion')
        next_hops= []
        if via_portion.count('via') > 1:
            for line in via_portion.splitlines():
                if line:
                    next_hops.append(REGEXP_VIA_PORTION.match(line).group(1))
        else:
            next_hops.append(REGEXP_VIA_PORTION.match(via_portion).group(1))
        route_tree[subnet] = (next_hops, raw_route_string.group(0))
    router = {
        'routing_table': route_tree,
        'interface_list': interface_list,
    }
    return router

Обернём парсер в еще одну функцию для возможности последующего добавления парсеров других форматов (например, NX-OS):

def parse_text_routing_table(raw_routing_table):
    """
    Parser functions wrapper.
    Add additional parsers for alternative routing table syntaxes here.
    """
    router = parse_show_ip_route_ios_like(raw_routing_table)
    if router:
        return router

Итак, остаётся пройтись по текстовым файлам в директории:

def do_parse_directory(rt_directory):
    new_routers = {}
    if not os.path.isdir(rt_directory):
        print("{} directory does not exist.".format(rt_directory)
            + "Check rt_directory variable value."
        )
        return None
    start_time = time()
    print("Initializing files...")
    for FILENAME in os.listdir(rt_directory):
        if FILENAME.endswith('.txt'):
            file_init_start_time = time()
            with open(os.path.join(rt_directory, FILENAME), 'r') as f:
                print ('Opening {}'.format(FILENAME))
                raw_table = f.read()
                new_router = parse_text_routing_table(raw_table)
                router_id = FILENAME.replace('.txt', '')
                if new_router:
                    new_routers[router_id] = new_router
                    if new_router['interface_list']:
                        for iface, addr in new_router['interface_list']:
                            GLOBAL_INTERFACE_TREE[addr]= (router_id, iface,)
                else:
                    print ('Failed to parse ' + FILENAME)
            print (FILENAME + " parsing has been completed in %s sec".format(
                   "{:.3f}".format(time() - file_init_start_time))
            )
    else:
        if not new_routers:
            print ("Could not find any valid .txt files with routing tables"
                 + " in {} directory".format(rt_directory)
            )
        else:
            print ("\nAll files have been initialized"
                 + " in {} sec".format("{:.3f}".format(time() - start_time))
            )
            return new_routers

И, разложив все файлы в упорядоченные структуры данных, можно приниматься за вторую часть задачи.

Поиск пути по обработанным таблицам маршрутизации

В целом на этом этапе задача сводится к анализу графа сети. Маршрутизаторы являются вершинами графа, L3-линки между ними — ребрами.

Словарь ROUTERS хранит в ключах идентификаторы маршрутизаторов, а в соответствующих им значениях — ссылки на IP-адреса next-hop’ов. То есть в совокупности с GLOBAL_INTERFACE_TREE, возвращающему по IP-адресу идентификаторы маршрутизаторов, для каждой искомой подсети он определяет таблицу смежности графа.

Если же провести параллели с реальными маршрутизаторами, для поиска пути нужно воспроизвести высокоуровневую логику их работы (абстрагируясь от RIB/FIB/ASIC и прочих оптимизаций) при обработке пакета от лукапа в таблицу маршрутизации до ARP-запроса (или router_id в нашем случае) и маршрутизации или дропа пакета, в зависимости от результата.

Реализуем рекурсивный поиск пути по маршрутизаторам. Каждый участок пути будет представлен листом из router_id и raw_route_string — исходной строки маршрута на нем. Текущий путь будем записывать в кортеж path. При достижении точки назначения, отсутствии маршрута в таблице маршрутизации или next-hop’а в изученной топологии текущий path будет добавляться в результирующий кортеж paths, который и возвратит функция.

def trace_route(source_router_id, target_ip, path=[]):
    if not source_router_id:
        return [path + [(None, None)]]
    current_router = ROUTERS[source_router_id]
    next_hop, raw_route_string = route_lookup(target_ip, current_router)
    path = path + [(source_router_id, raw_route_string)]
    paths = []
    if next_hop:
        if nexthop_is_local(next_hop[0]):
            return [path]
        for nh in next_hop:
            next_hop_rid = get_rid_by_interface_ip(nh)
            if not next_hop_rid in [r[0] for r in path]:
                inner_path = trace_route(next_hop_rid, target_ip, path)
                for p in inner_path:
                    paths.append(p)
            else:
                path = path + [(next_hop_rid+"<<LOOP DETECTED", None)]
                return [path]
    else:
        return [path]
    return paths

def nexthop_is_local(next_hop):
    interface_types = ('Eth', 'Fast', 'Gig', 'Ten', 'Port',
                      'Serial', 'Vlan', 'Tunn', 'Loop', 'Null'
    )
    for type in interface_types:
        if next_hop.startswith(type):
            return True

Добавим функцию для запуска поиска в интерактивном режиме после инициализации текстовых файлов:

def do_user_interactive_search():
    while True:
        print ('\n')
        target_subnet = raw_input('Enter Target Subnet or Host: ')
        if not target_subnet:
            continue
        if not REGEXP_INPUT_IPv4.match(target_subnet.replace(' ', '')):
            print ("incorrect input")
            continue
        lookup_start_time = time()
        for rtr in ROUTERS.keys():
            subsearch_start_time = time()
            result = trace_route(rtr, target_subnet)
            if result:
                print ("\n")
                print ("PATHS TO {} FROM {}".format(target_subnet, rtr))
                n = 1
                print ('Detailed info:')
                for r in result:
                    print ("Path {}:".format(n))
                    print ([h[0] for h in r])
                    for hop in r:
                        print ("ROUTER: {}".format(hop[0]))
                        print ("Matched route string: \n{}".format(hop[1]))
                    else:
                        print ('\n')
                    n+=1
                else:
                    print ("Path search on {} has been completed in {} sec".format(
                           rtr, "{:.3f}".format(time() - subsearch_start_time))
                    )
        else:
            print ("\nFull search has been completed in {} sec".format(
                   "{:.3f}".format(time() - lookup_start_time),)
            )

Финальный штрих для объединения двух частей:

def main():
    global ROUTERS
    ROUTERS = do_parse_directory(RT_DIRECTORY)
    if ROUTERS:
        do_user_interactive_search()

if __name__ == "__main__":
    main() 

И имеем готовый к работе код.(\S\S?\*?\s?\S?\S?)’
+ ‘\s+’
+ ‘((?P<subnet>\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)’
+ ‘\s?’
+ ‘(?P<maskOrPrefixLength>(\/\d\d?)?’
+’|(\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)?))’
+ ‘\s*’
+ ‘(?P<viaPortion>(?:\n?\s+(\[\d\d?\d?\/\d+\])\s+’
+ ‘via\s+(\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?)(.*)\n?)+)’,
re.MULTILINE
)

# Route string VIA portion matching.
REGEXP_VIA_PORTION = re.compile(
‘.*via\s+(\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?).*’
)

# Store for ‘router’ objects generated from input routing table files.
# Each file is represented by single ‘router’ object.
# Router is referenced by Router ID (RID).
# RID is filename by default.
# Format:
#
# ROUTERS = {
# ‘RID1’: {‘routing_table’: {}, ‘interface_list’: ()},
# ‘RID_N’: {‘routing_table’: {}, ‘interface_list’: ()},
# }
#
ROUTERS = {}

# Global search tree for Interface IP address to Router ID (RID) resolving.
# Stores Interface IP addresses as keys.
# Returns (RID, interfaceID) list.
# Interface IP addresses SHOULD be globally unique across inspected topology.
GLOBAL_INTERFACE_TREE = SubnetTree.SubnetTree()

def parse_show_ip_route_ios_like(raw_routing_table):
«»»
Parser for routing table text output.
Compatible with both Cisco IOS(IOS-XE) ‘show ip route’
and Cisco ASA ‘show route’ output format.
Processes input text file and writes into Python data structures.
Builds internal SubnetTree search tree in ‘route_tree’.
Generates local interface list for router in ‘interface_list’
Returns ‘router’ dictionary object with parsed data.
«»»
router = {}
route_tree = SubnetTree.SubnetTree()
interface_list = []
# Parse Local and Connected route strings in text.
for raw_route_string in REGEXP_ROUTE_LOCAL_CONNECTED.finditer(raw_routing_table):
subnet = (
raw_route_string.group(‘ipaddress’)
+ convert_netmask_to_prefix_length(
raw_route_string.group(‘maskOrPrefixLength’)
)
)
interface = raw_route_string.group(‘interface’)
route_tree[subnet] = ((interface,), raw_route_string.group(0))
if raw_route_string.group(‘routeType’) == ‘L’:
interface_list.append((interface, subnet,))
if not interface_list:
print(‘Failed to find routing table entries in given output’)
return None
# parse static and dynamic route strings in text
for raw_route_string in REGEXP_ROUTE.finditer(raw_routing_table):
subnet = (
raw_route_string.group(‘subnet’)
+ convert_netmask_to_prefix_length(
raw_route_string.group(‘maskOrPrefixLength’)
)
)
via_portion = raw_route_string.group(‘viaPortion’)
next_hops= []
if via_portion.count(‘via’) > 1:
for line in via_portion.splitlines():
if line:
next_hops.append(REGEXP_VIA_PORTION.match(line).group(1))
else:
next_hops.append(REGEXP_VIA_PORTION.match(via_portion).group(1))
route_tree[subnet] = (next_hops, raw_route_string.\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?$»,
mask_or_pref):
return (
«/»
+ str(sum([bin(int(x)).count(«1») for x in mask_or_pref.split(«.»)]))
)
return «»

def route_lookup(destination, router):
«»»
Performs route_tree lookup in passed router object
for passed destination subnet.
Returns list of next_hops with original route strings or (None,None)
depending on lookup result.
«»»
if destination in router[‘routing_table’]:
return router[‘routing_table’][destination]
else:
return (None, None)

def get_rid_by_interface_ip(interface_ip):
«»»Returns RouterID by Interface IP address which it belongs to.»»»
if interface_ip in GLOBAL_INTERFACE_TREE:
return GLOBAL_INTERFACE_TREE[interface_ip][0]

def nexthop_is_local(next_hop):
«»»
Check if nexthop points to local interface.
Will be True for Connected and Local route strings on Cisco devices.
«»»
interface_types = (‘Eth’, ‘Fast’, ‘Gig’, ‘Ten’, ‘Port’,
‘Serial’, ‘Vlan’, ‘Tunn’, ‘Loop’, ‘Null’
)
for type in interface_types:
if next_hop.startswith(type):
return True

def trace_route(source_router_id, target_ip, path=[]):
«»»
Performs recursive path search from source Router ID (RID) to target subnet.
Returns tuple of path tuples.
Each path tuple contains a sequence of Router IDs with matched route strings.
Multiple paths are supported.
«»»
if not source_router_id:
return [path + [(None, None)]]
current_router = ROUTERS[source_router_id]
next_hop, raw_route_string = route_lookup(target_ip, current_router)
path = path + [(source_router_id, raw_route_string)]
paths = []
if next_hop:
if nexthop_is_local(next_hop[0]):
return [path]
for nh in next_hop:
next_hop_rid = get_rid_by_interface_ip(nh)
if not next_hop_rid in [r[0] for r in path]:
inner_path = trace_route(next_hop_rid, target_ip, path)
for p in inner_path:
paths.append(p)
else:
path = path + [(next_hop_rid+»<<LOOP DETECTED», None)]
return [path]
else:
return [path]
return paths

def do_parse_directory(rt_directory):
«»»
Go through specified directory and parse all .txt files.
Generate router objects based on parse result if any.
Populate new_routers with those router objects.
Default key for each router object is FILENAME.
Return new_routers.
«»»
new_routers = {}
if not os.path.isdir(rt_directory):
print(«{} directory does not exist.».format(rt_directory)
+ «Check rt_directory variable value.»
)
return None
start_time = time()
print(«Initializing files…»)
for FILENAME in os.listdir(rt_directory):
if FILENAME.endswith(‘.txt’):
file_init_start_time = time()
with open(os.path.join(rt_directory, FILENAME), ‘r’) as f:
print (‘Opening {}’.format(FILENAME))
raw_table = f.read()
new_router = parse_text_routing_table(raw_table)
router_id = FILENAME.replace(‘.txt’, »)
if new_router:
new_routers[router_id] = new_router
if new_router[‘interface_list’]:
for iface, addr in new_router[‘interface_list’]:
GLOBAL_INTERFACE_TREE[addr]= (router_id, iface,)
else:
print (‘Failed to parse ‘ + FILENAME)
print (FILENAME + » parsing has been completed in {} sec».format(
«{:.3f}».format(time() — file_init_start_time))
)
else:
if not new_routers:
print («Could not find any valid .txt files with routing tables»
+ » in {} directory».format(rt_directory)
)
else:
print («\nAll files have been initialized»
+ » in {} sec».format(«{:.3f}».format(time() — start_time))
)
return new_routers

def do_user_interactive_search():
«»»
Provides interactive search dialog for user.
Asks user for target subnet or host in CIDR notation.
Validates input. Prints error and goes back to start for invalid input.
Executes path search to given target from each router in global ROUTERS.
Prints formatted path search result.
Goes back to start.
«»»
while True:
print (‘\n’)
target_subnet = raw_input(‘Enter Target Subnet or Host: ‘)
if not target_subnet:
continue
if not REGEXP_INPUT_IPv4.match(target_subnet.replace(‘ ‘, »)):
print («incorrect input»)
continue
lookup_start_time = time()
for rtr in ROUTERS.keys():
subsearch_start_time = time()
result = trace_route(rtr, target_subnet)
if result:
print («\n»)
print («PATHS TO {} FROM {}».format(target_subnet, rtr))
n = 1
print (‘Detailed info:’)
for r in result:
print («Path {}:».format(n))
print ([h[0] for h in r])
for hop in r:
print («ROUTER: {}».format(hop[0]))
print («Matched route string: \n{}».format(hop[1]))
else:
print (‘\n’)
n+=1
else:
print («Path search on {} has been completed in {} sec».format(
rtr, «{:.3f}».format(time() — subsearch_start_time))
)
else:
print («\nFull search has been completed in {} sec».format(
«{:.3f}».format(time() — lookup_start_time),)
)

def main():
global ROUTERS
ROUTERS = do_parse_directory(RT_DIRECTORY)
if ROUTERS:
do_user_interactive_search()

if __name__ == «__main__»:
main()

Проверка работы скрипта

Вооружимся небольшой абстрактной топологией из четырех Cisco CSR-1000v:

Они соединены попарно через интерфейсы GigabitEthernet 2 и 3. Между ними установлено соседство по EIGRP, через который анонсируются все Connected сети, включая сети на Loopback интерфейсах за каждым маршрутизатором.

Между csr1000v-01 и csr1000v-04 дополнительно поднято два GRE-туннеля, через удаленные IP-адреса которых прописаны статические маршруты на сеть 10.0.0.0/8 для тестирования петли маршрутизации.

csr1000v-01#show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

S     10.0.0.0/8 [1/0] via 192.168.142.2
                 [1/0] via 192.168.141.2
      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        172.16.114.0/24 is directly connected, GigabitEthernet2
L        172.16.114.5/32 is directly connected, GigabitEthernet2
      192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.2.0/24 is directly connected, GigabitEthernet1
L        192.168.2.201/32 is directly connected, GigabitEthernet1
      192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.12.0/24 is directly connected, GigabitEthernet2
L        192.168.12.201/32 is directly connected, GigabitEthernet2
      192.168.13.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.13.0/24 is directly connected, GigabitEthernet3
L        192.168.13.201/32 is directly connected, GigabitEthernet3
D     192.168.24.0/24 [90/3072] via 192.168.12.202, 00:06:56, GigabitEthernet2
D     192.168.34.0/24 [90/3072] via 192.168.13.203, 00:06:56, GigabitEthernet3
      192.168.141.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.141.0/30 is directly connected, Tunnel141
L        192.168.141.1/32 is directly connected, Tunnel141
      192.168.142.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.142.0/30 is directly connected, Tunnel142
L        192.168.142.1/32 is directly connected, Tunnel142
      192.168.201.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.201.0/24 is directly connected, Loopback201
L        192.168.201.201/32 is directly connected, Loopback201
D     192.168.202.0/24 
           [90/130816] via 192.168.12.202, 00:05:44, GigabitEthernet2
D     192.168.203.0/24 
           [90/130816] via 192.168.13.203, 00:06:22, GigabitEthernet3
D     192.168.204.0/24 
           [90/131072] via 192.168.13.203, 00:06:56, GigabitEthernet3
           [90/131072] via 192.168.12.202, 00:06:56, GigabitEthernet2

csr1000v-02#show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.2.0/24 is directly connected, GigabitEthernet1
L        192.168.2.202/32 is directly connected, GigabitEthernet1
      192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.12.0/24 is directly connected, GigabitEthernet2
L        192.168.12.202/32 is directly connected, GigabitEthernet2
D     192.168.13.0/24 [90/3072] via 192.168.12.201, 00:46:17, GigabitEthernet2
      192.168.24.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.24.0/24 is directly connected, GigabitEthernet3
L        192.168.24.202/32 is directly connected, GigabitEthernet3
D     192.168.34.0/24 [90/3072] via 192.168.24.204, 00:46:15, GigabitEthernet3
D     192.168.201.0/24 
           [90/130816] via 192.168.12.201, 00:36:59, GigabitEthernet2
      192.168.202.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.202.0/24 is directly connected, Loopback202
L        192.168.202.202/32 is directly connected, Loopback202
D     192.168.203.0/24 
           [90/131072] via 192.168.24.204, 00:06:31, GigabitEthernet3
           [90/131072] via 192.168.12.201, 00:06:31, GigabitEthernet2
D     192.168.204.0/24 
           [90/130816] via 192.168.24.204, 00:37:26, GigabitEthernet3

csr1000v-03#show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.2.0/24 is directly connected, GigabitEthernet1
L        192.168.2.203/32 is directly connected, GigabitEthernet1
D     192.168.12.0/24 [90/3072] via 192.168.13.201, 00:46:12, GigabitEthernet3
      192.168.13.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.13.0/24 is directly connected, GigabitEthernet3
L        192.168.13.203/32 is directly connected, GigabitEthernet3
D     192.168.24.0/24 [90/3072] via 192.168.34.204, 00:46:12, GigabitEthernet2
      192.168.34.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.34.0/24 is directly connected, GigabitEthernet2
L        192.168.34.203/32 is directly connected, GigabitEthernet2
D     192.168.201.0/24 
           [90/130816] via 192.168.13.201, 00:36:56, GigabitEthernet3
D     192.168.202.0/24 
           [90/131072] via 192.168.34.204, 00:05:51, GigabitEthernet2
           [90/131072] via 192.168.13.201, 00:05:51, GigabitEthernet3
      192.168.203.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.203.0/24 is directly connected, Loopback203
L        192.168.203.203/32 is directly connected, Loopback203
D     192.168.204.0/24 
           [90/130816] via 192.168.34.204, 00:37:22, GigabitEthernet2

csr1000v-04#show ip route

Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

S     10.0.0.0/8 [1/0] via 192.168.142.1
                 [1/0] via 192.168.141.1
      192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.2.0/24 is directly connected, GigabitEthernet1
L        192.168.2.204/32 is directly connected, GigabitEthernet1
D     192.168.12.0/24 [90/3072] via 192.168.24.202, 00:46:17, GigabitEthernet3
D     192.168.13.0/24 [90/3072] via 192.168.34.203, 00:46:19, GigabitEthernet2
      192.168.24.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.24.0/24 is directly connected, GigabitEthernet3
L        192.168.24.204/32 is directly connected, GigabitEthernet3
      192.168.34.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.34.0/24 is directly connected, GigabitEthernet2
L        192.168.34.204/32 is directly connected, GigabitEthernet2
      192.168.141.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.141.0/30 is directly connected, Tunnel141
L        192.168.141.2/32 is directly connected, Tunnel141
      192.168.142.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.142.0/30 is directly connected, Tunnel142
L        192.168.142.2/32 is directly connected, Tunnel142
D     192.168.201.0/24 
           [90/131072] via 192.168.34.203, 00:37:02, GigabitEthernet2
           [90/131072] via 192.168.24.202, 00:37:02, GigabitEthernet3
D     192.168.202.0/24 
           [90/130816] via 192.168.24.202, 00:05:57, GigabitEthernet3
D     192.168.203.0/24 
           [90/130816] via 192.168.34.203, 00:06:34, GigabitEthernet2
      192.168.204.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.204.0/24 is directly connected, Loopback204
L        192.168.204.204/32 is directly connected, Loopback204

Сохраним эти выводы show ip route в отдельные файлы в суб-директории ./routing_tables/ и запустим скрипт:

$ python2.7 traceRouteByShowIPRoute.py

$ python2.7 traceRouteByShowIPRoute.py
Initializing files...
Opening csr1000v-01.txt
csr1000v-01.txt parsing has been completed in 0.001 sec
Opening csr1000v-02.txt
csr1000v-02.txt parsing has been completed in 0.001 sec
Opening csr1000v-03.txt
csr1000v-03.txt parsing has been completed in 0.001 sec
Opening csr1000v-04.txt
csr1000v-04.txt parsing has been completed in 0.001 sec

All files have been initialized in 0.003 sec

Enter Target Subnet or Host:

Все файлы инициализированы, скрипт, как и ожидалось, запрашивает IP-адрес или подсеть для поиска пути до нее с каждого из маршрутизаторов.

Введем поочередно несколько вариантов и сверим полученный результат с информацией с самих маршрутизаторов.

Поиск пути до Loopback204 192.168.204.204 на csr1000v-04

Пути до этого IP-адреса должны быть со всех имеющихся маршрутизаторов.

Enter Target Subnet or Host: 192.168.204.204

Enter Target Subnet or Host: 192.168.204.204

PATHS TO 192.168.204.204 FROM csr1000v-04
Detailed info:
Path 1:
['csr1000v-04']
ROUTER: csr1000v-04
Matched route string: 
L        192.168.204.204/32 is directly connected, Loopback204

Path search on csr1000v-04 has been completed in 0.000 sec

PATHS TO 192.168.204.204 FROM csr1000v-03
Detailed info:
Path 1:
['csr1000v-03', 'csr1000v-04']
ROUTER: csr1000v-03
Matched route string: 
D     192.168.204.0/24 
           [90/130816] via 192.168.34.204, 00:37:22, GigabitEthernet2

ROUTER: csr1000v-04
Matched route string: 
L        192.168.204.204/32 is directly connected, Loopback204

Path search on csr1000v-03 has been completed in 0.000 sec

PATHS TO 192.168.204.204 FROM csr1000v-02
Detailed info:
Path 1:
['csr1000v-02', 'csr1000v-04']
ROUTER: csr1000v-02
Matched route string: 
D     192.168.204.0/24 
           [90/130816] via 192.168.24.204, 00:37:26, GigabitEthernet3
ROUTER: csr1000v-04
Matched route string: 
L        192.168.204.204/32 is directly connected, Loopback204

Path search on csr1000v-02 has been completed in 0.000 sec

PATHS TO 192.168.204.204 FROM csr1000v-01
Detailed info:
Path 1:
['csr1000v-01', 'csr1000v-03', 'csr1000v-04']
ROUTER: csr1000v-01
Matched route string: 
D     192.168.204.0/24 
           [90/131072] via 192.168.13.203, 00:06:56, GigabitEthernet3
           [90/131072] via 192.168.12.202, 00:06:56, GigabitEthernet2
ROUTER: csr1000v-03
Matched route string: 
D     192.168.204.0/24 
           [90/130816] via 192.168.34.204, 00:37:22, GigabitEthernet2

ROUTER: csr1000v-04
Matched route string: 
L        192.168.204.204/32 is directly connected, Loopback204

Path 2:
['csr1000v-01', 'csr1000v-02', 'csr1000v-04']
ROUTER: csr1000v-01
Matched route string: 
D     192.168.204.0/24 
           [90/131072] via 192.168.13.203, 00:06:56, GigabitEthernet3
           [90/131072] via 192.168.12.202, 00:06:56, GigabitEthernet2
ROUTER: csr1000v-02
Matched route string: 
D     192.168.204.0/24 
           [90/130816] via 192.168.24.204, 00:37:26, GigabitEthernet3
ROUTER: csr1000v-04
Matched route string: 
L        192.168.204.204/32 is directly connected, Loopback204

Path search on csr1000v-01 has been completed in 0.000 sec

Full search has been completed in 0.001 sec

Все пути найдены, маршруты выведены. Сверимся с маршрутизаторами:

csr1000v-01#show ip route 192.168.204.204

csr1000v-01#show ip route 192.168.204.204
Routing entry for 192.168.204.0/24
  Known via "eigrp 200", distance 90, metric 131072, type internal
  Redistributing via eigrp 200
  Last update from 192.168.13.203 on GigabitEthernet3, 00:02:15 ago
  Routing Descriptor Blocks:
    192.168.13.203, from 192.168.13.203, 00:02:15 ago, via GigabitEthernet3
      Route metric is 131072, traffic share count is 1
      Total delay is 5020 microseconds, minimum bandwidth is 1000000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 2
  * 192.168.12.202, from 192.168.12.202, 00:02:15 ago, via GigabitEthernet2
      Route metric is 131072, traffic share count is 1
      Total delay is 5020 microseconds, minimum bandwidth is 1000000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 2

На csr1000v-01 видны два equal-cost маршрута из EIGRP через csr1000v-02 и csr1000v-03.

Скрипт показал их, как и два пути: [‘csr1000v-01’, ‘csr1000v-03’, ‘csr1000v-04’] и [‘csr1000v-01’, ‘csr1000v-02’, ‘csr1000v-04’].

csr1000v-02#show ip route 192.168.204.204

csr1000v-02#show ip route 192.168.204.204
Routing entry for 192.168.204.0/24
  Known via "eigrp 200", distance 90, metric 130816, type internal
  Redistributing via eigrp 200
  Last update from 192.168.24.204 on GigabitEthernet3, 00:08:48 ago
  Routing Descriptor Blocks:
  * 192.168.24.204, from 192.168.24.204, 00:08:48 ago, via GigabitEthernet3
      Route metric is 130816, traffic share count is 1
      Total delay is 5010 microseconds, minimum bandwidth is 1000000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 1

csr1000v-03#show ip route 192.168.204.204

csr1000v-3#show ip route 192.168.204.204
Routing entry for 192.168.204.0/24
  Known via "eigrp 200", distance 90, metric 130816, type internal
  Redistributing via eigrp 200
  Last update from 192.168.34.204 on GigabitEthernet2, 00:08:45 ago
  Routing Descriptor Blocks:
  * 192.168.34.204, from 192.168.34.204, 00:08:45 ago, via GigabitEthernet2
      Route metric is 130816, traffic share count is 1
      Total delay is 5010 microseconds, minimum bandwidth is 1000000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 1

На csr1000v-2 и csr1000v-3 имеется по одному маршруту из EIGRP через csr1000v-4.

Вывод скрипта с этим согласуется, найдено по одному пути: [‘csr1000v-02’, ‘csr1000v-04’] и [‘csr1000v-03’, ‘csr1000v-04’] соответственно.

csr1000v-04#show ip route 192.168.204.204

csr1000v-04#show ip route 192.168.204.204
Routing entry for 192.168.204.204/32
  Known via "connected", distance 0, metric 0 (connected)
  Routing Descriptor Blocks:
  * directly connected, via Loopback204
      Route metric is 0, traffic share count is 1

На csr1000v-4 это Connnected сеть на интерфейсе Loopback204.

Скрипт показал Local маршрут и путь на самого себя: [‘csr1000v-04’].

Поиск пути до подсети 10.10.10.0/24 (отсутствует в топологии)Enter Target Subnet or Host: 10.10.10.0/24

Enter Target Subnet or Host: 10.10.10.0/24

PATHS TO 10.10.10.0/24 FROM csr1000v-04
Detailed info:
Path 1:
['csr1000v-04', 'csr1000v-01', 'csr1000v-04<<LOOP DETECTED']
ROUTER: csr1000v-04
Matched route string: 
S     10.0.0.0/8 [1/0] via 192.168.142.1
                 [1/0] via 192.168.141.1

ROUTER: csr1000v-01
Matched route string: 
S     10.0.0.0/8 [1/0] via 192.168.142.2
                 [1/0] via 192.168.141.2

ROUTER: csr1000v-04<<LOOP DETECTED
Matched route string: 
None

Path 2:
['csr1000v-04', 'csr1000v-01', 'csr1000v-04<<LOOP DETECTED']
ROUTER: csr1000v-04
Matched route string: 
S     10.0.0.0/8 [1/0] via 192.168.142.1
                 [1/0] via 192.168.141.1

ROUTER: csr1000v-01
Matched route string: 
S     10.0.0.0/8 [1/0] via 192.168.142.2
                 [1/0] via 192.168.141.2

ROUTER: csr1000v-04<<LOOP DETECTED
Matched route string: 
None

Path search on csr1000v-04 has been completed in 0.000 sec

PATHS TO 10.10.10.0/24 FROM csr1000v-03
Detailed info:
Path 1:
['csr1000v-03']
ROUTER: csr1000v-03
Matched route string: 
None

Path search on csr1000v-03 has been completed in 0.000 sec

PATHS TO 10.10.10.0/24 FROM csr1000v-02
Detailed info:
Path 1:
['csr1000v-02']
ROUTER: csr1000v-02
Matched route string: 
None

Path search on csr1000v-02 has been completed in 0.000 sec

PATHS TO 10.10.10.0/24 FROM csr1000v-01
Detailed info:
Path 1:
['csr1000v-01', 'csr1000v-04', 'csr1000v-01<<LOOP DETECTED']
ROUTER: csr1000v-01
Matched route string: 
S     10.0.0.0/8 [1/0] via 192.168.142.2
                 [1/0] via 192.168.141.2

ROUTER: csr1000v-04
Matched route string: 
S     10.0.0.0/8 [1/0] via 192.168.142.1
                 [1/0] via 192.168.141.1

ROUTER: csr1000v-01<<LOOP DETECTED
Matched route string: 
None

Path 2:
['csr1000v-01', 'csr1000v-04', 'csr1000v-01<<LOOP DETECTED']
ROUTER: csr1000v-01
Matched route string: 
S     10.0.0.0/8 [1/0] via 192.168.142.2
                 [1/0] via 192.168.141.2

ROUTER: csr1000v-04
Matched route string: 
S     10.0.0.0/8 [1/0] via 192.168.142.1
                 [1/0] via 192.168.141.1

ROUTER: csr1000v-01<<LOOP DETECTED
Matched route string: 
None

Path search on csr1000v-01 has been completed in 0.003 sec

Full search has been completed in 0.004 sec

Результат получен.

Сверимся с маршрутизаторами:

csr1000v-01#show ip route 10.10.10.0 255.255.255.0

csr1000v-01#show ip route 10.10.10.0 255.255.255.0
Routing entry for 10.0.0.0/8
  Known via "static", distance 1, metric 0
  Routing Descriptor Blocks:
  * 192.168.142.2
      Route metric is 0, traffic share count is 1
    192.168.141.2
      Route metric is 0, traffic share count is 1

csr1000v-04#show ip route 10.10.10.0 255.255.255.0

csr1000v-04#show ip route 10.10.10.0 255.255.255.0
Routing entry for 10.0.0.0/8
  Known via "static", distance 1, metric 0
  Routing Descriptor Blocks:
    192.168.142.1
      Route metric is 0, traffic share count is 1
  * 192.168.141.1
      Route metric is 0, traffic share count is 1

На csr1000v-01 и csr1000v-04 имеются по два статических маршрута в GRE-туннели в направлении друг друга на широкую подсеть 10.0.0.0/8. То есть в сети есть петля маршрутизации.

Скрипт ее находит и прекращает поиск пути:

PATHS TO 10.10.10.0/24 FROM csr1000v-01
Path 1:
['csr1000v-01', 'csr1000v-04', 'csr1000v-01<<LOOP DETECTED']
Path 2:
['csr1000v-01', 'csr1000v-04', 'csr1000v-01<<LOOP DETECTED']

PATHS TO 10.10.10.0/24 FROM csr1000v-04
Path 1:
['csr1000v-04', 'csr1000v-01', 'csr1000v-04<<LOOP DETECTED']
Path 2:
['csr1000v-04', 'csr1000v-01', 'csr1000v-04<<LOOP DETECTED']

csr1000v-02#show ip route 10.10.10.0 255.255.255.0

csr1000v-02#show ip route 10.10.10.0 255.255.255.0
% Network not in table

csr1000v-3#show ip route 10.10.10.0 255.255.255.0

csr1000v-3#show ip route 10.10.10.0 255.255.255.0
% Network not in table

На csr1000v-02 и csr1000v-03 маршрутов до этой подсети нет. Аналогичный результат показывает и скрипт.

Основные варианты охвачены, скрипт выдает согласующийся с топологией и настройками маршрутизации на участке сети результат, что подтверждается информацией непосредственно с устройств, откуда загружены таблицы маршрутизации.

Заключение

Получившийся скрипт хоть и далек от идеала, но тем не менее успешно решает поставленную перед ним задачу с достаточной скоростью. На моем MacBook Pro с Intel Core i5 и 8GB RAM на борту инициализация одного файла с таблицей маршрутизации в 700.000+ строк занимает в среднем 6.85с (по результатам 100 запусков). В памяти он после этого занимает около 320-350МБ.

После инициализации файлов поиск любого пути занимает миллисекунды и имеет некоторое пространство для оптимизации (через многопоточную обработку или проверку уже найденных результатов).

Добавление дополнительных парсеров должно быть относительно прозрачно. IPv6 поддерживается модулем SubnetTree нативно.

Для миграции кода на Python3, навскидку, требуется поменять raw_input на input.

Помимо простого вывода путей и маршрутов, логику скрипта можно развить и доработать для произвольных проверок и действий над полученным результатом, в зависимости от потребностей в траблшутинге или анализе сети — от сверки того, «как должно быть» с тем, «как есть», до визуализации маршрутов и т.д.

Полезным дополнением также стал бы анализ Policy Based Routing (PBR) на устройствах в совокупности с таблицами маршрутизации. Впрочем, это уже совершенно другая история.

Надеюсь, кто-то найдет статью полезной для себя.

Спасибо всем, кто дочитал до конца.

Ip адресация и маршрутизация — Вэб-шпаргалка для интернет предпринимателей!

Существуют три механизма адресации пакета IP:

– одноадресный (unicast). Указывается один определенный адрес хоста и предполагается, что именно этот узел отправит пакет на более высокие уровни эталонной модели OSI;

– широковещательные (broadcast). Пакеты пересылаются всем пользо- вателям локальной сети;

– многоадресные (multicast). Пакеты используют специальный диапазон адресов, что позволяет группе пользователей в разных подсетях получать тот же поток данных. Именно это позволяет отправителю посылать один пакет, который получат сразу несколько хостов.

Типы адресов в IP сетях. Каждый терминал в сети TCP/ IP имеет адреса трех уровней:

– физический (МАС-адрес) – локальный адрес узла, определяемый технологией, с помощью которой построена сеть, в которую входит данный узел;

– сетевой (IP-адрес), используемый для однозначной идентификации узлов в пределах всей составной сети;

– доменное имя (DNS-имя) – символьный идентификатор узла, к которому часто обращается пользователь.

В общем случае сетевой интерфейс может иметь одновременно один или не­сколько локальных адресов и один или несколько сетевых адресов, а также одно или несколько доменных имен.

Классы IP-адресов. IP-адрес имеет длину 4 байта и обычно записывается в виде четырех чисел, представляющих значения каждого байта в десятичной форме, и разделенных точками, например: 128.10.2.30 – десятичная форма представления адреса; 10000000 00001010 00000010 00011110 – двоичная форма представления этого же адреса.

Какая часть из 32 бит, отведенных под IP-адрес, относится к номеру сети, а какая – к номеру узла? Можно предло­жить несколько вариантов решений этой проблемы.

Простейший вариант состоит в том, что все 32-битовое поле адреса заранее делится на две части, не обязатель­но равной, но фиксированной длины, в одной из которых всегда будет разме­щаться номер сети, а в другой – номер узла. Такой способ структуризации адреса и не нашел применения.

Другой подход основан на использовании маски, которая позволяет максимально гибко устанавливать границу между номером сети и номером узла. В данном случае маска – это число, которое используется в паре с IP-адресом; двоичная запись маски содержит последовательность единиц в тех разрядах, которые должны в IP-адресе интерпретироваться как номер сети. Поскольку номер сети является цельной частью адреса, единицы в маске также должны представлять непрерывную последовательность. Граница между последовательностью единиц и последовательностью нулей в маске соответствует границе между номером сети и номером узла в IP-адресе. При таком подходе адресное пространство можно представить как совокупность множества сетей разного размера.

Вводится несколько классов сетей, и для каждого класса определены свои размеры. На рисунке 2.1 показана структура IP-адреса.

Рисунок 2.1 – Структура IP-адреса

Если адрес начинается с 0, то этот адрес относится к классу A. Сети класса А предназначены, в основном, для использования лишь несколькими большими сетями, поскольку они предоставляют только 8 бит для поля сетевого адреса и 24 бита для поля хоста (номер узла в сети), доступных сетей 126, а доступных хостов 16 777 214 (2 24 ).

Если первые два бита адреса равны 10, то адрес относится к классу В. В адресах: класса В под номер сети и под номер узла отводится по два байта. Этот класс адресов представляет собой неплохой компромисс между адресным пространством сети и хоста, доступных сетей 16 384, а доступных хостов 65 534 (2 16 ).

Если адрес начинается с последовательности битов 110, то это адрес класса С. В этом случае под номер сети отводился 24 бита, а под номер узла – 8 бит. Сети класса C наиболее распространены, но число узлов (хостов) в них ограничено значением 2 8 (256).

Если адрес начинается с последовательности 1110, то он является адресом класса D и обозначает особый, групповой адрес(multicast).Групповой адрес идентифицирует группу узлов (сетевых интерфейсов), которые в общем случае могут принадлежать разным сетям. Интерфейс, входящий в группу, получает наряду с обычным индивидуальным IP-адресом еще один групповой адрес. Если при от­правке пакета в качестве адреса назначения указан адрес класса D, то такой па­кет должен быть доставлен всем узлам, которые входят в группу.

Если адрес начинается с последовательности 11110, то это значит, что данный адрес относится к классу E. Адреса этого класса зарезервированы для будущих применений.

Маршрутные протоколы применяются маршрутизаторами при выборе наилучшего маршрута для отправляемых пакетов. Маршрутные протоколы определяют формат заголовка пакета данных. В заголовках пакетов содержится информация, которую маршрутизаторы используют для выбора нужного направления ретрансляции пакетов. Этот выбор производится на основе адреса сети назначения и поиска оптимальных маршрутов в таблице маршрутизации.

Протоколы маршрутизации, т. е. протоколы управления процессами динамической маршрутизации применяются маршрутизаторами для составления и обновления таблиц маршрутизации. Эти протоколы описывают алгоритмы обмена служебными данными о маршрутах между маршрутизаторами, а также алгоритмы вычисления оптимальных маршрутов. В сетях TCP/IP для этой цели используют протоколы RIP, OSPF и др.

Протоколы маршрутизации предназначены для автоматического построения таблиц маршрутизации, на основе которых происходит продвижение пакетов сетевого уровня.

Сейчас сети IP используют два основных типа протоколов динамической маршрутизации – дистанционно-векторная маршрутизация и маршрутизация по состоянию каналов.

Дистанционно-векторная маршрутизация отвечает за количество пройденных транзитных участков (маршрутизаторов), это алгоритм, который используют маршрутизаторы для определения наилучшего маршрута.

Маршрутизация по состоянию каналов затрагивает, главным образом, состояние интерфейсов, которые поддерживают маршрутизатор (т. е. соединение есть или его нет). Маршрутизаторы состояния канала поддерживают таблицу топологии, с помощью которой создается полная картина сети. Это означает, что трафик обновления информации о маршрутизации передается (потребляя ресурсы сети) и обновляет таблицы топологии только тогда, когда любой из интерфейсов подключается или отключается.

Задача продвижения пакета от сети источника до сети назначения в каждом маршрутизаторе распадается на две задачи:

– обработка пакета с помощью имеющейся таблицы маршрутизации;

– построение таблицы маршрутизации.

Назначение протоколов маршрутизации состоит в автоматическом решении вто­рой задачи. Для этого маршрутизаторы сети обмениваются специальной служеб­ной информацией о топологии составной сети, на основе которой каждый мар­шрутизатор выбирает маршруты к узлам назначения. Протокол маршрутизации должен созда­вать в маршрутизаторах согласованные друг с другом таблицы маршрутизации, то есть такие, которые обеспечат доставку пакета от исходной сети в сеть назна­чения за конечное число шагов.

Внутренний протокол маршрутизации RIP. Этот протокол предназначен для сравнительно небольших и относительно однородных сетей (алгоритм Белмана-Форда). Протокол OSPF (алгоритмы предложены Дикстрой) является альтернативой RIP в качестве внутреннего протокола маршрутизации. OSPF представляет собой протокол состояния маршрута (в качестве метрики используется – коэффициент качества обслуживания). Каждый маршрутизатор обладает полной информацией о состоянии всех интерфейсов всех маршрутизаторов (переключателей) автономной системы. Протокол IGRP разработан фирмой CISCO для своих многопротокольных маршрутизаторов в середине 80-х годов. IGRP представляет собой протокол, который позволяет большому числу маршрутизаторов координировать свою работу. Протокол BGP разработан компаниями IBM и CISCO. Главная цель BGP – сократить транзитный трафик.

Методы маршрутизации. В настоящее время на сетях с КП используются протоколы маршрутизации, в основе которых реализован один из следующих методов маршрутизации:

– маршрутизация от источника.

Прозрачная маршрутизация используется во всех мостах, устанавливаемых в сетях Ethernet и некоторых сетях Token Ring. В основе метода лежит принцип, согласно которому ни сам пакет, ни мост, через который он передается, не должны что-либо знать о маршруте передачи пакета. Каждый мост продвигает пакеты с одной сети во все прилегающие сети до тех пор, пока они не достигнут адреса получателя. Движение пакета по сети не целенаправленно.

Метод одношаговой маршрутизации используется в сетях TCP/IP. Каждый маршрутизатор и конечный узел принимает участие в выборе только одного шага передачи дейтаграммы. В каждой строке таблицы маршрутизации указывается только один IP-адрес следующего маршрутизатора на том пути, по которому нужно передать дейтаграмму.

При маршрутизации от источника выбор маршрута производится конечным узлом-отправителем или первым маршрутизатором на пути следования пакета. Остальные маршрутизаторы только отрабатывают выбранный путь, т. е. ответственность за выбор оптимального маршрута возлагается не на сеть, а на узел-отправитель либо первый маршрутизатор.

Основная литература: 1[94 – 104], 3[146 – 154].

Дополнительная литература: 11[29 –39]

1. Какие классы и типы IP-адресов вы знаете?

2.Чем отличаются маршрутные протоколы от протоколов маршрутизации?

3. За что отвечают дистанционно-векторная маршрутизация и маршру- тизация по состоянию каналов?

4. Какие из методов маршрутизации вы знаете?

5. Что означает прозрачная маршрутизация?

|следующая лекция ==>
IV. Определение участников процесса СП.|ВНУТРЕННЯЯ КАРТИНА ЗДОРОВЬЯ

Дата добавления: 2017-09-19 ; просмотров: 1566 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Маршрутизатором, или шлюзом, называется узел сети с несколькими IP-интерфейсами (содержащими свой MAC-адрес и IP-адрес), подключенными к разным IP-сетям, осуществляющий на основе решения задачи маршрутизации перенаправление дейтаграмм из одной сети в другую для доставки от отправителя к получателю.

Маршрутизаторы представляют собой либо специализированные вычислительные машины, либо компьютеры с несколькими IP-интерфейсами, работа которых управляется специальным программным обеспечением.

Маршрутизация в IP-сетях

Маршрутизация служит для приема пакета от одного устройства и передачи его по сети другому устройству через другие сети. Если в сети нет маршрутизаторов, то не поддерживается маршрутизация. Маршрутизаторы направляют (перенаправляют) трафик во все сети, составляющие объединенную сеть.

Для маршрутизации пакета маршрутизатор должен владеть следующей информацией:

  • Адрес назначения
  • Соседний маршрутизатор, от которого он может узнать об удаленных сетях
  • Доступные пути ко всем удаленным сетям
  • Наилучший путь к каждой удаленной сети
  • Методы обслуживания и проверки информации о маршрутизации

Маршрутизатор узнает об удаленных сетях от соседних маршрутизаторов или от сетевого администратора. Затем маршрутизатор строит таблицу маршрутизации, которая описывает, как найти удаленные сети.

Если сеть подключена непосредственно к маршрутизатору, он уже знает, как направить пакет в эту сеть. Если же сеть не подключена напрямую, маршрутизатор должен узнать (изучить) пути доступа к удаленной сети с помощью статической маршрутизации (ввод администратором вручную местоположения всех сетей в таблицу маршрутизации) или с помощью динамической маршрутизации.

Динамическая маршрутизация — это процесс протокола маршрутизации, определяющий взаимодействие устройства с соседними маршрутизаторами. Маршрутизатор будет обновлять сведения о каждой изученной им сети. Если в сети произойдет изменение, протокол динамической маршрутизации автоматически информирует об изменении все маршрутизаторы. Если же используется статическая маршрутизация, обновить таблицы маршрутизации на всех устройствах придется системному администратору.

Процесс IP-маршрутизации

IP-маршрутизация — простой процесс, который одинаков в сетях любого размера. Например, на рисунке показан процесс пошагового взаимодействия хоста А с хостом В в другой сети. В примере пользователь хоста А запрашивает по ping IP-адрес хоста В. Дальнейшие операции не так просты, поэтому рассмотрим их подробнее:

  • В командной строке пользователь вводит ping 172.16.20.2. На хосте А генерируется пакет с помощью протоколов сетевого уровня IP и ICMP.
  • IP обращается к протоколу ARP для выяснения сети назначения для пакета, просматривая IP-адрес и маску подсети хоста А. Это запрос к удаленному хосту, т.е. пакет не предназначен хосту локальной сети, поэтому пакет должен быть направлен маршрутизатору для перенаправления в нужную удаленную сеть.
  • Чтобы хост А смог послать пакет маршрутизатору, хост должен знать аппаратный адрес интерфейса маршрутизатора, подключенный к локальной сети. Сетевой уровень передает пакет и аппаратный адрес назначения канальному уровню для деления на кадры и пересылки локальному хосту. Для получения аппаратного адреса хост ищет местоположение точки назначения в собственной памяти, называемой кэшем ARP.
  • Если IP-адрес еще не был доступен и не присутствует в кэше ARP, хост посылает широковещательную рассылку ARP для поиска аппаратного адреса по IP-адресу 172.16.10.1. Именно поэтому первый запрос Ping обычно заканчивается тайм-аутом, но четыре остальные запроса будут успешны. После кэширования адреса тайм-аута обычно не возникает.
  • Маршрутизатор отвечает и сообщает аппаратный адрес интерфейса Ethernet, подключенного к локальной сети. Теперь хост имеет всю информацию для пересылки пакета маршрутизатору по локальной сети. Сетевой уровень спускает пакет вниз для генерации эхо-запроса ICMP (Ping) на канальном уровне, дополняя пакет аппаратным адресом, по которому хост должен послать пакет. Пакет имеет IP-адреса источника и назначения вместе с указанием на тип пакета (ICMP) в поле протокола сетевого уровня.
  • Канальный уровень формирует кадр, в котором инкапсулируется пакет вместе с управляющей информацией, необходимой для пересылки по локальной сети. К такой информации относятся аппаратные адреса источника и назначения, а также значение в поле типа, установленное протоколом сетевого уровня (это будет поле типа, поскольку IP по умолчанию пользуется кадрами Ethernet_II). Рисунок 3 показывает кадр, генерируемый на канальном уровне и пересылаемый по локальному носителю. На рисунке 3 показана вся информация, необходимая для взаимодействия с маршрутизатором: аппаратные адреса источника и назначения, IP-адреса источника и назначения, данные, а также контрольная сумма CRC кадра, находящаяся в поле FCS (Frame Check Sequence).
  • Канальный уровень хоста А передает кадр физическому уровню. Там выполняется кодирование нулей и единиц в цифровой сигнал с последующей передачей этого сигнала по локальной физической сети.
  • Сигнал достигает интерфейса Ethernet 0 маршрутизатора, который синхронизируется по преамбуле цифрового сигнала для извлечения кадра. Интерфейс маршрутизатора после построения кадра проверяет CRC, а в конце приема кадра сравнивает полученное значение с содержимым поля FCS. Кроме того, он проверяет процесс передачи на отсутствие фрагментации и конфликтов носителя.
  • Проверяется аппаратный адрес назначения. Поскольку он совпадает с адресом маршрутизатора, анализируется поле типа кадра для определения дальнейших действий с этим пакетом данных. В поле типа указан протокол IP, поэтому маршрутизатор передает пакет процессу протокола IP, исполняемому маршрутизатором. Кадр удаляется. Исходный пакет (сгенерированный хостом А) помещается в буфер маршрутизатора.
  • Протокол IP смотрит на IP-адрес назначения в пакете, чтобы определить, не направлен ли пакет самому маршрутизатору. Поскольку IP-адрес назначения равен 172.16.20.2, маршрутизатор определяет по своей таблице маршрутизации, что сеть 172.16.20.0 непосредственно подключена к интерфейсу Ethernet 1.
  • Маршрутизатор передает пакет из буфера в интерфейс Ethernet 1. Маршрутизатору необходимо сформировать кадр для пересылки пакета хосту назначения. Сначала маршрутизатор проверяет свой кэш ARP, чтобы определить, был ли уже разрешен аппаратный адрес во время предыдущих взаимодействий с данной сетью. Если адреса нет в кэше ARP, маршрутизатор посылает широковещательный запрос ARP в интерфейс Ethernet 1 для поиска аппаратного адреса для IP-адреса 172.16.20.2.
  • Хост В откликается аппаратным адресом своего сетевого адаптера на запрос ARP. Интерфейс Ethernet 1 маршрутизатора теперь имеет все необходимое для пересылки пакета в точку окончательного приема. На рисунке показывает кадр, сгенерированный маршрутизатором и переданный по локальной физической сети.

Кадр, сгенерированный интерфейсом Ethernet 1 маршрутизатора, имеет аппаратный адрес источника от интерфейса Ethernet 1 и аппаратный адрес назначения для сетевого адаптера хоста В. Важно отметить, что, несмотря на изменения аппаратных адресов источника и назначения, в каждом передавшем пакет интерфейсе маршрутизатора, IP-адреса источника и назначения никогда не изменяются. Пакет никоим образом не модифицируется, но меняются кадры.

  • Хост В принимает кадр и проверяет CRC. Если проверка будет успешной, кадр удаляется, а пакет передается протоколу IP. Он анализирует IP-адрес назначения. Поскольку IP-адрес назначения совпадает с установленным в хосте В адресом, протокол IP исследует поле протокола для определения цели пакета.
  • В нашем пакете содержится эхо-запрос ICMP, поэтому хост В генерирует новый эхо-ответ ICMP с IP-адресом источника, равным адресу хоста В, и IP-адресом назначения, равным адресу хоста А. Процесс запускается заново, но в противоположном направлении. Однако аппаратные адреса всех устройств по пути следования пакета уже известны, поэтому все устройства смогут получить аппаратные адреса интерфейсов из собственных кэшей ARP.

В крупных сетях процесс происходит аналогично, но пакету придется пройти больше участков по пути к хосту назначения.

Таблицы маршрутизации

В стеке TCP/IP маршрутизаторы и конечные узлы принимают решения о том, кому передавать пакет для его успешной доставки узлу назначения, на основании так называемых таблиц маршрутизации (routing tables).

Таблица представляет собой типичный пример таблицы маршрутов, использующей IP-адреса сетей, для сети, представленной на рисунке.

Таблица маршрутизации для Router 2

В таблице представлена таблица маршрутизации многомаршрутная, так как содержится два маршрута до сети 116.0.0.0. В случае построения одномаршрутной таблицы маршрутизации, необходимо указывать только один путь до сети 116.0.0.0 по наименьшему значению метрики.

Как нетрудно видеть, в таблице определено несколько маршрутов с разными параметрами. Читать каждую такую запись в таблице маршрутизации нужно следующим образом:

Чтобы доставить пакет в сеть с адресом из поля Сетевой адрес и маской из поля Маска сети, нужно с интерфейса с IP-адресом из поля Интерфейс послать пакет по IP-адресу из поля Адрес шлюза, а «стоимость» такой доставки будет равна числу из поля Метрика.

В этой таблице в столбце «Адрес сети назначения» указываются адреса всех сетей, которым данный маршрутизатор может передавать пакеты. В стеке TCP/IP принят так называемый одношаговый подход к оптимизации маршрута продвижения пакета (next-hop routing) – каждый маршрутизатор и конечный узел принимает участие в выборе только одного шага передачи пакета. Поэтому в каждой строке таблицы маршрутизации указывается не весь маршрут в виде последовательности IP-адресов маршрутизаторов, через которые должен пройти пакет, а только один IP-адрес — адрес следующего маршрутизатора, которому нужно передать пакет. Вместе с пакетом следующему маршрутизатору передается ответственность за выбор следующего шага маршрутизации. Одношаговый подход к маршрутизации означает распределенное решение задачи выбора маршрута. Это снимает ограничение на максимальное количество транзитных маршрутизаторов на пути пакета.

Для отправки пакета следующему маршрутизатору требуется знание его локального адреса, но в стеке TCP/IP в таблицах маршрутизации принято использование только IP-адресов для сохранения их универсального формата, не зависящего от типа сетей, входящих в интерсеть. Для нахождения локального адреса по известному IP-адресу необходимо воспользоваться протоколом ARP.

Одношаговая маршрутизация обладает еще одним преимуществом — она позволяет сократить объем таблиц маршрутизации в конечных узлах и маршрутизаторах за счет использования в качестве номера сети назначения так называемого маршрута по умолчанию – default (0.0.0.0), который обычно занимает в таблице маршрутизации последнюю строку. Если в таблице маршрутизации есть такая запись, то все пакеты с номерами сетей, которые отсутствуют в таблице маршрутизации, передаются маршрутизатору, указанному в строке default. Поэтому маршрутизаторы часто хранят в своих таблицах ограниченную информацию о сетях интерсети, пересылая пакеты для остальных сетей в порт и маршрутизатор, используемые по умолчанию. Подразумевается, что маршрутизатор, используемый по умолчанию, передаст пакет на магистральную сеть, а маршрутизаторы, подключенные к магистрали, имеют полную информацию о составе интерсети.

Кроме маршрута default, в таблице маршрутизации могут встретиться два типа специальных записей — запись о специфичном для узла маршруте и запись об адресах сетей, непосредственно подключенных к портам маршрутизатора.

Специфичный для узла маршрут содержит вместо номера сети полный IP-адрес, то есть адрес, имеющий ненулевую информацию не только в поле номера сети, но и в поле номера узла. Предполагается, что для такого конечного узла маршрут должен выбираться не так, как для всех остальных узлов сети, к которой он относится. В случае, когда в таблице есть разные записи о продвижении пакетов для всей сети N и ее отдельного узла, имеющего адрес N,D, при поступлении пакета, адресованного узлу N,D, маршрутизатор отдаст предпочтение записи для N,D.

Записи в таблице маршрутизации, относящиеся к сетям, непосредственно подключенным к маршрутизатору, в поле «Метрика» содержат нули («подключено»).

Алгоритмы маршрутизации

Основные требования к алгоритмам маршрутизации:

  • точность;
  • простота;
  • надёжность;
  • стабильность;
  • справедливость;
  • оптимальность.

Существуют различные алгоритмы построения таблиц для одношаговой маршрутизации. Их можно разделить на три класса:

  • алгоритмы простой маршрутизации;
  • алгоритмы фиксированной маршрутизации;
  • алгоритмы адаптивной маршрутизации.

Независимо от алгоритма, используемого для построения таблицы маршрутизации, результат их работы имеет единый формат. За счет этого в одной и той же сети различные узлы могут строить таблицы маршрутизации по своим алгоритмам, а затем обмениваться между собой недостающими данными, так как форматы этих таблиц фиксированы. Поэтому маршрутизатор, работающий по алгоритму адаптивной маршрутизации, может снабдить конечный узел, применяющий алгоритм фиксированной маршрутизации, сведениями о пути к сети, о которой конечный узел ничего не знает.

Проста маршрутизация

Это способ маршрутизации не изменяющийся при изменении топологии и состоянии сети передачи данных (СПД).

Простая маршрутизация обеспечивается различными алгоритмами, типичными из которых являются следующие:

  • Случайная маршрутизация – это передача сообщения из узла в любом случайно выбранном направлении, за исключением направлений по которым сообщение поступило узел.
  • Лавинная маршрутизация – это передача сообщения из узла во всех направлениях, кроме направления по которому сообщение поступило в узел. Такая маршрутизация гарантирует малое время доставки пакета, засчет ухудшения пропускной способности.
  • Маршрутизация по предыдущему опыту – каждый пакет имеет счетчик числа пройденных узлов, в каждом узле связи анализируется счетчик и запоминается тот маршрут, который соответствует минимальному значению счетчика. Такой алгоритм позволяет приспосабливаться к изменению топологии сети, но процесс адаптации протекает медленно и неэффективно.

В целом, простая маршрутизация не обеспечивает направленную передачу пакета и имеет низкую эффективности. Основным ее достоинством является обеспечение устойчивой работы сети при выходе из строя различных частей сети.

Фиксированная маршрутизация

Этот алгоритм применяется в сетях с простой топологией связей и основан на ручном составлении таблицы маршрутизации администратором сети. Алгоритм часто эффективно работает также для магистралей крупных сетей, так как сама магистраль может иметь простую структуру с очевидными наилучшими путями следования пакетов в подсети, присоединенные к магистрали, выделяют следующие алгоритмы:

  • Однопутевая фиксированная маршрутизация – это когда между двумя абонентами устанавливается единственный путь. Сеть с такой маршрутизацией неустойчива к отказам и перегрузкам.
  • Многопутевая фиксированная маршрутизация – может быть установлено несколько возможных путей и вводится правило выбора пути. Эффективность такой маршрутизации падает при увеличении нагрузки. При отказе какой-либо линии связи необходимо менять таблицу маршрутизации, для этого в каждом узле связи храниться несколько таблиц.

Адаптивная маршрутизация

Это основной вид алгоритмов маршрутизации, применяющихся маршрутизаторами в современных сетях со сложной топологией. Адаптивная маршрутизация основана на том, что маршрутизаторы периодически обмениваются специальной топологической информацией об имеющихся в интерсети сетях, а также о связях между маршрутизаторами. Обычно учитывается не только топология связей, но и их пропускная способность и состояние.

Адаптивные протоколы позволяют всем маршрутизаторам собирать информацию о топологии связей в сети, оперативно отрабатывая все изменения конфигурации связей. Эти протоколы имеют распределенный характер, который выражается в том, что в сети отсутствуют какие-либо выделенные маршрутизаторы, которые бы собирали и обобщали топологическую информацию: эта работа распределена между всеми маршрутизаторами, выделяют следующие алгоритмы:

  • Локальная адаптивная маршрутизация – каждый узел содержит информацию о состоянии линии связи, длины очереди и таблицу маршрутизации.
  • Глобальная адаптивная маршрутизация – основана на использовании информации получаемой от соседних узлов. Для этого каждый узел содержит таблицу маршрутизации, в которой указано время прохождения сообщений. На основе информации, получаемой из соседних узлов, значение таблицы пересчитывается с учетом длины очереди в самом узле.
  • Централизованная адаптивная маршрутизация – существует некоторый центральный узел, который занимается сбором информации о состоянии сети. Этот центр формирует управляющие пакеты, содержащие таблицы маршрутизации и рассылает их в узлы связи.
  • Гибридная адаптивная маршрутизация – основана на использовании таблицы периодически рассылаемой центром и на анализе длины очереди с самом узле.

Показатели алгоритмов (метрики)

Маршрутные таблицы содержат информацию, которую используют программы коммутации для выбора наилучшего маршрута. Чем характеризуется построение маршрутных таблиц? Какова особенность природы информации, которую они содержат? В данном разделе, посвященном показателям алгоритмов, сделана попытка ответить на вопрос о том, каким образом алгоритм определяет предпочтительность одного маршрута по сравнению с другими.

В алгоритмах маршрутизации используется множество различных показателей. Сложные алгоритмы маршрутизации при выборе маршрута могут базироваться на множестве показателей, комбинируя их таким образом, что в результате получается один гибридный показатель. Ниже перечислены показатели, которые используются в алгоритмах маршрутизации:

  • Длина маршрута.
  • Надежность.
  • Задержка.
  • Ширина полосы пропускания.

Длина маршрута.

Длина маршрута является наиболее общим показателем маршрутизации. Некоторые протоколы маршрутизации позволяют администраторам сети назначать произвольные цены на каждый канал сети. В этом случае длиной тракта является сумма расходов, связанных с каждым каналом, который был траверсирован. Другие протоколы маршрутизации определяют «количество пересылок» (количество хопов), т. е. показатель, характеризующий число проходов, которые пакет должен совершить на пути от источника до пункта назначения через элементы объединения сетей (такие как маршрутизаторы).

Надежность.

Надежность, в контексте алгоритмов маршрутизации, относится к надежности каждого канала сети (обычно описываемой в терминах соотношения бит/ошибка). Некоторые каналы сети могут отказывать чаще, чем другие. Отказы одних каналов сети могут быть устранены легче или быстрее, чем отказы других каналов. При назначении оценок надежности могут быть приняты в расчет любые факторы надежности. Оценки надежности обычно назначаются каналам сети администраторами. Как правило, это произвольные цифровые величины.

Задержка.

Под задержкой маршрутизации обычно понимают отрезок времени, необходимый для передвижения пакета от источника до пункта назначения через объединенную сеть. Задержка зависит от многих факторов, включая полосу пропускания промежуточных каналов сети, очереди в порт каждого маршрутизатора на пути передвижения пакета, перегруженность сети на всех промежуточных каналах сети и физическое расстояние, на которое необходимо переместить пакет. Т. к. здесь имеет место конгломерация нескольких важных переменных, задержка является наиболее общим и полезным показателем.

Полоса пропускания.

Полоса пропускания относится к имеющейся мощности трафика какого-либо канала. При прочих равных показателях, канал Ethernet 10 Mbps предпочтителен любой арендованной линии с полосой пропускания 64 Кбайт/с. Хотя полоса пропускания является оценкой максимально достижимой пропускной способности канала, маршруты, проходящие через каналы с большей полосой пропускания, не обязательно будут лучше маршрутов, проходящих через менее быстродействующие каналы.

Читайте также:

  1. Вопрос 1 Маршрутизация потоками данных в сетях связи
  2. Маршрутизация в сетях.
  3. Маршрутизация пакетов в сетях
  4. Маршрутизация пакетов.
  5. Маршрутизация почты
  6. Программная Маршрутизация
  7. Тема 2.3 Общие характеристики протокола IPX. Пакет протокола IPX, маршрутизация IPX

Схема распределения адресного пространства

Теоретическая часть

IP АДРЕСАЦИЯ И IP МАРШРУТИЗАЦИЯ

Цель: Закрепить знания основ работы с адресным пространством в вычислительных сетях.

IP-адреса являются той базой, на которой строится доставка сообщений через сеть TCP/IP.

IP-адрес – это 4-байтовая последовательность. Принято каждый байт этой последовательности записывать в виде десятичного числа. Например, приведенный ниже адрес является адресом одной из машин РНЦ «Курчатовский Институт»: 144.206.160.32.

Каждая точка доступа к сетевому интерфейсу имеет свой IP-адрес.

IP-адрес состоит из двух частей: адреса сети и номера хоста. Под хостом понимают любое устройство, которое имеет свой сетевой интерфейс.

Существует 5 классов IP-адресов. Эти классы отличаются друг от друга количеством битов, отведенных на адрес сети и адрес хоста в сети. На рис. 1.1 показаны 5 классов IP-адресов.

24 31
Класс Аномер сетиномер хоста
Класс Вномер сетиномер хоста
Класс Сномер сетиномер хоста
Класс Dгрупповой адрес
Класс Езарезервировано

Рис. 1.1 Классы IP-адресов

Опираясь на эту структуру, можно подсчитать характеристики каждого класса в терминах числа сетей и числа машин в каждой сети.

При разработке структуры IP-адресов предполагалось, что они будут использоваться по разному назначению.

Адреса класса A предназначены для использования в больших сетях общего пользования. Адреса класса B предназначены для использования в сетях среднего размера (сети больших компаний, научно-исследовательских институтов, университетов). Адреса класса C предназначены для использования в сетях с небольшим числом компьютеров (сети небольших компаний и фирм). Адреса класса D используют для обращения к группам компьютеров, а адреса класса E – зарезервированы.

КлассДиапазон значений первого октетаВозможное количество сетейВозможное количество узлов
А1 – 126
B128 – 191
C192 – 223
D224 – 239
E240 – 247

Рис. 1.2 Характеристики классов IP-адресов

Среди всех IP-адресов имеется несколько зарезервированных под специальные нужды. Ниже приведена таблица зарезервированных адресов.

NIP-адресПримерЗначение
1.все нули0.0.0.0данный узел сети
2.номер сети | все нули192.168.62 | .0данная IP-сеть
3.все нули | номер узла0.0.0 | .55узел в данной (локальной) сети
4.все единицы255.255.255.255все узлы в данной локальной IP-сети
5.номер сети | все единицы192.168.62 | .255все узлы указанной IP-сети
6.127.0.0.1127.0.0.1«петля» (lookup interface)

Рис. 1.3 Зарезервированные IP-адреса

Особое внимание в таблице (рис. 1.3) уделяется последней строке. Адрес 127.0.0.1 предназначен для тестирования программ и взаимодействия процессов в рамках одного компьютера. В большинстве случаев в файлах настройки этот адрес обязательно должен быть указан, иначе система при запуске может «зависнуть». Наличие «петли» чрезвычайно удобно с точки зрения использования сетевых приложений в локальном режиме для их тестирования и при разработке интегрированных систем.

Вообще, зарезервирована вся сеть 127.0.0.0. Эта сеть класса A реально не описывает ни одной настоящей сети.

Некоторые зарезервированные адреса используются для широковещательных сообщений. Например, номер сети (строка 2) используется для обозначения условного адреса подстети. Адреса, содержащие все единицы (строка 4 и строка 5), используются для широковещательных рассылок (например для отправки сообщения или запроса сразу всем компьютерам подсети).

Реальные адреса выделяются организациями, предоставляющими IP-услуги, из выделенных для них пулов IP-адресов. Согласно документации NIC (Network Information Centre) IP-адреса предоставляются бесплатно, но в прейскурантах наших организаций (как коммерческих, так и некоммерческих), занимающихся Internet-сервисом предоставление IP-адреса стоит отдельной строкой.

Важным элементом разбиения адресного пространства Internet являются подсети.

Подсеть – это подмножество сети, не пересекающееся с другими подсетями. Это означает, что сеть организации (скажем, сеть класса С) может быть разбита на фрагменты, каждый из которых будет составлять подсеть. Реально, каждая подсеть соответствует физической локальной сети (например, сегменту Ethernet). Вообще говоря, подсети придуманы для того, чтобы обойти ограничения физических сетей на число узлов в них и максимальную длину кабеля в сегменте сети. Например, сегмент Ethernet, построенный на тонком коаксиальном кабеле, имеет максимальную длину 185 м и может включать до 32 узлов. Как видно из рис. 1.2, самая маленькая сеть – класса С – может состоять из 254 узлов. Для того, чтобы достичь этой цифры, надо объединить несколько физических сегментов сети. Сделать это можно либо с помощью физических устройств (например, коммутаторов), либо при помощи машин-шлюзов. В первом случае разбиения на подсети не требуется, т.к. логически сеть выглядит как одно целое. При использовании шлюза сеть разбивается на подсети (рис. 1.4).

На рис. 1.4 изображен фрагмент сети класса B – 144.206.0.0, состоящий из двух подсетей – 144.206.130.0 и 144.206.160.0. В центре схемы изображена машина шлюз, которая связывает подсети. Эта машина имеет два сетевых интерфейса и, соответственно, два IP-адреса.

В принципе, разбивать сеть на подсети необязательно. Можно использовать адреса сетей другого класса (с меньшим максимальным количеством узлов). Но при этом возникает, как минимум, два неудобства:

1. в сети, состоящей из одного сегмента Ethernet, весь адресный пул сети не будет использован, т.к., например, для сети класса С (самой маленькой с точки зрения количества узлов в ней), из 254 возможных адресов можно использовать только 32;

2. все хосты за пределами организации, которым разрешен доступ к компьютерам сети данной организации, должны знать шлюзы для каждой из сетей. Структура сети становится открытой во внешний мир. Любые изменения структуры могут вызвать ошибки маршрутизации. При использовании подсетей внешним хостам надо знать только шлюз всей сети организации.

Рис. 1.4 Схема разбиения адресного пространства сети на подсети

Разбиение сети на подсети использует ту часть IP-адреса, которая закреплена за номерами хостов. Администратор сети может замаскировать часть IP-адреса и использовать её для назначения номеров подсетей. Фактически, способ разбиения адреса на две части, теперь будет применяться к адресу хоста из IP-адреса сети, в которой организуется разбиение на подсети.

Маска подсети – это четыре байта, которые накладываются на IP-адрес для получения номера подсети.

На приведенной схеме (рис. 1.5) сеть класса B (144.206.0.0) разбивается на подсети маской 255.255.224.0. При этом первые два байта задают адрес сети и не участвуют в разбиении на подсети. Номер подсети задается тремя старшими битами третьего байта маски. Такая маска позволяет получить 6 подсетей. Для нумерации подсети нельзя использовать номер 000 и номер 111. Номер 160 задает 5-ю подсеть в сети 144.206.0.0. Для нумерации машин в подсети можно использовать оставшиеся после маскирования 13 битов, что позволяет создать подсеть из 8190 узлов.

IP-адрес1001 00001100 11101010 00000010 0000
маска1111 11111111 11111110 00000000 0000

Рис. 1.5 Схема маскирования и вычисления номера подсети

Подсети не только решают, но также и создают ряд проблем. Например, происходит потеря адресов, но уже не по причине физических ограничений, а по причине принципа построения адресов подсети. Как было видно из примера, выделение трех битов на адрес подсети не приводит к образованию 8-подсетей. Подсетей образуется только 6, так как номера сетей 0 и 7 использовать в силу специального значения IP-адресов, состоящих из 0 и единиц, нельзя. Таким образом, все комбинации адресов хоста внутри подсети, которые можно было бы связать с этими номерами, придется забыть. Чем шире маска подсети (чем больше места отводится на адрес хоста), тем меньше потерь. В ряде случаев приходится выбирать между приобретением ещё одной сети или изменением маски. При этом физические ограничения могут быть превышены за счёт коммутаторов, хабов и т. п.

Бесклассовая адресация CIDR [1]

Концепция бесклассовой междоменной маршрутизации (CIDR) была официально документирована в сентябре 1993 года (RFC[2] 1517, RFC 1518, RFC 1519 и RFC 1520). Её появление было вызвано участившимися кризисами в Интернете. Из-за несовершенства протоколов маршрутизации трафик, вызванный сообщениями об обновлении таблиц маршрутизации, приводил к сбоям магистральных маршрутизаторов. Это было связано с полным задействованием их ресурсов на обработку большого объема служебной информации. Так, в 1994 году таблицы маршрутизации магистральных маршрутизаторов Интернета содержали до 70 000 маршрутов. Внедрение технологии CIDR сократило число записей маршрутов до 30 000. Кроме того, дополнительной предпосылкой для внедрения технологии CIDR явилась реальная опасность нехватки адресного пространства при дальнейшем расширении Интернета. Эта технология позволяет реализовать новые, не поддерживавшиеся ранее возможности:

1. Отход от традиционной концепции разделения адресов протокола IP на классы, благодаря чему можно более эффективно использовать адресное простран­ство протокола IP версии 4.

2. Объединение маршрутов. Здесь одна запись в таблице маршрутизации может представлять сотни адресов. Это позволяет контролировать количество маршрутной информации в магистральных маршрутизаторах Интернета.

В настоящее время метод CIDR используется для назначения адресов открытой сети в связи с нехваткой свободных открытых IP-адресов. При использовании метода CIDR практически игнорируется принцип распределения сетевых адресов по классам, а применяются пространства адресов, которые определены только с помощью маски.

Технология CIDR позволяет рекурсивно делить порции адресного пространства на небольшие части. Основное различие между ними в том, что при использовании маски подсети переменной длины рекурсия выполняется на адресном пространстве, выделенном организации ранее. При этом схема деления пространства остаётся спрятанной внутри организации (то есть, например, для пользователей в сети Интернет подобная схема разделения остается прозрачной и незаметной).

Сначала метод CIDR рассматривался, как способ распределения провайдером Internet между клиентами IP-адресов в виде диапазонов IP -адресов (называемых блоками), а не выделения адреса некоторого класса. Обычно Интернет-провайдер выделяет своим клиентам адреса определенных классов, что приводит к некоторой избыточности в одном месте и к дефициту в другом. Обратившись к технологии CIDR , провайдеры получают возможность «нарезать» блоки из выделенного им адресного пространства, которые оптимально подходят под требования каждого клиента, оставляя в то же время возможность будущего пространственного роста.

Например, если организация заключает с Интернет-провайдером соглашение об аренде линии Т1, ей может быть передан для использования блок общедоступных IP-адресов. При этом количество адресов в блоке может находиться в пределах от 2 до 64, в зависимости от потребностей организации. Организация может также запросить (за дополнительную плату) ещё один блок общедоступных адресов и добавить его к ранее полученному блоку, если в этом возникнет необходимость.

Принцип осуществления метода CIDR является очень простым. Интернет-провайдер после получения заявки от организации, которой, допустим, требуется 25 внешних IP-адресов, просматривает имеющиеся в его распоряжении пространство адресов. Предположим, что он обнаруживает, что адреса в диапазоне от 64.90.1.32 до 64.90.1.63 не заняты. В этом случае провайдер выделяет организации адрес сети 64.90.1.32/27[3]. В этом блоке адресов организация получает 30 действительных IP-адресов от 64.90.1.33 до 64.90.1.62. Это — адрес сети класса А, но организация не получает весь диапазон адресов этого класса, поскольку им по-прежнему владеет Интернет-провайдер. Организации просто предоставляется часть пространства адресов этой сети, которое она может использовать до тех пор, пока не перейдет к другому Интернет-провайдеру.

Основной принцип метода CIDR состоит в том, что понятие класса уже не применяется. При использовании этого метода следует помнить, что после получения от Интернет-провайдера адреса и маски (например, длиной 22 бита), организация не имеет права уменьшить длину этой маски (использовать в ней меньше битов), даже если полученный IP-адрес сети относится к классу А. Организации не передаётся в использование весь этот класс, ей только предоставляется возможность применять определенную часть пространства адресов, переданного в её распоряжение. Но, организация может увеличивать длину маски (включать в нее больше битов) и тем самым разбивать свою часть пространства адресов на подсети в соответствии со своими потребностями. Но при этом необходимо тщательно следить за тем, чтобы использовались только адреса из назначенного диапазона.

Предположим, что провайдеру был выделен адрес 206.0.64.0 с сетевым префиксом /18. Тогда для задания индивидуальных адресов остается 14 бит (32-18=14), что позволяет поддерживать до 16 384 (2 14 ) хостов. В случае использования классов адресов достижение той же цели требует от провайдера выделения 64 адресов класса С.

Если клиенту, которого обслуживает данный провайдер, для своей сети требуется 800 адресов хостов, то провайдер может выделить ему адресный блок 206.0.68.0/22, то есть блок из 1024 (2 10 ) адресов хостов. При таком выделении клиент получает в свое распоряжение 224 дополнительных адреса. Если следовать классовой адресной схеме, то клиенту потребовалось бы выделить или один адрес класса В, или четыре адреса класса С. При предоставлении одного адреса класса В клиент получает более 64 000 дополнительных адресов. При выделении четырех адресов класса С клиент имеет приемлемое количество адресов, но заодно увеличивается размер таблиц маршрутизации (добавляются четыре записи).

Рассмотрим на практике работу с технологией CIDR . Для этого выберем адресный блок 192.168.168.0/21. На первом этапе запишем индивидуальные номера сетей для этого блока.

В двоичном виде блок представляется следующим образом:

Маска, определяемая префиксом /21, на три бита меньше, чем традиционная маска для сети класса С (/24). А это означает, что рассматриваемый блок CIDR идентифицирует блок из 8 (2 3 ) последовательных (упорядоченных) сетей с префиксом /24:

Рекомендуем к прочтению

Создавать таблицы маршрутизации можно. Использование нескольких интерфейсов и одного шлюза. Доступ из LAN в Интернет, NAT

Под одноадресной маршрутизацией понимается процесс передачи сообщений между подсетями, в котором сообщение адресовано только одному заданному получателю. Вся задача маршрутизации в этом случае сводится к доставке пакета получателю и выбору оптимального маршрута из множества возможных.

Понятие таблицы маршрутизации

Отправителя и получателя может разделять произвольное количество маршрутизаторов. При этом процесс передачи сообщения от одного маршрутизатора другому называется «прыжком» (hop
). Каждый маршрутизатор обладает информацией о структуре сети на расстоянии одного прыжка. Другими словами, маршрутизатор не обладает информацией о точном местоположении требуемого хоста.

В большой сети, да еще и с интенсивно меняющейся структурой (как, например, Интернет), это было бы невозможно. Вместо этого, маршрутизатор обладает информацией о соседних маршрутизаторах и о том, кому из них необходимо передать сообщение для последующей доставки в той или иной ситуации. Эта информация хранится в специальной таблице, которая носит название таблицы маршрутизации (routing table
).

Таблицы маршрутизации используются для принятия решения о том, как именно будет доставлено то или иное сообщение. Наличие этих таблиц не является исключительным свойством маршрутизатора. В сети TCP/IP любой хост (даже не являющийся маршрутизатором) может также располагать таблицей маршрутизации, которая используется с целью определения оптимального маршрута передачи сообщений. Так, скажем, если в подсети имеется три маршрутизатора, хост использует таблицу маршрутизации для того, чтобы выбрать из них наиболее оптимальный для доставки сообщения.

Типы записей в таблице маршрутизации

Записи в таблице маршрутизации называются маршрутами. При этом существует три типа маршрутов.

  • Маршрут к хосту, или узловой маршрут
    (Host Route). Этот тип маршрута определяет путь доставки пакета, адресованного хосту с конкретным сетевым адресом. Маршруты к хостам обычно используются для создания настраиваемых маршрутов к определенным компьютерам, а также для управления или оптимизации сетевого трафика.
  • Маршрут к сети, или сетевой маршрут
    (Network Route). Данный тип маршрута используется для определения способа доставки пакета в подсеть с определенным адресом. Большую часть содержимого таблицы маршрутизации представляют собой маршруты данного типа.
  • Маршрут по умолчанию
    (Default Route). Маршрут по умолчанию используется, когда не найдены никакие другие маршруты в таблице маршрутизации. Маршрут по умолчанию используется в ситуации, когда в таблице маршрутизации отсутствует соответствующий маршрут по идентификатору сети или маршрут к хосту по адресу получателя. Маршрут по умолчанию упрощает конфигурацию компьютеров. Вместо конфигурирования компьютера и настройки маршрутов для всех идентификаторов сетей в межсетевой среде используется одиночный маршрут по умолчанию для пересылки всех пакетов в сеть получателя или по адресу в межсетевой среде, который не был найден в таблице маршрутизации.

Статья про таблицу маршрутизации — тема, обещанная около четырех лет тому назад. На самом деле, давно нужно было про нее написать, но никак не мог решиться и только сейчас делаю попытку.

Манипуляции с таблицей маршрутизации позволяют тонко настраивать работу ваших .
Чаще всего это не нужно, но иногда требуется сделать что-то необычное, особенно, когда на комрьютере несколько адаптеров, и тогда
приходится браться за таблицы маршрутизации.

Просмотр таблицы маршрутизации

Приведу вывод команды route print на моем стаионарном компьютере:

Сетевой адресМаска сетиАдрес шлюзаИнтерфейсМетрика
0.0.0.00.0.0.0192.168.1.1192.168.1.10020
127.0.0.0255.0.0.0On-link127.0.0.1306
127.0.0.1255.255.255.255On-link127.0.0.1306
127.255.255.255255.255.255.255On-link127.0.0.1306
192.168.1.0255.255.255.0On-link192.168.1.100276
192.168.1.100255.255.255.255On-link192.168.1.100276
192.168.1.255255.255.255.255On-link192.168.1.100276
244.0.0.0240.0.0.0On-link127.0.0.1306
244.0.0.0240.0.0.0On-link192.168.1.100276
255.255.255.255255.255.255.255On-link127.0.0.1306
255.255.255.255255.255.255.255On-link192.168.1.100276

Вот так мы можем просмотреть таблицы маршрутизации. Попробуем описать, что все это означает. Каждая строчка опреедляет, куда отправлять какие пакеты.
То есть для диапазона, задаваемого значениями в колонках «сетевой адрес» и «маска сети» создается сетевой маршрут.
Например, адрес 192.168.0.1 и маска 255.255.255.0 означают, что имеется в виду диапазон 192.168.0.*.
Маска всегда имеет вид, когда вначале стоят 255, в конце — нули, а последним ненулевым числом может быть степень двойки минус один.
Например, для маски 255.255.127.0 и того же адреса 192.168.0.1 диапазон будет чуть шире, в него войдут и адреса
вида 192.168.1.*. Чтобы описать это точнее, надо представить все числа в двоичном виде, но это не является целью статьи.

Итак, если мы определились с диапазоном, мы должны понять, куда же компьютер будет направлять пакеты, если они предназначены
адресам из этого диапазона. Начнем с четвертой колонки. Она определяет тот адаптор, на который нужно отправлять пакеты.
Например, в данном случае, в ней встречаются 192.168.1.100 — это адрес моей сетевой карты и 127.0.0.1 —
так называемая обратная петля. Пакеты «на этот адаптор» компьютер даже не будет пытаться отправлять куда-либо.
Если бы у меня была активна другая карта, например, WiFi, то в четвертой колонке встречался бы и е адрес.

Третья колонка определяет «шлюз» — тот маршрутизатор, которому нужно послать эти пакеты. В случае, когда там написано «On-link»,
имеется в виду, что никаких маршрутизаторов не нужно — адрес и так находится в прямой досягаемости. Последняя колонка — метрика.
Она определяет предпочтение для маршрута, когда есть варианты. Строчки с наименьшей метрикой предпочтительны при
совпадении диапазонов.

Итак, давайте разберем описанные маршруты. На самом деле, самой важной является в данном случае первая строчка.
Она говорит, что для любого адреса (адрес 0.0.0.0 с маской 0.0.0.0 задает полный диапазон) есть маршрут
с использованием моей сетевой карты, и направить можно эти пакеты по адресу 192.168.1.1. Последний адрес
является моим , что все и объясняет. Любой адрес, который компьютер не сможет
найти где-то рядом, он направит на роутер и предоставит тому с ним разбираться.

Поговорим про остальное. Три строчки про 127 — системные, связаны с тем, что эти адреса всегда должны возвращаться
на сам компьютер. Адреса диапазона 192.168.1.* являются локальной сетью, 192.168.1.100 — вообще наш адрес,
192.168.1.255 — специальный адрес для широковещательных пакетов в локальной сети.
Адреса 244.0.0.0 — тоже специальные зафиксированные адреса для широкого вещания, а две последние строчки
определяют сами адаптеры.

Но этот случай достаточно неинтересный. Посмотрим на таблица на моем роутере.
Внешний вид будет немного другой, поскольку на нем Линукс, и я вывожу соответствующие таблицы командой route -n.

Destination Gateway Genmask Flags MetricRef UseIface
10.0.20.43 0.0.0.0255.255.255.255UH000ppp0
192.168.1.00.0.0.0255.255.255.0U000br0
10.22.220.00.0.0.0255.255.255.0U000vlan1
10.0.0.010.22.220.1255.224.0.0UG000vlan1
127.0.0.00.0.0.0255.0.0.0U000lo
0.0.0.010.0.20.430.0.0.0UG000ppp0

Заметим сразу, что колонки немного изменились. На всех мы останавливаться не будем, существенной измененной колонкой является
последняя — вместо IP-адреса адаптора мы указываем его имя. Здесь lo — это «петля» (никуда не отправлять),
br0 — внутренняя сеть, ppp0 — внешняя, vlan0 — установленное vpn-содениение. Итак, разберем строчки.
Также в колонке с флагами буква G означает Gateway — шлюз, а H — Host, наш компьютер.

Последняя строчка — шлюз по умолчанию. Любой пакет мы может отправить на адрес 10.0.20.43.
Что интересно, это — наш собственный адрес, полученный при установке VPN — соединения!
Так всегда получается, когда установлено VPN-соединения, пакет, в первую очередь отправляем своему виртуальному интерфейсу,
где он инкапсулируется в другой пакет, который пойдет до реального шлюза. Естественно, в таблицах маршрутизации этого не видно.
Также к описанию этого соединения относится и первая строчка.

Настоящий шлюз мы видим в третей строчке — адресы диапазона 10.22.220.* отправляются на vlan1, шлюз,
предоставленный провайдером, коммуникатор, с которым мы соединены сетевым кабелем напрямую.
Вторая строчка говорит о том, что адреса диапазона 192.168.1.* — это локальная сеть, и пакеты
к ним нужно отправлять внутрь, а не вовне. Пятая — обычная информация про «локальные адреса».

Команды таблицы маршрутизации

Я ничего не сказал про предпоследнюю строчку. А она самая интересная, ведь я ее добавил руками.
В чем ее смысл? Адреса диапазона 10.1-32.*.* я отправляю на шлюз 10.22.220.1. Пакеты на эти адреса не пойдут
в интернет, а останутся в локалке провайдера. Да, пакеты на диапазон 10.22.220. и так идут туда,
но этого мало. Так я не получаю полноценного доступа к локальным ресурсам.

В случае Windows такой маршрут в таблицы маршрутизации был бы добавлен командой
route -p add 10.0.0.0 mask 255.224.0.0 10.22.220.1. -p означает, что маршрут постоянный,
он не должен удаляться после перезагрузки компьютера.

Статья и так уже получилась намного длинней обычных статей этого блога, так что я заканчиваю.
Пишите свои вопросы здесь, а если же вы хотите разобрать какие-то спицифические случаи настройки,
лучше обращайтесь на нашем форуме .

Таблица маршрутизации представляет собой набор правил, часто просматриваемых в табличном формате, который используется для определения того, куда будут направляться пакеты данных, перемещающиеся по межсетевому протоколу (Internet Protocol или сокращенно IP). Все устройства с поддержкой IP, включая маршрутизаторы и коммутаторы, используют данный инструмент.

Описание

Таблица маршрутизации — это тип файла данных, который действует как карта и часто устанавливается на маршрутизаторе, сетевом компьютере или другом оборудовании. Содержит информацию о различных маршрутах между устройствами, чтобы представить наиболее эффективные пути для пакетов данных.

Одной из задач разработки табличной формы является запись информации на многих устройствах с фиксированной памятью или местом для хранения. Также существует проблема работы с кэшем ARP и правильным ведением списков доступных маршрутов для таблицы маршрутизации. Это часто называют неправильным определением Другие проблемы маршрутизации, такие как черные дыры, которые вызывают неэффективную доставку, также следует учитывать при использовании.

Определение

Таблица маршрутизации содержит информацию, необходимую для пересылки пакета по оптимальному пути к месту назначения. Каждый пакет содержит информацию о его происхождении и назначении. Когда он принимается, сетевое устройство проверяет данные и сопоставляет их с записью в таблице, обеспечивающей наилучшее соответствие для своего адресата. Затем таблица предоставляет устройству инструкции по отправке пакета по следующему маршруту в сети.

Основные понятия

Базовая таблица маршрутизации включает следующую информацию:

  • Назначение: IP-адрес конечного пункта назначения пакета.
  • Следующий переход: IP-адрес, на который пересылается пакет.
  • Интерфейс: исходящий сетевой интерфейс, который устройство должно использовать при пересылке пакета на следующий или конечный пункт назначения.
  • Метрика: присваивает стоимость каждому доступному маршруту, чтобы можно было выбрать наиболее экономичный путь.
  • Маршруты: включает подключенные напрямую и косвенные подсети, которые не подсоединены к устройству, но могут быть доступны через один или несколько переходов. Маршруты по умолчанию используются для определенных типов трафика или при отсутствии информации.

Команды таблицы маршрутизации могут поддерживаться вручную или динамически. Табличные формы для статических сетевых устройств не изменяются, если администратор сети не изменит их вручную. В динамической маршрутизации устройства автоматически создают и поддерживают свои таблицы с использованием протоколов для обмена информацией о топологии сети. Эти данные позволяют устройствам «слушать» сеть и реагировать на такие случаи, как сбои устройств и сетевые перегрузки.

Таблицы маршрутизации Windows

Служба маршрутизации и удаленного доступа представляет собой набор сетевых услуг в семействе Windows Server, который позволяет серверу выполнять услуги обычного маршрутизатора. RRAS включает в себя интерфейс прикладного программирования (API), который облегчает разработку приложений и процессов для администрирования целого ряда сетевых сервисов.

Windows Server 2000, 2003 и 2008 интегрированы с различными сетевыми службами и конкретными API-интерфейсами, которые позволяют серверу предоставлять функции передачи данных и сетевой маршрутизации. Служба маршрутизации, которая преобразует Windows Server в виртуальный/программный маршрутизатор, входит в число этих программных интерфейсов. Приложения охватывают широкий спектр услуг, которые могут централизованно управляться контроллером домена сервера.

Схема

Построение таблицы маршрутизации предоставляет удаленному пользователю доступ во внутреннюю сеть через соединение с защищенной виртуальной частной сетью (VPN). Эта возможность подключения может быть развернута с использованием типичного VPN на основе IP через Интернет.

Услуги, входящие в комплект службы маршрутизации и удаленного доступа:

  • удаленный доступ;
  • удаленный сервер удаленного доступа;
  • резервуар удаленного доступа VPN;
  • IP-маршрутизатор для подключения подсетей сетей;
  • услуги перевода сетевых адресов;
  • другие услуги, связанные с маршрутизатором;
  • Dial-up и VPN-маршрутизатор с набором номера по требованию.

Спецификация

Таблица маршрутизации присутствует на всех IP-узлах, хранит информацию о сетях и о том, как они могут быть достигнуты (прямо или косвенно). Поскольку все IP-узлы выполняют некоторую форму маршрутизации, эти данные эксклюзивными для IP-маршрутизаторов не являются. Любой узел, загружающий протокол TCP/IP, имеет свою табличную форму. Существует ряд записей по умолчанию в соответствии с конфигурацией узла, а дополнительные записи могут быть введены вручную через утилиты TCP/IP или динамически через взаимодействие с маршрутизаторами.

Когда IP-пакет должен быть переадресован, таблица используется для определения:

  • IP-адреса пересылки или следующего перехода;
  • интерфейса, который будет использоваться для пересылки.

Типы ввода

Запись в таблице маршрутизации содержит следующую информацию в представленном порядке:

  • Идентификатор сети, или пункт назначения, соответствующий маршруту, может быть идентификатором сети на основе класса, подсети или суперсети, или IP-адресом для маршрута хоста.
  • Сетевая маска используется для сопоставления адреса назначения с идентификатором сети.
  • IP-адрес следующего перехода.
  • Интерфейс — индикация того, какой сетевой интерфейс используется для пересылки IP-пакета.
  • Метрика — номер, используемый для указания стоимости маршрута, поэтому можно выбрать оптимальный маршрут между возможными. Общее использование метрики — указать количество переходов (пересекающихся маршрутизаторами) на идентификатор сети.

Элементы таблицы маршрутизации могут использоваться для хранения следующих типов маршрутов:

  • Непосредственно прикрепленные сетевые идентификаторы — маршруты для сетевых идентификаторов, которые подключены напрямую.
  • Идентификаторы удаленных сетей — маршруты для сетевых идентификаторов, которые не подключены напрямую, но доступны для других маршрутизаторов.
  • Хост-маршруты — маршрут к определенному IP-адресу. Маршруты хоста позволяют выполнять маршрутизацию на основе IP-адреса. Для хост-маршрутов идентификатор сети — это IP-адрес указанного хоста, а сетевая маска — 255.255.255.255.
  • Маршрут по умолчанию предназначен для использования, когда не найден более конкретный сетевой идентификатор или хост-маршрут. Идентификатор сети маршрутизации по умолчанию — 0.0.0.0 с сетевой маской 0.0.0.0.

Таблица маршрутизации использует статический и динамический интернет-протокол или IP-адреса для идентификации устройств и работает с кешем ARP, который содержит эти адреса. Таблицу обычно называют ресурсом для поиска следующего перехода или последующего маршрута для пакета данных. Статические или динамические маршруты сравнивают, чтобы найти наилучший путь для передачи данных.

Формат командной строки:

ROUTE [-f] [-p] [-4|-6] command

Подсказку по параметрам командной строки можно получить используя встроенную справку (route /?):

-f
— Очистка таблиц маршрутов от записей всех шлюзов. При указании одной из команд таблицы очищаются до выполнения команды.

-p
— При использовании с командой ADD задает сохранение маршрута при перезагрузке системы. По умолчанию маршруты не сохраняются при перезагрузке. Пропускается для остальных команд,
изменяющих соответствующие постоянные маршруты. Этот параметр не поддерживается в Windows 95.

-4
— Обязательное использование протокола IPv4.

-6
— Обязательное использование протокола IPv6.

command
— Одна из следующих команд:

PRINT
— Печать маршрута
ADD
— Добавление маршрута
DELETE
— Удаление маршрута
CHANGE
— Изменение существующего маршрута

destination
— Адресуемый узел.

MASK
— Указывает, что следующий параметр интерпретируется как маска сети.

netmask
— Значение маски подсети для записи данного маршрута. Если этот параметр не задан, по умолчанию используется значение 255.255.255.255.

gateway
— Шлюз.

interface
— Номер интерфейса для указанного маршрута.

METRIC
— Определение метрики, т.е. цены для адресуемого узла. Чем ниже значение метрики, тем выше приоритет узла при построении маршрута.

Поиск всех символических имен узлов проводится в файле сетевой базы данных
NETWORKS. Поиск символических имен шлюзов проводится в файле базы данных имен
узлов HOSTS.

Для команд PRINT и DELETE можно указать узел и шлюз с помощью подстановочных
знаков или опустить параметр «шлюз».

Если адресуемый узел содержит подстановочные знаки * или?, он используется
в качестве шаблона, и печатаются только соответствующие ему маршруты. Знак «*»
соответствует любой строке, а «?» — одному знаку.

Примеры: 157.*.1, 157.*, 127.*, *224*.

Соответствие шаблону поддерживает только команда PRINT.

Диагностические сообщения:

Недопустимое значение MASK вызывает ошибку, если (УЗЕЛ & МАСКА) != УЗЕЛ.

Например:
route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1
— Добавление маршрута завершится ошибкой, поскольку указан недопустимый параметр маски. (Узел & Маска) != Узел.

Примеры:

route PRINT
— отобразить таблицу маршрутов
route PRINT -4
— отобразить таблицу маршрутов только для IPv4
route PRINT -6
— отобразить таблицу маршрутов только для IPv6
route PRINT 157*
— отобразить таблицу маршрутов только для узлов, начинающихся со 157

Если сетевой интерфейс (IF) не задан, то производится попытка найти лучший интерфейс для указанного шлюза.

route ADD 3ffe::/32 3ffe::1
— добавить новый маршрут для узла с IPv6

route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2
— изменить существующий маршрут для узла IPv4

Параметр CHANGE используется только для изменения шлюза или метрики.

route DELETE 157.0.0.0
— удалить маршрут для IPv4.

route DELETE 3ffe::/32
— удалить маршрут для IPV6

Примеры использования команды ROUTE

route print
— отобразить текущую таблицу маршрутов.

Пример отображаемой таблицы:


Список интерфейсов
24…00 50 ba 5d 0c c4 ……D-Link DFE-538TX 10/100 адаптер
13…00 19 db ce 97 9c ……Сетевая карта Realtek RTL8169/8110 Family NIC
1………………………Software Loopback Interface 1
17…00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP
12…00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
===========================================================================

IPv4 таблица маршрута

===========================================================================
Активные маршруты:
===========================================================================

Постоянные маршруты:
===========================================================================

IPv6 таблица маршрута
===========================================================================
Активные маршруты:
===========================================================================

Постоянные маршруты:
Отсутствует

Список интерфейсов
— отображаются идентификаторы (ID), физические (MAC) адреса и названия сетевых адаптеров. В примере:
24
— идентификатор интерфейса
00 50 ba 5d 0c c4
— MAC-адрес сетевого адаптера
D-Link DFE-538TX 10/100 адаптер
— название сетевого адаптера.

Сетевой адрес (Network Destination)
— IP-адрес, адрес сети, или адрес 0.0.0.0
используемый для шлюза по умолчанию (Default Gateway). Это конечная точка маршрута

Маска сети (Netmask)
— маска сети.

Адрес шлюза (Gateway)
— IP-адрес шлюза, через который будет выполняться отправка пакета для достижения конечной точки.

В Windows Vista / Windows 7 / 8 и более поздних версиях, для адресов, достижимых локально, в данной колонке отображается On-link
.
Другими словами, значение On-link
в колонке «Шлюз» означает, что шлюз не используется, адрес назначения достижим напрямую, без
маршрутизации.

Интерфейс (Interface)
— IP-адрес сетевого интерфейса, через который
выполняется доставка пакета конечной точке маршрута.

Метрика (metric)
— значение метрики (1-9999). Метрика представляет собой числовое значение, позволяющее оптимизировать доставку пакета
получателю, если конечная точка маршрута может быть достижима по нескольким разным маршрутам. Чем меньше значение метрики, тем выше приоритет маршрута.

route print 192.*
— отобразить таблицу маршрутов только для адресов, начинающихся с 192.

route add 0.0.0.0 mask 0.0.0.0 192.168.1.1
— установить в качестве шлюза по умолчанию (основного шлюза) адрес 192.168.1.1

route -p add 10.0.0.0 mask 255.0.0.0 10.0.0.1
— добавить маршрут для подсети 10.0.0.0/255.0.0.0 и запомнить его в реестре. Это постоянный статический маршрут.
Если маршрут добавлен без использования параметра -p
то он сохраняется только до перезагрузки системы (до перезапуска сетевого системного программного обеспечения). Если же, при добавлении маршрута искользовался данный параметр, то информация о маршруте записывается в реестр Windows (раздел HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes) и будет использоваться постоянно при активации сетевых интерфейсов.

route delete 10.0.0.0 mask 255.0.0.0
— удалить маршрут для подсети 10.0.0.0/255.0.0.0 .

route add 10.10.10.10 192.168.1.158
— добавить маршрут для узла с IP-адресом 10.10.10.10 . Если маска в команде не задана, то подразумевается ее значение равное 255.255.255.255 , т.е конечная точка назначения является одиночным IP-адресом узла.

route delete 10.10.10.10
— удалить маршрут созданный предыдущей командой

route change 10.0.0.0 mask 255.0.0.0 10.10.10.1
— изменить адрес шлюза для существующего маршрута к сети 10.0.0.0/255.0.0.0
на значение 10.10.10.1
Допускается
использование данной команды только для изменения адреса шлюза и метрики.

route -f
— очистить таблицу маршрутов. После перезагрузки системы, или при перезапуске сетевых подключений таблица маршрутов будет
восстановлена исходя из текущей сетевой конфигурации компьютера. При выполнении команды route -f
из таблицы удаляются все маршруты, которые удовлетворяют условиям:

Не относятся к петлевому интерфейсу (интерфейсу с IP 127.0.0.1 и маской -255.0.0.0)
— не являются маршрутами для многоадресной (multicast) рассылки (IP 224.0.0.1 маска 255.0.0.0)
— не являются узловыми маршрутами (когда маска равна 255.255.255.255) .

При обработке таблицы маршрутов, статические маршруты имеют высший приоритет, по сравнению с маршрутом, использующим для достижения конечной точки шлюз по умолчанию.

Или шлюзом
, называется узел сети с несколькими IP-интерфейсами (содержащими свой MAC-адрес и IP-адрес), подключенными к разным IP-сетям, осуществляющий на основе решения задачи маршрутизации перенаправление дейтаграмм из одной сети в другую для доставки от отправителя к получателю.

Представляют собой либо специализированные вычислительные машины, либо компьютеры с несколькими IP-интерфейсами, работа которых управляется специальным программным обеспечением.

Маршрутизация в IP-сетях

Маршрутизация служит для приема пакета от одного устройства и передачи его по сети другому устройству через другие сети. Если в сети нет маршрутизаторов, то не поддерживается маршрутизация. Маршрутизаторы направляют (перенаправляют) трафик во все сети, составляющие объединенную сеть.

Для маршрутизации пакета маршрутизатор должен владеть следующей информацией:

  • Адрес назначения
  • Соседний маршрутизатор, от которого он может узнать об удаленных сетях
  • Доступные пути ко всем удаленным сетям
  • Наилучший путь к каждой удаленной сети
  • Методы обслуживания и проверки информации о маршрутизации

Маршрутизатор узнает об удаленных сетях от соседних маршрутизаторов или от сетевого администратора. Затем маршрутизатор строит таблицу маршрутизации, которая описывает, как найти удаленные сети.

Если сеть подключена непосредственно к маршрутизатору, он уже знает, как направить пакет в эту сеть. Если же сеть не подключена напрямую, маршрутизатор должен узнать (изучить) пути доступа к удаленной сети с помощью статической маршрутизации (ввод администратором вручную местоположения всех сетей в таблицу маршрутизации) или с помощью динамической маршрутизации.

Динамическая маршрутизация — это процесс протокола маршрутизации, определяющий взаимодействие устройства с соседними маршрутизаторами. Маршрутизатор будет обновлять сведения о каждой изученной им сети. Если в сети произойдет изменение, протокол динамической маршрутизации автоматически информирует об изменении все маршрутизаторы. Если же используется статическая маршрутизация, обновить таблицы маршрутизации на всех устройствах придется системному администратору.

IP-маршрутизация — простой процесс, который одинаков в сетях любого размера. Например, на рисунке показан процесс пошагового взаимодействия хоста А с хостом В в другой сети. В примере пользователь хоста А запрашивает по ping IP-адрес хоста В. Дальнейшие операции не так просты, поэтому рассмотрим их подробнее:

  • В командной строке пользователь вводит ping 172.16.20.2. На хосте А генерируется пакет с помощью протоколов сетевого уровня и ICMP .
  • IP обращается к протоколу ARP для выяснения сети назначения для пакета, просматривая IP-адрес и маску подсети хоста А. Это запрос к удаленному хосту, т.е. пакет не предназначен хосту локальной сети, поэтому пакет должен быть направлен маршрутизатору для перенаправления в нужную удаленную сеть.
  • Чтобы хост А смог послать пакет маршрутизатору, хост должен знать аппаратный адрес интерфейса маршрутизатора, подключенный к локальной сети. Сетевой уровень передает пакет и аппаратный адрес назначения канальному уровню для деления на кадры и пересылки локальному хосту. Для получения аппаратного адреса хост ищет местоположение точки назначения в собственной памяти, называемой кэшем ARP.
  • Если IP-адрес еще не был доступен и не присутствует в кэше ARP, хост посылает широковещательную рассылку ARP для поиска аппаратного адреса по IP-адресу 172.16.10.1. Именно поэтому первый запрос Ping обычно заканчивается тайм-аутом, но четыре остальные запроса будут успешны. После кэширования адреса тайм-аута обычно не возникает.
  • Маршрутизатор отвечает и сообщает аппаратный адрес интерфейса Ethernet, подключенного к локальной сети. Теперь хост имеет всю информацию для пересылки пакета маршрутизатору по локальной сети. Сетевой уровень спускает пакет вниз для генерации эхо-запроса ICMP (Ping) на канальном уровне, дополняя пакет аппаратным адресом, по которому хост должен послать пакет. Пакет имеет IP-адреса источника и назначения вместе с указанием на тип пакета (ICMP) в поле протокола сетевого уровня.
  • Канальный уровень формирует кадр, в котором инкапсулируется пакет вместе с управляющей информацией, необходимой для пересылки по локальной сети. К такой информации относятся аппаратные адреса источника и назначения, а также значение в поле типа, установленное протоколом сетевого уровня (это будет поле типа, поскольку IP по умолчанию пользуется кадрами Ethernet_II). Рисунок 3 показывает кадр, генерируемый на канальном уровне и пересылаемый по локальному носителю. На рисунке 3 показана вся информация, необходимая для взаимодействия с маршрутизатором: аппаратные адреса источника и назначения, IP-адреса источника и назначения, данные, а также контрольная сумма CRC кадра, находящаяся в поле FCS (Frame Check Sequence).
  • Канальный уровень хоста А передает кадр физическому уровню. Там выполняется кодирование нулей и единиц в цифровой сигнал с последующей передачей этого сигнала по локальной физической сети.
  • Сигнал достигает интерфейса Ethernet 0 маршрутизатора, который синхронизируется по преамбуле цифрового сигнала для извлечения кадра. Интерфейс маршрутизатора после построения кадра проверяет CRC, а в конце приема кадра сравнивает полученное значение с содержимым поля FCS. Кроме того, он проверяет процесс передачи на отсутствие фрагментации и конфликтов носителя.
  • Проверяется аппаратный адрес назначения. Поскольку он совпадает с адресом маршрутизатора, анализируется поле типа кадра для определения дальнейших действий с этим пакетом данных. В поле типа указан протокол IP, поэтому маршрутизатор передает пакет процессу протокола IP, исполняемому маршрутизатором. Кадр удаляется. Исходный пакет (сгенерированный хостом А) помещается в буфер маршрутизатора.
  • Протокол IP смотрит на IP-адрес назначения в пакете, чтобы определить, не направлен ли пакет самому маршрутизатору. Поскольку IP-адрес назначения равен 172.16.20.2, маршрутизатор определяет по своей таблице маршрутизации, что сеть 172.16.20.0 непосредственно подключена к интерфейсу Ethernet 1.
  • Маршрутизатор передает пакет из буфера в интерфейс Ethernet 1. Маршрутизатору необходимо сформировать кадр для пересылки пакета хосту назначения. Сначала маршрутизатор проверяет свой кэш ARP, чтобы определить, был ли уже разрешен аппаратный адрес во время предыдущих взаимодействий с данной сетью. Если адреса нет в кэше ARP, маршрутизатор посылает широковещательный запрос ARP в интерфейс Ethernet 1 для поиска аппаратного адреса для IP-адреса 172.16.20.2.
  • Хост В откликается аппаратным адресом своего сетевого адаптера на запрос ARP. Интерфейс Ethernet 1 маршрутизатора теперь имеет все необходимое для пересылки пакета в точку окончательного приема. На рисунке показывает кадр, сгенерированный маршрутизатором и переданный по локальной физической сети.

Кадр, сгенерированный интерфейсом Ethernet 1 маршрутизатора, имеет аппаратный адрес источника от интерфейса Ethernet 1 и аппаратный адрес назначения для сетевого адаптера хоста В. Важно отметить, что, несмотря на изменения аппаратных адресов источника и назначения, в каждом передавшем пакет интерфейсе маршрутизатора, IP-адреса источника и назначения никогда не изменяются. Пакет никоим образом не модифицируется, но меняются кадры.

  • Хост В принимает кадр и проверяет CRC. Если проверка будет успешной, кадр удаляется, а пакет передается протоколу IP. Он анализирует IP-адрес назначения. Поскольку IP-адрес назначения совпадает с установленным в хосте В адресом, протокол IP исследует поле протокола для определения цели пакета.
  • В нашем пакете содержится эхо-запрос ICMP, поэтому хост В генерирует новый эхо-ответ ICMP с IP-адресом источника, равным адресу хоста В, и IP-адресом назначения, равным адресу хоста А. Процесс запускается заново, но в противоположном направлении. Однако аппаратные адреса всех устройств по пути следования пакета уже известны, поэтому все устройства смогут получить аппаратные адреса интерфейсов из собственных кэшей ARP.

В крупных сетях процесс происходит аналогично, но пакету придется пройти больше участков по пути к хосту назначения.

Таблицы маршрутизации

В стеке TCP/IP маршрутизаторы и конечные узлы принимают решения о том, кому передавать пакет для его успешной доставки узлу назначения, на основании так называемых таблиц маршрутизации (routing tables).

Таблица представляет собой типичный пример таблицы маршрутов, использующей IP-адреса сетей, для сети, представленной на рисунке.

Таблица маршрутизации для Router 2

В таблице представлена таблица маршрутизации многомаршрутная, так как содержится два маршрута до сети 116.0.0.0. В случае построения одномаршрутной таблицы маршрутизации, необходимо указывать только один путь до сети 116.0.0.0 по наименьшему значению метрики.

Как нетрудно видеть, в таблице определено несколько маршрутов с разными параметрами. Читать каждую такую запись в таблице маршрутизации нужно следующим образом:

Чтобы доставить пакет в сеть с адресом из поля Сетевой адрес и маской из поля Маска сети, нужно с интерфейса с IP-адресом из поля Интерфейс послать пакет по IP-адресу из поля Адрес шлюза, а «стоимость» такой доставки будет равна числу из поля Метрика.

В этой таблице в столбце «Адрес сети назначения» указываются адреса всех сетей, которым данный маршрутизатор может передавать пакеты. В стеке TCP/IP принят так называемый одношаговый подход к оптимизации маршрута продвижения пакета (next-hop routing) – каждый маршрутизатор и конечный узел принимает участие в выборе только одного шага передачи пакета. Поэтому в каждой строке таблицы маршрутизации указывается не весь маршрут в виде последовательности IP-адресов маршрутизаторов, через которые должен пройти пакет, а только один IP-адрес — адрес следующего маршрутизатора, которому нужно передать пакет. Вместе с пакетом следующему маршрутизатору передается ответственность за выбор следующего шага маршрутизации. Одношаговый подход к маршрутизации означает распределенное решение задачи выбора маршрута. Это снимает ограничение на максимальное количество транзитных маршрутизаторов на пути пакета.

Для отправки пакета следующему маршрутизатору требуется знание его локального адреса, но в стеке TCP/IP в таблицах маршрутизации принято использование только IP-адресов для сохранения их универсального формата, не зависящего от типа сетей, входящих в интерсеть. Для нахождения локального адреса по известному IP-адресу необходимо воспользоваться протоколом ARP.

Одношаговая маршрутизация обладает еще одним преимуществом — она позволяет сократить объем таблиц маршрутизации в конечных узлах и маршрутизаторах за счет использования в качестве номера сети назначения так называемого маршрута по умолчанию – default (0.0.0.0), который обычно занимает в таблице маршрутизации последнюю строку. Если в таблице маршрутизации есть такая запись, то все пакеты с номерами сетей, которые отсутствуют в таблице маршрутизации, передаются маршрутизатору, указанному в строке default. Поэтому маршрутизаторы часто хранят в своих таблицах ограниченную информацию о сетях интерсети, пересылая пакеты для остальных сетей в порт и маршрутизатор, используемые по умолчанию. Подразумевается, что маршрутизатор, используемый по умолчанию, передаст пакет на магистральную сеть, а маршрутизаторы, подключенные к магистрали, имеют полную информацию о составе интерсети.

Кроме маршрута default, в таблице маршрутизации могут встретиться два типа специальных записей — запись о специфичном для узла маршруте и запись об адресах сетей, непосредственно подключенных к портам маршрутизатора.

Специфичный для узла маршрут содержит вместо номера сети полный IP-адрес, то есть адрес, имеющий ненулевую информацию не только в поле номера сети, но и в поле номера узла. Предполагается, что для такого конечного узла маршрут должен выбираться не так, как для всех остальных узлов сети, к которой он относится. В случае, когда в таблице есть разные записи о продвижении пакетов для всей сети N и ее отдельного узла, имеющего адрес N,D, при поступлении пакета, адресованного узлу N,D, маршрутизатор отдаст предпочтение записи для N,D.

Записи в таблице маршрутизации, относящиеся к сетям, непосредственно подключенным к маршрутизатору, в поле «Метрика» содержат нули («подключено»).

Алгоритмы маршрутизации

Основные требования к алгоритмам маршрутизации:

  • точность;
  • простота;
  • надёжность;
  • стабильность;
  • справедливость;
  • оптимальность.

Существуют различные алгоритмы построения таблиц для одношаговой маршрутизации. Их можно разделить на три класса:

  • алгоритмы простой маршрутизации;
  • алгоритмы фиксированной маршрутизации;
  • алгоритмы адаптивной маршрутизации.

Независимо от алгоритма, используемого для построения таблицы маршрутизации, результат их работы имеет единый формат. За счет этого в одной и той же сети различные узлы могут строить таблицы маршрутизации по своим алгоритмам, а затем обмениваться между собой недостающими данными, так как форматы этих таблиц фиксированы. Поэтому маршрутизатор, работающий по алгоритму адаптивной маршрутизации, может снабдить конечный узел, применяющий алгоритм фиксированной маршрутизации, сведениями о пути к сети, о которой конечный узел ничего не знает.

Проста маршрутизация

Это способ маршрутизации не изменяющийся при изменении топологии и состоянии сети передачи данных (СПД).

Простая маршрутизация обеспечивается различными алгоритмами, типичными из которых являются следующие:

  • Случайная маршрутизация – это передача сообщения из узла в любом случайно выбранном направлении, за исключением направлений по которым сообщение поступило узел.
  • Лавинная маршрутизация – это передача сообщения из узла во всех направлениях, кроме направления по которому сообщение поступило в узел. Такая маршрутизация гарантирует малое время доставки пакета, засчет ухудшения пропускной способности.
  • Маршрутизация по предыдущему опыту – каждый пакет имеет счетчик числа пройденных узлов, в каждом узле связи анализируется счетчик и запоминается тот маршрут, который соответствует минимальному значению счетчика. Такой алгоритм позволяет приспосабливаться к изменению топологии сети, но процесс адаптации протекает медленно и неэффективно.

В целом, простая маршрутизация не обеспечивает направленную передачу пакета и имеет низкую эффективности. Основным ее достоинством является обеспечение устойчивой работы сети при выходе из строя различных частей сети.

Фиксированная маршрутизация

Этот алгоритм применяется в сетях с простой топологией связей и основан на ручном составлении таблицы маршрутизации администратором сети. Алгоритм часто эффективно работает также для магистралей крупных сетей, так как сама магистраль может иметь простую структуру с очевидными наилучшими путями следования пакетов в подсети, присоединенные к магистрали, выделяют следующие алгоритмы:

  • Однопутевая фиксированная маршрутизация – это когда между двумя абонентами устанавливается единственный путь. Сеть с такой маршрутизацией неустойчива к отказам и перегрузкам.
  • Многопутевая фиксированная маршрутизация – может быть установлено несколько возможных путей и вводится правило выбора пути. Эффективность такой маршрутизации падает при увеличении нагрузки. При отказе какой-либо линии связи необходимо менять таблицу маршрутизации, для этого в каждом узле связи храниться несколько таблиц.

Адаптивная маршрутизация

Это основной вид алгоритмов маршрутизации, применяющихся маршрутизаторами в современных сетях со сложной топологией. Адаптивная маршрутизация основана на том, что маршрутизаторы периодически обмениваются специальной топологической информацией об имеющихся в интерсети сетях, а также о связях между маршрутизаторами. Обычно учитывается не только топология связей, но и их пропускная способность и состояние.

Адаптивные протоколы позволяют всем маршрутизаторам собирать информацию о топологии связей в сети, оперативно отрабатывая все изменения конфигурации связей. Эти протоколы имеют распределенный характер, который выражается в том, что в сети отсутствуют какие-либо выделенные маршрутизаторы, которые бы собирали и обобщали топологическую информацию: эта работа распределена между всеми маршрутизаторами, выделяют следующие алгоритмы:

  • Локальная адаптивная маршрутизация – каждый узел содержит информацию о состоянии линии связи, длины очереди и таблицу маршрутизации.
  • Глобальная адаптивная маршрутизация – основана на использовании информации получаемой от соседних узлов. Для этого каждый узел содержит таблицу маршрутизации, в которой указано время прохождения сообщений. На основе информации, получаемой из соседних узлов, значение таблицы пересчитывается с учетом длины очереди в самом узле.
  • Централизованная адаптивная маршрутизация – существует некоторый центральный узел, который занимается сбором информации о состоянии сети. Этот центр формирует управляющие пакеты, содержащие таблицы маршрутизации и рассылает их в узлы связи.
  • Гибридная адаптивная маршрутизация – основана на использовании таблицы периодически рассылаемой центром и на анализе длины очереди с самом узле.

Показатели алгоритмов (метрики)

Маршрутные таблицы содержат информацию, которую используют программы коммутации для выбора наилучшего маршрута. Чем характеризуется построение маршрутных таблиц? Какова особенность природы информации, которую они содержат? В данном разделе, посвященном показателям алгоритмов, сделана попытка ответить на вопрос о том, каким образом алгоритм определяет предпочтительность одного маршрута по сравнению с другими.

В алгоритмах маршрутизации используется множество различных показателей. Сложные алгоритмы маршрутизации при выборе маршрута могут базироваться на множестве показателей, комбинируя их таким образом, что в результате получается один гибридный показатель. Ниже перечислены показатели, которые используются в алгоритмах маршрутизации:

  • Длина маршрута.
  • Надежность.
  • Задержка.
  • Ширина полосы пропускания.

Длина маршрута.

Длина маршрута является наиболее общим показателем маршрутизации. Некоторые протоколы маршрутизации позволяют администраторам сети назначать произвольные цены на каждый канал сети. В этом случае длиной тракта является сумма расходов, связанных с каждым каналом, который был траверсирован. Другие протоколы маршрутизации определяют «количество пересылок» (количество хопов), т. е. показатель, характеризующий число проходов, которые пакет должен совершить на пути от источника до пункта назначения через элементы объединения сетей (такие как маршрутизаторы).

Надежность.

Надежность, в контексте алгоритмов маршрутизации, относится к надежности каждого канала сети (обычно описываемой в терминах соотношения бит/ошибка). Некоторые каналы сети могут отказывать чаще, чем другие. Отказы одних каналов сети могут быть устранены легче или быстрее, чем отказы других каналов. При назначении оценок надежности могут быть приняты в расчет любые факторы надежности. Оценки надежности обычно назначаются каналам сети администраторами. Как правило, это произвольные цифровые величины.

Задержка.

Под задержкой маршрутизации обычно понимают отрезок времени, необходимый для передвижения пакета от источника до пункта назначения через объединенную сеть. Задержка зависит от многих факторов, включая полосу пропускания промежуточных каналов сети, очереди в порт каждого маршрутизатора на пути передвижения пакета, перегруженность сети на всех промежуточных каналах сети и физическое расстояние, на которое необходимо переместить пакет. Т. к. здесь имеет место конгломерация нескольких важных переменных, задержка является наиболее общим и полезным показателем.

Полоса пропускания.

Полоса пропускания относится к имеющейся мощности трафика какого-либо канала. При прочих равных показателях, канал Ethernet 10 Mbps предпочтителен любой арендованной линии с полосой пропускания 64 Кбайт/с. Хотя полоса пропускания является оценкой максимально достижимой пропускной способности канала, маршруты, проходящие через каналы с большей полосой пропускания, не обязательно будут лучше маршрутов, проходящих через менее быстродействующие каналы.

Протокол маршрутизации ospf — что такое, принцип работы

Протокол OSPF, наряду с IS-IS, принадлежит к классу протоколов маршрутизации Link State. Принципы этого класса заключается в том, что в памяти маршрутизатора помимо всех оптимальных маршрутов в удаленные сети должна быть полная карта сети, в том числе с действующими связями между другими маршрутизаторами. OSPF изначально создавался как открытый протокол, что сделало его самым распространенным среди протоколов маршрутизации. Его алгоритм позволяет достаточно легко выстраивать стек протоколов для OSPF. Поэтому для специалистов, имеющих отношение к сетям, важно понимание, по крайней мере, общих принципов его работы.

Разберем, что такое сетевой протокол OSPF для чайников.

Принцип работы OSPF

Работа протокола OSPF строится по следующему алгоритму:

  1. Маршрутизаторы производят обмен малыми пакетами HELLO.
  2. После выполнения обмена между ними устанавливаются соседства. Каждый из маршрутизаторов добавляет в специальную локальную таблицу соседей.
  3. Маршрутизаторы выполняют сбор состояний своих связей с соседями (линков). Линки включают id самого маршрутизатора и соседа, сеть и префикс, тип сети и метрику (стоимость линка). После сбора состояний маршрутизатор формирует пакет LSA (Link State Advertisement).
  4. LSA рассылается каждому соседу, который передает пакет дальше по сети.
  5. После получения пакета LSA каждый маршрутизатор добавляет содержащуюся в нем информацию в локальную таблицу LSDB (Link State Database).
  6. В таблице LSDB накапливаются данные обо всех парах маршрутизаторов в пределах сети.
  7. На основании накопленных данных выстраивается полная карта сети, которая включает все действующие маршрутизаторы и образованные между ними связи.
  8. Используя карту, каждый маршрутизатор выполняет поиск самых коротких маршрутов во все сети и формирует из них таблицу маршрутизации.

Учитывая ресурсоемкий и сложный принцип работы OSPF, от каждого маршрутизатора требуется достаточно высокая производительность и значительный объем оперативной памяти.

В случае разрыва связи с соседом у одного из маршрутизаторов, он отправляет по сети новые пакеты LCA, и повторяется вся процедура формирования таблицы маршрутизации. Чтобы исключить постоянный пересчет в крупных сетях с большим количеством маршрутизаторов, в них применяют разделение на отдельные зоны. В каждой из них выполняются автономные вычисления с передачей между зонами только итогового результата. В любой конфигурации OSPF должна присутствовать корневая зона с индексом 0. Малые сети обычно помещаются в ее пределах, а для больших — требуется формирование дополнительных зон.

Пакет OSPF помещается в пакет IP с мультикастовым адресом получателя. Отправителю же в нем соответствует адрес маршрутизатора. Пакет помещается в мультикастовый фрейм, например, в Ethernet. При формировании списков контроля доступа нужно учитывать, что OSPF инкапсулируется непосредственно в IP, а не в UDP или TCP.

Виды OSPF сообщений

Протокол маршрутизации OSPF поддерживает 5 типов сообщений:

  • Hello — периодически направляются для поиска соседей.
  • Database Description DBD — применяются для контроля синхронизации LSDB у соседей.
  • Link state request LSR — запрос у LSA у маршрутизатора, выполняемый принудительно. Применяется в случаях, когда маршрутизатор только включается и ему необходимо определить действующие в сети связи, а также если у него пропала сеть и нужно найти альтернативные маршруты.
  • Link state update LSU — содержит данные о состоянии связей маршрутизатора.
  • Link State Acknowledgment LSAck — подтверждающий пакет, который отправляется в ответ на сообщения других типов.

Hello пакеты отправляются с установленной периодичностью. По умолчанию она составляет 1 раз в 10 секунд для сетей BMA и point-to-point и 1 раз в 40 секунд для сетей NBMA. Также существует понятие Dead-интервала, который по умолчанию равняется 4 Hello-интервалам. Если в течение этого периода маршрутизатор не получает ни одного пакета, то он считает, что сосед отключился. За этим следует пересчет и обновление таблицы маршрутизаторы.

ID маршрутизатора в OSPF

Учитывая, что при построении карты сети маршрутизаторами в качестве узлов выступают другие маршрутизаторы, большое значение имеет наличие у каждого из них уникального имени. Для определения такого имени используется поле Router ID.

Идентификатор записывается в виде IP-адреса IPv4. Неважно, какое он примет значение, главное, чтобы он был уникальным в пределах этой сети. ID маршрутизатора в OSPF можно задать вручную. Если он не задан, то будет присвоен автоматически.

Принцип работы протокола OSPF предусматривает следующий алгоритм назначения ID маршрутизатора:

  1. В случае явного задания идентификатора командой router-id, используется назначенный вручную ID.
  2. В случае если не было ввода router-id, присваивается больший адрес из настроенных на маршрутизаторе loopback интерфейсов.
  3. При отсутствии loopback интерфейсов принимается больший адрес из всех включенных на маршрутизаторе интерфейсов.

Для определения большего адреса используется прямое сравнение по октетам слева направо.

Работа OSPF в сетях с множественным доступом

К основным проблемам OSPF можно отнести работу протокола в сетях с множественным доступом. Распространена топология, при которой множество маршрутизаторов объединяются не через последовательное подключение друг к другу, а через общую сеть. Теоретически OSPF должен выстраивать соседства в пределах общей сети на основе принципа «каждый с каждым». Однако это требует формирования огромных таблиц, работа с которыми сильно перегружает процессор и память.

Решение этой проблемы достигается посредством механизма выбора Designated Router (DR) и Backup Designated Router (BDR), которые представляют собой роли маршрутизаторов. В сети с множественным доступом, к которой подключены более 2 маршрутизаторов, один из них назначается на роль DR, а второй — на роль BDR. При отправке любым маршрутизатором какого-либо пакета, он поступает не всем устройства в сети, а подается на отдельный мультикастовый адрес, доступный только DR и BDR. В свою очередь, DR рассылает пакет всем маршрутизаторам в сети. Такое посредничество значительно снижает нагрузку. BDR выполняет резервную функцию и моментально принимает роль DR при его отключении. После этого среди остальных маршрутизаторов сразу выбирается новый BDR.

Метрика в OSPF

Открытый протокол маршрутизации не устанавливает отдельных требований к расчету метрики и оценки маршрутов. Его стандарт определяет стоимость каждого линка. В случае прохождения маршрута через несколько линков их стоимость суммируется. Оптимальным признается маршрут с наименьшей стоимостью. При этом принципы подсчета стоимости линка зависят от принципов, примененных конкретным производителем сетевого оборудования.

Например, Cisco применяет два варианта расчета стоимости.

В первом случае стоимость линка рассчитывается как обратная величина от его скорости (1000 — для 1 Мбит, 100 — для 10 Мбит, 10 — для 100 Мбит, 1 — для 1 Гбита и т. д.). Этот вариант подойдет при условии, что все маршрутизаторы будут считать стоимость по данному алгоритму, аэто требует использование только устройств Cisco.

Второй способ предусматривает задание стоимости администратором на основе собственного определения качества линка. Этот вариант используют в тех случаях, когда качество линка определяется не одной только его скоростью. В том числе метрика может быть завышена для линка, на котором чаще других появляются ошибки или осуществляется тарификация трафика. Этот способ применим в сетях, где установлены маршрутизаторы разных производителей.

Типы маршрутизаторов OSPF

Принцип действия протокола OSPF предусматривает использование следующих типов маршрутизаторов:

  • IR (Internal Router) — это внутренний маршрутизатор, у которого все интерфейсы ассоциированы только с одной определенной областью.
  • ABR (Area Border Router) — устанавливается в нулевой зоне для обеспечения связи с другими зонами.
  • ASBR (Autonomous System Boundary Router) — обеспечивает объединение автономных систем для обмена маршрутами.

Отдельно следует выделить описанные выше типы маршрутизаторов DR, BDR, обеспечивающие работу протокола в сети с множественным доступом при минимальных нагрузках на оборудование. Маршрутизатор DR в этой паре является основным, а BDR — резервным.

 

 

Подпишитесь на рассылку Смарт-Софт и получите скидку на первую покупку

За подписку мы также пришлем вам white paper «Основы кибербезопасности в коммерческой компании».

Email*

Подписаться

Таблица маршрутизации

— обзор

19.7 Сетевая маршрутизация в реальном времени (RTNR)

Сетевая маршрутизация в реальном времени (RTNR) [52] является преемником DNHR и была развернута в сети дальней связи AT&T в 1991 году. используется сегодня.

В отличие от DNHR, RTNR — это адаптивная схема маршрутизации. Таблица маршрутизации для альтернативных маршрутов может обновляться практически для каждого вызова. Рассмотрим сеть RTNR с N узлами. Когда вызов поступает на узел i и предназначен для узла j в момент времени t , узел i запрашивает узел j , ища информацию о состоянии исходящих каналов от узла j к коммутационному узлу . k кроме узла i , i.е., статус ссылки j k . Обратите внимание, что узел i знает статус всех своих исходящих каналов i k . Поскольку путь ограничен максимум двумя каналами, а каналы с коммутацией каналов являются двунаправленными, узел i может затем определить состояние всех двухканальных путей i k j до пункта назначения j путем объединения информации для ссылки i k и ссылки j k .Теперь, зная эту информацию, и могут принять решение о выборе альтернативного маршрута для этого звонка.

Теперь обсудим тип информации, запрашиваемой от узла j . В случае RTNR узел и запрашивает (в простейшей форме) статус доступности всех исходящих ссылок как двоичный статус: 1, если ссылка доступна, 0, если она недоступна. По сути, RTNR не очень заботится о доступности исходящих каналов от узла j , пока есть доступная емкость.То есть, если эффективная остаточная пропускная способность Rjk, указанная в (19.5.1), которая учитывает любое резервирование соединительной линии, положительна, канал j k доступен. Таким образом, доступность исходящих каналов j k составляет

Ijk = {1, если Rjk≥Rˆ0, иначе

для k = 1,2, …, N, k ≠ i, k ≠ j, где Rˆ — заранее заданное положительное целое число. Хотя Rˆ = 1 было бы наименьшим значением, для которого работает это соотношение, для практических целей было бы безопаснее использовать более высокое значение.Другими словами, Rˆ = 1 означало бы, что линия связи почти перегружена; таким образом, это может быть нежелательно. Таким образом, Rˆ в RTNR определяет порог для указания, где канал сильно загружен (используется) или слабо загружен. Точно так же узел i может определять состояние всех своих исходящих каналов, т. Е.

Iik = {1, если Rik≥Rˆ0, в противном случае

для k = 1,2, …, N, k ≠ i, k ≠ j. Как только узел i принимает информацию о доступности от узла j , он выполняет логическую операцию «И» (∧) для всех промежуточных узлов k , i.e.,

Iik∧Ijk, k = 1,2, …, N, k ≠ i, k ≠ j

, чтобы определить наличие альтернативных путей. Для подмножества путей, для которых результат равен 1, т. Е. Путь доступен, узел i случайным образом выбирает один из путей в качестве альтернативного маршрута для этого вызова. На самом деле, RTNR также выполняет дополнительную операцию «И» для проверки предпочтения доступности коммутаторов, называемую доступностью узла , поскольку ЦП коммутатора может быть перегружен («перегрузка коммутатора») или коммутатор может быть нежелательным из-за технического обслуживания. перед определением используемых путей.

Теперь проиллюстрируем RTNR на простом примере, где также учитывается доступность узлов (рисунок 19.12). Рассмотрим вызов, поступающий в узел 1, предназначенный для узла 2, и предположим, что сеть состоит из 6 узлов. Затем статус доступности узла 1 для его исходящих каналов и узла 2 для его исходящих каналов показан в таблице 19.1.

Рисунок 19.12. Пример RTNR.

Таблица 19.1. Расчет доступности маршрута RTNR.

9125 9128

узел k 1 2 3 4 5 6
На выходе из узла 1 0 1 1 1
Исходящий из узла 2 I 2 k 128 0 1
Доступность пути 1– k –2 0 1 0 1
k 1 1 0 1
Полезные пути 1– k –2 — 90 135

0 1 0 1

В этом примере мы видим, что пути 1–4–2 и 1–6–2 могут использоваться; узел 1 может затем случайным образом выбрать один из них.Важно отметить, что если прямое соединение существует, вызов сначала пытается использовать маршрут прямого соединения, прежде чем пытаться использовать альтернативный маршрут, выбранный вышеупомянутым механизмом.

Исходя из основной операции описанного выше метода, мы можем видеть, что откат не является существенным, поскольку информация о доступности свежая, поскольку коммутатор i принимает это решение на основе запроса после прибытия вызова. Однако важной проблемой в голосовых сетях с коммутацией каналов является сведение к минимуму времени установления вызова.Мы можем видеть, что если запрос сгенерирован после поступления вызова, вызов должен дождаться ответа от узла назначения и вычисления доступности пути , прежде чем вызов сможет попытаться использовать альтернативный маршрут; это время складывается со временем установления вызова, т. е. задержкой после набора номера. В общем, желательно избежать этой задержки. На практике RTNR использует небольшую вариацию. Чтобы выбрать альтернативный путь, поступающий вызов использует результат запроса и доступности пути, уже полученный для последнего вызова для той же пары источник-адресат; он по-прежнему генерирует запрос к своему узлу назначения для этого вызова, который предназначен для использования в будущем вызове, поступающем для той же пары источник-адресат.Этот процесс снижает влияние на задержку установления вызова. Однако это понятие «одноразового старого» вводит возможность того, что путь, случайно выбранный из набора доступных путей, полученных таким образом, может оказаться устаревшим для нового поступающего вызова; таким образом, в этом случае наличие функции возврата позволяет вызову попробовать другой путь из своего списка доступности (для последнего вызова), если первый больше не доступен; в худшем случае, если ни один из путей из списка с одним вызовом не работает, тогда вызов может дождаться результата для своего собственного запроса, чтобы увидеть, доступен ли лучший путь.Тем не менее, одно предостережение: такой возврат от одного к другому может также вызвать дополнительную задержку времени установления вызова; таким образом, это следует использовать только для определенного количества попыток на альтернативных путях для определенного вызова.

RTNR также позволяет запрашивать карту состояния сети на разных уровнях перегрузки. Выбор пути для разных уровней выполняется аналогично тому, что мы обсуждали выше, за исключением того, что разные карты доступности генерируются на основе разных пороговых значений перегрузки.Во всех случаях запрос и обмен запросами для такой информации осуществляется с использованием внеполосной сети SS7. Наконец, RTNR может обрабатывать вызовы с различными требованиями к полосе пропускания («многоскоростной») и, таким образом, поддерживает разные классы услуг; многоскоростной, мультисервисный случай обсуждается позже в главе 21.

Запись в таблицу маршрутизации — обзор

Хеш-цепочки менее затратны в вычислительном отношении, чем асимметричные методы шифрования. SEAD [33] — это безопасный протокол специальной сетевой маршрутизации, который использует цепочки хеширования.Он основан на дизайне DSDV [34]. Он устойчив к нескольким несогласованным злоумышленникам, создающим неправильное состояние маршрутизации на любом другом узле, даже несмотря на наличие активных злоумышленников или взломанных узлов в сети.

• Вектор расстояния, упорядоченный по назначению (DSDV)

Улучшение векторной маршрутизации по расстоянию для использования в одноранговых сетях заключается в добавлении порядкового номера в каждую запись таблицы маршрутизации (DSDV [34]). Использование этого порядкового номера предотвращает петли маршрутизации, вызванные неупорядоченными обновлениями.Каждый узел периодически передает обновление маршрутизации каждому из своих соседних маршрутизаторов, содержащее информацию из его собственной таблицы маршрутизации. Каждый узел поддерживает четный порядковый номер, который он включает в каждое отправляемое им обновление маршрутизации, и каждая запись в таблице маршрутизации узла помечается самым последним порядковым номером, который он знает для этого пункта назначения. Когда узел обнаруживает неработающую связь с соседом, узел создает новое обновление маршрутизации для этого соседа в качестве пункта назначения с «бесконечной» метрикой и следующим нечетным порядковым номером после четного порядкового номера в соответствующей записи таблицы маршрутизации.Когда узел получает обновление маршрутизации, он предпочитает, чтобы этот недавно объявленный маршрут для пункта назначения был предпочтительным, если порядковый номер больше, чем в соответствующей записи, в настоящее время в таблице маршрутизации узла, или если порядковые номера равны и новая метрика ниже, чем в записи таблицы; если порядковый номер в обновлении меньше текущего порядкового номера в записи таблицы, обновление маршрутизации игнорируется.

Злонамеренный узел может анонсировать обновления с меньшим числом переходов для определенных пунктов назначения.Его соседи, получив их, следовательно, сделают этот вредоносный узел первым переходом к этим адресатам, полагая, что у него есть кратчайший путь к этим адресатам. Таким образом, злонамеренный узел сможет запускать атаки типа «отказ в обслуживании» против этих пунктов назначения, имея все маршруты к ним через себя. Затем он может отбрасывать пакеты, предназначенные для этих пунктов назначения. SEAD предотвращает подобные атаки.

Для защиты протокола маршрутизации SEAD использует эффективные односторонние цепочки хеширования [35].Каждый узел в SEAD использует конкретный единственный следующий элемент из своей хеш-цепочки в каждом обновлении маршрутизации, которое он отправляет о себе (метрика 0). Односторонняя хеш-функция обеспечивает свойство, согласно которому другой узел может только увеличивать метрику при обновлении маршрутизации, но не может ее уменьшать. Из-за свойств односторонней хэш-функции, учитывая любое значение в цепочке хеширования, злоумышленник не может сгенерировать какое-либо значение в цепочке, которое будет использоваться этим узлом в будущем обновлении, которое он отправит о себе. Точно так же для каждой записи в ее обновлении маршрутизации, описывающей маршрут к другому месту назначения, цепочка хеширования этого узла назначения позволяет аутентифицировать метрику в этой записи узлами, принимающими ее.

Предполагается, что верхняя граница может быть размещена на диаметре специальной сети, и пусть эта граница будет обозначена как м — 1. Таким образом, все метрики в любом обновлении маршрутизации меньше м . Если хеш-цепочка узла представляет собой последовательность значений h 0 , h 2 ,…, h n и n делится на m , то для порядкового номера i в некоторой записи обновления маршрутизации, пусть k = ( n / m ) — i .Если значение метрики для записи в таблице маршрутов — j , 0 ≤ j < m , то элемент h km + j из списка цепочки хэшей используется для аутентификации маршрутизации. обновить запись для этого порядкового номера.

Когда узел в SEAD отправляет обновление маршрутизации, узел включает одно значение хеш-функции с каждой записью в этом обновлении. Если запись предназначена для себя, узел устанавливает адрес в этой записи на свой собственный адрес узла, метрику на 0, порядковый номер на свой следующий порядковый номер и хеш-значение для первого элемента в своей собственной группе. элементы цепочки хеширования, соответствующие этому порядковому номеру.Если узел перечисляет запись для какого-то другого пункта назначения в обновлении, он устанавливает адрес в этой записи на адрес этого узла назначения, метрику и порядковый номер на значения для этого пункта назначения в его таблице маршрутизации, а значение хэша — на хэш хеш-значения, полученного в записи обновления маршрутизации, из которой он узнал этот маршрут к этому пункту назначения. Такое использование значения хеш-функции, соответствующего порядковому номеру и метрике в записи обновления маршрутизации, не позволяет любому узлу объявлять маршрут к какому-либо пункту назначения, требуя более высокий порядковый номер, чем собственный текущий порядковый номер этого пункта назначения, из-за одностороннего характера хеш-цепочка.Точно так же ни один узел не может анонсировать маршрут лучше, чем те, для которых он получил объявление, поскольку метрика в существующем маршруте не может быть уменьшена.

При получении обновления маршрутизации для каждой записи в этом обновлении узел на основе порядкового номера и метрики в полученной записи, а также порядкового номера и метрики этого последнего предшествующего аутентичного хэш-значения для этого пункта назначения хэширует хеш-значение. получил в этой записи правильное количество раз, необходимое для того, чтобы результирующее значение равнялось предыдущему аутентичному хэш-значению.Если эти два значения равны, запись является подлинной и обрабатывается; в противном случае полученная запись игнорируется.

Таблицы маршрутизации в компьютерной сети

Маршрутизаторы:
Маршрутизатор — это сетевое устройство, которое пересылает пакеты данных между компьютерной сетью. Это устройство обычно подключено к двум или более разным сетям. Когда пакет данных поступает на порт маршрутизатора, маршрутизатор считывает адресную информацию в пакете, чтобы определить, на какой порт будет отправлен пакет. Например, маршрутизатор предоставляет вам доступ в Интернет, соединяя вашу локальную сеть с Интернетом.

Когда пакет достигает маршрутизатора, он проверяет IP-адрес получателя полученного пакета и принимает соответствующие решения о маршрутизации. Маршрутизаторы используют таблицы маршрутизации , чтобы определить, на какой интерфейс будет отправлен пакет. В таблице маршрутизации перечислены все сети, для которых известны маршруты. Таблица маршрутизации каждого маршрутизатора уникальна и хранится в оперативной памяти устройства.

Таблица маршрутизации:
Таблица маршрутизации — это набор правил, часто просматриваемых в табличном формате, который используется для определения того, куда будут направляться пакеты данных, проходящие по сети Интернет-протокола (IP).Все IP-устройства, включая маршрутизаторы и коммутаторы, используют таблицы маршрутизации. См. Ниже таблицу маршрутизации:

  Назначение   Маска подсети   Интерфейс 
 128.75.43.0 255.255.255.0 Eth0
 128.75.43.0 255.255.255.128 Eth2
 192.12.17.5 255.255.255.255 Eth4
 default Eth3 

Запись, соответствующая конфигурации шлюза по умолчанию , является сетевым адресатом 0.0.0.0 с сетевой маской (сетевой маской) 0.0.0.0. Маска подсети маршрута по умолчанию всегда 255.255.255.255.

Записи в таблице IP-маршрутизации:
Таблица маршрутизации содержит информацию, необходимую для пересылки пакета по наилучшему пути к месту назначения. Каждый пакет содержит информацию о его происхождении и назначении. Таблица маршрутизации предоставляет устройству инструкции по отправке пакета на следующий переход на его маршруте по сети.

Каждая запись в таблице маршрутизации состоит из следующих записей:

  1. Идентификатор сети:
    Идентификатор сети или пункт назначения, соответствующий маршруту.
  2. Маска подсети:
    Маска, которая используется для сопоставления IP-адреса назначения с идентификатором сети.
  3. Следующий переход:
    IP-адрес, на который пересылается пакет
  4. Исходящий интерфейс:
    Исходящий интерфейс, пакет должен выйти, чтобы достичь сети назначения.
  5. Метрика:
    Обычно метрика используется для указания минимального количества переходов (пересекаемых маршрутизаторов) для идентификатора сети.

Записи таблицы маршрутизации могут использоваться для хранения следующих типов маршрутов:

  • Идентификаторы сети с прямым подключением
  • Идентификаторы удаленной сети
  • Маршруты хоста
  • Маршрут по умолчанию
  • Назначение

Когда маршрутизатор получает пакет , он проверяет IP-адрес назначения и просматривает свою таблицу маршрутизации , чтобы выяснить, какой интерфейсный пакет будет отправлен.

Как заполняются таблицы маршрутизации?
Есть способы поддерживать таблицу маршрутизации:

Эти таблицы маршрутизации можно поддерживать вручную или динамически.В динамической маршрутизации устройства автоматически создают и поддерживают свои таблицы маршрутизации, используя протоколы маршрутизации для обмена информацией об окружающей топологии сети. Таблицы динамической маршрутизации позволяют устройствам «прослушивать» сеть и реагировать на такие события, как сбои устройств и перегрузка сети. Таблицы для статических сетевых устройств не изменяются, если сетевой администратор не изменит их вручную.

Процесс определения маршрута (поиск идентификатора подсети с помощью таблицы маршрутизации):
Считайте, что сеть разделена на 4 подсети, как показано на рисунке выше.IP-адреса четырех подсетей:

 200.1.2.0 (подсеть a)
200.1.2.64 (Подсеть b)
200.1.2.128 (Подсеть c)
200.1.2.192 (Подсеть d) 

Тогда Таблица маршрутизации , поддерживаемая внутренним маршрутизатором, выглядит так:

128

Назначение Маска подсети Интерфейс
200.1 .255.192 a
200.1.2.64 255.255.255.192 b
200.1.2.128 255.255.255.192 c
200.1.2.192 255.255.255.192 d 0,08

по умолчанию

Чтобы найти свою правильную подсеть (идентификатор подсети), маршрутизатор выполняет побитовое И для IP-адреса назначения, указанного в пакете данных, и все маски подсети одну за другой.

  • Если обнаружено только одно совпадение, маршрутизатор пересылает пакет данных на соответствующий интерфейс.
  • Если найдено более одного совпадения, маршрутизатор пересылает пакет данных на интерфейс, соответствующий самой длинной маске подсети.
  • Если совпадений нет, маршрутизатор пересылает пакет данных на интерфейс, соответствующий записи по умолчанию.

Пример-1: GATE-CS-2004 | Вопрос 55

Пример-2: GATE IT 2006 | Вопрос 63

Обратите внимание, , что таблицы маршрутизации не относятся к устройствам Cisco. Даже в вашей операционной системе Windows есть таблица маршрутизации, которую можно отобразить с помощью команды печати маршрута

Внимание, читатель! Не прекращайте учиться сейчас.Практикуйте экзамен GATE задолго до самого экзамена с помощью предметных и общих викторин, доступных в серии тестов GATE Test Series Course .

Изучите все концепции GATE CS с бесплатными живыми классами на нашем канале YouTube.

Типы протоколов маршрутизации — полное руководство (Основы!)

Маршрутизация — одна из самых фундаментальных областей сети, которую должен знать администратор. Протоколы маршрутизации определяют, как ваши данные попадают к месту назначения, и помогают сделать этот процесс маршрутизации как можно более плавным.Однако существует так много различных типов протоколов маршрутизации, что может быть очень сложно отслеживать их все!

Протоколы маршрутизатора включают:

  • Протокол информации о маршрутизации (RIP)
  • Протокол внутреннего шлюза (IGRP)
  • Сначала откройте кратчайший путь (OSPF)
  • Протокол внешнего шлюза (EGP)
  • Расширенный протокол маршрутизации внутреннего шлюза (EIGRP)
  • Протокол пограничного шлюза (BGP)
  • Промежуточная система — промежуточная система (IS-IS)

Прежде чем мы перейдем к рассмотрению самих протоколов маршрутизации, важно сосредоточиться на категориях протоколов.

Все протоколы маршрутизации можно разделить на следующие:

  • Протоколы вектора расстояния или состояния канала
  • Протоколы внутреннего шлюза (IGP) или протоколы внешнего шлюза (EGP)
  • Классовые или бесклассовые протоколы

Протоколы вектора расстояния и состояния канала

Вектор расстояния Состояние связи
Отправляет всю таблицу маршрутизации во время обновлений Предоставляет только информацию о состоянии канала
Отправляет периодические обновления каждые 30-90 секунд Использует запускаемые обновления
Передает обновления Мультикастинг обновления
Уязвимость к петлям маршрутизации Отсутствие риска петель маршрутизации
RIP, IGRP OSPF, IS-IS

Протоколы маршрутизации с вектором расстояния — это протоколы , использующие расстояние для выработки наилучшего пути маршрутизации для пакетов в сети.

Эти протоколы измеряют расстояние на основе того, сколько переходов данные должны пройти, чтобы добраться до места назначения. Количество переходов — это, по сути, количество маршрутизаторов, необходимое для достижения пункта назначения.

Обычно протоколы вектора расстояния отправляют соседним устройствам таблицу маршрутизации, полную информации. Такой подход делает их низкими для администраторов, поскольку они могут быть развернуты без особой необходимости в управлении. Единственная проблема заключается в том, что им требуется большая пропускная способность для отправки в таблицах маршрутизации, а также могут возникать петли маршрутизации.

Протоколы маршрутизации состояния канала

Протоколы состояния канала используют другой подход к поиску наилучшего пути маршрутизации, поскольку они обмениваются информацией с другими маршрутизаторами, находящимися поблизости. Маршрут рассчитывается на основе скорости пути к пункту назначения и стоимости ресурсов.

Протоколы маршрутизации состояния канала

используют алгоритм для решения этой проблемы. Одно из ключевых отличий от протокола вектора расстояния заключается в том, что протоколы состояния канала не отправляют таблицы маршрутизации; вместо этого маршрутизаторы уведомляют друг друга при обнаружении изменений маршрута.

Маршрутизаторы

, использующие протокол состояния канала, создают таблицы трех типов; Таблица соседей , таблица топологии и таблица маршрутизации . В таблице соседей хранятся сведения о соседних маршрутизаторах, использующих протокол маршрутизации состояния канала, в таблице топологии хранится вся топология сети, а в таблице маршрутизации хранятся наиболее эффективные маршруты.

IGP и EGP

Протоколы маршрутизации также можно разделить на Internal Gateway Protocols ( IGP ) или Exterior Gateway Protocols ( EGP ).

IPG

IGP — это протоколы маршрутизации, которые обмениваются информацией о маршрутах с другими маршрутизаторами в одной автономной системе (AS). AS определяется как одна сеть или набор сетей, находящихся под управлением одного предприятия. Таким образом, компания AS отделена от ISP AS.

Каждый из следующих элементов классифицируется как IGP:

  • Сначала откройте кратчайший путь (OSPF)
  • Протокол информации о маршрутизации (RIP)
  • Промежуточная система к промежуточной системе (IS-IS)
  • Расширенный протокол маршрутизации внутреннего шлюза (EIGRP)

EGP

С другой стороны, EGP — это протоколы маршрутизации, которые используются для передачи маршрутной информации между маршрутизаторами в разных автономных системах.Эти протоколы более сложные, и BGP — единственный протокол EGP, с которым вы, вероятно, столкнетесь. Однако важно отметить, что существует протокол EGP с именем EGP.

Примеры EGP:

  • Протокол пограничного шлюза (BGP)
  • Протокол внешнего шлюза (EGP)
  • Протокол междоменной маршрутизации ISO (IDRP)

Типы протоколов маршрутизации

Временная шкала протоколов маршрутизации

  • 1982 —
  • египетских фунтов

  • 1985 — ИГРП
  • 1988 — RIPv1
  • 1990 — IS-IS
  • 1991 — OSPFv2
  • 1992 — EIGRP
  • 1994 — RIPv2
  • 1995 —
  • лв.

  • 1997 — РИПнг
  • 1999 — BGPv6 и OSPFv3
  • 2000 — IS-ISv6

Протокол информации о маршрутизации (RIP)

Routing Information Protocol или RIP — один из первых создаваемых протоколов маршрутизации.RIP используется как в локальных сетях (LAN), так и в глобальных сетях (WAN), а также работает на прикладном уровне модели OSI . Существует несколько версий RIP, включая RIPv1 и RIPv2 . Исходная версия или RIPv1 определяет сетевые пути на основе IP-адреса назначения и количества переходов в пути.

RIPv1 взаимодействует с сетью, передавая свою таблицу IP-адресов всем маршрутизаторам, подключенным к сети.RIPv2 немного сложнее этого и отправляет свою таблицу маршрутизации на многоадресный адрес. RIPv2 также использует аутентификацию для большей безопасности данных и выбирает маску подсети и шлюз для будущего трафика. Основным ограничением RIP является то, что он имеет максимальное количество переходов, равное 15, что делает его непригодным для больших сетей.

См. Также: Средства мониторинга LAN

Протокол внутреннего шлюза (IGRP)

Internal Gateway Protocol или IGRP — это протокол векторной маршрутизации на расстоянии, разработанный Cisco.IGRP был разработан на основе основ, заложенных в RIP, для более эффективного функционирования в более крупных подключенных сетях, и удалил ограничение на 15 переходов , которое было установлено на RIP. IGRP использует такие показатели, как пропускная способность, задержка, надежность и нагрузка, для сравнения жизнеспособности маршрутов в сети. Однако в настройках IGRP по умолчанию используются только полоса пропускания и задержка.

IGRP идеально подходит для больших сетей, поскольку он передает обновления каждые 90 секунд и имеет максимальное количество переходов 255 .Это позволяет поддерживать сети большего размера, чем такой протокол, как RIP. IGRP также широко используется, поскольку он устойчив к петлям маршрутизации, потому что он автоматически обновляется при изменении маршрута в сети.

Сначала откройте кратчайший путь (OSPF)

Протокол

Open Shortest Path First или OSPF — это протокол IGP состояния канала, который был специально разработан для IP-сетей с использованием алгоритма Shortest Path First ( SPF ) . Алгоритм маршрутизации SPF используется для вычисления связующего дерева кратчайшего пути, чтобы гарантировать эффективную передачу данных пакетов.Маршрутизаторы OSPF поддерживают базы данных с подробной информацией об окружающей топологии сети. Эта база данных заполнена данными, взятыми из объявлений о состоянии канала (LSA) , отправленных другими маршрутизаторами. LSA — это пакеты, которые содержат подробную информацию о том, сколько ресурсов займет данный путь.

OSPF также использует алгоритм Дейкстры для пересчета сетевых путей при изменении топологии. Этот протокол также относительно безопасен, поскольку он может аутентифицировать изменения протокола для обеспечения безопасности данных.Он используется многими организациями, поскольку масштабируется до больших сред. Изменения топологии отслеживаются, и OSPF может повторно вычислить маршруты скомпрометированных пакетов, если ранее использованный маршрут был заблокирован.

Протокол внешнего шлюза (EGP)

Exterior Gateway Protocol или EGP — это протокол, который используется для обмена данными между хостами шлюза, которые соседствуют друг с другом в автономных системах. Другими словами, EGP предоставляет маршрутизаторам форум для обмена информацией в разных доменах.Самым ярким примером EGP является сам Интернет. Таблица маршрутизации протокола EGP включает известные маршрутизаторы, стоимость маршрута и сетевые адреса соседних устройств. EGP широко использовался более крупными организациями, но с тех пор был заменен на BGP.

Причина, по которой этот протокол потерял популярность, заключается в том, что он не поддерживает многопутевые сетевые среды. Протокол EGP работает, сохраняя базу данных о ближайших сетях и путях маршрутизации, которые может потребоваться для их достижения.Эта информация о маршруте отправляется на подключенные маршрутизаторы. По прибытии устройства могут обновлять свои таблицы маршрутизации и выполнять более осознанный выбор пути по всей сети.

Расширенный протокол маршрутизации внутреннего шлюза (EIGRP)

Enhanced Internal Gateway Routing Protocol или EIGRP — это протокол векторной маршрутизации на расстоянии, который используется для сетей IP , AppleTalk и NetWare . EIGRP — это проприетарный протокол Cisco, который был разработан как продолжение исходного протокола IGRP.При использовании EIGRP маршрутизатор берет информацию из таблиц маршрутизации своих соседей и записывает их. У соседей запрашивается маршрут, и когда происходит изменение, маршрутизатор уведомляет своих соседей об изменении. Конечным результатом этого является информирование соседних маршрутизаторов о том, что происходит на соседних устройствах.

EIGRP оснащен рядом функций для максимальной эффективности, включая Reliable Transport Protocol ( RTP ) и Diffusing Update Algorithm ( DUAL ).Передача пакетов становится более эффективной, поскольку маршруты пересчитываются для ускорения процесса конвергенции.

Протокол пограничного шлюза (BGP)

Border Gateway Protocol или BGP — это протокол маршрутизации в Интернете, который классифицируется как протокол вектора дальнего пути. Протокол BGP был разработан для замены EGP децентрализованным подходом к маршрутизации. Алгоритм выбора наилучшего пути BGP используется для выбора наилучших маршрутов для передачи пакетов данных. Если у вас нет никаких пользовательских настроек, BGP выберет маршруты с кратчайшим путем к месту назначения.

Однако многие администраторы предпочитают изменять решения о маршрутизации в соответствии с критериями в соответствии со своими потребностями. Алгоритм выбора наилучшего пути маршрутизации можно настроить, изменив атрибут сообщества затрат BGP. BGP может принимать решения о маршрутизации на основе таких факторов, как вес, локальное предпочтение, локально сгенерированный, длина AS_Path, тип источника, дискриминатор с несколькими выходами, eBGP через iBGP, метрика IGP, идентификатор маршрутизатора, список кластеров и IP-адрес соседа.

BGP отправляет обновленные данные таблицы маршрутизатора только в случае каких-либо изменений.В результате отсутствует автоматическое обнаружение изменений топологии, что означает, что пользователь должен настраивать BGP вручную. С точки зрения безопасности, протокол BGP может быть аутентифицирован, поэтому только утвержденные маршрутизаторы могут обмениваться данными друг с другом.

Промежуточная система — промежуточная система (IS-IS)

Intermediate System-to-Intermediate System (IS-IS) — это протокол состояния канала, протокол IP-маршрутизации и протокол IGPP, используемые в Интернете для отправки информации IP-маршрутизации. IS-IS использует модифицированную версию алгоритма Дейкстры .Сеть IS-IS состоит из ряда компонентов, включая конечные системы (пользовательские устройства), промежуточные системы (маршрутизаторы), области и домены.

В рамках IS-IS маршрутизаторы организованы в группы, называемые областями, а несколько областей сгруппированы вместе, чтобы составить домен. Маршрутизаторы внутри области размещаются на уровне 1, а маршрутизаторы, соединяющие сегменты вместе, классифицируются как уровень 2. IS-IS использует два типа сетевых адресов; Точка доступа к сетевой службе ( NSAP ) и Заголовок сетевого объекта ( NET ).

Протоколы классовой и бесклассовой маршрутизации

Протоколы маршрутизации

также можно разделить на классовые и бесклассовые протоколы маршрутизации. Различие между этими двумя способами сводится к тому, как они выполняют обновления маршрутизации. Споры между этими двумя формами маршрутизации часто называют классовой или бесклассовой маршрутизацией.

Протоколы классической маршрутизации

Протоколы классической маршрутизации

не отправляют информацию о маске подсети во время обновления маршрутизации, но протоколы бесклассовой маршрутизации отправляют. RIPv1 и IGRP считаются протоколами класса. Эти два являются классическими протоколами, потому что они не включают информацию о маске подсети в свои обновления маршрутизации. Протоколы классовой маршрутизации с тех пор устарели в связи с протоколами бесклассовой маршрутизации.

Протоколы бесклассовой маршрутизации

Как упоминалось выше, протоколы классовой маршрутизации были заменены протоколами бесклассовой маршрутизации. Протоколы бесклассовой маршрутизации отправляют информацию о маске подсети IP во время обновления маршрутизации .RIPv2, EIGRP, OSPF и IS-IS — это все типы протоколов маршрутизации классов, которые включают в обновления информацию о маске подсети.

Протоколы динамической маршрутизации

Протоколы динамической маршрутизации — это еще один тип протоколов маршрутизации, который критически важен для современных сетей корпоративного уровня. Протоколы динамической маршрутизации позволяют маршрутизаторам автоматически добавлять информацию в свои таблицы маршрутизации от подключенных маршрутизаторов . С помощью этих протоколов маршрутизаторы отправляют обновления топологии всякий раз, когда изменяется топологическая структура сети.Это означает, что пользователю не нужно беспокоиться об обновлении сетевых путей.

Одним из основных преимуществ протоколов динамической маршрутизации является то, что они сокращают необходимость в управлении конфигурациями. Обратной стороной является то, что это происходит за счет выделения ресурсов, таких как ЦП и пропускная способность, чтобы они работали на постоянной основе. OSPF, EIGRP и RIP считаются протоколами динамической маршрутизации.

Протоколы и метрики маршрутизации

Независимо от того, какой тип протокола маршрутизации используется, будут четкие метрики, которые будут использоваться для измерения того, какой маршрут лучше всего выбрать.Протокол маршрутизации может идентифицировать несколько путей к сети назначения, но должен иметь возможность определить, какой из них наиболее эффективен. Метрики позволяют протоколу определять, какой путь маршрутизации следует выбрать для обеспечения наилучшего обслуживания сети.

Самый простой показатель, который следует учитывать, — это количество переходов . Протокол RIP использует счетчик переходов для измерения расстояния, которое требуется для того, чтобы пакет данных достиг места назначения. Чем больше прыжков должно пройти пакет, тем дальше он должен пройти.Таким образом, протокол RIP направлен на выбор маршрутов с минимизацией переходов, где это возможно. Помимо количества переходов, существует множество показателей, которые используются протоколами IP-маршрутизации. Используемые показатели включают:

  • Число переходов — Измеряет количество маршрутизаторов, через которые пакет должен пройти
  • Пропускная способность — Выбирает путь маршрутизации, на основе которого самая высокая пропускная способность
  • Delay — Выбирает путь маршрутизации, на основании которого требуется наименьшее время
  • Надежность — Оценивает вероятность отказа сетевого соединения на основе количества ошибок и предыдущих отказов
  • Стоимость — значение, настроенное администратором или IOS, которое используется для измерения стоимости маршрута на основе одной метрики или диапазона метрик
  • Нагрузка — выбирает путь маршрутизации на основе использования трафика подключенных каналов

Показатели по типу протокола

Тип протокола Тип используемой метрики
RIP Количество переходов
RIPv2 Число переходов
IGRP Полоса пропускания, задержка
OSPF Пропускная способность
BGP Выбрано администратором
EIGRP Полоса пропускания, задержка
IS-IS Выбрано администратором

Административное расстояние

Административное расстояние — одна из важнейших характеристик маршрутизаторов.Административный — это термин, используемый для описания числового значения, которое используется для определения приоритета того, какой маршрут следует использовать при наличии двух или более доступных маршрутов подключения. Когда один или несколько маршрутов расположены, протокол маршрутизации с меньшим административным расстоянием выбирается в качестве маршрута . Существует административное расстояние по умолчанию, но администраторы также могут настроить свое собственное.

Административное расстояние Источник маршрута Расстояние по умолчанию
Подключаемый интерфейс 0
Статический маршрут 1
Расширенный сводный маршрут IGRP 5
Внешний BGP 20
Внутренний расширенный IGRP 90
ИГРП 100
OSPF 110
IS-IS 115
RIP 120
Внешний маршрут EIGRP170
Внутренний BGP 200
Неизвестно 255

Чем меньше числовое значение административного расстояния, тем больше маршрутизатор доверяет маршруту.Чем ближе числовое значение к нулю, тем лучше. Протоколы маршрутизации используют административное расстояние в основном как способ оценки надежности подключенных устройств. Вы можете изменить административное расстояние протокола, используя процесс определения расстояния в режиме субконфигурации.

Заключительные слова

Как видите, протоколы маршрутизации можно определять и продумывать множеством различных способов. Ключ состоит в том, чтобы рассматривать протоколы маршрутизации как протоколы вектора расстояния или протоколы состояния канала, протоколы IGP или EGP, а также классовые или бесклассовые протоколы.Это общие категории, к которым относятся такие распространенные протоколы маршрутизации, как RIP, IGRP, OSPF и BGP.

Конечно, во всех этих категориях у каждого протокола есть свои нюансы в том, как он измеряет лучший путь маршрутизации, будь то количество переходов, задержка или другие факторы. Изучение всего, что вы можете об этих протоколах, которые вы используете во время повседневной работы в сети, очень поможет вам как на экзамене, так и в реальной среде.

Часто задаваемые вопросы о протоколах маршрутизации

Как по-разному работают алгоритмы Беллмана-Форда и Дейкстра в протоколах маршрутизации?

Оба алгоритма Беллмана-Форда и Дейкстры включают расчет стоимости (расстояния) прохождения ссылки.Основное различие между методологиями состоит в том, что расчет затрат Bellman-Ford может быть положительным или отрицательным, а Дейкстра работает только с положительным результатом. Другие отличия заключаются в том, что Bellman-Ford информирует только соседние устройства, но включает расчеты стоимости для других устройств, в то время как Dijkstra будет транслировать информацию всем, а только ограничить свои расчеты с точки зрения затрат для соседей.

В чем разница между пересылкой и маршрутизацией?

Пересылка — это внутренний процесс для сетевого устройства, например коммутатора.Это просто требует, чтобы устройство передавало данные, полученные на одном интерфейсе, через другой интерфейс. Маршрутизация включает в себя вычисление пути к месту назначения, прежде чем решить, через какой интерфейс передавать входящие данные.

Почему BGP предпочтительнее OSPF?

BGP предлагает большую гибкость и больший контроль для создателей и владельцев устройства, чем OSPF. Процессы BGP включают варианты того, какие маршруты следует объявлять и какие уведомления будут приниматься устройством. Он предлагает больший контроль над выбором маршрута.Это обеспечивает большую гибкость, чтобы избежать перегрузки на определенных каналах, которые OSPF автоматически предполагает, чтобы обеспечить самый быстрый маршрут.

См. Также: Инструменты для traceroute и tracert

Обзор

RIP и RIPng | RIP User Guide

RIP — это протокол внутреннего шлюза (IGP), который
использует алгоритм вектора расстояния для определения наилучшего маршрута к
пункт назначения, используя количество переходов в качестве метрики.

В сети RIP таблица переадресации каждого маршрутизатора распределена
между узлами посредством лавинной рассылки информации таблицы маршрутизации.Поскольку изменения топологии распространяются по всей сети, каждый
узел поддерживает тот же список адресатов. Затем пакеты маршрутизируются
в эти пункты назначения на основе расчетов стоимости пути, выполненных в каждом
узел в сети.

Примечание:

Обычно термин RIP означает
RIP версии 1 и RIP версии 2.

Этот раздел содержит следующие разделы:

Протоколы векторно-дистанционной маршрутизации

Протоколы векторно-дистанционной маршрутизации передают информацию о маршрутизации
который включает в себя вектор расстояния, обычно выражаемый как число
хмеля до места назначения.Эта информация разливается по всем протоколам.
интерфейсы через равные промежутки времени (каждые 30 секунд в случае RIP)
для создания карты сети, которая хранится в локальной топологии каждого узла
база данных. На рисунке 1 показано, как
работает дистанционно-векторная маршрутизация.

Рисунок 1: Протокол расстояния-вектора

На Рисунке 1, Маршрутизаторы
На соседних интерфейсах A и B включен RIP. Маршрутизатор A знал
RIP соседствует с маршрутизаторами C, D и E, которые находятся на расстоянии 1, 2 и 3 перехода,
соответственно. Маршрутизатор B знает RIP-соседей. Маршрутизаторы X, Y,
и Z, которые находятся на расстоянии 1, 2 и 3 прыжков соответственно.Каждые 30 секунд,
каждый маршрутизатор рассылает всю информацию о своей таблице маршрутизации из всех поддерживающих RIP
интерфейсы. В этом случае лавинная рассылка обменивается информацией таблицы маршрутизации.
по ссылке RIP.

Когда маршрутизатор A получает информацию о маршрутизации от маршрутизатора B, он
добавляет 1 к счетчику прыжков, чтобы определить новое количество прыжков. Например,
Маршрутизатор X имеет счетчик переходов 1, но когда маршрутизатор A импортирует маршрут
до X новое количество переходов равно 2. Импортированный маршрут также включает информацию
о том, где был изучен маршрут, чтобы был импортирован исходный маршрут
в качестве маршрута к маршрутизатору X через маршрутизатор B с числом переходов 2.

Когда получено несколько маршрутов к одному и тому же хосту, RIP использует
алгоритм вектора расстояния, чтобы определить, какой путь импортировать в
таблица пересылки. Импортируется маршрут с наименьшим количеством переходов.
Если существует несколько маршрутов с одинаковым количеством переходов, импортируются все.
в таблицу пересылки, и трафик отправляется по путям в
круговая мода.

Обзор протокола RIP

Протокол RIP IGP использует алгоритм Беллмана-Форда или вектор расстояния для определения наилучшего маршрута к пункту назначения.RIP использует
количество прыжков считается метрикой. RIP позволяет хостам и маршрутизаторам обмениваться
информация для расчета маршрутов через IP-сеть. РВАТЬ
предназначен для использования в качестве IGP в достаточно однородных сетях.
среднего размера.

Операционная система Junos® (ОС Junos) поддерживает RIP версии 1
и 2.

Примечание.

RIP не поддерживается для многоточечных интерфейсов.

пакетов RIP версии 1 содержат минимально необходимую информацию
для маршрутизации пакетов через сеть. Однако эта версия RIP делает
не поддерживает аутентификацию или разбиение на подсети.

RIP использует порт 520 протокола дейтаграмм пользователя (UDP).

RIP имеет следующие архитектурные ограничения:

  • Самый длинный сетевой путь не может превышать 15 переходов (при условии, что
    что каждая сеть или переход имеет стоимость 1).

  • RIP зависит от подсчета до бесконечности для разрешения определенных
    необычные ситуации — когда сеть состоит из нескольких сотен
    маршрутизаторов, а когда образуется петля маршрутизации, количество времени и
    пропускная способность сети, необходимая для разрешения следующего перехода, может быть большой.

  • RIP использует только фиксированную метрику для выбора маршрута. Другой
    IGP используют дополнительные параметры, такие как измеренная задержка, надежность,
    и загрузить.

пакетов RIP

пакетов RIP содержат следующие поля:

  • Команда — указывает, является ли пакет запросом
    или ответное сообщение. Сообщения с запросами ищут информацию о маршрутизаторе.
    таблица маршрутизации. Ответные сообщения отправляются периодически, а также когда
    получено сообщение с запросом.Сообщения с периодическими ответами называются сообщениями обновления . Сообщения об обновлении содержат команду и
    поля версии и 25 мест назначения (по умолчанию), каждое из которых
    включает IP-адрес назначения и метрику для достижения этого пункта назначения.

    Примечание:

    Начиная с Junos OS Release 11.1, три дополнительных команды
    типы полей доступны для поддержки каналов запроса RIP. Когда ты
    настроить интерфейс для каналов запроса RIP, поле команды
    указывает, является ли пакет запросом на обновление, ответом на обновление,
    или обновите подтверждающее сообщение.Соседние интерфейсы отправляют обновления
    спрос, а не периодически. Эти типы командных полей действительны только
    на интерфейсах, настроенных для каналов запроса RIP. Для более подробной информации
    Для получения дополнительной информации см. Обзор каналов запроса RIP.

  • Номер версии — версия RIP,
    роутер работает.

  • Идентификатор семейства адресов — семейство адресов, используемое
    исходящий маршрутизатор. Семья всегда ИП.

  • Адрес — IP-адрес, включенный в пакет.

  • Метрика — значение метрики, объявленной для адреса.

  • Mask — Маска, связанная с IP-адресом (RIP версии 2
    Только).

  • Следующий переход — IP-адрес маршрутизатора следующего перехода (RIP
    только версия 2).

Обмен информацией о маршрутизации в сети RIP осуществляется по запросу RIP
и пакеты ответа RIP. Только что загруженный маршрутизатор может транслировать
запрос RIP на всех интерфейсах с поддержкой RIP. Любые роутеры с RIP
по этим ссылкам получите запрос и ответите, отправив ответ RIP
пакет сразу к маршрутизатору.Ответный пакет содержит
информация таблицы маршрутизации, необходимая для создания локальной копии
карта топологии сети.

При отсутствии пакетов запроса RIP все маршрутизаторы RIP транслируют
пакет ответа RIP каждые 30 секунд на всех интерфейсах с поддержкой RIP.
Широковещательная передача RIP — это основной способ передачи информации о топологии.
разливается по сети.

Как только маршрутизатор узнает о конкретном пункте назначения через
RIP, запускает таймер. Каждый раз, когда он получает новый пакет ответа
с информацией о пункте назначения роутер сбрасывает таймер
до нуля.Однако, если маршрутизатор не получает обновлений о конкретном
пункт назначения на 180 секунд, он удаляет пункт назначения из своего RIP
таблица маршрутизации.

В дополнение к обычной передаче пакетов RIP каждые
30 секунд, если маршрутизатор обнаруживает нового соседа или обнаруживает, что
интерфейс недоступен, генерирует срабатывающее обновление. Новый
информация о маршрутизации немедленно передается по всем интерфейсам с поддержкой RIP,
и изменение отражается во всех последующих ответных пакетах RIP.

Максимальное увеличение числа переходов

Для успешной маршрутизации трафика в сети RIP требуется
что каждый узел в сети поддерживает одно и то же представление топологии.Информация о топологии передается между соседями RIP каждые 30 секунд.
Если маршрутизатор A находится на большом расстоянии от нового хоста, маршрутизатор B, маршрут
к B может потребоваться значительное время для распространения по сети
и быть импортированными в таблицу маршрутизации маршрутизатора A. Если два роутера
находятся на расстоянии 5 переходов друг от друга, маршрутизатор A не может импортировать маршрут
к маршрутизатору B в течение 2,5 минут после того, как маршрутизатор B будет подключен к сети (30 секунд
за хоп). Для большого количества прыжков задержка становится недопустимой.
Чтобы предотвратить чрезмерное увеличение этой задержки, RIP обеспечивает
максимальное количество переходов 15.Любой префикс, длина которого превышает 15 переходов.
away рассматривается как недостижимый, и ему назначается бесконечное количество переходов.
Это максимальное количество переходов называется диаметром сети .

Методы разделения горизонта и обратной эффективности

Потому что RIP функционирует путем периодического лавинного заполнения всей маршрутизации
table в сеть, он генерирует большой трафик. Раскол
методы горизонта и обратного яда могут помочь уменьшить количество
сетевой трафик, исходящий от хостов RIP, и осуществляет передачу
маршрутизации информации более эффективно.

Если маршрутизатор получает набор объявлений о маршруте на определенном
интерфейс, RIP определяет, что эти рекламные объявления не нужно
повторно передаваться через тот же интерфейс. Этот метод, известный как split horizon , помогает ограничить объем трафика маршрутизации RIP.
удаляя информацию, которую другие соседи на этом интерфейсе
уже узнали. На рисунке 2 показано
пример техники разделения горизонта.

Рисунок 2: Пример разделения горизонта

На рисунке 2 маршрутизатор A объявляет
маршруты к маршрутизаторам C, D и E к маршрутизатору B.В этом примере маршрутизатор A
может достичь маршрутизатора C за 2 прыжка. Когда маршрутизатор A объявляет маршрут к
Маршрутизатор B, маршрутизатор B импортирует его как маршрут к маршрутизатору C через маршрутизатор
А через 3 прыжка. Если маршрутизатор B затем повторно объявил этот маршрут маршрутизатору A,
Маршрутизатор A будет импортировать его как маршрут к маршрутизатору C через маршрутизатор B в
4 хмеля. Однако в рекламе от маршрутизатора B к маршрутизатору A нет необходимости,
потому что маршрутизатор A уже может достичь маршрута за 2 перехода. Раскол
горизонтальная техника помогает уменьшить дополнительный трафик за счет исключения этого типа
маршрутной рекламы.

Точно так же метод обратного яда помогает оптимизировать
передача маршрутной информации и сокращение времени достижения
сетевая конвергенция. Если маршрутизатор A узнает о недоступных маршрутах через
один из своих интерфейсов, он объявляет эти маршруты как недоступные (переход
количество 16) из того же интерфейса. На рис. 3 показан пример техники обратного отравления.

Рисунок 3: Пример обратного отравления

На рисунке 3 маршрутизатор A изучает
через один из его интерфейсов, который направляется к маршрутизаторам C, D и E,
недоступен.Маршрутизатор A повторно объявляет эти маршруты через тот же интерфейс
как недостижимый. Объявление сообщает маршрутизатору B, что маршрутизаторы C,
D и E определенно недоступны через маршрутизатор A.

Ограничения однонаправленного подключения

Поскольку RIP обрабатывает информацию о маршрутизации исключительно на основе
получение обновлений таблицы маршрутизации не может гарантировать двунаправленную связь.
Как показано на рисунке 4, RIP
сети ограничены своей однонаправленной связностью.

Рисунок 4: Ограничения
Однонаправленное подключение

На рисунке 4 маршрутизаторы
A и D передают информацию о своей таблице маршрутизации маршрутизатору B.Потому что
путь к маршрутизатору E имеет наименьшее количество переходов при маршрутизации через маршрутизатор
A, этот маршрут импортируется в таблицу пересылки маршрутизатора B. Однако,
предположим, что маршрутизатор A может передавать трафик, но не получает трафик
от маршрутизатора B из-за недоступного канала или недопустимой политики маршрутизации.
Если единственный маршрут к маршрутизатору E проходит через маршрутизатор A, любой трафик, предназначенный для
для маршрутизатора A потеряна, потому что двунаправленное соединение никогда не было
учредил.

OSPF устанавливает двунаправленное соединение с трехсторонним
рукопожатие.

Обзор маршрутов

| VPC | Google Cloud

маршрутов Google Cloud определяют пути, которые сетевой трафик берет от виртуального
машины (ВМ) в другие места назначения. Эти направления могут быть внутри
ваша сеть Google Cloud Virtual Private Cloud (VPC) (например,
в другой ВМ) или вне ее.

В сети VPC маршрут состоит из одного пункта назначения
префикс в формате CIDR и одиночный следующий переход . Когда экземпляр в
Сеть VPC отправляет пакет, Google Cloud доставляет
к следующему переходу маршрута, если адрес назначения пакета находится в пределах
диапазон назначения маршрута.

На этой странице представлен обзор работы маршрутов в Google Cloud.

Маршрутизация в Google Cloud

Каждая сеть VPC использует масштабируемую распределенную виртуальную маршрутизацию.
механизм. Нет физического устройства, назначенного сети. Некоторые
маршруты могут применяться выборочно, но маршрутизация
стол для
Сеть VPC определяется на уровне сети VPC.

У каждого экземпляра ВМ есть контроллер, который информируется обо всех применимых
маршруты из таблицы маршрутизации сети.Каждый пакет
выход из ВМ доставляется на соответствующий следующий переход применимого маршрута
на основе порядка маршрутизации. Когда вы добавляете или удаляете маршрут,
набор изменений распространяется на контроллеры ВМ с помощью
в итоге последовательный дизайн.

Типы маршрутов

В следующих таблицах показано, как Google Cloud классифицирует маршруты в
Сети VPC.

Тип и назначение Следующий переход Примечания
Системные маршруты
Системные маршруты по умолчанию

0.0.0.0 / 0 для IPv4

:: / 0 для IPv6
Интернет-шлюз по умолчанию Относится ко всей сети VPC

Можно удалить или заменить

Маршрут подсети
Создается автоматически для каждого
IP-адрес подсети
диапазон
Сеть VPC
Перенаправляет пакеты виртуальным машинам и внутренним балансировщикам нагрузки
Применяется ко всей сети VPC

Создается, обновляется и удаляется автоматически в Google Cloud, когда вы
создать, изменить или удалить подсеть или дополнительный диапазон IP-адресов
подсеть.

Пользовательские маршруты
Статический маршрут
Поддерживает различные направления
Действительный статический маршрут следующего перехода Для внутренних балансировщиков нагрузки TCP / UDP на следующем переходе, применяется только к трафику TCP и UDP.
в том же регионе, что и балансировщик нагрузки, если только
глобальный доступ
включен.

Для других статических следующих переходов: маршрут может применяться к определенным виртуальным машинам, если вы
указать сетевые теги на маршруте.Если вы не укажете сетевой тег,
маршрут применяется ко всем виртуальным машинам в сети VPC.

Динамический маршрут
Пункты назначения, которые не конфликтуют с маршрутами подсети или статическими маршрутами
Одноранговый узел сеанса BGP на облачном маршрутизаторе Маршруты добавляются и удаляются автоматически облачными маршрутизаторами
в вашей сети VPC.

Маршруты применяются к виртуальным машинам в соответствии с сетью VPC.
динамическая маршрутизация
режим.

Маршруты пиринга
Маршрут подсети пиринга
Представляет диапазон IP-адресов подсети в сети, подключенной с помощью
Пиринг сети VPC
Одноранговая сеть VPC
Перенаправляет пакеты виртуальным машинам и внутренним балансировщикам нагрузки на одноранговом узле
сеть
Применяется ко всей сети VPC

Создается, обновляется и удаляется автоматически в Google Cloud, когда
подсети создаются, изменяются или удаляются в одноранговой сети.

Пользовательский маршрут пиринга
Пользовательский статический или пользовательский динамический маршрут в подключенной сети
с использованием VPC Network Peering
Следующий переход в одноранговой сети VPC Применяются пользовательские маршруты пиринга, поддерживаемые статическими маршрутами в одноранговой сети.
следующее:

  • Если пользовательский маршрут пиринга поддерживается пользовательским статическим маршрутом,
    следующий переход — это внутренний балансировщик нагрузки TCP / UDP, маршрут применяется к TCP и UDP
    трафик в том же регионе, что и балансировщик нагрузки, если только
    глобальный доступ
    включен в правиле переадресации балансировщика нагрузки.
  • Если пользовательский маршрут пиринга поддерживается пользовательским статическим маршрутом
    чей следующий переход — , а не , внутренний балансировщик нагрузки TCP / UDP, и , которые
    пользовательский статический маршрут не имеет связанного тега: маршрут применяется к
    все виртуальные машины в сети VPC, которая импортирует маршрут.
  • Статические маршруты в одноранговой сети, использующие сетевые теги или чьи
    следующие переходы — это интернет-шлюз по умолчанию, никогда не экспортируются при пиринге.
    отношение.

Применяются пользовательские маршруты пиринга, поддерживаемые динамическими маршрутами в одноранговой сети
согласно
динамическая маршрутизация
режим сети VPC, импортирующей маршруты.

Системные маршруты по умолчанию

При создании VPC
сети, он включает генерируемый системой
Маршрут IPv4 по умолчанию
( 0.0.0.0/0 ). Если вы включите внешние IPv6-адреса на
подсеть, генерируемый системой IPv6 по умолчанию
маршрут ( :: / 0 ) добавлен в эту сеть VPC.Маршруты по умолчанию обслуживают
для этих целей:

Google Cloud только использует маршрут по умолчанию, если маршрут с более конкретным
пункт назначения не относится к пакету , а не . Для получения информации о том, как пункт назначения
специфика и приоритет маршрута используются для выбора маршрута, см. маршрутизацию
порядок.

Если вы хотите полностью изолировать свою сеть от
Интернет или если вам нужно заменить маршрут по умолчанию на собственный маршрут, вы
можно удалить маршрут по умолчанию:

  • Только IPv4: если вы хотите перенаправить интернет-трафик на другой следующий переход, вы
    может заменить маршрут по умолчанию пользовательским статическим или динамическим маршрутом.Для
    Например, вы можете заменить его на настраиваемый статический маршрут, следующим переходом которого является
    прокси ВМ.

  • IPv4 и IPv6: если удалить маршрут по умолчанию и не заменять его, пакеты
    предназначенные для диапазонов IP-адресов, не охваченных другими маршрутами, отбрасываются.

    Если вы удалите маршрут по умолчанию для IPv6, виртуальные машины не смогут подключиться к другим виртуальным машинам.
    регионы, использующие свои IPv6-адреса.

Важно: Если у вас нет настраиваемых статических маршрутов IPv4, которые соответствуют маршрутизации
требования для частного доступа к Google,
удаление маршрута по умолчанию IPv4 может отключить частный доступ Google.Частный доступ к Google не поддерживается с адресов IPv6.

Маршруты подсети

Маршруты подсети

определяют пути к таким ресурсам, как виртуальные машины и внутренние балансировщики нагрузки.
в сети VPC.

Каждая подсеть имеет как минимум один маршрут подсети, назначение которого совпадает с основным
Диапазон IP-адресов подсети. Если в подсети есть вторичные диапазоны IP-адресов, есть
соответствующий маршрут подсети для каждого из его вторичных диапазонов IP-адресов. Для большего
информацию о диапазонах IP-адресов подсети, см. сети и
подсети.

Ни один другой маршрут не может иметь пункт назначения, который соответствует или является более конкретным (имеет
более длинная маска подсети), чем пункт назначения маршрута подсети.

Маршруты подсети всегда имеют самые конкретные пункты назначения. Они не могут быть
переопределено другими маршрутами, даже если другой маршрут имеет более высокий приоритет. Это
потому что Google Cloud считает специфичность назначения важнее приоритета
при выборе маршрута. Google Cloud использует 0 в качестве приоритета для всех
маршруты подсети.

Следующие пункты описывают, как создаются и удаляются маршруты подсети:

  • При добавлении подсети Google Cloud
    создает соответствующий маршрут подсети для основного IP-адреса подсети
    диапазон.

  • Создание сетей VPC в автоматическом режиме
    маршрут подсети для основных диапазонов IP-адресов каждого из автоматически созданных
    подсети. Вы можете удалить эти подсети, только если конвертируете автоматический режим
    Сеть VPC в настраиваемый режим.

  • Вы не можете удалить маршрут подсети, пока не измените или не удалите подсеть:

    • Когда вы удаляете дополнительный диапазон из подсети, маршрут подсети для этого
      вторичный диапазон удаляется автоматически.

    • При удалении подсети все маршруты подсети как для основной, так и для дополнительной
      диапазоны удаляются автоматически.Вы не можете удалить маршрут подсети для
      основной диапазон подсети любым другим способом.

Количество маршрутов подсети в сети VPC ограничено
по Максимальное количество диапазонов IP-адресов подсети
(первичная и вторичная)
.

Примечание: Межсетевой экран с подразумеваемым запретом на вход
правило блокирует все входящие
связь даже из других экземпляров в той же сети VPC.
Сети VPC по умолчанию включают предварительно заполненные правила брандмауэра, в том числе правило входа, которое
позволяет проникать из источников в 10.128.0.0 / 9 диапазон. Для настраиваемых подсетей и
сети VPC в настраиваемом режиме, вам нужно будет создать свои собственные
вход разрешает правила брандмауэра.

Статические маршруты

Статические маршруты определяются с использованием параметров статических маршрутов.
и поддержка следующих переходов статического маршрута. Вы можете создать
статические маршруты одним из двух способов:

Примечание: Для сетей VPC с автоматическим режимом не создавайте пользовательские статические
маршруты, пункты назначения которых соответствуют диапазону 10.128.0.0/9 . Этот диапазон
содержит текущие и будущие диапазоны IP-адресов подсети для автоматического
созданы подсети.Статические маршруты с пунктами назначения внутри 10.128.0.0/9 , которые
в сети в автоматическом режиме может быть неожиданно отключен, когда новый
Становится доступным регион Google Cloud. Это происходит потому, что новая подсеть
маршрут создается для диапазона первичных IP-адресов нового региона
автоматически созданная подсеть. Для получения дополнительной информации см. Автоматический режим IP.
диапазоны и рекомендации для автоматического режима
Сети VPC.

Динамические маршруты

Динамические маршруты управляются облачными маршрутизаторами в VPC
сеть.Их пункты назначения всегда представляют собой диапазоны IP-адресов за пределами вашего
Сеть VPC, полученная от однорангового узла BGP. Используются динамические маршруты
по:

Сети

VPC игнорируют все назначения, полученные от
Облачные маршрутизаторы, если места назначения соответствуют любому из этих критериев:

Допустимо, чтобы пункт назначения динамического маршрута к содержал (чтобы иметь
более короткая маска подсети, чем диапазон IP-адресов подсети. В этом случае пакеты
отправляется только на следующий переход динамического маршрута, если они не подходят для подсети
пункт назначения маршрута.Самый широкий возможный пункт назначения — 0.0.0.0/0 .

Пиринговые маршруты подсети

Маршруты пиринговых подсетей определяют пути к ресурсам, использующим подсети в другой подсети.
Сеть VPC подключена с помощью
Пиринг сети VPC. Другая сеть называется
одноранговая сеть VPC.

Одноранговые сети разделяют маршруты подсетей следующим образом:

  • Одноранговые сети всегда экспортируют маршруты своих подсетей для всех первичных и вторичных
    Диапазоны IP-адресов.

  • Одноранговые сети автоматически импортируют маршруты подсети до тех пор, пока маршрут
    пункт назначения (диапазон IP-адресов подсети) не является частным публичным IP-адресом
    адрес.Вы можете настроить одноранговый узел для импорта
    маршруты подсети, которые при необходимости используют частные общедоступные IP-адреса.

  • Импортированные маршруты подсети пиринга не могут быть удалены, если вы не отключите
    вглядываясь. При отключении пиринга все импортированные маршруты подсети пиринга
    автоматически удаляется.

  • Google Cloud запрещает диапазоны IP-адресов подсети
    конфликты
    между одноранговыми сетями.

Совокупное количество маршрутов подсети в сети VPC и
маршруты одноранговой подсети, импортированные из всех одноранговых сетей, ограничены
по Максимальное количество диапазонов IP-адресов подсети
(первичная и вторичная)
.

Пользовательские маршруты пиринга

Вы можете настроить одноранговые сети для экспорта или импорта пользовательских
маршруты. В контексте,
настраиваемых маршрутов означает как статические, так и динамические маршруты в VPC
сеть.

Даже если сеть VPC настроена на экспорт своего пользовательского
маршруты, он не включает эти типы маршрутов:

Комбинированное количество статических и динамических маршрутов в VPC.
сеть плюс пользовательские маршруты пиринга, импортированные из всех одноранговых сетей,
ограничено:

  • Максимальное количество статических маршрутов в группе пиринга
  • Максимальное количество динамических маршрутов в группе пиринга

Применяемость и порядок

Применимые маршруты

Каждый экземпляр имеет набор из применимых маршрутов , которые являются подмножеством всех
маршруты в сети VPC.Применимые маршруты являются возможными
пути выхода, которые может принять пакет при отправке из экземпляра.

  • Подсеть и маршруты подсети пиринга применяются ко всем экземплярам. Маршруты подсети и
    маршруты пиринговых подсетей соответствуют подсетям в вашей сети VPC
    и импортированные из одноранговых сетей.

  • Созданный системой маршрут по умолчанию применяется ко всем экземплярам. Можно
    заменить созданный системой маршрут по умолчанию на
    пользовательский статический маршрут, если хотите.

  • Пользовательские статические маршруты могут применяться ко всем экземплярам или конкретным экземплярам.
    Статические маршруты с атрибутом тега применяются к экземплярам, ​​имеющим такой же
    сетевой тег. Если на маршруте нет
    сетевой тег, маршрут применяется ко всем экземплярам в сети.

    • Когда пользовательский статический маршрут имеет следующий переход для экземпляра виртуальной машины, маршрут всегда
      действителен, даже если виртуальная машина следующего прыжка удалена, выключена или неисправна.
      Для получения дополнительной информации см. Экземпляры как следующие прыжки.

    • Когда пользовательский статический маршрут имеет следующий переход Cloud VPN туннель,
      маршрут всегда действителен, если туннель открыт. Для получения информации о том, как
      Google Cloud обрабатывает маршруты для туннелей, когда они не работают, см.
      когда туннели
      вниз
      в документации Cloud VPN.

  • Динамические маршруты применяются к экземплярам на основе режима динамической маршрутизации
    Сеть VPC.

    Если сеть VPC использует режим региональной динамической маршрутизации, все ее
    Облачные маршрутизаторы создают динамические маршруты только для изученных префиксов в
    их местный регион.Если в сети VPC используется глобальная динамическая
    режим маршрутизации, все его облачные маршрутизаторы создают динамические маршруты для
    выучил приставки во всех регионах.

    • Облачные маршрутизаторы автоматически отбрасывают изученные префиксы, которые
      соответствуют недоступным следующим переходам (туннели Cloud VPN или
      Вложения Cloud Interconnect). В зависимости от вашей сети,
      Облачным маршрутизаторам может потребоваться до 40 секунд обработки, чтобы
      удалить динамический маршрут с неработающим следующим переходом.
  • Для некоторого трафика с балансировкой нагрузки применимые маршруты исходят из внешнего
    ваша сеть VPC.
    Дополнительные сведения см. В разделе «Балансировщик нагрузки».
    обратные пути.

Маршрутный заказ

Когда экземпляр отправляет пакет, Google Cloud пытается выбрать один маршрут.
из набора применимых маршрутов в соответствии со следующим порядком маршрутизации.

Примечание. Определенный трафик с балансировкой нагрузки следует по специальному обратному пути балансировщика нагрузки.
Этот порядок маршрутизации применяется только к трафику , а не к трафику , отправляемому обратно через
внешний балансировщик нагрузки HTTP (S), балансировщик нагрузки SSL-прокси, балансировщик нагрузки TCP-прокси или балансировщик сетевой нагрузки.

  1. Маршруты подсети и маршруты одноранговой подсети считаются первыми , потому что
    эти маршруты имеют самые конкретные пункты назначения.
    Google Cloud рассматривает маршруты пиринговых подсетей так же, как и
    учитывает маршруты локальной подсети.

    • Если IP-адрес назначения для пакета соответствует подсети или пирингу
      назначение маршрута подсети:

      • Пакеты доставляются на внутренний IP-адрес работающей ВМ
        экземпляр или настроенный внутренний балансировщик нагрузки.

      • Пакеты, предназначенные для остановленного экземпляра виртуальной машины, отбрасываются.

      • Пакеты, предназначенные для внутреннего IP-адреса, отбрасываются, если нет
        Ресурс Google Cloud настроен на использование IP-адреса.

    • Google Cloud не позволяет создавать собственный статический маршрут
      который имеет такой же или более конкретный пункт назначения, чем любой маршрут подсети или
      любой одноранговый маршрут подсети.

    • Облачные маршрутизаторы игнорируют изученные префиксы, которые точно соответствуют
      пункт назначения маршрута подсети или маршрута одноранговой подсети.

    • Облачные маршрутизаторы

      игнорируют изученные префиксы, которые соответствуют в пределах (имеют
      более длинная маска подсети, чем) маршрут подсети или маршрут одноранговой подсети.

  2. Если пакет не может быть маршрутизирован по маршруту подсети или пиринговому маршруту подсети,
    Google Cloud ищет статический, динамический или пиринговый пользовательский маршрут, который
    имеет наиболее конкретное предназначение. Например, 10.240.1.0/24 — это более
    конкретный пункт назначения, чем 10.240.0.0/16 для пакетов с 10.240.1.4
    пункт назначения.

  3. Если несколько маршрутов имеют один и тот же самый конкретный пункт назначения,
    Google Cloud использует следующий процесс для выбора маршрута из маршрута .
    кандидаты
    . Кандидаты в маршруты — это статические, динамические и настраиваемые пиринговые сети.
    маршруты с одним и тем же самым конкретным пунктом назначения.

    1. Если ваша сеть VPC подключена к одноранговым сетям,
      Google Cloud исключает все кандидаты в маршруты, кроме тех из
      одиночная сеть VPC.

      • Если , один или несколько кандидатов маршрута существуют в вашем локальном
        Сеть VPC, Google Cloud игнорирует весь маршрут
        кандидаты из одноранговых сетей.

      • Если нет кандидатов маршрута существует в вашем локальном
        Сеть VPC, но вместо этого существует в нескольких узлах
        сетей, Google Cloud игнорирует все кандидаты в маршруты, кроме
        для тех, что определены в , одна одноранговых сетей. Google Cloud
        использует внутренний алгоритм для выбора одноранговой сети, и это
        алгоритм не учитывает приоритет маршрута на этом этапе в
        процесс.Если вы подключаетесь к новой сети или отключаетесь от
        существующая одноранговая сеть, которая может изменить один VPC
        сеть Google Cloud выбирает.

    2. Google Cloud исключает все кандидаты в маршруты, кроме тех, которые
      имеют высший приоритет. Если это приведет к единственному оставшемуся маршруту,
      Google Cloud отправляет пакет на следующий переход.

    3. Если несколько кандидатов маршрута имеют одинаковый наивысший приоритет,
      Google Cloud продолжает процесс исключения, используя маршрутные
      следующий переход и тип маршрута.Если это приведет к единственному оставшемуся маршруту,
      Google Cloud отправляет пакет на следующий переход.

      1. Пользовательские статические маршруты со следующими переходами Экземпляр следующего перехода, IP следующего перехода
        или туннель Next Hop VPN являются наиболее предпочтительными. Все остальные маршруты
        кандидаты удаляются, если кандидат маршрута использует этот следующий переход
        тип существует.

      2. Пользовательские динамические маршруты являются вторыми по предпочтению.

      3. Пользовательские статические маршруты с внутренним балансировщиком нагрузки TCP / UDP на следующих переходах являются третьими
        наиболее предпочтительно.

      4. Пользовательские статические маршруты с использованием следующего перехода по умолчанию для интернет-шлюза:
        наименее предпочтительный.

    4. Если от кандидатов маршрута остается более одного маршрута, эти маршруты
      все существуют в одной сети VPC, имеют одинаковые
      с наивысшим приоритетом и имеют тот же тип маршрута или используют тот же следующий
      тип хмеля. Google Cloud распределяет трафик следующим образом:

      • Если следующий переход — , а не , внутренний балансировщик нагрузки TCP / UDP, Google Cloud
        распределяет пакеты между следующими переходами кандидатов маршрута
        используя хэш из пяти кортежей для сходства, реализуя
        равная стоимость многолучевого распространения
        (ECMP).Расчеты хэша выполняются для каждого пакета, в то время как
        отправлено, в зависимости от количества кандидатов маршрута на данном этапе. Если
        количество вариантов маршрута изменяется, хеш может направить
        пакет с тем же хешем из пяти кортежей на другой следующий переход.

      • Если следующим переходом является внутренний балансировщик нагрузки TCP / UDP, Google Cloud использует
        внутренний алгоритм для выбора единственного балансировщика нагрузки следующего перехода,
        игнорирование следующих переходов другого балансировщика нагрузки, даже если они
        связаны с маршрутами, имеющими одинаковый приоритет.Видеть
        Особенности внутреннего балансировщика нагрузки TCP / UDP
        next hops для получения дополнительных сведений об этом
        ситуация.

  4. Если подходящее место назначения не найдено, Google Cloud отбрасывает
    пакет, ответивший с ошибкой назначения ICMP или недоступностью сети.

Специальные пути возврата

В сетях

VPC есть специальные маршруты для определенных услуг. Эти
маршруты определены за пределами вашей сети VPC, в Google
производственная сеть.Они не отображаются в вашей сети VPC.
таблица маршрутизации. Вы не можете удалить или переопределить их, даже если вы удалите или
заменить маршрут по умолчанию в вашей сети VPC. Однако вы можете
контролировать трафик к этим службам и от них с помощью правил брандмауэра.

Пути возврата балансировщика нагрузки

Если вы используете один из следующих балансировщиков нагрузки Google Cloud,
В Google Cloud есть специальные маршруты для балансировщиков нагрузки и их
связанные проверки работоспособности, которые более подробно описаны ниже
разделы.

Пути возврата для балансировщиков нагрузки HTTP (S), прокси SSL и TCP

Для этих типов балансировщиков нагрузки системы Google Front End (GFE) служат в качестве прокси.
Когда клиент отправляет запрос на балансировщик нагрузки, прокси завершает TCP
сеанс и открывает новый сеанс TCP с вашей внутренней виртуальной машиной. Маршруты определены
за пределами вашей сети VPC облегчить общение с GFE
прокси на серверные виртуальные машины и с внутренних виртуальных машин на прокси GFE.

Для получения дополнительной информации см. Следующие страницы:

Пути возврата для балансировщика сетевой нагрузки

Когда клиент в Интернете отправляет запрос TCP или UDP через
балансировщик сетевой нагрузки на внутреннюю виртуальную машину, Google Cloud использует определенные маршруты
за пределами вашей сети VPC, чтобы облегчить связь с
client на вашу внутреннюю виртуальную машину и с вашей внутренней виртуальной машины на клиент.

Для получения дополнительной информации см. Балансировка сетевой нагрузки.

Проверки работоспособности для всех типов балансировщика нагрузки

пакетов, отправленных из систем проверки работоспособности Google Cloud, имеют источники в виде
описано в разделе «Диапазоны IP-адресов и правила брандмауэра».
Маршруты, которые облегчают обмен данными между проверкой работоспособности Google Cloud
системы зондирования и серверные виртуальные машины существуют за пределами вашего VPC
сеть и не может быть удалена. Однако ваша сеть VPC должна
правила брандмауэра позволяют разрешить трафик из этих систем.

ИАП

Маршрут для 35.235.240.0/20 включен для поддержки пересылки TCP с использованием
ИАП. Продукция Google
сеть не принимает маршруты для 35.235.240.0/20 из других источников на
Интернет.

Облачный DNS

Маршрут к 35.199.192.0/19 поддерживает подключение к пересылке
цели, использующие частную маршрутизацию или альтернативную
серверы имен, использующие частную маршрутизацию.
Производственная сеть Google не принимает маршруты по номеру 35.199.192.0 / 19 из
другие источники в Интернете.

Параметры статического маршрута

Каждый статический маршрут состоит из следующих компонентов:

  • Название и Описание. Эти поля определяют маршрут. Имя
    требуется, но описание не обязательно. Каждый маршрут в вашем проекте должен
    иметь уникальное имя.

  • Сеть. Каждый маршрут должен быть связан ровно с одним
    Сеть VPC.

  • Диапазон назначения. Диапазон назначения — один блок IPv4 CIDR
    который содержит IP-адреса систем, принимающих входящие пакеты.
    Пункты назначения должны быть выражены в CIDR.
    обозначение.
    Пункты назначения не могут точно соответствовать диапазону IP-адресов подсети, и они не могут соответствовать
    в пределах
    диапазон IP-адресов подсети (они не могут иметь более длинную маску подсети). Это
    допустимо для статического маршрута к , содержать IP подсети
    диапазон адресов (имейте более короткую маску подсети).В этом случае пакеты только
    отправляется на следующий переход статического маршрута, если они не помещаются в подсети
    пункт назначения маршрута. Самый широкий возможный пункт назначения — 0.0.0.0/0 .

  • Приоритет. Если несколько маршрутов имеют идентичные пункты назначения, используется приоритет
    чтобы определить, какой маршрут следует использовать. Меньшие числа обозначают , более высокие
    приоритеты; например, маршрут со значением приоритета 100 имеет более высокий
    приоритет, чем один со значением приоритета 200 . Наивысший приоритет маршрута
    означает наименьшее возможное целое неотрицательное число. Потому что ноль наименьший
    возможно целое неотрицательное число, оно имеет наивысший приоритет.

  • Следующий переход. Статические маршруты могут иметь следующие переходы, указывающие на значение по умолчанию.
    интернет-шлюз, экземпляр Google Cloud или Cloud VPN
    туннель. Дополнительные сведения см. В разделе «Следующие переходы статического маршрута».

  • Теги. Вы можете указать список сети
    теги, так что применяется маршрут только
    к экземплярам, ​​у которых есть хотя бы один из перечисленных тегов.Если вы не укажете
    теги, Google Cloud применяет маршрут ко всем экземплярам в сети.
    Внутренние балансировщики нагрузки TCP / UDP следующего перехода не поддерживают сетевые теги.

Статический маршрут следующих переходов

Следующие допустимые переходы для статических маршрутов. Для получения дополнительной информации о
для каждого типа см. справку по gcloud
документация.

  • Шлюз следующего перехода ( шлюз следующего перехода ). Вы можете указать Интернет по умолчанию
    шлюз для определения пути к внешним IP-адресам.

  • Экземпляр следующего перехода ( экземпляр следующего перехода ). Вы можете направить трафик на
    существующий экземпляр в Google Cloud, указав его имя и
    зона . Трафик направляется на основной внутренний IP-адрес виртуальной машины.
    сетевой интерфейс в сети VPC, где вы определяете
    маршрут.

    • Если основной внутренний IP-адрес для сети экземпляра виртуальной машины
      изменения интерфейса в сети VPC, Google Cloud
      автоматически обновляет таблицу маршрутизации сети VPC
      чтобы трафик продолжал отправляться на виртуальную машину по ее новому IP-адресу.

    • Если виртуальная машина заменяется новой виртуальной машиной с тем же именем в той же зоне,
      Google Cloud обновляет маршрутизацию сети VPC
      table автоматически, чтобы трафик направлялся на заменяющую виртуальную машину.

    • Google Cloud проверяет только то, что виртуальная машина следующего перехода существует, и только когда
      вы создаете маршрут. Это не подтверждает, что виртуальная машина может обрабатывать или
      пересылать пакеты. Если впоследствии виртуальная машина будет удалена, но не заменен , маршрут
      по-прежнему применяется , что может привести к отброшенным пакетам.

  • Внутренний балансировщик нагрузки TCP / UDP следующего перехода ( next-hop-ilb ). для внутреннего
    Балансировка нагрузки TCP / UDP, вы можете использовать IP-адрес балансировщика нагрузки в качестве следующего перехода
    который распределяет трафик между работоспособными внутренними экземплярами. Например, вы можете
    использовать настраиваемый статический маршрут, следующий переход которого является внутренним балансировщиком нагрузки TCP / UDP, чтобы
    распределять трафик между внутренними виртуальными машинами.

  • IP следующего перехода ( адрес следующего перехода ). Вы можете предоставить основной внутренний IP-адрес
    адрес, назначенный интерфейсу виртуальной машины Google Cloud в качестве следующего перехода.

    • Когда вы используете адрес следующего перехода , Google Cloud передает трафик на любой
      Экземпляр ВМ, назначенный этому IP-адресу. Если вы замените экземпляр ВМ
      с другим, который использует тот же основной внутренний IP-адрес, трафик
      переходит на замену, даже если у него другое название. Чтобы определить
      следующий переход по имени виртуальной машины, используйте вместо этого экземпляр следующего перехода.

    • Google Cloud проверяет только на то, что IP-адрес является действительным членом
      диапазон первичных или вторичных IP-адресов подсети
      при создании маршрута.Это
      не проверяет наличие экземпляра на IP-адресе следующего перехода. Если
      IP-адрес следующего перехода не назначен ни одному экземпляру, маршрут
      по-прежнему применяется , что может привести к отброшенным пакетам. Для большего
      информацию см. в разделе «Замечания, например, и о балансировщике нагрузки»
      хмель.

    • Невозможно указать произвольный IP-адрес следующего перехода: Адреса вне
      диапазон IP-адресов подсети в вашей сети VPC не
      допустимый.

  • VPN-туннель следующего перехода ( next-hop-vpn-tunnel ). для облачного VPN
    туннели, которые используют
    маршрутизация на основе политик и VPN на основе маршрутов,
    вы можете направлять трафик в VPN-туннель, создавая маршруты, следующие переходы которых
    обращайтесь к туннелю по его названию и региону. Google Cloud игнорирует маршруты
    чьи следующие переходы — это отключенные туннели Cloud VPN. Для большего
    примеры взаимодействия маршрутов и туннелей Cloud VPN см.
    Примеры маршрутизации Cloud VPN.

Примечание. Пользовательские статические маршруты не могут использовать цель
экземпляры как следующие прыжки.

Соображения для следующих переходов экземпляра и балансировщика нагрузки

Маршрутизация на основе экземпляра относится к статическому маршруту со следующим переходом, который является виртуальной машиной.
экземпляр ( экземпляра следующего перехода или адрес следующего перехода ).

Внутренний балансировщик нагрузки TCP / UDP как следующий переход относится к статическому маршруту со следующим переходом.
переход, который является внутренним балансировщиком нагрузки TCP / UDP ( next-hop-ilb ).

При настройке маршрутизации на основе экземпляров или внутреннего балансировщика нагрузки TCP / UDP в качестве
следующий переход, примите во внимание следующие рекомендации:

  • Необходимо настроить серверные виртуальные машины или экземпляр следующего перехода для пересылки
    пакеты с любого IP-адреса источника.
    Для настройки переадресации включите IP
    переадресация ( can-ip-forward ) на
    на каждую виртуальную машину при создании виртуальной машины.Для виртуальных машин, созданных автоматически как часть
    управляемая группа экземпляров, включите переадресацию IP в используемом шаблоне экземпляра
    группой экземпляров. Вы должны внести это изменение конфигурации дополнительно
    к любой конфигурации операционной системы, необходимой для маршрутизации пакетов.

  • Программное обеспечение, работающее на серверной виртуальной машине или инстансе следующего перехода, должно быть
    настроен соответствующим образом.
    Например, сторонние виртуальные машины, которые работают
    как маршрутизаторы или межсетевые экраны должны быть настроены в соответствии с инструкциями производителя.
    инструкции.

  • Внутренние виртуальные машины или экземпляр следующего перехода должны иметь соответствующий брандмауэр.
    правила.
    Вы должны настроить правила брандмауэра, которые применяются к пакетам, которые
    проложен. Имейте в виду следующее:

    • Правила брандмауэра Ingress, применимые к экземплярам, ​​выполняющим маршрутизацию
      функции должны включать IP-адреса источников маршрутизируемых пакетов . В
      подразумеваемое правило запрета на вход блокирует все входящие пакеты, поэтому вы должны
      как минимум создать настраиваемые правила разрешения входящего трафика.
    • Выходные правила брандмауэра, применимые к экземплярам, ​​выполняющим маршрутизацию
      функции должны включать IP-адреса пунктов назначения маршрутизируемых пакетов .
      Подразумеваемое правило разрешения выхода разрешает это, если вы не создали
      конкретное правило запрета на выход, отменяющее его.
    • Учтите, используется ли серверная виртуальная машина или экземпляр следующего перехода.
      выполнение трансляции сетевых адресов (NAT) при создании брандмауэра
      правила.

    Для получения дополнительной информации см. Подразумеваемый межсетевой экран.
    правила.

Особенности экземпляров следующего перехода

  • Когда вы используете экземпляр в качестве следующего перехода ( экземпляр следующего перехода или
    адрес следующего перехода ), помните, что экземпляр является зональным ресурсом.
    Выбор зоны подразумевает, что вы выбрали регион. Google Cloud
    не учитывает региональное расстояние для маршрутов, использующих экземпляр следующего перехода,
    так что можно создать маршрут, который отправляет трафик на следующий переход в
    другой регион. Это увеличивает затраты на исходящие данные и увеличивает задержку в сети.

  • Google Cloud выполняет одну из следующих базовых проверок только тогда, когда
    вы создаете маршрут
    :

    • Если вы укажете экземпляр следующего перехода , экземпляр должен уже существовать.
    • Если вы укажете адрес следующего перехода , IP-адрес должен быть в существующем
      диапазон первичных или вторичных IP-адресов подсети.

    Если вы, например, удалите экземпляр или удалите подсеть позже,
    Google Cloud по-прежнему рассматривает любой маршрут, который использует этот экземпляр в качестве следующего
    hop при оценке применимых маршрутов.Это может вызвать
    некоторые или все пакеты для данного пункта назначения должны быть отброшены, в зависимости от
    другие маршруты в вашей сети.

  • Если программное обеспечение в экземпляре виртуальной машины (например, операционная система виртуальной машины или
    процесс, который маршрутизирует пакеты) не удается, пакеты, предназначенные для этого экземпляра,
    упавший. Для повышения надежности рассмотрите возможность использования внутренней загрузки TCP / UDP.
    балансировщик как следующий переход
    вместо. Внутренний балансировщик нагрузки TCP / UDP требует настроенной проверки работоспособности,
    и эта проверка работоспособности определяет, насколько новые подключения
    проложен.

  • Отключение сетевого интерфейса путем настройки гостевой операционной системы
    экземпляр не заставляет Google Cloud перестать рассматривать интерфейс
    быть следующим переходом маршрута.

  • Если вы хотите направить трафик к экземпляру в общем VPC
    сервисный проект, используйте адрес следующего перехода . Использование экземпляра следующего перехода не является
    поддерживается.

Особенности внутреннего балансировщика нагрузки TCP / UDP: следующие переходы

  • Когда все серверные ВМ неработоспособны. Когда все серверные части
    внутренний балансировщик нагрузки TCP / UDP не проверяет работоспособность, маршруты, использующие этот балансировщик нагрузки
    следующий переход все еще в силе. Пакеты, обработанные маршрутом, отправляются одному
    бэкэндов балансировщика нагрузки следующего перехода в соответствии с трафиком
    распределение.

  • Правила переадресации, использующие общий внутренний IP-адрес
    ( --purpose = SHARED_LOADBALANCER_VIP ) не поддерживаются.
    Следующий прыжок
    внутренний балансировщик нагрузки TCP / UDP и внутренние правила пересылки балансировщика нагрузки TCP / UDP с общим IP
    адрес
    являются взаимоисключающими функциями.Внутренний балансировщик нагрузки TCP / UDP следующего перехода должен использовать
    IP-адрес, уникальный для правила пересылки балансировщика нагрузки, чтобы
    Однозначно упоминается только одна внутренняя служба (один балансировщик нагрузки).
    Можно использовать правила переадресации, использующие общий внутренний IP-адрес, на
    ссылаться на разные серверные службы (разные внутренние балансировщики нагрузки TCP / UDP).

  • Один и тот же пункт назначения и несколько внутренних балансировщиков нагрузки TCP / UDP на следующем переходе.
    Если вы создаете два или более настраиваемых статических маршрута с одним и тем же пунктом назначения,
    используя другой внутренний балансировщик нагрузки TCP / UDP, следующие переходы, Google Cloud никогда не
    распределяет трафик между следующими переходами балансировщика нагрузки с помощью ECMP.Если маршруты имеют уникальные приоритеты, Google Cloud использует следующий переход.
    внутренний балансировщик нагрузки TCP / UDP из маршрута с наивысшим приоритетом. Если маршруты
    имеют равные приоритеты, Google Cloud по-прежнему выбирает только один следующий переход
    внутренний балансировщик нагрузки TCP / UDP. В этой последней ситуации, как показано на
    на диаграмме ниже, Google Cloud использует детерминированный внутренний алгоритм
    для выбора одного правила переадресации следующего перехода ( forwarding-rule-a ),
    игнорирование других маршрутов с таким же приоритетом.

    Тот же пункт назначения, другой внутренний балансировщик нагрузки TCP / UDP следующие переходы

  • Несколько пунктов назначения и один и тот же внутренний балансировщик нагрузки TCP / UDP на следующем переходе.

    С тегами: Если вы
    использовать сетевые теги, вы
    может использовать один и тот же внутренний балансировщик нагрузки TCP / UDP следующего перехода для нескольких настраиваемых статических
    маршруты с тем же пунктом назначения и
    приоритет.

    Без тегов: Без сетевых тегов вы не можете создать несколько пользовательских
    статические маршруты, имеющие одинаковую комбинацию пункта назначения, приоритета и
    внутренний балансировщик нагрузки TCP / UDP на следующем переходе. Например, route-x , route-y и
    route-z все можно создать, но
    route-x-copy не может быть создан.

    Пример немаркированных маршрутов с использованием общего внутреннего балансировщика нагрузки TCP / UDP next hop

  • Сетевые теги.
    Вы можете указать сетевые теги, чтобы маршрут следующего перехода применялся только к
    клиентские экземпляры, настроенные с помощью тега. Это позволяет вам
    выберите, какие клиентские экземпляры будут заполнены, с каким отмеченным маршрутом следующего перехода
    и к какому набору устройств направлять ваш трафик.

    Вам не нужно разделять разные клиентские экземпляры на отдельные
    Сети VPC, каждая из которых указывает на предпочитаемый
    внутренний балансировщик нагрузки TCP / UDP перед набором устройств.

    Примечание. Маршруты с тегами не экспортируются и не импортируются через пиринг.

  • Несколько маршрутов к одному и тому же префиксу назначения.
    С помощью тегов вы можете указать несколько маршрутов к одному месту назначения с помощью
    различные внутренние балансировщики нагрузки в качестве следующих переходов. Вы можете использовать разные теги
    или разные приоритеты для тех же маршрутов назначения.

Рекомендации для следующих переходов классического VPN-туннеля

Google Cloud не учитывает региональное расстояние для маршрутов, использующих
Классический VPN-туннель следующего перехода.Отправка трафика на следующий переход
Классический VPN-туннель в другом регионе увеличивает исходящие затраты и вводит
сетевая задержка. Рекомендуется использовать HA VPN.
туннели или
Классические туннели VPN, использующие динамические
маршрутизация вместо этого.

Что дальше

Страница не найдена | MIT

Перейти к содержанию ↓

  • Образование
  • Исследовательская работа
  • Инновации
  • Прием + помощь
  • Студенческая жизнь
  • Новости
  • Выпускников
  • О Массачусетском технологическом институте
  • Подробнее ↓

    • Прием + помощь
    • Студенческая жизнь
    • Новости
    • Выпускников
    • О Массачусетском технологическом институте

Меню ↓

Поиск

Меню

Ой, похоже, мы не смогли найти то, что вы искали!
Попробуйте поискать что-нибудь еще!

Что вы ищете?

Увидеть больше результатов

Предложения или отзывы?

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *