显式拥塞通知-ExplicitCongestionNotification(ECN)一样情状下,当收集中显示堵塞的光阴,TCP/IP会主动甩掉数据包。源端检测到丢包后,就会减小堵塞窗口,低落传输速度。
但要是端到端能获胜商酌ECN的话,赞成ECN的途由器就可能发作堵塞时正在IP报头中扶植一个标帜,发出即将发作堵塞的信号,而不是直接甩掉数据包。
ECN裁汰了TCP的丢包数目,通过避免重传,裁汰了延迟(加倍是颤栗),擢升了运用的机能。
ECN需求主动部队经管AQM战略连合才具发扬效率。途由器正在部队溢出前检测到堵塞,正在IP报头中扶植Congestion Experienced (CE) Codepoint代码点来指示正正在发作堵塞。
TCP SYN握手包会包括两个非常的flag: ECN-echo(ECE)和Congestion Window Reduced (CWR) 。云云两边就可能商酌正在数据传输功夫是否可能无误的处分扶植了CE位的数据包。
发送朴直在扫数发送的数据包中扶植ECN Capable Transport (ECT) 位。
要是发送方收到一个TCP数据包,报头中扶植了ECE flag,则发送方将调度其堵塞窗口,就像它从遗失的数据包中疾速克复一律。发送方下一个数据包扶植CWR flag,向领受方注脚它已对堵塞做出响应。发送朴直在每个RTT间隔最众做出一次这种响应。
当领受方领受到扶植了CE 位的数据包时,领受方将正在所少有据包中扶植 ECE flag。这将从来一连到它收到一个扶植了CWR flag的数据包,注脚发送方仍然对堵塞做出了响应。 ECT 标记仅正在包括数据有用载荷的数据包中扶植。发送不包括数据有用载荷的 TCP ACK 数据包时,应拔除 ECT 位。
ECN 利用IPv4或IPv6头中TOS的两个最低有用位,编码四个代码点:
当发送方和领受方都赞成ECN时,它们用 ECT(0) 或 ECT(1) 标帜它们的数据包。途由器将 ECT(0) 和 ECT(1) 代码点视为等效的。但本来这里是有一个微妙的分歧,后面再说。
要是数据包穿过遭遇AQM部队,则赞成ECN的途由器可以会更改代码点CE而不是甩掉数据包。此作为称为“标帜”,其目标是报告领受方即将发作堵塞。领受朴直在TCP允诺栈中处分这种堵塞指示,并发送ECE到发送方,以便报告它低落其传输速度。
正在RFC3168中,两个ECT codepoint的苛重动机是供应一位ECN nouce随机数[SCWA99] ,途由器正在扶植CE codepoint时务必“擦除”这个随机数(擦除 CE codepoint的途由器正在重修原始随机数时将面对非常的困穷,所以终端节点更有可以检测到CE codepoint的反复擦除)。ECN nouce许可为发送方供应一种机制,验证收集元素没有擦除掉CE,而且领受方无误地向发送方陈说领受到了带有CE codepoint的数据包。
发送方检测有缺陷收集元素的另一种步骤是不按期的发送CE codepoint数据包,以查看领受方是否陈说领受到。要是这些数据包正在收集中遭遇堵塞,途由器可以不会更改数据包,由于 CE codepoint仍然扶植,因而发送方无法确定途由器是否希图正在这些数据包中扶植 CE codepoint。 而且与ECN随机数比拟,对有缺陷收集元素和领受器的查抄结果较低。
将第四个ECN codepoint分拨给 ECT(1) 也拂拭了将此codepoint用于某些其他可以的用处。这些可以性正在RFC3168中都逐一枚举了,这里就不赘述了。
3).TCP Header中的堵塞窗口裁汰 (CWR) 标记,以便数据发送方可能报告数据领受方仍然减小了堵塞窗口。
正在 TCP 相联设立修设阶段,Host A和Host B调换相闭 ECN 的消息。商酌完工后,Host A正在数据包的 IP 标头中扶植 ECT 代码点,以向收集注脚其赞成ECN而且应允利用ECN。途由器正在发作堵塞时可能用 CE 代码点标帜这个数据包。要是 TCP 商酌后不盼望对特定命据包利用 ECN 报告,则Host A发送TCP将 ECN 代码点扶植为 not-ECT,而且Host B渺视领受到的数据包中的 CE 代码点。
更确实地说,ECN-setup SYN packet 外现传输 SYN packet的TCP 实行将参加 ECN(无论是行为领受方依旧发送方)。行为领受方,它正在传出TCP ACK中扶植 ECE 来反映正在 IP Header中扶植了 CE codepoint的传入数据包。行为发送方,它将通过裁汰堵塞窗口并正在符合时扶植 CWR 来反映扶植了 ECE 的传入数据包。
要是你看到这里,会发觉一个题目。为什么Host A正在SYN中扶植两个ECN干系flag,而Host B正在SYN-ACK中只扶植一个ECN干系flag?
起码存正在一种有缺陷的TCP实行,此中TCP领受方扶植ACK/SYN-ACK中的保存字段,只是由于领受到的数据包中扶植的保存字段。正在TCP SYN中扶植ECE和CWR flag,而SYN-ACK仅扶植 ECE flag,所以正在这种有缺陷的TCP实行中,发送方也不会被误导。
ECN利用TCP Header中的ECE和CWR flag实行初始化。但互联网中存正在少少有缺陷的防火墙、负载均衡器和入侵检测编制,它们要么甩掉ECN-setup SYN packet,要么直接RST。
为了供应雄厚的相联性,收到RST反映的Host可以会从新发送SYN并拔除CWR和ECE。这可以会导致正在晦气用 ECN 的情状下设立修设 TCP 相联。正在这种情状下,以下示例场景是可以的:
负责 TCP 对显式堵塞报告 (ECN) 的利用。 正在TCP相联的两头都外现赞成才具开启ECN。
要是内核检测到ECN相联分外,许可fallback到non-ECN。目前,这个选项实行了RFC3168, section 6.1.1.1.的fallback机制,但咱们保存将来正在此选项下实行非常的检测机制。要是 tcp_ecn 或per route(或堵塞负责)ECN 扶植被禁用,则该选项的值不会利用。
转载请注明出处:MT4平台下载
本文标题网址:显式拥塞通知-ExplicitCongestionNotification(ECN)