技术新讯 > 电子通信装置的制造及其应用技术 > 一种针对PFC死锁的处理方法  >  正文

一种针对PFC死锁的处理方法

  • 国知局
  • 2024-10-09 15:31:08

本发明涉及数据中心网络,具体来说涉及远程直接内存访问,更具体地说,涉及一种针对pfc死锁的处理方法。

背景技术:

1、因为远程直接内存访问(remote direct memory access,简称rdma)具有高吞吐量、低延迟和低cpu开销的特点,其已经成为现代数据中心网络高速传输的事实标准。rdma的一个重要版本是基于聚合以太网的rdma第2版(rdma over converged ethernet v2,简称rocev2),已广泛应用于存储、计算、分布式事务处理和大规模人工智能训练等领域。

2、然而,基于无损以太网的rocev2网络会形成死锁。死锁的形成主要归因于优先级流量控制机制(priority flow control,简称pfc机制)。pfc机制的“优先级”体现为:对于交换机的每一个端口,有硬件实现的多个队列,这些队列分为多个优先级,因此称为“优先级”流控(对于pfc交换机而言,一般为8个优先级队列)。pfc的“流控”体现为,每一个入队列都可以单独暂停其上游设备的对应端口的相同优先级的出队列。死锁是由于这种“下游反压上游”的机制而导致的:当一个环路内的所有交换机的某个优先级入队列都恰好暂停其上游交换机继续向其发送数据时,死锁就会产生。

3、例如,当一个交换机的端口k的第n优先级的入队列的缓冲区(buffer)达到预设的暂停阈值(xoff)时,它会向上游交换机发送暂停帧(pause,其中携带第n优先级的信息),从而要求上游设备停止向端口k的第n优先级的入队列发送数据帧。等到该优先级的入队列的缓冲区的占用量下降到恢复阈值(xon)以下时,数据传输才会恢复。然而,死锁在环形拓扑结构中是容易发生的,尤其是当所有交换机的某个优先级队列的缓冲区都达到暂停阈值并向其上游发送暂停帧时,每个交换机都在等待其下游交换机释放缓冲区资源,从而陷入死锁。

4、死锁对rdma网络的影响是显著的。一旦发生死锁,受影响的交换机将无法在死锁发生的优先级队列上继续传输数据帧,导致网络传输完全停滞,并且严重影响网络的整体性能。此外,陷入死锁的交换机可能会向其他不相关的链路发送暂停帧,进一步扩大影响范围,导致整个网络出现性能问题。

5、未来,随着数据中心规模和复杂性的不断增加,进一步优化rdma和rocev2的性能将成为一个重要的课题。如何在保证高性能的同时,避免死锁对端到端性能的影响,是roce网络技术发展的重要课题。

6、如何解除pfc死锁,当前学术界和工业界有着不同的方案,下面针对一些现有方案进行介绍:

7、(1)链路重置。实践中常用的死锁解除方案是,当控制面通过死锁检测算法检测到死锁时,就会通过重置队列、端口或交换机节点的方式,把死锁环路中对应队列的数据帧丢弃掉。这种方式是简单的,易于使用;但是这对于被丢弃的数据帧所对应的流而言是非常有干扰性的,这既有破坏性,又不优雅。

8、(2)优先丢弃数据量较大的大象流的数据帧。最近提出的方案在可编程数据平面部署一个流大小判别的草图数据结构(sketch结构),会检测每一条流的大小并优先丢弃大象流中的数据帧。这可以使受到丢包影响的流的数目尽可能地少,从而从统计学意义上减轻数据帧丢失的影响,但并不能完全消除这种影响。

9、(3)自适应转发路径。该方案的主要思路是,当检测到出现死锁时,将处于死锁队列中的数据帧的信息通过控制模块重新计算一个新的未发生死锁的转发路径,并将这些数据帧按照新的转发路径转发出去。当其他交换机节点收到这些数据帧时,由于之前并没有关于这些数据帧的转发信息,因此其他交换机也将到控制面(模块)为该数据帧计算新的路径,直到将该数据帧发到目的地。该方案需要逐跳在控制面计算转发路径,因此开销比较大,而且时延比较大;而且由于该方案主要运用了软件定义网络(software definednetwork,简称sdn)的思路,专有性强,主要被运用在私有的网络协议中(如infiniband网络)。另外,自适应转发路径虽不会造成数据帧丢失,但会将数据帧转发到其他链路,从而干扰其他无辜流量。

10、(4)重配置缓冲区大小。学术界也提出了缓冲区重新配置的方式来处理死锁。其核心思路是,当交换机控制面监测到死锁的发生时,它会监控共享缓冲区(shared buffer)的空余大小,并从中寻找一块可用的缓冲区,将这个空间动态地添加到死锁的队列中,队列可用长度变大,因而pfc恢复阈值也变大,因此使得队列触发pfc恢复,死锁因而解开。但是,该方案仍存在以下问题:1)动态的缓冲区重新配置仍需要控制平面的帮助,并可能导致数据帧在芯片缓冲区中丢失;2)缓冲区重新配置要么需要在单个交换机上找到足够大的缓冲区空间以恢复整个环路的流动,要么需要死锁环路上的全部交换机都执行此操作,否则会出现“虽然下游交换机触发了pfc恢复帧给上游,但是上游发不了几个数据帧就会被下游重新暂停”的现象,因而不会解锁成功;3)这个方案会对与死锁队列共享缓冲区的其他队列产生不利影响,它不仅占用了本可由其他队列利用的缓冲区空间,而且经常无法从共享缓冲区中分配足够的空间,因而导致不能100%解锁成功。而且,如果同一交换机节点上承载了多个不同的死锁环路,每个环路都需要一块单独的空闲队列,这会给交换机的缓冲区分配带来压力。此外,从共享缓冲区中拿走可用空间的操作会减小未使用的共享缓冲区的数量,会导致其他队列更容易触发pfc暂停。

11、总的来说,现有技术存在以下问题:

12、丢包方案(链路重置、优先丢弃数据量较大的大象流等)虽然简单,但是它会给数据流带来丢包,从而影响流的性能。

13、基于自适应路由的方案需要在每一跳重新计算路由路径,导致转发性能差。而且该方案会干扰其他流量,一般被应用在专用网络中。

14、基于重配置缓冲区大小的方案需要控制面对缓冲区的重新配置,效率较低;它会占用其他队列可以使用的缓冲区空间,因而影响其他流量。而且,该方案会随着缓冲区(buffer)的不同占用情况而波动,无法保证100%解除死锁;

15、以上的现有技术,要么丢弃死锁环路上的部分或者全部数据帧,对原有数据流的影响较大;要么将死锁环路上的数据帧转发到死锁环路外的其他交换机,对无辜流量的影响较大。

16、需要说明的是:本背景技术仅用于介绍本发明的相关信息,以便于帮助理解本发明的技术方案,但并不意味着相关信息必然是现有技术。相关信息与本发明方案一同提交和公开,在没有证据表明相关信息已在本发明的申请日以前公开的情况下,相关信息不应被视为现有技术。

技术实现思路

1、因此,本发明的目的在于克服上述现有技术的缺陷,提供一种针对pfc死锁的处理方法。

2、本发明的目的是通过以下技术方案实现的:

3、根据本发明的第一方面,提供一种针对pfc死锁的处理方法,包括:当检测到roce网络存在基于pfc的死锁环路时,确定处于所述死锁环路上的多个交换机;为所述多个交换机构建与所述死锁环路相对应的环路转发表,该环路转发表指示死锁环路上的数据帧沿环路转发的路径;利用交换机的净空缓冲区的可用空间和环路转发表,让死锁环路上的数据帧沿环路流动,其中,当任意数据帧沿环路流动至一个交换机时由该交换机按原始转发表确定是否存在将该数据帧转发出环路的机会,若是,则将该数据帧按原始转发表转发出环路,若否,则将该数据帧继续沿环路转发。

4、可选的,所述方法还包括:在死锁环路上的数据帧绕行环路时,所述多个交换机均暂停其上游的交换机将死锁环路以外的数据帧送到该环路内;当死锁环路上的数据帧沿环路流动一圈后,确定死锁是否解开,若是,则将环路转发表无效以恢复常规的转发规则,若否,则让死锁环路上的数据帧再次沿环路流动或者启用其他的死锁解除方式。

5、可选的,所述方法还包括:当每个交换机的数据帧开始沿环路流动前,先在处于队首的数据帧前添加一个屏障数据帧;由交换机设置解锁期间死锁环路上的数据帧的转发方式,其中,将屏障数据帧的转发方式设置为沿环路转发表转发,将非屏障数据帧的转发方式设置为仅能从指定的出环交换机转发出环路,该指定的出环交换机是非屏障数据帧在沿环路流动前离其最近的交换机且该交换机的原始转发表中有让该非屏障数据帧离开死锁环路的端口;当交换机识别到自己发出的屏障数据帧时,暂停将收到屏障数据帧及其之后的数据帧发送到环路上的下游交换机。

6、可选的,当暂停屏障数据帧及其之后的数据帧沿环路流动后,若确定死锁解开,则交换机丢弃屏障数据帧;若死锁未解开且需让死锁环路上的数据帧再次沿环路流动时沿用屏障数据帧。

7、可选的,所述方法还包括:在死锁环路的解锁期间,让死锁环路上的交换机执行解锁期间的缓冲区管理策略,解锁期间的缓冲区管理策略包括:当位于死锁环路上的出队列将一个数据帧按原始转发表转发出环路时,先从该数据帧所对应的入队列的共享缓冲区扣除数据帧的占用空间。

8、可选的,所述让死锁环路上的数据帧沿环路流动的处理包括:由每个交换机维护多个入队列和多个出队列,所述死锁环路上的交换机将死锁环路对应的入队列的净空缓冲区的可用空间作为信用值授予给上游的交换机;由上游的交换机维护下游的交换机赋予的信用值,以向授予信用值的交换机对应的入队列限量发送数据帧,当剩余信用值不足以发送下一个数据帧时暂停发送数据帧,其中,所述维护包括:每发送一个数据帧从信用值中扣除所发送的数据量大小,当再次收到授予的信用值时与剩余信用值进行累加以更新剩余信用值。

9、可选的,确定处于死锁环路中的多个交换机的方式包括:从所述死锁环路中选定交换机作为协调者;由所述协调者按pfc帧的方向往上游的交换机发出第一数据帧,交换机逐个向其上游的交换机发送要求添加交换机自己的全局id的自定义的第一数据帧,其中,协调者发出的第一数据帧插入有协调者自己的全局id;当任意交换机收到第一数据帧时,将自己的全局id按序插入第一数据帧中,得到更新的第一数据帧,并继续按pfc帧的方向将更新的第一数据帧发送给其上游的交换机;当协调者从其上游的交换机收到返回的第一数据帧时,其中记录有死锁环路中多个交换机的按序排列的全局id。

10、可选的,确定处于死锁环路中的多个交换机的方式包括:构建所述环路转发表的方式包括:根据按序排列的全局id和全局id-本地端口映射表,构建环路转发表,环路转发表包括交换机与环路中上游、下游的交换机相连的入端口和出端口。

11、根据本发明的第二方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行所述可执行指令以实现第一方面所述方法的步骤。

本文地址:https://www.jishuxx.com/zhuanli/20241009/308998.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。