CN117424862A - 报文转发方法、装置、设备及芯片系统 - Google Patents

报文转发方法、装置、设备及芯片系统 Download PDF

Info

Publication number
CN117424862A
CN117424862A CN202211691427.1A CN202211691427A CN117424862A CN 117424862 A CN117424862 A CN 117424862A CN 202211691427 A CN202211691427 A CN 202211691427A CN 117424862 A CN117424862 A CN 117424862A
Authority
CN
China
Prior art keywords
message
flow
information
flow table
processor
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.)
Pending
Application number
CN202211691427.1A
Other languages
English (en)
Inventor
胡容国
莫大明
李昶
于颀
熊鹰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to PCT/CN2023/103357 priority Critical patent/WO2024016975A1/zh
Publication of CN117424862A publication Critical patent/CN117424862A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/111Switch interfaces, e.g. port details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

公开了一种报文转发方法、装置、设备及芯片系统,涉及通信技术领域。该方法应用于包括处理器和协处理器的报文转发设备。该方法包括:报文转发设备接收第一报文,并根据第一报文携带的流标识信息查询流表。在流表中存在与第一报文携带的流标识信息匹配的目标流表项时,报文转发设备的协处理器根据目标流表项对第一报文进行转发。其中,流表包括至少一个流表项,流表项为报文转发设备的处理器根据接收到的任意流的流标识信息所创建的会话表项,目标流表项为报文转发设备的处理器根据第一报文所在的第一流的流标识信息所创建的会话表项。

Description

报文转发方法、装置、设备及芯片系统
本申请要求于2022年07月18日提交国家知识产权局、申请号为202210844312.5、申请名称为“报文传输方法和装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,尤其涉及一种报文转发方法、装置、设备及芯片系统。
背景技术
网关设备是数据通信领域中一种最为常见的设备类型,通常具备报文交换、路由和业务处理等功能。网关设备的处理器(如中央处理单元(central processing unit,CPU))具备通用计算能力,但计算特定业务(如安全加密(security,SEC)算法、报文转发等)的效率并不高。因此一般会考虑使用专用的硬件单元实现这些特定业务,也就是将这部分特定业务的计算从处理器卸载到专用硬件单元上,以提高业务的计算效率。例如,将SEC业务的计算从处理器卸载到专用的SEC单元上。又例如,将流的一部分报文转发业务的计算从处理器卸载到加速器(dispatch)上。
其中,网关设备在转发报文时,一般会先基于接收到的报文查询会话表(或称为流表),以确定当前报文所在会话的链路状态,并根据确定的链路状态对该报文进行相应处理(如转发处理)。其中,会话表是网关设备根据某一条流中的首个报文创建的,会话表一般记录有该流所在链路的链路状态,以及可以用于指示对该流中的报文进行相应处理。
然而,对于将流的一部分报文转发业务的计算从处理器卸载到加速器的网关设备而言,网关设备的处理器和加速器需要各自创建并维护一个会话表(即网关设备共创建维护两个会话表)来实现对报文的转发处理,而这样会造成网关设备的内存资源以及计算资源的浪费。
发明内容
本申请提供了一种报文转发方法、装置、设备及芯片系统,通过该方法,报文转发设备只需创建并维护一个流表即可,从而节省了报文转发设备的存储资源和计算资源。
为达上述目的,本申请提供如下技术方案:
第一方面,本申请提供了一种报文转发方法,该方法应用于包括处理器和协处理器的报文转发设备。该方法包括:报文转发设备接收第一报文,并根据第一报文携带的流标识信息查询流表。在流表中存在与第一报文携带的流标识信息匹配的目标流表项时,报文转发设备的协处理器根据目标流表项对第一报文进行转发。其中,流表包括至少一个流表项,流表项为报文转发设备的处理器根据接收到的任意流的流标识信息创建的会话表项,目标流表项为报文转发设备的处理器根据第一报文所在的第一流的流标识信息创建的会话表项。
通过本申请提供的方法,报文转发设备协处理器通过访问处理器创建的流表即可实现对报文的转发。可见,本申请提供的方法只需报文转发设备创建并维护一个流表即可。相比报文转发设备需创建并维护用于指示转发报文的软表和硬表,本申请方案能够节省报文转发设备的存储资源和计算资源。
在一种可能的设计方式中,在上述流表中不存在目标流表项时,第一报文携带的流标识信息用于报文转发设备的处理器创建目标流表项。
通过该可能的设计,报文转发设备的处理器可以根据接收到的流的第一个或前几个报文创建对应的流表项。
在另一种可能的设计方式中,上述报文转发设备的协处理器为网络处理器(network processor,NP),上述报文转发设备的处理器为中央处理单元(centralprocessing unit,CPU)或应用处理器(application processor,AP)。
通过该可能的设计,本申请中的协处理器和处理器可以具有多种实现形式,从而提高了本申请方案应用的灵活性。
在另一种可能的设计方式中,上述方法还包括:报文转发设备通过协处理器确定需要对目标流表项进行老化,以及通过协处理器向处理器上报目标流表项的老化信息。其中,目标流表项的老化信息用于指示处理器对目标流表项执行删除处理。
在另一种可能的设计方式中,上述的通过协处理器确定需要对目标流表项进行老化包括:报文转发设备通过协处理器轮询流表中的流表项,以确定在老化时长内是否接收到第二报文,第二报文携带有与目标流表项匹配的流标识信息;以及,当确定在老化时长内未接收到第二报文,报文转发设备的协处理器确定需要对目标流表项进行老化。
通过上述两种可能的设计,可以实现对流表中流表项的老化处理。这样可以及时根据报文流传输情况的变化更新流表(例如及时将小流的流表项予以删除),从而能够提高流表的利用率,并提高报文转发设备转发报文的转发效率。并且,先由报文转发设备的协处理器对流表进行轮询以确定是否需要对流表项进行老化处理,再由报文转发设备的处理器根据协处理器确定出的老化信息对目标流表项执行删除处理,这样可以节省报文转发设备处理器的计算资源。
在另一种可能的设计方式中,报文转发设备的存储器包括环形存储队列,环形存储队列包括多个环状分布的存储单元,环形存储队列中的一个存储单元用于存储一个流表项的老化信息,报文转发设备的处理器用于读取环形存储队列中读指针所指向的存储单元存储的老化信息;上述通过协处理器向处理器上报目标流表项的老化信息包括:报文转发设备通过协处理器在环形存储队列中写指针指向的存储单元中写入目标流表项的老化信息,写指针用于指向环形存储队列中为空的存储单元。
通过该可能的设计,相比协处理器对信息进行压缩打包并以报文/数据包的形式发送至处理器,该设计可以提高协处理器向处理器上送信息的效率。
在另一种可能的设计方式中,报文转发设备的协处理器包括用于轮询流表的多个线程,上述目标流表项的老化信息为该多个线程中的一个线程轮询流表中的目标流表项后确定的老化信息,则上述的报文转发设备通过协处理器在环形存储队列中写指针指向的存储单元中写入目标流表项的老化信息包括:通过第一调度器以第一预设策略对上述多个线程进行调度,以使该多个线程按照第一预设策略指示的顺序,依次向环形存储队列的存储单元写入各自确定出的老化信息。
通过该可能的设计,可以避免报文转发设备的协处理器通过多个线程轮询流表时,该多个线程同时向环形存储队列中写入老化信息时发生的写冲突或写溢出。
在另一种可能的设计方式中,上述的目标流表项包括第一指针,第一指针用于指向存储第一信息的存储空间,第一信息包括第一流的流标识信息和第一流的转发信息,第一流的转发信息用于指示第一流的转发类型和/或转发动作。
在另一种可能的设计方式中,上述的第一信息还包括第二指针,第二指针用于指向存储第二信息的存储空间,第二信息包括最新接收到的第一流中的报文的关联数据,关联数据包括用于统计第一流的流信息的数据,第一流的流信息用于在第一流的传输发生异常时的定位异常位置;在流表中存在与第一报文携带的流标识信息匹配的目标流表项时,上述方法还包括:报文转发设备通过协处理器更新第二信息,更新后的第二信息包括第一报文的关联数据。
在另一种可能的设计方式中,上述的第一信息还包括第三指针,第三指针用于指向存储第三信息的存储空间,第三信息包括报文转发设备的处理器中用于处理第一流的进程的控制参数。
通过上述几种可能的设计,通过将不同信息(如第一信息、第二信息、第三信息)通过不同的信息字段承载并分别存储,并以指针形式进行链接。这样便于设计后期协处理器和处理器对不同信息的访问权限,例如第二信息由处理器创建后由协处理器进行更新。这样,可以避免处理器和协处理器操作相同数据时发生访问冲突。
在另一种可能的设计方式中,上述流表中的流表项存储于预设的存储空间,上述的第一信息、第二信息以及第三信息存储于报文转发设备的处理器在创建目标流表项时从地址池中申请的存储空间。
通过该可能的设计,当报文转发设备中用于存储第一信息、第二信息以及第三信息的存储空间是报文转发设备在创建流表项时从存储池中申请的存储空间,则相比用于存储流表的存储空间为报文转发设备存储器中预设的固定大小的存储空间,本申请中用于存储第一信息、第二信息以及第三信息的存储空间在第一信息、第二信息以及第三信息被删除后可以及时释放回存储池,以便报文转发设备在后续创建流表时申请使用,这样可以提高报文转发设备存储空间的利用率。
在另一种可能的设计方式中,上述的流标识信息包括流的源地址信息和目的地址信息。
在另一种可能的设计方式中,上述目标流表项的老化信息包括目标流表项的地址信息和目标流表项相关信息的地址信息。其中,目标流表项的地址信息包括用于存放目标流表项的目标哈希桶中目标单元的标识号(identity,ID)和目标哈希桶在流表中的哈希地址。目标流表项相关信息的地址信息包括目标流表项中的第一指针、第一指针所指向存储空间的存储的第一信息中的第二指针和第三指针。
通过该可能的设计,当报文转发设备的协处理器确定的目标流表项老化信息包括目标流表项及其相关信息的地址信息时,报文转发设备的处理器在执行删除处理时无需耗费资源确定该老化信息,从而可以节省处理器的计算资源,进而提高了处理器处理其他业务的效率。
在另一种可能的设计方式中,上述的第一指针、第二指针以及第三指针中存储的地址包括该地址的逻辑地址和该地址的物理地址,或者,上述的第一指针、第二指针以及第三指针中存储的地址包括该地址的逻辑地址、以及包括该地址的物理地址和该地址的逻辑地址之间的对应关系。
通过该可能的设计,可以提高本申请方案实现时的灵活度。
在另一种可能的设计方式中,数据访存格式包括大端格式和小端格式,当上述报文转发设备的处理器和协处理器预设的数据访存格式不同,则协处理器用于对协处理器和处理器交互的数据进行大小端转换。
通过该可能的设计,可以避免处理器和协处理器交互的数据出错。
第二方面,本申请提供了一种报文转发装置。该报文转发装置用于执行上述第一方面提供的任一种方法。本申请可以根据上述第一方面提供的任一种方法,对该报文转发装置进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。示例性的,本申请可以按照功能将该报文转发装置划分为接收单元、处理单元和协处理单元等。上述划分的各个功能模块执行的可能的技术方案和有益效果的描述均可以参考上述第一方面或其相应的可能的设计提供的技术方案,此处不再赘述。
第三方面,本申请提供了一种报文转发设备,该报文转发设备包括:处理器和协处理器。其中,处理器被配置为调用存储在存储器中的程序指令,以根据报文转发设备接收到的任意流的流标识信息创建流表项。这里,流表项用于指示协处理器转发报文。协处理器被配置为调用存储在存储器中的程序指令,以在报文转发设备接收到第一报文后根据上述第一方面提供的任一种方法对第一报文进行转发。
第四方面,本申请提供了一种芯片系统,该芯片系统包括:处理器和协处理器。其中,处理器用于根据接收到的任意流的流标识信息创建流表项。这里,流表项用于指示协处理器转发报文。协处理器用于在接收到第一报文后根据上述第一方面提供的任一种方法对第一报文进行转发。
第五方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质包括程序指令,当程序指令在计算机上运行时,使得计算机执行第一方面中的任一种可能的实现方式提供的任一种方法。
第六方面,本申请提供了一种计算机程序产品,当其在报文转发设备上运行时,使得第一方面中的任一种可能的实现方式提供的任一种方法被执行。
可以理解的是,上述提供的任一种装置、设备、计算机存储介质、计算机程序产品或芯片系统等均可以应用于上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
在本申请中,上述报文转发装置、报文转发设备的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
附图说明
图1为本申请实施例提供的一种报文转发设备的结构示意图;
图2为本申请实施例提供的一种流表中流表项的存储结构示意图;
图3为本申请实施例提供的一种与第一报文流对应的第一流表项的结构示意图;
图4为本申请实施例提供的一种报文转发方法的流程示意图;
图5为本申请实施例提供的另一种报文转发方法的流程示意图;
图6为本申请实施例提供中报文转发设备创建目标流表项的过程示意图;
图7为本申请实施例提供中报文转发设备对流表项的访问方式的示意图;
图8为本申请实施例提供的一种流表项老化处理的过程示意图;
图9为本申请实施例提供的一种环形存储队列的结构示意图;
图10为本申请实施例提供的一种报文转发装置100的结构示意图。
具体实施方式
为了更清楚的理解本申请实施例,下面对本申请实施例中涉及的部分术语或技术进行说明:
1)、流
在本申请实施例中,流也称为报文流。报文流是指由包括相同源地址、相同目的地址以及相同传输协议的报文所组成的流,或者是由包括相同源地址、相同源端口号、相同目的地址、相同目的端口号以及相同传输协议的报文所组成的流。
2)、流表
为提高报文的转发效率,当前通常采用基于连接的“状态”的机制来控制报文转发。具体的,报文转发设备(例如网关设备)会针对报文流的首个报文或少量的前几个报文进行检测,以确定用于传输该报文流的连接的状态,继而在流表中创建与该报文流对应的流表项。其中,流表(也可以称为会话表)用于记录用于传输报文流的连接的状态。这样,报文转发设备可以根据流表中流表项记录的报文流的连接状态,对该报文流后续的大量报文进行转发。
流表中一般包括多个流表项,流表中不同的流表项对应不同的报文流,并用于指导不同的报文流进行报文转发。由于报文流的地址信息可以用于标识该报文流,因此可以通过流表项中包含的报文流的地址信息来标记流表项与报文流的对应关系。其中,报文流的地址信息包括该报文流的发送方和接收方的地址信息。作为一个示例,报文流的地址信息可以为报文流的五元组,该五元组包括报文流的源地址、源端口号、目的地址、目的端口号以及传输协议。作为另一个示例,报文流的地址信也可以为报文流的三元组,该三元组包括报文流的源地址、目的地址以及传输协议。作为又一个示例,报文流的地址信息可以为报文流的七元组,该七元组包括该文流的源地址、源端口号、目的地址、目的端口号、传输协议、接收报文的接口标识号(identity,ID)以及该报文流的处理优先级。
3)、数据访存格式
这里,数据访存格式为数据在存储器中的访存格式。数据访存格式包括大端格式(big endian)和小端格式(little endian)。其中,大端格式为:低位(字节/比特)存放于高地址中,高位(字节/比特)存放于低地址中。小端格式为:低位(字节/比特)存放于低地址中,高位(字节/比特)存放于高地址中。
作为示例,对于存储器中的地址0x4000和0x4001,假设0x4000是低地址,0x4001是高地址,则对于数据0x1234(0x表示十六进制)来说,该数据以大端格式和小端格式进行存储时,该数据的字节序如表1所示:
表1
0x4000 0x4001
大端格式 0x12 0x34
小端格式 0x34 0x12
由于大端格式和小端格式的不同,对于同一数据,向存储器写入该数据和从存储器读取该数据,设备必须使用相同的数据访存格式,否则会出现数据读取错误。
4)、其它术语
在本申请的实施例中,术语“第一”、“第二”并不是表示顺序关系,而是为了区别不同的对象,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或顺序。
还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在实际中,报文转发设备在转发报文时,可以由报文转发设备的处理器(如CPU、应用处理器(application processor,AP)等)来处理报文转发业务。为提高报文转发效率,报文转发设备可以在流表中创建指示转发某条报文流的流表项后,将该报文流后续报文的转发业务的计算从报文转发设备的处理器卸载到协处理器(如网络处理器(networkprocessor,NP))。这里,协处理器用于协同报文转发设备的处理器完成报文流的转发业务。在该场景中,报文转发设备所创建的流表包括由报文转发设备的处理器创建的软表,以及包括由报文转发设备的协处理器创建的硬表。
其中,硬表中的流表项是协处理器根据处理器下发的软表中部分流表项的相关信息创建的。并且,处理器创建的软表中包括需要报文转发设备转发的全部报文流对应的流表项,而协处理器创建的硬表中仅包括需要报文转发设备转发的部分报文流对应的流表项。也就是说,报文转发设备创建的用于指示转发某条报文流的表项存在于软表中,但不一定存在于硬表中。或者理解为,硬表的流表项所包括的内容均存在于软表中,即软表的一部分内容与硬表的内容重复。这样,报文转发设备的协处理器通过访问自身创建的硬表对接收到的报文进行转发。而对于协处理器无法转发的报文流(即硬表中不存在与该报文流对应的流表项),报文转发设备的处理器通过访问自身创建的软表对该报文流中的报文进行转发。
然而,在报文转发设备中存储具有重复内容的软表和硬表会造成报文转发设备存储资源的浪费,而报文转发设备对具有重复内容的软表和硬表分别进行维护也会造成报文转发设备计算资源的浪费。
基于此,本申请实施例提供一种报文转发方法,应用于包括处理器和协处理器的报文转发设备。在本申请实施例提供的方法中,当报文转发设备的处理器在流表中创建与报文流对应的流表项后,例如在流表中创建与第一流对应的目标流表项后,报文转发设备的协处理器能够通过直接访问流表中的目标流表项来完成对第一流的后续报文的转发。其中,报文转发设备的协处理器用于协同报文转发设备的处理器来实现报文流的转发业务。第一流的后续报文为第一流中除用于创建与第一流对应的流表项的报文之外的报文。可见,在本申请实施例提供的方法中,报文转发设备只需创建并维护一个流表即可,相比报文转发设备需创建并维护用于指示转发报文的软表和硬表,本申请实施例提供的方法能够节省报文转发设备的存储资源和计算资源。
本申请实施例还提供一种报文转发设备,该报文转发设备用于执行本申请实施例提供的报文转发方法。该报文转发设备可以是任意具有报文转发能力的设备。其中,本申请实施例对该报文转发设备所转发报文的类型不作特别限定,例如,该报文转发设备转发的报文可以是传输控制协议(transmission control protocol,TCP)报文、用户数据报协议(user datagram protocol,UDP)报文或网络控制报文协议(internet control messageprotocol,ICMP)报文等,不限于此。
作为示例,上述报文转发设备可以是网关设备、路由器、交换机、安全设备(如防火墙设备)、网络地址转换(network address translation,NAT)设备、增值业务板卡等具有报文转发能力的设备,本申请实施例对报文转发设备的具体形式不作具体限定。
参考图1,图1示出了本申请实施例提供的一种报文转发设备的结构示意图。如图1所示,报文转发设备10包括处理器101、存储器102、协处理器103、网络接口104以及总线105,其中,处理器101、存储器102、协处理器103以及网络接口104之间通过总线105连接。
处理器101是报文转发设备10的控制中心,可以是一个通用CPU,处理器101还可能是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、图形处理器(graphics processing unit,GPU)、神经网络处理单元(neuralprocessing unit,NPU)、张量处理器(tensor processing unit,TPU)或人工智能(artificial intelligent)芯片、数据处理器(data processing unit,DPU)、AP等。
作为一个示例,处理器101包括一个或多个CPU,例如图1中所示的CPU 0和CPU 1。此外,本申请并不限定每个处理器中处理器核的个数。
存储器102用于存储程序指令或应用进程所要访问的数据(如本申请实施例所述的流表),处理器101可以通过执行存储器102中的程序指令,以实现本申请实施例提供的报文转发方法。
存储器102包括易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是CPU能直接寻址访问的随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambusRAM,DR RAM)。非易失性存储器可以是储存级内存(storage class memory,SCM)、固态硬盘(solid state drive,SSD)、机械硬盘(hard disk drive,HDD)等。其中,储存级内存例如可以是非易失性内存(non-volatile memory,NVM)、相变化内存(phase-change memory,PCM)、持久化内存等。
在一种可能的实现方式中,存储器102独立于处理器101存在。存储器102通过总线105与处理器101相连接,用于存储数据、指令或者程序代码。处理器101调用并执行存储器102中存储的指令或程序代码时,能够实现本申请实施例提供的报文转发方法。
在另一种可能的实现方式中,存储器102和处理器101集成在一起。
协处理器103,用于卸载处理器101的一部分报文转发功能,从而协同处理器101实现报文流的转发业务。例如在本申请实施例中,在处理器101针对某条报文流创建对应的流表项后,协处理器103可以访问该流表项从而对该报文流的后续报文进行转发。这样,处理器101则无需对该报文流的后续报文进行转发处理,从而可以节省出一部分计算资源,节省出的计算资源则可以用于对处理器101的其他业务进行处理以提高处理该业务的效率。并且,由于协处理器103处理报文转发业务的能效通常大于处理器101处理报文转发业务的能效,因此通过协处理器103对已创建流表项的报文流进行转发,能够提高报文的转发效率。
作为示例,协处理器103是可以是加速器,或者是NP等,又或者,协处理器103可以是任意具有报文转发功能的ASIC、FPGA或者其他可编程逻辑器件、分立门或DPU等,本申请实施例对协处理器103的具体实现形式不作特别限定。
可选的,处理器101和协处理器103可以集成在不同的单板上,或者集成在同一个单板上,对此不作限定。当处理器101和协处理器103集成在同一个单板上时,处理器101和协处理器103同属一个片上芯片系统(system on chip,Soc)。
网络接口104,用于报文转发设备10与其他设备(如向网络转发设备10发送报文的设备)通过通信网络连接,所述通信网络可以是以太网,无线接入网(radio accessnetwork,RAN),无线局域网(wireless local area networks,WLAN)等。网络接口104包括用于接收数据/报文的接收单元,以及用于发送数据/报文的发送单元。
总线105,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component interconnect,PCI)总线、高速串行计算机扩展总线(peripheral component interconnect express,PCIe)、计算快速链路(computeexpress link,CXL)或扩展工业标准体系结构(extended industry standardarchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要指出的是,图1中示出的结构并不构成对报文转发设备10的限定,除图1所示部件之外,该报文转发设备10包括比图1所示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合附图对本申请实施例提供的报文转发方法进行描述。
首先,对本申请实施例提供的报文转发方法中涉及的流表进行介绍。
在本申请实施例中,流表包括至少一个流表项(或称为会话表项)。对于流表中的任一个流表项而言,该流表项为报文转发设备的处理器根据与该流表项对应的报文流的流标识信息创建的会话表项,且该流表项用于指示报文转发设备对与该流表项对应的报文流的后续报文进行转发。其中,报文转发设备的处理器创建流表项的详细说明可以参考下文S201~S207的描述,这里不作赘述。
其中,报文流的流标识信息为能够标识一条报文流的信息。作为示例,报文流的流标识信息可以是报文流的地址信息,报文流的地址信息包括报文流的源地址信息和目的地址信息。具体而言,报文流的地址信息可以是报文流中报文所携带的三元组、五元组或七元组等,详细说明可以参考上文描述,这里不再赘述。
需要说明的是,当报文流的首个报文携带有报文流完整的流标识信息,则报文转发设备的处理器根据报文流的首个报文即可在流表中创建与该报文流对应的流表项。当报文流的首个报文携带的流标识信息不完整,则报文转发设备的处理器需要根据携带有报文流完整的流标识信息的多个报文在流表中创建与该报文流对应的流表项。这里,该多个报文为包括报文流的首个报文在内的多个报文。
作为示例,以报文流的流标识信息是报文流的地址信息为例,由于基于隧道协议传输的报文流的首个报文只携带有该报文流的部分地址信息,则报文转发设备的处理器需要根据携带有报文流完整地址信息的多个报文在流表中创建与该报文流对应的流表项。
可选的,上述流表的具体形式为哈希表。与报文流对应的流表项在流表中的哈希地址可以由该报文流对应的哈希值来表征。例如,流表中流表项的哈希地址HT_ADDR可以为:HT_ADDR=HT_BASE_ADDR+CRC_Result,其中,HT_BASE_ADDR表示流表首地址,CRC_Resul表示报文流对应的哈希值。又例如,为了增加哈希地址的离散效果,可以为计算得到的与报文流对应的哈希值进行取模运算,则流表中流表项的哈希地址HT_ADDR可以为:HT_ADDR=HT_BASE_ADDR+CRC_Result的取模结果,其中,CRC_Result的取模结果可以是对完整的CRC_Result进行取模的结果,也可以是对CRC_Result中的部分数据位段进行取模的结果,这里的部分数据位段例如是高位段、低位段、中位段等,对此不作限定。
上述的报文流对应的哈希值,可以是能够标识报文流的流标识信息的哈希值。具体的,该哈希值可以是报文转发设备在创建目标流表项时,根据预设哈希算法对报文流的流标识信息进行哈希计算后得到的哈希值。其中,该预设哈希算法可以是任意的哈希算法,本申请实施例对此不作限定。
需要说明的是,多个报文流的流标识信息,即多个不同的流标识信息经上述预设哈希算法进行哈希计算后得到的哈希值可能相同。这种情况下,该多个报文流对应的流表项在流表中的哈希地址相同,因此流表中的每个哈希地址配置有哈希桶,且哈希桶中包括多个单元(unit),该多个单元可以用于存放哈希值相同的不同报文流对应的流表项,且一个单元用于存放一个流表项。换句话说,当多个报文流的流标识信息经预设哈希算法计算后得到相同的哈希值,该哈希值在流表中表征的哈希地址对应一个哈希桶,该多个报文流对应的每个流表项则分别存放于该哈希桶中的不同单元中。
可以理解的是,流表中不同哈希地址配置的哈希桶所包括的单元的数量可以相同,也可以不同,对此不作限定。此外,本申请实施例对哈希桶中所包括单元的具体数量不作具体限定,例如一个哈希桶可以包括4个单元、8个单元、16个单元或64个单元,等等。此外,在实际中,一个哈希桶所占用的存储空间的大小可以设置为256比特(bit,b),不限于此。
作为示例,参考图2,图2示出了本申请实施例提供的一种流表中流表项的存储结构示意图。如图2所示,流表20包括m个哈希地址,分别为哈希地址1~哈希地址m,且该m个哈希地址由m个哈希值表征,m是正整数。
对于哈希地址1,哈希地址1配置有哈希桶1,哈希桶1的大小为256b,共包括n个单元,分别为单元1~单元n,每个单元用于存放一个流表项,n是正整数。当报文流1的流标识信息、报文流2的流标识信息、…、以及报文流n的流标识信息分别经上述预设哈希算法计算后得到的哈希值均相同,且该哈希值表征的哈希地址为流表20中哈希地址1,则报文流1对应的流表项1、报文流2对应的流表项2、…、以及报文流n对应的流表项n分别存放于哈希地址1配置的哈希桶1的单元中,例如,流表项1存放于哈希桶1的单元1中,流表项2存放于哈希桶1的单元2中,…,以及流表项n存放于哈希桶1的单元n中。
在本申请实施例中,报文转发设备中用于存储流表的存储空间为预设固定大小的存储空间,且流表中所包括的流表项的数量为固定的预设数量。其中,报文转发设备中用于存储流表的存储空间为报文转发设备在自身的存储器中分配的一段连续的存储空间,该存储器例如图1所示的存储器102,对此不作限定。作为示例,假设流表中包括1000个哈希地址,每个哈希地址配置的哈希桶包括8个单元,该8个单元能够存放8个流表项,从而流表包括的流表项的数量最多为1000×8,即8000个,该8000个流表项可以用于指导8000条报文流的报文转发。并且,假设该流表占用的存储空间为8吉字节(gigabyte,GB),则报文转发设备预先在DDR存储器中分配连续的8GB大小的空间用于存储流表。
在一些可能的示例中,报文转发设备可以创建有多个流表。例如报文转发设备创建有第一流表和第二流表共两个流表。这样,在根据流表转发报文时,报文转发设备可以先访问第一流表,以查找用于转发报文的流表项。当报文转发设备在第一流表中未查询到该流表项时,再在第二流表中查询该流表项。通过这种方式,一方面可以增加流表容量,另一方面可以减少一些哈希冲突的概率。这里,哈希冲突为基于不同报文流的流标识信息计算得到的哈希地址相同。
下面对流表中流表项的结构进行介绍。
结合图2,以第一报文流对应的流表项为第一流表项,且第一流表项存储于图2所示的单元1中为例,对本申请实施例提供的流表中的流表项的结构进行说明。在本申请实施例中,流表中的流表项由报文转发设备的处理器创建,创建完成后的流表项被配置为:报文转发设备的处理器可读+删除流表项,报文转发设备的协处理器只读流表项。这样,通过限制处理器和协处理器对流表项的访问操作(如读、写、删除等访问操作)类型,可以避免流表项的访问冲突,从而无需为流表项加访问锁。
具体的,第一流表项中包括第一报文流对应的压缩值,该压缩值具体为以预设压缩算法对第一报文流的流标识信息进行计算后得到的压缩值。这里,该预设压缩算法为任一种压缩算法,该预设压缩算法用于将第一报文流的流标识信息从较长的数据位压缩为较少的数据位,例如将用于表征第一报文流的流标识信息的64位数据压缩为8位数据。作为示例,该预设压缩算法可以是任一种哈希算法,或者是任意的折叠算法(例如亦或折叠算法)等,不限于此。
需要说明,这里的预设压缩算法和上文所述的预设哈希算法可以是相同的算法,也可以是不同的算法,对此不作限定。
由于存放流表项的哈希桶的位置是通过以预设哈希算法对报文流的流标识信息进行计算得到的哈希值确定的,而流表项中包括的压缩值是以预设压缩算法对报文流的流标识信息进行计算得到的,因此对于第一报文流而言,第一报文流对应的第一流表项是通过第一报文流对应的哈希值和压缩值来进行定位的。因此,当第一报文流对应的哈希值和压缩值不同时,能够大大减少不同流标识信息经预设哈希算法得到相同哈希值,且经预设压缩算法计算后得到的压缩值也相同的概率,从而能够避免在报文转发时根据报文携带的流标识信息计算得到的哈希值和压缩值在流表中查找到错误的流表项,进而导致的报文错误转发的情况。
其中,可以通过将预设哈希算法和预设压缩算法配置为不同的算法来实现报文流对应的哈希值和压缩值不同。作为示例,预设哈希算法可以是循环冗余校验码(CyclicRedundancy Check,CRC)32算法,预设压缩算法为亦或折叠算法。或者,可以通过以预设哈希算法对报文流的流标识信息进行计算得到的哈希值,并取该哈希值中的部分位段作为该报文流对应的压缩值,从而实现同一个报文流的哈希值和压缩值不同。这种情况下,相当于预设哈希算法和预设压缩算法相同。
以预设哈希算法和预设压缩算法均为CRC32算法,且报文流的流标识信息为该报文流中的报文携带的完整的五元组(full key,FKEY)为例,作为一个示例,报文流对应的哈希值CRC_Result可以为:通过CRC32算法对报文流的FKEY进行计算得到的结果,即CRC_Result=hash_function(FKEY),而报文流对应的压缩值(compress key)可以为:哈希值CRC_Result的低位或高位。作为另一个示例,为提高报文流对应的哈希值和压缩值的离散性,报文流对应的哈希值可以为对前述CRC_Result的高位进行取模运算的结果,而该报文流对应的压缩值可以为对前述CRC_Result的低位进行取模运算的结果。
需要说明,上述对报文流对应的哈希值和压缩值的计算方式的说明仅为示例性说明。应理解,任意能够对报文流的流标识信息进行压缩并得到不同压缩结果(上述得到哈希值的哈希计算也可以理解为一种压缩数据的方式)的算法均在本申请实施例的保护范围之内。
上述与第一报文流对应的第一流表项中还包括第一指针,第一指针用于指向存储第一报文流的第一信息的存储空间。换句话说,对于任一个流表项中第一指针所指向的存储空间,该存储空间则用于存储该流表项所对应报文流的第一信息。例如,报文流1对应的流表项为流表项1,则流表项1中的第一指针所指向的存储空间用于存储流表项1的第一信息。
第一指针中包括自身所指向存储空间的地址(例如首地址)。由于报文转发设备的处理器一般是通过存储空间的逻辑地址访问该存储空间,而报文转发设备的协处理器一般通过存储空间的物理地址访问该存储空间,且假设用于存储第一信息的存储空间为第一存储空间,则为便于报文转发设备的处理器和协处理器均能访问第一存储空间中的第一信息,在一种可能的情况中,第一指针中存储的地址包括该地址的逻辑地址和该地址的物理地址。在另一种可能的情况中,第一指针中存储的地址包括该地址的逻辑地址、以及包括该地址的物理地址和该地址的逻辑地址之间的对应关系。该对应关系例如是物理地址相对逻辑地址之间的偏移量,对此不作限定。这样,报文转发设备的协处理器在需要访问第一存储空间时,可以根据第一指针中物理地址和逻辑地址之间的对应关系以及逻辑地址,确定出第一指针中所存储地址的物理地址,进而根据确定出的物理地址访问第一存储空间。在又一种可能的情况中,第一指针中存储的地址包括该地址的逻辑地址。这种情况下,报文转发设备的协处理器也通过逻辑地址访问第一指针所指向的存储空间,且报文转发设备的处理器和协处理器的物理地址与虚拟地址的转换规则相同。
第一报文流的第一信息包括第一报文流完整的流标识信息和第一报文流的转发信息。需要说明,在本申请实施例中,第一信息在被报文转发设备的处理器写入对应的存储空间后被配置为:报文转发设备的处理器可读+删除第一信息,报文转发设备的协处理器只读第一信息。这样,通过限制处理器和协处理器对第一信息的访问操作类型,可以避免对第一信息的访问冲突,从而无需为第一信息加访问锁。
其中,第一报文流完整的流标识信息可以是报文转发设备的处理器在创建第一流表项时,从接收到的第一报文流的首个报文或包括首个报文在内的多个报文中获取的流标识信息。第一报文流完整的流标识信息的详细说明可以参考上文,不再赘述。可选的,第一报文流的流标识信息可以为第一报文流的地址信息。作为示例,第一报文流的流标识信息为第一报文流中报文携带的五元组。
第一报文流的转发信息用于指示第一报文流的转发类型和/或转发动作等。其中,转发类型包括路由表转发或NAT转发等,不限于此。转发动作包括查找下一跳、流信息统计或速率限制等,不限于此。可以理解,第一报文流的转发信息可以是报文转发设备在创建第一流表项时,基于检测到的第一报文流的连接状态和预置的转发策略确定的,这里不作详述。
可选的,第一报文流的第一信息还包括第二指针,第二指针用于指向存储第一报文流的第二信息的存储空间。换句话说,对于任一个流表项中的第二指针所指向的存储空间,该存储空间用于存储该流表项所对应报文流的第二信息。例如,报文流1的流表项为流表项1,则流表项1中的第二指针所指向的存储空间用于存储报文流1的第二信息。
其中,第二指针中包括自身所指向存储空间的地址(例如首地址)。第二指针中所存储地址的具体形式的说明,可以参考上文中第一指针中所存储地址的描述,这里不再赘述。
第一报文流的第二信息包括报文转发设备最新接收到的第一报文流中报文(以下简称最新接收报文)的关联数据。可选的,最新接收报文的关联数据包括该报文中数据包的数量、该报文中全部数据包所包括的字节数、该报文的接收时间或该报文携带的TCP标记中的一项或多项。当然,最新接收报文的关联数据还可以包括更多该报文的相关信息,对此不作限定。
具体的,最新接收报文的关联数据可以用于报文转发设备统计第一报文流的流信息,第一报文流的流信息则用于报文转发设备在第一报文流的传输发生异常时定位异常位置。换言之,报文转发设备基于统计得到的第一报文流的流信息能够实现对第一报文流的传输情况的监测,从而在第一报文流传输异常时准确定位到发生异常的位置。作为示例,第一报文流的流信息可以包括第一报文流当前已传输的数据包数量,和/或,第一报文流中相邻报文的传输间隔等,不限于此。其中,第一报文流当前已传输的数据包数量可以通过对第一报文流中已接收的每个报文的关联数据中数据包的数量求和得到,第一报文流中相邻报文的传输间隔可以通过对第一报文流已接收报文中相邻报文关联数据中报文的接收时间求差得到。此外,上述发生异常的位置是指第一报文流中发生传输异常的报文的位置。作为示例,该位置可以通过但不限于使用报文的序列号表征。
需要说明,在本申请实施例中,上述第二信息在报文转发设备的处理器创建流表项时被首次写入对应的存储空间后被配置为:报文转发设备的处理器读+删除第二信息,报文转发设备的协处理器可读+写第二信息。换言之,第二信息在被处理器首次写入对应的存储空间后,由协处理器维护。这样,通过限制处理器和协处理器对第二信息的访问操作类型和访问操作的时机,可以避免对第二信息的访问冲突,从而无需为第二信息加访问锁。
此外,示例性的,第一报文流的第一信息的存储空间大小和第一报文流的第二信息的存储空间大小的和,一般可以设置为512b到1千比特(kilobit,kb)之间,对此不作限定。
第一报文流的第一信息还包括第三指针,第三指针用于指示存储第一报文流的第三信息的存储空间。换句话说,对于任一个流表项中的第三指针所指向的存储空间,该存储空间用于存储该流表项所对应报文流的第三信息。例如,报文流1的流表项为流表项1,则流表项1中的第三指针所指向的存储空间用于存储报文流1的第三信息。
第三指针中可以包括用于自身所指向存储空间的地址(例如首地址)。第三指针中所存储地址的具体形式的说明,可以参考上文中第一指针中所存储地址的描述,这里不再赘述。
第一报文流的第三信息包括报文转发设备的处理器中运行的用于处理第一报文流的进程的控制参数。作为示例,第一报文流的第三信息包括处理器中处理第一报文流的进程软件或控制该进程的实例ID,以及包括一些控制层面的指示信息等,对此不作详述。其中,控制层面的指示信息例如为指示是否允许将第一报文流参与的某些业务下发到协处理器处理的指示信息等,不限于此。
需要说明,在本申请实施例中,第三信息在报文转发设备的处理器创建流表项时被首次写入对应的存储空间后被配置为:报文转发设备的处理器可读+写+删除第三信息,第三信息对报文转发设备的协处理器均不可见。因此对于第三信息,处理器和协处理器不存在访问冲突,因而无需为第三信息增加访问锁。
此外,示例性的,第一报文流的第三信息的存储空间一般可以设置为256字节(byte,B)到512B,对此不作限定。
需要说明,在本申请实施例中,报文转发设备中用于存储第一报文流的第一信息、第二信息以及第三信息的存储空间,可以是报文转发设备在自身的存储器中预先为每个流表项分配的固定大小的存储空间,或者是报文转发设备在创建流表项时从存储池中申请的存储空间,对此不作限定。
当报文转发设备中用于存储上述第一信息、第二信息以及第三信息的存储空间,是报文转发设备在创建流表项时从存储池中申请的存储空间,则相比用于存储流表的存储空间为报文转发设备存储器中预设的固定大小的存储空间,用于存储上述第一信息、第二信息以及第三信息的存储空间在第一信息、第二信息以及第三信息被删除后可以及时释放回存储池,以便报文转发设备在后续创建流表时申请使用,详细可以参考下文S201-S207中创建目标流表项的描述,不再赘述。
作为一个示例,结合图2,参考图3,图3示出了本申请实施例提供的一种与第一报文流对应的第一流表项的结构示意图。
如图3所示,第一流表项包括压缩值、第一指针以及预留位。其中,压缩值为第一报文流对应的压缩值,第一指针用于指向存储第一报文流的第一信息的存储空间,相关详细说明可以参考上文描述,不再赘述。预留位为第一流表项中预留待用的字段。
如图3所示,第一信息包括有效标志、流标识信息、转发信息、第二指针、第三指针以及预留位。其中,流标识信息为第一报文流的流标识信息,转发信息为第一报文流的转发信息,第二指针用于指向存储第一报文流的第二信息的存储空间,第三指针用于指向存储第一报文流的第三信息的存储空间,相关详细说明可以参考上文描述,不再赘述。此外,第一信息中的有效标识用于指示第一信息为有效信息,预留位为第一信息中预留待用的字段。
如图3所示,第一报文流的第二信息包括包数、字节数、TCP标记、预留位以及接收时间戳。其中,假设报文转发设备最新接收到的第一报文流中的报文为报文1,则第二信息中的包数为报文1中数据包的数量,字节数为报文1中全部数据包所包括的字节数,TCP标记即为报文1携带的TCP标记,接收时间戳为表征报文1的接收时间的时间戳,相关详细说明可以参考上文描述,不再赘述。此外,第二信息中的预留位为第二信息中预留待用的字段。此外,报文转发设备中用于存储图3所述的第一信息和第二信息所需的存储空间大小,可以设置在512b到1kb之间,具体视第一信息和第二信息中所包括数据的大小决定,本申请实施例对此不作限定。
如图3所示,第三信息为软件数据,具体包括报文转发设备的处理器中运行的用于处理第一报文流的进程的控制参数,不再赘述。图3所示第三信息的存储空间可以设置为256B到512B之间,对此不作限定。
下面以报文转发设备创建有两个流表为例,对通过本申请实施例提供的流表项结构所需的存储空间大小进行示例性说明。
以报文转发设备创建的流表包括流表1和流表2为例,在一个示例中,如表2所示,表2所示“Table Name”为表名称,表名称一列中的“哈希地址1”表示流表1中的哈希地址,“哈希地址2”表示流表2中的哈希地址,“FKEY+AD”表示流表1和流表2中的第一信息和第二信息,“SW_info”表示流表1和流表2中的第三信息。“Width”表示表名称一列中每个项对应的位宽(或称为长度),“Entris”表示表名称一列中每个项在流表1和流表2中的项数,“Total”表示表名称一列中每个项对应的总存储大小。
具体的,如表2所示,假设本示例中流表1和流表2的每个哈希地址对应的哈希桶长度(即表2中哈希地址1或哈希地址2对应的“Width”)为256bit,且每个哈希桶包括4个单元,则如表2所示,当流表1中哈希地址1的数量(即表2中哈希地址1对应的“Entris”)为20971520,对应的,表示流表1包括20971520个哈希桶。这样的话,流表1对应的存储大小(即表2中哈希地址1对应的“Total”)为20971520×256bit,即约5120Mb,且流表1可存储的流表项数量(也即流表1中包括的单元的数量)为20971520×4=83886080。类似的,当流表2中哈希地址2的数量(即表2中哈希地址2对应的“Entris”)为1048576,对应的,表示流表2包括1048576个哈希桶。这样的话,流表2对应的存储大小(即表2中哈希地址2对应的“Total”)为1048576×256bit,即约256Mb,且流表2可存储的流表项数量(也即流表2中包括的单元的数量)为1048576×4=4194304。可以看出,流表1和流表2可存储的流表项的数量共计为83886080+4194304=88080384。
为减少哈希冲突的概率,即减少基于不同报文流的流标识信息计算得到的哈希值相同的概率,假设上述流表1和流表2中实际存储的流表项的数量为20971520(即约为流表1和流表2可存储的流表项总数的24%(20971520/88080384))。这种情况下,如表2所示,当流表1和流表2中所包括的每个【第一信息+第二信息】的长度(即表2所示的FKEY+AD对应的“Width”)为512bit,则流表1和流表2中【第一信息+第二信息】的存储大小(即表2所示的FKEY+AD对应的“Total”)为20971520×512bit,即约10240Mb。且当流表1和流表2中所包括的每个第三信息的长度(即表2所示的SW_info对应的“Width”)为256Byte,则流表1和流表2中第三信息的存储大小(即表2所示的SW_info对应的“Total”)为20971520×256Byte,即约5120MB。可以看出,基于本申请实施例提供的流表项的结构,表2所示的流表1和流表2共计需要的存储空间大小为:5120Mb+256Mb+10240Mb+5120MB。
表2
在另一个示例中,在哈希冲突概率类似的情况下,对表2所示的存储空间大小进行优化,例如减少流表1中哈希地址的数量(或理解为减少流表1中哈希桶的数量),而增加流表2中哈希地址的数量(即增加流表2中哈希桶的数量)。
具体的,结合表2,如表3所示,假设流表1中哈希地址1的数量相较表2减半,即为20971520÷2=10485760,而流表2中哈希地址2的数量相较表2翻2倍,即为1048576×2=2097152。
这样的话,流表1对应的存储大小为10485760×256bit,即约2560Mb,且流表1可存储的流表项数量(也即流表1中包括的单元的数量)为10485760×4=41943040。流表2对应的存储大小为2097152×256bit,即约512Mb,且流表2可存储的流表项数量(也即流表2中包括的单元的数量)为2097152×4=8838608。可以看出,流表1和流表2可存储的流表项的数量共计为41943040+8838608=50331648。
进而,当流表1和流表2中实际存储的流表项的数量仍为20971520(即约为流表1和流表2可存储的流表项总数的41%(20971520/50331648)),则相较表2所述的示例,表3所述流表1和流表2共计需要的存储空间大小为:2560Mb+512Mb+10240Mb+5120MB。
可以看出,当表3所述示例需要的存储空间相较表2所述示例需要的存储空间,节省了约2304Mb的存储空间。
表3
Table Name Width Entries Total
哈希地址1 256bit 10485760 2560Mb
哈希地址2 256bit 2097152 512Mb
FKEY+AD 512bit 20971520 10240Mb
SW_info 256Byte 20971520 5120MB
下面结合附图,对本申请实施例提供的报文转发方法进行描述。
参考图4,图4示出了本申请实施例提供的一种报文转发方法的流程示意图。可选的,该方法可以应用于具有图1所示硬件结构的报文转发设备。如图4所示,该方法包括以下步骤:
S101、报文转发设备接收第一报文。
其中,第一报文可以是任意报文流中的报文。第一报文中携带有能够标识第一报文所在报文流的流标识信息。流标识信息的详细说明可以参考上文,不再赘述。
为简单描述,本申请实施例中以第一报文所在的报文流为第一流为例进行说明。这样的话,第一报文中携带有能够标识第一流的流标识信息。
报文转发设备可以通过自身的网络接口(如图1所示的网络接口104)接收第一报文,并将第一报文上送到报文转发设备的协处理器(如图1所示的协处理器103)。这里,协处理器的详细说明可以参考上文描述,这里不再赘述。
S102、报文转发设备根据第一报文携带的流标识信息查询流表,以确定流表中是否存在与第一报文所携带流标识信息匹配的目标流表项。
流表的详细说明可以参考上文描述,不再赘述。
与第一报文所携带流标识信息匹配的目标流表项,即为与第一报文所在的第一流对应的目标流表项。该目标流表项是报文转发设备的处理器根据第一流的流标识信息创建的会话表项。这里,第一流的流标识信息为第一流完整的流标识信息,具体为报文转发设备的处理器从第一流的首个报文或包括首个报文在内的多个报文中获取的。其中,目标流表项的详细说明可以参考上文中第一流表项的描述,且报文转发设备的处理器创建目标流表项的详细说明可以参考下文S201~S207的描述,这里不作赘述。
具体的,报文转发设备的协处理器在接收到第一报文后,根据第一报文所携带的流标识信息查询流表,以确定流表中是否存在目标流表项。
报文转发设备的协处理器在接收到第一报文后,以上文所述的预设哈希算法对第一报文所携带的流标识信息进行哈希计算,得到第一哈希值,第一哈希值即为第一流对应的哈希值。协处理器还在接收到第一报文后,以上文所述的预设压缩算法对第一报文所携带的流标识信息进行计算,得到第一压缩值,第一压缩值即为第一流对应的压缩值。这里,用于计算得到第一哈希值的预设哈希算法与创建目标流表项时使用的预设哈希算法相同,以及根据第一报文所携带的流标识信息计算得到第一哈希值的详细说明,可以参考上文中“报文流对应的哈希值”的相关描述,另外,用于计算得到第一压缩值的预设压缩算法与创建目标流表项时使用的预设压缩算法相同,以及根据第一报文所携带的流标识信息计算得到第一压缩值的详细说明,可以参考上文中“第一报文流对应的压缩值”的相关描述,不再赘述。
从而,报文转发设备的协处理器可以根据第一哈希值和流表中哈希地址的对应关系查询上文所述流表,以确定出流表中第一哈希值所表征的目标哈希地址。应理解,这里“第一哈希值和流表中哈希地址的对应关系”的详细说明,可以参考上文“与报文流对应的流表项在流表中的哈希地址可以由该报文流对应的哈希值来表征”相关描述中描述的哈希值和哈希地址之间的对应关系,不再赘述。
接着,报文转发设备的协处理器根据计算得到的第一压缩值查找目标哈希地址所配置的哈希桶(以下称为目标哈希桶),以确定目标哈希桶中是否存在目标单元,该目标单元即为用于存放包括第一压缩值的流表项的单元。
当报文转发设备的协处理器确定目标哈希桶中不存在目标单元,则确定上述流表中不存在目标流表项。
当协处理器确定目标哈希桶中存在目标单元,则读取目标单元中存储的流表项,并进一步访问该流表项中的第一指针所指向的存储空间,以读取到该存储空间中存储的第一信息中的流标识信息。当协处理器确定从第一信息中读取到的流标识信息与第一报文携带的流标识信息相同,则将目标单元中存放的流表项(即前述的包括第一压缩值的流表项)确定为与第一报文所携带流标识信息匹配的目标流表项,即协处理器确定流表中存在目标流表项。当协处理器确定从第一信息中读取到的流标识信息与第一报文携带的流标识信息不同,则确定上述流表中不存在目标流表项。
在一些可能的示例中,由于为单个流表配置的存储容量有限,因此报文转发设备的处理器可能创建有多个流表,该多个流表中每个流表的流表项分别用于指示不同报文流的报文转发。这种情况下,报文转发设备的协处理器则可以基于以上描述的过程在报文转发设备的处理器创建的每个流表中逐个进行查找,以确定报文转发设备的处理器创建的流表中存在目标流表项。
S103、在上述流表中存在目标流表项时,报文转发设备的协处理器根据目标流表项对第一报文进行转发。
具体的,在报文转发设备的协处理器确定报文转发设备的处理器创建的流表中存在目标流表项,则协处理器根据目标流表项对第一报文进行转发。
其中,协处理器根据目标流表项对第一报文进行转发的具体过程可以为:报文转发设备的协处理器访问目标流表项中第一指针所指向的存储空间,以读取该存储空间中存储的第一信息中的转发信息,进而根据读取到的转发信息对第一报文进行相应的转发处理,不再详述。
通过S101-S103所述的报文转发方法,报文转发设备可以通过协处理器直接查询处理器创建的流表,并在协处理器查询到与第一报文所携带流标识信息匹配的目标流表项时,协处理器根据目标流表项对第一报文进行转发。通过该方法,报文转发设备无需创建并维护两个具有大量重复内容的流表(即上文所述的软表和硬表),而只需创建维护一个流表即可,从而不仅节省了报文转发设备用于存储流表的存储资源,还节省了报文转发设备维护流表时所需的计算资源。
在一些可能的实施例中,报文转发设备的协处理器在确定流表中存在目标流表项后,还可以在目标流表项中记录第一报文的关联数据,从而实现报文转发设备对第一报文所在第一流的流信息的统计。进而,报文转发设备基于统计到的第一流的流信息能够实现对第一流的传输情况的监测,从而在第一流传输异常时准确定位到发生异常的位置。基于此,参考图5,报文转发设备在执行S102后,还可以执行S104。
S104(可选的)、报文转发设备更新目标流表项对应的第二信息,以将第二信息中的关联数据更新为第一报文的关联数据。
其中,目标流表项对应的第二信息,即为目标流表项对应的第一流的第二信息。
具体的,报文转发设备的协处理器在确定流表中存在目标流表项后,则读取目标流表项中的第一指针,并访问第一指针指向的用于存储第一流的第一信息的存储空间,从而读取到该第一信息中的第二指针。进而,协处理器访问第二指针指向的用于存储第一流的第二信息的存储空间,并更新该存储空间中的第二信息,以将该第二信息中的关联数据更新为第一报文的关联数据。例如,协处理器将第一报文的关联数据写入用于存储第一流的第二信息的存储空间,以覆盖该第二信息中原有的报文的关联数据。其中,关联数据的详细说明,可以参考上文“关联数据”的描述,这里不再赘述。
可选的,当上述第二信息中的关联数据包括报文的接收时间,且报文转发设备的处理器和协处理器的时钟不同步时,则报文转发设备的协处理器还记录第二信息的时间标记,该时间标记用于表征第二信息中报文的接收时间是基于处理器的时钟确定的时间,或是根据协处理器的时钟确定的时间。在下文中,当第二信息中报文的接收时间是基于处理器的时钟确定的时间,则对应的时间标记为处理器时间标记。当第二信息中报文的接收时间是基于协处理器的时钟确定的时间,则对应的时间标记为协处理器时间标记。其中,第二信息的时间标记可以记录于第二信息的关联数据中,或者,第二信息的时间标记存储于存储器的预设空间,对此不作限定。报文转发设备创建以及存储时间标记的具体说明,参考下文S206的相关说明,不再赘述。
因此,当第二信息的时间标记为处理器时间标记,且记录于第二信息的关联数据中,则在协处理器更新后的第二信息中,还包括协处理器时间标记。即第二信息中的处理器时间标记被更新为协处理器时间标记。
当然,当第二信息的时间标记为处理器时间标记,且存储于上述的预设空间内,则报文转发设备的协处理器更新第二信息后,还将该预设空间内存储的处理器时间标记更新为协处理器时间标记。应理解,相比对存储于存储器预设空间内的时间标记进行更新,对记录于第二信息关联数据中的时间标记进行更新时,协处理器对存储器的访问次数更少。
作为示例,结合图3,假设相比第一报文,报文1为报文转发设备前一个接收到的第一流的报文,则第一流的第二信息中原有的关联数据为报文1的关联数据,具体包括:报文1中数据包的数量、报文1中全部数据包所包括的字节数、报文1携带的TCP标记、以及表征报文1的接收时间的时间戳。这样的话,当报文转发设备的协处理器在确定流表中存在目标流表项后,协处理器基于目标流表项中的第一指针寻址到第一流的第一信息的存储空间,并根据该第一信息中的第二指针寻址到第一流的第二信息的存储空间,进而将第一报文的关联数据写入该第二信息的存储空间,从而覆盖该第二信息中原有的关联数据。例如,更新后的第二信息中的关联数据可以为:第一报文中数据包的数量、第一报文中全部数据包所包括的字节数、第一报文携带的TCP标记、以及表征第一报文的接收时间的时间戳。
需要说明,本申请实施例对报文转发设备执行上述S103和S104的先后顺序不作限定。例如,报文转发设备可以先执行S103,再执行S104,或者,报文转发设备同时执行S103和S104,对此不作限定。
这样,通过S104,当报文转发设备每接收到一个报文,并确定流表中存在与该报文所在报文流对应的流表项,则报文转发设备对该流表项所对应报文流的第二信息进行更新,从而将第二信息中的关联数据更新为最新接收到的报文的关联数据,进而便于报文转发设备根据更新的关联数据统计报文流的流信息。这样,报文转发设备基于统计到的流信息能够实现对报文流的传输情况的监测,从而在报文流传输异常时准确定位到发生异常的位置。
在另一些实施例中,当在S102,报文转发设备的协处理器确定报文转发设备创建的流表中不存在目标流表项,则表示报文转发设备还未创建与第一报文所在的第一流对应的目标流表项。这种情况下,报文转发设备的处理器可以根据第一报文创建目标流表项。也即,第一报文用于报文转发设备的处理器创建目标流表项。
下面,以第一报文是第一报文所在的第一流的首个报文,且第一报文中携带有第一流完整的流标识信息为例,对报文转发设备根据第一报文创建目标流表项的过程进行说明。其中,第一流的流标识信息的详细说明可以参考上文中“报文流的流标识信息”的相关描述,不再赘述。
参考图6,图6示出了本申请实施例中报文转发设备创建目标流表项的过程示意图。如图6所示,该过程可以通过以下步骤实现:
S201、在上述流表中不存在目标流表项时,报文转发设备的处理器接收第一报文。
当报文转发设备的协处理器在S102中确定报文转发设备创建的流表中不存在目标流表项,则协处理器将第一报文上送到报文转发设备的处理器。作为响应,报文转发设备的处理器接收到第一报文。
可选的,报文转发设备的协处理器可以通过与处理器连接的总线(如图1所述的总线105)将第一报文上送到报文转发设备的处理器。
S202、报文转发设备的处理器创建指向第一存储空间的第一指针、指向第二存储空间的第二指针以及指向第三存储空间的第三指针。
具体的,报文转发设备的处理器可以从存储池申请的第一存储空间、第二存储空间以及第三存储空间。
其中,第一存储空间用于存储第一流的第一信息,第一流的第一信息包括第一流完整的流标识信息和第一流的转发信息。其中,第一流的完整的流标识信息的详细说明可以参考上文中“报文流的流标识信息”的相关描述,不再赘述。具体的,报文转发设备的处理器可以从第一报文中获取到第一流完整的流标识信息。第一流的转发信息可以是报文转发设备根据检测到的第一流的连接状态和预置的转发策略确定的,不再赘述。
第二存储空间用于存储第一流的第二信息,第一流的第二信息包括第一报文的关联数据。关联数据的详细说明可以参考上文中“关联数据”的描述,不再赘述。
第三存储空间用于存储第一流的第三信息,第一流的第三信息包括报文转发设备的处理器中运行的用于处理第一流的进程的控制参数。报文转发设备的处理器中运行的用于处理第一流的进程的控制参数的详细说明,可以参考上文中“报文转发设备的处理器中运行的用于处理第一报文流的进程的控制参数”的描述,不再赘述。
存储池可以为报文转发设备预先为存储流表中流表项的相关信息预留的存储空间。该存储池的大小可以根据报文转发设备的转发能力预先确定,本申请实施例对此不作限定。应理解,相比固定存储资源的方案(即设置固定的用于存储第一信息、第二信息以及第三信息的存储空间),本申请实施例通过设置允许动态申请存储空间的存储池,从而能够在报文转发设备所传输报文流的数量有较大变化时提高报文转发设备存储资源的利用率。
进一步的,报文转发设备的处理器在从存储池中申请第一存储空间、第二存储空间以及第三存储空间后,可以根据第一存储空间的首地址生成包括该首地址的第一指针,根据第二存储空间的首地址生成包括该首地址的第二指针,以及根据第三存储空间的首地址生成包括该首地址的第三指针。
需要说明,第一指针、第二指针以及第三指针中所存储的首地址的具体形式的说明,可以参考上文中第一指针中所存储地址的描述,这里不再赘述。
应理解,相比报文转发设备存储器中用于存放流表的预设固定大小的存储空间,报文转发设备的处理器在创建目标流表项时,为存储第一流的第一信息而申请的第一存储空间在该第一信息被删除后即被释放,类似的,报文转发设备的处理器为存储第一流的第二信息而申请的第二存储空间在该第二信息被删除后即被释放,报文转发设备的处理器为存储第一流的第三信息而申请的第三存储空间在该第三信息被删除后即被释放。可以理解,释放后的空间可以用于报文转发设备的处理器在创建其他流的流表项为该其他流申请,以用于存储该其他流的第一信息、第二信息以及第三信息,可见,本申请实施例提供的方案能够提高报文转发设备存储空间的利用率。
S203、报文转发设备的处理器从第一报文中获取第一报文携带的流标识信息,并基于获取到的流标识信息确定第一流对应的哈希值和压缩值。
由上文可知,第一报文携带的流标识信息即为第一报文所在第一流的流标识信息。
具体的,报文转发设备的处理器从第一报文中获取到第一流的流标识信息后,基于上文所述预设哈希算法对第一流的流标识信息进行哈希计算,即可得到第一哈希值(即S102所述的第一哈希值)。并且,报文转发设备的处理器还基于上文所述的预设压缩算法对第一流的流标识信息进行计算,得到第一压缩值(即S102所述的第一压缩值)。其中,根据第一流的流标识信息计算得到第一哈希值的详细说明,可以参考上文中“报文流对应的哈希值”的相关描述,根据第一流的流标识信息计算得到第一压缩值的详细说明,可以参考上文中“第一报文流对应的压缩值”的相关描述,不再赘述。
需要说明,本申请实施例对报文转发设备执行S202和S203的先后顺序不作具体限定。例如,报文转发设备可以先执行S202,再执行S203,或者,报文转发设备同时执行S202和S203,对此不作限定。
S204、报文转发设备的处理器根据第一流对应的哈希值在流表中确定目标单元,并在目标单元中写入第一流对应的压缩值和上述创建的第一指针。
其中,目标单元为目标哈希桶中的一个空闲单元,目标哈希桶则为第一流对应的哈希值在流表中表征的哈希地址所配置的哈希桶。
具体的,报文转发设备的处理器可以先根据第一流对应的哈希值查询流表,以确定出流表中第一流对应的哈希值所表征的目标哈希地址。接着,报文转发设备的处理器在目标哈希地址配置的目标哈希桶中空闲的单元里,确定目标单元。
可选的,报文转发设备的处理器在目标哈希桶中空闲的单元里确定目标单元时,可以随机的将任一个空间单元确定目标单元,也可以按照空闲单元在目标哈希桶中的排序,将排序最大或最小的空闲单元确定为目标单元,对此不作限定。
进而,在报文转发设备的处理器确定目标单元后,将第一流对应的压缩值和上文创建的第一指针写入目标单元。
S205、报文转发设备的处理器将第一报文携带的流标识信息、第一流的转发信息以及上述创建的第二指针、第三指针写入第一存储空间。
具体的,报文转发设备的处理器可以先根据检测到的第一流的连接状态和预置的转发策略确定第一流的转发信息。
进而,报文转发设备的处理器将从第一报文中获取的第一流的流标识信息、第一流的转发信息、以及上文创建的第二指针和第三指针写入第一存储空间。
S206、报文转发设备的处理器将第一报文的关联数据写入第二存储空间。
具体的,报文转发设备的处理器可以先基于第一报文获取第一报文的关联数据。例如,报文转发设备的处理器统计第一报文中数据包的数量和第一报文中全部数据包所包括的字节数等、从第一报文中提取第一报文携带的TCP标记、以及获取第一报文的接收时间等。
进而,报文转发设备的处理器将获取到的第一报文的关联数据作为第一流的第二信息写入第二存储空间。
可选的,当报文转发设备的处理器和协处理器的时钟不同步,且第一报文的关联数据包括报文的接收时间,则第二信息中还可以包括第二信息的时间标记,该时间标记在这里具体为处理器时间标记。因此,报文转发设备的处理器还向第二存储空间写入该处理器时间标记。这里,处理器时间标记的详细说明参考上文,这里不再赘述。
可选的,当报文转发设备的处理器和协处理器的时钟不同步,且第一报文的关联数据包括报文的接收时间,则报文转发设备的处理器还向上文所述的存储器的预设空间写入第二信息的时间标记,该时间标记在这里具体为处理器时间标记。
应理解,相比向存储器的预设空间写入处理器时间标记,在第二信息的关联数据中携带处理器时间标记可以减少后期处理器或协处理器访问存储器的次数。这是由于,当第二信息中包括第二信息的时间标记时,处理器或协处理器在存储器的第二存储空间访问到第二信息的同时,即访问到第二信息的时间标记。而当第二信息的时间标记存储于存储器的预设空间,则处理器或协处理器在存储器的第二存储空间访问到第二信息后,还需再次访问存储器,以从存储器的预设空间读取第二信息的时间标记。
S207、报文转发设备的处理器将自身处理第一流的进程的控制参数写入第三存储空间。
其中,报文转发设备的处理器处理第一流的进程的控制参数即为上文所述的第三信息,详细说明可以参考上文中第三信息的相关描述,不再赘述。
需要说明,本申请实施例对报文转发设备执行S204-S207的先后顺序不作具体限定。例如,报文转发设备可以依次执行S204-S207,或者,报文转发设备同时执行S204-S207,对此不作限定。
至此,通过S201-S207所述的过程,报文转发设备根据第一报文创建得到第一报文所在第一流对应的目标流表项。
应理解,在本申请实施例中,报文转发设备的处理器在创建完成流表项后,该流表项还被配置为:报文转发设备的处理器对流表项、第一信息、第二信息以及第三信息拥有读权限和删除权限,且报文转发设备的处理器对第二信息不具备写权限,而报文转发设备的协处理器对流表项和第一信息拥有只读权限,且对第二信息拥有读+写权限,以及第三信息对报文转发设备的协处理器不可见。通过这样的配置,报文转发设备的处理器和协处理器访问流表时,通过时间和存储空间的双重隔离实现了对流表的无读写冲突的访问。
为更具体的说明本申请实施例中报文转发设备对流表项的访问方式,参考图7,图7示出了本申请实施例中报文转发设备对流表项的访问方式的示意图。
其中,图7中的虚线箭头用于指示不同信息之间的所属关系。如图7所示,哈希桶70中包括n个单元,分别为单元1、单元2、…、以及单元n,流1对应的流表项701存放于哈希桶70的单元1中。并且,流表项701中的第一指针所指向的存储空间中存储有流1的第一信息,流1的第一信息中的第二指针所指向的存储空间中存储有流1的第二信息,以及流1的第一信息中的第三指针所指向的存储空间中存储有流1的第三信息。流1的第一信息、第二信息以及第三信息的详细说明这里不再赘述。
此外,图7中的实线箭头用于表示报文转发设备的处理器71和协处理器72对流表项中各个信息的访问方式。对于从处理器71或协处理器72指向表格信息的箭头,表示允许处理器71或协处理器72向存储该表格信息的存储空间写入数据,对于从表格信息指向处理器71或协处理器72的箭头,表示允许处理器71或协处理器72从存储该表格信息的存储空间读取数据。
如图7所示,在报文转发设备的处理器71创建流表项701的阶段,处理器71可以向哈希桶70中的单元1写入与流1对应的流表项701,向流表项701中的第一指针指向的存储空间写入流1的第一信息,向流1的第一信息中的第二指针所指向的存储空间写入流1的第二信息,以及向流1的第一信息中的第三指针所指向的存储空间写入流1的第三信息。
如图7所示,在流表项701被报文转发设备的处理器71创建完成后的阶段,即流表项701用于指导流1转发后续报文的阶段,报文转发设备的协处理器72可以读取哈希桶70中单元1存储的流表项701、流1的第一信息和第二信息,且能够向存储流1的第二信息的存储空间中写入数据(如上文所述的更新第二信息)。报文转发设备的处理器71可以读取图7中所示的每个信息(图中未示出),并且报文转发设备的处理器71访问流1的第二信息的访问能力为只读。这样,可以避免处理器71和协处理器72同时向存储流1的第二信息的存储空间中写入数据而造成的访问冲突。
此外,由于报文转发设备的流表存储于报文转发设备预先在自身存储器中分配的具有固定大小的一段存储空间中,因此报文转发设备通过执行S201-S207创建流表项时,可以直接将报文流对应的压缩值和为该报文流创建的第一指针直接写入该存储空间,即报文转发设备直接访问存储器,从而直接在存储器中的流表中创建流表项。这样的话,可以保证在处理器创建完成流表项后的第一时间,报文转发设备的协处理器即能够访问到该流表项,从而提高报文转发设备转发报文流的转发效率。
在这种情况下,报文转发设备的处理器和协处理器在访问流表时,均无需通过缓存。
然而,由于报文转发设备是通过处理器来执行S201-S207的,而处理器访问(包括读+写等操作)存储器的方式通常为:通过缓存(cache)访问存储器。因而,当报文转发设备的处理器直接访问存储器,从而直接在存储器中的流表中创建流表项时,需要修改处理器访问存储器的访问方式,即,将处理器访问存储器的访问方式,从通过缓存访问修改为直接访问。然而通过缓存访问存储器能够有效提高处理器的业务处理效率,因此修改处理器访问存储器的访问方式后会降低处理器上运行的其他业务的处理效率。
因此,在一种可能的实现方式中,报文转发设备的处理器通过执行S201-S207先在缓存中创建流表中的流表项,并指示缓存在流表项创建完成后将该流表项即时刷入存储于存储器的流表中。这样,则无需修改处理器访问存储器的访问方式,同时也能保证处理器创建完成流表项后的第一时间,报文转发设备的协处理器即能够访问到该流表项,从而提高报文转发设备转发报文流中报文的转发效率。
这种情况下,报文转发设备的处理器在访问流表时,可以通过缓存访问流表。而报文转发设备的协处理器则可以直接通过流表的物理地址访问流表,也可以通过流表的逻辑地址经缓存访问流表,对此不作限定。
可选的,当报文转发设备的处理器和协处理器均通过缓存访问流表时,可以与报文转发设备处理的其他业务共用缓存,也可以采用报文转发设备为访问流表分配的专用缓存,对此不作限定。在一个示例中,报文转发设备为访问流表专门分配的缓存的大小,可以设置为不超过报文转发设备所配置的全部缓存空间的1/8大小。
应理解,当报文转发设备的处理器和协处理器均通过缓存访问流表时,在报文转发设备待转发的报文流的数量很大的场景下,缓存中将会有大量的刷新操作。如果报文转发设备的处理器和协处理器访问流表时与其他业务共用缓存,会造成该其他业务在缓存中的数据被删除,从而导致该其他业务的处理效率下降。因此,报文转发设备为访问流表分配的专用缓存,可以避免对报文转发设备中其他业务的处理效率的影响。
在又一些可能的实施例中,当某个报文流停止传输报文,此时需要报文转发设备将流表中与该报文流对应的流表项删除,从而释放出相应的存储空间来存储其他报待传输报文流的流表项,这一过程也可以称为是对流表中的流表项进行老化处理的过程。
下面对本申请实施例提供的流表中的流表项进行老化处理的过程进行描述。
以对报文转发设备对上述的目标流表项进行老化处理为例,参考图8,图8示出了本申请实施例提供的一种流表项老化处理的过程示意图。该过程可以包括以下步骤。
S301、报文转发设备的协处理器确定需要对目标流表项进行老化。
具体的,报文转发设备的协处理器可以先轮询流表中的流表项,从而确定在老化时长内是否接收到第二报文。这里,第二报文为携带有与目标流表项匹配的流标识信息的报文。由于目标流表项是基于第一流的流标识信息创建的会话表项,因此与目标流表项匹配的流标识信息即为第一流的流标识信息。进一步的,携带有与目标流表项匹配的流标识信息的第二报文即为第一流的报文。这样,第二报文也可以理解为是需要根据目标流表项进行报文转发的报文。
可选的,报文转发设备的协处理器可以周期性的轮询流表中的流表项,从而确定在老化时长内是否接收到第二报文。其中,老化时长和轮询周期的周期时长均为预设的一段时长,老化时长可以和轮询周期的周期时长相同,也可以不同。本申请实施例对老化时长和轮询周期的周期时长的具体取值不作限定。作为示例,老化时长为8分钟,或者10分钟等,轮询周期的周期时长为4分钟、5分钟等等,不限于此。
具体的,报文转发设备的协处理器确定在老化时长内是否接收到第二报文的具体实现方式的详细说明,可以参考下文描述,这里不再赘述。
进而,当报文转发设备的协处理器确定在老化时长内未接收到第二报文,表示报文转发设备在老化时长内没有接收到需要基于目标流表项进行转发的报文,或者理解为需要基于目标流表项进行转发报文的报文流中断传输的时长已经超过老化时长。这种情况下,报文转发设备的协处理器确定需要对目标流表项进行老化,则执行S302。
相反,当报文转发设备的协处理器确定在老化时长内接收到第二报文,表示报文转发设备在老化时长内接收到需要基于目标流表项进行转发的报文,或者理解为需要基于目标流表项进行转发报文的报文流并未中断传输,而是正常传输的。这种情况下,报文转发设备的协处理器确定无需对目标流表项进行老化,进而继续轮询流表,如轮询处理目标流表项的下一个流表项。
S302、报文转发设备的协处理器向处理器上报目标流表项的老化信息,目标流表项的老化信息用于指示处理器对目标流表项执行删除处理。
具体的,报文转发设备的协处理器在确定需要对所述目标流表项进行老化后,先确定目标流表项的老化信息。
一种可能的实现方式,报文转发设备的协处理器在确定需要对所述目标流表项进行老化后,将目标流表项的地址信息和目标流表项相关信息的地址信息确定为目标流表项的老化信息。其中,目标流表项的地址信息包括:用于存放目标流表项的目标哈希桶中目标单元的ID和目标哈希桶在流表中的哈希地址。目标流表项相关信息的地址信息包括:目标流表项中的第一指针、第一指针所指向存储空间的存储的第一信息中的第二指针和第三指针。可以看出,在这种实现方式中,报文转发设备的协处理器根据目标流表项查找并确定出目标流表项及其相关信息的地址信息,并将查找到的地址信息确定为目标流表项的老化信息。这样,无需用于执行删除处理的处理器耗费计算资源来查找目标流表项及其相关信息的地址信息,从而节省了处理器的计算资源,进而提高了处理器处理其他业务的效率。
另一种可能的实现方式,报文转发设备的协处理器在确定需要对所述目标流表项进行老化后,将目标流表项的地址信息确定为目标流表项的老化信息,或者,将与目标流表项匹配的流标识信息确定为目标流表项的老化信息。其中,目标流表项的地址信息包括:用于存放目标流表项的目标哈希桶中目标单元的ID和目标哈希桶在流表中的哈希地址。进而,报文转发设备的处理器在获取到协处理器上报的老化信息后,基于获取到的老化信息确定目标流表项及其相关信息的地址信息。
例如,处理器接收到的老化信息包括目标流表项的地址信息,则处理器根据目标流表项的地址信息确定目标流表项相关信息的地址信息。具体的,处理器根据目标流表项的地址信息读取目标流表项的内容,并基于目标流表项中的第一指针确定上文所述的第二指针和第三指针,从而处理器获取到目标流表项相关信息的地址信息。
又例如,处理器接收到的老化信息包括与目标流表项匹配的流标识信息,则处理器根据与目标流表项匹配的流标识信息在流表中查找目标流表项,以确定目标流表项的地址信息和目标流表项相关信息的地址信息。具体的,处理器根据与目标流表项匹配的流标识信息在流表中查找目标流表项,以获取目标流表项的地址信息。处理器还根据查找到的目标流表项的中的第一指针,确定上述所述的第二指针和第三指针,从而获取到目标流表项相关信息的地址信息。
进一步,报文转发设备的协处理器在确定目标流表项的老化信息后,向处理器上报目标流表项的老化信息。
在一种可能的实现方式中,报文转发设备的协处理器将确定的目标流表项的老化信息打包为老化报文,并将打包后的老化报文发送至处理器。
在另一种可能的实现方式中,报文转发设备的协处理器可以通过环形存储队列向处理器上报目标流表项的老化信息。其中,报文转发设备的协处理器通过环形存储队列向处理器上报目标流表项的老化信息的详细说明可以参考下文描述,这里不作赘述。
S303、报文转发设备的处理器根据协处理器上报的目标流表项的老化信息,对目标流表项执行删除处理。
可选的,当报文转发设备的处理器接收到协处理器发送的老化报文,即可根据从该老化报文中获取的老化信息,对目标流表项执行删除处理。
可选的,报文转发设备的处理器可以根据从环形存储队列获取的老化信息,对目标流表项执行删除处理。其中,报文转发设备的处理器从环形存储队列获取的老化信息的详细描述可以参考下文中对“报文转发设备的协处理器通过环形存储队列向处理器上报目标流表项的老化信息”中的相关的描述,不再赘述。
一种可能的情况中,当报文转发设备的处理器获取到的老化信息包括目标流表项的地址信息和目标流表项相关信息的地址信息,则处理器直接根据老化信息中的地址信息的指示,对目标流表项执行删除处理。
另一种可能的情况中,当报文转发设备的处理器获取到的老化信息包括目标流表项的地址信息,或者包括与目标流表项匹配的流标识信息,则报文转发设备的处理器先根据获取到的老化信息确定目标流表项的地址信息和目标流表项相关信息的地址信息。然后再根据确定出的地址信息,对目标流表项执行删除处理。
其中,报文转发设备的处理器根据获取到的老化信息确定目标流表项的地址信息和目标流表项相关信息的地址信息的详细说明,可以参考上文中“报文转发设备的处理器在获取到协处理器上报的老化信息后,基于获取到的老化信息确定目标流表项及其相关信息的地址信息”的描述,不再赘述。
具体的,报文转发设备的处理器对目标流表项执行的删除处理包括:根据目标流表项的地址信息指示的地址清空流表哈希桶中用于存放目标流表项的目标单元、根据第一指针删除该第一指针所指向的第一存储空间中的第一信息、根据第二指针删除该第二指针所指向的第二存储空间的第二信息、以及根据第三指针删除该第三指针所指向的第三存储空间中的第三信息。
可以理解的是,当处理器删除第一存储空间中的第一信息、第二存储空间的第二信息、以及第三存储空间中的第三信息后,相当于存储池收回了为空的第一存储空间、第二存储空间以及第三存储空间。这样,在报文转发设备在后续创建其他报文流的流表项时,可以从收回了第一存储空间、第二存储空间以及第三存储空间的存储池中申请用于存储该报文流的第一信息、第二信息以及第三信息的存储空间。
至此,本申请实施例通过S301-S303实现了对流表中流表项的老化处理,这样可以及时根据报文流传输情况的变化更新流表(例如及时将小流的流表项予以删除),从而能够提高流表的利用率,并提高报文转发设备转发报文的转发效率。以及,本申请实施例在对流表项进行老化处理后,释放了该流表项对应的第一存储空间、第二存储空间以及第三存储空间,这样可以提高报文转发设备存储资源的利用率。
此外,通过报文转发设备的协处理器执行S301和S302,再由报文转发设备的处理器根据协处理器确定出的老化信息对目标流表项执行删除处理的方式,可以节省处理器的计算资源。
在一些可能的实施例中,上述S301也可以由报文转发设备的处理器执行。这样的话,报文转发设备的处理器在确定需要对目标流表项进行老化后,可以进一步确定老化信息,并根据老化信息执行上述的删除处理。
下面示例性的对上文所述的“报文转发设备的协处理器确定在老化时长内是否接收到第二报文”的具体实现方式进行说明。
实现方式1
报文转发设备的协处理器根据目标流表项,确定出协处理器当前时间和报文转发设备最近一次接收到第二报文的时间的时间差,并基于该时间差确定在老化时长内是否接收到第二报文。
具体的,报文转发设备的协处理器可以周期性的遍历流表,以轮询流表中的每个流表项。当报文转发设备的协处理器轮询到目标流表项时,可以根据目标流表项确定最近一次接收到第二报文的时间。具体过程为:当报文转发设备的协处理器轮询到目标流表项,可以读取目标流表项中的第一指针,并根据第一指针,从第一指针所指向的第一存储空间读取第一信息。进而,报文转发设备的协处理器根据第一信息中的第二指针,从第二指针所指向的第二存储空间读取第二信息,从而获取到第二信息中记录的报文的接收时间。应理解,第二信息中报文的接收时间即为报文转发设备最新接收到的与目标流表项对应的第一流的报文的时间,也即报文转发设备最近一次接收到第二报文的时间。
进一步,在一种可能的情况中,当报文转发设备的协处理器和处理器的时钟同步,报文转发设备的协处理器将协处理器当前时间和从第二信息中获取的报文的接收时间之差,确定为协处理器当前时间和报文转发设备最近一次接收到第二报文的时间的时间差,即该时间差=协处理器当前时间-报文转发设备最近一次接收到第二报文的时间。
在另一种可能的情况中,当报文转发设备的协处理器和处理器的时钟不同步(即异步),报文转发设备的处理器在创建目标流表项,且目标流表项的第二信息包括报文的接收时间时,处理器记录有第二信息的时间标记,且该时间标记在目标流表项的使用过程中由报文转发设备的协处理器更新,详细说明可以参考S104的相关描述,不再赘述。
这种情况下,报文转发设备的协处理器还需获取第二信息的时间标记。其中,当目标流表项的第二信息中包括第二信息的时间标记,则报文转发设备的协处理器从第二信息中读取该时间标记。当该时间标记存储于上文所述的预设空间,则报文转发设备的协处理器从该预设空间读取该时间标记。
当报文转发设备的协处理器获取的时间标记为协处理器时间标记,则报文转发设备的协处理器直接将协处理器当前时间和从第二信息中获取的报文的接收时间之差,确定为上述时间差,即时间差=协处理器当前时间-报文转发设备最近一次接收到第二报文的时间。
当报文转发设备的协处理器获取的时间标记为处理器时间标记,则报文转发设备的协处理器获取自身的当前时间和处理器的当前时间,并根据自身的当前时间和处理器的当前时间计算自身和处理器的同步时差。具体的,该同步时差为协处理器当前时间和处理器当前时间之差的绝对值,即同步时差=|协处理器当前时间-处理器当前时间|。进而,报文转发设备的协处理器根据同步时差、协处理器当前时间、以及从第二信息中获取的报文的接收时间,计算得到上述时间差。具体的,报文转发设备的协处理器将从第二信息中获取的报文的接收时间扣除同步时差后,再与自身的当前时间求差,即得到上述时间差。也即:上述时间差=协处理器当前时间-(从第二信息中获取的报文的接收时间-同步时差)。
这样,当报文转发设备的协处理器确定上述时间差小于老化时长,则确定报文转发设备在老化时长内接收到第二报文。反之,当报文转发设备的协处理器确定该时间差大于老化时长,则确定在老化时长内未接收到第二报文。其中,本申请实施例对该时间差等于老化时长的情况不作限定。例如,报文转发设备的协处理器可以在该时间差等于老化时长时,确定在老化时长内接收到第二报文,或者,确定在老化时长内未接收到第二报文。
实现方式2
报文转发设备的处理器在创建流表项时,为该流表项创建老化标记。可选的,该老化标记可以创建于存储器的预设空间内,或者,该老化标记可以创建于流表项的第二信息中。其中,该预设空间可以与上文所述的用于存储时间标记的预设空间相同,也可以不同,对此不作限定。应理解,相比在存储器的预设空间内创建老化标记,老化标记创建于流表项的第二信息中,能够减少后续报文转发设备的处理器或协处理器访问存储器的次数。
其中,在报文转发设备的处理器创建老化标记后,将该老化标记清0。每当报文转发设备的协处理器根据接收到的报文,在流表中查找到与该报文携带的流标识信息匹配的流表项时,报文转发设备的协处理器将该流表项的老化标记清0。
具体的,报文转发设备的协处理器周期性的轮询目标流表项的老化标记(以下称为目标老化标记)。
当报文转发设备的协处理器在某个轮询周期内轮询到目标流表项的老化标记,一种情况中,若报文转发设备的协处理器确定目标老化标记的取值达到阈值(或称为第一阈值)时,则确定报文转发设备在老化时长内未接收到第二报文。另一种情况中,若报文转发设备的协处理器确定目标老化标记的取值小于第一阈值时,则将目标老化标记的取值加1。其中,第一阈值可以是老化时长被等分为多个时长的数量k。这种情况下,报文转发设备的协处理器轮询流表项的周期为1/k个老化时长。
可以理解的是,当报文转发设备的协处理器确定目标老化标记的取值达到第一阈值,表示报文转发设备的协处理器上一次接收到第二报文,并对目标老化标记清0后,截止确定目标老化标记的取值达到第一阈值的时刻,报文转发设备并未再接收到第二报文。由于距离上一次对目标老化标记清0后,截止确定目标老化标记的取值达到第一阈值的时刻的时长,至少为报文转发设备的协处理器轮询流表项的周期(即1/k个老化时长)和第一阈值k的乘积,即老化时长,因此,当报文转发设备的协处理器确定目标老化标记的取值达到第一阈值,表示报文转发设备在老化时长内未接收到第二报文。
需要说明,报文转发设备的协处理器对老化标记清0的线程为执行上文所述S101-S104的线程,该线程与报文转发设备的协处理器轮询目标流表项的老化标记的线程为不同的线程。由于不同的线程在更新同一个老化标记时可能会发生写冲突,因此,在实现方式2中,报文转发设备的协处理器的不同线程在访问老化标记时需要进行加锁访问。
下面结合附图对上文所述的“报文转发设备的协处理器通过环形存储队列向处理器上报目标流表项的老化信息”进行详细描述。
报文转发设备可以在存储器中配置环形存储队列,该环形存储队列包括多个环状分布的存储单元,环形存储队列中的一个存储单元用于存储一个流表项的老化信息。作为示例,在本申请实施例中,环形存储队列中存储单元的个数可以设置为8个倍数。
环形存储队列中存储单元的排序以任一个存储单元为起点沿环状分布依次递增。例如,环形存储队列中存储单元的排序以任一个存储单元为起点,沿该环形存储队列所在环形的预设方向依次递增。其中,环形存储队列所在环形的预设方向可以是该环形的顺时针方向,或者是逆时针方向,对此不作限定。可以看出,环形存储队列中存储单元的排序,可以表征该存储单元在环形存储队列中的位置。
环形存储队列中配置有读指针和写指针。
其中,读指针指向环形存储队列中任一个存储有老化信息的存储单元,并用于指示报文转发设备的处理器可以读取该存储单元中存储的老化信息。并且,当读指针指向的存储单元中存储的数据被读取,该存储单元会则变为空的存储单元,且读指针按照上述预设方向向与该存储单元排序相邻的存储单元移动。
写指针指向环形存储队列中任一个为空的存储单元,并用于指示报文转发设备的协处理器可以在该存储单元中写入流表项的老化信息。并且,当写指针指向的存储单元被写入数据,则写指针按照上述预设方向向与该存储单元排序相邻的存储单元移动。
这样,通过报文转发设备的协处理器向环形存储队列的存储单元中写入流表项的老化信息,而报文转发设备的处理器读取环形存储队列的存储单元中存储的流表项的老化信息,即可实现报文转发设备的协处理器向处理器上报目标流表项的老化信息的目的。
以上述预设方向为环形存储队列所在环形的顺时针方向,且环形存储队列包括8个环状分布的存储单元为例,示例性的,参考图9,图9示出了本申请实施例提供的一种环形存储队列的结构示意图。
如图9所示,环形存储队列90包括8个环状分布的存储单元,分别为存储单元0~存储单元7,图9中以标注有数字的圆圈表示。以存储单元0为起点,该8个存储单元沿环形存储队列90所在环形的顺时针方向的排序依次递增,为0~7。其中,环形存储队列90所在环形的顺时针方向即为图9所示的方向1。如图9所示,存储单元0的排序为0,存储单元1的排序为1,存储单元2的排序为2,…,存储单元7的排序为7。
此外,如图9中的(a)所示,环形存储队列90配置的读指针和写指针均指向存储单元0。这种情况下,表示当前环形存储队列90中的存储单元全部为空。
具体的,报文转发设备的协处理器可以通过下述两种方式向环形存储队列写入目标流表项的老化信息。
方式1、报文转发设备的协处理器在确定目标流表项的老化信息后,直接向环形存储队列中写指针指向的存储单元写入目标流表项的老化信息。
方式2、报文转发设备的协处理器在确定目标流表项的老化信息后,先根据环形存储队列中读指针和写指针的位置,确定环形存储队列中为空的存储单元的数量是否大于或等于阈值(或称为第二阈值)。以及,在确定环形存储队列中为空的存储单元的数量大于或等于第二阈值时,向写指针指向的存储单元写入目标流表项的老化信息。其中,该第二阈值可以是大于1的整数。例如,该第二阈值的取值可以为2或3等。
可以理解的是,当环形存储队列中为空的存储单元数量大于或等于第二阈值,表示环形存储队列的存储状态为非将满,也就是表示环形存储队列中还存在大于或等于第二阈值数量个为空的存储单元。相反,当环形存储队列中为空的存储单元数量小于第二阈值,表示环形存储队列的存储状态为将满,也就是表示环形存储队列中的存储单元即将存满,或者理解为环形存储队列中仅存在小于预设数量个为空的存储单元。
通过在向写指针指向的存储单元中写入老化信息前先判断环形存储队列中为空的存储单元的数量大于或等于第二阈值,并在大于或等于第二阈值时才向写指针指向的存储单元中写入老化信息,这样可以有效避免环形存储队列发生写溢出的问题。其中,写溢出是指在环形存储队列中写指针指向的存储单元写入数据,写指针移动后与读指针指向了同一个存储单元的现象。作为示例,如图9中的(b)所示,环形存储队列90的写指针指向存储单元7,读指针指向存储单元0。当报文转发设备的协处理器向存储单元7写入老化信息后,写指针按照方向1移动至存储单元0。若此时存储单元0中的老化信息未被读取,则环形存储队列90的读指针和写指针将重合,此时即发生了写溢出现象。此时,环形存储队列90中的存储单元会被清空,从而导致未被读取的老化信息丢失,这样会造成报文转发设备的处理器无法获取到这些老化信息,进而导致相应流表项的老化处理失败。
可选的,报文转发设备的协处理器可以根据环形存储队列中读指针和写指针所指向存储单元的排序,确定环形存储队列中为空的存储单元数量是否大于或等于第二阈值。为便于表述,下文中将环形存储队列中读指针指向的存储单元的排序称为读排序,将环形存储队列中写指针指向的存储单元的排序称为写排序。
以环形存储队列中存储单元的排序以上文所述预设方向递增为例,一种可能的情况中,当报文转发设备的协处理器确定环形存储队列中的读排序小于写排序,表示环形存储队列中的读指针和写指针跨环形存储队列的头尾。这种情况下,报文转发设备的协处理器确定读排序和环形存储队列中存储单元的数量之和,减去写排序的差值是否大于或等于上述第二阈值。另一种可能的情况中,当报文转发设备的协处理器确定环形存储队列中的读排序大于写排序,表示环形存储队列中的读指针和写指针未跨环形存储队列的头尾。这种情况下,报文转发设备的协处理器确定读排序减去写排序的差值是否大于或等于上述第二阈值。
应理解,上述差值即表示环形存储队列中为空的存储单元的数量。进而,当报文转发设备的协处理器确定上述差值大于或等于第二阈值,则确定环形存储队列中空的存储单元数量大于或等于第二阈值。当报文转发设备的协处理器确定上述差值小于第二阈值,则确定环形存储队列中空的存储单元数量小于第二阈值。
以第二阈值的取值为3为例,示例性的,如图9中的(c)所示,当报文转发设备的协处理器确定环形存储队列90的写排序为4,读排序为2,则报文转发设备的协处理器确定读排序小于2小于写排序4,则报文转发设备的协处理器根据读排序和环形存储队列90中存储单元的数量之和,减去写排序得到上述差值,即上述差值=2+8-4=6,表示环形存储队列90中还存在6个为空的存储单元(包括存储单元1、0、7、6、5以及写指针指向的存储单元4)。进而,由于6>3,因此,报文转发设备的协处理器确定环形存储队列90中空的存储单元数量是大于第二阈值。
类似的,如图9中的(d)所示,当报文转发设备的协处理器确定环形存储队列90的写排序为7,读排序为1,则报文转发设备的协处理器确定读排序小于1小于写排序7,则报文转发设备的协处理器确定上述差值=1+8-7=2,表示环形存储队列90中仅存在2个为空的存储单元(包括存储单元0和写指针指向的存储单元7)。进而,由于2<3,因此,报文转发设备的协处理器确定环形存储队列90中空的存储单元数量是小于第二阈值。
如图9中的(e)所示,当报文转发设备的协处理器确定环形存储队列90的写排序为1,读排序为5,则报文转发设备的协处理器确定读排序5大于写排序1,则报文转发设备的协处理器根据读排序减去写排序的差值得到上述差值,即上述差值=5-1=4,表示环形存储队列90中还存在4个为空的存储单元(包括存储单元4、3、2以及写指针指向的存储单元1)。进而,由于4>3,因此,报文转发设备的协处理器确定环形存储队列90中空的存储单元数量是大于第二阈值。
类似的,如图9中的(f)所示,当报文转发设备的协处理器确定环形存储队列90的写排序为4,读排序为5,则报文转发设备的协处理器确定读排序5大于写排序4,则报文转发设备的协处理器确定上述差值=5-4=1,表示环形存储队列90中仅存在1个为空的存储单元(即写指针指向的存储单元4)。进而,由于1<3,因此,报文转发设备的协处理器确定环形存储队列90中空的存储单元数量是小于第二阈值。
进一步,当报文转发设备的协处理器确定环形存储队列中空的存储单元数量大于或等于第二阈值,则向写指针指向的存储单元写入目标流表项的老化信息。
当报文转发设备的协处理器确定环形存储队列中空的存储单元数量是小于或等于第二阈值,则向报文转发设备的处理器发送提示信息,以提示处理器读取环形存储队列中存储的老化信息。以及,在预设时长后重新执行上述确定环形存储队列中空的存储单元数量是否大于或等于第二阈值的过程。本申请实施例对该预设时长的具体取值不作具体限定。
一些可能情况中,报文转发设备的协处理器可能通过多个线程轮询流表。例如,报文转发设备的协处理器将流表划分为多个子流表,进而通过多个线程并行的轮询每个子流表中的流表项,以能够提高轮询流表的效率。这种情况下,报文转发设备的协处理器用于轮询流表的多个线程可能在同一时间或短时间内确定出多个流表项的老化信息,并需要将这些老化信息写入环形存储队列。
这种情况下,为避免多个线程通过执行上述的方式1或方式2向环形存储队列的存储单元写入老化信息时发生写冲突或写溢出,可选的,报文转发设备的协处理器可以预先配置第一调度器,并通过第一调度器以第一预设策略对需要向环形存储队列中写入老化信息的多个线程进行调度,以使该多个线程按照第一预设策略指示的顺序,依次执行上述的方式1或方式2,以向环形存储队列的存储单元写入各自确定出的老化信息。
进而,在报文转发设备的协处理器将老化信息写入环形存储队列后,报文转发设备的处理器可以从环形存储队列中读取协处理器写入的老化信息,这样,即实现了报文转发设备的协处理器向处理器上报老化信息的目的。
可选的,报文转发设备的处理器可以周期性的读取环形存储队列中存储的老化信息。这里对读取环形存储队列中存储的老化信息的周期时长不作具体限定。
可选的,报文转发设备的处理器可以在接收到协处理器发送的提示信息后,读取环形存储队列中存储的老化信息。
一些可能情况下,报文转发设备的处理器通过多个线程读取环形存储队列中的老化信息,从而该多个线程根据各自获取到的老化信息分别执行上文所述的删除处理。这种情况下,为避免多个线程从同一个环形存储队列的存储单元读取老化信息,可选的,报文转发设备的处理器可以预先配置第二调度器,并通过第二调度器以第二预设策略对处理器中用于从环形存储队列的存储单元中读取老化信息的多个线程进行调度,以使该多个线程按照第二预设策略指示的顺序,依次从环形存储队列的存储单元中读取老化信息。
在又一些可能的实施例中,报文转发设备的处理器和协处理器预设的数据访存格式不同,例如,处理器采用大端格式来访存数据,而协处理器采用小端格式访存数据。因此,当报文转发设备的处理器和协处理器预设的数据访存格式不同时,处理器和协处理器中的任一端需要对处理器和协处理器之间交互的数据进行大小端转换,以避免所交互的数据出错。
其中,处理器和协处理器之间交互的数据,可以是协处理器在上文所述的第二存储空间写入的更新后的第二信息,而处理器可能会在后期访问该第二信息。或者,处理器和协处理器之间交互的数据可以是协处理器在确定老化信息后,向上文所述的环形存储队列的存储单元写入的需要由处理器读取的老化信息。又或者,处理器和协处理器之间交互的数据,可以是协处理器向处理器上送第一报文,或者是协处理器在确定老化信息后,向处理器发送的携带有老化信息的老化报文等,不限于此。
下面对数据中不同对象的大小端转换进行描述。
1)、对数据中Word的大小端转换:将每个数据内部的Word的前后顺序进行倒换。
示例性的,以对一个128位数据内部的Word进行大小端转换为例,假设该128位数据内部的Word为:Word0/Word1/Word2/Word3。在进行大小端转换时,对该四个Word的前后顺序进行倒换,从而该四个Word被转换为Word3/Word2/Word1/Word0。
具体的,在进行大小端转换前,上述四个Word的数据结构为:
struct table_xxx{
//128bit-data
//Word0
//Word1
//Word2
//Word3
}
对上述四个Word进行大小端转换后,数据结构为:
struct table_xxx{
//128bit-data
//Word3
//Word2
//Word1
//Word0
}
2)、对数据中字节的大小端转换:将每个Word内部的字节的前后顺序进行倒换。
示例性的,以对一个32位Word内部的字节进行大小端转换为例,假设该32位Word内部的字节为:Byte0/Byte1/Byte2/Byte3,则在进行大小端转换时,对该四个字节的前后顺序进行倒换,从而该四个字节被转化为:Byte3/Byte2/Byte1/Byte0。
另外,对于跨域段的场景,即数据中表征某个定义的数据段跨越不同字节(即8个比特)/不同Word,这种情况下,对包括所跨越域段的四个字节/四个Word进行大小端转换即可。
作为一个示例,当数据中表征某个定义的数据段跨越8比特位但不跨越16比特位时,具体的,该数据结构例如是:
struct table_xxx{
//Word1
uint3 Pri;
uint1 CFI;
uint12 VLAN;
uint1 V4EN;
uint1 V6EN;
uint14 VRFID;
其中,uint3 Pri表示Pri字段占用3个比特位,uint1 CFI表示CFI字段占用1个比特位,uint12 VLAN表示VLAN字段占用12个比特位,uint1 V4EN表示V4EN字段占用1个比特位,uint1 V6EN表示V6EN字段占用1个比特位,uint14 VRFID表示VRFID字段占用14个比特位。可以看出,VLAN字段和VRFID字段所包括的比特位都超过8位,但小于16位,也就是说,VLAN字段和VRFID字段是跨不同字节域段的。
这种情况下,由于上述数据共计32位,因此上述数据可以通过一个32位的Word1承载。假设存储器中的存储地址从低位到高位依次为A0/A1/A2/A3,则如表4所示,Word1在小端格式一侧的字节序为B0/B1/B2/B3,并且,B0用于承载VRFID字段的0-7位,B1用于承载VRFID字段的8-13位、V6EN字段的1位以及V4EN的1位,B2用于承载VLAN字段的0-7位,B3用于承载VLAN字段的8-11位、CFI字段的位以及Pri字段的0-2位。
进而,如表4所示,在进行大小端格式后,对Word1的四个字节前后顺序进行倒换,该Word1被转换为大端格式:B3/B2/B1/B0。
表4
作为另一个示例,当数据中表征某个定义的数据段跨越16比特位时,具体的,该数据结构例如是:
struct table_xxx{
//Word2
uint8 Comp;
uint24 QID;
其中,uint8 Comp表示Comp字段占用8个比特位,uint24 QID表示QID字段占用24个比特位。由于QID字段所包括的比特位超过16位,也就是说,QID字段是跨不同字节域段的。
这种情况下,由于上述数据共计32位,因此上述数据可以通过一个32位的Word2承载。假设存储器中的存储地址从低位到高位依次为A4/A5/A6/A7,则如表5所示,Word2在小端格式一侧的字节序为B4/B5/B6/B7,并且,B4用于承载QID字段的0-7位,B5用于承载QID字段的8-15位,B6用于承载QID字段的16-23位,B7用于承载Comp字段的0-7位。
进而,如表5所示,在进行大小端格式后,对Word2的四个字节前后顺序进行倒换,该Word2被转换为大端格式:B7/B6/B5/B4。
表5
上述示例为跨不同字节域段的示例,当数据中表征某个定义的数据段跨越不同Word域段,例如该数据段包括45比特位,即该数据段跨越了两个32位的Word。这种情况下,可以对包括4个32位Word的128位数据进行大小端转换,不再详述。
类似的,当数据中表征某个定义的数据段跨越不同的128位数据域段,例如该数据段包括150比特,即该数据段跨越了两个128位数据,因此可以对包括4个128位数据的数据进行大小端转换,不再详述。
这样,通过上述的大小端转发方式,当报文转发设备的处理器和协处理器的数据访存格式不同时,对于报文转发设备的协处理器和处理器之间交互的数据,由处理器或协处理器对该数据进行大小端转换,从而能够避免报文转发设备的协处理器和处理器之间交互的数据出错。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。
为了实现上述功能,如图10所示,图10示出了本申请实施例提供的一种报文转发装置100的结构示意图。报文转发装置100可以为上文所述的报文转发设备,或者是上文所述报文转发设备中的功能模块,对此不作限定。报文转发装置100可以用于执行上述的报文转发方法,例如用于执行图4、图5、图6或图8所示的方法。其中,报文转发装置100可以包括接收单元1001、协处理单元1002以及处理单元1003。
接收单元1001,用于接收第一报文。协处理单元1002,用于根据第一报文携带的流标识信息查询流表,以及用于在流表中存在与第一报文携带的流标识信息匹配的目标流表项时,根据目标流表项对第一报文进行转发。其中,流表包括至少一个流表项,流表项为处理单元1003根据接收到的任意流的流标识信息创建的会话表项,目标流表项为处理单元1003根据第一报文所在的第一流的流标识信息创建的会话表项。
作为示例,结合图4,接收单元1001可以用于执行S101,协处理单元1002可以用于执行S102和S103。
可选的,在上述流表中不存在目标流表项时,第一报文携带的流标识信息用于处理单元1003创建目标流表项。
可选的,协处理单元1002为NP,处理单元1003为CPU或AP。
可选的,协处理单元1002,还用于确定需要对目标流表项进行老化;以及,用于向处理单元1003上报目标流表项的老化信息。其中,目标流表项的老化信息用于指示处理单元1003对目标流表项执行删除处理。
作为示例,结合图8,协处理单元1002可以用于执行S301和S302。
可选的,协处理单元1002具体用于:轮询流表中的流表项,以确定在老化时长内是否接收到第二报文;当确定在老化时长内未接收到第二报文,确定需要对目标流表项进行老化。其中,第二报文携带有与目标流表项匹配的流标识信息。
作为示例,结合图8,协处理单元1002可以用于执行S301。
可选的,报文转发装置100的存储器包括环形存储队列,环形存储队列包括多个环状分布的存储单元,环形存储队列中的一个存储单元用于存储一个流表项的老化信息,处理单元1003用于读取环形存储队列中读指针所指向的存储单元存储的老化信息。协处理单元1002,还具体用于在环形存储队列中写指针指向的存储单元中写入目标流表项的老化信息,其中,写指针用于指向环形存储队列中为空的存储单元。
作为示例,结合图8,协处理单元1002可以用于执行S302。
可选的,上述目标流表项包括第一指针,第一指针用于指向存储第一信息的存储空间,第一信息包括第一流的流标识信息和第一流的转发信息,第一流的转发信息用于指示第一流的转发类型和/或转发动作。
可选的,上述第一信息还包括第二指针,第二指针用于指向存储第二信息的存储空间,第二信息包括最新接收到的第一流中的报文的关联数据,第一流中报文的关联数据包括用于统计第一流的流信息的数据,第一流的流信息用于在第一流的传输发生异常时的定位异常位置。协处理单元1002还用于:在上述流表中存在与第一报文携带的流标识信息匹配的目标流表项时,更新第二信息,更新后的第二信息包括第一报文的关联数据。
作为示例,结合图5,协处理单元1002可以用于执行S104。
可选的,上述第一信息还包括第三指针,第三指针用于指向存储第三信息的存储空间,第三信息包括处理单元1003中用于处理第一流的进程的控制参数。
可选的,上述流表中的流表项存储于预设的存储空间,上述的第一信息、第二信息以及第三信息存储于处理单元1003在创建目标流表项时从地址池中申请的存储空间。
可选的,上述的流标识信息包括流的源地址信息和目的地址信息。
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种报文转发装置100的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
作为示例,结合图1,报文转发装置100中的接收单元1001所实现的功能可以通过图1中的网络接口104实现。协处理单元1002所实现的功能可以通过图1中的协处理器103执行图1中的存储器102中的程序代码实现。处理单元1003所实现的功能可以通过图1中的处理器101执行图1中的存储器102中的程序代码实现。
本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
需要说明的是,图10中对模块单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,还可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
本申请实施例还提供了一种芯片系统,该芯片系统包括处理器和协处理器。作为示例,该芯片系统可以是包括处理器和协处理器的Soc,不限于此。其中,处理器用于根据接收到的任意流的流标识信息创建流表项。这里,流表项用于指示协处理器转发报文。协处理器用于在接收到第一报文后根据上述第一方面提供的任一种方法对第一报文进行转发。该芯片系统中的处理器和协处理器所实现的功能可以参考上文方法中的描述,不再赘述。
本申请实施例还提供一种计算机程序产品,以及用于存储该计算机程序产品的计算机可读存储介质。该计算机程序产品可以包括一个或多个程序指令,当该一个或多个程序指令被报文转发设备/报文转发装置运行时可以提供以上针对图4、图5、图6或图8所示方法描述的功能或者部分功能。因此,例如,参考图4中S101~S103的一个或多个特征可以由该计算机程序产品中的一个或多个指令来承担。
在一些示例中,诸如针对执行图4、图5、图6或图8所示的方法的报文转发设备/报文转发装置可以被配置为,响应于通过计算机可读存储介质中存储的一个或多个程序指令,提供各种操作、功能、或者动作。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上和执行计算机执行指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (24)

1.一种报文转发方法,其特征在于,应用于报文转发设备,所述报文转发设备包括处理器和协处理器,所述方法包括:
接收第一报文;
根据所述第一报文携带的流标识信息查询流表;所述流表包括至少一个流表项,所述流表项为所述处理器根据接收到的任意流的流标识信息创建的会话表项;
在所述流表中存在与所述第一报文携带的流标识信息匹配的目标流表项时,所述协处理器根据所述目标流表项对所述第一报文进行转发,所述目标流表项为所述处理器根据所述第一报文所在的第一流的流标识信息创建的会话表项。
2.根据权利要求1所述的方法,其特征在于,在所述流表中不存在所述目标流表项时,所述第一报文携带的流标识信息用于所述处理器创建所述目标流表项。
3.根据权利要求1或2所述的方法,其特征在于,所述协处理器为网络处理器NP,所述处理器为中央处理单元CPU或应用处理器AP。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
通过所述协处理器确定需要对所述目标流表项进行老化;
通过所述协处理器向所述处理器上报所述目标流表项的老化信息,所述目标流表项的老化信息用于指示所述处理器对所述目标流表项执行删除处理。
5.根据权利要求4所述的方法,其特征在于,所述通过所述协处理器确定需要对所述目标流表项进行老化包括:
通过所述协处理器轮询所述流表中的流表项,以确定在老化时长内是否接收到第二报文,所述第二报文携带有与所述目标流表项匹配的流标识信息;
当确定在所述老化时长内未接收到第二报文,则确定需要对所述目标流表项进行老化。
6.根据权利要求4或5所述的方法,其特征在于,所述报文转发设备的存储器包括环形存储队列,所述环形存储队列包括多个环状分布的存储单元,所述环形存储队列中的一个存储单元用于存储一个流表项的老化信息,所述处理器用于读取所述环形存储队列中读指针所指向的存储单元存储的老化信息;所述通过所述协处理器向所述处理器上报所述目标流表项的老化信息包括:
通过所述协处理器在所述环形存储队列中写指针指向的存储单元中写入所述目标流表项的老化信息,所述写指针用于指向所述环形存储队列中为空的存储单元。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述目标流表项包括第一指针,所述第一指针用于指向存储第一信息的存储空间,所述第一信息包括所述第一流的流标识信息和所述第一流的转发信息,所述第一流的转发信息用于指示所述第一流的转发类型和/或转发动作。
8.根据权利要求7所述的方法,其特征在于,所述第一信息还包括第二指针,所述第二指针用于指向存储第二信息的存储空间,所述第二信息包括最新接收到的所述第一流中的报文的关联数据,所述关联数据包括用于统计所述第一流的流信息的数据,所述流信息用于在所述第一流的传输发生异常时的定位异常位置;在所述流表中存在与所述第一报文携带的流标识信息匹配的目标流表项时,所述方法还包括:
通过所述协处理器更新所述第二信息,更新后的所述第二信息包括所述第一报文的关联数据。
9.根据权利要求7或8所述的方法,其特征在于,所述第一信息还包括第三指针,所述第三指针用于指向存储第三信息的存储空间,所述第三信息包括所述处理器中用于处理所述第一流的进程的控制参数。
10.根据权利要求9所述的方法,其特征在于,所述流表中的流表项存储于预设的存储空间,所述第一信息、所述第二信息以及所述第三信息存储于所述处理器在创建所述目标流表项时从地址池中申请的存储空间。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述流标识信息包括流的源地址信息和目的地址信息。
12.一种报文转发装置,其特征在于,所述装置包括处理单元和协处理单元,所述装置还包括:
接收单元,用于接收第一报文;
所述协处理单元,用于根据所述第一报文携带的流标识信息查询流表;所述流表包括至少一个流表项,所述流表项为所述处理单元根据接收到的任意流的流标识信息创建的会话表项;以及,用于在所述流表中存在与所述第一报文携带的流标识信息匹配的目标流表项时,根据所述目标流表项对所述第一报文进行转发,所述目标流表项为所述处理单元根据所述第一报文所在的第一流的流标识信息创建的会话表项。
13.根据权利要求12所述的装置,其特征在于,在所述流表中不存在所述目标流表项时,所述第一报文携带的流标识信息用于所述处理单元创建所述目标流表项。
14.根据权利要求12或13所述的装置,其特征在于,所述协处理单元为网络处理器NP,所述处理单元为中央处理单元CPU或应用处理器AP。
15.根据权利要求12-14中任一项所述的装置,其特征在于,
所述协处理单元,还用于确定需要对所述目标流表项进行老化;以及,用于向所述处理单元上报所述目标流表项的老化信息,所述目标流表项的老化信息用于指示所述处理单元对所述目标流表项执行删除处理。
16.根据权利要求15所述的装置,其特征在于,所述协处理单元具体用于:
轮询所述流表中的流表项,以确定在老化时长内是否接收到第二报文,所述第二报文携带有与所述目标流表项匹配的流标识信息;
当确定在所述老化时长内未接收到第二报文,确定需要对所述目标流表项进行老化。
17.根据权利要求15或16所述的装置,其特征在于,所述报文转发装置的存储器包括环形存储队列,所述环形存储队列包括多个环状分布的存储单元,所述环形存储队列中的一个存储单元用于存储一个流表项的老化信息,所述处理单元用于读取所述环形存储队列中读指针所指向的存储单元存储的老化信息;
所述协处理单元,还具体用于在所述环形存储队列中写指针指向的存储单元中写入所述目标流表项的老化信息,所述写指针用于指向所述环形存储队列中为空的存储单元。
18.根据权利要求12-17中任一项所述的装置,其特征在于,所述目标流表项包括第一指针,所述第一指针用于指向存储第一信息的存储空间,所述第一信息包括所述第一流的流标识信息和所述第一流的转发信息,所述第一流的转发信息用于指示所述第一流的转发类型和/或转发动作。
19.根据权利要求18所述的装置,其特征在于,所述第一信息还包括第二指针,所述第二指针用于指向存储第二信息的存储空间,所述第二信息包括最新接收到的所述第一流中的报文的关联数据,所述关联数据包括用于统计所述第一流的流信息的数据,所述流信息用于在所述第一流的传输发生异常时的定位异常位置;所述协处理单元还用于:
在所述流表中存在与所述第一报文携带的流标识信息匹配的目标流表项时,更新所述第二信息,更新后的所述第二信息包括所述第一报文的关联数据。
20.根据权利要求18或19所述的装置,其特征在于,所述第一信息还包括第三指针,所述第三指针用于指向存储第三信息的存储空间,所述第三信息包括所述处理单元中用于处理所述第一流的进程的控制参数。
21.根据权利要求20所述的装置,其特征在于,所述流表中的流表项存储于预设的存储空间,所述第一信息、所述第二信息以及所述第三信息存储于所述处理单元在创建所述目标流表项时从地址池中申请的存储空间。
22.根据权利要求12-21中任一项所述的装置,其特征在于,所述流标识信息包括流的源地址信息和目的地址信息。
23.一种报文转发设备,其特征在于,包括:处理器和协处理器;
所述处理器被配置为调用存储在存储器中的程序指令,以根据所述报文转发设备接收到的任意流的流标识信息创建流表项,所述流表项用于指示所述协处理器转发报文;
所述协处理器被配置为调用存储在存储器中的程序指令,以在所述报文转发设备接收到第一报文后根据如权利要求1-11中任一项所述的方法对所述第一报文进行转发。
24.一种芯片系统,其特征在于,包括:处理器和协处理器;
所述处理器,用于根据接收到的任意流的流标识信息创建流表项,所述流表项用于指示所述协处理器转发报文;
所述协处理器,用于在接收到第一报文后根据如权利要求1-11中任一项所述的方法对所述第一报文进行转发。
CN202211691427.1A 2022-07-18 2022-12-27 报文转发方法、装置、设备及芯片系统 Pending CN117424862A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2023/103357 WO2024016975A1 (zh) 2022-07-18 2023-06-28 报文转发方法、装置、设备及芯片系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2022108443125 2022-07-18
CN202210844312 2022-07-18

Publications (1)

Publication Number Publication Date
CN117424862A true CN117424862A (zh) 2024-01-19

Family

ID=89523491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211691427.1A Pending CN117424862A (zh) 2022-07-18 2022-12-27 报文转发方法、装置、设备及芯片系统

Country Status (2)

Country Link
CN (1) CN117424862A (zh)
WO (1) WO2024016975A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101159729A (zh) * 2007-09-05 2008-04-09 杭州华三通信技术有限公司 一种快速处理报文的方法及装置
CN102938733B (zh) * 2012-11-22 2016-01-13 华为技术有限公司 报文的转发方法及其路由设备、识别设备
CN104426768B (zh) * 2013-09-05 2018-06-15 华为技术有限公司 一种数据报文转发方法及装置
CN111049910A (zh) * 2019-12-16 2020-04-21 瑞斯康达科技发展股份有限公司 一种处理报文的方法、装置、设备及介质
CN112491901B (zh) * 2020-11-30 2023-03-24 北京锐驰信安技术有限公司 一种网络流量精细化筛选装置及方法

Also Published As

Publication number Publication date
WO2024016975A1 (zh) 2024-01-25

Similar Documents

Publication Publication Date Title
CN110301120B (zh) 流分类装置、方法和系统
RU2732184C1 (ru) Способ, устройство, коммутатор, аппарат для передачи пакетов и носитель информации
US9367645B1 (en) Network device architecture to support algorithmic content addressable memory (CAM) processing
US11431624B2 (en) Communication method and network interface card
WO2024067336A1 (zh) 报文处理方法、可编程网卡设备、物理服务器及存储介质
CN107360268B (zh) 一种数据包处理方法、装置及设备
CN113891396B (zh) 数据包的处理方法、装置、计算机设备和存储介质
US20140047188A1 (en) Method and Multi-Core Communication Processor for Replacing Data in System Cache
CN110808854B (zh) 报文调度方法、装置及交换机
CN112118167B (zh) 一种跨网隧道数据快速传输方法
US11316804B2 (en) Forwarding entry update method and apparatus in a memory
CN109525518B (zh) 一种基于fpga的ip报文网络地址转换方法及装置
CN116501657B (zh) 缓存数据的处理方法、设备及系统
CN110912826A (zh) 利用acl扩充ipfix表项的方法及装置
CN117714233B (zh) 一种用于隧道报文封装的方法、计算机设备及介质
WO2018000820A1 (zh) 一种队列管理方法和装置
US20140156954A1 (en) System and method for achieving enhanced performance with multiple networking central processing unit (cpu) cores
WO2023142605A1 (zh) 一种基于区块链的数据处理方法和相关装置
CN104052831A (zh) 一种基于队列的数据传输方法、装置及通信系统
CN117424862A (zh) 报文转发方法、装置、设备及芯片系统
CN116319553A (zh) 一种表项查找方法以及网络设备
JP2020088517A (ja) 通信装置、通信装置の制御方法およびプログラム
WO2015154393A1 (zh) 业务节点能力处理方法、装置、业务分类器及业务控制器
CN112653639B (zh) 一种基于多线程交互处理的IPv6报文分片重组方法
CN114201311A (zh) 数据处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication