【问题标题】:How to measure bandwith of an SSH tunnel?如何测量 SSH 隧道的带宽?
【发布时间】:2011-10-05 19:58:31
【问题描述】:

我正在使用subprocess python 模块在Linux 上运行带有OpenSSH 的SSH 隧道。 我想知道从那个 SSH 隧道发送和接收了多少字节。

我怎样才能找到它?

【问题讨论】:

    标签: ssh openssh


    【解决方案1】:

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

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

    当然,如果沿途的路由器决定丢弃所有其他数据包,您的 TCP 堆栈将发送两倍的数据,甚至更多。

    确实非常近似。

    【讨论】:

      【解决方案2】:

      您可以使用 pv 之类的方法测量原始 ssh 传输:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        • 2013-04-10
        • 2017-02-23
        • 2016-06-27
        • 2019-08-07
        • 1970-01-01
        • 2020-07-31
        相关资源
        最近更新 更多