среда, 8 февраля 2017 г.

Чем отличается статический маршрут в интерфейс от маршрута на next-hop-адрес?

    В курсе CCNA Routing&Switching, который успешно преподается в нашей Академии разбирается множество интересных проблем и задач, с которыми специалисты сталкиваются в работе ежедневно. Некоторые из этих задач вызывают у студентов особенно большое количество вопросов, т.к. не всегда очевиден выбор тех или иных решений, технологий и даже настроек.
   Один из популярных вопросов, связанный с темой статической маршрутизации, звучит следующим образом: в каком случае статический маршрут настраивается с указанием интерфейса, а в каком - с указанием адреса next-hop и в чем разница между этими двумя вариантами указания маршрута?
     Чтобы ответить на этот вопрос, для начала рассмотрим простую схему сети:
   
   Маршрутизаторы соединены через коммутатор, подключены к одному широковещательному домену. Такая связка будет имитировать "облако" провайдера, куда подключен наш маршрутизатор. Выполняем следующие настройки помимо настроек интерфейсов:

R1(config)#ip route 0.0.0.0 255.255.255.0 gigabitEthernet 0/0
%Default route without gateway, if not a point-to-point interface, may impact performance

   Уже на текущем этапе возникает предупреждение о том, что маршрут по умолчанию в интерфейс может стать причиной высокой нагрузки и деградации производительности сети. Это происходит по следующей причине: для того, чтобы передать пакет от РС0 к РС1 (например) маршрутизатор R1 должен узнать, кому передавать трафик. Для этого ему нужен MAC- и IP-адреса следующего шага. Но так как маршрут по умолчанию не содержит адреса next-hop, маршрутизатор R1 создает ARP-запрос, считая, что искомый адрес находится в напрямую подключенном сегменте сети.
   В указанной выше топологии с PC0 будем последовательно пинговать интерфейс Gi0/0 и Gi0/1 маршрутизатора R3, после отправим пинг на PC1. Вот что представляет собой таблица ARP на маршрутизаторе R1 после вышеуказанных манипуляций:
 
R1#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.10.10.1 4 0002.4A7A.DE86 ARPA GigabitEthernet0/1
Internet 10.10.10.254 - 00E0.A378.8902 ARPA GigabitEthernet0/1
Internet 172.16.10.1 2 0090.0C48.4201 ARPA GigabitEthernet0/0
Internet 172.16.10.254 2 0090.0C48.4201 ARPA GigabitEthernet0/0
Internet 192.168.1.1 - 00E0.A378.8901 ARPA GigabitEthernet0/0
Internet 192.168.1.3 0 0090.0C48.4201 ARPA GigabitEthernet0/0
R1#

   Видим три лишние записи в таблице. Если масштабы сети увеличить (например, до размеров подключения к интернету), то таблица ARP маршрутизатора рано или поздно переполнится. Кроме того каждый новый адрес будет порождать широковещательный ARP-запрос, что будет приводить к деградации производительности всей сети, т.к. по сегменту придется прогонять лишний трафик.
   Если же вместо маршрута в интерфейс указать next-hop адрес, то весь трафик будет всегда направляться следующему узлу, а в таблице ARP будет находиться одна запись - сопоставление  MAC и IP для next-hop:

R1#sh arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.10.10.254 - 00E0.A378.8902 ARPA GigabitEthernet0/1
Internet 192.168.1.1 - 00E0.A378.8901 ARPA GigabitEthernet0/0
Internet 192.168.1.3 0 0090.0C48.4201 ARPA GigabitEthernet0/0
R1#

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

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

1) Для подключений к широковещательным сетям (broadcast multiaccess) в качестве назначения ВСЕГДА указывается адрес следующего шлюза (next-hop). Исключений здесь не делается.

2) Для подключений типа "точка-точка" (point-to-point) ПРИНЯТО указывать исходящий интерфейс в качестве назначения для избежания рекурсивного поиска по таблице маршрутизации.

2 комментария:

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

    ОтветитьУдалить