У меня есть 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 байт и, следовательно, он не перезапускает прослушивание:
Моя теория (возможно, ошибочна) заключается в том, что это произошло из-за того, что какое-то управляющее сообщение iperf не было получено, когда я сбросил пакеты в маршрутизаторе (разорвал соединение) ) и, следовательно, сервер так и не получил сообщение о том, что он должен перезагрузиться.
Это очень раздражает. Есть ли способ, чтобы сервер мог возобновить прослушивание, когда клиент больше не общается с ним? Мне не нужен сервер, который постоянно получает 0 байт ...