pause帧处理流程

部署运行你感兴趣的模型镜像

pause帧处理流程

1、什么是pause帧?

在IEEE802.3协议中规定中,pause帧是一种控制帧,用于控制数据流停止发送,在MAC 发送侧产生,在MAC接收侧解析并执行。当此端设备输入数据量过大,无法及时处理时会在此端发送侧MAC产生pause帧,发给对端,要求对端在一定时间内停止发送数据。

详细pause帧格式参加地址:MAC学习-基础知识002 pause报文格式

2、pause帧处理过程?

如图所示,左侧为本端芯片,右侧为对端芯片。MAC0和MAC1都包含发送侧tx和接收侧rx。左侧芯片内部mac上游模块A与mac0发送侧有流控信号fc_rdy。fc_rdy信号为1表示模块A无法及时处理输入数据,需要进行流控。为了方便突出重点,图中省略了PCS以及serdes等模块。

​​​​​​​在这里插入图片描述

流程处理如下:

1~2步:对端mac1发送数据给mac0接收侧,数据经过MAC0 Rx 进入下游模块A

3步:下游模块A无法及时处理输入的数据,需要减少数据输入,从而将fc_rdy拉高。

4步:mac0 tx侧发现流控信号fc_rdy为高,则需要产生pause帧发送给mac1接收侧。只要fc_rdy为高,mac0发送侧tx每隔一段时间发送一个pause帧,间隔时间由配置寄存器控制。间隔时长计算由计数器counting计算。Pause帧内停止发送数据的时间由另外一个配置寄存器控制。只要fc_rdy为高期间,mac0 TX侧每间隔一段时间发送一个Pause帧,其他时间按需发送数据等其他报文。Pause帧的发送不能打断正在传输的数据帧。

5步:mac1接收侧rx接受到pause报文后,提取pause帧内包含的暂停时间,产生流控信号fc通知MAC发送侧上游模块module B停止发送数据

678:mac1 TX侧在在暂停时间内,停止发送数据。MAC0 TX侧可能会发起多个Pause帧。一旦模块A处理完之前的数据后将fc_rdy拉低,则进入第9步。

9:步:第9步分2种情况。

情况1:fc_rdy拉低,并且counting在计数没有到一个间隔周期,此时发送pause帧,但是帧内暂停时间为0. Mac1接受到pause帧后,控制tx控制立即开始发送数据。

情况2:fc_rdy拉低的同时,counting正好计数到一个间隔周期,此时不发送pause帧。等到上一个pause帧的暂停时间到达后,mac1发送侧tx继续发送数据。

3、pause帧处理协议强制要求:

  1. pause的产生发送过程不能中断一个完整的数据报文。即在第4步中,fc_rdy拉高后,首先mac0 tx侧需要判断当前是否正常数据报文在传输。如果有,则需要在当前数据报文传输完成后才能发送pause帧。也就是说在发送过程中,只能在完整数据报文的间隙插入pause帧。

  2. 新的pause报文暂停时间会覆盖上一个暂停时间。对mac1来说,当mac1接收到新的pause帧后,暂停时间以最新时间为准。
    ————————————————
    版权声明:本文为优快云博主「IC小鸽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.youkuaiyun.com/icxiaoge/article/details/87901654

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think> 我们正在讨论的是以太网流量控制机制中的PausePause是IEEE 802.3x标准中定义的一种流量控制,用于在以太网中实现流量控制。 当接收端交换机或设备因为拥塞而无法及时处理到达的流量时,它可以向发送端发送一个Pause,请求发送端暂停发送数据一段时间。 这样,接收端就有时间处理积压的数据,从而避免丢包。 作用: 1. 避免拥塞:当接收端缓冲区即将填满时,通过发送Pause,可以暂时停止对端的发送,防止缓冲区溢出导致丢包。 2. 零丢包:在需要无丢包的网络环境中(如存储网络),Pause可以确保数据不被丢弃。 3. 流控:用于点对点的链路,使得接收端能够控制发送端的速率,实现简单的流控。 但是,Pause也有一些缺点: - 它是针对整个链路的,即一旦发送Pause,发送端将暂停发送所有数据(包括高优先级流量),这可能导致不必要的中断。 - 在复杂网络拓扑中,可能造成流控传递,影响其他流量的传输。 因此,后来发展出了更细粒度的流量控制机制,如基于优先级的流控(PFC,IEEE 802.1Qbb),它可以针对不同的优先级队列分别进行暂停。 配置示例(以华为交换机为例): 在端口上启用流量控制(即允许发送和响应Pause): ```bash interface GigabitEthernet 0/0/1 flow-control # 开启流量控制 ``` 当接收端检测到拥塞时,会自动发送Pause。发送端收到Pause后,会暂停发送数据(除了MAC控制以外的所有)指定的时间(由Pause中的暂停时间参数决定)。 注意:Pause只对单条链路有效,不能跨设备。 观察方法: 可以使用抓包工具(如Wireshark)在链路上捕获Pause。在交换机上也可以通过显示接口统计信息查看: ```bash display interface GigabitEthernet 0/0/1 ``` 在输出中,可以查看是否有发送或接收Pause计数。 示例输出片段: ``` Last 5 seconds input rate: 0 bits/sec, 0 packets/sec Last 5 seconds output rate: 0 bits/sec, 0 packets/sec Input: 0 packets, 0 bytes 0 unicasts, 0 broadcasts, 0 multicasts, 0 pauses Output: 0 packets, 0 bytes 0 unicasts, 0 broadcasts, 0 multicasts, 0 pauses ``` 其中,“pauses”就是Pause的计数。 使用场景: 1. 数据中心网络中,为了避免TCP全局同步(TCP Incast问题),可能会使用PFC(优先流控)来保证无丢包。 2. 在传统以太网中,当链路一端是高速端口而另一端是低速端口时,流量控制可以防止低速端被淹没。 注意事项: - 如果两端都启用了流量控制(flow-control),则两端都可以发送和响应Pause- 如果只有一端启用,则只能单向流控。 因此,向交换机端口发送Pause的作用是:请求该链路的对端设备暂停发送数据一段时间,以避免本端缓冲区溢出而丢包。 §§相关问题§§ 1. 在启用流量控制时,Pause是如何携带暂停时间参数的? 2. PFC(基于优先级的流量控制)与普通的Pause有什么主要区别? 3. 当交换机收到Pause后,会暂停发送哪些类型的? 4. 在什么情况下Pause可能导致网络性能下降? 5. 如何通过命令行检查华为交换机端口上的Pause收发统计? </think> ### Pause在交换机端口的作用分析 #### 🛑 Pause的核心功能 Pause是IEEE 802.3x标准定义的**流量控制**,当交换机端口接收Pause时: ```mermaid graph LR A[接收端检测拥塞] --> B[发送Pause] B --> C[发送端暂停传输] C --> D[接收端清空缓冲区] D --> E[恢复传输] ``` #### 🔧 技术实现机制 1. **结构关键字段**: ```python class PauseFrame: def __init__(self): self.dest_mac = "01-80-C2-00-00-01" # 组播地址 self.opcode = 0x0001 # 暂停操作码 self.pause_time = 65535 # 暂停时长(512ns单位) ``` 2. **工作流程**: ```bash # 当接收端缓冲区达到阈值时 if buffer_usage > 80%: send_pause_frame(pause_time=0xFFFF) # 发送最大暂停时间 # 发送端响应: stop_transmitting(except_control_frames) # 停止数据发送 start_timer(pause_time) # 启动暂停计时器 ``` #### ⚠️ 使用注意事项 | 场景 | 优点 | 缺点 | |------|------|------| | **短时突发流量** | 避免尾部丢弃 | 引起全局暂停 | | **异构速率设备** | 防止低速端过载 | 降低链路利用率 | | **存储网络** | 实现零丢包 | 增加传输延迟 | 1. **典型配置**(华为交换机): ```bash # 启用流量控制(自动响应Pause) interface GigabitEthernet 0/0/1 flow-control enable ``` 2. **风险规避**: - 避免在RDMA/RoCE环境使用(应改用PFC) - 禁止跨网络边界传输(配置边界端口隔离): ```bash mac-address static 0180-c200-0001 interface null0 drop ``` #### 📊 观测与诊断 1. **统计查看命令**: ```bash display interface GigabitEthernet 0/0/1 # 关键输出项: # Input: ... X pause frames # Output: ... Y pause frames ``` 2. **流量分析**: - 使用Wireshark过滤:`eth.dst == 01:80:c2:00:00:01` - 异常场景:持续高频率Pause(>1000/秒)表明拥塞失控 > ⚠️ **慎用建议**:现代数据中心网络推荐使用**基于优先级的流量控制(PFC)** 替代全局Pause机制,实现更精细的流控。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值