Механизм выбора DF позволяет выбрать разный DF для разных вланов, тем самым можно, например, добиться балансировки трафика между различными bridge-доменами — трафик разных вланов будет идти по разным линкам в сторону CE маршрутизатора внутри одного EVPN-instance.
Маршрутизатор отправляет анонс маршрута типа 4 с указанием ESI и соответствующим комьюнити и запускает таймер выбора DF. По умолчанию данный таймер установлен в 3 секунды. Его можно изменить, но он должен быть одинаков на всех PE маршрутизаторах сегмента — иначе алгоритм может отработать некорректно.
По истечению таймера все PE маршрутизаторы, участвующие в выборе DF, составляют полный список всех PE маршрутизаторов сегмента начиная с самого маленького адреса. Каждому из PE маршрутизаторов в списке присваивается номер (i), начиная с нуля.
После этого высчитывается номер DF по формуле V mod N = i, где 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.
Для примера посмотрим, кто в указанной выше схеме будет 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
Как видите механизм работает.