# Route Map

До сих пор все правила применялись безусловно – на все анонсы от пира или пиру.\
С помощью карт маршрутов (у других вендоров они могут называться политиками маршрутизации) мы можем очень гибко применять правила, дифференцируя анонсы.

Синтаксис команды следующий:

```
route-map {map_name} {permit|deny} {seq}
[match {expression}]
[set {expression}]
```

**map\_name** – имя карты\
**permit/deny** – разрешаем или нет прохождение данных, подпадающих под условия route-map\
**seq** – номер правила в route-map\
**match** – условие подпадания трафика под данное правило.

**expression**:

| **Критерий**         | **Команда конфигурации**     |
| -------------------- | ---------------------------- |
| Network/mask         | match ip address prefix-list |
| AS-path              | match as-path                |
| BGP community        | match community              |
| Route originator     | match ip route-source        |
| BGP next-hop address | match ip next-hop            |

**set** – что сделать с отфильтрованными маршрутами\
**expression**:

| **Параметры**    | **Команда конфигурации** |
| ---------------- | ------------------------ |
| AS path prepend  | set as-path prepend      |
| Weight           | set weight               |
| Local Preference | set local-preference     |
| BGP community    | set community            |
| MED              | set metric               |
| Origin           | set origin               |
| BGP next-hop     | set next-hop             |

## Пример применения

Укажем, что в подсеть 120.0.0.0/24 предпочтительно ходить через Балаган Телеком, а в 103.0.0.0/22 через Филькин Сертификат. Для этого воспользуемся атрибутом Local Preference. Чем выше значение этого параметра, тем выше приоритет маршрута.

```
ip prefix-list TEST1_IN seq 5 permit 120.0.0.0/24

ip prefix-list TEST2_IN seq 5 permit 103.0.0.0/22

route-map BGP1_IN permit 10
match ip address prefix-list TEST1_IN
set local-preference 50

route-map BGP1_IN permit 20
set local-preference 100

route-map BGP2_IN permit 10
match ip address prefix-list TEST2_IN
set local-preference 50
route-map BGP2_IN permit 20
set local-preference 100
router bgp 64500
neighbor 101.0.0.1 route-map BGP2_IN in
neighbor 102.0.0.1 route-map BGP1_IN in
```

Сначала мы создали обычным образом **prefix-list**, которым выделили подсеть 120.0.0.0/24. **Permit** означает, что на этот префикс в будущем будут действовать правила route-map. Как и в обычных ACL далее идёт неявное правило deny для всего остального. В данном случае оно означает, что под действие route-map подпадёт только 120.0.0.0/24 и ничего другого.

В созданной карте маршрутов BGP1\_IN мы разрешили прохождение маршрутной информации (**permit**), подпадающей под созданный prefix-list (**match ip address prefix-list TEST1\_IN**).\
Для этих анонсов установим local preference в 50 – ниже, чем стандартные 100 (**set local-preferеnce 50**). То есть они будут менее «интересными».

И в конечном итоге привяжем карту к конкретному BGP-соседу (**neighbor 102.0.0.1 route-map BGP1\_IN in**).

Что же получается в результате?

![](http://img-fotki.yandex.ru/get/9114/83739833.29/0_bc5d0_8206dfc_XL.png)

[Конфигурация устройств](https://docs.google.com/document/d/12xNI1OWSEVB6WRQF2nurKgun71z5JHOE8BJQESAMI8A/pub)

Другие примеры рассмотрим в следующем разделе.
