Как измерить пропускную способность SSH-туннеля? - PullRequest
1 голос
/ 29 марта 2011

Я использую SSH-туннель с OpenSSH в Linux, используя модуль subprocess python.Я хочу узнать, сколько байтов было отправлено и получено из этого туннеля SSH.

Как я могу это выяснить?

Ответы [ 3 ]

2 голосов
/ 29 марта 2011

ssh(1) не предоставляет механизма для этого. ОС не предоставляет механизм для этого. Пакет нюхает, например, tcpdump(1) - это вариант, но для этого, вероятно, потребуются права суперпользователя, и он будет приблизительным, только если ssh(1) подключено к удаленному узлу вне вашего приложения. IPTables Accounting даст вам аналогичные компромиссы, но, вероятно, будет намного меньше накладных расходов, чем tcpdump(1).

Если вы не возражаете быть очень приблизительным, вы можете отслеживать все данные, которые вы отправляете и читаете из вашего подпроцесса. ssh(1) будет сжимать данные перед шифрованием, так что вы можете переоценить объем отправляемых данных, но ssh(1) также будет иметь некоторые накладные расходы для повторного ввода ключей, контроля канала, аутентификации сообщений и т. Д., Так что он может даже приблизьтесь к «средним» данным.

Конечно, если маршрутизатор по пути решит отбросить все остальные пакеты, ваш стек TCP будет отправлять вдвое больше данных, а может и больше.

Очень приблизительно.

1 голос
/ 29 марта 2011

Полностью не связано с Python. Посмотрите на функциональность сетевого анализатора, где вы можете прослушивать и пропускать трафик.

0 голосов
/ 05 октября 2011

Вы можете измерить необработанный ssh-перенос с помощью чего-то вроде pv:

ssh user @ remote -t ​​"cat / dev / urandom" | pv> / dev / null ssh user @ remote -t ​​"pv> / dev / null" </ dev / urandom </p>

(вы можете попробовать с / dev / zero - но если вы используете сжатие ssh, вы получите очень нереальную скорость передачи.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...