CN112953949B - 一种网络报文的报文头处理方法、装置、设备及存储介质 - Google Patents
一种网络报文的报文头处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112953949B CN112953949B CN202110227379.XA CN202110227379A CN112953949B CN 112953949 B CN112953949 B CN 112953949B CN 202110227379 A CN202110227379 A CN 202110227379A CN 112953949 B CN112953949 B CN 112953949B
- Authority
- CN
- China
- Prior art keywords
- message
- target
- header
- mirror image
- information
- 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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种网络报文的报文头处理方法、装置、设备及存储介质,该方法包括:接收原始网络报文,解析出协议头类型;镜像处理原始网络报文,得到镜像网络报文;在标识映射表中查找与协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识;在长度映射表中确定与目标镜像会话标识对应的目标输出端口信息和目标报文头长度;标识映射表和长度映射表中的表项基于控制平面获取的报文头输出指令中的配置信息得到;从报文起始位置开始,截取镜像网络报文中目标报文头长度的数据作为镜像报文头,并输出至目标输出端口信息对应的目标端口和/或目标端口组。实现了在保证汇聚分流设备的正常运行下输出报文头,减轻了后端设备的性能压力。
Description
技术领域
本发明实施例涉及通信技术,尤其涉及一种网络报文的报文头处理方法、装置、设备及存储介质。
背景技术
在网络安全领域通常需要将网络报文从各个网络节点采集下来,将分析后的话单数据或原始网络报文发到后端设备进行更细粒度的分析。基于后端设备的性能或分析网络报文的侧重点考虑,有时并不需要关注网络报文的负载部分,只需要分析网络报文的报文头部分就可以满足需求。
现有技术中,通常利用如MPIS(无内部互锁流水级的微处理器,Microprocessorwithout Interlocked Pipelined Stages)多核或者X86等平台做报文头输出处理,但其处理性能取决于网卡、CPU(Central Processing Unit,中央处理器)和PCIE(PeripheralComponent Interconnect Express,高速串行计算机扩展总线)带宽等。由于汇聚分流设备在大多数应用场景下需要对每个端口做线速处理。上述方法无法满足汇聚分流设备的大数据量、端口线速转发的需求。因此,如何在汇聚分流设备上实现报文头输出成为亟待解决的技术问题。
发明内容
本发明实施例提供一种网络报文的报文头处理方法、装置、设备及存储介质,可以实现在汇聚分流设备上输出报文头。
第一方面,本发明实施例提供了一种网络报文的报文头处理方法,应用于具有可编程交换芯片的汇聚分流设备包括:
接收原始网络报文,并解析出所述原始网络报文的协议头类型;
对所述原始网络报文进行镜像处理,得到镜像网络报文;
在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识;
在长度映射表中确定与所述目标镜像会话标识对应的目标输出端口信息和目标报文头长度;其中,所述标识映射表和长度映射表中的表项基于控制平面获取的所述报文头输出指令中的配置信息得到;
从所述镜像网络报文的起始位置开始,截取所述镜像网络报文中所述目标报文头长度的数据作为镜像报文头,并输出所述镜像报文头至所述目标输出端口信息对应的目标端口和/或目标端口组。
第二方面,本发明实施例还提供了一种网络报文的报文头处理装置,包括:
报文接收模块,用于接收原始网络报文,并解析出所述原始网络报文的协议头类型;
报文镜像模块,用于对所述原始网络报文进行镜像处理,得到镜像网络报文;
标识查找模块,用于在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识;
长度确定模块,用于在长度映射表中确定与所述目标镜像会话标识对应的目标输出端口信息和目标报文头长度;其中,所述标识映射表和长度映射表中的表项基于控制平面获取的所述报文头输出指令中的配置信息得到;
报文头输出模块,用于从所述镜像网络报文的起始位置开始,截取所述镜像网络报文中所述目标报文头长度的数据作为镜像报文头,并输出所述镜像报文头至所述目标输出端口信息对应的目标端口和/或目标端口组。
第三方面,本发明实施例还提供了一种汇聚分流设备,所述汇聚分流设备包括:
一个或多个处理器;
一个或多个可编程交换芯片;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个可编程交换芯片执行时,使得所述一个或多个可编程交换芯片实现如本发明任意实施例提供的网络报文的报文头处理方法;
以及,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例提供的网络报文的报文头处理方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明任意实施例提供的网络报文的报文头处理方法。
本发明实施例通过对原始网络报文进行镜像处理,基于标识映射表和长度映射表快速确定对应的目标输出端口信息和目标报文头长度,并基于目标报文长度对镜像网络报文的报文头进行截断输出,解决了现有技术中无法直接通过汇聚分流设备输出报文头的问题,实现了在保证汇聚分流设备的正常运行下输出报文头,减轻了后端设备的性能压力。
附图说明
图1是本发明实施例一提供的一种网络报文的报文头处理方法的流程图;
图2是本发明实施例一提供的一种TCP网络报文的报文头示意图;
图3是本发明实施例二提供的另一种网络报文的报文头处理方法的流程图;
图4是本发明实施例三提供是一种控制平面上报文头处理方法的流程图;
图5是本发明实施例三提供是一种数据平面上报文头处理方法的流程图;
图6是本发明实施例四提供的一种网络报文的报文头处理装置的结构示意图;
图7是本发明实施例五提供的一种汇聚分流设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
本实施例可适用于通过汇聚分流设备输出网络报文的报文头的情况,该方法可以由网络报文的报文头处理装置来执行,该装置可以采用软件和/或硬件的方式实现。该装置可配置于具有可编程交换芯片的汇聚分流设备中。其中,可编程交换芯片可以是通过编译语言编写代码,能够实现报文头输出功能的交换芯片。例如,Barefoot公司推出的Tofino系列可编程交换芯片,在数据平面基于P4语言可编程,极大的扩展了网络交换芯片及汇聚分流设备的使用场景,使某些复杂功能都可以在交换芯片上通过编程实现。
图1是本发明实施例一提供的一种网络报文的报文头处理方法的流程图,如图1所示,该方法包括:
步骤S110、接收原始网络报文,并解析出原始网络报文的协议头类型。
其中,原始网络报文可以包括报文头和负载。例如,图2是本发明实施例一提供的一种TCP网络报文的报文头示意图。如图2所示,TCP网络报文的报文头包括ETH(ethnet,以太网)、IPV4(Internet Protocol Version 4,网际协议版本4)和TCP(TransmissionControl Protocol,传输控制协议)三层协议,PAYLOAD部分为负载。其中,负载部分无需输出,仅需要输出ETH、IPV4和TCP三层协议的部分。报文头中的协议可以至少包括以下至少一种:IPV4、IPV6(Internet Protocol Version 6,网际协议版本6)、TCP、UDP(User DatagramProtocol,用户数据报协议)、SCTP(Stream Control Transmission Protocol,流控制传输协议)、多层VLAN(Virtual Local Area Network,虚拟局域网)和MPLS(Multi-ProtocolLabel Switching,多协议标签交换)等。协议头类型可以由一种协议确定。例如,IP类型。协议头类型也可以由至少两种协议组合确定。例如,IPV4-TCP类型。
步骤S120、对原始网络报文进行镜像处理,得到镜像网络报文。
其中,镜像处理后得到的镜像网络报文可以与原始网络报文具有相同的报文头。在可编程交换芯片不支持直接截断原始网络报文的情况下,通过可编程交换芯片的镜像功能,对原始网络报文进行镜像处理,镜像处理后得到的镜像网络报文可以支持输出端口和输出报文长度的选择。
另外,由于对原始网络报文输出报文头本质上是要对网络报文进行截断操作。然而对于交换芯片而言,处于性能考虑原始网络报文还没有完全进入汇聚分流设备时解码过程就已经开始,随着解码的完成后续的查表逻辑就已经展开,在这种情况下,对原始网络报文的截断功能的实现造成了困难。因此,可以在原始网络报文进入汇聚分流设备时就开始对原始网络报文进行解码,当解析出的目标报文信息满足预设条件时,可以在原始网络报文完全进入汇聚分流设备后对原始网络报文进行镜像处理,以基于得到的镜像网络报文进行报文头输出处理,能够在保证汇聚分流设备的正常运行情况下,实现在汇聚分流设备上输出报文头。
步骤S130、在标识映射表中查找与协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识。
报文头输出指令可以是在接收到用户输入的配置信息并检测到用户开启报文头输出功能时触发,用于指示需要执行的与输出报文头相关的动作。例如,报文头输出指令可以用于指示报文头输出指令中配置信息的解析方式,以将解析出的指令信息传递给数据平面,并写入至数据平面中对应表的对应表项中。其中,配置信息可以包括输出端口信息和过滤规则信息等。另外,报文头输出指令还可以用于指示报文头的输出方式(例如,通过负载均衡组、复制组和/或端口输出)和/或镜像网络报文的修改方式(例如,删除VLAN(VirtualLocal Area Network,虚拟局域网)标识或者删除隧道封装等)。报文头输出指令的指令标识用于唯一标识该报文头输出指令。例如,当用户在Action动作中开启报文头输出功能时,指令标识可以是Action的动作标识。
标识映射表和长度映射表中的表项基于控制平面获取的报文头输出指令中的配置信息得到。汇聚分流设备的***至少包括控制平面和数据平面。其中,控制平面可以用于获取并解析报文头输出指令中的配置信息,得到指令信息,并将指令信息传递给数据平面。数据平面可以用于基于接收到的指令信息初始化标识映射表。其中,指令信息可以包括输出端口信息、报文头输出指令的指令标识、预设的协议头类型、协议头类型对应的报文头长度和/或过滤规则信息中的报文信息等。标识映射表中关联存储每个镜像会话的协议头类型、报文头输出指令的指令标识以及镜像会话的镜像会话标识。
具体地,遍历标识映射表,基于原始网络报文的协议头类型以及报文头输出指令的指令标识,查找标识映射表中对应的目标镜像会话标识。
步骤S140、在长度映射表中确定与目标镜像会话标识对应的目标输出端口信息和目标报文头长度。
具体地,遍历长度映射表,查找长度映射表中的目标镜像会话标识,确定与目标镜像会话标识对应的目标输出端口信息和目标报文头长度。
其中,目标输出端口信息可以是待输出的目标端口和/或目标端口组的端口信息。例如,目标输出端口信息中可以包括端口类型以及各端口类型对应的标识信息等。端口类型可以包括端口、负载均衡组、复制组和/或其他类型的端口或端口组。
目标报文头长度可以是原始网络报文的协议头类型对应的报文头长度。报文头长度可以与对应的协议头类型进行预设关联存储。例如,在初始化长度映射表时,可以枚举所有预设支持的协议头类型,并获取每个协议头类型对应的报文头长度。
数据平面还可以基于接收到的指令信息初始化长度映射表,长度映射表中关联存储镜像会话的镜像会话标识、镜像会话中的输出端口信息以及镜像会话中的协议头类型对应的报文头长度。
镜像会话标识是镜像会话的标识信息,可以用于关联标识映射表和长度映射表。镜像会话可以基于输出端口信息与协议头类型建立,可以用于将输出端口信息、协议头类型以及协议头类型对应的报文头长度进行关联。例如,对于每个镜像会话,基于镜像会话中的协议头类型、报文头输出指令的指令标识以及镜像会话的镜像会话标识,初始化标识映射表;基于镜像会话的镜像会话标识、镜像会话中的输出端口信息以及镜像会话中的协议头类型对应的报文头长度,初始化长度映射表。
本实施例通过镜像会话标识搭建标识映射表与长度映射表之间的关联关系,实现了基于协议头类型和指令标识快速确定原始网络报文对应的目标输出端口信息和目标报文头长度,提高了报文头的输出效率。
需要说明的是,步骤S120至步骤S140并不限于上述执行顺序。例如,还可以先执行步骤S130-S140,然后执行步骤S120。或者,还可以步骤S120与步骤S130-S140并行执行。
步骤S150、从镜像网络报文的起始位置开始,截取镜像网络报文中目标报文头长度的数据作为镜像报文头,并输出镜像报文头至目标输出端口信息对应的目标端口和/或目标端口组。
具体地,在得到镜像网络报文并确定目标输出端口信息和目标报文头长度之后,从镜像网络报文的起始位置开始,按照目标报文头长度对镜像网络报文的数据进行截断,得到镜像报文头,输出镜像报文头至目标输出端口信息对应的目标端口和/或目标端口组。
示例性地,如图2所示,从网络中接收原始网络报文,并解析出该原始网络报文的协议头类型是IPV4-TCP类型。对该原始网络报文进行镜像处理,得到对应的镜像网络报文。在标识映射表和长度映射表中确定对应的目标输出端口信息是port1、目标报文头长度是55,则以该镜像网络报文的起始位置开始,即ETH协议的起始位置,截取55个字节的数据,得到包含有ETH、IPV4和TCP三层协议的镜像报文头。输出该镜像报文头至port1对应的目标端口。
本发明实施例通过对原始网络报文进行镜像处理,基于标识映射表和长度映射表快速确定对应的目标输出端口信息和目标报文头长度,并基于目标报文长度对镜像网络报文的报文头进行截断输出,解决了现有技术中无法直接通过汇聚分流设备输出报文头的问题,实现了在保证汇聚分流设备的正常运行下输出报文头,减轻了后端设备的性能压力。
实施例二
图3是本发明实施例二提供的另一种网络报文的报文头处理方法的流程图,本实施例在上述实施例的基础上进行优化,如图3所示,该方法包括:
步骤S201、在检测到报文头输出指令时,获取报文头输出指令中的输出端口信息、指令标识、预设的协议头类型以及协议头类型对应的报文头长度。
汇聚分流设备的***至少包括控制平面和数据平面。用户可以通过CLI(Command-Line Interface,命令行界面)上的命令行输入输出端口信息和/或过滤规则信息等配置信息,还可以通过命令行开启报文头输出功能。然后,汇聚分流设备可以调用控制平面的接口,通过控制平面获取并解析配置信息,得到指令信息,并将指令信息下发给数据平面的各种表中。其中,可编程交换芯片在执行本发明实施例提供的网络报文的报文头处理方法时,实现数据平面对应的功能。
示例性地,控制平面在检测到报文头输出指令时,获取报文头输出指令的指令标识以及用户输入的输出端口信息,同时枚举出预设支持的协议头类型和协议头类型对应的报文头长度。
步骤S202、基于每个输出端口信息以及每个协议头类型建立镜像会话,并生成镜像会话的镜像会话标识。
示例性地,控制平面可以枚举所有预设的协议头类型,将每个输出端口信息与每个协议头类型进行关联之后,建立每个关联关系对应的镜像会话,并生成镜像会话的镜像会话标识。其中,镜像会话可以用于关联输出端口信息与协议头类型。
可选地,在基于每个输出端口信息以及每个协议头类型建立镜像会话之前,还可以包括:
解析输出端口信息,得到端口类型以及各端口类型对应的标识信息;
若端口类型是负载均衡组,则建立链路聚合组,以基于每个链路聚合组的第一标识信息以及每个协议头类型建立镜像会话;
若端口类型是复制组,则建立多播组,以基于每个多播组的第二标识信息以及每个预设协议头类型建立镜像会话;
若端口类型是端口,则基于端口的第三标识信息以及每个预设协议头类型建立镜像会话。
其中,链路聚合组(LAG,Link Aggregation)可以用于提供负载均衡输出功能。当端口类型是负载均衡组时,说明需要将镜像报文头输出至负载均衡组中的各个端口,可以建立链路聚合组,并将每个链路聚合组的第一标识信息lag与每个协议头类型建立镜像会话,以在截取镜像报文头之后,通过第一标识信息确定对应的链路聚合组,进而通过链路聚合组输出镜像报文头,实现了将镜像报文头输出至负载均衡组。
多播组可以用于提供复制输出功能。当端口类型是复制组时,说明需要将镜像报文头输出至复制组中的各个端口,可以建立多播组,并将每个多播组的第二标识信息mug与每个协议头类型建立镜像会话,以在截取镜像报文头之后,通过第二标识信息确定对应的多播组,进而通过多播组输出镜像报文头,实现了将镜像报文头输出至复制组。
当端口类型是端口时,说明需要将镜像报文头输出至单个端口,可以直接将每个端口的第三标识信息port与每个协议头类型建立镜像会话,以在截取镜像报文头之后,通过第三标识信息确定对应的端口,进而通过端口直接输出镜像报文头,实现了将镜像报文头输出至端口。
本实施例通过解析输出端口信息,得到端口类型以及各端口类型对应的标识信息,并依据不同的端口类型建立不同的镜像会话,丰富了后续镜像报文头的输出端口类型,提高了报文头输出的灵活性和可用性。
进一步地,若复制组中包括负载均衡组,则在建立多播组之后,还可以包括:
建立链路聚合组,并将链路聚合组挂载到多播组的节点上。
具体地,若解析出的端口类型是复制组,且复制组中包括负载均衡组,则在建立多播组之后,建立链路聚合组,将链路聚合组挂载到多播组的节点上,以在将镜像报文头输出至多播组时,进一步通过多播组将镜像报文头输出至链路聚合组。
本实施例通过将链路聚合组挂载到多播组的节点上,实现了复杂端口组的报文头输出处理,进一步提高了报文头输出的灵活性和可用性。
步骤S203、将协议头类型、指令标识以及镜像会话标识关联写入标识映射表的表项中。
示例性地,对于每个预设支持的协议头类型,控制平面将协议头类型、指令标识以及该协议头类型对应的镜像会话标识关联写入至数据平面的标识映射表的表项中。其中,数据平面的标识映射表可以是用户自定义编程表。
例如,表1是本发明实施例二提供的一种标识映射表。其中,Key1表示协议头类型,Key2表示报文头输出指令的指令标识,Action_data表示镜像会话标识,Entry表示表项序号。如表1所示,如果是IPV4-TCP报文且绑定了Action1,则对应的镜像会话标识为1。同样是IPV4-TCP报文,如果绑定了Action 2,则对应的镜像会话标识为4。
表1
Entry | Key1 | Key2 | Action_data |
1 | IPV4->TCP | Action 1 | 1 |
2 | TPV4->UDP | Action 1 | 2 |
3 | IPV4->SCTP | Action 1 | 3 |
… | ... | ... | ... |
10 | IPV4->TCP | Action 2 | 4 |
11 | TPV4->UDP | Action 2 | 5 |
12 | IPV4->SCTP | Action 2 | 6 |
... | ... | ... | ... |
步骤S204、将每个镜像会话的镜像会话标识、输出端口信息以及协议头类型对应的报文头长度关联写入长度映射表的表项中。
示例性地,对于每个镜像会话,控制平面将镜像会话的镜像会话标识、镜像会话中的输出端口信息以及镜像会话中协议头类型对应的报文头长度,关联写入至数据平面的长度映射表的表项中。其中,数据平面的长度映射表可以是可编程芯片内固有表。例如,在数据平面上,Tofino系列可编程交换芯片提供了镜像类型,将其相关的API(ApplicationProgramming Interface,应用程序接口)抽象成了对表格的操作,表格的Key值为数字序列号,例如可以写入镜像会话标识,镜像会话标识以数字序列号形式存储,data字段则包含多个字段,例如可以包括输出端口信息和报文头长度等。在报文头输出功能中本实施例重点关注输出端口、输出的多播组、输出的链路聚合组和输出的报文长度等信息。例如可以配置多个规则表,且将过滤后的原始网络报文分别从端口1和端口2输出,同时开启了报文头输出功能,则需要在长度映射表中遍历所有的报文头长度和端口号的组合。表2是本发明实施例二提供的一种长度映射表。
表2
Entry | Key1 | Action_data1 | Action_data2 |
1 | 1(IPV4->TCP) | port 1 | 55 |
2 | 2(TPV4->UDP) | port 1 | 43 |
3 | 3(IPV4->SCTP) | port 1 | 47 |
… | ... | ... | … |
10 | 10(IPV4->TCP) | port 2 | 55 |
11 | 11(TPV4->UDP) | port 2 | 43 |
12 | 12(IPV4->SCTP) | port 2 | 47 |
... | ... | ... | ... |
其中,Key1表示镜像会话标识,Action_data1表示端口号,Action_data2表示报文头长度,Entry表示表项序号。如表2所示,同步骤S203中的示例,1和4这两个镜像会话将截取后的报文头发向了不同的端口,截取后的长度都是55个字节。若建立镜像会话时输出端口信息的端口类型是负载均衡组,则表2中的Action_data1可以是链路聚合组的第一标识信息lag。若端口类型是复制组,则表2中的Action_data1可以是多播组的第二标识信息mug。
需要说明的是,表2中的IPV4没有考虑Opinion字段,TCP没有考虑扩展头。Action_data2中的报文头长度可以包括镜像扩展头的长度,也可以不包括镜像扩展头的长度,具体可以根据在镜像处理后是否添加镜像扩展头确定。
本实施例通过每个输出端口信息和每个协议头类型建立镜像会话,并生成镜像会话的镜像会话标识,基于协议头类型、指令标识和镜像会话标识初始化标识映射表,基于每个镜像会话的镜像会话标识、输出端口信息和协议头类型对应的报文头长度初始化长度映射表,实现了配置标识映射表与长度映射表。本实施例利用镜像会话建立输出端口信息与协议头类型之间的关联关系,进而基于镜像会话标识关联标识映射表与长度映射表,提高了后续的查表效率。同时,由于长度映射表可以是可编程芯片内的固有表,通过自定义标识映射表,并建立与长度映射表之间的关联关系,实现了利用可编程芯片内的长度映射表输出报文头的效果。
步骤S205、接收原始网络报文,并解析出原始网络报文的协议头类型和目标报文信息。
其中,目标报文信息可以包括五元组信息、协议信息、报文版本信息和/或报文实体信息等原始网络报文的报文信息。协议信息可以包括原始网络报文中协议的标识信息等。
具体地,接收网络中的原始网络报文,解析原始网络报文,得到该原始网络报文的协议头类型和目标报文信息。
步骤S206、查找目标报文信息对应的规则表中是否存在目标报文信息,若是,执行步骤S207,否则返回执行步骤S205。
其中,规则表中的表项是通过控制平面基于获取的过滤规则信息配置得到。数据平面除了具有标识映射表和长度映射表之外,还具有至少一个规则表。例如,规则表可以包括精确匹配表和/或衍码匹配表等。其中,精确匹配表可以基于五元组信息、协议信息、报文版本信息或报文关键字等精确信息进行过滤。衍码匹配表可以基于原始网络报文的衍生信息进行过滤。
具体地,查找目标报文信息对应的规则表中是否存在该目标报文信息,若存在,说明该目标报文信息所属的原始网络报文是待镜像处理的网络报文,即需要输出报文头的网络报文,继续执行步骤S207;若不存在,说明该目标报文信息所属的原始网络报文不是待处理的网络报文,过滤该网络报文,返回执行步骤S205。
其中,对于目标报文信息不在规则表的网络报文,可以直接过滤,不进行处理,也可以在汇聚分流设备中进行正常的收包和发包操作。
本实施例通过解析原始网络报文的目标报文信息,并基于对应的规则表进行过滤,实现了快速筛选出需要输出报文头的原始网络报文,使得报文头能够按照用户的配置进行输出,更加具有针对性。同时,先过滤掉无需输出报文头的网络报文,再对需要输出报文头的网络报文进行镜像处理,减少了汇聚分流设备的处理负荷,降低了汇聚分流设备的***功耗。
可选地,在查找目标报文信息对应的规则表中是否存在目标报文信息之前,还可以包括:
获取过滤规则信息中的报文信息;
将报文信息写入至对应的规则表中,以基于规则表确定待镜像处理的原始网络报文。
其中,报文信息可以是过滤规则信息中用于初始化对应的规则表的信息,也可以是过滤规则信息本身。
示例性地,控制平面获取过滤规则信息中的报文信息,将该报文信息写入至数据平面中对应的规则表中。数据平面在接收到原始网络报文之后,通过解析原始网络报文,得到目标报文信息。如果该目标报文信息存在对应的规则表,则数据平面在对应的规则表中查找是否存在该目标报文信息,若存在,则对该原始网络报文进行镜像处理,若不存在,则过滤掉该原始网络报文。
本实施例基于过滤规则信息中的报文信息初始化规则表,操作简单,提高了筛选网络报文的效率。
可选地,目标报文信息的数量为至少两个,相应地,查找目标报文信息对应的规则表中是否存在目标报文信息,可以包括:
获取至少两个目标报文信息对应的至少两个规则表以及至少两个规则表分别对应的优先级;
按照优先级由高到低的顺序查找规则表中是否存在对应的目标报文信息。
其中,规则表的优先级可以预先设置或由用户在命令行自定义配置。
示例性地,目标报文信息包括五元组信息和MAC地址,分别对应五元组信息规则表和MAC地址规则表。其中,五元组信息规则表的优先级高于MAC地址规则表。则先在五元组信息规则表中查找是否存在该五元组信息,若存在,则可以直接对原始网络报文进行镜像处理,若不存在,则继续在MAC地址规则表中查找是否存在该MAC地址。若存在,则可以直接对该目标报文信息对应的原始网络报文进行镜像处理,若不存在,则可以过滤掉该目标报文信息对应的原始网络报文。
本实施例基于规则表的优先级确定查找顺序,优化了查表逻辑,提高了筛选网络报文的准确性。
步骤S207、对原始网络报文进行镜像处理,得到镜像网络报文。
示例性地,如果目标报文信息对应的规则表中存在目标报文信息,即命中规则,可以打开数据平面的入口流程中的镜像功能,对原始网络报文进行镜像处理,得到镜像网络报文。
步骤S208、在标识映射表中查找与协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识。
示例性地,基于协议头的有效性(即协议头类型)、报文头输出指令的指令标识,在标识映射表中查找对应的目标镜像会话标识。
可选地,在在标识映射表中查找与协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识之后,还可以包括:
在入口流程中,若协议头输出功能开启且查找到目标镜像会话标识,则在镜像网络报文之前添加镜像扩展头,以在出口流程中根据镜像扩展头识别出镜像网络报文;其中,镜像扩展头中至少包括目标镜像会话标识;
若协议头输出功能未开启,则在原始网络报文之前添加桥扩展头。
示例性地,入口流程可以至少包括第一解码(Parser)阶段和第一组包(Deparser)阶段。在第一解码阶段中,数据平面解析原始网络报文。如果协议头输出功能开启且查找到目标镜像会话标识,则在第一组包阶段,数据平面在镜像网络报文之前添加镜像(Mirror)扩展头,并将添加镜像扩展头后的参考镜像网络报文传输至出口流程中。如果协议头输出功能未开启,则在第一组包阶段,数据平面在原始网络报文之前添加桥(Bridge)扩展头,并将添加桥扩展头后的参考原始网络报文传输至出口流程中。出口流程可以至少包括第二解码阶段和第二组包阶段。在第二解码阶段中,如果解析出镜像扩展头,则数据平面可以确定对应的网络报文为参考镜像网络报文。如果解析出桥扩展头,则数据平面可以确定对应的网络报文为参考原始网络报文。
本实施例通过在镜像网络报文之前添加镜像扩展头,以区分原始网络报文,便于后续快速识别镜像网络报文,进而提高了报文头的输出效率。同时,基于硬件限制,入口流程和出口流程之间无法实现数据共享,即自定义变量只能在入口流程中使用,而无法在出口流程中使用。针对该问题,本实施例通过将查找得到的目标镜像会话标识添加至镜像扩展头中,以通过参考镜像网络报文将目标镜像会话标识传输至出口流程中进行处理,解决了目标镜像会话标识再入口流程和出口流程之间的传递问题。
进一步地,在在镜像网络报文之前添加镜像扩展头之后,还可以包括:
在出口流程中,解析出口流程中的网络报文,并根据解析结果判断网络报文中是否存在镜像扩展头;
若存在,则确定网络报文为参考镜像网络报文,获取参考镜像网络报文的镜像扩展头中的目标镜像会话标识,继续执行步骤S209。
示例性地,在出口流程的第二解码阶段,数据平面解析出口流程中的网络报文,根据解析结果判断该网络报文中是否存在镜像扩展头。若存在,则确定该网络报文为参考镜像网络报文,继续执行步骤S209。若不存在,则确定该网络报文为参考原始网络报文,可以对该参考原始网络报文进行其他相应操作。
相应地,步骤S210中从镜像网络报文的起始位置开始,截取镜像网络报文中目标报文头长度的数据作为镜像报文头,可以包括:
从参考镜像扩展头的起始位置开始,截取参考镜像网络报文中目标报文头长度的数据,并从截取的数据中删除镜像扩展头,得到镜像报文头。其中,目标报文头长度包括镜像报文头的长度和镜像扩展头的长度。
示例性地,如果在镜像网络报文之前添加了镜像扩展头,且长度映射表中的报文头长度还包括了镜像扩展头的长度。例如,镜像扩展头的长度可以是一个字节。在这种情况下确定的目标报文头长度包括镜像网络报文的镜像报文头长度和镜像扩展头的长度。在出口流程的第二组包阶段,数据平面从参考镜像扩展头的起始位置开始,截取参考镜像网络报文中目标报文头长度的数据,并将镜像扩展头进行截取,得到镜像报文头。
示例性地,如果在镜像网络报文之前添加了镜像扩展头,且长度映射表中的报文头长度不包括镜像扩展头的长度。在这种情况下确定的目标报文头长度仅包括镜像网络报文的镜像报文头长度。从镜像扩展头的结束位置开始,截取参考镜像网络报文中目标报文头长度的数据作为镜像报文头。
本实施例通过在出口流程中基于镜像扩展头识别镜像处理后的网络报文,并截取镜像扩展头,以使输出的镜像报文头中仅包括镜像报文头,提高了报文头输出的准确性。
步骤S209、在长度映射表中确定与目标镜像会话标识对应的目标输出端口信息和目标报文头长度。
步骤S210、从镜像网络报文的起始位置开始,截取镜像网络报文中目标报文头长度的数据作为镜像报文头,并输出镜像报文头至目标输出端口信息对应的目标端口和/或目标端口组。
可选地,输出镜像报文头至目标输出端口信息对应的目标端口和/或目标端口组,可以包括:
若目标输出端口信息是目标链路聚合组的第一标识信息,则输出目标报文头长度的镜像网络报文至第一标识信息对应的目标链路聚合组,以通过目标链路聚合组输出目标报文头长度的镜像网络报文;
若目标输出端口信息是目标多播组的第二标识信息,则输出目标报文头长度的镜像网络报文至第二标识信息对应的目标多播组,以通过目标多播组输出目标报文头长度的镜像网络报文;
若目标输出端口信息是目标端口的第三标识信息,则输出目标报文头长度的镜像网络报文至第三标识信息对应的目标端口,以通过目标端口输出目标报文头长度的镜像网络报文。
本实施例根据目标输出端口信息的标识信息的类型,确定对应的目标链路聚合组、目标多播组和/或目标端口,将目标报文头长度的镜像网络报文输出至对应的目标链路聚合组、目标多播组和/或目标端口,实现了汇聚分流设备的多类型端口输出,提高了报文头输出的灵活性和可用性。
本发明实施例通过解析输出端口信息,得到端口类型以及各端口类型对应的标识信息,并依据不同的端口类型建立不同的镜像会话,利用镜像会话建立输出端口信息与协议头类型之间的关联关系,进而基于镜像会话标识关联标识映射表与长度映射表,提高了后续的查表效率。本发明实施例通过解析原始网络报文的目标报文信息,并基于对应的规则表进行过滤,报文头的输出针对性更强,减少了汇聚分流设备的处理负荷,降低了汇聚分流设备的***功耗。本发明实施例通过对原始网络报文进行镜像处理,基于标识映射表和长度映射表快速确定对应的目标输出端口信息和目标报文头长度,并对镜像网络报文进行截断输出,在汇聚分流设备中实现了报文头的输出功能,能够做到端口线速的情况下完成基于规则表的网络报文过滤和报文头输出,减轻了后端设备的带宽和性能压力。
实施例三
本实施例在上述实施例的基础上,提供一种汇聚分流设备的***中控制平面与数据平面工作的具体实施方式。
图4是本发明实施例三提供是一种控制平面上报文头处理方法的流程图。如图4所示,用户可以通过命令行输入过滤规则信息和输出端口信息,并通过命令行开启报文头输出功能。其中,过滤规则信息可以包括五元组过滤规则信息等。控制平面检测到报文头输出指令时,解析命令行得到五元组过滤规则信息和输出端口信息。将五元组过滤规则信息下发给数据平面,并写入至数据平面的五元组信息规则表中。控制平面根据输出端口信息判断是否输出到复制组中的负载均衡组,若是,则建立链路聚合组,并将链路聚合组挂载到多播组的节点上。否则,枚举所有支持的协议头类型和对应的报文头长度。利用输出端口信息和协议头类型的组合创建多个镜像会话,并生成对应的镜像会话标识。创建协议头类型、报文头输出指令的指令标识以及镜像会话标识的表项,并将表项关联写入至数据平面的标识映射表。对于每个所述镜像会话,创建所述镜像会话标识、所述输出端口信息以及所述协议头类型对应的报文头长度的表项,并将表项关联写入至数据平面的长度映射表。配置结束,下发成功。
图5是本发明实施例三提供是一种数据平面上报文头处理方法的流程图。如图5所示,数据平面从网络接收原始网络报文,经过Ingress(入口)流程的Parser阶段解析原始网络报文,例如,解析出协议头类型和五元组信息。利用五元组信息查找五元组信息规则表,如果命中规则,则打开Ingress流程中的镜像功能。数据平面判断是否有报文头输出指令,若没有,则对过滤后的原始网络报文进行其他动作处理流程,在Ingress流程的Deparser阶段,在原始网络报文之前添加Bridge扩展头。若有,则对过滤后的原始网络报文进行镜像处理,丢弃原始网络报文。其中,mirror_type=ING_MIRROR表示镜像处理。根据协议头类型以及报文头输出指令的指令标识查找标识映射表,得到对应的目标镜像会话标识。在Ingress流程的Deparser阶段,在镜像网络报文之前添加Mirror扩展头,其中,Mirror扩展头中至少包括目标镜像会话标识。添加了Mirror扩展头的镜像网络报文和添加了Bridge扩展头的原始网络报文均被传输至Egress(出口)流程。在Egress流程的Parser阶段解析Egress流程处的网络报文,若存在Mirror扩展头,则根据长度映射表确定对应的目标输出端口信息和目标报文头长度,在Egress流程的Deparser阶段,去掉Mirror扩展头,截取镜像报文头,并进行组包发包。若不存在Mirror扩展头,则进行其他Egress流程的处理流程,例如,正常在MAU(match action unit,查表转发单元)查表,最后在Egress流程的Deparser阶段组包发包。
本发明实施例通过预先枚举出支持的协议的报文头长度,当用户下发配置将报文头输出到某个端口时,可以在控制平面建立多种报文头长度同一个输出端口的多个镜像会话,并初始化标识映射表和长度映射表。然后通过查表决定原始网络报文的镜像转发方式。当用户下发配置将镜像报文头输出到复制组中的负载均衡组的时候,可以预先通过控制平面先建立多播组,并将链路聚合组挂载到多播组上,然后再下发多种报文头长度同一个多播组的多个镜像会话,依然通过查表决定原始网络报文的镜像转发方式。解决了现有技术中非可编程的交换芯片的功能在出厂时已经固化,而导致对新的协议适应性以及资源利用方面都有着天然的劣势,无法实现报文头输出功能的问题,既保证了汇聚分流设备对流量进行汇聚分流、ACL过滤和隧道报文处理等功能,保证了在现网的平均报文长度下可以实现全端口的线速处理转发,还实现了在汇聚分流设备上进行报文头输出,即既可以实现端口的线速处理,又能够极大的减轻后端设备的性能压力。
实施例四
图6是本发明实施例四提供的一种网络报文的报文头处理装置的结构示意图。该装置可由软件和/或硬件实现,一般可集成在具有可编程交换芯片的汇聚分流设备中,可以通过执行网络报文的报文头处理方法实现在汇聚分流设备上输出报文头。如图6所示,该装置包括:
报文接收模块310,用于接收原始网络报文,并解析出所述原始网络报文的协议头类型;
报文镜像模块320,用于对所述原始网络报文进行镜像处理,得到镜像网络报文;
标识查找模块330,用于在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识;
长度确定模块340,用于在长度映射表中确定与所述目标镜像会话标识对应的目标输出端口信息和目标报文头长度;其中,所述标识映射表和长度映射表中的表项基于控制平面获取的所述报文头输出指令中的配置信息得到;
报文头输出模块350,用于从所述镜像网络报文的起始位置开始,截取所述镜像网络报文中所述目标报文头长度的数据作为镜像报文头,并输出所述镜像报文头至所述目标输出端口信息对应的目标端口和/或目标端口组。
可选地,所述装置还包括:
报文信息解析模块,用于在对所述原始网络报文进行镜像处理,得到镜像网络报文之前,解析出所述原始网络报文的目标报文信息;
规则表查找模块,用于查找所述目标报文信息对应的规则表中是否存在所述目标报文信息;其中,所述规则表中的表项是通过控制平面基于获取的过滤规则信息配置得到;若存在,执行对所述原始网络报文进行镜像处理,得到镜像网络报文的步骤。
可选地,所述目标报文信息的数量为至少两个,所述规则表查找模块,具体用于:
获取至少两个所述目标报文信息对应的至少两个规则表以及所述至少两个规则表分别对应的优先级;
按照所述优先级由高到低的顺序查找所述规则表中是否存在对应的所述目标报文信息。
可选地,所述装置还包括:
报文信息获取模块,用于在查找所述目标报文信息对应的规则表中是否存在所述目标报文信息之前,获取过滤规则信息中的报文信息;
规则表写入模块,用于将所述报文信息写入至对应的规则表中,以基于所述规则表确定待镜像处理的原始网络报文。
可选地,所述装置还包括:
镜像扩展头添加模块,用于在在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识之后,在入口流程中,若协议头输出功能开启且查找到所述目标镜像会话标识,则在所述镜像网络报文之前添加镜像扩展头,以在出口流程中根据所述镜像扩展头识别出所述镜像网络报文;其中,所述镜像扩展头中至少包括所述目标镜像会话标识;
桥扩展头添加模块,用于若协议头输出功能未开启,则在所述原始网络报文之前添加桥扩展头。
可选地,所述装置还包括:
镜像扩展头判断模块,用于在在所述镜像网络报文之前添加镜像扩展头之后,在出口流程中,解析所述出口流程中的网络报文,并根据解析结果判断所述网络报文中是否存在所述镜像扩展头;
标识获取模块,用于若存在,则确定所述网络报文为参考镜像网络报文,获取所述参考镜像网络报文的镜像扩展头中的目标镜像会话标识,执行在长度映射表中确定与所述目标镜像会话标识对应的目标输出端口信息和目标报文头长度的步骤;
相应地,所述报文头输出模块350,具体用于:
从所述参考镜像扩展头的起始位置开始,截取所述参考镜像网络报文中所述目标报文头长度的数据,并从截取的数据中删除所述镜像扩展头,得到镜像报文头;其中,所述目标报文头长度包括所述镜像报文头的长度和所述镜像扩展头的长度。
可选地,所述报文头输出模块350,具体用于:
若所述目标输出端口信息是目标链路聚合组的第一标识信息,则输出所述目标报文头长度的镜像网络报文至所述第一标识信息对应的所述目标链路聚合组,以通过所述目标链路聚合组输出所述目标报文头长度的镜像网络报文;
若所述目标输出端口信息是目标多播组的第二标识信息,则输出所述目标报文头长度的镜像网络报文至所述第二标识信息对应的所述目标多播组,以通过所述目标多播组输出所述目标报文头长度的镜像网络报文;
若所述目标输出端口信息是目标端口的第三标识信息,则输出所述目标报文头长度的镜像网络报文至所述第三标识信息对应的所述目标端口,以通过所述目标端口输出所述目标报文头长度的镜像网络报文。
可选地,所述装置还包括:
信息获取模块,用于在在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识之前,在检测到报文头输出指令时,获取所述报文头输出指令中的输出端口信息、指令标识、预设的协议头类型以及所述协议头类型对应的报文头长度;
会话建立模块,用于基于每个所述输出端口信息以及每个所述协议头类型建立镜像会话,并生成所述镜像会话的镜像会话标识;
标识映射表写入模块,用于将所述协议头类型、所述指令标识以及所述镜像会话标识关联写入标识映射表的表项中;
长度映射表写入模块,用于将每个所述镜像会话的所述镜像会话标识、所述输出端口信息以及所述协议头类型对应的报文头长度关联写入长度映射表的表项中。
可选地,所述装置还包括:
端口解析模块,用于在基于每个所述输出端口信息以及每个所述协议头类型建立镜像会话之前,解析所述输出端口信息,得到端口类型以及各所述端口类型对应的标识信息;
第一镜像会话建立模块,用于若所述端口类型是负载均衡组,则建立链路聚合组,以基于每个所述链路聚合组的第一标识信息以及每个所述协议头类型建立镜像会话;
第二镜像会话建立模块,用于若所述端口类型是复制组,则建立多播组,以基于每个所述多播组的第二标识信息以及每个所述预设协议头类型建立镜像会话;
第三镜像会话建立模块,用于若所述端口类型是端口,则基于所述端口的第三标识信息以及每个所述预设协议头类型建立镜像会话。
可选地,若所述复制组中包括负载均衡组,则所述第二镜像会话建立模块,具体还用于:
建立链路聚合组,并将所述链路聚合组挂载到所述多播组的节点上。
本发明实施例所提供的网络报文的报文头处理装置可执行本发明任意实施例所提供的网络报文的报文头处理方法,具备执行方法相应的功能模块和有益效果。
实施例五
图7是本发明实施例五提供的一种汇聚分流设备的结构示意图,如图7所示,该汇聚分流设备包括处理器400、存储器410、输入装置420、输出装置430和可编程交换芯片440;汇聚分流设备中处理器400的数量可以是一个或多个,图7中以一个处理器400为例;汇聚分流设备中可编程交换芯片440的数量可以是一个或多个,图7中以一个可编程交换芯片440为例;汇聚分流设备中的处理器400、存储器410、输入装置420、输出装置430和可编程交换芯片440可以通过总线或其他方式连接,图7中以通过总线连接为例。
存储器410作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的网络报文的报文头处理方法对应的程序指令和/或模块(例如,网络报文的报文头处理装置中的报文接收模块310、报文镜像模块320、标识查找模块330、长度确定模块340和报文头输出模块350)。处理器400和可编程交换芯片440通过运行存储在存储器410中的软件程序、指令以及模块,从而执行汇聚分流设备的各种功能应用以及数据处理,即实现上述的网络报文的报文头处理方法。
存储器410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器410可进一步包括相对于处理器400远程设置的存储器以及相对于可编程交换芯片440远程设置的存储器,这些远程存储器可以通过网络连接至汇聚分流设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置420可用于接收输入的数字或字符信息,以及产生与汇聚分流设备的用户设置以及功能控制有关的键信号输入。输出装置430可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种网络报文的报文头处理方法,应用于具有可编程交换芯片的汇聚分流设备,该方法包括:
接收原始网络报文,并解析出所述原始网络报文的协议头类型;
对所述原始网络报文进行镜像处理,得到镜像网络报文;
在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识;
在长度映射表中确定与所述目标镜像会话标识对应的目标输出端口信息和目标报文头长度;其中,所述标识映射表和长度映射表中的表项基于控制平面获取的所述报文头输出指令中的配置信息得到;
从所述镜像网络报文的起始位置开始,截取所述镜像网络报文中所述目标报文头长度的数据作为镜像报文头,并输出所述镜像报文头至所述目标输出端口信息对应的目标端口和/或目标端口组。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的网络报文的报文头处理方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述网络报文的报文头处理装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (13)
1.一种网络报文的报文头处理方法,其特征在于,应用于具有可编程交换芯片的汇聚分流设备,包括:
接收原始网络报文,并解析出所述原始网络报文的协议头类型;
对所述原始网络报文进行镜像处理,得到镜像网络报文;
在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识;其中,所述报文头输出指令是在接收到用户输入的配置信息并检测到用户开启报文头输出功能时触发,用于指示需要执行的与输出报文头相关的动作;
在长度映射表中确定与所述目标镜像会话标识对应的目标输出端口信息和目标报文头长度;其中,所述标识映射表和长度映射表中的表项基于控制平面获取的所述报文头输出指令中的配置信息得到;
从所述镜像网络报文的起始位置开始,截取所述镜像网络报文中所述目标报文头长度的数据作为镜像报文头,并输出所述镜像报文头至所述目标输出端口信息对应的目标端口和/或目标端口组。
2.根据权利要求1所述的方法,在对所述原始网络报文进行镜像处理,得到镜像网络报文之前,还包括:
解析出所述原始网络报文的目标报文信息;
查找所述目标报文信息对应的规则表中是否存在所述目标报文信息;其中,所述规则表中的表项是通过控制平面基于获取的过滤规则信息配置得到;
若存在,执行对所述原始网络报文进行镜像处理,得到镜像网络报文的步骤。
3.根据权利要求2所述的方法,其特征在于,所述目标报文信息的数量为至少两个,所述查找所述目标报文信息对应的规则表中是否存在所述目标报文信息,包括:
获取至少两个所述目标报文信息对应的至少两个规则表以及所述至少两个规则表分别对应的优先级;
按照所述优先级由高到低的顺序查找所述规则表中是否存在对应的所述目标报文信息。
4.根据权利要求2所述的方法,其特征在于,在查找所述目标报文信息对应的规则表中是否存在所述目标报文信息之前,还包括:
获取过滤规则信息中的报文信息;
将所述报文信息写入至对应的规则表中,以基于所述规则表确定待镜像处理的原始网络报文。
5.根据权利要求1所述的方法,其特征在于,在在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识之后,还包括:
在入口流程中,若协议头输出功能开启且查找到所述目标镜像会话标识,则在所述镜像网络报文之前添加镜像扩展头,以在出口流程中根据所述镜像扩展头识别出所述镜像网络报文;其中,所述镜像扩展头中至少包括所述目标镜像会话标识;
若协议头输出功能未开启,则在所述原始网络报文之前添加桥扩展头。
6.根据权利要求5所述的方法,其特征在于,在在所述镜像网络报文之前添加镜像扩展头之后,还包括:
在出口流程中,解析所述出口流程中的网络报文,并根据解析结果判断所述网络报文中是否存在所述镜像扩展头;
若存在,则确定所述网络报文为参考镜像网络报文,获取所述参考镜像网络报文的镜像扩展头中的目标镜像会话标识,执行在长度映射表中确定与所述目标镜像会话标识对应的目标输出端口信息和目标报文头长度的步骤;
相应地,所述从所述镜像网络报文的起始位置开始,截取所述镜像网络报文中所述目标报文头长度的数据作为镜像报文头,包括:
从所述参考镜像网络报文的镜像扩展头的起始位置开始,截取所述参考镜像网络报文中所述目标报文头长度的数据,并从截取的数据中删除所述镜像扩展头,得到镜像报文头;其中,所述目标报文头长度包括所述镜像报文头的长度和所述镜像扩展头的长度。
7.根据权利要求1所述的方法,其特征在于,所述输出所述镜像报文头至所述目标输出端口信息对应的目标端口和/或目标端口组,包括:
若所述目标输出端口信息是目标链路聚合组的第一标识信息,则输出所述目标报文头长度的镜像网络报文至所述第一标识信息对应的所述目标链路聚合组,以通过所述目标链路聚合组输出所述目标报文头长度的镜像网络报文;
若所述目标输出端口信息是目标多播组的第二标识信息,则输出所述目标报文头长度的镜像网络报文至所述第二标识信息对应的所述目标多播组,以通过所述目标多播组输出所述目标报文头长度的镜像网络报文;
若所述目标输出端口信息是目标端口的第三标识信息,则输出所述目标报文头长度的镜像网络报文至所述第三标识信息对应的所述目标端口,以通过所述目标端口输出所述目标报文头长度的镜像网络报文。
8.根据权利要求1所述的方法,其特征在于,在在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识之前,还包括:
在检测到报文头输出指令时,获取所述报文头输出指令中的输出端口信息、指令标识、预设的协议头类型以及所述协议头类型对应的报文头长度;
基于每个所述输出端口信息以及每个所述协议头类型建立镜像会话,并生成所述镜像会话的镜像会话标识;
将所述协议头类型、所述指令标识以及所述镜像会话标识关联写入标识映射表的表项中;
将每个所述镜像会话的所述镜像会话标识、所述输出端口信息以及所述协议头类型对应的报文头长度关联写入长度映射表的表项中。
9.根据权利要求8所述的方法,其特征在于,在基于每个所述输出端口信息以及每个所述协议头类型建立镜像会话之前,还包括:
解析所述输出端口信息,得到端口类型以及各所述端口类型对应的标识信息;
若所述端口类型是负载均衡组,则建立链路聚合组,以基于每个所述链路聚合组的第一标识信息以及每个所述协议头类型建立镜像会话;
若所述端口类型是复制组,则建立多播组,以基于每个所述多播组的第二标识信息以及每个所述预设协议头类型建立镜像会话;
若所述端口类型是端口,则基于所述端口的第三标识信息以及每个所述预设协议头类型建立镜像会话。
10.根据权利要求9所述的方法,其特征在于,若所述复制组中包括负载均衡组,则在建立多播组之后,还包括:
建立链路聚合组,并将所述链路聚合组挂载到所述多播组的节点上。
11.一种网络报文的报文头处理装置,其特征在于,所述报文头处理装置配置于具有可编程交换芯片的汇聚分流设备,包括:
报文接收模块,用于接收原始网络报文,并解析出所述原始网络报文的协议头类型;
报文镜像模块,用于对所述原始网络报文进行镜像处理,得到镜像网络报文;
标识查找模块,用于在标识映射表中查找与所述协议头类型和报文头输出指令的指令标识对应的目标镜像会话标识;其中,所述报文头输出指令是在接收到用户输入的配置信息并检测到用户开启报文头输出功能时触发,用于指示需要执行的与输出报文头相关的动作;
长度确定模块,用于在长度映射表中确定与所述目标镜像会话标识对应的目标输出端口信息和目标报文头长度;其中,所述标识映射表和长度映射表中的表项基于控制平面获取的所述报文头输出指令中的配置信息得到;
报文头输出模块,用于从所述镜像网络报文的起始位置开始,截取所述镜像网络报文中所述目标报文头长度的数据作为镜像报文头,并输出所述镜像报文头至所述目标输出端口信息对应的目标端口和/或目标端口组。
12.一种汇聚分流设备,其特征在于,所述汇聚分流设备包括:
一个或多个处理器;
一个或多个可编程交换芯片;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个可编程交换芯片执行时,使得所述一个或多个可编程交换芯片实现如权利要求1-7中任一所述的网络报文的报文头处理方法;
以及,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求8-10中任一所述的网络报文的报文头处理方法。
13.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-10中任一所述的网络报文的报文头处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110227379.XA CN112953949B (zh) | 2021-03-01 | 2021-03-01 | 一种网络报文的报文头处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110227379.XA CN112953949B (zh) | 2021-03-01 | 2021-03-01 | 一种网络报文的报文头处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112953949A CN112953949A (zh) | 2021-06-11 |
CN112953949B true CN112953949B (zh) | 2023-01-06 |
Family
ID=76247081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110227379.XA Active CN112953949B (zh) | 2021-03-01 | 2021-03-01 | 一种网络报文的报文头处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112953949B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115514712B (zh) * | 2021-06-22 | 2023-09-05 | 中移物联网有限公司 | 一种数据处理方法、装置、终端和网络侧设备 |
CN113556345B (zh) * | 2021-07-22 | 2024-04-19 | 锐捷网络股份有限公司 | 一种报文处理方法、装置、设备及介质 |
CN113824720B (zh) * | 2021-09-18 | 2023-07-18 | 恒安嘉新(北京)科技股份公司 | 报文处理方法、装置、设备及存储介质 |
CN114884905B (zh) * | 2022-04-18 | 2023-11-07 | 深信服科技股份有限公司 | 一种流量镜像方法、装置、设备和计算机存储介质 |
CN115857420B (zh) * | 2023-03-03 | 2023-05-12 | 深圳市综科智控科技开发有限公司 | 一种工控设备之间io互控的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744534A (zh) * | 2005-08-19 | 2006-03-08 | 杭州华为三康技术有限公司 | 报文镜像方法及具有报文镜像功能的网络设备 |
US8116307B1 (en) * | 2004-09-23 | 2012-02-14 | Juniper Networks, Inc. | Packet structure for mirrored traffic flow |
CN102710513A (zh) * | 2012-05-24 | 2012-10-03 | 华为技术有限公司 | 报文镜像方法及设备 |
CN102932262A (zh) * | 2011-08-11 | 2013-02-13 | 中兴通讯股份有限公司 | 网络处理器镜像实现方法及网络处理器 |
CN109120533A (zh) * | 2018-11-19 | 2019-01-01 | 迈普通信技术股份有限公司 | 一种报文发送方法及路由设备 |
CN111404765A (zh) * | 2019-01-02 | 2020-07-10 | ***通信有限公司研究院 | 一种报文处理方法、装置、设备及计算机可读存储介质 |
WO2021023028A1 (zh) * | 2019-08-06 | 2021-02-11 | 中兴通讯股份有限公司 | 镜像数据流的方法、装置、通信设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112054969B (zh) * | 2019-06-06 | 2023-03-24 | 中兴通讯股份有限公司 | 一种实现报文镜像的方法及装置 |
-
2021
- 2021-03-01 CN CN202110227379.XA patent/CN112953949B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8116307B1 (en) * | 2004-09-23 | 2012-02-14 | Juniper Networks, Inc. | Packet structure for mirrored traffic flow |
CN1744534A (zh) * | 2005-08-19 | 2006-03-08 | 杭州华为三康技术有限公司 | 报文镜像方法及具有报文镜像功能的网络设备 |
CN102932262A (zh) * | 2011-08-11 | 2013-02-13 | 中兴通讯股份有限公司 | 网络处理器镜像实现方法及网络处理器 |
CN102710513A (zh) * | 2012-05-24 | 2012-10-03 | 华为技术有限公司 | 报文镜像方法及设备 |
CN109120533A (zh) * | 2018-11-19 | 2019-01-01 | 迈普通信技术股份有限公司 | 一种报文发送方法及路由设备 |
CN111404765A (zh) * | 2019-01-02 | 2020-07-10 | ***通信有限公司研究院 | 一种报文处理方法、装置、设备及计算机可读存储介质 |
WO2021023028A1 (zh) * | 2019-08-06 | 2021-02-11 | 中兴通讯股份有限公司 | 镜像数据流的方法、装置、通信设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112953949A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112953949B (zh) | 一种网络报文的报文头处理方法、装置、设备及存储介质 | |
CN108141416B (zh) | 一种报文处理方法、计算设备以及报文处理装置 | |
US9154418B1 (en) | Efficient packet classification in a network device | |
CN105612719B (zh) | 使用封装头部中的元数据的高级网络虚拟化 | |
CN111901244B (zh) | 一种网络报文转发*** | |
WO2019071043A1 (en) | SEGMENT DELIVERY NETWORK SIGNALING AND PACKET PROCESSING | |
US9154586B2 (en) | Method for parsing network packets having future defined tags | |
US10693790B1 (en) | Load balancing for multipath group routed flows by re-routing the congested route | |
US11368357B2 (en) | Service fault locating method and apparatus | |
US9590922B2 (en) | Programmable and high performance switch for data center networks | |
CN106685827B (zh) | 一种下行报文的转发方法及ap设备 | |
EP2880550B1 (en) | Connection mesh in mirroring asymmetric clustered multiprocessor systems | |
CN112887229B (zh) | 一种会话信息同步方法及装置 | |
US20160248652A1 (en) | System and method for classifying and managing applications over compressed or encrypted traffic | |
US20220345400A1 (en) | Packet sending method and apparatus, and storage medium | |
CN115174676A (zh) | 汇聚分流方法及其相关设备 | |
CN116319535A (zh) | 路径切换方法、装置、网络设备、以及网络*** | |
WO2022007550A1 (zh) | 一种负载均衡方法、装置、网络设备及*** | |
EP2736202A1 (en) | Message receiving and sending method, device, and system | |
WO2021027420A1 (zh) | 用于数据传输的方法和装置 | |
JP5961745B2 (ja) | 通信装置またはパケット転送方法 | |
WO2022100511A1 (zh) | 转发表项的处理方法和装置 | |
CN110166359B (zh) | 一种报文转发方法及装置 | |
EP2795881A1 (en) | Apparatus and methods for efficient network address translation and application level gateway processing | |
US9473389B2 (en) | Excluding a data frame from a link aggregation group |
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 |