> For the complete documentation index, see [llms.txt](https://linkmeup.gitbook.io/sdsm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://linkmeup.gitbook.io/sdsm/12.1.-mpls-evpn/3.-evpn-route-types/3.-route-4/0.-df.md).

# Механизм выбора DF

Механизм выбора DF позволяет выбрать разный DF для разных вланов, тем самым можно, например, добиться балансировки трафика между различными bridge-доменами — трафик разных вланов будет идти по разным линкам в сторону CE маршрутизатора внутри одного EVPN-instance.

Маршрутизатор отправляет анонс маршрута типа 4 с указанием ESI и соответствующим комьюнити и запускает таймер выбора DF. По умолчанию данный таймер установлен в 3 секунды. Его можно изменить, но он должен быть одинаков на всех PE маршрутизаторах сегмента — иначе алгоритм может отработать некорректно.

По истечению таймера все PE маршрутизаторы, участвующие в выборе DF, составляют полный список всех PE маршрутизаторов сегмента начиная с самого маленького адреса. Каждому из PE маршрутизаторов в списке присваивается номер (i), начиная с нуля.

После этого высчитывается номер DF по формуле [V mod N = i](https://ru.wikipedia.org/wiki/Деление_с_остатком), где V — номер влана, а N количество PE маршрутизаторов в сегменте. Тот PE маршрутизатор, номер которого будет результатом вычисления и становится DF данного сегмента в данном влане.

Попробуем высчитать DF для влана 777 если у нас будет только 2 PE маршрутизтора с адресами 62.0.0.1 и 62.0.0.2.

Оба PE маршрутизатора составят такой список

```
62.0.0.1 i=0
62.0.0.2 i=1
```

Так как влан у нас 777, то V=777, а N=2 (так как у нас всего два маршрутизатора в сегменте). Теперь считаем 777 mod 2 = 1. Значит DF у нас 62.0.0.2.

Теперь увеличим число PE маршрутизаторов в сегменте до 3 и еще раз посчитаем.

```
62.0.0.1 i=0
62.0.0.2 i=1
62.0.0.3 i=2
```

777 mod 3 = 0, значит DF 62.0.0.1.

Как нетрудно догадаться, если у нас в сегменте будет два влана например 777 и 778 и два PE маршрутизатора, то в 777 влане DF станет PE1, а в 778 PE2.\
![](https://habrastorage.org/files/769/569/f85/769569f8510741a4b737b14a653bd442.png)\
Для примера посмотрим, кто в указанной выше схеме будет DF при vlan-id 777:

```
bormoglotx@RZN-PE-2# run show evpn instance RZN-VPN-3 extensive | match "vlan|forward"
    VLAN ID: 777
      Designated forwarder: 62.0.0.2
      Backup forwarder: 62.0.0.1
```

Теперь поменяем номер влана на 778 и посмотрим, изменится ли DF:

```
bormoglotx@RZN-PE-2# run show evpn instance RZN-VPN-3 extensive | match "vlan|forward"
    VLAN ID: 778
      Designated forwarder: 62.0.0.1
      Backup forwarder: 62.0.0.2
```

Как видите механизм работает.
