您的位置:首页 > 理论基础 > 计算机网络

优化STB&TV的网络带宽

2016-02-19 09:33 751 查看
在STB和TV竞争对手里面,常遇到我们平台网络性能不如海思平台的问题。特别表现在播放网络视频的时候,人家播得很顺畅,可是我们平台会卡卡顿顿。这里主要涉及到带宽竞争的问题。

要争取足够的带宽,就要从两个方面入手:1.服务器单位时间发送更多的数据过来;2.STB&TV平台能更快的处理数据

对于第一个方面,具体到一个tcp连接,就是服务器一次发送足够多的数据出来。而一次应该发送多少数据是由tcp发送窗口决定,而发送窗口又是由网络状况和对端设备的tcp接收窗口共同决定。网络状况我们没办法决定,只能从对端设备的tcp接收窗口入手,这里的对端设备是针对服务器而言,具体来讲就是STB&TV平台了。

在linux&Android系统中,tcp接收窗口由/proc/sys/net/ipv4/tcp_rmem里面的数值决定,数值越大,表示接收窗口越大,服务器就能够一次发送更多的数据过来。

但是,数值也不适过大,因为这样会导致网络拥塞,反而导致带宽降低。

下面两个图分别是扩大接收窗口前和扩大后的对比图,其中ip地址192.168.7.137为MS平台,192.168.7.135为海思平台

优化前MS接收窗口



对比机接收窗口



可以看得出,对比机接收窗口远远大于我们平台

优化前带宽对比图

红线为MS平台,绿线为对比机平台



可以看出来差别不算太大,只是我们平台整体上数据没对比机连续,峰值线没对比机高

优化后MS接收窗口



此时MS接收窗口已经大于对比机接收窗口

优化后带宽对比

红线为MS平台,绿线为对比机平台



这里可以看到经过优化后MS平台带宽是高于对比机的

下面要讲的是带宽过大带来的不利影响

优化前平均带宽:



优化后平均带宽



可以看到优化后总平均带宽(MS+对比机)反而减小了,这就是因为窗口太大,导致网络阻塞,反而使总带宽下降了

前面总结的是第一个方面,就是通过加大tcp接收窗口让服务器端一次发送更多数据。另外还有一种方法让服务器发送更多数据,就是开启多个线程向服务器建立多个tcp连接拉数据最后一种方法就是上层调用read或者recv函数的时候,请求的size可以稍微大一些,这样一方面可以更好的发挥加大tcp接收窗口带来的优势,另一方面可以减少系统调用,减小耗时。

第二个方面,就是提高STB&TV的响应速度

在硬件配置确定的情况下,可以在程序中创建socket后使用setsockopt设置TCP_NODELAY加快响应
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: