У меня была сеть, которая использовала ECMP для балансировки трафика по нескольким OSPF-маршрутам с одинаковой суммарной метрикой. Проще говоря, если у нас есть три узла с роутерами Mikrotik на ROS6, то трафик между A и C распределялся равномерно по обоим путям, как и хотелось:
Где A<->C стоит с метрикой 20
A<->B = 10
B<->C = 10
A-----C
\ /
\ /
B
Но после обновления роутера A (головного в данном примере) на ROS7 трафик A->C перестал использовать ECMP и стал как-то учитывать «разрыв вничью» по «числу хопов». В нашем примере весь трафик A->C теперь идёт только по прямому маршруту A->C. Если метрика A<->C увеличить до 21, весь трафик идёт через B. Если метрика A<->C остаётся 20, но уменьшается на 1 метрика либо A<->B, либо B<->C (становится 9), трафик снова идёт через B.
Пока что мы нашли обходной путь — создаём VLAN через A->B->C так, чтобы этот путь воспринимался как один хоп, тогда ECMP снова начинает нормально балансировать. Но у нас большая сеть с десятками узлов и роутеров, и это быстро превращается в кошмар для поддержки.
Так что же изменилось в ROS6 → ROS7, что нарушило нормальную работу ECMP?
Где A<->C стоит с метрикой 20
A<->B = 10
B<->C = 10
A-----C
\ /
\ /
B
Но после обновления роутера A (головного в данном примере) на ROS7 трафик A->C перестал использовать ECMP и стал как-то учитывать «разрыв вничью» по «числу хопов». В нашем примере весь трафик A->C теперь идёт только по прямому маршруту A->C. Если метрика A<->C увеличить до 21, весь трафик идёт через B. Если метрика A<->C остаётся 20, но уменьшается на 1 метрика либо A<->B, либо B<->C (становится 9), трафик снова идёт через B.
Пока что мы нашли обходной путь — создаём VLAN через A->B->C так, чтобы этот путь воспринимался как один хоп, тогда ECMP снова начинает нормально балансировать. Но у нас большая сеть с десятками узлов и роутеров, и это быстро превращается в кошмар для поддержки.
Так что же изменилось в ROS6 → ROS7, что нарушило нормальную работу ECMP?
