Основываясь на более раннем вопросе более года назад ( мультиплексированный Ethernet 1 Гбит / с? ), Я ушел и установил новую стойку с новым провайдером с LACP-связями повсюду. Нам это нужно, потому что у нас есть отдельные серверы (одно приложение, один IP-адрес), обслуживающие тысячи клиентских компьютеров по всему Интернету со скоростью свыше 1 Гбит / с.
Предполагается, что эта идея LACP позволит нам преодолеть барьер 1 Гбит / с, не тратя целое состояние на коммутаторы 10GoE и сетевые адаптеры. К сожалению, я столкнулся с некоторыми проблемами, связанными с распределением исходящего трафика. (Это несмотря на предупреждение Кевина Куфала в приведенном выше связанном вопросе.)
Маршрутизатор ISP - это своего рода Cisco. (Я вывел это из MAC-адреса.) Мой коммутатор - HP ProCurve 2510G-24. А серверами являются HP DL 380 G5, работающие на Debian Lenny. Один сервер является горячим резервом. Наше приложение не может быть кластеризовано. Вот упрощенная схема сети, которая включает в себя все соответствующие сетевые узлы с IP-адресами, MAC-адресами и интерфейсами.
Хотя в нем есть все детали, с ним немного сложно разобраться и описать мою проблему. Итак, для простоты, вот схема сети, приведенная к узлам и физическим каналам.
Поэтому я ушел и установил свой комплект на новую стойку и подключил кабели моего провайдера от их маршрутизатора. Оба сервера имеют связь LACP с моим коммутатором, а коммутатор имеет связь LACP с маршрутизатором ISP. С самого начала я понял, что моя конфигурация LACP была неправильной: тестирование показало, что весь трафик к каждому серверу и от него проходил по одному физическому каналу GoE исключительно между сервером и коммутатором и маршрутизатором.
После нескольких поисков в Google и большого количества времени RTMF, связанного с сетевыми картами Linux, я обнаружил, что могу управлять связыванием сетевых карт, модифицируя /etc/modules
# /etc/modules: kernel modules to load at boot time.
# mode=4 is for lacp
# xmit_hash_policy=1 means to use layer3+4(TCP/IP src/dst) & not default layer2
bonding mode=4 miimon=100 max_bonds=2 xmit_hash_policy=1
loop
Это получило трафик, покидающий мой сервер через обе сетевые карты, как и ожидалось Но трафик движется от коммутатора к маршрутизатору через только один физический канал, до сих пор .
Нам нужен этот трафик, проходящий через оба физических канала. Прочитав и перечитав Руководство по настройке и настройке 2510G-24 , я обнаружил:
[LACP использует] пары адресов источника-получателя (SA / DA) для распределения исходящего трафика по транковым каналам. SA / DA (адрес источника / адрес назначения) заставляет коммутатор распределять исходящий трафик по каналам внутри группы СЛ на основе пар адресов источника / назначения. То есть коммутатор отправляет трафик с одного и того же адреса источника на один и тот же адрес назначения через одну и ту же транкинговую ссылку и отправляет трафик с одного и того же адреса источника на другой адрес назначения через другую ссылку, в зависимости от чередования назначений пути среди ссылки в багажнике.
Кажется, что в связанном канале представлен только один MAC-адрес, и поэтому мой путь от сервера к маршрутизатору всегда будет проходить по одному пути от коммутатора к маршрутизатору, потому что коммутатор видит только один MAC (а не два - один из каждый порт) для обеих ссылок LACP.
Понял. Но это то, что я хочу:
Более дорогой коммутатор HP ProCurve - это 2910al, использующий адреса источника и назначения уровня 3 в своем хэше. Из раздела «Распределение исходящего трафика по транковым каналам» в Руководстве по управлению и настройке ProCurve 2910al :
Фактическое распределение трафика через транк зависит от расчета с использованием битов из адреса источника и адреса назначения. Когда IP-адрес доступен, вычисление включает в себя последние пять бит IP-адреса источника и IP-адреса назначения, в противном случае используются MAC-адреса.
ХОРОШО. Итак, чтобы это работало так, как я хочу, адрес назначения является ключевым, поскольку мой исходный адрес является фиксированным. Это приводит к моему вопросу:
Как именно и конкретно работает хэширование LACP уровня 3?
Мне нужно знать, какой адрес назначения используется:
- IP-адрес клиента , конечный пункт назначения?
- Или IP-адрес маршрутизатора , следующего пункта назначения передачи физического канала.
Мы еще не ушли и купили сменный выключатель. Пожалуйста, помогите мне точно понять, является ли хеширование адреса назначения LACP уровня 3 тем, что мне нужно. Покупка другого бесполезного выключателя не вариант.