Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91315
  • 博文数量: 19
  • 博客积分: 66
  • 博客等级: 民兵
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-25 19:14
文章分类
文章存档

2012年(19)

分类:

2012-08-04 21:30:12

原文地址:贪婪tcp协议 作者:dxcnjupt

传统tcp拥塞控制在现代网络中的缺陷

传统的TCP拥塞控制算法,针对端对端的线路进行流量控制。

TCP协议是一个“君子”协议,当网络中所有的应用都自觉控制自己的流量时,TCP拥塞控制的效果是非常好的。

但是当今的英特网上,“流氓”软件越来越多。P2P会抢占大量的带宽,迅雷下载,也会采用开启数百个tcp连接的方法来抢占带宽。

当网络某个节点上带宽有限时(例如移动网->电信网),大量的带宽被P2P,迅雷下载抢占,用户浏览网页/观看土豆视频时的速度会受到严重的影响。

 

       如下图,是我通过英特网访问网站的过程。

       当线路B存在带宽瓶颈时会发生丢包。此时服务器会对我的TCP连接做拥塞控制;同时线路B上的P2P,和迅雷下载并不会降低自己的速度。

       这就导致当网络中某条线路比较慢时, P2P流量和迅雷会抢占浏览网页和视频的带宽, 导致访问网页的速度变慢。 

解决方案

我们需要对TCP协议的拥塞控制做一次革命!!!

 

TCP拥塞控制的目的,是保证线路不会因为过多的数据包而超过负载造成崩溃。

作为网络服务的提供者。我们必须保障的只是我们自己的出口带宽。至于移动网和电信网之间线路是否会崩溃,这个不是我们应该关心的问题。而且全世界数十万个网站都在使用这条运营商线路,我们也不应该去降低自己的拥塞窗口来保证该线路的稳定性。

 

所以我们不应该针对端对端来做拥塞控制(即不应该针对PCà服务器的整条线路);而应该针对我们出口线路来做拥塞控制。

假设我们从电信买了一条线路A。只有当A线路上存在负载问题时,我们才去降低自己的拥塞窗口进行tcp限速。

其它一切线路上的丢包都不会影响我们的拥塞窗口。

 

再进一步,一组tcp连接应该共享一个拥塞控制信息。当出口出现拥塞时,所有的tcp连接都同时按一定的规则减小它的拥塞窗口。这样可以保证所有用户访问网页/资源时, 可以得到稳定的速度,不会出现时快时慢的现象。

例如页面浏览的tcp连接为一号组,视频的tcp连接为二号组。 当出口带宽不足时,所有页面浏览的连接公平的分享40%的带宽; 而所有视频连接分享剩下的60%带宽

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;}

tcp的启动阶段也可以省掉, 直接在三次握手之后就把拥塞窗口开到带宽允许的最大值. 对于访问小网页的tcp连接”, 这可以减少大量的延迟.

 

实现方法

我们可以将tcp拥塞控制和流控系统进行结合。

通过对当前流量,前几秒流量,以及上周这一天流量进行分析,预测出下一秒的线路流量,来修改我们的tcp拥塞窗口。

具体内容请参考<基于tcp协议的流量控制设备>一文

 

阅读(1476) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~