четверг, 22 июля 2010 г.

LACP D-Link + Linux Bonding

Следующая задача состояла в том чтобы увеличить пропускную способность между роутером на Linux и свичом который на котором собраны разные 1Г транспорты.

Свич мы на строили по примеру из предыдущего поста, настала очередь роутера.

1. Пересобираем ядро с поддержкой bonding, и обязательно в виде модуля, т.к. только в этом случае мы можем задавать ему разные опции.
2. Настраиваем модуль:

/etc/modprobe.d/bond.conf

alias bond0 bonding
alias bond1 bonding

options bonding mode=4 max_bonds=2 xmit_hash_policy=1


Тут поподробнее bond0 - первый интерфейс, bond1 - второй
bonding mode=4 - режи работы бондинга совместимый с 802.1ad который включен у нас на свиче.
max_bonds=2 Количество бонд-интерфейсов, без него сможем создать только 1 интерфейс.
xmit_hash_policy=1 - самое интересное, аналог config link_aggregation algorithm both_ip_mac_source_dest в свиче D-Link, без него те же траблы. Кому интересно очень подробное описание находится в файле /usr/src/linux/Documentation/networking/bonding.txt

Теперь настраиваем собственно интерфейсы:

/etc/conf.d/net

modules=( "iproute2" )

config_eth0=(<->"192.168.100.1/32"<---->)
config_eth1=(<->"192.168.100.2/32"<---->)
config_eth2=(<->"192.168.100.3/32"<---->)
config_eth3=(<->"192.168.100.4/32"<---->)


slaves_bond0="eth0 eth1"
slaves_bond1="eth2 eth3"

config_bond0=(<>"192.168.100.5/32"<---->)
config_bond1=(<>"192.168.100.6/32"<---->)

vconfig_bond0=( "set_name_type VLAN_PLUS_VID" )
vconfig_bond1=( "set_name_type VLAN_PLUS_VID" )


vlans_bond0="220"
vlans_bond1="226 227 496 526 527 606 497 604 504 550 551 332 498 506 525 602 603 605"

config_vlan0220=(<----->"1хх.1хх.1хх.2хх/30"<-->)


.... и дальше собственно настройки vlan-интерфейсов


Почему-то с конструкцией "NULL" в виде адреса интерфейса не создавались вланы, поэтому прописал фейковые адреса.

Теперь добавляем симлинки:

ln -s /etc/init.d/net.lo /etc/init.d/net.bond0
ln -s /etc/init.d/net.lo /etc/init.d/net.bond1


И добавляем автозагрузку:
rc-update add net.bond0 default
rc-update add net.bond1 default


Все работает, как и надо
Система Gentoo Linux, свич D-Link DGS-3100

Комментариев нет: