webrtc服务器需要多少带宽
webrtc中的带宽自适应算法分为两种:
1, 发端带宽控制, 原理是由rtcp中的丢包统计来动态的增加或减少带宽,在减少带宽时使用TFRC算法来增加平滑度。
2, 收端带宽估算, 原理是并由收到rtp数据,估出带宽; 用卡尔曼滤波,对每一帧的发送时间和接收时间进行分析, 从而得出网络带宽利用情况,修正估出的带宽。
两种算法相辅相成, 收端将估算的带宽发送给发端, 发端结合收到的带宽以及丢包率,调整发送的带宽。
下面具体分析两种算法:
2, 接收端带宽估算算法分析
结合文档http://toolsietforg/html/draft-alvestrand-rtcweb-congestion-02以及源码webrtc/modules/remote_bitrate_estimator/overuse_detectorcc进行分析
带宽估算模型: d(i) = dL(i) / c + w(i) d(i)两帧数据的网络传输时间差,dL(i)两帧数据的大小差, c为网络传输能力, w(i)是我们关注的重点, 它主要由三个因素决定:发送速率, 网络路由能力, 以及网络传输能力。w(i)符合高斯分布, 有如下结论:当w(i)增加是,占用过多带宽(over-using);当w(i)减少时,占用较少带宽(under-using);为0时,用到恰好的带宽。所以,只要我们能计算出w(i),即能判断目前的网络使用情况,从而增加或减少发送的速率。
算法原理:即应用kalman-filters
theta_hat(i) = [1/C_hat(i) m_hat(i)]^T // i时间点的状态由C, m共同表示,theta_hat(i)即此时的估算值
z(i) = d(i) - h_bar(i)^T theta_hat(i-1) //d(i)为测试值,可以很容易计算出, 后面的可以认为是d(i-1)的估算值, 因此z(i)就是d(i)的偏差,即residual
theta_hat(i) = theta_hat(i-1) + z(i) k_bar(i) //好了,这个就是我们要的结果,关键是k值的选取,下面两个公式即是取k值的,具体推导见后继博文。
E(i-1) h_bar(i)
k_bar(i) = --------------------------------------------
var_v_hat + h_bar(i)^T E(i-1) h_bar(i)
E(i) = (I - K_bar(i) h_bar(i)^T) E(i-1) + Q(i) // h_bar(i)由帧的数据包大小算出
由此可见,我们只需要知道当前帧的长度,发送时间,接收时间以及前一帧的状态,就可以计算出网络使用情况。
接下来具体看一下代码:
[cpp] view
plaincopy
void OveruseDetector::UpdateKalman(int64_t t_delta,
double ts_delta,
uint32_t frame_size,
uint32_t prev_frame_size) {
const double min_frame_period = UpdateMinFramePeriod(ts_delta);
const double drift = CurrentDrift();
// Compensate for drift
const double t_ts_delta = t_delta - ts_delta / drift; //即d(i)
double fs_delta = static_cast<double>(frame_size) - prev_frame_size;
// Update the Kalman filter
const double scale_factor = min_frame_period / (10000 / 300);
E_[0][0] += process_noise_[0] scale_factor;
E_[1][1] += process_noise_[1] scale_factor;
if ((hypothesis_ == kBwOverusing && offset_ < prev_offset_) ||
(hypothesis_ == kBwUnderusing && offset_ > prev_offset_)) {
E_[1][1] += 10 process_noise_[1] scale_factor;
}
const double h[2] = {fs_delta, 10}; //即h_bar
const double Eh[2] = {E_[0][0]h[0] + E_[0][1]h[1],
E_[1][0]h[0] + E_[1][1]h[1]};
const double residual = t_ts_delta - slope_h[0] - offset_; //即z(i), slope为1/C
const bool stable_state =
(BWE_MIN(num_of_deltas_, 60) fabsf(offset_) < threshold_);
// We try to filter out very late frames For instance periodic key
// frames doesn't fit the Gaussian model well
if (fabsf(residual) < 3 sqrt(var_noise_)) {
UpdateNoiseEstimate(residual, min_frame_period, stable_state);
} else {
UpdateNoiseEstimate(3 sqrt(var_noise_), min_frame_period, stable_state);
}
const double denom = var_noise_ + h[0]Eh[0] + h[1]Eh[1];
const double K[2] = {Eh[0] / denom,
Eh[1] / denom}; //即k_bar
const double IKh[2][2] = {{10 - K[0]h[0], -K[0]h[1]},
{-K[1]h[0], 10 - K[1]h[1]}};
const double e00 = E_[0][0];
const double e01 = E_[0][1];
// Update state
E_[0][0] = e00 IKh[0][0] + E_[1][0] IKh[0][1];
E_[0][1] = e01 IKh[0][0] + E_[1][1] IKh[0][1];
E_[1][0] = e00 IKh[1][0] + E_[1][0] IKh[1][1];
E_[1][1] = e01 IKh[1][0] + E_[1][1] IKh[1][1];
// Covariance matrix, must be positive semi-definite
assert(E_[0][0] + E_[1][1] >= 0 &&
E_[0][0] E_[1][1] - E_[0][1] E_[1][0] >= 0 &&
E_[0][0] >= 0);
slope_ = slope_ + K[0] residual; //1/C
prev_offset_ = offset_;
offset_ = offset_ + K[1] residual; //theta_hat(i)
Detect(ts_delta);
}
[cpp] view
plaincopy
BandwidthUsage OveruseDetector::Detect(double ts_delta) {
if (num_of_deltas_ < 2) {
return kBwNormal;
}
const double T = BWE_MIN(num_of_deltas_, 60) offset_; //即gamma_1
if (fabsf(T) > threshold_) {
if (offset_ > 0) {
if (time_over_using_ == -1) {
// Initialize the timer Assume that we've been
// over-using half of the time since the previous
// sample
time_over_using_ = ts_delta / 2;
} else {
// Increment timer
time_over_using_ += ts_delta;
}
over_use_counter_++;
if (time_over_using_ > kOverUsingTimeThreshold //kOverUsingTimeThreshold是gamma_2, gamama_3=1
&& over_use_counter_ > 1) {
if (offset_ >= prev_offset_) {
time_over_using_ = 0;
over_use_counter_ = 0;
hypothesis_ = kBwOverusing;
}
}
} else {
time_over_using_ = -1;
over_use_counter_ = 0;
hypothesis_ = kBwUnderusing;
}
} else {
time_over_using_ = -1;
over_use_counter_ = 0;
hypothesis_ = kBwNormal;
}
return hypothesis_;
}
是实际带宽,4M已经挺大了,不过你要问清楚是独享还是共享。需要的带宽大小要看你的具体应用,对于公司网站之类的1M就足够了。你可以根据自己可能的
PV流量
和网页内容大小来估算自己需要多大带宽。反正带宽可以升级,你可以开始小点,不够就升级好了。
1M的话承载主要是看这些人要做什么。下载还是看小说类,1M带宽你可以理解为128KB/s的速度。例如我这有台机器大家只是登陆上去当测试服敲敲代码。需要的带宽就非常小,登陆10几个人都不卡。但是如果其中有个人在下载一个2M的。那这几秒钟内其他人基本卡死。
一、下载测试法
下载测试法主要是将一个大型的文件放置在服务器上,然后通过下载的方法来对带宽的下载速度和稳定性进行测试,这种方法比较适用,特别是对于搭建下载网站或者在线视频这种需要大带宽支持的用户来说。不过通常这种方法也需要服务商的配合。一般情况下:
1Mbps的带宽下载速度:100K-150K/S
2Mbps是200-280K/S
4Mbps是400K-500K/S
8Mbps是800-950K/S
10Mbps光纤共享能达到1M-15M/S
注:(1Mbps宽带理论下载速度128K/s,2Mbps宽带理论256K/s,4Mbps是512K/s)
2、使用Ping测试网速
通过ping
服务商所提供的IP地址来对网络的当前情况进行测试。但是需要注意的是这种方法只是对带宽的一个估算,而不是直观地将数值表现出来,这种方法最重要的测试服务器的访问速度稳定性。
3、使用测试网站
只要用户在搜索引擎上一搜,其实有很多网速测试网站可以进行网速测试,是最常用的网速测试方法,而且用户根据网络使用情况选择测试线路,测试点遍及全国各省、美国、澳大利亚、日本等海外国家,用户可选择任意测试点进行测试,网站采用flash实现测速功能,可视化的测试过程,测试结果能准确反映本地网络速率,无需下载安装插件或添加额外设备,使用简单,操作方便。
4、使用路由跟踪
常见的路由跟踪命令行 windows有Tracert和winmtr, Linux下有traceroute和mtr,
windows的winmtr是带gui的使用比较简单。根据以上带宽的速度,然后除页面文件大小,乘以打开页面的时间(秒为单位)。这样就可以算出1M带宽能同时承受多少人访问了。
现在选择美国服务器的用户越来越多,其中购买美国服务器进行带宽选择是必不可少的,但许多在购买美国服务器的用户不知道带宽该如何选择,若选择带宽不足将会严重影响到网站的正常访问。那么,美国服务器的带宽选择多少合适呢
大多数美国服务器的网络配置都是100Mbps带宽,每个月限制流量2000G,如果超出这个流量要加钱的。
这种配置的优点是网络峰值能跑到100Mbps,如果高峰期流量大则不会感觉到慢。缺点是如果月底流量超了,则还要付超出的流量费用,而超出的流量费用一般都比较贵,流量价格比很低。
美国服务器(G口独享、10G独享):(所有独服月付88折,季付八折,年付七折)
1:美国G口独享600元起
是指云服务器内网每秒发送包数量,单位是PPS(Packets Per Second,每秒发包数量),内网收发包是衡量云服务器内部网络性能的一项指标,内网收发包PPS值越大说明内网性能越好。
常见的内网收发包有20万PPS、80万PPS、100万PPS等。如果是一台云服务器的单机应用,那么内网带宽、内网收发包性能也可以忽略,如果是集群应用,不同实例需要使用内网互通,那么内网带宽和内网收发包性能就很重要。
扩展资料:
云服务器关注的是高性能吞吐量计算能力,关注的是在一段时间内的工作量总和。因此,云服务器在架构上和传统的服务器有着很大的区别。
架构上,云服务器体系架构包含云处理器模块、网络处理模块、存储处理模块与系统件理模块等。这种架构的优势使得云服务器可以大大提高了利用率,采用多个云处理器完成系统设计,引入低功耗管理理念完成对系统的集中冗余管理,同时在系统中省去了很多重复的硬件。
云服务器一般包括线程、核、处理器、网络、加速器等功能单元全部计算的总和。因此,云计算一般都有着庞大的数据输入量或大量的工作集。
其实,实测就最好,复大于1G文件,看到的,另外,交换改,光纤模块,接入交换,理论1000M交换,达124M/s
IDC带宽测试几款软件(Multiping pingPlotter TracertGUI )
转载weixin_34238633 发布于2017-11-07 04:26:00 阅读数 245 收藏
展开
这段时间一直测试IDC机房带宽,分享几款软件吧
介绍一款实用Multiping工具,通过绘图方式表现出来,特别直观,自带导入导出模板功能,方便把自己常用的监控做成模板导出
下载地址:http://wwwmultipingcom/downloads/mping_2exe
另外一款是pingPlotter,实时路由跳数监控,各个路由网关点直接延迟,很有用,不同时间段判断网路线路是否稳定
http://wwwpingplottercom/downloads/pngplt_proexe
再介绍一款TracertGUI,路由网关点,中文显示ip地址实际所在地,还可以手动升级ip地址表的更新
下载:见附件,注意 如果附件下载名称数字不连在一块,自己修改一下才能解压
附件:http://down51ctocom/data/2358888
网络流量监控、真实带宽测试软件_Real Network Monitor V15
1M带宽可以支持的同时在线人数大概为17个。N M带宽可以支持的同时在线人数大概为N17个。人数越多,需要宽带越大。
影响在线人数的因素
一、访问量
二、网站类型:如果是出文字的网站(如小说站),1M带宽带动日均5000IP。如果是普通网站有,有文字、论坛、新闻资讯类型网站 大概1M能带一千IP。考虑到高峰期并发,1M高峰期还会卡。(最低配 单核CPU+512内存。1千IP CPU占用10%左右,内存200到300之间)。
下面根据影响因素计算下1M带宽能同时承受多少人在线(以网络状况良好为前提)
1、 打开网站8秒原则;
2、 评判的只是:用户从云服务器下载文件的速度;
3、 页面的标准尺寸大小为:60KB;
参考公式:支持连接个人 = 服务器带宽/页面尺寸大小
通过计算大致结果是,1Mbps的带宽(服务器的1M带宽最快上下速度能达到1M/s,跟我们家用的带宽稍有区别)支持的连接数为:17个
因此,N M带宽可以支持的同时在线人数大概为N17个。
扩展资料:
带宽 /8 =流量(常说的网速),1 Mps / 8 = 1024 Kps / 8 = 128 k/s。
1M带宽是指上行最高512K下行最高1024K,连接速度只是指你连接到某某服务器的实时速度,下载与选择的下载服务器有关,如果连接速度快下载速度当然最好了。所以测试的网速只是连接到测试服务器的网速与下载无关。
上行带宽就是本地上传的带宽,一般server的上传带宽需求比较大。
下行带宽就是客户从server上下载文件的带宽就称为下行带宽。网速和带宽是两者密不可分。宽带理论最大速度512k=512kbps=512k bits/s=64k bytes/s,1M=1024kbps=1024k bits/s=128k bytes/s等。
0条评论