Как уже выше написали, в интернете достаточно много статей по балансировки трафика по нескольким провайдерам. Однако надо ответить для себя на несколько вопросов:
1. Алгоритм балансировки. Самый простой - round-robind, попеременно высылающий пакет, то через один канал, то через другой. Однако, он не учитывает скорости каналов и их загруженность.
2. Балансировать пакеты или соединения? Мы должны выбрать что мы будем балансировать - исходящие пакеты или соединения. ИМХО, балансировать пакеты уместнее когда у вас и у удаленной стороны настроен бондинг. Когда разные провайдеры, каждый из которых выдает вам свой IP-адрес, уместнее привязывать каждое исходящее соединение на конкретного провайдера и слать это соединение только через него. Кроме того необходимо, чтобы любой входящий запрос к вам через одного из провайдера, уходил обратно через него же.
3. Кроме балансировки нам необходим метод определения доступности канала, чтобы исключить нерабочий канал из балансировки, и, наоборот, добавить заработавший канал снова в балансировку. Самый простой способ, это просто смотреть находится ли сетевой интерфейс в рабочем состоянии - есть ли линк. Однако это плохой способ, так как линк может быть поднят, но проблемы у провайдера где-то дальше, а мы все равно будем отправлять через него данные. Разумнее отдельно для каждого провайдера проверять доступность провайдерского шлюза, например, пингом. Однако если мы получаем IP-адрес по DHCP, и сеть(шлюз) периодически меняются, нам необходимо это учитывать.