技术咨询:何为区分服务的Congestion Experienced?ECN该字段是什么?
IP头部DSCP与ECN(CE状态)疑问解答
场景复现
你使用Scapy发送自定义IP数据包的代码:
sr1(IP(src='192.168.1.35', dst='192.168.1.1', tos=3)/'my packet')
Wireshark捕获到的IP头部相关片段:
Differentiated Services Field: 0x03 (DSCP: CS0, ECN: CE) 0000 00.. = Differentiated Services Codepoint: Default (0) .... ..11 = Explicit Congestion Notification: Congestion Experienced (3)
问题解答
1. 关于“Differentiated Service : congestion experienced”的疑问
首先纠正一个误解:不存在单独的“Differentiated Service : congestion experienced”表述。你看到的是Wireshark对IP头部**区分服务字段(Differentiated Services Field)**的整体标注,这个8位字段被拆成了两部分:
- 前6位是区分服务代码点(DSCP):用来定义数据包的优先级,让网络设备根据这个值做差异化转发(比如优先处理语音、视频类实时流量)。你的数据包里这部分是
000000,对应CS0(Default,默认服务),也就是无特殊优先级,网络按常规方式处理。 - 后2位是显式拥塞通知(ECN):用来传递拥塞状态,你看到的
Congestion Experienced(CE)属于这部分的状态,和DSCP本身无关。
2. 什么是“Explicit Congestion Notification: Congestion Experienced”
ECN是IP协议的扩展机制,核心是不丢包就能通知发送方网络拥塞,避免传统“丢包=拥塞”机制的低效。它的2位字段有四种状态组合,其中11对应的就是Congestion Experienced(CE,拥塞已发生):
- 正常流程:支持ECN的发送方会把ECN字段设为
01或10(表示终端支持ECN);当中间路由器检测到网络拥塞但还没到要丢包的程度时,会把这个字段改成11(CE);接收方收到后会反馈给发送方,发送方就会降低发送速率,缓解拥塞。 - 你的情况:你手动设置了
tos=3(二进制为00000011),刚好把ECN的两位设成了11,所以Wireshark直接显示为CE状态——这是你人为设置的,不是网络真的出现了拥塞。
内容的提问来源于stack exchange,提问作者Bishop
相关产品推荐
相关产品推荐

