# Анонс разных префиксов через разных ISP

Ещё один способ распределить нагрузку – раздавать разные сети разным провайдерам.

Сейчас в сети ЦОДа наши анонсы выглядят так:

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

То есть наша сеть 100.0.0.0/23 известна через два пути, но в таблицу маршрутизации добавится только один. Соответственно и весь трафик назад пойдёт одним – лучшим путём.

Но!\
Мы можем разделить её на две подсети /24 и одну отдавать в Балаган Телеком, а другую в Филькин Сертификат.\
Соответственно ЦОД будет знать про эти подсети через разные пути:

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

Настраивается это так.

Во-первых, мы прописываем **все** свои подсети – все 3: одну большую /23 и две маленькие /24:

```
router bgp 64500
network 100.0.0.0 mask 255.255.254.0
network 100.0.0.0 mask 255.255.255.0
network 100.0.1.0 mask 255.255.255.0
```

Для того, чтобы они могли быть анонсированы, нужно создать маршруты до этих подсетей.

```
ip route 100.0.0.0 255.255.254.0 Null0
ip route 100.0.0.0 255.255.255.0 Null0
ip route 100.0.1.0 255.255.255.0 Null0
```

А теперь создаём префикс-листы, которые разрешают каждый только одну подсеть /24 и общую /23.

```
ip prefix-list LIST_OUT1 seq 5 permit 100.0.0.0/24
ip prefix-list LIST_OUT1 seq 10 permit 100.0.0.0/23
! 
ip prefix-list LIST_OUT2 seq 5 permit 100.0.1.0/24
ip prefix-list LIST_OUT2 seq 10 permit 100.0.0.0/23
```

Осталось привязать префикс-листы к соседям.

```
router bgp 64500
neighbor 101.0.0.1 remote-as 64501
neighbor 101.0.0.1 prefix-list LIST_OUT1 out
neighbor 102.0.0.1 remote-as 64502
neighbor 102.0.0.1 prefix-list LIST_OUT2 out
```

Привязываем мы их на OUT – на исходящий, потому что речь о маршрутах, которые мы отправляем вовне.

Итак, соседу 101.0.0.1 (Балаган Телеком) мы будем анонсировать сети 100.0.0.0/24 и 100.0.0.0/23.\
А соседу 102.0.0.1 (Филькин Сертификат) – сети 100.0.1.0/24 и 100.0.0.0/23.

Результат будет таким:

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

Вроде бы, неправильно, потому что у нас по два маршрута в каждую сеть /24 – через Балаган Телеком и через Филькин Сертификат.\
Но если приглядеться, то вы увидите, что согласно AS-Path у нас такие маршруты:

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

То есть, по сути всё правильно. Да и в таблицу маршрутизации всё помещается правильно:

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

Теперь осталось ответить на вопрос какого лешего мы тащили за собой большую подсеть /23? Ведь согласно правилу Longest prefix match более точные маршруты предпочтительней, то есть /23, как бы и не нужен, когда есть /24.

Но вообразим себе ситуацию, когда падает сеть Балаган Телеком. Что при этом произойдёт

Существуют также специальные организации, которые отслеживают анонсы BGP в Интернете и, если вдруг происходит что-то неожиданное, может уведомить владельца сети. Подсеть 100.0.0.0/24 перестанет быть известной в интернете – ведь только Балаган Телеком что-то знал о ней благодаря нашей настройке. Соответственно, ляжет и часть нашей сети. Но! Нас спасает более общий маршрут 100.0.0.0/23. Филькин Сертификат знает о нём и анонсирует его в Интернет. Соответственно, хоть ЦОД и не знает про сеть 100.0.0.0/24, он знает про 100.0.0.0/23 и пустит трафик в сторону Филькина Сертификата.

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

То есть, слава Лейбницу, мы застрахованы от такой ситуации.

> Надо иметь ввиду, что помимо настройки маршрутизатора вам придётся завести все три сети в базе данных RIPE. Там должны быть и обе сети /24 и сеть /23.

[Конфигурация устройств](https://docs.google.com/document/d/1MkA5_S6bc4JEDdpWiLBkEuqMN52-nh2PrzUC2f3UHjM/edit?usp=sharing)
