Стоит упомянуть еще об одном интересном модуле netgraph — ng_one2many. Этот узел позволяет объединить несколько интерфейсов по принципу «один ко многим» (или многие к одному). На один из интерфейсов, который объявляется как one, перенаправляются все many-интерфейсы, входящие пакеты собираются в one. Подробности его настройки с примером приведены на man-странице ng_one2many(4), перевод лежит на
С помощью ng_one2many можно объединить несколько сетевых интерфейсов (например подключенных к разным провайдерам) в один узел, трафик будет равномерно распределяться между интерфейсами. Для распределения нагрузки используется round-robin алгорим, как вариант, предлагается дублирование пакетов от one на все many-интерфейсы. Следует отметить, пока он еще не достаточно хорошо определяет работоспособность канала, поэтому его следует использовать с осторожностью. Команды очень просты. Объявляем le0 как one:
# ngctl mkpeer le0: one2many upper one
# ngctl connect le0: le0:upper lower many0
# ngctl connect le1: le0:upper lower many1
И так далее все остальные интерфейсы. Переводим их в promiscuous и запрещаем модификацию:
# ngctl msg le1: setpromisc 1
# ngctl msg le1: setautosrc 0
Настраиваем все many интерфейсы, значение «1» должно соответствовать числу интерфейсов:
# ngctl msg fxp0:upper setconfig «{ xmitAlg=1 failAlg=1 \
enabledLinks=[ 1 1 ] }»
И поднимаем le0:
# ifconfig fxp0 192.168.1.1 netmask 0xfffffffc
С этого момента ширина полосы, обеспечиваемая виртуальным интерфейсом, увеличилась.
//
А если нужно разбить не равномерно, а по портам (http через одного права, а всё остальное через другого)? Эта штука поможет?