Когда пытаются балансировать трафик на внешних каналах между
AS обычно используют несколько первых шагов из
алгоритма выбора лучшего пути BGP, при этом какие-то вопросы возникают только со входящим трафиком. С исходящим набор инструментов включает в том числе автоматическую балансировку по нескольким маршрутам
bgp multipath и даже с учётом нагрузки
bgp dmzlink-bw, не говоря уже обо всех возможностях просто маршрутизации,
PBR,
VRF. Полный контроль.
Со входящим трафиком используют
community, сейчас это обычное дело у многих они определены и работают. Или
AS_PATH препенды. Редко кто добирается до
MED, вместо этого, как правило, идёт в ход артиллерия
more specific префиксов. Меньше /24 в большом Интернет вряд ли заработает их и так уже скоро 60%, но метод действенный.
Однако алгоритм из 13 пунктов, а мы дальше 6 не двинулись. Есть одно шаманство куда можно атаковать - 10 пункт предписывает выбрать при прочих равных маршрут который уже является лучшим, получен первым. Это условие вносит некоторую неопределённость, чтобы убрать её есть команда
bgp best path compare-routerid. Но она есть и это
RFC5004 и её можно использовать. У Cisco включено по умолчанию, у
Bird выключено.
Итак, нам надо поменять порядок маршрутов на удалённом узле, чтобы лучший маршрут через нужное нам направление был выбран. Убираем анонсы через какой-то свой аплинк или понижаем им приоритет добавив препенд. Тогда трафик из этого аплинка убежит, так как будет выбран другой лучший, а если всё вернуть как было трафик вернётся обратно, но не совсем весь. Ведь процесс на удалённых BGP маршрутизаторах, при прочих равных выберет маршрут который уже был лучшим, через другой наш аплинк. На этом можно сыграть, чтобы чуть-чуть добавить или убрать трафик.
Но предсказать такое поведение с точностью что сейчас мы перестроим X мегабит/c трафика нельзя, поэтому это злейшее шаманство. С большой вероятностью разницу не будет видно, как минимум алгоритм лучшего пути зависит от вендора и им можно управлять. Может будет видно сильнее ожидаемого, коррективу внесут повсеместные
CDN с их умными балансировками. Эффект может быть отложенным,
BGP в мировом масштабе вообще не сходится никогда. Это может сработать один раз и не сработать другой. Причин не использовать гораздо больше чем использовать, если хочется строить стабильную и прогнозируемую сеть.
Интернет трафик в силу своей непредсказуемой природы в принципе сложно сбалансировать точно, плюс минус гигабит/c может изменится в течение одного часа. Но закономерности можно найти и они в первую очередь будут зависеть от источника внутри своей сети, на что мы всесильны влиять. Поэтому знать это и анализировать кто в сети пользуется и какими ресурсами, во сколько, как много, очень сильно помогает. Как минимум позволит отделить постоянную и периодические составляющие от неоднородностей, определить для чего нужны низкие задержки, а для чего нужна большая полоса. После этого как правило достаточно совершенно простых методов в рамках обычных механизмов маршрутизации, чтобы малыми усилиями (исходящим трафиком) изменить входящий, оставив всякие шаманства за бортом.
На картинке пример того как трафик убежал и не вернулся весь (телеграм немного поджал картинку, но я думаю эффект виден). Пример не искусственный, а следствие аварии. Весь период на графике 20 минут, но эффект сохранился и дальше если смотреть суточный график. Объём который не вернулся около гигабита/c, это единицы процентов от всего трафика.