现在的位置: 首页 > 综合 > 正文

怎么获取或计算网络中任意两个节点的带宽?(zz)

2013年09月10日 ⁄ 综合 ⁄ 共 3405字 ⁄ 字号 评论关闭

zz from http://community.csdn.net/Expert/topic/4904/4904585.xml?temp=1.748294E-02

说明:原来写了很多,但是没有保存,又没发表出去,结果……懒得写了

=================================================================================

主  题:  怎么获取或计算网络中任意两个节点的带宽? 
作  者:  rvvd (rvvd)        Blog 
等  级:   
信 誉 值:  100 
所属社区:  专题开发/技术/项目 网络通信 
问题点数:  20 
回复次数:  13 
发表时间:  2006-7-25 22:17:39  
 

请各位大侠多多指教,提供相关的资料或算法给我参考,谢谢!

=================================================================================
  metaza() ( ) 信誉:100    Blog  2006-8-20 19:41:27  得分: 0  

FLUKE应该有吧,我认为,没见过

=================================================================================

 taosiming(浪苍云) ( ) 信誉:100    Blog  2006-8-22 21:19:08  得分: 0  
 
int m_iPWSize;               // size of probe history window size
int getBandwidth()
{
   // sorting
   int temp;
   for (int i = 0, n = (m_iPWSize >> 1) + 1; i < n; ++ i)
      for (int j = i, m = m_iPWSize; j < m; ++ j)
         if (m_piProbeWindow[i] > m_piProbeWindow[j])
         {
            temp = m_piProbeWindow[i];
            m_piProbeWindow[i] = m_piProbeWindow[j];
            m_piProbeWindow[j] = temp;
         }

   // read the median value
   int median = (m_piProbeWindow[(m_iPWSize >> 1) - 1] + m_piProbeWindow[m_iPWSize >> 1]) >> 1;
   int count = 1;
   int sum = median;
   int upper = median << 3;
   int lower = median >> 3;

   // median filtering
   for (int k = 0, l = m_iPWSize; k < l; ++ k)
      if ((m_piProbeWindow[k] < upper) && (m_piProbeWindow[k] > lower))
      {
         ++ count;
         sum += m_piProbeWindow[k];
      }

   return (int)ceil(1000000.0 / (double(sum) / double(count)));
}

=================================================================================

guomin(敏感) ( ) 信誉:100    Blog  2006-8-24 11:02:26  得分: 0 

用最笨的办法咯。两点间传输一个文件,然后计算平均值或者稳定值。

=================================================================================  
 
 guomin(敏感) ( ) 信誉:100    Blog  2006-8-24 11:13:32  得分: 0 

请问taosiming(浪苍云) 的代码什么意思啊?偶是新新手,看不懂啊。。。

 ================================================================================= 

 f_acme(沧海一声笑) ( ) 信誉:100    Blog  2006-8-24 11:13:46  得分: 0  
 
taosiming(浪苍云) :
能不能解释一下?
那些m_piProbeWindow代表什么意思啊?

=================================================================================  

 taosiming(浪苍云) ( ) 信誉:100    Blog  2006-8-25 13:09:40  得分: 0  
这个代码不具备参考性,具体可以参考pathrate源代码。

=================================================================================
 troyleescong() ( ) 信誉:100    Blog  2006-8-28 1:44:20  得分: 0 
 
 
  
发送一个一定长度的UDP包并在IP首部设置“不分片”标志比特,如果其长度超过了带宽则路由器会自动把他分片,但是因为设置了“不分片”标志比特,所以路由器会发送一个ICMP包告诉你要分片而且告诉你带宽。就是这样你设置TTL从1增加,一个一个的发送UDP包,直到你的UDP包能发到目的地为止就是带宽了。

详细可以看看《TCP/IP详解 卷1:协议》

=================================================================================
 benjiam(今晚打老虎) ( ) 信誉:100    Blog  2006-8-30 15:24:54  得分: 0  
  
ls 去死 不要悟到

不太懂那个代码 应该不对

带宽大小 和rtt 有关

=================================================================================

 saoyu(烧鱼) ( ) 信誉:100    Blog  2006-8-30 22:16:49  得分: 0  

带宽并不是固定不变的,跟你网络中设备的QoS的设定值等等有关,单纯一个程序是没法算出的。

=================================================================================

taosiming(浪苍云) ( ) 信誉:100    Blog  2006-9-5 15:42:05  得分: 0  
基本思想:利用packet pair 来测试end-to-end 的带宽,经过多次测试,在接收端利用一个数组或者list来存储这个测试的时间差。然后排序,取中间值,然后在去掉两边的极端数据。取8倍和1/8 median 的值为有效值,在取一次平均值。然后得到时间差。单位为微妙。
其实也就是packet pair的多峰估计值。

=================================================================================
 guomin(敏感) ( ) 信誉:100    Blog  2006-9-7 21:54:39  得分: 0  
请教下楼上的,这样会不会比较慢呢?想了很久都没想出有什么好点的算法啊

=================================================================================

 taosiming(浪苍云) ( ) 信誉:100    Blog  2006-9-8 13:47:21  得分: 0  
  
pathneck 和pathrate基本都是这个方法啊,具体得到的话基本需要几分钟吧。你也可以改进。不过都要几分钟才能测得准确的端到端带宽!

   

抱歉!评论已关闭.