Сервер IPerf3 не перезагружается при разрыве соединения с клиентом - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть 3 linux виртуальных машин: клиент , маршрутизатор и сервер .

Клиент отправляет трафик c на сервер через маршрутизатор, и я отслеживаю пропускную способность client -> server с помощью iperf3.

Итак, я отправлял траффи c с клиента iperf (находится в клиенте) и сервера iperf (расположен в сервер) и все шло хорошо. Затем я использовал правило tc qdisc в маршрутизаторе, чтобы отбрасывать 100% пакетов, поступающих от клиента на сервер (чтобы клиент не мог связаться с сервером). Это привело к остановке клиента iperf.

После этого я удалил правило сброса в маршрутизаторе и перезапустил клиент iperf.

К моему удивлению, я получил ошибку:

$ iperf3: error - the server is busy running a test, try again later

Я думал, что сервер остановился, когда я разорвал соединение в маршрутизаторе, но когда я зашел в журнал iperf на сервере, я увидел, что он все еще получает 0,00 байт и, следовательно, он не перезапускает прослушивание:

enter image description here

Моя теория (возможно, ошибочна) заключается в том, что это произошло из-за того, что какое-то управляющее сообщение iperf не было получено, когда я сбросил пакеты в маршрутизаторе (разорвал соединение) ) и, следовательно, сервер так и не получил сообщение о том, что он должен перезагрузиться.

Это очень раздражает. Есть ли способ, чтобы сервер мог возобновить прослушивание, когда клиент больше не общается с ним? Мне не нужен сервер, который постоянно получает 0 байт ...

...