Как использовать iperf для проверки пропускной способности одного клиента и нескольких серверов?

В качестве заголовка я хочу проверить пропускную способность сети, содержащей 2 сервера (h1,h3), только 1 клиента (h2) и некоторые коммутаторы между хостами и назначением, топология может выглядеть следующим образом, я реализовал топологию с использованием mininet и управлял правилом маршрутизации с помощью контроллера pox.

Теперь я хочу проверить пропускную способность сети и надеюсь, что h3 и h1 отправили данные в h2 одновременно, как я могу это сделать с помощью iperf?

Я пробовал приведенный ниже код (код Python), но данные за первые 10 секунд, когда h3->h2 исчезнут (если я написал h3->h2 до h1->h2, чем данные за первые 10 секунд h1-> h2 исчезнет)

h1.cmd('iperf -s -p 5201 -u -i 1 > results &')
print h2.cmd('iperf -c 10.0.0.1 -p 5201 -u -b 10m -t 20')
h3.cmd('iperf -s -p 5205 -u -i 1 > results2 &')
print h2.cmd('iperf -c 10.0.0.3 -p 5205 -u -b 10m -t 20')
h1.cmd('kill %iperf') 
h3.cmd('kill %iperf')

Как я могу решить эту проблему, или кто-то может сказать мне, как позволить h3 и h1 отправлять данные в h2 одновременно, используя другие методы, спасибо.

1 ответ

Это потому, что вы можете использовать порт, который может быть занят другим заданием. 1. Изначально, когда вы используете этот порт 5201 для iperf среди h1,h2, он уже используется, вы получаете подробную информацию о потоке 2. Но после этого, когда вы использовали порт 5205 для iperf среди h1,h3 он может быть несвободным. Даже я столкнулся с той же проблемой, потому что использовал один порт в 5201. Я отсортировал его, закрывая порт после каждого последующего iperf между клиентом и сервером.

Ваш случай похож на мой. Причина, по которой вы не получаете статистику трафика между h2,h3, заключается в том, что порт 5205 не может быть свободным. Я предлагаю, поскольку вы использовали порт 5201, используйте его снова, закрыв соединение, а затем используйте его снова. Итак, назначьте один порт для цели iperf и используйте его. Не забывайте закрывать порт после каждой последующей передачи iperf.
Чтобы закрыть активный порт, используйте следующую команду:

fuser -k -n tcp 3000

где tcp - это тип используемого нами подключения, а 5201 - номер порта.

Возможно, вы захотите использовать iperf 2.0.10+ и код потока для Asyncio, для которого требуется Python 3.5 или выше. Если вы попробуете это и у вас есть вопросы, дайте мне знать. Предполагается, что для управления хостами, на которых работает iperf, используется ssh и работа без пароля.

Другие вопросы по тегам