FIBERIOT / 基础知识
交换机端口灯亮着,为什么应用仍会偶尔丢包?很多人第一反应是更换网线或提高带宽,但真正的原因可能是某个出口瞬间来不及发送。流控就是设备在“快要接不住”时发出的一种暂停请求。本文从数据进入端口、缓冲队列、暂停帧字段到工业现场验收,说明它能解决什么,不能解决什么。
原理图可点击查看原图;手机端可横向滑动查看清晰标注。

01先把“拥堵”想成一个出口排队问题
交换机并不是收到一帧就立刻送出。它先读取帧头,查找目标MAC对应的出口,再把帧交给出口发送器。如果多个入口同时把数据送向同一个较慢的出口,出口前的缓存就像只有一个闸门的车道:入口还在来,出口却只能按自己的速度放行。
这种短时间集中到达叫微突发。平均利用率不高,也可能出现瞬时排队。缓存满后,新到的帧只能丢弃。流控的目标是给相邻设备争取一点排空时间,而不是把一条链路变快。
把它与“加大带宽”区分开:带宽是道路宽度,流控是车辆已经排队时的临时放行规则。道路本身有故障、光模块不匹配、双工协商错误时,暂停帧不能替代维修。它只在发送端和接收端都能理解该控制方式、并且链路处于全双工时,才有机会发挥作用。
因此,看到暂停帧时不要只问“要不要关掉它”,而要问“哪个出口先满、谁在请求暂停、暂停是否沿着预期方向传播、控制业务是否受影响”。这四个问题比单独修改一个勾选框更容易找到真正原因。
原理图可点击查看原图;手机端可横向滑动查看清晰标注。

02802.3x暂停帧怎样让相邻设备暂缓发送
在全双工以太网中,接收端B发现自己的接收缓存达到设定压力,会向发送端A发一个特殊的MAC控制帧。它不是普通业务数据,Type字段为0x8808,暂停操作码为0x0001,还带有暂停时间值。A的MAC识别后,暂时停止向B发送新的业务帧,已经在链路上的帧仍按协议完成传输。
暂停时间不是“休息几秒”的口语命令,而是用固定时间量表达的计数值,设备内部按自己的时钟逐步递减。时间到后A恢复发送;如果B仍然拥塞,可能再次发送暂停帧。具体是否启用、计时单位和统计方式必须以设备芯片及固件说明为准,不能把一台设备的界面名称套到所有交换机上。
暂停帧只影响相邻全双工链路,并不会替所有下游设备做端到端调度。它也不会改变IP地址、重排应用消息或修复坏光纤。对端不支持或关闭接收流控时,发送端可能忽略这类请求。
抓包时不要只看帧的颜色或软件名称。应确认目的地址、类型字段、操作码和暂停时间是否被正确解码,再把抓包时间与交换机端口的接收、发送和丢弃计数对齐。不同厂商可能把计数器命名为流控帧、暂停帧或MAC控制帧,名称不同不代表机制不同。
原理图可点击查看原图;手机端可横向滑动查看清晰标注。

03流控开启后,工业网络哪里会变化
在典型拓扑中,PLC、摄像机和上联设备同时发送,交换机B某个出口出现排队。B发暂停帧给直接相连的A,A暂缓该方向的新帧;其他没有拥塞的端口仍可工作。若A的发送队列也被占满,暂停会向更上游传播,形成“背压”。这能减少瞬时丢帧,却可能让控制消息等待更久。
因此,流控不是越多越好。对周期性控制、报警和视频混合的网络,应先确认优先级、队列和端口速率,再决定是否启用。飞畅官网工业网管交换机资料列出端口流量控制、广播风暴抑制、端口统计、VLAN和端口镜像等管理功能;这些能力有助于观察和限制流量,但具体是否支持某种暂停帧模式仍须查对应型号手册。
如果暂停从一台交换机传到另一台交换机,现场人员应画出每一跳的方向。一个端口的接收压力可能让上一跳放慢,却不会自动通知几跳之外的PLC。链路层流控和应用层重试、控制器周期是不同层次的问题,混在一起会误判故障。
实际设备的缓存位于端口、交换芯片或上行发送队列中的哪一层,取决于芯片和固件设计。文章中的“B缓存”是帮助理解的简化称呼,不代表所有型号都有同样的阈值或同样的告警。查手册时应找流控开关、接收暂停、发送暂停、队列丢弃和统计清零等明确项目。
流控与广播风暴抑制也不是同一件事。风暴抑制通常按一段时间内的广播、组播或未知单播流量进行限制;暂停帧是接收端向相邻发送端提出暂缓请求。两者可以同时存在,但一个不能替代另一个。现场出现大量广播时,应先找出源头和VLAN范围。
光纤上联的存在不会改变上述逻辑。双工LC SFP把电信号变成光信号并在对端还原,交换芯片仍按端口队列和MAC控制帧处理;只要两端能力和配置一致,排障时仍可从端口计数、抓包和拓扑方向入手。
原理图可点击查看原图;手机端可横向滑动查看清晰标注。

04不用公式也能完成现场排障
第一步看端口速率、双工和光电介质是否一致;第二步看出口丢弃、队列、暂停帧收发计数是否在同一时间变化;第三步用端口镜像或抓包确认帧的方向和字段。若只看到暂停帧增加而没有丢包,说明设备正在用时间换空间;若暂停帧很多且控制响应变慢,应继续查谁在持续制造突发流量。
排障时把业务分成三类:必须及时到达的控制消息、可以等待的监控流量、可以重传的普通数据。不要在运行产线时随意关闭流控或拔线做“试验”。在批准窗口内分别记录开启和关闭时的端口计数、应用响应和恢复结果,并保留配置版本。
验收记录不需要复杂公式,但要有前后对照:同一端口、同一业务、同一时间窗口内,暂停帧计数、输出丢弃、队列变化和应用告警分别是多少。若恢复后计数仍持续增长,应继续寻找突发源、速率不匹配或下游处理瓶颈,而不是把“开启流控”当作根治结论。
“暂停”并不等于“丢包已经消失”。它可能把丢弃从接收端推迟到发送端,也可能让上游队列越来越长。对实时控制业务,延迟和抖动同样需要关注;对可重传的监控数据,少量等待可能比重复发送更合适。最终选择要以业务验收目标为准。
记录完整证据,后续复盘才不会只剩一句“网络偶发丢包”。
参考资料:RFC 826:以太网地址解析协议;飞畅对应工业交换机资料。原理图为原创示意,非产品内部实拍或实测。


