Задача – протестировать суммарную пропускную полосу получаемую при помощи бондинга (bonding — объединение нескольких физических интерфейсов в один логический, с расширенной по сравнению с любым из составных интерфейсов полосой пропускания) двух гигабитных сетевых интерфейсов.
Тестирование производилось с помощью двух серверов в каждом из которых было по два гигабитных сетевых интерфейса (Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet), физически сетевые платы серверов были соединены между собой с помощью двух кросоверных пачкордов.
ОС: CentOS 5.3.
Для начала протестируем максимальную скорость передачи данных по каждому интерфейсу в отдельности при помощи двух утилит iperf и netperf.
iperf показал результаты 949-968 Mbits/sec
netperf показал результаты от 865.64 до 956.35 10^6bits/sec
Теперь настроим bonding на обоих серверах и повторим тесты производительности.
Подгружаем модуль бондинга, для этого в файлы /etc/modprobe.conf на обоих серверах внесем следующие строки:
alias bond0 bonding
options bond0 miimon=100 mode=0
Настройки сетевых интерфейсов на первом сервере.
cat ifcfg-eth0
# Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes
HWADDR=00:21:5E:3F:E5:A0
Второй адаптер
cat ifcfg-eth1
# Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes
HWADDR=00:21:5E:3F:E5:A2
Настраиваем сетевые параметры интерфейса бондинга
cat ifcfg-bond0
DEVICE=bond0
IPADDR=192.168.10.1
NETMASK=255.255.255.0
NETWORK=192.168.10.0
BROADCAST=192.168.10.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
Перезагрузимся, для того, чтобы изменения вступили в силу.
Теперь аналогичным образом настроим сеть на сервере 2, соответственно назначив интерфейсу bond0 ip адрес 192.168.10.2 .
Теперь внимательно посмотрим, что же нам выдаст команда
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Link Failure Count: 1
Permanent HW addr: 00:21:5e:3f:eb:7c
Slave Interface: eth1
MII Status: up
Link Failure Count: 1
Permanent HW addr: 00:21:5e:3f:eb:7e
Протестируем производительность с помошью утилиты iperf в один tcp поток.
На первом сервере запускаем iperf -s .
На втором сервере запускаем iperf -c 192.168.10.2
По 10 проходам получаем такие результаты:
Тест 1 1.88 Gbits/sec
Тест 2 1.87 Gbits/sec
Тест 3 1.88 Gbits/sec
Тест 4 1.87 Gbits/sec
Тест 5 1.88 Gbits/sec
Тест 6 1.88 Gbits/sec
Тест 7 1.88 Gbits/sec
Тест 8 1.88 Gbits/sec
Тест 9 1.88 Gbits/sec
Тест 10 1.88 Gbits/sec
Cо стороны первого сервера вывод данных от iperf выглядит так:
Client connecting to 192.168.10.2, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.10.1 port 39151 connected with 192.168.10.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 2.19 GBytes 1.88 Gbits/sec
Протестируем производительность с помошью утилиты iperf в 100 tcp потоков.
На первом сервере запускаем iperf -s .
На втором сервере запускаем iperf -c 192.168.10.2 -P 100
По результатам 10 тестов получаем такие результаты:
iperf на первом и втором сервере после запуска выдавал разные результаты, поэтому я привожу оба результата.
Тест 1 1.83 1.88 Gbits/sec
Тест 2 1.84 1.89 Gbits/sec
Тест 3 1.44 1.88 Gbits/sec
Тест 4 1.85 1.87 Gbits/sec
Тест 5 1.87 1.88 Gbits/sec
Тест 6 1.76 1.88 Gbits/sec
Тест 7 1.84 1.87 Gbits/sec
Тест 8 1.83 1.85 Gbits/sec
Тест 9 1.87 1.89 Gbits/sec
Тест 10 1.83 1.84 Gbits/sec
Тестируем производительность с помошью netperf
На первом сервере запускаем netserver -p 10000 -n 4
На втором сервере запускаем netperf -p 10000 -H 192.168.10.2 -l 30
После 10 проходов получаем такие результаты (10^6bits/sec):
Тест 1 1206.99
Тест 2 1710.40
Тест 3 1878.43
Тест 4 1857.45
Тест 5 1874.43
Тест 6 1878.10
Тест 7 1862.14
Тест 8 1876.81
Тест 9 1876.41
Тест 10 1876.15
Со стороны второго сервера вывод данных после тестирования выглядят так:
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.10.2 (192.168.10.2) port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 30.01 1878.43
Вывод: При использовании bonding для двух гигабитных сетевых адаптеров имеет смысл и его использование увеличивает пропускную способность сети в 2 раза.
http://centos.alt.ru/?p=12