CN113328959B - 一种报文转发方法、装置、电子设备及存储介质 - Google Patents
一种报文转发方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113328959B CN113328959B CN202110391876.3A CN202110391876A CN113328959B CN 113328959 B CN113328959 B CN 113328959B CN 202110391876 A CN202110391876 A CN 202110391876A CN 113328959 B CN113328959 B CN 113328959B
- Authority
- CN
- China
- Prior art keywords
- message
- pointer
- serial number
- packet
- timestamp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7814—Specially adapted for real time processing, e.g. comprising hardware timers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
- H04L47/562—Attaching a time tag to queues
Abstract
本申请提供一种报文转发方法、装置、电子设备及存储介质。该方法应用于Leaf‑Spine网络中的任一Leaf节点,该Leaf节点不再使用成本较高的Crossbar芯片,而是使用成本较低的硬件芯片,且执行全新的报文转发流程,来完成用户设备侧的数据报文的转发操作,从而降低了网络部署成本。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种报文转发方法、装置、电子设备及存储介质。
背景技术
在数据中心网络中,尤其是在一种叶脊(Leaf-Spine)网络架构中,将框式交换设备中的网板中的Crossbar芯片独立做成Fabric-Switch设备并作为Leaf-Spine网络架构中的脊柱(Spine)节点,将框式交换设备中的接口板独立做成Service-Switch设备并作为叶子(Leaf)节点,从而在Leaf节点和Spine节点之间使用框式交换设备转发数据报文的方式转发来自用户设备的数据报文,以实现Leaf节点和Spine节点之间的链路的均衡分担。
具体地,对于接收到来自用户设备的数据报文的Leaf节点而言,它将该数据报文按照固定长度进行分片后,基于信元,采用轮询该Leaf节点与其连接的所有Spine节点之间的链路的方式向需要将该数据报文转发到目的用户设备的目的Leaf节点转发分片报文;后续目的Leaf节点接收到这些分片报文之后,再按照一定的排序算法对这些分片报文进行排序组合之后再转发出去。
但是,在这种数据报文的转发流程中,由于Crossbar芯片仅个别芯片厂家销售,价格通常较高,进而导致网络部署成本较高。
发明内容
为克服相关技术中存在的问题,本申请提供了一种报文转发方法、装置、电子设备及存储介质。
根据本申请实施例的第一方面,提供一种报文转发方法,所述方法应用于Leaf节点中的硬件芯片,所述方法包括:
启动等待定时器;
在所述等待定时器的计时时长内等待接收所述Leaf节点所属网络中的任一其他Leaf节点中的硬件芯片转发的数据报文;
若接收到该其他Leaf节点中的硬件芯片转发的所述数据报文,则判断所述数据报文中携带的起始标志位是否用于表征所述数据报文为起始报文,其中,所述数据报文为该其他Leaf节点中的硬件芯片通过轮询到的该其他Leaf节点与其连接的所有Spine节点之间的一条链路转发给所述Leaf节点中的硬件芯片的,且还携带有所述其他Leaf节点中的硬件芯片转发所述数据报文时分配的第一报文序列号和所述其他Leaf节点中的硬件芯片转发所述数据报文时的第一时间戳;
在判断出所述起始标志位用于表征所述数据报文为起始报文时,将环形链表中的起始指针、结尾指针和中间指针指向记录到所述环形链表中的所述第一报文序列号,其中,所述起始指针、结尾指针和中间指针初始时均指向预设的第一初始值,且所述起始指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最大报文序列号,所述结尾指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最小报文序列号,所述中间指针指向的序列号用于表征所述Leaf尚未收到且携带的报文序列号为所述最大报文序列号与所述最小报文序列号之间的最小报文序列号的数据报文中携带的报文序列号;
将用于记录所述Leaf节点即将转发的数据报文中携带的第二时间戳和用于记录所述Leaf节点收到且未转发的携带的报文序列号最大的数据报文中携带的第三时间戳均由预设的第二初始值更改为所述第一时间戳,并将所述等待定时器重新计时;
将随机存取存储器(Random Access Memory,RAM)表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项,其中,更新后的有效缓存表项中记录有用于缓存所述数据报文的地址信息和所述第一时间戳;
根据更新后的缓存表项中的地址信息,转发所述数据报文;
将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号,其中,所述第二报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号累加1后得到的报文序列号,所述第三报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号减1后得到的报文序列号;
判断所述RAM表中所述中间指针指向的第二报文序列号对应的缓存表项是否为有效缓存表项,在判断结果为是时,将所述第二时间戳赋为所述第二报文序列号对应的缓存表项中的时间戳,根据所述第二报文序列号对应的缓存表项中的地址信息,转发对应的数据报文,并将所述等待定时器重新计时;在判断结果为否时,判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值;
在判断出所述差值大于所述设定阈值时,执行将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号的步骤;
在判断出所述差值不大于所述设定阈值时,执行判断是否在等待定时器的时长内接收到其他Leaf节点通过Spine节点发送的数据报文的步骤;
在判断出所述起始标志位用于表征所述数据报文为非起始报文时,判断所述结尾指针和所述中间指针是否均未指向所述预设的第一初始值;
在判断出所述结尾指针和所述中间指针均未指向所述预设的第一初始值时,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时;
判断所述第一报文序列号是否大于所述起始指针指向的报文序列号;
在判断出所述第一报文序列号不大于所述起始指针指向的报文序列号时,判断所述第一报文序列号是否等于所述中间指针指向的报文序列号的步骤;
在判断出所述第一报文序列号等于所述中间指针指向的报文序列号时,将所述第二时间戳赋为所述第一时间戳,并执行将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤;
在判断出所述第一报文序列号不等于所述中间指针指向的报文序列号时,执行将所述RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤,并继续执行判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值的步骤;
在判断出所述第一报文序列号大于所述起始指针指向的报文序列号时,将所述起始指针指向所述第一报文序列号,将所述第三时间戳赋为所述第一时间戳,并执行判断所述第一报文序列号是否等于所述中间指针指向的报文序列号的步骤;
在判断出所述结尾指针和所述中间指针均指向所述预设的第一初始值时,将所述中间指针指向第四报文序列号,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时,继续执行判断所述第一报文序列号是否大于所述起始指针指向的报文序列号的步骤,其中,所述第四报文序列号为所述Leaf节点对所述第一报文序列号减1后得到的报文序列号。
根据本申请实施例的第二方面,提供一种报文转发装置,所述装置应用于Leaf节点中的硬件芯片,所述装置包括:
启动模块,用于启动等待定时器;
等待接收模块,用于在所述等待定时器的计时时长内等待接收所述Leaf节点所属网络中的任一其他Leaf节点中的硬件芯片转发的数据报文;
第一判断模块,用于在所述等待接收模块接收到该其他Leaf节点中的硬件芯片转发的所述数据报文时,判断所述数据报文中携带的起始标志位是否用于表征所述数据报文为起始报文,其中,所述数据报文为该其他Leaf节点中的硬件芯片通过轮询到的该其他Leaf节点与其连接的所有Spine节点之间的一条链路转发给所述Leaf节点中的硬件芯片的,且还携带有所述其他Leaf节点中的硬件芯片转发所述数据报文时分配的第一报文序列号和所述其他Leaf节点中的硬件芯片转发所述数据报文时的第一时间戳;
第一指向模块,用于在所述第一判断模块判断出所述起始标志位用于表征所述数据报文为起始报文时,将环形链表中的起始指针、结尾指针和中间指针指向记录到所述环形链表中的所述第一报文序列号,其中,所述起始指针、结尾指针和中间指针初始时均指向预设的第一初始值,且所述起始指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最大报文序列号,所述结尾指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最小报文序列号,所述中间指针指向的序列号用于表征所述Leaf尚未收到且携带的报文序列号为所述最大报文序列号与所述最小报文序列号之间的最小报文序列号的数据报文中携带的报文序列号;
更改模块,用于将用于记录所述Leaf节点即将转发的数据报文中携带的第二时间戳和用于记录所述Leaf节点收到且未转发的携带的报文序列号最大的数据报文中携带的第三时间戳均由预设的第二初始值更改为所述第一时间戳,并将所述等待定时器重新计时;
更新模块,用于将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项,其中,更新后的有效缓存表项中记录有用于缓存所述数据报文的地址信息和所述第一时间戳;
第一转发模块,用于根据更新后的缓存表项中的地址信息,转发所述数据报文;
所述第二指向模块,用于将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号,其中,所述第二报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号累加1后得到的报文序列号,所述第三报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号减1后得到的报文序列号;
第二判断模块,用于判断所述RAM表中所述中间指针指向的第二报文序列号对应的缓存表项是否为有效缓存表项;
第二转发模块,用于在所述第二判断模块的判断结果为是时,将所述第二时间戳赋为所述第二报文序列号对应的缓存表项中的时间戳,根据所述第二报文序列号对应的缓存表项中的地址信息,转发对应的数据报文,并将所述等待定时器重新计时;
第三判断模块,用于在所述第二判断模块的判断结果为否时,判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值,并在判断结果为否时,触发所述第二指向模块执行将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号的步骤;并在判断结果为是时,触发所述等待接收模块执行在等待定时器的时长内接收到其他Leaf节点通过Spine节点发送的数据报文的步骤;
第四判断模块,用于在所述第一判断模块判断出所述起始标志位用于表征所述数据报文为非起始报文时,判断所述结尾指针和所述中间指针是否均未指向所述预设的第一初始值;
第三指向模块,用于在所述第四判断模块的判断结果为是时,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时;
第五判断模块,用于判断所述第一报文序列号是否大于所述起始指针指向的报文序列号;
第六判断模块,用于在所述第五判断模块的判断结果为否时,判断所述第一报文序列号是否等于所述中间指针指向的报文序列号,并在判断结果为否时,触发所述更新模块执行将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤,以及触发所述第三判断模块执行判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值的步骤;
赋值模块,用于在所述第六判断模块的判断结果为是时,将所述第二时间戳赋为所述第一时间戳,并触发所述更新模块执行将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤;
第四指向模块,用于在所述第五判断模块的判断结果为是时,将所述起始指针指向所述第一报文序列号,将所述第三时间戳赋为所述第一时间戳,并触发所述第六判断模块执行判断所述第一报文序列号是否等于所述中间指针指向的报文序列号;
第五指向模块,用于在所述第四判断模块的判断结果为否时,将所述中间指针指向第四报文序列号,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时,触发所述第五判断模块执行判断所述第一报文序列号是否大于所述起始指针指向的报文序列号的步骤,其中,所述第四报文序列号为所述Leaf节点对所述第一报文序列号减1后得到的报文序列号。
本申请的实施例提供的技术方案可以包括以下有益效果:
在本申请实施例中,在Leaf-Spine网络架构中,对于任一Leaf节点而言,不再使用成本较高的Crossbar芯片,而是使用成本较低的硬件芯片,且执行全新的报文转发流程,来完成用户设备侧的数据报文的转发操作,从而降低了网络部署成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本申请的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种报文转发方法的流程示意图;
图2为本申请实施例提供的一种报文转发装置的结构示意图;
图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
接下来对本申请实施例进行详细说明。
本申请实施例提供了一种报文转发方法,该方法应用于叶子Leaf节点中的硬件芯片,如图1所示,该方法可以包括如下步骤:
S11、启动等待定时器。
S12、在等待定时器的计时时长内等待接收Leaf节点所属网络中的任一其他Leaf节点中的硬件芯片转发的数据报文。
S13、若接收到该其他Leaf节点中的硬件芯片转发的数据报文,则判断数据报文中携带的起始标志位是否用于表征数据报文为起始报文;在判断结果为是时,执行步骤S14;在判断结果为否时,执行步骤S22。
在本步骤中,该数据报文的来源设备是用户设备。
该数据报文是该其他Leaf节点中的硬件芯片通过轮询到的该其他Leaf节点与其连接的所有Spine节点之间的一条链路转发给Leaf节点中的硬件芯片的。
并且,该数据报文中还携带有该其他Leaf节点中的硬件芯片转发数据报文时分配的报文序列号(称为第一报文序列号)和该其他Leaf节点中的硬件芯片转发数据报文时的时间戳(称为第一时间戳)。
S14、将环形链表中的起始指针、结尾指针和中间指针指向记录到环形链表中的第一报文序列号。
在本步骤中,起始指针、结尾指针和中间指针初始时均指向预设的第一初始值。
并且,起始指针指向的序列号用于表征Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最大报文序列号;
结尾指针指向的序列号用于表征Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最小报文序列号;
中间指针指向的序列号用于表征Leaf尚未收到且携带的报文序列号为最大报文序列号与最小报文序列号之间的最小报文序列号的数据报文中携带的报文序列号。
S15、将用于记录Leaf节点即将转发的数据报文中携带的第二时间戳和用于记录Leaf节点收到且未转发的携带的报文序列号最大的数据报文中携带的第三时间戳均由预设的第二初始值更改为第一时间戳,并将等待定时器重新计时。
S16、将RAM表中第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项。
在本步骤中,更新后的有效缓存表项中记录有用于缓存数据报文的地址信息和第一时间戳。
S17、根据更新后的缓存表项中的地址信息,转发数据报文。
S18、将中间指针指向第二报文序列号,以及将结尾指针指向第三报文序列号。
在本步骤中,第二报文序列号为Leaf节点对中间指针当前指向的报文序列号累加1后得到的报文序列号;
第三报文序列号为Leaf节点对中间指针当前指向的报文序列号减1后得到的报文序列号。
S19、判断RAM表中中间指针指向的第二报文序列号对应的缓存表项是否为有效缓存表项;在判断结果为是时,执行步骤S20;在判断结果为否时,执行步骤S21。
S20、将第二时间戳赋为第二报文序列号对应的缓存表项中的时间戳,根据第二报文序列号对应的缓存表项中的地址信息,转发对应的数据报文,并将等待定时器重新计时。
S21、判断第三时间戳与第二时间戳的差值是否大于设定阈值;在判断结果为是时,执行步骤S18,在判断结果为否时,执行步骤S12。
S22、判断结尾指针和中间指针是否均未指向预设的第一初始值;在判断结果为是时,执行步骤S23;在判断结果为否时,执行步骤S28。
S23、将结尾指针指向第一报文序列号,以及将第二时间戳赋为第一时间戳,并将等待定时器重新计时。
S24、判断第一报文序列号是否大于起始指针指向的报文序列号;在判断结果为否时,执行步骤S25;在判断结果为是时,先执行步骤S27,然后继续执行步骤S25。
S25、判断第一报文序列号是否等于中间指针指向的报文序列号;在判断结果为是时,执行步骤S26,在判断结果为否时,先执行步骤S16,然后继续执行步骤S21。
S26、将第二时间戳赋为第一时间戳,并执行步骤S16。
S27、将起始指针指向第一报文序列号,将第三时间戳赋为第一时间戳。
S28、将中间指针指向第四报文序列号,将结尾指针指向第一报文序列号,以及将第二时间戳赋为第一时间戳,并将等待定时器重新计时,继续执行步骤S24。
在本步骤中,第四报文序列号为该Leaf节点对第一报文序列号减1后得到的报文序列号。
需要说明的是,在本申请实施例中,为了节省网络部署成本,在Leaf-Spine网络架构中,对于任一Leaf节点而言,不再使用成本较高的Crossbar芯片,而是使用成本较低的硬件芯片,例如,该硬件芯片可以为现场可编程门阵列(Fiele-Programmable Gate Array,FPGA)芯片等,以降低网络部署成本。在任一Leaf节点作为接收端时,即,该Leaf节点中的硬件芯片接收到来自用户设备侧的数据报文,仍可按照轮询该Leaf节点与其连接的所有Spine节点之间的链路的方式,向需要将数据报文转发给对应的目的用户设备的目的Leaf节点转发数据报文。在这里,针对目的Leaf节点的确定方式,可以与使用Crossbar芯片时的确定方式相同,当然,也可以采用现有的其他确定目的端的方式,在此不再赘述。
为便于目的Leaf节点中的硬件芯片快速、有序地转发数据报文,该Leaf节点中的硬件芯片在向目的Leaf节点中的硬件芯片转发数据报文时,会为数据报文分配报文序列号,并添加到数据报文中,具体分配报文序列号时,该Leaf节点中的硬件芯片可以按照报文序列号累加的方式分配报文序列号,也就是说,这次分配的报文序列号为该Leaf节点中的硬件芯片对上一次分配的报文序列号累加1之后得到的报文序列号;另外,该Leaf节点中的硬件芯片还会在数据报文中添加发送数据报文时的时间戳和用于表征数据报文是否为起始报文的起始标志位。
在这里,起始报文可以理解为该Leaf节点中的硬件芯片初始上电后首次接收到的数据报文,或者为该Leaf节点中的硬件芯片在设定时长(可根据Leaf节点所在网络的实际情况来设定)内没有接收到数据报文后首次接收到的数据报文。
之所以在数据报文中添加起始标志位,主要是为了避免该Leaf节点中的硬件芯片长时间没有接收到数据报文后无法对齐报文序列号。
例如,该Leaf节点中的硬件芯片为数据报文分配的报文序列号可以占用16bit等。
该Leaf节点中的硬件芯片在数据报文中添加的时间戳可以占用15bit等。
该Leaf节点中的硬件芯片在数据报文中添加的起始标志位可以是0或。其中,在起始标志位为1时,表征该Leaf节点中的硬件芯片当前接收到的数据报文为起始报文;在起始标志位为0时,表征该Leaf节点中的硬件芯片当前接收到的数据报文不为起始报文。
在任一Leaf节点作为发送端时,即,该Leaf节点中的硬件芯片需要将接收到的其他Leaf节点中的硬件芯片转发的数据报文转发给对应的目的用户设备,在初始上电后开始执行上述步骤S11,以及时对接收到的数据报文进行排序后转发出去。具体的执行流程将在下文进行详细说明。
进一步需要说明的是,在一个例子中,Leaf-Spine网络架构也可应用在包括的接口板和网板均使用包处理芯片的框式交换设备上,在这种场景下,Leaf节点即为任一接口板,Spine节点即为任一网板。
具体地,在上述步骤S11中,等待定时器实际上是该Leaf节点中的硬件芯片针对等待接收的单个数据报文的最长时间而设置的,具体的时长可根据Leaf节点所在网络的实际情况来设定。
在上述步骤S14中,在一个例子中,预设的第一初始值可以设置为无效值,当然,也可以设置为其他值,在此不再一一列举。
需要说明的是,上述步骤S14中的环形链表可以是针对该Leaf节点单独设置的,也可以是该Leaf节点所属网络中的所有Leaf节点共用的。
进一步需要说明的是,在上述步骤S15中,之所以设置第二时间戳和第三时间戳,主要是为了使用二者的差值来决策是否需要继续等待尚未接收到且需要排序的数据报文,以便及时处理后续接收到的数据报文。
另外,在上述步骤S15中,预设的第二初始值的设置方式可以与预设的第一初始值的设置方式相同,例如,都可以设置为无效值等,当然,也可以不同,使用其他方式设置,在此不再一一列举。
具体地,在上述步骤S16中,该Leaf节点中的硬件芯片可以通过以下方式将RAM表中第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项:
将第一报文序列号对应的初始的缓存表项中的有效表项标志位置为用于表征有效缓存表项的标志位;
将第一报文序列号对应的初始的缓存表项中的地址信息赋为用于缓存数据报文的地址信息;以及
将第一报文序列号对应的初始的缓存表项中的时间戳赋为第一时间戳。
例如,上述有效表项标志位可以置为0或1。其中,在有效表项标志位置为0时,表征对应的缓存表项为无效缓存表项,上述初始的无效缓存表项中的有效表项标志位可以置为0;在有效表项标志位置为1时,表征对应的缓存表项为有效缓存表项。
需要说明的是,在该Leaf节点中的硬件芯片在执行上述步骤S17时,具体可以基于更新后的缓存表项中的地址信息读取对应的数据报文,之后,通过读取到的数据报文的出接口将其转发出去。
另外,在本申请实施例中,该Leaf节点中的硬件芯片在执行完上述步骤S17之后,可以将更新后的缓存表项再更新为无效缓存表项。
进一步地,在本申请实施例中,该Leaf节点中的硬件芯片在执行完上述步骤S12之后,如果在计时时长内未接收到该其他Leaf节点中的硬件芯片转发的数据报文,则可以执行以下步骤(如图1所示):
S29、判断起始指针指向的报文序列号是否为预设的第一初始值;在判断结果为是时,执行步骤S30;在判断结果为否时,执行步骤S18。
S30、将起始指针、结尾指针和中间指针均指向预设的第一初始值,并将等待定时器重新计时。
下面结合具体实施例对上述报文转发方法进行详细说明。
假设在某个Spine-Leaf网络架构中,所有的Leaf节点中的硬件芯片均为FPGA芯片,以一个Leaf节点(记为Leaf节点1)为例,假设该Leaf节点1针对组网中每个其他Leaf节点均设置一个便于对数据报文进行排序的环形链表;假设每个环形链表中的起始指针(记为HEAD_SN)、结尾指针(记为TALL_SN)和中间指针(记为EXP_SN)均指向无效值;假设用于记录该Leaf节点即将转发的数据报文中携带的时间戳(记为Now_Time)和用于记录Leaf节点收到且未转发的携带的报文序列号最大的数据报文中携带的时间戳(记为Head_Time)初始时均为无效值。
该Leaf节点1中的FPGA芯片上电后,执行以下操作流程:
启动等待定时器(记为Scan_Timer)。
在Scan_Timer的计时时长内等待接收任一其他Leaf节点中的硬件芯片转发的数据报文。
假设在Scan_Timer的计时时长内首次接收到Leaf节点2中的FPGA芯片转发的数据报文(记为Pkt1),Leaf节点1中的FPGA芯片判断Pkt1中携带的起始标志位(记为Pkt1.S)是否用于表征Pkt1为起始报文。
其中,Pkt1是Leaf节点2中的FPGA芯片在接收到来自用户设备的数据报文1后,在数据报文1中添加Leaf节点2为其分配的报文序列号(记为Pkt1.SN)、Pkt1.S和转发时的时间戳(记为Pkt1.Time)之后,通过轮询到的Leaf节点2与其连接的所有Spine节点之间的一条链路转发给Leaf节点1中的硬件芯片的。
假设Pkt1.S为1,用于表征Pkt1为起始报文,所以,判断结果为是,此时,Leaf节点1中的FGPA芯片将针对Leaf节点2的环形链表中的HEAD_SN、TALL_SN和EXP_SN指向记录到环形链表中的Pkt1.SN。
Leaf节点1中的FPGA芯片将Now_Time和Head_Time均由无效值更改为Pkt1.Time,也可以理解为Leaf节点1将Now_Time和Head_Time赋为Pkt1.Time。
Leaf节点1中的FPGA芯片将RAM表中Pkt1.SN对应的初始的无效缓存表项中的有效表项标志位(记为Valid)置为1(即,用于表征有效缓存表项);将该表项中的地址信息(记为Link_Addr)赋为用于缓存Pkt1的地址信息;以及将该表项中的时间戳(记为Timer)赋为Pkt1.Time。
Leaf节点1中的FPGA芯片根据更新后的缓存表项中的地址信息,转发Pkt1。
Leaf节点1中的FPGA芯片将EXP_SN指向Pkt1.SN+1,以及将TALL_SN指向Pkt1.SN-1。
之后,Leaf节点1中的FPGA芯片判断RAM表中Pkt1.SN+1对应的缓存表项是否为有效缓存表项。
由于Pkt1是Leaf节点1中的FPGA芯片首次接收到的,所以Pkt1.SN+1对应的缓存表项是初始的无效表项,在这种情形下,Leaf节点1中的FPGA芯片判断Head_Time与Now_Time第二时间戳的差值是否大于设定阈值(假设取值为不为0的正整数)。
由于Head_Time与Now_Time相等,二者的差值不大于设定阈值,所以,Leaf节点1中的FPGA芯片继续执行在Scan_Timer的计时时长内等待接收任一其他Leaf节点中的硬件芯片转发的数据报文。
经过一段时间之后,假设在Scan_Timer的计时时长内再次接收到Leaf节点2中的FPGA芯片转发的数据报文(记为Pkt2),Leaf节点1中的FPGA芯片判断Pkt2中携带的起始标志位(记为Pkt2.S)是否用于表征Pkt2为起始报文。
由于Pkt2.S为0,用于表征Pkt2不为起始报文,所以,判断结果为否,此时,Leaf节点1中的FPGA芯片判断TALL_SN和EXP_SN是否均未指向无效值。
由于当前的TALL_SN和EXP_SN均未指向无效值,所以,Leaf节点1中的FPGA芯片将TALL_SN指向Pkt2中携带的报文序列号(记为Pkt2.SN),以及将Now_Time赋为Pkt2中携带的时间戳(记为Pkt2.Time),并将等待定时器重新计时。
接下来,Leaf节点1中的FPGA芯片继续判断Pkt2.SN是否大于Head_SN指向的报文序列号。
假设判断结果为是,那么,Leaf节点1中的FPGA芯片将Head_SN指向Pkt2.SN,将Head_Time赋为Pkt2.Time。
Leaf节点1中的FPGA芯片再进一步判断Pkt2.SN是否等于EXP_SN指向的报文序列号。
假设判断结果为否,那么,Leaf节点1中的FPGA芯片将RAM表中Pkt2.SN对应的初始的无效缓存表项中的Valid置为1;将此表项中的Link_Addr赋为用于缓存Pkt2的地址信息;以及将此表项中的Timer赋为Pkt2.Time。
然后,Leaf节点1中的FPGA芯片判断Now_Time与Head_Time的差值是否大于设定阈值。
假设判断结果为是,则Leaf节点1中的FPGA芯片将EXP_SN指向Pkt2.SN+1,以及将TALL_SN指向Pkt2.SN-1。
之后,Leaf节点1中的FPGA芯片判断RAM表中Pkt2.SN+1对应的缓存表项是否为有效缓存表项。
假设判断结果为是,将Now_Time赋为Pkt2.Time,并根据Pkt2.SN对应的有效缓存表项中的Link_Addr转发Pkt2,并将Scan_Timer重新计时。
需要说明的是,对于其他情况下执行的操作流程,不再一一详述。
基于同一发明构思,本申请还提供了一种报文转发装置,所述装置应用于Leaf节点中的硬件芯片,其结构示意图如图2所示,具体包括:
启动模块211,用于启动等待定时器;
等待接收模块212,用于在所述等待定时器的计时时长内等待接收所述Leaf节点所属网络中的任一其他Leaf节点中的硬件芯片转发的数据报文;
第一判断模块213,用于在所述等待接收模块212接收到该其他Leaf节点中的硬件芯片转发的所述数据报文时,判断所述数据报文中携带的起始标志位是否用于表征所述数据报文为起始报文,其中,所述数据报文为该其他Leaf节点中的硬件芯片通过轮询到的该其他Leaf节点与其连接的所有脊柱Spine节点之间的一条链路转发给所述Leaf节点中的硬件芯片的,且还携带有所述其他Leaf节点中的硬件芯片转发所述数据报文时分配的第一报文序列号和所述其他Leaf节点中的硬件芯片转发所述数据报文时的第一时间戳;
第一指向模块214,用于在所述第一判断模块213判断出所述起始标志位用于表征所述数据报文为起始报文时,将环形链表中的起始指针、结尾指针和中间指针指向记录到所述环形链表中的所述第一报文序列号,其中,所述起始指针、结尾指针和中间指针初始时均指向预设的第一初始值,且所述起始指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最大报文序列号,所述结尾指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最小报文序列号,所述中间指针指向的序列号用于表征所述Leaf尚未收到且携带的报文序列号为所述最大报文序列号与所述最小报文序列号之间的最小报文序列号的数据报文中携带的报文序列号;
更改模块215,用于将用于记录所述Leaf节点即将转发的数据报文中携带的第二时间戳和用于记录所述Leaf节点收到且未转发的携带的报文序列号最大的数据报文中携带的第三时间戳均由预设的第二初始值更改为所述第一时间戳,并将所述等待定时器重新计时;
更新模块216,用于将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项,其中,更新后的有效缓存表项中记录有用于缓存所述数据报文的地址信息和所述第一时间戳;
第一转发模块217,用于根据更新后的缓存表项中的地址信息,转发所述数据报文;
所述第二指向模块218,用于将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号,其中,所述第二报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号累加1后得到的报文序列号,所述第三报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号减1后得到的报文序列号;
第二判断模块219,用于判断所述RAM表中所述中间指针指向的第二报文序列号对应的缓存表项是否为有效缓存表项;
第二转发模块220,用于在所述第二判断模块219的判断结果为是时,将所述第二时间戳赋为所述第二报文序列号对应的缓存表项中的时间戳,根据所述第二报文序列号对应的缓存表项中的地址信息,转发对应的数据报文,并将所述等待定时器重新计时;
第三判断模块221,用于在所述第二判断模块220的判断结果为否时,判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值,并在判断结果为否时,触发所述第二指向模块218执行将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号的步骤;并在判断结果为是时,触发所述等待接收模块211执行在等待定时器的时长内接收到其他Leaf节点通过Spine节点发送的数据报文的步骤;
第四判断模块222,用于在所述第一判断模块213判断出所述起始标志位用于表征所述数据报文为非起始报文时,判断所述结尾指针和所述中间指针是否均未指向所述预设的第一初始值;
第三指向模块223,用于在所述第四判断模块222的判断结果为是时,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时;
第五判断模块224,用于判断所述第一报文序列号是否大于所述起始指针指向的报文序列号;
第六判断模块225,用于在所述第五判断模块224的判断结果为否时,判断所述第一报文序列号是否等于所述中间指针指向的报文序列号,并在判断结果为否时,触发所述更新模块215执行将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤,以及触发所述第三判断模块221执行判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值的步骤;
赋值模块226,用于在所述第六判断模块225的判断结果为是时,将所述第二时间戳赋为所述第一时间戳,并触发所述更新模块216执行将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤;
第四指向模块227,用于在所述第五判断模块224的判断结果为是时,将所述起始指针指向所述第一报文序列号,将所述第三时间戳赋为所述第一时间戳,并触发所述第六判断模块225执行判断所述第一报文序列号是否等于所述中间指针指向的报文序列号;
第五指向模块228,用于在所述第四判断模块222的判断结果为否时,将所述中间指针指向第四报文序列号,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时,触发所述第五判断模块执行判断所述第一报文序列号是否大于所述起始指针指向的报文序列号的步骤,其中,所述第四报文序列号为所述Leaf节点对所述第一报文序列号减1后得到的报文序列号。
优选地,所述装置还包括:
第七判断模块(图2中未示出),用于在所述等待接收模块在所述计时时长内未接收到该其他Leaf节点中的硬件芯片转发的数据报文时,判断所述起始指针指向的报文序列号是否为所述预设的第一初始值,并在判断结果为否时,触发所述第二指向模块218执行将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号的步骤;
第六指向模块(图2中未示出),用于在所述第七判断模块的判断结果为是时,将所述起始指针、所述结尾指针和中间指针均指向所述预设的第一初始值,并将所述等待定时器重新计时。
优选地,所述更新模块216,具体用于通过以下方式将RAM表中所述第一报文序列号对应的初始无效缓存表项更新为有效缓存表项:
将所述第一报文序列号对应的初始的缓存表项中的有效表项标志位置为用于表征有效缓存表项的标志位;
将所述第一报文序列号对应的初始的缓存表项中的地址信息赋为用于缓存所述数据报文的地址信息;以及
将所述第一报文序列号对应的初始的缓存表项中的时间戳赋为所述第一时间戳。
优选地,所述硬件芯片为FPGA芯片。
由以上技术方案可以看出,在本申请实施例中,在Leaf-Spine网络架构中,对于任一Leaf节点而言,不再使用成本较高的Crossbar芯片,而是使用成本较低的硬件芯片,且执行全新的报文转发流程,来完成用户设备侧的数据报文的转发操作,从而降低了网络部署成本。
本申请实施例还提供了一种电子设备,如图3所示,包括处理器31和机器可读存储介质32,所述机器可读存储介质32存储有能够被所述处理器31执行的机器可执行指令,所述处理器31被所述机器可执行指令促使:实现上述报文转发方法的步骤。
上述的机器可读存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述报文转发方法的步骤。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种报文转发方法,其特征在于,所述方法应用于叶子Leaf节点中的硬件芯片,所述方法包括:
启动等待定时器;
在所述等待定时器的计时时长内等待接收所述Leaf节点所属网络中的任一其他Leaf节点中的硬件芯片转发的数据报文;
若接收到该其他Leaf节点中的硬件芯片转发的所述数据报文,则判断所述数据报文中携带的起始标志位是否用于表征所述数据报文为起始报文,其中,所述数据报文为该其他Leaf节点中的硬件芯片通过轮询到的该其他Leaf节点与其连接的所有脊柱Spine节点之间的一条链路转发给所述Leaf节点中的硬件芯片的,且还携带有所述其他Leaf节点中的硬件芯片转发所述数据报文时分配的第一报文序列号和所述其他Leaf节点中的硬件芯片转发所述数据报文时的第一时间戳;
在判断出所述起始标志位用于表征所述数据报文为起始报文时,将环形链表中的起始指针、结尾指针和中间指针指向记录到所述环形链表中的所述第一报文序列号,其中,所述起始指针、结尾指针和中间指针初始时均指向预设的第一初始值,且所述起始指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最大报文序列号,所述结尾指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最小报文序列号,所述中间指针指向的序列号用于表征所述Leaf尚未收到且携带的报文序列号为所述最大报文序列号与所述最小报文序列号之间的最小报文序列号的数据报文中携带的报文序列号;
将用于记录所述Leaf节点即将转发的数据报文中携带的第二时间戳和用于记录所述Leaf节点收到且未转发的携带的报文序列号最大的数据报文中携带的第三时间戳均由预设的第二初始值更改为所述第一时间戳,并将所述等待定时器重新计时;
将随机存取存储器RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项,其中,更新后的有效缓存表项中记录有用于缓存所述数据报文的地址信息和所述第一时间戳;
根据更新后的缓存表项中的地址信息,转发所述数据报文;
将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号,其中,所述第二报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号累加1后得到的报文序列号,所述第三报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号减1后得到的报文序列号;
判断所述RAM表中所述中间指针指向的第二报文序列号对应的缓存表项是否为有效缓存表项,在判断结果为是时,将所述第二时间戳赋为所述第二报文序列号对应的缓存表项中的时间戳,根据所述第二报文序列号对应的缓存表项中的地址信息,转发对应的数据报文,并将所述等待定时器重新计时;在判断结果为否时,判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值;
在判断出所述差值大于所述设定阈值时,执行将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号的步骤;
在判断出所述差值不大于所述设定阈值时,执行判断是否在等待定时器的时长内接收到其他Leaf节点通过Spine节点发送的数据报文的步骤;
在判断出所述起始标志位用于表征所述数据报文为非起始报文时,判断所述结尾指针和所述中间指针是否均未指向所述预设的第一初始值;
在判断出所述结尾指针和所述中间指针均未指向所述预设的第一初始值时,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时;
判断所述第一报文序列号是否大于所述起始指针指向的报文序列号;
在判断出所述第一报文序列号不大于所述起始指针指向的报文序列号时,判断所述第一报文序列号是否等于所述中间指针指向的报文序列号的步骤;
在判断出所述第一报文序列号等于所述中间指针指向的报文序列号时,将所述第二时间戳赋为所述第一时间戳,并执行将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤;
在判断出所述第一报文序列号不等于所述中间指针指向的报文序列号时,执行将所述RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤,并继续执行判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值的步骤;
在判断出所述第一报文序列号大于所述起始指针指向的报文序列号时,将所述起始指针指向所述第一报文序列号,将所述第三时间戳赋为所述第一时间戳,并执行判断所述第一报文序列号是否等于所述中间指针指向的报文序列号的步骤;
在判断出所述结尾指针和所述中间指针均指向所述预设的第一初始值时,将所述中间指针指向第四报文序列号,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时,继续执行判断所述第一报文序列号是否大于所述起始指针指向的报文序列号的步骤,其中,所述第四报文序列号为所述Leaf节点对所述第一报文序列号减1后得到的报文序列号。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述计时时长内未接收到该其他Leaf节点中的硬件芯片转发的数据报文时,判断所述起始指针指向的报文序列号是否为所述预设的第一初始值;
在判断出所述起始指针指向的报文序列号为所述预设的第一初始值时,将所述起始指针、所述结尾指针和中间指针均指向所述预设的第一初始值,并将所述等待定时器重新计时;
在判断出所述起始指针指向的报文序列号不为所述预设的第一初始值时,执行将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号的步骤。
3.根据权利要求1所述的方法,其特征在于,通过以下方式将RAM表中所述第一报文序列号对应的初始无效缓存表项更新为有效缓存表项:
将所述第一报文序列号对应的初始的缓存表项中的有效表项标志位置为用于表征有效缓存表项的标志位;
将所述第一报文序列号对应的初始的缓存表项中的地址信息赋为用于缓存所述数据报文的地址信息;以及
将所述第一报文序列号对应的初始的缓存表项中的时间戳赋为所述第一时间戳。
4.根据权利要求1所述的方法,其特征在于,所述硬件芯片为现场可编程门阵列FPGA芯片。
5.一种报文转发装置,其特征在于,所述装置应用于叶子Leaf节点中的硬件芯片,所述装置包括:
启动模块,用于启动等待定时器;
等待接收模块,用于在所述等待定时器的计时时长内等待接收所述Leaf节点所属网络中的任一其他Leaf节点中的硬件芯片转发的数据报文;
第一判断模块,用于在所述等待接收模块接收到该其他Leaf节点中的硬件芯片转发的所述数据报文时,判断所述数据报文中携带的起始标志位是否用于表征所述数据报文为起始报文,其中,所述数据报文为该其他Leaf节点中的硬件芯片通过轮询到的该其他Leaf节点与其连接的所有脊柱Spine节点之间的一条链路转发给所述Leaf节点中的硬件芯片的,且还携带有所述其他Leaf节点中的硬件芯片转发所述数据报文时分配的第一报文序列号和所述其他Leaf节点中的硬件芯片转发所述数据报文时的第一时间戳;
第一指向模块,用于在所述第一判断模块判断出所述起始标志位用于表征所述数据报文为起始报文时,将环形链表中的起始指针、结尾指针和中间指针指向记录到所述环形链表中的所述第一报文序列号,其中,所述起始指针、结尾指针和中间指针初始时均指向预设的第一初始值,且所述起始指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最大报文序列号,所述结尾指针指向的序列号用于表征所述Leaf节点已收到且未转发的数据报文中携带的报文序列号中的最小报文序列号,所述中间指针指向的序列号用于表征所述Leaf尚未收到且携带的报文序列号为所述最大报文序列号与所述最小报文序列号之间的最小报文序列号的数据报文中携带的报文序列号;
更改模块,用于将用于记录所述Leaf节点即将转发的数据报文中携带的第二时间戳和用于记录所述Leaf节点收到且未转发的携带的报文序列号最大的数据报文中携带的第三时间戳均由预设的第二初始值更改为所述第一时间戳,并将所述等待定时器重新计时;
更新模块,用于将随机存取存储器RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项,其中,更新后的有效缓存表项中记录有用于缓存所述数据报文的地址信息和所述第一时间戳;
第一转发模块,用于根据更新后的缓存表项中的地址信息,转发所述数据报文;
第二指向模块,用于将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号,其中,所述第二报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号累加1后得到的报文序列号,所述第三报文序列号为所述Leaf节点对所述中间指针当前指向的报文序列号减1后得到的报文序列号;
第二判断模块,用于判断所述RAM表中所述中间指针指向的第二报文序列号对应的缓存表项是否为有效缓存表项;
第二转发模块,用于在所述第二判断模块的判断结果为是时,将所述第二时间戳赋为所述第二报文序列号对应的缓存表项中的时间戳,根据所述第二报文序列号对应的缓存表项中的地址信息,转发对应的数据报文,并将所述等待定时器重新计时;
第三判断模块,用于在所述第二判断模块的判断结果为否时,判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值,并在判断结果为否时,触发所述第二指向模块执行将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号的步骤;并在判断结果为是时,触发所述等待接收模块执行在等待定时器的时长内接收到其他Leaf节点通过Spine节点发送的数据报文的步骤;
第四判断模块,用于在所述第一判断模块判断出所述起始标志位用于表征所述数据报文为非起始报文时,判断所述结尾指针和所述中间指针是否均未指向所述预设的第一初始值;
第三指向模块,用于在所述第四判断模块的判断结果为是时,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时;
第五判断模块,用于判断所述第一报文序列号是否大于所述起始指针指向的报文序列号;
第六判断模块,用于在所述第五判断模块的判断结果为否时,判断所述第一报文序列号是否等于所述中间指针指向的报文序列号,并在判断结果为否时,触发所述更新模块执行将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤,以及触发所述第三判断模块执行判断所述第三时间戳与所述第二时间戳的差值是否大于设定阈值的步骤;
赋值模块,用于在所述第六判断模块的判断结果为是时,将所述第二时间戳赋为所述第一时间戳,并触发所述更新模块执行将RAM表中所述第一报文序列号对应的初始的无效缓存表项更新为有效缓存表项的步骤;
第四指向模块,用于在所述第五判断模块的判断结果为是时,将所述起始指针指向所述第一报文序列号,将所述第三时间戳赋为所述第一时间戳,并触发所述第六判断模块执行判断所述第一报文序列号是否等于所述中间指针指向的报文序列号;
第五指向模块,用于在所述第四判断模块的判断结果为否时,将所述中间指针指向第四报文序列号,将所述结尾指针指向所述第一报文序列号,以及将所述第二时间戳赋为所述第一时间戳,并将所述等待定时器重新计时,触发所述第五判断模块执行判断所述第一报文序列号是否大于所述起始指针指向的报文序列号的步骤,其中,所述第四报文序列号为所述Leaf节点对所述第一报文序列号减1后得到的报文序列号。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第七判断模块,用于在所述等待接收模块在所述计时时长内未接收到该其他Leaf节点中的硬件芯片转发的数据报文时,判断所述起始指针指向的报文序列号是否为所述预设的第一初始值,并在判断结果为否时,触发所述第二指向模块执行将所述中间指针指向第二报文序列号,以及将所述结尾指针指向第三报文序列号的步骤;
第六指向模块,用于在所述第七判断模块的判断结果为是时,将所述起始指针、所述结尾指针和中间指针均指向所述预设的第一初始值,并将所述等待定时器重新计时。
7.根据权利要求5所述的装置,其特征在于,所述更新模块,具体用于通过以下方式将RAM表中所述第一报文序列号对应的初始无效缓存表项更新为有效缓存表项:
将所述第一报文序列号对应的初始的缓存表项中的有效表项标志位置为用于表征有效缓存表项的标志位;
将所述第一报文序列号对应的初始的缓存表项中的地址信息赋为用于缓存所述数据报文的地址信息;以及
将所述第一报文序列号对应的初始的缓存表项中的时间戳赋为所述第一时间戳。
8.根据权利要求5所述的装置,其特征在于,所述硬件芯片为现场可编程门阵列FPGA芯片。
9.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现权利要求1-4任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110391876.3A CN113328959B (zh) | 2021-04-13 | 2021-04-13 | 一种报文转发方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110391876.3A CN113328959B (zh) | 2021-04-13 | 2021-04-13 | 一种报文转发方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113328959A CN113328959A (zh) | 2021-08-31 |
CN113328959B true CN113328959B (zh) | 2022-05-27 |
Family
ID=77414725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110391876.3A Active CN113328959B (zh) | 2021-04-13 | 2021-04-13 | 一种报文转发方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113328959B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9674086B2 (en) * | 2013-11-05 | 2017-06-06 | Cisco Technology, Inc. | Work conserving schedular based on ranking |
CN103825841B (zh) * | 2014-03-19 | 2017-04-05 | 武汉众合德信技术有限公司 | 一种以太网报文排序方法及装置 |
CN105591923B (zh) * | 2015-10-28 | 2018-11-27 | 新华三技术有限公司 | 一种转发表项的存储方法和装置 |
US10715446B2 (en) * | 2016-09-12 | 2020-07-14 | Huawei Technologies Co., Ltd. | Methods and systems for data center load balancing |
CN109325022B (zh) * | 2018-07-20 | 2021-04-27 | 新华三技术有限公司 | 一种数据处理方法和装置 |
KR102195836B1 (ko) * | 2019-02-07 | 2020-12-28 | 주식회사 티맥스티베로 | 인덱스 관리 방법 |
-
2021
- 2021-04-13 CN CN202110391876.3A patent/CN113328959B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113328959A (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8599858B1 (en) | System and method for keep alive message aging | |
EP2421206A1 (en) | Flooding-based routing protocol having database pruning and rate-controlled state refresh | |
JP2004023450A (ja) | ルータ装置 | |
CN109981464B (zh) | 一种在fpga中实现的tcam电路结构及其匹配方法 | |
CN109525518B (zh) | 一种基于fpga的ip报文网络地址转换方法及装置 | |
WO2017219867A1 (zh) | 一种短消息重试处理方法及装置、系统 | |
CN107749826B (zh) | 一种数据包转发方法及系统 | |
CN113328959B (zh) | 一种报文转发方法、装置、电子设备及存储介质 | |
WO2006063217A1 (en) | Maskable content addressable memory | |
CN113411152B (zh) | 一种用于tsn端系统支持高确定性网络报文接收的dma方法 | |
US20240022501A1 (en) | Data Packet Sending Method and Device | |
CN102045234B (zh) | 路由地址映射信息的缓存及超时处理方法和隧道路由器 | |
CN107528929B (zh) | Arp条目的处理方法及装置 | |
US20130145122A1 (en) | Instruction processing method of network processor and network processor | |
US7257134B2 (en) | Method of pacing the synchronization of routing information in a data switching environment | |
JP2016201795A (ja) | シンクノード状態の監視方法、装置及びシステム | |
JP5788308B2 (ja) | 整列回路及び受信装置 | |
JP4901777B2 (ja) | ネットワーク中継装置およびネットワーク中継方法 | |
CN108347494B (zh) | Mac地址老化处理方法、网络处理器芯片及通信设备 | |
CN102868621B (zh) | 一种利用异步方式实现大容量路由快速写硬件的方法 | |
CN112637053A (zh) | 路由的备份转发路径的确定方法及装置 | |
CN115002020B (zh) | 基于ospf的数据处理方法及装置 | |
US20240113996A1 (en) | Routing information management method for a layer-3 switch, and system implementing the same | |
CN114697147B (zh) | 一种设备搜索方法、装置、设备及存储介质 | |
CN110445721B (zh) | 一种报文转发方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |