在报文中表示拥塞

RFC 3168在IP中定义两位ECN字段,区分不使用ECN、具备ECN能力以及已经历拥塞等状态。发送方先表明传输能处理这种通知,路由器才可按规定把相应报文标为CE并继续转发,而不是把任何报文随意改一个标志。

ECN没有增加链路容量,也不保证队列永不溢出。路由器仍可能在其他情况下丢弃报文,端点也仍须处理真实丢失。它改变的是部分拥塞反馈的表达方式,不是取消拥塞控制或可靠传输的其他任务。

参考:[1]

经典TCP怎样把标记传回发送端

经典TCP通过连接建立时的协商确认双方愿意使用ECN。接收端看到IP中的CE后,用TCP的ECE标志把情况反馈给发送端;发送端进行相应拥塞响应,再用CWR表明已作出响应。IP层的标记和TCP层的反馈因此不是同一个字段。

这条链要求端点行为配合,仅让某台中间路由器会标记并不代表连接已经完整支持。发送端也不能把“没有丢这个包”解释成可以保持原负载不变;标记本身就是应调整发送行为的信号。

参考:[1]

通知机制与后续算法分开

采用ECN并不指定唯一的窗口增长、反馈精度或队列算法。经典TCP规则只是一个完整用法,QUIC和其他传输可以按各自规范报告ECN状态;解释某条连接时必须确认实际使用的版本与机制。

后续标准还放宽了部分早期限制,为有明确规范的实验留出空间。RFC 8311就是对RFC 3168等文件的这类更新,因此不能把早期文档中所有码点用途和报文限制都当成永久不变的规则。机制、算法及部署支持需要分别核对。

参考:[1] [2] [3]