Jump to content
Калькуляторы

Баллансировка траффика LACP не могу подружить железки

Здравствуйте, коллеги, очень нужна Ваша помощь. Не могу подружить цепочку cisco->FreeBSD->Dlink DGS-3100 для аггрегации канала до 2Гбит/c.

От кошки приходит 2 кабеля по 1Гбит/c, выставлен LACP. Дальше мне неважно как соединить FreeBSD а потом Dlink или Dlink потом FreeBSD.

Я соединяю Dlink dgs-3100 с FreeBSD. У длинка настроек методов вообще нет, я так понял что там вшит MAC_source_destination

http://forum.dlink.ru/viewtopic.php?t=114497

Провайдер пробовал выставить MAC_source_destination на Cisco, но балансировки не происходит. По одному каналу льется(и входящий и исходящий) под 200 М/c, а по другому 100 Кб/c(запускаю где-то в 10 потоков траффик). А на FreeBSD я вообще не вижу где можно выставить методы балансировки для LACP.

man lagg

Также я пробовал соединяться по кошкинскому fec, но в этом случае исходящий траффик идет по одному каналу, а входящий по другому.

В общем и целом, я уже перепробовал все возможные конфигурации, но получить полноценную аггрегацию мне не удалось. Подскажите, где во FreeBSD выставляется алгоритм аггрегирования для LACP или я все делаю не так?

PS FreeBSD 7.2 Release.

Edited by freelsd

Share this post


Link to post
Share on other sites

от 3100 вы балансировки не добьетесь. не умеет он ее толком.

максимум что можно сделать : цепочка cisco -> 3100->freebsd

и с циски подавать port-channel load-balance src-dst-mac.

и прошейте 3100 последним софтом.

 

с фрей не подскажу, опыта поднятия lacp на ней нет.

Share this post


Link to post
Share on other sites
от 3100 вы балансировки не добьетесь. не умеет он ее толком.

максимум что можно сделать : цепочка cisco -> 3100->freebsd

и с циски подавать port-channel load-balance src-dst-mac.

и прошейте 3100 последним софтом.

 

с фрей не подскажу, опыта поднятия lacp на ней нет.

Прошил, port-channel load-balance src-dst-mac пробовали. Линк поднимается, но траффик идет только по одному порту. Вопрос про FreeBSD очень актуален

Share this post


Link to post
Share on other sites

руками разбалансируйте канал на 2 влана от провайдера к вам, и пустите их по разным портам.

Share this post


Link to post
Share on other sites

на dgs 3100 не получится балансировка. меняйте свич

Share this post


Link to post
Share on other sites

для freebsd можно сделать EtherChannel:

ifconfig lagg0 laggproto fec laggport em0 laggport em1

на cisco: channel-group 1 mode on

 

на linux можно lacp:

bond0 mode=4 miimon=100 xmit_hash_policy=layer2+3

на cisco: channel-group 1 mode active

 

между d-link и freebsd можно попробовать lb:

ifconfig lagg1 laggproto loadbalance laggport em2 laggport em3

у меня подружить freebsd и d-link не получилось(что-бы входящий и исходящий трафик верно балансировался)... а вот с linux и 802.3ad все хорошо завилось(только d-link плохо балансит tx по xor mac-ов)

Share this post


Link to post
Share on other sites

на dgs 3100 не получится балансировка. меняйте свич

Почему не получится? Между 3100 и 3627 работает без особых нареканий. 2 линка. Прошивка на 3100 старая - 2.00.47

Share this post


Link to post
Share on other sites
Провайдер пробовал выставить MAC_source_destination на Cisco, но балансировки не происходит. По одному каналу льется(и входящий и исходящий) под 200 М/c, а по другому 100 Кб/c(запускаю где-то в 10 потоков траффик). А на FreeBSD я вообще не вижу где можно выставить методы
Чем нагрузку генерите?

НУ если у вас стык один роутер с айпи-> Агрегация -> один роутер с айпи, то как вообще у вас будет распределятся нагрузка по макам то, маков всего два, ксор от них один и тот же, надо использовать агрегацию по апйпишникам, алгоритм агрегации на вашей стороне никак не связана с агрегацией на стороне провайдера?

Чтобы правильно работала агрегация по макам надо использовать схему много клиенты с айпи->агрегация -> один роутер с айпи или же схему где много роутер, чтобы связок по макам было много.

Share this post


Link to post
Share on other sites

Как используется FreeBSD? Это две отдельных машины с шейпингом? Если да, то настраивать LACP нужно только на концах (на Cisco и D-Link), а машины с FreeBSD сделать мостами.

Share this post


Link to post
Share on other sites

FreeBSD - BGP маршрутизатор. Поэтому весь траффик, идущий в AS будет проходить через него.

 

Связка DGS-3100 === Cisco 3750

Балансировка наблюдается только для входящего траффика при выставлении IP_source_destination на 3750(нам это не подходит никак). В остальных случаях исходящий по одному каналу, входящий по второму, либо весь траффик по одному каналу.

DGS-3100 === FreeBSD 7.2

Не смог добиться балансировки ни входящего, ни исходящего

Cisco 3750 === FreeBSD 7.2

Не смог добиться балансировки ни входящего, ни исходящего

 

Основной вопрос, на который мне хочется получить ответ - как во FreeBSD или Linux(мне неважно) выставить алгоритм балансировки. И какой алгоритм сейчас используется что во FreeBSD, что в dgs-3100 я тоже не могу посмотреть

 

руками разбалансируйте канал на 2 влана от провайдера к вам, и пустите их по разным портам.
Не понял.
на dgs 3100 не получится балансировка. меняйте свич
Невозможно, их 8 штук.
а вы чем канал нагружаете?
Iperf. Стараюсь с разных хостов нагрузку давать. Но 2Гб нужно BGP шлюзу, поэтому мне самому до конца непонятно как будет делаться балансировка по IP или маку, если источник и получатель пакетов мой BGP-маршрутизатор.

Share this post


Link to post
Share on other sites

[martin@router ~]$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer3+4 (1)
MII Status: up
MII Polling Interval (ms): 80
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: fast
...

 

[martin@router ~]$ cat /etc/modprobe.conf

alias bond0 bonding
options bond0 miimon=80 mode=4 lacp_rate=fast xmit_hash_policy=1

 

Это в линухе. 3100 сможет балансировать нагрузку только в варианте свич-свич. Т.е. когда через него идет много пар маков ;) Свич-сервер - со стороны сервер мак один, поэтому балансировать он не сможет. У него только на маках балансировка есть, а вам нужна на ip адресах.

Share this post


Link to post
Share on other sites

Вы показали алгоритм транка, а не балансировки. На cisco можно выбрать ip-dst, mac-dst, ip-src-to-dst алгоритм балансировки для lacp. Где подобное у Вас?

[martin@router ~]$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer3+4 (1)
MII Status: up
MII Polling Interval (ms): 80
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: fast
...

 

[martin@router ~]$ cat /etc/modprobe.conf

alias bond0 bonding
options bond0 miimon=80 mode=4 lacp_rate=fast xmit_hash_policy=1

 

Это в линухе. 3100 сможет балансировать нагрузку только в варианте свич-свич. Т.е. когда через него идет много пар маков ;) Свич-сервер - со стороны сервер мак один, поэтому балансировать он не сможет. У него только на маках балансировка есть, а вам нужна на ip адресах.

Share this post


Link to post
Share on other sites

На длинке, для 3526:

config link_aggregation algorithm mac_source_dest

create link_aggregation group_id 1 type lacp

config link_aggregation group_id 1 master_port 1 ports 1-2 state enable

config lacp_port 1-2 mode active

config lacp_port 3-26 mode passive

 

На FreeBSD:

ifconfig_lagg0="laggproto lacp laggport fxp1 laggport fxp2 192.168.90.254/23"

 

Полной балансировки добиться не удалось, исходящий трафик делится поровну, а вот входящий ~1:2

 

ifstat -i fxp1,fxp2 -b -t

Time fxp1 fxp2

HH:MM:SS Kbps in Kbps out Kbps in Kbps out

14:34:48 1273.37 2649.83 1279.38 2242.79

14:34:49 2174.03 2428.82 951.61 2182.90

14:34:50 1830.17 2346.24 784.85 2584.12

14:34:51 1594.98 2270.32 794.42 2783.51

14:34:52 1313.03 2475.10 733.84 3081.71

14:34:53 1400.38 2260.83 1088.17 2935.06

 

Работает в тестовом режиме, глюков пока не замечено.

 

Share this post


Link to post
Share on other sites

На 3100 config link_aggregation algorithm mac_source_dest, к сожалению, выбрать невозможно

На длинке, для 3526:

config link_aggregation algorithm mac_source_dest

create link_aggregation group_id 1 type lacp

config link_aggregation group_id 1 master_port 1 ports 1-2 state enable

config lacp_port 1-2 mode active

config lacp_port 3-26 mode passive

 

На FreeBSD:

ifconfig_lagg0="laggproto lacp laggport fxp1 laggport fxp2 192.168.90.254/23"

 

Полной балансировки добиться не удалось, исходящий трафик делится поровну, а вот входящий ~1:2

 

ifstat -i fxp1,fxp2 -b -t

Time fxp1 fxp2

HH:MM:SS Kbps in Kbps out Kbps in Kbps out

14:34:48 1273.37 2649.83 1279.38 2242.79

14:34:49 2174.03 2428.82 951.61 2182.90

14:34:50 1830.17 2346.24 784.85 2584.12

14:34:51 1594.98 2270.32 794.42 2783.51

14:34:52 1313.03 2475.10 733.84 3081.71

14:34:53 1400.38 2260.83 1088.17 2935.06

 

Работает в тестовом режиме, глюков пока не замечено.

Share this post


Link to post
Share on other sites

Попробуй ng_one2many в режиме раундробин.

 

Share this post


Link to post
Share on other sites
На длинке, для 3526:

config link_aggregation algorithm mac_source_dest

create link_aggregation group_id 1 type lacp

config link_aggregation group_id 1 master_port 1 ports 1-2 state enable

config lacp_port 1-2 mode active

config lacp_port 3-26 mode passive

 

На FreeBSD:

ifconfig_lagg0="laggproto lacp laggport fxp1 laggport fxp2 192.168.90.254/23"

 

Полной балансировки добиться не удалось, исходящий трафик делится поровну, а вот входящий ~1:2

 

ifstat -i fxp1,fxp2 -b -t

Time fxp1 fxp2

HH:MM:SS Kbps in Kbps out Kbps in Kbps out

14:34:48 1273.37 2649.83 1279.38 2242.79

14:34:49 2174.03 2428.82 951.61 2182.90

14:34:50 1830.17 2346.24 784.85 2584.12

14:34:51 1594.98 2270.32 794.42 2783.51

14:34:52 1313.03 2475.10 733.84 3081.71

14:34:53 1400.38 2260.83 1088.17 2935.06

 

Работает в тестовом режиме, глюков пока не замечено.

У вас на линке между бордером и провайдером будет только 1 (одна) пара MAC-адресов:

1) MAC вашего бордера

2) MAC роутера провайдера

 

Соотвественно балансировкой по MAC вы ничего не добьетесь.

 

Как вариант, выкинуть Dlink и включить аплинк от провайдера напрямую в бордер (через конвертеры). Тогда можно будет делать балансировку с вашей стороны по SRC IP.

Провайдеру со своей стороны тоже нужно выставить алгоритм балансировки по IP (лучше по паре SRC_IP-DST_IP, а еще лучше SRC_IP:SRC_PORT - DST_IP:DST_PORT)

 

 

 

Share this post


Link to post
Share on other sites
На длинке, для 3526:

config link_aggregation algorithm mac_source_dest

create link_aggregation group_id 1 type lacp

config link_aggregation group_id 1 master_port 1 ports 1-2 state enable

config lacp_port 1-2 mode active

config lacp_port 3-26 mode passive

 

На FreeBSD:

ifconfig_lagg0="laggproto lacp laggport fxp1 laggport fxp2 192.168.90.254/23"

 

Полной балансировки добиться не удалось, исходящий трафик делится поровну, а вот входящий ~1:2

 

ifstat -i fxp1,fxp2 -b -t

Time fxp1 fxp2

HH:MM:SS Kbps in Kbps out Kbps in Kbps out

14:34:48 1273.37 2649.83 1279.38 2242.79

14:34:49 2174.03 2428.82 951.61 2182.90

14:34:50 1830.17 2346.24 784.85 2584.12

14:34:51 1594.98 2270.32 794.42 2783.51

14:34:52 1313.03 2475.10 733.84 3081.71

14:34:53 1400.38 2260.83 1088.17 2935.06

 

Работает в тестовом режиме, глюков пока не замечено.

У вас на линке между бордером и провайдером будет только 1 (одна) пара MAC-адресов:

1) MAC вашего бордера

2) MAC роутера провайдера

 

Соотвественно балансировкой по MAC вы ничего не добьетесь.

 

Как вариант, выкинуть Dlink и включить аплинк от провайдера напрямую в бордер (через конвертеры). Тогда можно будет делать балансировку с вашей стороны по SRC IP.

Провайдеру со своей стороны тоже нужно выставить алгоритм балансировки по IP (лучше по паре SRC_IP-DST_IP, а еще лучше SRC_IP:SRC_PORT - DST_IP:DST_PORT)

Верно. Другой 100% рабочий вариант, который уже предлагал terrible - можно обойтись без чанела, просто для каждого линка поднять свою бгп сессию в своем влане и назначить отдельные вланы на линки. Если очень смущает две сессии - можно поднять одну, используя лупбак адреса рутеров и две подсети для двух линков, указав статикой на каждой строне маршруты до лупбака нейбэра через каждый ип.

Share this post


Link to post
Share on other sites

Настроил балансировку по LACP (803.ad) для linux-nat c D-Link DGS-3627G.

Коммутатор:

config lacp_port 17-20 mode active

create link_aggregation group_id 1 type lacp
config link_aggregation group_id 1 master_port 17 ports 17-18 state enable
create link_aggregation group_id 2 type lacp
config link_aggregation group_id 2 master_port 19 ports 19-20 state enable

config link_aggregation algorithm ip_source_dest

 

Linux-nat (openSUSE 12.2) (bond1 аналогично):

root@emerald:~# cat /etc/sysconfig/network/ifcfg-bond0
BONDING_MASTER='yes'
BONDING_MODULE_OPTS='mode=802.3ad miimon=100 lacp_rate=fast xmit_hash_policy=2'
BONDING_SLAVE0='eth0'
BONDING_SLAVE1='eth1'
BOOTPROTO='none'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR=''
MTU=''
NAME=''
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'

 

 

root@emerald:~# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

 

Bonding Mode: IEEE 802.3ad Dynamic link aggregation

Transmit Hash Policy: layer2+3 (2)

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

 

802.3ad info

LACP rate: fast

Min links: 0

Aggregator selection policy (ad_select): stable

Active Aggregator Info:

Aggregator ID: 1

Number of ports: 2

Actor Key: 17

Partner Key: 17

Partner Mac Address:

 

 

Коммутатор балансирует входящий (для сервера) трафик по ip_source_dest. Сервер балансирует исходящий трафик по Transmit Hash Policy: layer2+3 (2) (что есть тоже самое).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this