如何测量SSH隧道的带宽?

时间:2011-03-29 09:43:06

标签: ssh openssh

我正在使用subprocess python模块在linux上运行带有OpenSSH的SSH隧道。 我想知道从该SSH隧道发送和接收的字节数。

我怎样才能找到它?

3 个答案:

答案 0 :(得分:2)

ssh(1)没有为此提供任何机制。操作系统没有为此提供机制。数据包嗅探,例如tcpdump(1)是一个选项,但这可能需要root权限,并且只有在应用程序的远程对等外部 ssh(1)连接时才是近似值。 IPTables Accounting会给你类似的权衡,但可能比tcpdump(1)的开销要小得多。

如果您不介意非常近似,您可以跟踪发送到子流程和从子流程读取的所有数据。 ssh(1)会在加密数据之前对其进行压缩,因此您可能会过高估计发送的数据量,但ssh(1)也会有一些重新键入,频道控制,消息真实性等开销,所以它甚至可能接近“平均”数据。

当然,如果一路上的路由器决定丢弃其他所有数据包,那么你的TCP堆栈将发送两倍的数据,可能更多。

非常近似。

答案 1 :(得分:1)

与Python完全无关。查看网络嗅探器功能,您可以在其中嗅探流量。

答案 2 :(得分:0)

您可以使用pv:

等方法测量原始ssh传输

ssh user @ remote -t​​“cat / dev / urandom”| pv>的/ dev / null的 ssh user @ remote -t​​“pv> / dev / null”<的/ dev / urandom的

(您可以尝试使用/ dev / zero - 但如果使用ssh压缩,则会得到非常不真实的传输速率。)