Назад | Перейти на главную страницу

Может ли соединение двух интерфейсов удвоить скорость?

У меня есть 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 очень поможет.