Резервирование каналов: IPSLA+EEM
- Font size: Larger Smaller
- Hits: 5517
- 0 Comments
- Subscribe to this entry
- Bookmark
Думаю каждый ИТ специалист когда-либо встречался с таким понятием как резервирование и отказоустойчивость. Представьте себе вы поддерживаете работу небольшого офиса, с одним маршрутизатором cisco в качестве шлюза в интернет и несколькими коммутаторами уровня доступа. Все у вас замечательно и тут упал провайдер, который выпускал ваших сотрудников в интернет (думаю ситуация знакома каждому)...
Через некоторое время после ваших продолжительных звонков провайдер героически поднимает канал и все у вас начинает работать замечательно. Тем не менее осадок остался и через день приходит начальник и спрашивает можем ли мы что-то сделать, что бы избежать таких ситуаций? К примеру пользоваться одновременно услугами двух провайдеров. Конечно можно, отвечаете вы (это ведь на самом деле возможно). А главное реализовать это при наличии второго шнурка от прова абсолютно не сложно, используя такие технологии как IP SLA и EEM (embedded event manager).
Для чего они вообще нужны и что нам дают? IP SLA позволяет нам проверить выполнение заданных нами условий, в то время как EEM поможет изменить конфигурацию исходя из этих условий. Подробнее можно найти в интернете, а мы сконцентрируем наше внимание на практическом применении. Итак, давайте вначале взглянем на нашу упрощенную схему (Рис.1)
Рис.1
Перед нами очень упрощенная схема подключения офисных компьютеров в интернет. Дабы не нагружать статью не нужной информацией я не буду описывать настройку NAT-а, DHCP, списков доступа. Как это сделать можно прочитать в моих предыдущих статьях, а в данном примере мы будем предполагать, что все это уже настроено. Поэтому просто приведу ключевые параметры наших интерфейсов на маршрутизаторе (шлюзе):
Interface Gi0/0: 192.168.1.1 255.255.255.0 - адрес шлюза в локальной сети Interface Gi0/1: 1.1.1.2 255.255.255.0 - адрес, выданный 1-м провайдером Interface Gi0/2: 2.2.2.2 255.255.255.0 - адрес, выданный 2-м провайдером ISP1-ROUTER: 1.1.1.1 255.255.255.0 - адрес маршрутизатора 1-го провайдера ISP2-ROUTER: 2.2.2.1 255.255.255.0 - адрес маршрутизатора 2-го провайдера
Задача будет следующей: Интернет должен в первую очередь работать через 1-го провайдера, т.е. трафик должен идти через маршрутизатор 1.1.1.1. В случае падения основного провайдера трафик должен пойти через резервный канал, т.е. через маршрутизатор 2.2.2.1.
Как будем это решать?
Для начала нам нужно создать IP SLA и сказать ему для проверки пинговать маршрутизатор провайдера 1.
Router>en
Router#conf t
Router(config)#ip sla 100 - создаем ip sla и указываем его уникальный номер. Мне захотелось использовать номер 100.
Router(config-ip-sla)#icmp-echo 1.1.1.1 source-interface Gi0/0 - говорим нашему ip sla пинговать адрес 1.1.1.1 (маршрутизатор провайдера 1) через интерфейс Gi0/0 (на который приходит провод от провайдера 1). Важно указывать порт, т.к. пропинговать адрес в интернете можно и через резервного провайдера. Важно что бы это было сделано именно через порт, к которому провайдер 1 приходит.
Router(config-ip-sla)#frequency 30 - задаем частоту пингов. Я задал 30, но значение можно менять.
Router(config-ip-sla)#exit - выходим из настройки ip sla и возвращемся в глобальный режим конфигурации.
Router(config)#
Теперь необходимо привязать его к track, который будет использоваться EEM-ом для определения статуса.
Router(config)#track 100 ip sla 100 - создаем track с номером и привязываем его к созданному ранее ip sla 100
Далее запускаем наш ip sla
Router(config)#ip sla schedule 100 life forever start-time now
Что ж, теперь у нас есть процесс который постоянно мониторит доступен ли у нас маршрутизатор провайдера с ip адресом 1.1.1.1. Осталось понять как мы можем это использовать для переключения на резервного провайдера в случае падения основного. На самом деле есть два способа:
1) Для достижения данной цели этот способ является наиболее оптимальным и простым в конфигурации. Можно создать два дефолтных маршрута одновременно на оба провайдера. При этом маршрут через резервного провайдера у нас будет с худшей метрикой, а маршрут через основного провайдера будет указан у нас с параметром track 100, т.е. в случае когда будут выполняться условия в ip sla 100 (будет пинговаться маршрутизатор 1-го провайдера). Выглядеть это все будет приблизительно так:
Router(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.1 name ISP1 track 100 - маршрут через основного провайдера, который будет активен в случае если выполняется наше условие в ip sla 100, т.е. пингуется 1.1.1.1
Router(config)#ip route 0.0.0.0 0.0.0.0 2.2.2.1 name ISP2 20 - маршрут через резервного провайдера с метрикой 20. Т.е. у этого маршрута метрика хуче чем у основного и он будет появляться в таблице маршрутизации только когда не будет активен основной маршрут.
2) Второй способ сложнее и объемней в конфигурировании, но при этом дает нам намного больше гибкости. Мы можем использовать функции EEM, который, исходя из статуса IP SLA позволит нам в прямом смысле изменить конфиг на лету. Давайте взглянем на конфиг
Router(config)#event manager applet ISP1-DOWN
Router(config-applet)#event track 100 state down
Router(config-applet)#action 1.0 cli command "enable"
Router(config-applet)#action 1.1 cli command "conf t"
Router(config-applet)#action 1.2 cli command "no ip route 0.0.0.0 0.0.0.0 1.1.1.1 name ISP1"
Router(config-applet)#action 1.3 cli command "ip route 0.0.0.0 0.0.0.0 2.2.2.1 name ISP2"
Router(config-applet)#exit
Router(config)#event manager applet ISP1-UP
Router(config-applet)#event track 100 state up
Router(config-applet)#action 1.0 cli command "enable"
Router(config-applet)#action 1.1 cli command "conf t"
Router(config-applet)#action 1.2 cli command "no ip route 0.0.0.0 0.0.0.0 2.2.2.1 name ISP2"
Router(config-applet)#action 1.3 cli command "ip route 0.0.0.0 0.0.0.0 1.1.1.1 name ISP1"
Что делает этот конфиг? В самом начале мы создаем applet по имени ISP1-DOWN, который смотрит состояние track-а 100 и в случае если он падает заходит в режим конфигурирования, удаляет маршрут по умолчанию на основного провайдера и добавляет маршрут по умолчанию на резервного провайдера.
В обратную сторону applet по имени ISP1-UP так же смотрит за состоянием track 100 и в случае если он в up-е, т.е. маршрутизатор прова пингуется, то переписывает все обратно, т.е. удаляет маршрут на резервного провайдера и добавляет маршрут на основного.
Я думаю вы поняли ключевую разницу между этими 2-я способами. Для выполнения нашей задачи лучше конечно подходит 1-й. Он проще и не такой громоздкий, при этом полностью соответствует требованиям нашей задачи. При этом мне хотелось показать возможности EMM. В случае более сложной и интересной задачи вы можете воспользоваться им и переделать на лету свой конфиг до неузнаваемости :) Какой полет для фантазии ;)
Ну вроде бы все. Надеюсь данный пост был вам интересен, а еще лучше еслии он пригодятся вам на практике. Спасибо за внимание и до новых постов ;)