On Fri, Feb 05, 2010 at 03:52:43PM +0200, Вячеслав wrote: > > > bond0: received packet with own address as source address > > > > А какой именно режим используется для bond0, и как настроен > > коммутатор, в который включены соответствующие кабели? > > > > mode=5 и mode=6 точно не работают совместно с bridge; mode=4 (802.3ad) > > работает, но требует соответствующей настройки и со стороны > > коммутатора. > > `cat options` > TYPE=bond > HOST='eth0 eth1' > BONDOPTIONS="mode=0 miimon=100" > DISABLED=no > BOOTPROTO=static > NM_CONTROLLED=no > ONBOOT=yes mode=0 требует настройки статического агрегирования на коммутаторе без использования протокола LACP; без этой настройки будут как раз такие ошибки (пакеты, переданные в один из портов, будут возвращаться назад через другой). Кроме того, при использовании mode=0 возможно изменение порядка пакетов в пределах одного соединения, что может вызывать проблемы, например, повторные передачи в TCP, если такое переупорядочивание будет обработано как признак перегрузки в сети. Этой проблемы можно избежать, если использовать mode=2 и xmit_hash_policy=layer2 или layer2+3 (вариант layer3+4 может приводить к изменению порядка пакетов в редких случаях, когда используется фрагментация на уровне IP). Настройки коммутатора для mode=2 требуются те же, что и для mode=0 - статическое агрегирование без использования LACP. При использовании bonding в комбинации с bridge и виртуальными машинами нужно учитывать, что при обработке xmit_hash_policy код bonding не использует MAC-адрес отправителя в исходящих пакетах; в результате, если несколько разных ВМ отправляют пакеты на один и тот же MAC-адрес (например, на маршрутизатор), все эти пакеты при использовании xmit_hash_policy=layer2 будут попадать в один канал. Для борьбы с этим можно использовать xmit_hash_policy=layer2+3 (в этом случае учитываются оба IP-адреса в пакете, в результате пакеты от разных ВМ могут быть распределены по разным интерфейсам даже при обмене с одним и тем же MAC и IP). Режима, поддерживающего балансировку нагрузки, совместимого с использованием bridge, и при этом не требующего специальных настроек коммутатора, в модуле bonding в настоящее время нет (в режимах balance-alb и balance-tlb модуль bonding меняет MAC-адреса в исходящих пакетах, не учитывая того, что эти пакеты могут исходить от ВМ со своими собственными MAC). В Citrix XenServer добавляли режим balance-slb, который якобы умеет разносить трафик от разных ВМ по разным интерфейсам (заявлена динамическая балансировка нагрузки по алгоритмам, аналогичным balance-alb, но с использованием source MAC в качестве ключа), однако этот патч придётся искать где-то внутри общей свалки исходников: http://www.citrix.com/lang/English/lp/lp_1688623.asp Хотя сейчас ещё есть http://openvswitch.org/ (причём в Xen Cloud Platform перешли именно на него, так что пропихивать куда-то поддержку balance-slb разработчики, похоже, уже не будут).