Привет, незнакомец!

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

Два дефолта с одинаковыми метриками

AniAni
отредактировано июня 2016 Раздел: Troubleshooting
Всем привет!
Помогите, пожалуйста, разобраться со следующим вопросом. Картинка во вложении.
На маршрутизаторах R2 и R5 существуют по два дефолтных маршрута с одинаковыми метриками. Какой из двух дефолтных маршрутов выберут маршрутизаторы R2 и R5 и почему?
Собрала задачу в UnetLab, но никаких закономерностей в выборе маршрута не могу найти.

Комментарии

  • отредактировано марта 2016
    Дак наверное тот, который первый в конфигурации. И да, у статики нет метрики, а есть административная дистанция.
    UPD: Ой, чё несу, балансировка же будет. Вот!
  • Jay-T написал:

    И да, у статики нет метрики, а есть административная дистанция.
    UPD: Ой, чё несу, балансировка же будет. Вот!

    True
  • Src-dst-ip hashing скорей всего. Удачи в поиске закономерности :)
  • отредактировано марта 2016
    Ani написал:

    Всем привет!
    Какой из двух дефолтных маршрутов выберут маршрутизаторы R2 и R5 и почему?
    Собрала задачу в UnetLab, но никаких закономерностей в выборе маршрута не могу найти.

    А как Вы проверяете?
    Просто, если Вы будете проверять с маршрутизаторов R2 или R5, например, запуская traceroute, то балансировка (соответственно, выбор маршрута) будет выполняться попакетно.

    Если же Вы будете выполнять проверку, все тем же traceroute, но с маршрутизаторов R1 или R6, то Вы должны увидеть один и тот же путь для всех пакетов traceroute (для одного IP).
    Так как, в этом случае, трафик сквозной, для маршрутизаторов, которые выполняют балансировку, и тогда за балансировку отвечает CEF.
    По умолчанию, CEF использует метод per-destination. Что на деле значит, что пакет будет балансироваться в зависимости от пару Source IP/ Dest IP.
    И пакеты с одинаковой парой адресов будут идти по одному и тому же пути.

    Так же Вы можете проверить, что другая пара адресов может пойти по другому пути (это как повезет). Для этого просто проверяете на другой комбинации SIP/DIP
  • Балансировка произойдет если cef отрублен, если включен, заработает если только там по умолчанию per-packet работает

    А так, балансировка может и не поехать? с чем это кста связано? почему у одних CEF сразу делает per-packet балансировку, там даже нет такой настройки ( mls ), а на роутере надо?
  • отредактировано марта 2016
    CEF не делает же per-packet балансировку, емнип. Он для того и express forwarding, чтобы на процессор каждый пакет не отправлять. Для первого пакета подбирается L2 заголовок, исходящий интерфейс и вперед в работу. Эти же изначально подобранные данные используются для всех дальнейших пакетов из потока. Для того, чтобы выключить per-destination и гнать каждый пакет через процессор, необходимо выключить no ip cef (или no ip route-cache).
    Вроде так. Вообще я сам не проверял per-packet балансировку, per-destination хватало. Знаю только из теории. :)
  • у меня asr1002 при наличии 2 ECMP маршрутов (через 2 juniper srx220) выбирался то один, то другой, как на душу ляжет(cef по дефолту настроен) и гонялся трафик по нему. Это правда стенд был с двумя удаленными сетями, но балансировку на нем я только в трасировке видел. В итоге через PBR разделил как надо.
  • отредактировано марта 2016
    Jay-T написал:

    Для первого пакета подбирается L2 заголовок, исходящий интерфейс и вперед в работу. Эти же изначально подобранные данные используются для всех дальнейших пакетов из потока. Для того, чтобы выключить per-destination и гнать каждый пакет через процессор, необходимо выключить no ip cef (или no ip route-cache).
    Вроде так. Вообще я сам не проверял per-packet балансировку, per-destination хватало. Знаю только из теории. :)

    CEF не совсем так работает. CEF таблица заполняется в момент изменения RIB. Если ARP записи нет для next-hop, то Adjacency Table заполнится с первым пакетом, который дропается сразу из-за так называемой glean adjacency и является триггером для отправки ARP request. То, что вы описали больше похоже на fast switching, который на большинстве устройств не поддерживается.
    DimQ написал:

    А так, балансировка может и не поехать? с чем это кста связано? почему у одних CEF сразу делает per-packet балансировку, там даже нет такой настройки ( mls ), а на роутере надо?

    Locally generated пакеты проходят через Process Switching, но не CEF, поэтому для таких пакетов балансировка происходит per packet, а не per destination.
    Про это всё будем говорить на первом вебинаре :)
  • dmfigol написал:

    Jay-T написал:

    Для первого пакета подбирается L2 заголовок, исходящий интерфейс и вперед в работу. Эти же изначально подобранные данные используются для всех дальнейших пакетов из потока. Для того, чтобы выключить per-destination и гнать каждый пакет через процессор, необходимо выключить no ip cef (или no ip route-cache).
    Вроде так. Вообще я сам не проверял per-packet балансировку, per-destination хватало. Знаю только из теории. :)

    CEF не совсем так работает. CEF таблица заполняется в момент изменения RIB. Если ARP записи нет для next-hop, то Adjacency Table заполнится с первым пакетом, который дропается сразу из-за так называемой glean adjacency и является триггером для отправки ARP request. То, что вы описали больше похоже на fast switching, который на большинстве устройств не поддерживается.
    DimQ написал:

    А так, балансировка может и не поехать? с чем это кста связано? почему у одних CEF сразу делает per-packet балансировку, там даже нет такой настройки ( mls ), а на роутере надо?

    Locally generated пакеты проходят через Process Switching, но не CEF, поэтому для таких пакетов балансировка происходит per packet, а не per destination.
    Про это всё будем говорить на первом вебинаре :)
    да. точно) тупанул

    но возможно это IOL

    я проверил, если cef врублен, балансировки не происходит

    Если отключен, происходит для локально созданных пакетов как и должно быть

    Хотя реально, работает именно процесс свитчинг
    в CEF ничего не идет

    Ethernet0/0
    Switching path Pkts In Chars In Pkts Out Chars Out
    Processor 19721687 2248231390 19667783 2242126073
    Route cache 0 0 5 570
    Total 19721687 2248231390 19667788 224212664


  • AniAni
    отредактировано марта 2016
    Добавила на схему еще один маршрутизатор R7. Трассировала с R6 маршрутизаторы: R1 ip 172.26.1.2 и R7 ip 172.26.7.101. По трассировке вижу, что для достижения подсетей R7 и R1 с R6 выбираются разные маршруты. На Cisco.com (http://www.cisco.com/en/US/products/hw/modules/ps2033/prod_technical_reference09186a00800afeb7.html, http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipswitch_cef/configuration/15-mt/isw-cef-15-mt-book/isw-cef-load-balancing.html) нашла, что по умолчанию работает балансировка per-destination. С вопросом вроде разобралась. Всем спасибо за помощь!
  • Коллеги, балансировка это очень "железная тема". Если вы не уточняете платформу, то обсуждения абсурдны.
    Больше всего мне не понятно почему CEF мешает балансировке.
    Например:
    На ASR9k (cisco, IOS-XR) CEF выключить вообще нельзя, там max 32 пути для балансировки с помощью ECMP по IGP (в т.ч. static) маршрутам. А ещё я вам только что соврал, так как "32" цифра справедливая для конкретных карт и конкретного софта, что уж говорить про другие платформы.
    Поясню более общими словами, дабы избежать холиваров.
    Когда речь заходит о балансировке, помимо платформы нужно определить тип входящего трафика. Смотреть в каждый пакет это мура, большинство взрослых платформ с большим потоком трафика не церемонятся. Считается некий hash на входе, исходя из типа трафика и его реквизитов( L2 или L3/L4 или MPLS), этот hash может быть разной длинны. Но для одного и того же потока трафика (с одинаковыми L2 или L3/L4 или MPLS параметрами) будут выполняться одни и те же решения по балансировке, на основе этого hash. Это называется Поляризацией.
    Именно это поведение вызывает кучу кейсов и вопросов. IP трафик может не балансироваться из-за двух пар IP, которые генерят весь этот трафик. Тоже самое с MAC и MPLS. Или кусок hash, используемый на этом этапе балансировки, не получился достаточно уникальным, что редкость для мелких железок.

    Подытожу: Прежде чем задавать вопрос "почему не балансируется?", нужно рассказать участникам:
    *Платформу и её софт
    *Тип балансировки. (маршрутизация, коммутация, коммутация по меткам, LAG)
    *Профиль трафика и в каком виде он приходит на устройство. (не просто "я пинговал", а src/dst ip или капчу)
    *В идеале картинку и вывод максимально близкий к аппаратным реалям, типа "show ip cef exact-route"
Войдите или Зарегистрируйтесь чтобы комментировать.