一种基于环路的PFC死锁的处理方法及装置与流程

文档序号:28625504发布日期:2022-01-22 14:35阅读:268来源:国知局
一种基于环路的PFC死锁的处理方法及装置与流程
一种基于环路的pfc死锁的处理方法及装置
技术领域
1.本发明涉及通信技术领域,尤指一种基于优先级的流控控制(priority-based flow control,pfc)死锁的处理方法及装置。


背景技术:

2.数据中心网络通常会存在多种不同类型的报文流,其出现网络拥塞的原因可能只是其中一种类型的报文流导致的,但普通的流控功能是通过发送pause帧使线路上的所有流量暂停发送一段时间,来缓解拥塞现象;而普通流控功能是无法将不同类型报文流区分出来,其会使整条链路上所有类型的报文流都停流,影响面比较广,特别是对网络中延迟敏感的高性能计算流产生比较大的影响,因此,普通的流控功能无法满足数据中心网络的需要。
3.而pfc可以利用报文的vlan tag中的802.1p优先级字段来区分报文流的类型,其在链路上创建8条虚拟通道,为每个虚拟通道分配一个优先级,接收报文时就送入对应优先级的虚拟通道中,任意一个通道都可以单独地暂停和恢复数据发送。当虚拟通道出现拥塞时,通过其分配的优先级就可以检测是哪些优先级的报文流导致拥塞,进而通过发送pfc流控帧来暂停导致拥塞的报文流的发送。
4.然而,当服务器发出的报文流在网络中存在环路的情况,如图1所示:报文流依次经过设备1、设备4、设备3、设备5后,再回到设备1;这种情况下则会导致pfc死锁(pfc deadlock),具体参考图2,当设备3检测到某一优先级报文流对应的逻辑通道已使用的缓存达到预设的拥塞水线时,则触发设备3发出pfc pause帧,用于通知上游设备(设备4)限速(停止发包);设备4收到pfc pause帧,停止发包;由于设备4停止发包但收报还在继续,因此设备4中该报文流对应的缓存又达到了预设的拥塞水线,同样触发pfc pause帧给设备1;设备1同理触发pfc pause帧给设备5,设备5触发pfc pause帧给设备3;至此将出现环路的所有的设备都触发了pfc pause帧,均停止流量的发送;从而导致pfc deadlock。
5.当环路出现pfc deadlock后,设备可以按照预设的pfc deadlock策略处理积压在缓存对应队列中的报文,例如可以选择转发或丢弃,然而pfc deadlock仅能释放当前优先级对应的队列缓存,来解除破除pfc死锁。而要破除环路的死锁原理在于:给整个环路释放一定的空间,让所有交换机的缓存占用降低至拥塞水线以下,以此解除环路上的pfc抑制。然而在环路设备较多的环境下,每台设备按照预设pfc deadlock策略进行一次缓存空间释放并不足以将整个环路上的缓存均降低至拥塞水线之下,那么必然无法解除死锁,并且极大可能在短时间内会再次触发pfc deadlock,再次执行对应的逻辑,进而报文造成长时间无法恢复正常。


技术实现要素:

6.本发明实施例提供一种基于环路的pfc死锁处理方法及装置,用以解决现有技术中数据中心网络环路出现pfc死锁时,恢复较慢甚至无法恢复的问题。
7.根据本发明实施例,提供一种基于环路的pfc死锁的处理方法,所述方法应用于数据中心网络中的网络设备,包括:
8.按照预设周期检测所述网络设备的端口是否发生pfc死锁;
9.当检测到第一端口发生pfc死锁时,启动第一定时器,并按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁;
10.所述第一定时器到时,获取所述第一端口的pfc死锁状态;
11.当所述第一端口的pfc死锁状态未解除,则重置所述第一定时器并启动,继续执行按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁的步骤。
12.进一步地,在获取所述第一端口的pfc死锁状态之后,所述方法,还包括:
13.当所述第一端口的pfc死锁状态解除,结束pfc死锁的恢复动作,并继续按照预设周期检测所述网络设备的端口是否发生pfc死锁。
14.其中,所述按照预设的pfc死锁策略进行pfc死锁的恢复动作,包括:
15.按照预设的pfc死锁策略,清空发生拥塞的报文队列中的报文;
16.停止向上游设备发送pfc pause帧,所述pfc pause帧用于告知上游设备在预设时长内停止向所述网络设备发送报文。
17.其中,所述获取所述第一端口的pfc死锁状态,包括:
18.判断所述第一端口是否接收到下游设备发来的pfc pause帧;
19.当接收到下游设备发来的pfc pause帧,则重置第二定时器并启动,将所述pfc帧对应的所述第一端口的报文队列进行pfc抑制,所述第一端口的pfc死锁状态未解除;
20.当所述第二定时器到时仍未接收到下游设备发来的pfc pause帧,则解除所述pfc帧对应的所述第一端口的报文队列的pfc抑制,所述第一端口的pfc死锁状态解除。
21.根据本发明实施例,还提供一种基于环路的pfc死锁的处理装置,所述装置应用于数据中心网络中的网络设备,包括:检测单元、处理单元以及获取单元;
22.所述检测单元,用于按照预设周期检测所述网络设备的端口是否发生pfc死锁;
23.所述处理单元,用于当所述检测单元检测到第一端口发生pfc死锁时,启动第一定时器,并按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁;
24.所述获取单元,用于所述第一定时器到时,获取所述第一端口的pfc死锁状态;
25.所述处理单元,还用于当所述第一端口的pfc死锁状态未解除,则重置所述第一定时器并启动,继续执行按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁。
26.进一步地,所述处理单元,还用于当所述第一端口的pfc死锁状态解除,结束pfc死锁的恢复动作;
27.所述检测单元,还用于当所述第一端口的pfc死锁状态解除,继续按照预设周期检测所述网络设备的端口是否发生pfc死锁。
28.其中,所述处理单元,用于按照预设的pfc死锁策略进行pfc死锁的恢复动作时,具体为:按照预设的pfc死锁策略,清空发生拥塞的报文队列中的报文;停止向上游设备发送pfc pause帧,所述pfc pause帧用于告知上游设备在预设时长内停止向所述网络设备发送报文。
29.其中,所述获取单元,用于获取所述第一端口的pfc死锁状态时,具体为:
30.判断所述第一端口是否接收到下游设备发来的pfc pause帧;
31.当接收到下游设备发来的pfc pause帧,则重置第二定时器并启动,将所述pfc帧对应的所述第一端口的报文队列进行pfc抑制,所述第一端口的pfc死锁状态未解除;
32.当所述第二定时器到时仍未接收到下游设备发来的pfc pause帧,则解除所述pfc帧对应的所述第一端口的报文队列的pfc抑制,所述第一端口的pfc死锁状态解除。
33.根据本发明实施例,还提供一种电子设备,所述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
34.存储器,用于存放计算机程序;
35.处理器,用于执行存储器上所存储的程序时,实现上述的方法步骤。
36.根据本发明实施例,还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
37.本发明有益效果如下:
38.本发明实施例提供的基于环路的pfc死锁的处理方法及装置,网络设备通过按照预设周期检测网络设备的端口是否发生pfc死锁;当检测到第一端口发生pfc死锁时,启动第一定时器,并按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁;所述第一定时器到时,获取所述第一端口的pfc死锁状态;当所述第一端口的pfc死锁状态未解除,则重置所述第一定时器并启动,继续执行按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁的步骤。本发明实施例中,网络设备开始执行恢复动作后,按照第一定时器周期性获取第一端口的pfc死锁状态,只要当获取到的第一端口的pfc死锁状态未解除,则会继续执行所述恢复动作并继续周期性获取第一端口的pfc死锁装置,直至pfc死锁解除,如此并不需要通过再次检测网络设备的端口是否发生pfc死锁进而确定是否再次执行恢复动作,免除了pfc死锁检测的耗时,能够快速实现pfc死锁的恢复,保证网络服务的连续性。
附图说明
39.图1为数据中心网络中环路的网络拓扑示意图;
40.图2为数据中心网络中环路出现拥塞的网络拓扑示意图;
41.图3为本发明实施例中基于环路的pfc死锁的处理方法的流程图;
42.图4为本发明实施例中基于环路的pfc死锁的处理装置的结构示意图;
43.图5为本技术示出的一种电子设备的结构示意图。
具体实施方式
44.针对现有技术中存在的数据中心网络环路出现pfc死锁时,恢复较慢甚至无法恢复的的问题,本发明实施例提供的基于环路的pfc死锁处理方法,首先在检测到第一端口发生pfc死锁时,启动第一定时器,并按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁;所述第一定时器到时,获取所述第一端口的pfc死锁状态;当所述第一端口的pfc死锁状态未解除,则重置所述第一定时器并启动,继续执行按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁的步骤。本发明方法的流程如图3所示,应用于数据中心网络的网络设备中,执行步骤如下:
45.步骤301,按照预设周期检测网络设备的端口是否发生pfc死锁;
46.步骤302,当检测到第一端口发生pfc死锁时,启动第一定时器,并按照预设pfc死
锁策略进行pfc死锁的恢复动作以解除pfc死锁;
47.步骤303,所述第一定时器到时,获取所述第一端口的pfc死锁状态;
48.步骤304,当所述第一端口的pfc死锁状态未解除,则重置所述第一定时器并启动,继续执行按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁的步骤。
49.其中,在获取所述第一端口的pfc死锁状态之后,所述方法,还包括:
50.当所述第一端口的pfc死锁状态解除,结束pfc死锁的恢复动作,并继续按照预设周期检测所述网络设备的端口是否发生pfc死锁。
51.可选地,所述按照预设的pfc死锁策略进行pfc死锁的恢复动作,包括:
52.按照预设的pfc死锁策略,清空发生拥塞的报文队列中的报文;这里,可以将报文按照配置的规则进行转发或者直接丢弃;
53.停止向上游设备发送pfc pause帧,所述pfc pause帧用于告知上游设备在预设时长内停止向该网络设备发送报文。这里,当网络设备的报文队列发生拥塞时,会向上游设备发送pfc pause帧以告知上游设备在一定时长内不要再继续向自身发送报文,因此,当所述报文队列的报文清空后,即报文队列不再拥塞,此时需要停止向上游设备发送pfc pause帧,上游设备可继续向网络设备进行报文发送。其中,所述预设时长的数值会携带在pfc pause帧中,当网络设备接收到该pfc pause帧后,会解析得到该预设时长的数值。
54.可选地,所述获取所述第一端口的pfc死锁状态,包括:
55.判断所述第一端口是否接收到下游设备发来的pfc pause帧;
56.当接收到下游设备发来的pfc pause帧,则重置第二定时器并启动,将所述pfc帧对应的所述第一端口的报文队列进行pfc抑制,所述第一端口的pfc死锁状态未解除;这里,对报文队列进行pfc抑制可以理解为该端口的状态为xoff状态,该种状态下表征该端口的pfc的抑制流量转发的功能开启。所述第二定时器的时长可以所述pfc pause帧中携带的预设时长的数值进行设定。
57.当第二定时器到时仍未接收到下游设备发来的pfc pause帧,则解除所述pfc帧对应的所述第一端口的报文队列的pfc抑制,所述第一端口的pfc死锁状态解除。这里,每次接收到下游设备发来的pfc pause帧时,就会将正在计时的第二定时器进行重置,回到第二定时器刚开始启动的状态然后启动,即每次收到下游设备发来的pfc pause帧时则重启第二定时器;因此,当第二定时器到时则说明在第二定时器计时时长内一直未接收到下游设备发来的pfc pause帧来进行重启。
58.这里,当未接收到下游设备发来的pfc pause帧,则说明下游设备的拥塞解除,则本网络设备可继续向下游设备发送报文,则自身的拥塞随之解除,则本网络设备也会停止向上游设备发送pfc pause帧,以此类推,整个环路的拥塞随之解除。
59.基于同一发明构思,本发明实施例提供一种基于环路的pfc死锁的处理装置,该装置可以应用于数据中心网络中的网络设备,结构如图4所示,包括:检测单元41、处理单元42以及获取单元43;
60.所述检测单元41,用于按照预设周期检测网络设备的端口是否发生pfc死锁;
61.所述处理单元42,用于当所述检测单元41检测到第一端口发生pfc死锁时,启动第一定时器,并按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁;
62.所述获取单元43,用于所述第一定时器到时,获取所述第一端口的pfc死锁状态;
63.所述处理单元42,还用于当所述第一端口的pfc死锁状态未解除,则重置所述第一定时器并启动,继续执行按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁。
64.其中,所述处理单元42,还用于当所述第一端口的pfc死锁状态解除,结束pfc死锁的恢复动作;
65.相应地,所述检测单元41,还用于当所述第一端口的pfc死锁状态解除,继续按照预设周期检测所述网络设备的端口是否发生pfc死锁。
66.其中,所述处理单元42,用于按照预设的pfc死锁策略进行pfc死锁的恢复动作时,具体为:按照预设的pfc死锁策略,清空发生拥塞的报文队列中的报文;停止向上游设备发送pfc pause帧,所述pfc pause帧用于告知上游设备在预设时长内停止向所述网络设备发送报文。这里,当自身的报文队列发生拥塞时,会向上游设备发送pfc pause帧以告知上游设备在一定时长内不要再继续向自身发送报文,因此,当所述报文队列的报文清空后,即报文队列不再拥塞,此时需要停止向上游设备发送pfc pause帧,上游设备可继续向网络设备进行报文发送。其中,所述预设时长的数值会携带在pfc pause帧中,当网络设备接收到该pfc pause帧后,会解析得到该预设时长的数值。
67.可选地,所述获取单元43,用于获取所述第一端口的pfc死锁状态时,具体为:
68.判断所述第一端口是否接收到下游设备发来的pfc pause帧;
69.当接收到下游设备发来的pfc pause帧,则重置第二定时器并启动,将所述pfc帧对应的所述第一端口的报文队列进行pfc抑制,所述第一端口的pfc死锁状态未解除;这里,对报文队列进行pfc抑制可以理解为该端口的状态为xoff状态,该种状态下表征该端口的pfc的抑制流量转发的功能开启。所述第二定时器的时长可以所述pfc pause帧中携带的预设时长的数值进行设定。
70.当所述第二定时器到时仍未接收到下游设备发来的pfc pause帧,则解除所述pfc帧对应的所述第一端口的报文队列的pfc抑制,所述第一端口的pfc死锁状态解除。这里,每次接收到下游设备发来的pfc pause帧时,就会将正在计时的第二定时器进行重置,回到第二定时器刚开始启动的状态然后启动,即每次收到下游设备发来的pfc pause帧时则重启第二定时器;因此,当第二定时器到时则说明在第二定时器计时时长内一直未接收到下游设备发来的pfc pause帧来进行重启。
71.这里,当未接收到下游设备发来的pfc pause帧,则说明下游设备的拥塞解除,则本网络设备可继续向下游设备发送报文,则自身的拥塞随之解除,则本网络设备也会停止向上游设备发送pfc pause帧,以此类推,整个环路的拥塞随之解除。
72.应当理解,本发明实施例提供的基于环路的pfc死锁的处理装置实现原理及过程与上述图3及所示的实施例类似,在此不再赘述。
73.本发明实施例提供的基于环路的pfc死锁的处理方法及装置,网络设备通过按照预设周期检测网络设备的端口是否发生pfc死锁;当检测到第一端口发生pfc死锁时,启动第一定时器,并按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁;所述第一定时器到时,获取所述第一端口的pfc死锁状态;当所述第一端口的pfc死锁状态未解除,则重置所述第一定时器并启动,继续执行按照预设pfc死锁策略进行pfc死锁的恢复动作以解除pfc死锁的步骤。本发明实施例中,网络设备开始执行恢复动作后,按照第一定时器周期性获取第一端口的pfc死锁状态,只要当获取到的第一端口的pfc死锁状态未解除,则会继续
执行所述恢复动作并继续周期性获取第一端口的pfc死锁装置,直至pfc死锁解除,如此并不需要通过再次检测自身端口是否发生pfc死锁进而确定是否再次执行恢复动作,免除了pfc死锁检测的耗时,能够快速实现pfc死锁的恢复,保证网络服务的连续性。
74.应当理解,非环路场景,如单个设备故障导致报文发送异常,从而出现pfc死锁的场景,也可以使用上述技术方案解决,通过死锁解除判定,来判定链路拥塞是否已经解除,从而迅速的一次性的解决异常的拥塞环境。
75.本技术实施例还提供了一种电子设备,请参见图5所示,包括处理器510、通信接口520、存储器530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。
76.存储器530,用于存放计算机程序;
77.处理器510,用于执行存储器530上所存放的程序时,实现上述实施例中任一所述的基于环路的pfc死锁的处理方法。
78.通信接口520用于上述电子设备与其他设备之间的通信。
79.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
80.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
81.该方案中,网络设备开始执行恢复动作后,按照第一定时器周期性获取第一端口的pfc死锁状态,只要当获取到的第一端口的pfc死锁状态未解除,则会继续执行所述恢复动作并继续周期性获取第一端口的pfc死锁装置,直至pfc死锁解除,如此并不需要通过再次检测自身端口是否发生pfc死锁进而确定是否再次执行恢复动作,免除了pfc死锁检测的耗时,能够快速实现pfc死锁的恢复,保证网络服务的连续性。
82.相应地,本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的基于环路的pfc死锁的处理方法。
83.该方案中,网络设备开始执行恢复动作后,按照第一定时器周期性获取第一端口的pfc死锁状态,只要当获取到的第一端口的pfc死锁状态未解除,则会继续执行所述恢复动作并继续周期性获取第一端口的pfc死锁装置,直至pfc死锁解除,如此并不需要通过再次检测自身端口是否发生pfc死锁进而确定是否再次执行恢复动作,免除了pfc死锁检测的耗时,能够快速实现pfc死锁的恢复,保证网络服务的连续性。
84.本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
85.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品
可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
86.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
87.另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202、203等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
88.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
89.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
90.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
91.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
92.尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
93.显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1