Linux 如何自动测量两台主机之间的带宽使用情况

Linux 如何自动测量两台主机之间的带宽使用情况,linux,networking,bandwidth,wireshark,Linux,Networking,Bandwidth,Wireshark,我有一个应用程序,它有一个TCP客户端和一个服务器。我在不同的机器上设置了客户机和服务器。现在,我想测量消耗了多少带宽(在应用程序单次运行期间发送和接收的字节)。我发现wireshark就是这样一个工具,它可以帮助我获得这些统计数据。然而,wireshark似乎依赖于GUI。我想要的是一种自动化测量和报告统计数据的方法。我不关心wireshark捕获的单个数据包的信息。我不需要那个信息。是否有某种方法可以运行wireshark,这样它所做的只是写入一个文件,即当应用程序在两端运行时,在两台主机之

我有一个应用程序,它有一个TCP客户端和一个服务器。我在不同的机器上设置了客户机和服务器。现在,我想测量消耗了多少带宽(在应用程序单次运行期间发送和接收的字节)。我发现wireshark就是这样一个工具,它可以帮助我获得这些统计数据。然而,wireshark似乎依赖于GUI。我想要的是一种自动化测量和报告统计数据的方法。我不关心wireshark捕获的单个数据包的信息。我不需要那个信息。是否有某种方法可以运行wireshark,这样它所做的只是写入一个文件,即当应用程序在两端运行时,在两台主机之间发送和接收的总字节数

还有,有没有更好的方法来获取这一统计数据?通过netstat或/proc/dev/net或任何其他工具

我的两台机器都运行ubuntu 10.04或更高版本

是测量面向连接的统计信息的合适工具。您可以记录应用程序通信的跟踪或实时分析:

bro -r <trace>
bro -i <interface>
这将产生以下输出:

192.168.1.102   192.168.1.1     SF      301     300
192.168.1.103   192.168.1.255   S0      350     0
192.168.1.102   192.168.1.255   S0      350     0
192.168.1.103   192.168.1.255   S0      560     0
192.168.1.102   192.168.1.255   S0      348     0
192.168.1.104   192.168.1.255   S0      350     0
192.168.1.104   192.168.1.255   S0      549     0
192.168.1.103   192.168.1.1     SF      303     300
192.168.1.102   192.168.1.255   S0      -       -
192.168.1.104   192.168.1.1     SF      311     300
每行表示一个连接,省略传输层端口。最后两列表示发起者(第一列)和响应者(第二列)发送的字节。列
conn_state
表示连接状态。有关所有可能的字段值,请参阅。一些重要的价值观是:

  • S0:看到连接尝试,没有回复
  • S1:连接已建立,未终止
  • SF:正常建立和终止。请注意,这与状态S1的符号相同。您可以将两者区分开来,因为对于S1,摘要中不会有任何字节计数,而对于SF,则会有
  • REJ:连接尝试被拒绝
是测量面向连接的统计数据的合适工具。您可以记录应用程序通信的跟踪或实时分析:

bro -r <trace>
bro -i <interface>
这将产生以下输出:

192.168.1.102   192.168.1.1     SF      301     300
192.168.1.103   192.168.1.255   S0      350     0
192.168.1.102   192.168.1.255   S0      350     0
192.168.1.103   192.168.1.255   S0      560     0
192.168.1.102   192.168.1.255   S0      348     0
192.168.1.104   192.168.1.255   S0      350     0
192.168.1.104   192.168.1.255   S0      549     0
192.168.1.103   192.168.1.1     SF      303     300
192.168.1.102   192.168.1.255   S0      -       -
192.168.1.104   192.168.1.1     SF      311     300
每行表示一个连接,省略传输层端口。最后两列表示发起者(第一列)和响应者(第二列)发送的字节。列
conn_state
表示连接状态。有关所有可能的字段值,请参阅。一些重要的价值观是:

  • S0:看到连接尝试,没有回复
  • S1:连接已建立,未终止
  • SF:正常建立和终止。请注意,这与状态S1的符号相同。您可以将两者区分开来,因为对于S1,摘要中不会有任何字节计数,而对于SF,则会有
  • REJ:连接尝试被拒绝

我将详细阅读文档,但快照中的最后两列是否分别表示该行中列出的主机之间发送和记录的净字节?正确。每个流表示单个连接/流。(我澄清了答案。)你能告诉我,一旦我开始使用bro-I eth0进行bro,如何停止捕获数据包。我目前正在使用Ctrl+c停止这个过程,并希望所有的统计数据都已写入该文件。通过
broctl
进入外壳后,可以使用命令
start
stop
。请参阅
doc/quickstart.rst
,了解如何进行基本的独立设置。我将详细阅读文档,但快照中的最后两列是否分别表示该行中列出的主机之间发送和记录的净字节数?正确。每个流表示单个连接/流。(我澄清了答案。)你能告诉我,一旦我开始使用bro-I eth0进行bro,如何停止捕获数据包。我目前正在使用Ctrl+c停止这个过程,并希望所有的统计数据都已写入该文件。通过
broctl
进入外壳后,可以使用命令
start
stop
。有关如何进行基本的独立设置,请参见
doc/quickstart.rst