Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
позитивного результата не дал, как и
|
Недолго покопавшись в инете, выяснилось, что данная функция будет поддерживаться в 7-й версии FreeBSD. Дело было вечером, делать было нечего... Функцию опробовать надо, заодно и на CURRENT версию посмотреть можно. Обновляем сорцы до CURRENT-а, компилим и ставим мир и ядро. Выполнение этой процедуры очень хорошо описано в http://www.lissyara.su/?id=1072, http://www.lissyara.su/?id=1161,
http://www.lissyara.su/?id=1270.
От себя добавлю некоторую инфу:
|
Далее просто:
|
После недолгих бульканий cvsup'а были скачаны исходники. По статейке билдим мир и ядришко. Здесь у меня возникли проблемы. Я со старта покаментил все ненужные мне опции в конфигфайле ядра, и оно компилиться не захотело, хотя мир скомпилился с первого раза. Проблемка была в коментированнии неких неприветных строчек
|
Хотя способ решения был другим, я сначала скомпилил и проставил мир и ядро GENERIC, а опосля уже на новой Фряхе забубенил свое ядро /usr/src/sys/i386/conf/MK .
|
Сильно не бейте за весь файлик конфигурации ядра, этот файлик у меня точно скомпилился под CURRENT-ом, вот я его и решил выложить для примера.
Из него повыбрасывал всякие дебаги, так как оно мне ничего не раскажет интересного, но на продуктивность системы может нехило повлиять.Ну и повыбрасывал поддержку девайсов, которы у меня нет и быть не может(сервак то блейдовый). Ну и типа для компиля заюзал опцию -j8.
|
На двух ксеонах все скомпилилось достаточно быстро. При инсталляции мира и ядра особых проблем не возникло, так как система, которую апдейтил, была почти без софта. Поэтому анализ вывода mergemaster особо не проводился и на все вопросы автоматом жал "i".
По завершению сего процесса получаем
|
Ну а теперь поработаем клавиатурой
|
Выглядит не совсем красиво, но причесывать будем позже.
Идем на циску и к каждому нужному интерфейсу прописываем:
|
Значит пояснения: Наш сервак включен в свич двумя сетевыми карточками, одна в порт GigabiEthernet2/2, другая в GigabiEthernet2/16. Соответственно на циске их и конфигурим. switchport access vlan 10 "добавляет" порт в 10 влан в access режиме. Далее добавляем оба порта в channel-group 23, устанавливаем активный режим и протокол агрегации портов. При этих дествиях создается интерфейс с полныйм названием Port-channel 23.Все параметры, которые будут изменены относительно него автоматически применяются ко всем портам из группы. По умолчанию, при создании, данный интерфес пребывает в состоянии shutdown, т.е. отключен,поэтому и нужна предпоследняя команда.Далее ждём пару мин и посмотри че получилось
|
Ну а во FreeBSD получаем что-то такое:
|
Проведем некоторое тестирование. Я на двух консолях выполнил такой себе пинг:
|
А что из этого получилось смотрел systat'ом
|
Как видим, пинг отсылается по одному физическому интерфейсу, а reply приходит на другой.
Но задача в практической постановке не совсем полная. Реально вся сетка разграничена кучей VLAN'ов и в каждом из них есть сервера и важные хосты, которые нужно бекапить. Так сложилось в жизни, что свитчинг работает быстрее роутинга, особенно если маршруты к соседнему порту в другом VLAN'е лежат через десяток маршрутизаторов в пяти офисах :)). Как одно из решений, нужные интерфейсы на свиче можно перевести в транковый режим и "прокинуть" туда все необходимые VLAN'ы. Как тогда быть с системой под FreeBSD, ведь ей нужно видеть все виланы? Решение простое, нужно создать виртуальные интерфейсы для каждого VLAN'а, и назначить каждому из них адрес и маршрут из соотведствующей подсети. Для примера, нам нужно из системы видеть 10 и 17 VLAN'ы. Соответственно конфигурим свитч:
|
Здесь мы удалили Port-Channel23 из 10-го VLAN'а, и перевели его в транковый режим, позволив "пробрасывать" 10 и 17 виланы. Полная конфига на свиче выглядит так:
|
Ну а теперь возьмемся за нашу FreeBSD.
Чтоб не мучатся каждый раз с созданием lagg-интерфейса, причешем всю эту кашку в
/etc/rc.conf, но для этого нам еще нужны два скрипта: /etc/rc.d/mklagg:
|
и /etc/rc.d/mkvlan:
|
Файлы практически идентичны, и можно было бы их обьединить, но лучше пусть живут отдельно.
Эти скрипты используются в /etc/rc.conf при старте системы для создания lagg- и vlan-интерфейсов. Далее все просто:
|
После, для гарантии, перезагружаемся. Далее посмотрим, что у нас получилось.
Для наглядного тестированния, нужно нагрузить интерфесый из каждого VLAN'а. Я сделал следующим образом, установил nfs-сервер и подмонтировал по сети с устройств из соотведстующих VLAN'ов зашаренную папку. Потом просто копируя файлы, наблюдал systat'ом статитику на интерфейсах.
|
У нас получилось два виртуальных интрефейса для VLAN'ов 10 і 17, и один виртуальный интерфейс, выполняющий агрегацию. Ниже приведена статистика нагрузки при одновременном копировании с двух хостов, примонтированных по nfs.
|
Это производилось копирование с устройств на наш тестируемый хост. Как видим, ситуация не совсем понятная,
все работает, но балансировка трафика на вход не проводиться. Попробуем скопировать с нашего устройства на удаленные.
|
Воот оно!! Получается свитч не производит балансировку нагрузки на вход агрегированный портов, но производит балансировку при выходном трафике. О причинах такой деятельности мне, пока что, приходиться догадываться и нужно будет провести еще ряд тестов. Но о сути настройки системы для такого типа задач я попытался здесь рассказать.
P.S. Остались нераскрытыми для меня два вопроса, первый - как такое сделать под 6.2; как заставить свич балансировать нагрузку на вход?
Пока что все!
размещено: 2007-10-29,
последнее обновление: 2007-10-29,
автор: s@sh@
terminus, 2007-10-29 в 11:18:22
LACP не балансирует входящий трафик. Вот, например, выдержка из мануала к HP свитчам серий 6400 5300 4200 3400 :
=================================
The two trunk group options (LACP and Trunk) use source-destination
address pairs (SA/DA) for distributing outbound traffic over trunked links.
SA/DA (source address/destination address) causes the switch to distribute
outbound traffic to the links within the trunk group on the basis of source/
destination address pairs. That is, the switch sends traffic from the same
source address to the same destination address through the same trunked link,
and sends traffic from the same source address to a different destination
address through a different link, depending on the rotation of path assignments
among the links in the trunk. Likewise, the switch distributes traffic for
the same destination address but from different source addresses through
different links. Because the amount of traffic coming from or going to various
nodes in a network can vary widely, it is possible for one link in a trunk group
to be fully utilized while others in the same trunk have unused bandwidth
capacity even though the address assignments are evenly distributed across
the links in a trunk. In actual networking environments, this is rarely a
problem.
=================================
Abigor, 2007-10-29 в 11:42:11
*default tag=.
правьте, он вытянет уже 8 версию, так что ставьте вот такое:
[abigor@chieftec ~]$ cat /usr/local/etc/csup.conf
*default host=cvsup.isea.ru
*default prefix=/usr
*default base=/var/db
*default release=cvs delete use-rel-suffix compress
src-all tag=RELENG_7
[abigor@chieftec ~]$
s@sh@, 2007-10-29 в 11:47:04
TO abigor.
Кстати пробовал tag=RELENG_7, но у меня он потянул почему-то все сорци со всякими diff к разным версиям. мож руки кривые? :)
atckoe, 2007-10-29 в 14:28:35
Рано значит пробовали, видимо тогда еще такого реленга не было :)
Abigor, 2007-10-29 в 15:06:06
to s@sh@
не наю, у меня нормально утянулось, и собралось
---------------
интересно, а без циски такое можно сделать?
terminus, 2007-10-29 в 15:20:19
>интересно, а без циски такое можно сделать?
В чем проблема? Любой нормальный HP/3com/etc где есть LACP, VLANS и прочие фички...
s@sh@, 2007-10-29 в 15:21:30
Можно на HP-свичах, я такое когда-то делал на HP ProCurve 3400, и на 2848
alb, 2007-10-29 в 19:31:31
1 В RELENG_6 есть lagg, должен быть и в 6.3
2 хз Интересно было бы в качестве эксперемента связать две Фряхи без свитча.
shutdown now, 2007-10-29 в 21:21:42
на циске есть удобные команды для одновременной настройки нескольких интерфейсов:
# conf t
(config)# int range gi0/1 - 3
и есть глобальная команда
(config)#port-channel load-balance src-dst-ip
ru_pchel, 2007-11-01 в 8:45:42
Вот эту команду и стоит посмотреть на cisco
(config)#port-channel load-balance xxxxxx
mitiok, 2007-11-05 в 14:38:48
а jumbo frames включить?
sunTechnic, 2007-11-05 в 23:28:39
Имхо, ложить свои скрипты в системный /etc/rc.d/ — раскладывать грабли. Лучше всё-таки их положить в /usr/local/etc/rc.d/
s@sh@, 2007-11-06 в 10:19:38
Имхо, мы не запускаем сервисы типа апача или почтовика, а создаем виртуальныйе интерфейсы, по этому для меня более разумным есть размещение таких скриптов подальше от /usr/local/etc/rc.d. Но каждый волен делать так как ему удобно!
-=Alex=-, 2007-11-07 в 16:52:48
> cloned_interface="vlan17" # создаем два vlan-интерфейса
> cloned_interface="vlan10" # для 10 и 17
так не будет виден vlan17
IMHO, должно быть
cloned_interface="vlan10 vlan17"
eGuru, 2007-11-13 в 13:25:20
> Получается свитч не производит балансировку нагрузки на вход агрегированный портов...
Свич не должен и физически не может балансировать нагрузку на вход, так как пакеты между интерфейсами уже распределены драйвером lagg во FreeBSD, а свич принимает что дают. Распределением должен заниматься драйвер lagg во FreeBSD. Тут и надо копать.
eGuru, 2007-11-13 в 13:45:51
Еще о балансировке нагрузки.
Прочел man lagg(4). Судя по описанию опции lacp, балансировка делается путем распределения активных соединений между интерфейсами. То есть, весь исходящий трафик от одного соединения будет пущен через один интерфейс в группе, от другого соединения - через другой, и т.д.
В man еще описана опция roundrobin. Это дает псевдослучайное распределение пакетов по интерфейсам. Возможно это поможет распределить нагрузку более подходящим образом. Сам проверить не могу, нет оборудования, но тема интересная. s@sh@, ответь, что думаешь.
s@sh@, 2007-11-13 в 14:06:05
to eGuru
Фряха то расскидывает при выходном(с себя) трафике поровну по физическим интерфейсам, не балансируется то что приходит из вне на фряху, т.е., действительно, получается свич с тем, что приходит к нему и должно быть передано в Port-Channet интерфейс не знает что делать(или не хочет). Я думаю, в этом случае фряха не "виновата", как она может сказать свичу "дай мне следующий пакет на другой физический интерфейс, причем балансируя раздачу поровну".Но насчет второй тестовой машинки и разбора параметров,думаю, займусь этим на днях.
eGuru, 2007-11-16 в 23:49:47
Да. Недоглядел на замеры скорости.
О балансировке нагрузки свичами Cisco сказано немного в этом документе
Пишут, что когда для балансировки используются MAC адреса, в случае, если трафик идет только на один MAC (описанный случай) свитч всегда будет выбирать только один канал. Для лучшего результата рекомендуют использовать режим балансировки по IP.
Режим задается командой:
port-channel load-balance
s@sh@, напиши, как идут дела с настройкой.
Максим, 2007-12-16 в 0:16:46
Проблема в том, что LACP не работает на транковом порту :(
0ther, 2008-03-12 в 11:57:28
А можно и без скриптов, ибо и так работает
cloned_interface="lagg0 vlan10 vlan17"
ifconfig_em0="up"
ifconfig_em1="up"
ifconfig_lagg0="laggproto lacp laggport em0 laggport em1"
ifconfig_vlan10="inet 10.10.10.18 netmask 255.255.255.0 vlan 10 vlandev lagg0"
ifconfig_vlan17="inet 10.10.17.18 netmask 255.255.255.0 vlan 17 vlandev lagg0"
gmn, 2008-04-07 в 20:15:58
А о какой стойке идет речь?
(Сторедж при правильной настройке может давать до 200 Мбайт\с на чтение или запись(Fiber Channel это хорошо).)
arf, 2008-04-22 в 15:54:24
стоит добавить в статью еще немножко инфы по lacp. И пояснить настройки на коммутаторе: На cat2960 chanel-group может быть только до шести.
arf, 2008-04-22 в 17:04:16
eсли не нужны vlan можно добавить:
ifconfig_lagg0_alias0="inet 192.168.0.1 netmask 255.255.255.0"
иначе(без alias) нифига не пашет.
skeletor, 2008-09-19 в 16:19:55
2arf нифига не работает (это я про lagg0).
Я сделал так. Добавил в /etc/rc.local такую строчку
(ifconfig lagg0 create && ifconfig lagg0 up laggproto lacp laggport em0 \
laggport em1 10.10.10.10 netmask 255.255.255.0 && route add default 10.10.10.1) || \
(ifconfig em0 up 10.10.10.10 netmask 255.255.255.0)
на тот случай, если вдруг lagg0 не подымется.
Kolesya, 2008-12-05 в 19:34:29
root@TA3IK# kldload /boot/kernel/if_lagg.ko
root@TA3IK# kldstat | grep lagg
Id Refs Address Size Name
6 1 0xc9e4b000 7000 if_lagg.ko
root@TA3IK# uname -r
6.2-STABLE
root@TA3IK# dmesg
...
em0: <Intel(R) PRO/1000 Network Connection Version - 6.2.9>
em1: <Intel(R) PRO/1000 Network Connection Version - 6.2.9>
...
На 6.2 все нормально работает, проверял с телесаном (AT-GS950/16)
Shurik.at.host, 2008-12-19 в 19:44:17
Спасибо lissyara !!!
Спасибо Автору статьи
спасибо arf - именно ifconfig_lagg0_alias0 помогло.
плюс туда же
ifconfig_em0="up polling -tso"
Глеб, 2009-07-17 в 4:48:20
У кого не работает через rc.conf,
cloned_interface судя по всему где-то между 7.0 и 7.2 поменялось на
cloned_interfaces
Alexx, 2010-01-15 в 17:02:09
Без vlan-ов все превосходно работает (Catalyst 3560G и Freebsd 8.0). При переводе port-channel в режим транка пропадает связь.
fec, 2011-01-20 в 16:41:15
Максим, 2007-12-16 в 0:16:46
Проблема в том, что LACP не работает на транковом порту :(
Тогда вкл. FEC
interface FastEthernet0/2
switchport trunk native vlan 10
switchport trunk allowed vlan 20,100
switchport mode trunk
channel-group 1 mode on
!
interface FastEthernet0/3
switchport trunk native vlan 10
switchport trunk allowed vlan 20,100
switchport mode trunk
channel-group 1 mode on
port-channel load-balance dst-mac
На FreeBSD:
ifconfig lagg0 up laggproto fec laggport em0 laggport em1
Евгений, 2013-01-19 в 9:15:51
Привет из 2013 года :)
Есть у меня серверок с "интересным" софтом под управлением 6.4, обновить ооочень проблемно. Дак вот, сервер - роутер, PF NAT, ipfw, em, dummy, на 500 мегабитах карта со стандартными дровами начала давать ошибки, решил прикрутить lagg, проблема с распределением по картам наблюдалась аналогичная - на одной карте весь трафик, на другой почти ноль, собственно загуглив пришел сюда и коментарий о:
Режим задается командой:
port-channel load-balance
s@sh@, напиши, как идут дела с настройкой.
привел меня к мысле перекрутить на свиче параметр балансинга, у меня экстрим.
команда: config sharing address-based ip-source-dest
нагрузила обе карты задействованные в лаге.
Надеюсь данная инфа будет полезна тем кто наступил на подобные грабли.
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [30 шт.]