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

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

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

Исходя из этого у меня есть несколько вопросов.

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

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

Надеюсь, мой вопрос понятен.

2 ответа2

1

Они определенно не хранят ту же информацию.

Таблица маршрутизации - это таблица Уровня 3, в которой указано, что для пункта назначения X.X.X.X/Y , перейдите через маршрутизатор z.z.z.z .
Таблица пересылки - это таблица уровня 2, в которой говорится, что для связи с маршрутизатором z.z.z.z отправлять пакеты на MAC-адрес aa:bb:cc:dd:ee:ff .

Например, в таблице пересылки может быть сказано, что пакет, связанный с пунктом назначения в 192.168.1.0/24 должен быть отправлен из физического порта ethernet1/2.

В вашей локальной сети вы используете таблицу пересылки для получения MAC-адресов других хостов и отправки им пакетов. Ваше сетевое устройство будет передавать пакет arp whohas ip z.z.z.z на уровне 2, чтобы получить соответствующий MAC-адрес.

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

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

1

Есть две вещи, которые можно назвать "таблицами пересылки": MAC-адрес коммутатора L2 → сопоставление портов и FIB маршрутизатора L3. Основываясь на остальной части вашего вопроса, я предполагаю, что вы на самом деле спрашиваете о последнем. (Если вы действительно имели в виду первое, см. Ответ @ harrymc.)

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

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

  • 'RIB' (информационная база маршрутизации) содержит входные данные, используемые протоколом маршрутизации для принятия решений - например, он хранит все возможные маршруты, векторы расстояний, состояния линий связи, что угодно. В BGP он будет содержать все объявления о маршрутах, полученные от других узлов BGP. Записи RIB могут еще не иметь прямой связи между маршрутом и его интерфейсом.

  • "FIB" (информационная база пересылки) является результатом решений алгоритма маршрутизации. Он имеет только определенные маршруты, которые выбрал алгоритм, а также разрешенные адреса шлюза и устройства. По сути, это "таблица маршрутизации", которую вы знаете по Linux/BSD.

RIB хранится внутри демонов протокола маршрутизации, а FIB экспортируется в таблицу маршрутизации операционной системы (или в чипы маршрутизации / пересылки с аппаратным ускорением). Другими словами, то, что вы видите, запустив ip route в Linux, на самом деле является FIB.

Разделение существует как оптимизация, потому что определение лучшего пути не быстро; это может занять довольно много процессорного времени и памяти (и это не так просто, как всегда с использованием "кратчайшего" пути).

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

2) Алгоритмы маршрутизации должны определять кратчайший маршрут для пакета от клиента, например, для достижения сервера, означает ли это, что каждый раз, когда устанавливается TCP-соединение с различными серверами, кратчайший маршрут определяется путем просмотра таблицы маршрутизации маршрутизаторов.

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

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

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

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

Тем не менее, каждый протокол маршрутизации делает это по-своему. У BGP свои правила, у OSPF и IS-IS свои, у RIP и Babel свои. (Некоторые протоколы являются вектором расстояния, некоторые являются состоянием канала, некоторые оба одновременно. Например, OSPF - это состояние канала внутри области, но вектор расстояния между областями.) Маршрутизатор даже будет иметь глобальные правила, говорящие о том, что он предпочитает маршруты OSPF по RIP, RIP по BGP и так далее.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .