目录
- 一. 实验目的
- 二.前置知识略概
- 三. 实验过程
- 1. Topo
- 2. Egress
- 三. 实验结果
- 1.启动监听服务端
- 2.发送数据包
- 3.查看h2.log的数据
- 4.Iperf模拟Flood超过门限
- 四.为什么要在Egress上进行ecn的配置
一. 实验目的
ECN allows end-to-end notification of network congestion without dropping packets. If an end-host supports ECN, it puts the value of 1 or 2 in the ipv4.ecn field. For such packets, each switch may change the value to 3 if the queue size is larger than a threshold. The receiver copies the value to sender, and the sender can lower the rate.
需求提取;
1.在header中增加ecn的field
2. 动态调整ecn的value,以适应网络状况
二.前置知识略概
一种网络通信协议的功能,用于在网络出现拥堵时提供拥堵通知。ECN 允许网络中继设备(如路由器)在检测到即将发生拥堵时,通过标记数据包来通知发送端和接收端。这样,数据发送方可以降低其发送速率,以减轻网络拥堵,从而提高网络整体性能。
在 TCP/IP 协议中,ECN 通过在 IP 头部和 TCP 头部中设置特定的位来实现。当ECN被启用且网络设备感知到拥堵趋势时,它会标记经过的数据包。接收方收到标记的数据包后,会通过 TCP 确认消息通知发送方。随后,发送方降低其发送速率,以减轻对网络的负担。这个过程帮助避免了传统的拥塞控制机制中的丢包,从而提高了数据传输的效率和稳定性。
三. 实验过程
1. Topo
2. Egress
这个没啥好说的,就是改个字段的值而已
来看看standard_metadata里面的字段
每个字段的含义:
ingress_port
: 数据包进入交换机的端口号。egress_spec
: 决定数据包将从哪个端口离开交换机的指定字段。egress_port
: 数据包实际离开交换机的端口号。clone_spec
: 用于指定克隆操作的参数,如克隆的数据包应该发送到哪个端口或组。instance_type
: 数据包类型的指示器,例如,正常数据包、克隆的数据包、多播数据包等。drop
: 一个标记位,如果设置为1,则数据包会被丢弃。recirculate_port
: 如果数据包需要重新进入处理流程,这个字段指定它应该进入的端口。packet_length
: 数据包的总长度。enq_timestamp
: 数据包被放入传输队列时的时间戳。enq_qdepth
: 数据包入队时队列的深度。deq_timedelta
: 数据包在队列中等待的时间长度。deq_qdepth
: 数据包出队时队列的深度。ingress_global_timestamp
: 数据包进入交换机时的全局时间戳。lf_field_list
: 用于逻辑复制操作的字段列表的标识符。mcast_grp
: 指定数据包所属的多播组。resubmit_flag
: 如果这个位被设置,数据包将被重新提交给 ingress 处理流程。egress_rid
: 出口复制 ID,用于多播和复制操作。checksum_error
: 指示数据包是否有校验和错误。
更多的自己去specification里找
三. 实验结果
1.启动监听服务端
2.发送数据包
3.查看h2.log的数据
0x1:我们取的是tos的后两位作为cen的filed字段,所以这里的ecn=1;
4.Iperf模拟Flood超过门限
四.为什么要在Egress上进行ecn的配置
注:此内容可能有错误,仅为个人整理资料的答案
-
网络状态的实时感知:Egress 阶段更接近于数据包实际离开交换机的时刻,因此在这个点进行标记可以基于最新的网络状态信息(如队列长度、传输速率等)。这有助于更准确地判断是否需要进行拥塞通知。
-
避免不必要的处理延迟:如果在 ingress 或 parse 阶段进行标记,每个进入交换机的数据包都需要经过拥塞检测处理,即使这些数据包可能不会遇到任何拥塞。这可能导致不必要的处理延迟。相比之下,只在出口处处理那些实际可能会引起拥塞的数据包,可以更高效地利用处理资源。
-
拥塞的精确识别和响应:在 egress 阶段,交换机可以根据特定出口的队列情况来判断是否存在拥塞。不同出口可能面临不同的网络条件,因此在 egress 阶段进行标记可以更精确地识别和响应各个出口的拥塞情况。
-
减少跨交换机的标记不一致性:如果在 ingress 阶段进行标记,随着数据包经过网络中的多个交换机,每个交换机都可能基于自身的状态对数据包进行重新标记,导致标记的不一致性。而在 egress 阶段标记可以减少这种不一致性,因为标记是基于数据包即将离开网络的那一点的状态。