注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小可尼の博客

Linux后端的技术窝窝

 
 
 

日志

 
 

ECN笔记  

2013-09-30 10:12:36|  分类: 数据包分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
出处:http://www.ipacpre.com/archives/317


By xuwy on

TCP采用一系列的措施(如确认、重传、定时器等)保证数据传输的可靠性,通常情况下,它将数据丢失的原因归结于网络拥塞,当拥塞(超时或丢包)发生时,则进行拥塞避免或慢开始算法(可参考慢开始和拥塞避免学习笔记:http://www.ipacpre.com/archives/193) 。但这些算法仅仅通过发送端来管理网络拥塞;而在实际的数据传输中,中间节点(路由器)也可能造成网络拥塞,为了提高端到端拥塞控制的性能,增强中间节点 的效率,创建了对IP路由器进行主动队列管理算法,使得路由器能够监控队列的状态,从而向发送端报告发生拥塞,让路由器开始丢包前降低发送速率,这种发现 网络中的早期拥塞并提前采取措施来避免的机制称为显式拥塞通告ECN(Explicit Congestion Notification)。

1.  ECN标志位的定义

ECN由RFC2481推荐,在IPv4报头结构中的TOS字段中的设置,如下图:

  • ECT:ECN-Capable Transport,由数据发送方设定,表示是否支持ECN功能(ECT=1表示支持,ECT=0表示不支持);
  •  CE:Congestion Experienced,由发生拥塞的路由器设置,通知终端节点缓存快溢出(CE=1,表示拥塞,CE=0,表示正常);

下图为ECN字段在协议分析软件中的显示:

另外,ECN还使用TCP报头中标志位的保留域,

  •  CWR:Congestion Window Reduced,由发送方设置,当发送方减少窗口后发送,表示已经减少了拥塞窗口;
  • ECE:ECN-Echo,由接收端发送,当接收方收到一个带有CE的ECN包后,立即发送一个带有ECN-Echo的ACK包;
下图为ECN字段在协议分析软件中的显示:


2.  ECN的工作原理

ECN最基本的方法是:当路由器在早期发生拥塞时,不是将数据丢弃,而是尽量对数据进行分组标记,从而减少因丢包造成的网络延迟,发送方通过返回的带拥塞反馈标志的数据包发现拥塞。

在连接建立阶段,发送端和接收端都需要表明自己是否支持ECN。由发送端在SYN包中将CWR和ECH Echo位设置为1,接收端在SYN+ACK包中将ECN Echo位设置为1;发送端会在每个数据包中将ECT位置1并响应ECN Echo + ACK,但如果只有发送端支持ECN,则该连接就不会用到ECT位和CE位;而接收端在收到一个CE位置1的数据包后将在随后的ACK数据包将ECN Echo位置1,接收端会一直发送ECN Echo数据包,直到收到CWR位置1的数据包为止。

3.  ECN的常见应用

由于ECN不需要超时重传或重复的ACK,所在,当前关于ECN的应用大多都集中在如何使用ECN来提高网络性能方面,如结合 ELN(Explicit Loss Notification)提高无线性能;ATM网络的应用;对多媒体流进行拥塞控制,提高传输效果等;当然,ECN还可以用在安全领域,如通过设置 ECE和CWR位来判断目标主机的TCP/IP协议栈是否支持ECN,从而探测操作系统。

 4.  ECN的潜在问题

1.兼容性问题,面对不兼容ECN的连接,会忽略ECN通告信息;

2.ECN信息本身可能会被丢弃,使得拥塞通告信息不能到达发送方。

  评论这张
 
阅读(343)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018