У меня есть 2 Linux-сервера, на которых работает centos 6.5, каждый с двумя связанными вместе интерфейсами, подключенными к коммутатору Cisco 2960-S с портами, настроенными lacp.
Конфигурация на коммутаторе
port-channel load-balance src-dst-mac
!
interface Port-channel1
switchport access vlan 100
switchport mode access
!
interface Port-channel2
switchport access vlan 100
switchport mode access
!
interface FastEthernet0
no ip address
!
interface GigabitEthernet0/1
switchport access vlan 100
switchport mode access
speed 1000
duplex full
spanning-tree portfast
channel-protocol lacp
channel-group 1 mode active
!
interface GigabitEthernet0/2
switchport access vlan 100
switchport mode access
speed 1000
duplex full
spanning-tree portfast
channel-protocol lacp
channel-group 1 mode active
!
interface GigabitEthernet0/3
switchport access vlan 100
switchport mode access
speed 1000
duplex full
spanning-tree portfast
channel-protocol lacp
channel-group 2 mode active
!
interface GigabitEthernet0/4
switchport access vlan 100
switchport mode access
speed 1000
duplex full
spanning-tree portfast
channel-protocol lacp
channel-group 2 mode active
!
и с обеих сторон Linux я загрузил модуль связывания ядра с конфигурацией
alias bond0 bonding
options bond0 miimon=100 mode=4 lacp_rate=1
Теперь проблема в том, что я передаю много файлов с одного сервера на другой, отслеживая графики трафика, показывающие, что скорость не превышает 1 Гбит / с для интерфейса связывания. bond0
.
есть ли проблемы с конфигурацией? нельзя ли увеличить скорость вдвое до 2Гб / с?
LACP не будет разделять пакеты по нескольким интерфейсам для одного потока / потока. Например, один поток TCP всегда будет отправлять / получать пакеты на одном и том же сетевом адаптере.
См. Следующий пост для справки:
Максимальная пропускная способность агрегации каналов (LACP / 802.3ad)
Надеюсь это поможет.
Принцип работы Link Aggregation заключается в использовании алгоритма хеширования для определения того, какие пакеты должны выходить через какой порт.
Пакеты с одного и того же исходного MAC-адреса на один и тот же MAC-адрес назначения всегда будут отправляться через один и тот же порт.
Некоторые реализации Link Aggregation поддерживают использование уровня 3 (IP-адреса) и даже уровня 4 (номер порта TCP / UDP) как части хэша, но это не так часто.
Вот почему вы получаете только 1 Гбит / сек при передаче файлов с одного сервера на другой.
Если ОС и коммутатор будут поддерживать уровень 3, вы можете получить большую скорость, используя несколько IP-адресов. Однако из-за того, как работает алгоритм хеширования, существует вероятность 50/50, что оба потока в конечном итоге выйдут по одной и той же ссылке.
Насколько я понимаю, связывание сети заключается в том, что вы не можете превышать скорость соединения интерфейсов-участников в одном соединении. После того, как соединение будет установлено, соединение будет привязано к одному интерфейсу в связи.
Однако теперь соединения между двумя интерфейсами разделены. Если бы у вас было два соединения, работающих от сервера A к серверу B, тогда соединения не должны начинать узкие места друг друга в отношении пропускной способности, потому что они будут перемещаться через разные интерфейсы. Общая пропускная способность при использовании нескольких подключений должна составлять 2 Гбит / с, но каждое подключение будет ограничено максимумом 1 Гбит / с.
Также стоит рассмотреть алгоритм хеширования, используемый Linux. Некоторые версии драйвера облигации используют очень упрощенные алгоритмы хеширования, например хэш l2 в linux 3.6.5 - это просто xor последнего байта MAC-адреса источника и назначения, что во многих случаях приводит к несбалансированному трафику. Изменение алгоритма хеширования на l2 + l3 очень поможет.