Перейдем к следующему атрибуту, который используется в BGP — это MED (MULTIEXIT_DISCRIMINATOR).
MED обозначается в sh ip bgp полем metric.
Используется, когда у нас есть несколько подключений к одной AS и с помощью MED’а мы говорим как к нам в AS лучше всего войти.
MED это не транзитивный атрибут и не обязательный (помним градацию атрибутов?). Но MED-ами роутеры обмениваются между своими EBGP соседями, но дальше не передают (сбрасывается в ноль). Между IBGP соседями метрика передается.
Давайте посмотрим работу на примере.
Есть два подключения у AS1 к одной и той же AS. С помощью MED мы и будем регулировать, через какой канал будет идти входящий трафик, Для начала настроим всю эту связку в базовом виде.
AS10.1:
int f1/0
ip addr 1.1.12.1 255.255.255.0
duplex full
speed auto
no shut
exit
int f1/1
ip addr 1.1.10.1 255.255.255.0
duplex full
speed auto
no shut
exit
router bgp 10
neighbor 1.1.12.2 remote-as 1
neighbor 1.1.10.2 remote-as 10
neighbor 1.1.10.2 next-hop-self
network 1.1.10.0 mask 255.255.255.0
network 1.1.12.0 mask 255.255.255.0
AS10.2:
int f1/0
ip addr 1.1.11.1 255.255.255.0
duplex full
speed auto
no shut
exit
int f1/1
ip addr 1.1.10.2 255.255.255.0
duplex full
speed auto
no shut
exit
router bgp 10
neighbor 1.1.11.2 remote-as 1
neighbor 1.1.10.1 remote-as 10
neighbor 1.1.10.1 next-hop-self
network 1.1.11.0 mask 255.255.255.0
network 1.1.10.0 mask 255.255.255.0
AS1:
int f1/0
ip addr 1.1.12.2 255.255.255.0
duplex full
speed auto
no shut
exit
int f1/1
ip addr 1.1.11.2 255.255.255.0
duplex full
speed auto
no shut
exit
int lo0
ip addr 1.1.1.1 255.255.255.255
router bgp 1
neighbor 1.1.12.1 remote-as 10
neighbor 1.1.11.1 remote-as 10
network 1.1.11.0 mask 255.255.255.0
network 1.1.12.0 mask 255.255.255.0
network 1.1.1.1 mask 255.255.255.255
Все BGP пиры связались.
Давайте посмотрим sh ip bgp на AS10.1:
AS1(config-route-map)#do sh run | s bgp
router bgp 1
no synchronization
bgp log-neighbor-changes
network 1.1.1.1 mask 255.255.255.255
network 1.1.11.0 mask 255.255.255.0
network 1.1.12.0 mask 255.255.255.0
neighbor 1.1.11.1 remote-as 10
neighbor 1.1.11.1 route-map MED out
neighbor 1.1.12.1 remote-as 10
neighbor 1.1.12.1 route-map MED1 out
no auto-summary
AS1(config-route-map)#do sh run | s route-map
neighbor 1.1.11.1 route-map MED out
neighbor 1.1.12.1 route-map MED1 out
route-map MED permit 10
set metric 10
route-map MED1 permit 10
set metric 20
AS1(config-route-map)#
С помощью route-map и далее через set metric мы установили MED. У кого MED меньше, тот и выигрывает в этой схватке.
посмотрим на AS10.1 теперь какой маршрут будет для входа в AS1:
Теперь вход в AS1 осуществляется через маршрутизатор AS10.2.
Таким образом мы можем применять MED для указания через какой линк должен быть входящий трафик.
Работает это все только в случае если наш маршрутизатор подключен к 1 AS разными линками (это по умолчанию).
Это ограничение можно снять используя команду bgp always-comare-med.
Переделаем немного топологию, и теперь она принимает такой вид:
AS1 получает сеть 10-ок от AS20 и AS10, выберется маршрут AS10, так как AS-PATH короче. Но мы можем выбрать AS20, с помощью AS-Prepend и с помощью MED.
Давайте настроим MED’ы для сетки 10ток.
AS10#sh run | s bgp
router bgp 10
no synchronization
bgp log-neighbor-changes
network 1.1.10.0 mask 255.255.255.0
network 1.1.11.0 mask 255.255.255.0
network 10.10.10.10 mask 255.255.255.255
neighbor 1.1.10.1 remote-as 20
neighbor 1.1.11.2 remote-as 1
neighbor 1.1.11.2 route-map MED10 out
no auto-summary
AS10#sh run | s route-map
neighbor 1.1.11.2 route-map MED10 out
route-map MED10 permit 10
match ip address prefix-list NET10
set metric 20
route-map MED10 permit 20
AS10#
и
AS20#sh run | s bgp
router bgp 20
no synchronization
bgp log-neighbor-changes
network 1.1.10.0 mask 255.255.255.0
network 1.1.12.0 mask 255.255.255.0
neighbor 1.1.10.2 remote-as 10
neighbor 1.1.12.2 remote-as 1
neighbor 1.1.12.2 route-map MED10 out
no auto-summary
AS20#sh run | s route-map
neighbor 1.1.12.2 route-map MED10 out
route-map MED10 permit 10
match ip address prefix-list NET10
set metric 10
route-map MED10 permit 20
AS20#
Смотрим sh ip bgp на AS1:
Метрика поменялась, но выбирается по прежнему маршрут через 10-ую AS. Почему?
А потому что при выборе маршрута в данном случае мы даже не рассматриваем метрику, мы смотрим до метрики что? AS-PATH, и выбираем кратчайший (выбор маршрута BGP).
Для того, чтобы протестировать нам работу с метрикой, нужно сделать одинаковое количество AS в AS-PATH, добавим еще один роутер, наша топология примит вид:
всю топологию настроим стандартно,добьемся того чтоб отовсюду были доступны все, в общем пропишем пиринги и нетворки.
теперь посмотрим на AS1.1 таблицу BGP:
мы добились чего хотели в плане того, что AS-PATH у нас одинаковый, и все равно не выбирается по метрики, должен выбраться путь с метрикой 20, а выбрался 30, почему?
Напомню, о чем уже говорил. MED по умолчанию работает только с одной AS, маршруты у нас поступают от разных AS, поэтому здесь MED и не учитывается.
Если мы хотим все же его учитывать и в этом случае, прописываем на AS1.1 и AS1:
bgp always-compare-med
теперь перезапросим маршруты и посмотрим что изменилось:
Теперь у нас выбирается тот путь, который мы и хотели, все работает.
На этом мы закончим первую часть о MED, в следующей заметке я еще немного расскажу о том, что можно изменять в MED, чтоб он работал не по умолчанию.