Author Topic: Возможно ли динамически изменять next-hop в route-map  (Read 10909 times)

0 Members and 1 Guest are viewing this topic.

Offline boombastic

  • Moderator
  • Hero Member
  • *****
  • Posts: 582
  • Karma: +9/-0
Задача такова.
Есть некоторая дом.сеть с подсетью А (для конкретики будет /23) в этой подсети выделена подсеть меньшего размера Б (для конкретики /26, входящая в /23).
Есть Cisco-рутер с двумя городскими каналами (и соотв. внешкой) + IP-туннелем до третьего провайдера с более дешёвым внешним трафиком.
Политика маршрутизации такова что по умолчанию подсеть Б (/26) всегда должна роутится чз IP-туннель. Соотв. у меня на внутреннем интерфейсе стоит route-map вида

route-map FOR_SUBNET_B permit 10
  match ip address $ACL_OF_SUBNET_B
  set ip next-hop $IP_ADDRESS_OF_IP_TUNNEL

т.е. независимо от состояния таблицы маршрутизации (а для 2-х городских каналов исп-ся BGP), трафик из подсети B постоянно уходит в IP-туннель.

Соотв. падение/отключение за неуплату одного из городских аплинков не смертельно для подсети А, а вот падение IP-туннеля "смертельно" для подсети Б.

Хотелось бы всё таки иметь запасной вариант для маршрутизации трафика подсети Б (/26) не чз IP-туннель а чз городские каналы, но как это сделать  пока не представляю.

Можно было бы конечно сделать решение в лоб, типа:

route-map FOR_SUBNET_B permit 10
  match ip address $ACL_OF_SUBNET_B
  set ip next-hop $IP_ADDRESS_OF_IP_TUNNEL
  set ip next-hop $IP_ADDRESS_OF_PROVIBER_GW

Предполагая что при падении IP-туннеля сработает второй next-hop. Собственно говоря так и происходит когда интерфейс туннеля administratively disabled, но это приходится делать ручками.
В нормально ситуации интерфес туннеля всегда up

В Linux-e я бы подобную задачу решил заведением отдельной таблицы маршрутизации (не kernel routing table а доп., н-р subnet_b) и правилами вида:

/sbin/ip rule add prio 1000 from $SUBNET_B lookup subnet_b_table
/sbin/ip rule add prio 32768 from all lookup main

дальше с помощью того же bird или quagga можно настроить динамическое изменение именно subnet_b_table по одном из протоколов (BGP,OSPF,RIP)
но есть ли подобная фича в IOS я не знаю.



Offline uri

  • Jr. Member
  • **
  • Posts: 72
  • Karma: +0/-0
[snip]

  Олег, извини но подробности этого кошмара я поснипал )

Quote
route-map FOR_SUBNET_B permit 10
  match ip address $ACL_OF_SUBNET_B
  set ip next-hop $IP_ADDRESS_OF_IP_TUNNEL
  set ip next-hop $IP_ADDRESS_OF_PROVIBER_GW

Предполагая что при падении IP-туннеля сработает второй next-hop. Собственно говоря так и происходит когда

  То, что при недоступности первого next-hop срабатывает второй -- поведение документированное:

http://www.cisco.com/univercd/cc/td/doc/pr...h.htm#wp1125447

  ... но это тебе не надо, т.к. при недоступности nex-hop as adjacent router, пакет будет отфорварден в соответствии с таблицой маршрутизации, т.е. *без* всякого PBR.

Quote
интерфейс туннеля administratively disabled, но это приходится делать ручками.
В нормально ситуации интерфес туннеля всегда up

   Если это gre-туннель, то включи на нем keepalives, даже если удаленная сторона их *не* поддерживает:

http://www.cisco.com/en/US/products/sw/ios...0080087cec.html

  .. тогда твой tunnel будет исправно ложиться в down в случаях недоступности far-end tunnel endpoit, next-hop будет пропадать из таблицы маршрутизации и пакет будет маршрутизироваться минуя PBR.




Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Quote from: uri
  Если это gre-туннель, то включи на нем keepalives, даже если удаленная сторона их *не* поддерживает:
Возможно мы делали что-то не так, но при создании gre-туннеля между cisco и linux пока на циске не выключили keepalives туннель не работал.

Offline boombastic

  • Moderator
  • Hero Member
  • *****
  • Posts: 582
  • Karma: +9/-0
хех, пойду перестраивать ipip -> ipgre.

дальше я конечно уже занудничаю, но всё таки - возможно ли, теоретически, в IOS создать альтернативную таблицу маршрутизации где было бы не одно правило, а-ля netxt-hop (он же, фатически default) а несколько. Скажем я бы хотел держать 5 префиксов в этой таблице и для каждого из префикса свой next-hop.
« Last Edit: August 13, 2006, 00:05:32 by boombastic »

Offline uri

  • Jr. Member
  • **
  • Posts: 72
  • Karma: +0/-0
Quote from: demiurg
Возможно мы делали что-то не так, но при создании gre-туннеля между cisco и linux пока на циске не выключили keepalives туннель не работал.

Tbh, у меня не было необходимости в организации туннеля между cisco и linux, но между кошками asymmetrical keepalives работает на-ура. Вот описание кошкиного видения этого процесса:

http://www.cisco.com/en/US/tech/tk827/tk36...08040a17c.shtml

... возможно окажется полезным при снятии трейса сниффером.

Offline uri

  • Jr. Member
  • **
  • Posts: 72
  • Karma: +0/-0
Quote from: boombastic
хех, пойду перестраивать ipip -> ipgre.

дальше я конечно уже занудничаю, но всё таки - возможно ли, теоретически, в IOS создать альтернативную таблицу маршрутизации где было бы не одно правило, а-ля netxt-hop (он же, фатически default) а несколько. Скажем я бы хотел держать 5 префиксов в этой таблице и для каждого из префикса свой next-hop.

Брр... нифига не понял -- похоже, что кофе еще не подействовал.   Возможно, object tracking тебе удасться приспособить под свою задачу:

http://www.cisco.com/en/US/products/sw/ios...00801d1e95.html

Offline boombastic

  • Moderator
  • Hero Member
  • *****
  • Posts: 582
  • Karma: +9/-0
ок, спасибо.
То что я хотел в linux-e называется multiple routing tables, т.е. возможность создания кроме основной таблицы маршрутизации (т.н. kernel routing tables, main routing table) доп. таблиц где были бы другие маршруты (или те же самые). а затем с помощью iproute2 создать правила для маршрутизации чз эту таблицу

почитаю вечерком про object tracking, может приспособлю.

Offline visual

  • Hero Member
  • *****
  • Posts: 714
  • Karma: +0/-0
    • http://
Quote from: boombastic
почитаю вечерком про object tracking, может приспособлю.
на tcl поизвращацца не хочешь?
http://www.cisco.com/en/US/products/sw/ios...00801a75a7.html
вдруг тоже приспособишь

Offline nbv

  • Newbie
  • *
  • Posts: 15
  • Karma: +0/-0
И все-таки не понятно - зачем тут роуте-мап?

он здесь выполняет то же самое, что делает static route.
а если задать несколько статик роутов с разными приоритетами, то (при работающих keepalive) будет автору счастье...

или можно вместо keepalive прикрутить пинги через упомянутый object tracking

Offline boombastic

  • Moderator
  • Hero Member
  • *****
  • Posts: 582
  • Karma: +9/-0
Интересно как nbv собирается для сети А в кач-ве next hop выбирать один static-route а для cети B другой static route?
>>Есть некоторая дом.сеть с подсетью А (для конкретики будет /23)
>>в этой подсети выделена подсеть меньшего размера Б (для
>>конкретики /26, входящая в /23).
[snip]
>>Политика маршрутизации такова что по умолчанию подсеть Б (/26)
>> всегда должна роутится чз IP-туннель.

Offline nbv

  • Newbie
  • *
  • Posts: 15
  • Karma: +0/-0
Поскольку мы говорим о подсетях целиком, то вот это
Quote from: boombastic
route-map FOR_SUBNET_B permit 10
  match ip address $ACL_OF_SUBNET_B
  set ip next-hop $IP_ADDRESS_OF_IP_TUNNEL

функционально эквивалентно команде
  ip route $SUBNET_B 255.255.255.192 $IP_ADDRESS_OF_IP_TUNNEL permanent

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

так?

Offline boombastic

  • Moderator
  • Hero Member
  • *****
  • Posts: 582
  • Karma: +9/-0
subnet_b - это моя сеть

Offline nbv

  • Newbie
  • *
  • Posts: 15
  • Karma: +0/-0
понял. отстал.

Offline boombastic

  • Moderator
  • Hero Member
  • *****
  • Posts: 582
  • Karma: +9/-0
Quote
возможно ли, теоретически, в IOS создать альтернативную таблицу маршрутизации где было бы не одно правило, а-ля netxt-hop (он же, фактически default) а несколько. Скажем я бы хотел держать 5 префиксов в этой таблице и для каждого из префикса свой next-hop.
Чз месяц сам нашёл ответ на свой вопрос - VRF (VPN routing & forwarding table).
Фактически,наряду с global routing table, создаётся VRF table для конкретного L3 интерфеса и дальше весь трафик роутитмся чз эту VRF таблицу. Её можно заполнять как статическим маршрутами так и с помощью динамических протоколов (OSPF,EIGRP). Осталось найти как "натравить" BGP на VRF.
Всё таки существует аналог linux iproute2 в cisco ios
Ссылка для тех кому интересны детали:
http://www.cisco.com/application/pdf/en/us...a0080680606.pdf


Offline uri

  • Jr. Member
  • **
  • Posts: 72
  • Karma: +0/-0
>Чз месяц сам нашёл ответ на свой вопрос - VRF (VPN routing & forwarding table).
>Фактически,наряду с global routing table, создаётся VRF table для конкретного L3 интерфеса и дальше весь >трафик роутитмся чз эту VRF таблицу. Её можно заполнять как статическим маршрутами так и с помощью

  Если бы ты сразу сказал, что тебе нужен VRF-lite...

>динамических протоколов (OSPF,EIGRP). Осталось найти как "натравить" BGP на VRF.

  Поднять MP-BGP. Детали в любой книжке по mpls.

[snip]