Tomsk Sysadmins Forum
Оборудование => Cisco => Topic started by: boombastic on August 12, 2006, 09:49:06
-
Задача такова.
Есть некоторая дом.сеть с подсетью А (для конкретики будет /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 я не знаю.
-
[snip]
Олег, извини но подробности этого кошмара я поснипал )
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 (http://www.cisco.com/univercd/cc/td/doc/product/software/ios124/124cr/hirp_r/rte_pih.htm#wp1125447)
... но это тебе не надо, т.к. при недоступности nex-hop as adjacent router, пакет будет отфорварден в соответствии с таблицой маршрутизации, т.е. *без* всякого PBR.
интерфейс туннеля administratively disabled, но это приходится делать ручками.
В нормально ситуации интерфес туннеля всегда up
Если это gre-туннель, то включи на нем keepalives, даже если удаленная сторона их *не* поддерживает:
http://www.cisco.com/en/US/products/sw/ios...0080087cec.html (http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature_guide09186a0080087cec.html)
.. тогда твой tunnel будет исправно ложиться в down в случаях недоступности far-end tunnel endpoit, next-hop будет пропадать из таблицы маршрутизации и пакет будет маршрутизироваться минуя PBR.
-
Если это gre-туннель, то включи на нем keepalives, даже если удаленная сторона их *не* поддерживает:
Возможно мы делали что-то не так, но при создании gre-туннеля между cisco и linux пока на циске не выключили keepalives туннель не работал.
-
хех, пойду перестраивать ipip -> ipgre.
дальше я конечно уже занудничаю, но всё таки - возможно ли, теоретически, в IOS создать альтернативную таблицу маршрутизации где было бы не одно правило, а-ля netxt-hop (он же, фатически default) а несколько. Скажем я бы хотел держать 5 префиксов в этой таблице и для каждого из префикса свой next-hop.
-
Возможно мы делали что-то не так, но при создании gre-туннеля между cisco и linux пока на циске не выключили keepalives туннель не работал.
Tbh, у меня не было необходимости в организации туннеля между cisco и linux, но между кошками asymmetrical keepalives работает на-ура. Вот описание кошкиного видения этого процесса:
http://www.cisco.com/en/US/tech/tk827/tk36...08040a17c.shtml (http://www.cisco.com/en/US/tech/tk827/tk369/technologies_tech_note09186a008040a17c.shtml)
... возможно окажется полезным при снятии трейса сниффером.
-
хех, пойду перестраивать ipip -> ipgre.
дальше я конечно уже занудничаю, но всё таки - возможно ли, теоретически, в IOS создать альтернативную таблицу маршрутизации где было бы не одно правило, а-ля netxt-hop (он же, фатически default) а несколько. Скажем я бы хотел держать 5 префиксов в этой таблице и для каждого из префикса свой next-hop.
Брр... нифига не понял -- похоже, что кофе еще не подействовал. Возможно, object tracking тебе удасться приспособить под свою задачу:
http://www.cisco.com/en/US/products/sw/ios...00801d1e95.html (http://www.cisco.com/en/US/products/sw/iosswrel/ps5207/products_feature_guide09186a00801d1e95.html)
-
ок, спасибо.
То что я хотел в linux-e называется multiple routing tables, т.е. возможность создания кроме основной таблицы маршрутизации (т.н. kernel routing tables, main routing table) доп. таблиц где были бы другие маршруты (или те же самые). а затем с помощью iproute2 создать правила для маршрутизации чз эту таблицу
почитаю вечерком про object tracking, может приспособлю.
-
почитаю вечерком про object tracking, может приспособлю.
на tcl поизвращацца не хочешь?
http://www.cisco.com/en/US/products/sw/ios...00801a75a7.html (http://www.cisco.com/en/US/products/sw/iosswrel/ps5207/products_feature_guide09186a00801a75a7.html)
вдруг тоже приспособишь
-
И все-таки не понятно - зачем тут роуте-мап?
он здесь выполняет то же самое, что делает static route.
а если задать несколько статик роутов с разными приоритетами, то (при работающих keepalive) будет автору счастье...
или можно вместо keepalive прикрутить пинги через упомянутый object tracking
-
Интересно как nbv собирается для сети А в кач-ве next hop выбирать один static-route а для cети B другой static route?
>>Есть некоторая дом.сеть с подсетью А (для конкретики будет /23)
>>в этой подсети выделена подсеть меньшего размера Б (для
>>конкретики /26, входящая в /23).
[snip]
>>Политика маршрутизации такова что по умолчанию подсеть Б (/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
функционально эквивалентно команде
ip route $SUBNET_B 255.255.255.192 $IP_ADDRESS_OF_IP_TUNNEL permanent
при этом ты указываешь ип адрес другого конца тонеля, который не меняется при изменении провайдера.
так?
-
subnet_b - это моя сеть
-
понял. отстал.
-
возможно ли, теоретически, в 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 (http://www.cisco.com/application/pdf/en/us/guest/netsol/ns251/c649/ccmigration_09186a0080680606.pdf)
-
>Чз месяц сам нашёл ответ на свой вопрос - VRF (VPN routing & forwarding table).
>Фактически,наряду с global routing table, создаётся VRF table для конкретного L3 интерфеса и дальше весь >трафик роутитмся чз эту VRF таблицу. Её можно заполнять как статическим маршрутами так и с помощью
Если бы ты сразу сказал, что тебе нужен VRF-lite...
>динамических протоколов (OSPF,EIGRP). Осталось найти как "натравить" BGP на VRF.
Поднять MP-BGP. Детали в любой книжке по mpls.
[snip]