TCPスループットの計算式
2126 ワード
Valveゲーム会社のオープンソースGameNetworkingSockets[1]は、信頼できるデータ転送も信頼できないデータ転送もサポートし、そのデータ転送はUDPに基づいており、TCPに友好的な混雑制御メカニズムを実現し、帯域幅占有の公平性を保証している.そのレート制御式は有名な論文に基づいている[2].今、帯域幅計算プログラムをここに録画して、必要に応じて次のようにします.
[1]GameNetworkingSockets [2]Padhye J, Firoiu V, Towsley D, et al. Modeling TCP throughput: A simple model and its empirical validation[J]. ACM SIGCOMM Computer Communication Review, 1998, 28(4): 303-314
const int64 k_nMillion = 1000000;
int TFRCCalcX( int s, int64 rtt, float p )
{
// TFRC throughput equation
//
// s
// X_Bps = ----------------------------------------------------------
// R*sqrt(2*b*p/3) + (t_RTO * (3*sqrt(3*b*p/8)*p*(1+32*p^2)))
//
// b is TCP acknowlege packet rate, assumed to be 1 for this implementation
float R = (double)rtt / k_nMillion;
float t_RTO = MAX( 4 * R, 1.0f );
return static_cast< int >( static_cast<float>( s ) /
( R * sqrt( 2 * p / 3 ) + ( t_RTO * ( 3 * sqrt( 3 * p / 8 ) * p * ( 1 + 32 * ( p * p ) ) ) ) ) );
}
[1]GameNetworkingSockets [2]Padhye J, Firoiu V, Towsley D, et al. Modeling TCP throughput: A simple model and its empirical validation[J]. ACM SIGCOMM Computer Communication Review, 1998, 28(4): 303-314