# 4.1) Смена типов областей и Load Balancing

![Схема сети](https://1953625668-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFMJhMiVjTLWfbfC-S4%2F-MV7zLlC_89HV1a7BWoN%2F-MV7zPGu9F_VsaPEGycj%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=446d0009-e792-440a-81ca-5a228c2fe672)

Для примера работы областей настроим распространение Direct-маршрута в Area 2 и распространим эту сеть по OSPF (Воображаемая сеть с протоколом RIP):

![](https://1953625668-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFMJhMiVjTLWfbfC-S4%2F-MSdwD-wK-AzigzlQ5UR%2F-MSe-yP5fsGIfunqpZ1z%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=c4675672-f0c6-48a9-9cf0-b6248836f2cc)

{% code title="RT.VVK.NOV#" %}

```
set interfaces ge-0/0/0 unit 0 family inet address 192.168.0.1/24
set policy-options policy-statement RIP_ORIGINATE from protocol direct
set policy-options policy-statement RIP_ORIGINATE then accept
set protocols ospf export RIP_ORIGINATE
```

{% endcode %}

## Stub Area и Totally-Stub Area

Так как Area1 является полностью тупиковой (в ней нет маршрутизаторов, которые распространяют маршруты, полученные от других протоколов, по OSPF), то можно настроить её как Stub Area, а, затем, и как Totally-Stub Area.

Для этого на каждом маршрутизаторе (ABR в том числе), который принадлежит Area1 нужно указать, атрибут stub:

{% code title="RT.MSK.M8#" %}

```
set protocols ospf area 1 stub
```

{% endcode %}

Однако, после коммита, исчезнут все External-маршруты, а дефолтный к ABR так и не появится. Для этого на ABR (RT.MSK.M9) надо явно объявить анонсирование Default-маршрута в эту Area и выбрать для него метрику:

{% code title="RT.MSK.M9#" %}

```
set protocols ospf area 1 stub default-metric 5
```

{% endcode %}

Теперь же вместо External-маршрутов появился маршрут по умолчанию через ABR:

![](https://1953625668-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFMJhMiVjTLWfbfC-S4%2F-MSeN03XfjusvlP1H4OO%2F-MSeOkmr286Jl05wsePT%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=fd493606-a2b3-4b07-94e3-fa201e54184f)

Можно ещё больше сократить таблицу маршрутизации, убрав Inter маршруты и перестав анонсировть LSA3 в область, для этого на ABR для этой области нужно указать атрибут no-summaries:

{% code title="RT.MSK.M9#" %}

```
set protocols ospf area 1 stub no-summaries
```

{% endcode %}

Теперь таблица маршрутизации выглядит так:

![](https://1953625668-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFMJhMiVjTLWfbfC-S4%2F-MSePEGKFBPepHqOcYQm%2F-MSePvdxMnbezhFUO84E%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=fd679b5e-115b-4dbe-8cf4-b9f73a85f8bf)

## Not-So-Stubby Area (NSSA)

Если мы хотим распространять маршруты, полученные от других протоколов маршрутизации в этой области, но при этом нам не нужно хранить маршруты от других областей, то можно настроить NSSA (аналогично на всех роутерах в этой Area):

```
set protocols ospf area 2 nssa
```

Далее необходимо настроить ABR для работы с LSA7 и отменить передачу LSA3 в область, если нужно:

{% code title="RT.SPB.LNX#" %}

```
set protocols ospf area 2 nssa no-summaries
set protocols ospf area 2 nssa default-lsa default-metric 5
set protocols ospf area 2 nssa default-lsa metric-type 1
```

{% endcode %}

В данном примере показано, что мы запретили распространение LSA3 в этой области (1 строка), добавили распространение маршрута по умолчанию через ABR (2 строка) и выбрали первый тип метрики (строка 3). Эта метрика складывает стоимость внешнего маршрута со стоимостью пути до ASBR, в то время как вторая (стандартная) учитывает только стоимость внешнего маршрута.

По итогу таблица маршрутизации на RT.EKB.LEN выглядит так:

![](https://1953625668-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFMJhMiVjTLWfbfC-S4%2F-MSeVSH1AsbVzRovV0Ls%2F-MSeWqMDTcl8wEDmcX-t%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=a52ace12-d779-44f3-8b53-d1bd7aa85854)

Видно, что по LSA7 мы получаем маршруты от ASBR внутри области и, при этом имеем один маршрут Inter из области через RT.SPB.LNX, так как у него default-metric=5, а у RT.SPB.MIR default-metric=15.

Вот что будет, если сменить у RT.SPB.LNX default-metric на 30 (трафик пойдёт через RT.SPB.MIR):

![](https://1953625668-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFMJhMiVjTLWfbfC-S4%2F-MSeYZAgZ45ucyhlGDo5%2F-MSeZ862EuHKxlPjxqRd%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=1d036dd0-26e1-49d0-91a8-956d820f24c1)

При этом линк в сторону RIP пингуется:

![](https://1953625668-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MFMJhMiVjTLWfbfC-S4%2F-MSeZJucHa9sf4M0Q_yc%2F-MSeZxAbjW0QCo2r08zl%2F%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png?alt=media\&token=1be8a818-319d-44f5-8864-5d76d7b39ff3)

## Load Balancing

Балансировка трафика. Тут всё просто. Балансировка будет только если до Destination IP есть несколько путей с одинаковой метрикой. Настроим балансировку:

```
policy-options {
    policy-statement LoadBalancing {
        from protocol ospf;
        then {
            load-balance per-packet;
        }
    }
}
routing-options {
    forwarding-table {
        export LoadBalancing;
    }
}
```

После этого проверим сколько записей у нас сохранилось для маршрута с RT.SPB.LNX до LoopBack-адреса RT.SPB.STL и произведём трассировку:

```
root@RT.SPB.LNX# run show route 10.0.0.200    

inet.0: 49 destinations, 57 routes (49 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.0.200/32      *[OSPF/10] 09:29:46, metric 2
                    > to 10.0.0.14 via ae0.0
                      to 10.0.0.6 via ae3.0

[edit]
root@RT.SPB.LNX# run traceroute 10.0.0.200 
traceroute to 10.0.0.200 (10.0.0.200), 30 hops max, 40 byte packets
 1  10.0.0.6 (10.0.0.6)  1.405 ms  0.830 ms 10.0.0.14 (10.0.0.14)  1.320 ms
 2  10.0.0.200 (10.0.0.200)  4.198 ms  1.556 ms  1.397 ms

[edit]
root@RT.SPB.LNX# run traceroute 10.0.0.200    
traceroute to 10.0.0.200 (10.0.0.200), 30 hops max, 40 byte packets
 1  10.0.0.14 (10.0.0.14)  1.383 ms  1.473 ms 10.0.0.6 (10.0.0.6)  1.528 ms
 2  10.0.0.200 (10.0.0.200)  1.550 ms  1.406 ms  1.454 ms
```

Собственно тут всё видно. Для одного маршрута появилось два Next-Hop'а, через которые мы периодически и ходим.

{% hint style="warning" %}
Это было настроено в главе про BGP, поэтому Load Balancing не включен в конфигурации устройств. Также можно не конфигурировать в policy-statement LoadBalancing поле from, тогда балансировка будет работать для всех протоколов, вообще.
{% endhint %}
