вторник, 14 февраля 2017 г.

CCNA Routing & Switching - Рекурсивный поиск в таблице маршрутизации

   В этой заметке я хотел бы рассмотреть строение таблицы маршрутизации более пристально, а так же дать определение различным понятиям, связанным с маршрутами. В частности познакомимся с тем, что такое родительские и дочерние маршруты, что такое конечные маршруты, и что такое рекурсивный поиск по таблице маршрутизации. Итак, поехали.
   Как всегда начнем с того, что накидаем простейшую схему их трех маршрутизаторов, с которой будем работать.
   На маршрутизаторах настроены только адреса интерфейсов без статических маршрутов или протоколов маршрутизации.
   Если на данном этапе проверить таблицу маршрутизации, например, на R3, то она будет иметь следующий вид:
    Здесь все просто: включены два интерфейса, в таблице маршрутизации указаны локальные адреса этих интерфейсов и настроенные сети. На что стоит обратить внимание, так это на то, что записей в таблице маршрутизации 6 вместо 4. Происходит это потому, что маршрутизаторы Cisco имеют иерархию в таблице маршрутизации, которая вначале была основана на классовой маршрутизации (ip classfull routing), а после перестроена под учет бесклассовых маршрутов (ip classless routing). До сегодняшнего дня эта иерархия сохраняется, поэтому на рисунке выше присутствуют строки 1 и 4, которые являются классовыми родительскими маршрутами для бесклассовых дочерних маршрутов.
   Введем понятия маршрутов первого и второго уровней.
   Маршрут первого уровня (Level 1 Routes) - это маршруты, сетевая маска которых равна или меньше, чем сетевая маска классовой сети адреса. Маршрут первого уровня может выполнять роль маршрута по умолчанию, маршрутом в суперсеть (supernet route), а так же маршрутом в обычную классовую сеть.
   Маршрут второго уровня (Level 2 Routes) - это маршрут в подсеть, образованной от классовой сети.
   Маршруты в таблице маршрутизации могут быть конечными, что означает, что они имеют направление на следующий сетевой адрес (next-hop address) или в интерфейс.
   В таблице маршрутизации на рисунке выше присутствует родительский маршрут, который является маршрутом первого уровня - 172.16.0.0/16. Указано, что этот маршрут имеет два дочерних маршрута (2 subnets, 2 masks). Дочерние маршруты по определению - это маршруты второго уровня, т.е. образованные путем деления на подсети родительского маршрута. Что и можно наблюдать в таблице маршрутизации.
   Поиск маршрута в таблице маршрутизации осуществляется по наилучшему совпадению битов адреса назначения в пакете с битами адреса в строке маршрута. Поиск осуществляется последовательно сверху вниз. Сначала осуществляется сравнение маршрутов первого уровня, кроме маршрута, отмеченного как маршрут по умолчанию. Он при первом проходе по таблице маршрутизации игнорируется. Далее если маршрут первого уровня найдет, проверяются его дочерние маршруты. В случае обнаружения маршрута в интерфейс - пакет направляется в выходной интерфейс сразу же. Если же дочерний маршрут не найден, то производится повторный поиск маршрута среди маршрутов первого уровня. Поиск производится на предмет наличия маршрута по умолчанию. Если он находится - пакет отправляется по маршруту. Если же нет, то пакет просто сбрасывается.
   Добавим в имеющуюся топологию протокол OSPF, а так же на R2 добавим маршрут по умолчанию в сеть 192.168.3.0/24 через next-hop адрес.
    Последний термин, связанный с поведением маршрутизатора при осуществлении поиска маршрута, - рекурсивный поиск. Суть рекурсивного поиска заключается в следующем: пакет может быть отправлен в сторону пункта назначения в том случае, если выбранный из таблицы маршрутизатора маршрут будет конечным и направленным в интерфейс. Рассмотрим ситуацию, когда пакет, пришедший к маршрутизатору R2, направлен в сеть 192.168.3.0/24. В этом случае поиск маршрута по шагам будет выглядеть так:
1. Маршрутизатор сверяет пункт назначения с адресами маршрутов первого уровня.
2. Маршрутизатор обнаруживает, что наиболее подходящим является маршрут, отмеченный как статический.
3. Маршрутизатор видит, что чтобы доставить пакет к пункту назначения в сеть 192.168.3.0/24, он должен отправить пакет на адрес 172.16.35.2 - адрес next-hop. Но нужно понять, какой из интерфейсов приведет к этому адресу?
4. Маршрутизатор начинает поиск повторно, но теперь уже отыскивает, где находится адрес 172.16.35.2 (с этого шага и начинается рекурсивный поиск). Для этого он ищет маршрут к указанному адресу, сверяя сначала с родительскими маршрутами.
5. Маршрутизатор обнаруживает нужный родительский маршрут - 172.16.0.0/16, которая имеет 2 дочерних маршрута.
6. Происходит сверка дочерних маршрутов, после чего выясняется, что достичь адреса 172.16.35.2 можно через интерфейс S0/0/1.
7. В интерфейс S0/0/1 отправляется пакет, направленный в сеть 192.168.3.0/24

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

  1. Первая картинка у тебя явно с R3, а не R1.

    ОтветитьУдалить
  2. Так же интерфейс S0/0/0 надо поправить на S0/0/1, в последнем абзаце 6 и 7 пункт

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