CN109688058B - 报文处理方法、装置及网络设备 - Google Patents

报文处理方法、装置及网络设备 Download PDF

Info

Publication number
CN109688058B
CN109688058B CN201811557038.3A CN201811557038A CN109688058B CN 109688058 B CN109688058 B CN 109688058B CN 201811557038 A CN201811557038 A CN 201811557038A CN 109688058 B CN109688058 B CN 109688058B
Authority
CN
China
Prior art keywords
message
port
ethernet
memory
kernel
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
Application number
CN201811557038.3A
Other languages
English (en)
Other versions
CN109688058A (zh
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.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology 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 Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN201811557038.3A priority Critical patent/CN109688058B/zh
Publication of CN109688058A publication Critical patent/CN109688058A/zh
Application granted granted Critical
Publication of CN109688058B publication Critical patent/CN109688058B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling

Landscapes

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

Abstract

本申请提供一种报文处理方法、装置及网络设备。该方法通过从每个以太端口接收报文后,根据以太端口的类型将报文存入用户态内存或者内核态内存;并将存入用户态内存或者内核态内存的报文分别送入缓存队列;在对每个缓存队列中的报文进行调度处理时,根据报文的内容,判断存入用户态的报文需要在内核态处理时,将该报文添加第一标识后通过指定端口进行发送;或者判断存入内核态的报文需要在用户态处理时,将该报文添加第二标识后通过指定端口进行发送,指定端口工作在环回模式下,通过对报文的识别,将包含第一标识的报文存入内核态内存,将包含第二标识的报文存入用户态内存,从而改善现有技术中信息交互容易受到限制的问题。

Description

报文处理方法、装置及网络设备
技术领域
本发明涉及数据通信技术领域,具体而言,涉及一种报文处理方法、装置及网络设备。
背景技术
随着Linux操作系统在嵌入式领域的广泛应用,路由器等通信设备也使用Linux操作系统,通过在Linux操作系统上进行路由软件开发,实现报文转发。Linux操作系统区分用户态和内核态,这两种处理器模式下的程序使用不同的内存地址空间,无法直接使用内存通信。用户态下的不同应用程序之间相互隔离,当一个应用程序出现异常时,只需要对该应用程序进行处理即可,其他应用程序可继续正常工作。但内核下的程序一旦出现异常,则整个操作系统都会异常或崩溃。基于这个现象,路由设备为了稳定可靠运行,选择在用户态下开发应用程序。但仍无法避免用户态和内核态下信息的交互。因此需要用户态和内核态可以进行信息交互的方式。
在现有技术中,Linux操作系统提供的用户态和内核态下的信息交互方式存在各种限制。比如,系统调用方式只能由用户态作为信息传递的发起方,内核无法直接发起信息传递。即,在使用Linux操作系统时,利用操作系统自身提供的用户态和内核态信息交互方式无法较好地实现双向信息的大量交互。
发明内容
为了克服上述现有技术中的不足,本申请在于提供一种报文处理方法、装置及网络设备,能够改善现有技术中信息交互容易受到限制的问题。
为了实现上述目的,本申请实施例所提供的技术方案如下所示:
第一方面,本申请实施例提供一种报文处理方法,应用于运行LINUX的分布式网络设备,所述网络设备包括一个配置为环回模式的指定端口;所述方法包括:
从每个以太端口接收报文后,根据所述以太端口的类型将所述报文存入用户态内存或者内核态内存;并将存入所述用户态内存或者所述内核态内存的报文分别送入缓存队列;
在对每个所述缓存队列中的报文进行调度时,根据所述报文的内容,判断存入用户态的报文需要在内核态处理时,将该报文添加第一标识后通过所述指定端口进行发送;或者判断存入内核态的报文需要在用户态处理时,将该报文添加第二标识后通过所述指定端口进行发送。
结合第一方面,在一些可选的实施方式中,所述以太端口的类型包括转发端口、管理端口和所述指定端口,所述管理端口为转发平面与控制平面通信的端口;根据所述以太端口的类型将所述报文存入用户态内存或者内核态内存,包括:
在所述以太端口为所述转发端口时,将所述以太端口接收的报文存入所述用户态内存;
在所述以太端口为所述管理端口时,将所述以太端口接收的报文存入所述内核态内存;
在所述以太端口为所述指定端口,且所述以太端口接收的报文包括所述第一标识时,将所述以太端口接收的报文存入所述内核态内存;
在所述以太端口为所述指定端口,且所述以太端口接收的报文包括所述第二标识时,将所述以太端口接收的报文存入所述用户态内存。
结合第一方面,在一些可选的实施方式中,所述将该报文添加第一标识后通过所述指定端口进行发送,包括:
对该报文封装以太头部,其中,设置所述以太头部中目的MAC地址为所述指定端口的MAC地址,设置所述以太头部中的类型值为所述第一标识;
将该封装以太头部后的报文通过所述指定端口进行发送;或者
所述将该报文添加第二标识后通过所述指定端口进行发送,包括:
为该报文封装以太头部,其中,设置所述以太头部中目的MAC地址为所述指定端口的MAC地址,设置所述以太头部中的类型值为所述第二标识;
将该封装以太头部后的报文通过所述指定端口进行发送。
结合第一方面,在一些可选的实施方式中,所述方法还包括:
在对每个缓存队列中的报文进行调度时,判断存入所述用户态内存的报文为需要转发的报文时直接进行转发,或者判断存入所述内核态内存的报文为需要上交控制平面的报文时上交控制平面进行处理。
第二方面,本申请实施例还提供一种报文处理装置,应用于运行LINUX的分布式网络设备,所述网络设备包括一个配置为环回模式的指定端口;所述装置包括:
报文存送单元,用于从每个以太端口接收报文后,根据所述以太端口的类型将所述报文存入用户态内存或者内核态内存;并将存入所述用户态内存或者所述内核态内存的报文分别送入缓存队列;
报文发送单元,用于在对每个所述缓存队列中的报文进行调度时,根据所述报文的内容,判断存入用户态的报文需要在内核态处理时,将该报文添加第一标识后通过所述指定端口进行发送;或者判断存入内核态的报文需要在用户态处理时,将该报文添加第二标识后通过所述指定端口进行发送。
结合第二方面,在一些可选的实施方式中,所述以太端口的类型包括转发端口、管理端口和所述指定端口,所述管理端口为转发平面与控制平面通信的端口;所述报文存送单元还用于:
在所述以太端口为所述转发端口时,将所述以太端口接收的报文存入所述用户态内存;
在所述以太端口为所述管理端口时,将所述以太端口接收的报文存入所述内核态内存;
在所述以太端口为所述指定端口,且所述以太端口接收的报文包括所述第一标识时,将所述以太端口接收的报文存入所述内核态内存;
在所述以太端口为所述指定端口,且所述以太端口接收的报文包括所述第二标识时,将所述以太端口接收的报文存入所述用户态内存。
结合第二方面,在一些可选的实施方式中,所述报文发送单元还用于:
对该报文封装以太头部,其中,设置所述以太头部中目的MAC地址为所述指定端口的MAC地址,设置所述以太头部中的类型值为所述第一标识;
将该封装以太头部后的报文通过所述指定端口进行发送;或者
所述报文发送单元还用于:
为该报文封装以太头部,其中,设置所述以太头部中目的MAC地址为所述指定端口的MAC地址,设置所述以太头部中的类型值为所述第二标识;
将该封装以太头部后的报文通过所述指定端口进行发送。
结合第二方面,在一些可选的实施方式中,所述装置还包括判断处理单元,用于在对每个缓存队列中的报文进行调度时,判断存入所述用户态内存的报文为需要转发的报文时直接进行转发,或者判断存入所述内核态内存的报文为需要上交控制平面的报文时上交控制平面进行处理。
第三方面,本申请实施例还提供一种网络设备,所述网络设备包括相互耦合的存储模块、多核处理器、通信模块以及物理接口,所述存储模块内存储计算机程序,当所述计算机程序被所述多核处理器执行时,使得所述网络设备执行上述的方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述的方法。
相对于现有技术而言,本申请提供的报文处理方法、装置及网络设备至少具有以下有益效果:该方法通过从每个以太端口接收报文后,根据以太端口的类型将报文存入用户态内存或者内核态内存;并将存入用户态内存或者内核态内存的报文分别送入缓存队列;在对每个缓存队列中的报文进行调度处理时,根据报文的内容,判断存入用户态的报文需要在内核态处理时,将该报文添加第一标识后通过指定端口进行发送;或者判断存入内核态的报文需要在用户态处理时,将该报文添加第二标识后通过指定端口进行发送,指定端口工作在环回模式下,通过对报文的识别,将包含第一标识的报文存入内核态内存,将包含第二标识的报文存入用户态内存。本方案能够无需依赖操作系统提供的用户态与内核态之间通信的机制来完成用户态与内核态之间大量数据的简单、高效的双向交互,从而改善现有技术中信息交互容易受到限制的问题。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举本申请实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的网络设备的方框示意图。
图2为本申请实施例提供的报文处理方法的流程示意图。
图3为本申请实施例提供的报文的封装格式的示意图。
图4为本申请实施例提供的报文处理装置的方框示意图。
图标:10-网络设备;11-多核处理器;12-报文接收模块;13-内存模块;14-指定端口;100-报文处理装置;110-报文存送单元;120-报文发送单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
随着Linux操作系统在嵌入式领域的广泛应用,路由器等通信设备也使用Linux操作系统,通过在Linux操作系统上进行路由软件开发,实现报文转发。Linux操作系统区分用户态和内核态,这两种CPU模式下的程序使用不同的内存地址空间,无法直接使用内存通信。用户态下的不同应用程序之间相互隔离,当一个应用程序出现异常时,只需要对该应用程序进行处理即可,其他应用程序可继续正常工作。但内核下的程序一旦出现异常,则整个操作系统都会异常或崩溃。基于这个现象,路由设备为了稳定可靠运行,选择在用户态下开发应用程序。但仍无法避免用户态和内核态下信息的交互。因此需要用户态和内核态可以进行信息交互的方式。
在现有技术中,Linux操作系统提供的用户态和内核态下的信息交互方式存在各种限制。比如,系统调用方式只能由用户态作为信息传递的发起方,内核无法直接发起信息传递。即,在使用Linux操作系统时,利用操作系统自身提供的用户态和内核态信息交互方式无法较好地实现双向信息的大量交互。
鉴于上述问题,本申请申请人经过长期研究探索,提出以下实施例以解决上述问题。下面结合附图,对本申请实施例作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参照图1,本申请实施例提供的网络设备10为能够进行数据通信的设备,该设备安装有能够运行在用户态、内核态的Linux操作系统。
具体地,网络设备10可以包括多核处理器11、报文接收模块12、存储模块、通信模块及指定端口14。内存模块13包括用于存储报文的内核态内存和用户态内存。其中,通信模块可以包括报文接收模块12,存储模块可以包括内存模块13。
请参照图2,本申请实施例提供的报文处理方法可以应用于上述的网络设备10,可以由该网络设备10执行或实现报文处理方法的各步骤。在本实施例中,报文处理方法可以包括以下步骤:
步骤S210,从每个以太端口接收报文后,根据以太端口的类型将报文存入用户态内存或者内核态内存;并将存入用户态内存或者内核态内存的报文分别送入缓存队列;
步骤S220,在对每个缓存队列中的报文进行调度时,根据报文的内容,判断存入用户态的报文需要在内核态处理时,将该报文添加第一标识后通过指定端口14进行发送;或者判断存入内核态的报文需要在用户态处理时,将该报文添加第二标识后通过指定端口14进行发送。
本申请实施例提供的方法对报文收发的模式包括BD环模式和硬件加速模式,其中,硬件加速模式相对BD环模式而言,硬件提供了能够协助报文转发需要的功能,比如硬件可以支持内存区域数据的释放,BD环模式则需要软件释放内存区域的数据。下面以硬件加速模式为例,对图2所示的报文处理方法的各步骤进行详细阐述:
步骤S210,从每个以太端口接收报文后,根据以太端口的类型将报文存入用户态内存或者内核态内存;并将存入用户态内存或者内核态内存的报文分别送入缓存队列。
在本实施例中,报文接收模块12可以用于从每个以太网端口接收报文。报文接收模块12可以为报文接收处理单元(Packet Input Unit,简称PIU),可以从外部设备的接口或指定端口14接收报文,是提供报文解析和报文识别功能的单元,可以用于报文分类。网络设备10可以通过采用报文接收处理单元来识别不同的报文类型,对报文执行不同的处理策略。
在报文接收模块12从每个以太端口接收报文后,多核处理器11根据以太端口的类型将报文存入用户态内存或者内核态内存;并将存入用户态内存或者内核态内存的报文分别送入缓存队列。
可选地,以太端口的类型包括转发端口、管理端口和指定端口14,管理端口为转发平面与控制平面通信的端口。步骤S210中根据以太端口的类型将报文存入用户态内存或者内核态内存的步骤,可以包括:
在以太端口为转发端口时,将以太端口接收的报文存入用户态内存;
在以太端口为管理端口时,将以太端口接收的报文存入内核态内存;
在以太端口为指定端口14,且以太端口接收的报文包括第一标识时,将以太端口接收的报文存入内核态内存;
在以太端口为指定端口14,且以太端口接收的报文包括第二标识时,将以太端口接收的报文存入用户态内存。
在本实施例中,多核处理器11报文接收模块12可以根据各端口的类型及报文内容确定出报文需要在内核态处理或需要在用户态处理。比如,对于指定端口14接收的报文,若该报文携带有第一标识,则确定出该报文需要在内核态处理,并将以该报文存入内核态内存,以便于在内核态处理该报文;若该报文携带有第二标识,则确定出该报文需要在用户态处理,并将以该报文存入用户态内存,以便于在用户态处理该报文。
报文接收模块12报文接收模块12相内存模块13报文接收模块12以以步骤S220,在对每个缓存队列中的报文进行调度处理时,根据报文的内容,判断存入用户态的报文需要在内核态处理时,将该报文添加第一标识后通过指定端口14进行发送;或者判断存入内核态的报文需要在用户态处理时,将该报文添加第二标识后通过指定端口14进行发送。
在本实施例中,多核处理器11可以根据报文携带的内容确定出报文是否要由用户态发送至内核态,或是否需要有内核态发送至用户态。
可选地,步骤S220中将该报文添加第一标识后通过指定端口14进行发送的步骤,可以包括:
对该报文封装以太头部,其中,设置以太头部中目的MAC地址为指定端口14的MAC地址,设置以太头部中的类型值为第一标识;
将该封装以太头部后的报文通过指定端口14进行发送。
或者,将该报文添加第二标识后通过指定端口14进行发送,包括:
为该报文封装以太头部,其中,设置以太头部中目的MAC地址为指定端口14的MAC地址,设置以太头部中的类型值为第二标识;
将该封装以太头部后的报文通过指定端口14进行发送。
所述指定端口14工作在环回模式下,通过该指定端口14发送的报文会被该端口重新接收,报文接收模块12通过对该指定端口14所接收的报文进行报文识别,报文识别的字段是添加的第一标识或者第二标识,对于包含第一标识的报文,报文接收模块12将此报文存入内存模块13中的内核态内存,对于包含第二标识的报文,报文接收模块12将此报文存入内存模块13中的用户态内存,通过此种报文占用的内存空间转换,从而可以在不依赖系统的情况下,实现报文由用户态传递至内核态的交互过程,进而改善了现有技术中数据交互的容易受到限制的问题。
在现有技术中,信息若要由用户态传递至内核态需要利用Linux操作系统自身提供的用户态和内核态信息交互方式来实现信息交互,例如,系统调用方式只能由用户态作为信息传递的发起方,内核态的环境下无法直接发起信息传递。本申请实施例提供的方法便可以无需依赖系统也可以实现信息的交互,且内核态与用户态的环境下均能作为信息传递的发起方。
在本实施例中,多核处理器11可以包括一个主核及多个转发核。主核可以用于加载操作系统的内核,负责运行处理报文转发相关的业务。转发核用于负责接收报文进行转发。
可选地,主核在内核态下创建收发报文的线程,每个转发核在用户态下创建收发报文的线程。主核和每个转发核可以绑定自身与缓存队列的映射关系,从而使得主核和转发核可以从相应的缓存队列中获取报文。
用户态下的不同报文流根据报文分流的结果进入不同的缓存队列,通过将用户态报文占用的缓存队列绑定到转发核进行接收,实现用户态下的报文处理。内核态下的不同报文流根据报文分流的结果进入不同的缓存队列,通过将内核态报文占用的缓存队列绑定到主核进行接收,实现内核态下的报文处理。其中,用户态报文占用的缓存队列和内核态报文占用的缓存队列相互独立。当转发核接收处理的报文需要在内核态下处理,或者主核接收处理的报文需要在用户态下处理时,将报文重新封装,然后通过指定端口14发送出去。
请参照图3,为了实现报文能够被在内核态和用户态的内存区域空间之间转换,需要定义内核态和用户态信息交互的报文格式,以便报文接收模块12能够正确识别、解析。信息报文可以是在标准的以太报文格式之上修改。
在本实施例中,报文可以设置为用于回环的物理接口的地址。例如,在图3中,DMAC设置为指定回环指定端口14配置的MAC地址,防止信息/报文被过滤。由于不需要解析SMAC,则改为DESC字段,用于表示交互信息的类型。TYPE字段用于PKI报文匹配来识别信息是交给内核或者用户态,所以分别针对用户态和内核态的信息定义不同的类型标识(TYPE)。其中,第一类型标识与第二类型标识可以根据实际情况进行设置,例如,用于表示用户态的报文的第一类型标识可以为user,内核态的报文的第二类型标识可以为kernel。即,用户态信息TYPE为userType,内核态信息TYPE为kernelType。
步骤S220可以理解为:比如,若报文需要由用户态传递至内核态处理,那么报文在经多核处理器11封装后,添加需要将报文存储到内核态的kernelType。在封装了报文后,多核处理器11便通过指定端口14将封装后的报文发送至报文接收模块12。报文接收模块12接收到该报文后,可以根据kernelType将该报文存储到内核态的内存区域(指内核态内存)中。
若报文需要由内核态传递至用户态,那么报文在经多核处理器11封装后,添加需要将报文存储到用户态的userType。在封装了报文后,多核处理器11便通过指定端口14将封装后的报文发送至报文接收模块12。报文接收模块12接收到该报文后,可以根据userType将报文存储到用户态的内存区域(指用户态内存)中。
可选地,方法还可以包括:在对每个缓存队列中的报文进行调度时,判断存入用户态内存的报文为需要转发的报文时直接进行转发,或者判断存入内核态内存的报文为需要上交控制平面的报文时上交控制平面进行处理。
可理解地,在将报文存入用户态内存后,多核处理器11在判断出存入用户态内存的报文为需要转发的报文时,直接对该报文进行转发,其转发对象根据报文携带的内容而确定,这里不作具体限定。在将报文存入内核态内存后,多核处理器11在判断出存入内核态内存的报文为需要上交控制平面的报文时,便将该报文上交控制平面进行处理,其处理的过程可以根据报文携带的内容而确定,这里不作具体限定。
下面将对上述的报文处理方法的流程进行举例阐述:
流程一,路由设备(网络设备10)针对报文快速转发的要求,将路由设备所使用的多核处理器11划分为一个主核和多个转发核。主核负责运行处理报文转发相关的业务,其中内核运行在主核上。转发核主要负责接收报文进行转发。
流程二,在系统初始化期间,为接收报文分别创建用户态下的user buffer池和内核态下的kernel buffer池,用于分别接收用户态的报文与内核态的报文。
流程三,根据当前各物理接口的分配策略,选择一个指定端口14作为内核态和用户态信息交互的转换接口,假设为USER_MAC_KERNEL接口,该指定端口14配置为内环模式,也就是多核处理器11通过该指定端口14与报文接收模块12连接,而报文接收模块12又通过内存模块13与多核处理器11连接,从而使得报文接收模块12、内存模块13及多核处理器11构成换回链路。
流程四,配置PKI单元(指报文接收模块12)针对USER_MAC_KERNEL接口接收的报文的匹配规则,将type值为userType的报文DMA到用户态内存区域中,将type值为kernelType的报文DMA到内核态内存区域中。并配置报文入到缓存队列的队列编号,绑定主核、转发核与缓存队列的接收关系。
流程五,基于上述实施例中所示的网络设备10(这里指路由器转发框架,可参照图1),假设在主核上运行的内核中创建的网络接口为eth0,开启eth0接口负责接收报文队列的接收中断,则当有报文接收时,中断触发eth0接口接收报文,保证了报文接收的实时性。当内核需要将信息发送给用户态时,可按照图3所示报文格式封装需要传递的信息,并设置type字段值为userType,然后将报文通过USER_MAC_KERNEL接口发送出去。报文被环回到PKI单元解析,将报文DMA到用户态的buffer中。
流程六,基于上述的路由器转发框架,可以在每一个转发核上创建一个线程flowRecv,该线程负责循环从缓存队列上读取报文,对接收的报文进行处理和转发。由于该线程轮询处理报文,保证了用户态获取内核态信息的实时性。当用户态需要传递信息给内核时,按照图4的报文格式封装信息,并设置type字段值为kernelType,然后将报文通过USER_MAC_KERNEL接口发送出去。报文被环回到PKI解析,将报文DMA到内核态的buffer中。同时触发缓存队列中断让eth0接口接收报文处理。
基于上述设计,本申请实施例提供的方法通过报文定向传输,将不同报文类型DMA到用户态或者内核态下的内存区域空间,并利用指定端口14构成回环模式,完成用户态和内核态信息的交互,且内核态下的中断触发接收和用户态下的轮询接收均保证了信息接收处理的实时性,实现独立于操作系统提供的信息交互机制,可应用于大量信息交互或者对实时性要求较高的应用场景中。
本申请不依赖于具体的操作系统或者操作系统本身提供的内核态与用户态信息的交互方式,对于大量信息传递,更加有效。
请参照图4,本申请实施例提供的报文处理装置100可以应用于上述的网络设备10,用于执行或实现报文处理方法的各步骤。该报文处理装置100包括至少一个可以软件或固件(firmware)的形式存储于存储模块中或固化在网络设备10操作系统(operatingsystem,OS)中的软件功能模块。多核处理器11用于执行存储模块中存储的可执行模块,例如报文处理装置100所包括的软件功能模块及计算机程序等。
在本实施例中,报文处理装置100可以包括报文存送单元110及报文发送单元120。
报文存送单元110,用于从每个以太端口接收报文后,根据以太端口的类型将报文存入用户态内存或者内核态内存;并将存入用户态内存或者内核态内存的报文分别送入缓存队列。
可选地,以太端口的类型包括转发端口、管理端口和指定端口14,管理端口为转发平面与控制平面通信的端口;报文存送单元110还可以用于:
在以太端口为转发端口时,将以太端口接收的报文存入用户态内存;
在以太端口为管理端口时,将以太端口接收的报文存入内核态内存;
在以太端口为指定端口14,且以太端口接收的报文包括第一标识时,将以太端口接收的报文存入内核态内存;
在以太端口为指定端口14,且以太端口接收的报文包括第二标识时,将以太端口接收的报文存入用户态内存。
报文发送单元120,用于在对每个缓存队列中的报文进行调度时,根据报文的内容,判断存入用户态的报文需要在内核态处理时,将该报文添加第一标识后通过指定端口14进行发送;或者判断存入内核态的报文需要在用户态处理时,将该报文添加第二标识后通过指定端口14进行发送。
可选地,报文发送单元120还用于:
对该报文封装以太头部,其中,设置以太头部中目的MAC地址为指定端口14的MAC地址,设置以太头部中的类型值为第一标识;
将该封装以太头部后的报文通过指定端口14进行发送;或者
报文发送单元120还用于:
为该报文封装以太头部,其中,设置以太头部中目的MAC地址为指定端口14的MAC地址,设置以太头部中的类型值为第二标识;
将该封装以太头部后的报文通过指定端口14进行发送。
可选地,报文处理装置100还可以包括判断处理单元,用于在对每个缓存队列中的报文进行调度时,判断存入用户态内存的报文为需要转发的报文时直接进行转发,或者判断存入内核态内存的报文为需要上交控制平面的报文时上交控制平面进行处理。
可选地,报文处理装置100还可以包括报文接收单元。在报文存送单元110根据以太端口的类型将报文存入用户态内存或者内核态内存之前,在操作系统的内核态运行空间时,报文接收单元用于通过中断触发从缓存队列中接收外部设备发送的初始报文,或者,在操作系统的用户态运行空间时,报文接收单元用于通过轮询从缓存队列中接收外部设备发送的初始报文。
请再次参照图1,在本实施例中,网络设备10中的多核处理器11、报文接收模块12、内存模块13、指定端口14、存储模块以及报文处理装置100各个元件之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
多核处理器11可以是一种集成电路芯片,具有信号的处理能力。上述多核处理器11可以是通用处理器。例如,该多核处理器11可以是中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。
存储模块可以是,但不限于,随机存取存储器,只读存储器,可编程只读存储器,可擦除可编程只读存储器,电可擦除可编程只读存储器等。在本实施例中,存储模块可以用于存储报文。当然,存储模块还可以用于存储程序,多核处理器11在接收到执行指令后,执行该程序。
可以理解的是,图1所示的结构仅为网络设备10的一种结构示意图,网络设备10还可以包括比图1所示更多或更少的组件。图1中所示的各组件可以采用硬件、软件或其组合实现。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的网络设备10的具体工作过程,可以参考前述方法中的各步骤对应过程,在此不再过多赘述。
本申请实施例还提供一种计算机可读存储介质。可读存储介质中存储有计算机程序,当计算机程序在计算机上运行时,使得计算机执行如上述实施例中所述的报文处理方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器等)执行本申请各个实施场景所述的方法。
综上所述,本申请提供一种报文处理方法、装置及网络设备。该方法通过从每个以太端口接收报文后,根据以太端口的类型将报文存入用户态内存或者内核态内存;并将存入用户态内存或者内核态内存的报文分别送入缓存队列;在对每个缓存队列中的报文进行调度处理时,根据报文的内容,判断存入用户态的报文需要在内核态处理时,将该报文添加第一标识后通过指定端口进行发送;或者判断存入内核态的报文需要在用户态处理时,将该报文添加第二标识后通过指定端口进行发送,指定端口工作在环回模式下,通过对报文的识别,将包含第一标识的报文存入内核态内存,将包含第二标识的报文存入用户态内存。本方案能够无需依赖操作系统提供的用户态与内核态之间通信的机制来完成用户态与内核态之间大量数据的简单、高效的双向交互,从而改善现有技术中信息交互容易受到限制的问题。
在本申请所提供的实施例中,应该理解到,所揭露的装置、系统和方法,也可以通过其它的方式实现。以上所描述的装置、系统和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
可以替换的,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (8)

1.一种报文处理方法,其特征在于,应用于运行LINUX的分布式网络设备,所述网络设备包括一个配置为环回模式的指定端口;所述方法包括:
从每个以太端口接收报文后,根据所述以太端口的类型将所述报文存入用户态内存或者内核态内存;并将存入所述用户态内存或者所述内核态内存的报文分别送入缓存队列;
在对每个所述缓存队列中的报文进行调度时,根据所述报文的内容,判断存入用户态的报文需要在内核态处理时,对该报文封装以太头部,其中,设置所述以太头部中目的MAC地址为所述指定端口的MAC地址,设置所述以太头部中的类型值为第一标识,将该封装以太头部后的报文通过所述指定端口进行发送;
或者判断存入内核态的报文需要在用户态处理时,为该报文封装以太头部,其中,设置所述以太头部中目的MAC地址为所述指定端口的MAC地址,设置所述以太头部中的类型值为第二标识,将该封装以太头部后的报文通过所述指定端口进行发送。
2.根据权利要求1所述的方法,其特征在于,所述以太端口的类型包括转发端口、管理端口和所述指定端口,所述管理端口为转发平面与控制平面通信的端口;根据所述以太端口的类型将所述报文存入用户态内存或者内核态内存,包括:
在所述以太端口为所述转发端口时,将所述以太端口接收的报文存入所述用户态内存;
在所述以太端口为所述管理端口时,将所述以太端口接收的报文存入所述内核态内存;
在所述以太端口为所述指定端口,且所述以太端口接收的报文包括所述第一标识时,将所述以太端口接收的报文存入所述内核态内存;
在所述以太端口为所述指定端口,且所述以太端口接收的报文包括所述第二标识时,将所述以太端口接收的报文存入所述用户态内存。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在对每个缓存队列中的报文进行调度时,判断存入所述用户态内存的报文为需要转发的报文时直接进行转发,或者判断存入所述内核态内存的报文为需要上交控制平面的报文时上交控制平面进行处理。
4.一种报文处理装置,其特征在于,应用于运行LINUX的分布式网络设备,所述网络设备包括一个配置为环回模式的指定端口;所述装置包括:
报文存送单元,用于从每个以太端口接收报文后,根据所述以太端口的类型将所述报文存入用户态内存或者内核态内存;并将存入所述用户态内存或者所述内核态内存的报文分别送入缓存队列;
报文发送单元,用于在对每个所述缓存队列中的报文进行调度时,根据所述报文的内容,判断存入用户态的报文需要在内核态处理时,对该报文封装以太头部,其中,设置所述以太头部中目的MAC地址为所述指定端口的MAC地址,设置所述以太头部中的类型值为第一标识,将该封装以太头部后的报文通过所述指定端口进行发送;
或者所述报文发送单元,用于判断存入内核态的报文需要在用户态处理时,为该报文封装以太头部,其中,设置所述以太头部中目的MAC地址为所述指定端口的MAC地址,设置所述以太头部中的类型值为第二标识,将该封装以太头部后的报文通过所述指定端口进行发送。
5.根据权利要求4所述的装置,其特征在于,所述以太端口的类型包括转发端口、管理端口和所述指定端口,所述管理端口为转发平面与控制平面通信的端口;所述报文存送单元还用于:
在所述以太端口为所述转发端口时,将所述以太端口接收的报文存入所述用户态内存;
在所述以太端口为所述管理端口时,将所述以太端口接收的报文存入所述内核态内存;
在所述以太端口为所述指定端口,且所述以太端口接收的报文包括所述第一标识时,将所述以太端口接收的报文存入所述内核态内存;
在所述以太端口为所述指定端口,且所述以太端口接收的报文包括所述第二标识时,将所述以太端口接收的报文存入所述用户态内存。
6.根据权利要求4或5所述的装置,其特征在于,所述装置还包括判断处理单元,用于在对每个缓存队列中的报文进行调度时,判断存入所述用户态内存的报文为需要转发的报文时直接进行转发,或者判断存入所述内核态内存的报文为需要上交控制平面的报文时上交控制平面进行处理。
7.一种网络设备,其特征在于,所述网络设备包括相互耦合的存储模块、多核处理器、通信模块以及物理接口,所述存储模块内存储计算机程序,当所述计算机程序被所述多核处理器执行时,使得所述网络设备执行权利要求1-3中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-3中任意一项所述的方法。
CN201811557038.3A 2018-12-19 2018-12-19 报文处理方法、装置及网络设备 Active CN109688058B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811557038.3A CN109688058B (zh) 2018-12-19 2018-12-19 报文处理方法、装置及网络设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811557038.3A CN109688058B (zh) 2018-12-19 2018-12-19 报文处理方法、装置及网络设备

Publications (2)

Publication Number Publication Date
CN109688058A CN109688058A (zh) 2019-04-26
CN109688058B true CN109688058B (zh) 2021-03-02

Family

ID=66186428

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811557038.3A Active CN109688058B (zh) 2018-12-19 2018-12-19 报文处理方法、装置及网络设备

Country Status (1)

Country Link
CN (1) CN109688058B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110445580B (zh) * 2019-08-09 2022-04-19 浙江大华技术股份有限公司 数据发送方法及装置、存储介质、电子装置
CN112422457B (zh) * 2019-08-23 2023-04-07 中兴通讯股份有限公司 报文处理方法、装置和计算机存储介质
CN111478794B (zh) * 2020-03-05 2022-11-15 视联动力信息技术股份有限公司 一种信令报文交互方法、装置、终端设备和存储介质
CN111464638A (zh) * 2020-03-31 2020-07-28 潍柴动力股份有限公司 数据报文的处理方法及装置
CN113014627B (zh) * 2021-02-10 2022-07-26 深圳震有科技股份有限公司 报文转发方法、装置、智能终端及计算机可读存储介质
CN115334156A (zh) * 2021-04-26 2022-11-11 深信服科技股份有限公司 报文的处理方法、装置、设备、存储介质
CN114124644B (zh) * 2021-11-17 2023-10-03 烽火通信科技股份有限公司 基于Linux内核态的以太网OAM告警方法及装置
CN115002028B (zh) * 2022-04-30 2024-02-13 济南浪潮数据技术有限公司 一种报文处理方法、装置及介质
CN115442173B (zh) * 2022-06-07 2024-02-06 北京车和家信息技术有限公司 车辆报文转发、处理方法、装置、电子设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1647054A (zh) * 2002-06-19 2005-07-27 艾利森电话股份有限公司 网络设备驱动体系结构
CN102497434A (zh) * 2011-12-16 2012-06-13 中国科学院计算技术研究所 内核态虚拟网络设备的建立方法、及其包发送和接收方法
CN102819497A (zh) * 2012-05-31 2012-12-12 华为技术有限公司 一种内存分配方法、装置及系统
CN103312601A (zh) * 2013-05-31 2013-09-18 汉柏科技有限公司 用户态到内核态的数据报文处理方法
CN103414535A (zh) * 2013-07-31 2013-11-27 华为技术有限公司 数据发送方法和数据接收方法及相关装置
CN103593189A (zh) * 2013-11-14 2014-02-19 昆明理工大学 一种嵌入式Linux下用户态驱动程序的实现方法
WO2014180446A1 (zh) * 2013-12-23 2014-11-13 中兴通讯股份有限公司 一种网络设备写表方法及装置
CN106302199A (zh) * 2016-08-10 2017-01-04 成都广达新网科技股份有限公司 一种基于三层交换机设备的用户态协议栈实现方法及系统
CN106850565A (zh) * 2016-12-29 2017-06-13 河北远东通信系统工程有限公司 一种高速的网络数据传输方法
CN107315631A (zh) * 2017-06-23 2017-11-03 迈普通信技术股份有限公司 一种任务调度方法及装置
CN107526620A (zh) * 2017-09-28 2017-12-29 东软集团股份有限公司 一种用户态输入输出设备配置方法及装置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1647054A (zh) * 2002-06-19 2005-07-27 艾利森电话股份有限公司 网络设备驱动体系结构
CN102497434A (zh) * 2011-12-16 2012-06-13 中国科学院计算技术研究所 内核态虚拟网络设备的建立方法、及其包发送和接收方法
CN102819497A (zh) * 2012-05-31 2012-12-12 华为技术有限公司 一种内存分配方法、装置及系统
CN103312601A (zh) * 2013-05-31 2013-09-18 汉柏科技有限公司 用户态到内核态的数据报文处理方法
CN103414535A (zh) * 2013-07-31 2013-11-27 华为技术有限公司 数据发送方法和数据接收方法及相关装置
CN103593189A (zh) * 2013-11-14 2014-02-19 昆明理工大学 一种嵌入式Linux下用户态驱动程序的实现方法
WO2014180446A1 (zh) * 2013-12-23 2014-11-13 中兴通讯股份有限公司 一种网络设备写表方法及装置
CN106302199A (zh) * 2016-08-10 2017-01-04 成都广达新网科技股份有限公司 一种基于三层交换机设备的用户态协议栈实现方法及系统
CN106850565A (zh) * 2016-12-29 2017-06-13 河北远东通信系统工程有限公司 一种高速的网络数据传输方法
CN107315631A (zh) * 2017-06-23 2017-11-03 迈普通信技术股份有限公司 一种任务调度方法及装置
CN107526620A (zh) * 2017-09-28 2017-12-29 东软集团股份有限公司 一种用户态输入输出设备配置方法及装置

Also Published As

Publication number Publication date
CN109688058A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109688058B (zh) 报文处理方法、装置及网络设备
CN108023829B (zh) 报文处理方法及装置、存储介质、电子设备
US9218203B2 (en) Packet scheduling in a multiprocessor system using inter-core switchover policy
EP3029912B1 (en) Remote accessing method and corresponding system
US10057330B2 (en) Apparatus and method for deferring asynchronous events notifications
CN108282385B (zh) 端口测试方法及通信设备
CN110661725A (zh) 用于对出口上的网络分组进行重排序的技术
CN108141471B (zh) 压缩数据的方法、装置和设备
WO2017032112A1 (zh) 一种与无中央处理器单板通讯的方法及通讯设备
US9323596B2 (en) Network apparatus and method of monitoring processor
JP2006301894A (ja) マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法
US9063929B2 (en) Information processing apparatus, information processing method, computer-readable recording medium having stored therein program
CN113179216B (zh) 一种寄存器的远程配置方法、计算机设备及存储介质
CN113986969A (zh) 数据处理方法、装置、电子设备和存储介质
US10095643B2 (en) Direct memory access control device for at least one computing unit having a working memory
CN113157465A (zh) 基于指针链表的消息发送方法及装置
CN114880266B (zh) 故障处理的方法、装置、计算机设备和存储介质
US8914550B2 (en) System and method for transferring data between components of a data processor
CN117499351A (zh) 报文转发装置及方法、通信芯片及网络设备
US8918559B2 (en) Partitioning of a variable length scatter gather list
CN113170500B (zh) 一种信息传输方法及装置
KR20050080704A (ko) 프로세서간 데이터 전송 장치 및 방법
US20140052879A1 (en) Processor, information processing apparatus, and interrupt control method
CN113268358B (zh) 数据通信方法、装置和系统及多设备级联系统
US11042497B2 (en) Communication between field programmable gate arrays

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