CN111600833A - 网络操作系统及报文转发方法 - Google Patents
网络操作系统及报文转发方法 Download PDFInfo
- Publication number
- CN111600833A CN111600833A CN201910695477.9A CN201910695477A CN111600833A CN 111600833 A CN111600833 A CN 111600833A CN 201910695477 A CN201910695477 A CN 201910695477A CN 111600833 A CN111600833 A CN 111600833A
- Authority
- CN
- China
- Prior art keywords
- protocol stack
- message
- storage position
- position information
- service process
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- 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/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了网络操作系统及报文转发方法。本申请中,网络操作系统融合了共享模型和独享模型,实现共享模型中的协议栈(称为共享协议栈,上述的第一协议栈)与独享模型中的协议栈(称为独享协议栈,上述的第二协议栈)共存。而这种共享协议栈与独享协议栈的共存,实现了网络操作系统同时兼顾既支持多种类业务,又能满足高性能需求。
Description
技术领域
本申请涉及网络通信技术,特别涉及网络操作系统及报文转发方法。
背景技术
随着智能设备的普及,很多应用程序(APP)拥有非常大的用户数量,甚至,有的APP拥有高达数亿用户,这对智能设备内承载APP的网络操作系统的性能有很高的要求。
网络操作系统中协议栈的处理性能反映了整个网络操作系统的性能。目前,在网络操作系统中,常用的协议栈是Linux内核协议栈。但是,Linux内核协议栈在设置时没有过多考虑自身的处理性能,并且由于加锁等原因,在多核并发的情况下,Linux内核协议栈的处理性能急剧下降。
发明内容
本申请提供了网络操作系统及报文转发方法,以实现网络操作系统通过在用户态融合共享模型和独享模型中的协议栈,提高网络操作系统的性能。
本申请提供的技术方案包括:
第一方面,本申请提供了一种网络操作系统,所述网络操作系统包括:运行在用户态的转发进程和至少一个业务进程;
转发进程包括:数据平面开发配置DPDK组件、IP转发组件、协议栈代理、第一协议栈;第一协议栈为至少一种应用提供服务;
每一业务进程,与协议栈代理连接,至少包括:第二协议栈;每一业务进程的第二协议栈为该业务进程对应的应用提供服务;
DPDK组件,向IP转发组件发送第一报文在内存中的第一存储位置信息;
IP转发组件,接收第一存储位置信息,判断内存中第一存储位置信息对应的第一报文是否由第一协议栈处理,若是,向第一协议栈发送第一存储位置信息,以由第一协议栈按照第一处理方式对内存中第一存储位置信息对应的第一报文进行处理,否则,向协议栈代理发送第一存储位置信息;
协议栈代理,接收第一存储位置信息,从相连接的各个业务进程中选择一个目标业务进程,向目标业务进程发送第一存储位置信息,以由目标业务进程依据第二协议栈并按照第二处理方式对内存中第一存储位置信息对应的第一报文进行处理。
第二方面,本申请提供了一种报文转发方法,所述方法应用于网络设备,网络设备安装了如上所述的网络操作系统,网络操作系统包括运行在用户态的转发进程和至少一个业务进程,转发进程包括:数据平面开发配置DPDK组件、IP转发组件、协议栈代理、第一协议栈;每一业务进程与所述协议栈代理连接,至少包括:第二协议栈;第一协议栈为至少一种应用提供服务,每一业务进程的第二协议栈为该业务进程提供服务;该方法包括:
IP转发组件接收来自DPDK组件发送的第一存储位置信息;第一存储位置信息表示第一报文在内存中的存储位置,
IP转发组件判断第一存储位置信息对应的第一报文是否由第一协议栈处理,若是,向第一协议栈发送所述第一存储位置信息,以由第一协议栈按照第一处理方式对第一报文进行处理,否则,向协议栈代理发送第一存储位置信息,以由协议栈代理从相连接的各个业务进程中选择一个目标业务进程,并向目标业务进程发送第一存储位置信息,以由目标业务进程依据第二协议栈并按照第二处理方式对内存中第一存储位置信息对应的第一报文进行处理。
由以上技术方案可以看出,本申请中,网络操作系统通过融合共享模型和独享模型中的协议栈,实现共享模型中的协议栈(称为共享协议栈,上述的第一协议栈)与独享模型中的协议栈(称为独享协议栈,上述的第二协议栈)共存。其中,共享协议栈支持多种类业务,独享协议栈支持高性能需求,如此,本申请通过在用户态设置共享协议栈与独享协议栈共存,可实现网络操作系统既支持多种类业务,又能满足高性能需求。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请实施例的原理。
图1为本申请实施例提供的共享模型的结构示意图;
图2为本申请实施例提供的独享模型的结构示意图;
图3为本申请实施例提供的网络操作系统的结构图;
图4为本申请实施例提供的IP转发组件302判断第一报文是否由第一协议栈304处理的流程图;
图5为本申请实施例提供的协议栈代理303选择目标业务进程的流程示意图;
图6为本申请实施例提供的协议栈代理303选择目标业务进程的另一流程示意图;
图7为本申请实施例提供的报文转发流程图。
具体实施方式
目前,随着数据平面开发配置(DPDK:Data Plane Development Kit)的发展,以DPDK为代表的用户态收发包正逐渐成为主流。所谓以DPDK为代表的用户态收发包,其是指通过DPDK绕过Linux内核协议栈,直接在用户态进行报文的收发与处理。DPDK为高效的用户态收发包提供了库函数和驱动的支持。
DPDK是一款报文转发处理套件,但它不是网络协议栈,不提供二层、三层转发功能。当网络操作系统的内核态运行DPDK时,还需要在内核态运行协议栈。
在一个示例中,用户态上的协议栈主要应用在以下两种模型:共享模型和独享模型。下面分别进行分析:
共享模型:
共享模型是指在用户态单独创建一个协议栈(Protocol stack)。这里的协议栈可简称共享协议栈。
在一个示例中,多种不同应用可共享该共享协议栈,共享协议栈可同时为多种应用提供服务。
在共享模型中,用户态内除了上述的共享协议栈后,还包括DPDK和转发进程(Fwdprocess)。在一个例子中,DPDK与转发进程可处于两个不同的进程。在另一个例子中,DPDK与转发进程也可处于同一进程。
在另一个例子中,上述共享协议栈与转发进程可处于同一个进程。也可处于两个不同的进程。
在共享模型中,转发进程用于在DPDK与共享协议栈之间转发报文。下面基于共享模型描述报文的转发过程:
参见图1,图1示出了共享模型的结构。在图1所示的共享模型结构中,共享协议栈与转发进程处于两个不同的进程。DPDK与转发进程处于同一进程。为便于描述,此时的转发进程可不再称为转发进程,而是称为IP转发组件(IP Fwd);同样,此时的DPDK可称为DPDK组件(图1举例以DPDK示出)。IP转发组件与DPDK组件所处的进程可称为转发进程。
下面先以应用进程app101_1向外部设备发送报文为例说明报文的转发过程:
在图1中,应用进程app101_1向共享协议栈发送报文。共享协议栈对报文进行处理(比如按照协定的处理方式处理),并向转发进程发送处理后的报文。转发进程中的IP转发组件先接收到共享协议栈发送的报文,对接收的报文进行处理(比如封装等),并向同一进程中的DPDK组件转发处理后的报文。DPDK组件接收IP转发组件发送的报文,对报文进行处理后向网卡的报文发送队列发送报文。网卡的报文发送队列转发该报文。至此,来自应用进程app101_1的报文最终被网卡转发至外部设备。这里,共享协议栈、IP转发组件、DPDK组件都是按照已有的报文处理方式处理报文,本申请实施例不限定具体的报文处理方式。
再以外部设备向应用进程app101_1发送报文为例说明。在图1中,DPDK组件会周期遍历网卡的报文接收队列,当遍历到报文时,向同一进程中的IP转发组件发送遍历到的报文。IP转发组件接收报文,对报文进行处理(比如解封装等)后向共享协议栈转发报文。共享协议栈接收报文,对报文进行处理(比如按照协定的处理方式处理),并向应用进程app101_1发送处理后的报文,以由应用进程app101_1向对应的应用转发报文。至此,来自外部设备的报文发送至应用进程app101_1。
通过上面描述的报文转发过程可以看出,在共享模型中,共享协议栈集中为所有应用进程提供服务,负责处理所有应用进程收发的报文,这会导致很多并发冲突问题,降低共享协议栈的性能。
独享模型:
独享模型是指在用户态的每一应用进程内创建协议栈。这里的协议栈可简称独享协议栈。每一应用进程内的独享协议栈只为该应用进程提供服务(即独享协议栈被应用进程独享)。图2示出了独享模型的结构。在一个例子中,图2所示的所有应用进程对应同一种应用。
独享模型中各应用进程独享其中的独享协议栈,这相比共享模型,能够避免并发冲突问题。但是,这种独享模型限制网络操作系统承载的应用数量,比如限制网络操作系统只承载一种应用。而对现阶段的网络操作系统来说,经常会面临需要承载越来越多应用的需求,目前的独享模型不能满足应用需求。
为了使网络操作系统既支持多种应用,同时也提高协议栈的性能,本申请实施例提供了如图3所示的网络操作系统。
参见图3,图3为本申请实施例提供的网络操作系统的结构图。如图3所示,网络操作系统包括:运行在用户态的转发进程和至少一个业务进程。图3以示出N个业务进程为例。
如图3所示,转发进程包括:DPDK组件、IP转发(IP forwarding)组件、协议栈代理(Stack Agent)、第一协议栈。需要说明的是,这里的DPDK组件是表示DPDK功能,相当于一个虚拟的功能模块,只是为便于描述才利用组件命名,并非限定具体实现形式。同样,IP转发组件也是仅表示IP转发功能,只是为便于描述才利用组件命名,并非限定具体实现形式。
在本申请实施例中,第一协议栈为至少一种应用提供服务。在一个示例中,会预先设置好哪些应用共享第一协议栈。图3以第一协议栈为M个应用提供服务为例描述。如图3所示,M个应用对应的应用进程共享第一协议栈(这相当于图1所示的共享协议栈)。需要说明的是,这里的第一协议栈只是为便于和下文要出现的协议栈区分而进行的命名,并非用于限定。
在本申请实施例中,每一业务进程,与协议栈代理连接。在一个示例中,会预先设置好哪些业务进程与协议栈代理连接。
在本申请实施例中,每一业务进程,至少包括一个协议栈(简称第二协议栈)。这里的第二协议栈只是为便于和上述第一协议栈区分而进行的命名,并非用于限定。
对于每一业务进程而言,其包含的第二协议栈只为该业务进程对应的应用提供服务,即实现了第二协议栈的独享(这相当于图2所示的独享协议栈)。需要说明的时,这里的业务进程也可称为应用进程,这里称为业务进程,是和第一协议栈支持的应用进程区分。
作为一个实施例,图3所示的N个业务进程,其可对应同一种应用,此时,作为一个示例,N个业务进程包括的第二协议栈可相同。作为另一个实施例,图3所示的N个业务进程中至少两个业务进程对应不同应用,此时,作为一个示例,对应不同应用的业务进程包括的第二协议栈可相同也可不同,具体可根据实际情况设置,而对应同一应用的业务进程包括的第二协议栈可相同。
综上分析可以看出,本申请实施例提供的网络操作系统融合了共享模型中的协议栈(简称共享协议栈,为上述的第一协议栈)和独享模型中的协议栈(简称独享协议栈,为上述的第二协议栈)。其中,相对转发进程,上述的第一协议栈可称为本地协议栈(LocalStack),上述的第二协议栈可称为远端协议栈(Remote Stack)。
下面重点描述DPDK组件、IP转发组件、协议栈代理:
在本申请实施例中,DPDK组件,向IP转发组件发送第一报文在内存中的第一存储位置信息。这里的第一报文、第一存储位置信息只是为便于描述而进行的命名,并非用于限定。在一个示例中,DPDK组件周期遍历网卡的报文接收队列,当遍历到报文(记为上述的第一报文)时,则将第一报文存储至内存,并向IP转发组件发送第一报文在内存中的第一存储位置信息。
需要说明的是,这里,DPDK组件是向IP转发组件发送的第一存储位置信息,而不是第一报文,其原因是:在本申请实施例中,各业务进程、以及第一协议栈支持的各应用进程也进一步包括DPDK组件,各业务进程和各应用进程中的DPDK组件以DPDK-Secondary身份工作,而转发进程中的DPDK组件以DPDK-Primary身份工作,基于此,借助于DPDK的共享内存机制,则网络操作系统中各进程之间的报文存储管理结构可统一,各进程之间即可直接传输报文在内存中的存储位置信息。
IP转发组件,接收第一存储位置信息,判断所述内存中第一存储位置信息对应的第一报文是否由第一协议栈处理,若是,向第一协议栈发送第一存储位置信息,以由第一协议栈按照第一处理方式对内存中第一存储位置信息对应的第一报文进行处理,否则,向协议栈代理发送第一存储位置信息。这里第一处理方式具体依赖第一协议栈设定。
协议栈代理,接收第一存储位置信息,从相连接的各个业务进程中选择一个目标业务进程,向目标业务进程发送第一存储位置信息,以由目标业务进程依据第二协议栈并按照第二处理方式对内存中第一存储位置信息对应的第一报文进行处理。这里,第二处理方式具体依赖第二协议栈设定。
通过上面描述可以看出,IP转发组件在收到第一存储位置信息时,决策第一存储位置信息对应的第一报文是由第一协议栈处理还是由第二协议栈处理,在由第一协议栈处理时,向第一协议栈发送第一存储位置信息,以由第一协议栈按照第一处理方式对内存中第一存储位置信息对应的第一报文进行处理,在由第二协议栈处理时,向协议栈代理发送第一存储位置信息,以由协议栈代理向目标业务进程发送第一存储位置信息,由目标业务进程中的第二协议栈按照第二处理方式对内存中第一存储位置信息对应的第一报文进行处理,实现了第一协议栈(可称为共享协议栈)与第二协议栈(可称为独享协议栈)共存。其中,共享协议栈支持多种类业务,独享协议栈支持高性能需求,如此,本申请通过在用户态设置共享协议栈与独享协议栈共存,可实现网络操作系统既支持多种类业务,又能满足高性能需求。
至此,完成图3所示网络操作系统的结构描述。
在一个例子中,上述IP转发组件判断第一报文是否由第一协议栈处理可包括图4所示流程:
参见图4,图4为本申请实施例提供的IP转发组件判断第一报文是否由第一协议栈处理的流程图。如图4所示,该流程可包括:
步骤401,IP转发组件依据第一存储位置信息从上述内存读取第一报文。
如上描述,在网络操作系统中,各进程之间的报文存储管理结构统一,因此,IP转发组件依据DPDK组件发送的第一存储位置信息从内存读取的第一报文就是上述DPDK组件存储的第一报文。
步骤402,在已获取的各业务进程对应的应用的应用信息中,查找所述第一报文匹配的目标应用信息,若未查找到,则确定第一报文由第一协议栈处理,若查找到,则确定所述第一报文不由第一协议栈处理。
在一个示例中,与协议栈代理连接的各业务进程相对应的各应用在启动后,会上传应用信息至转发进程。这里的应用信息用于唯一表示应用,比如包括应用的服务端口信息等。这里,应用的服务端口信息是指服务器上用于为该应用提供服务的端口的信息。
之后,当IP转发组件依据第一存储位置信息从上述内存中读取第一报文后,会根据第一报文携带的应用特征信息比如应用的服务端口信息等在已获取的所有应用信息中查找与应用特征信息对应的目标应用信息,这相当于查找与所述第一报文匹配的目标应用信息。如果未查找到,如步骤402的描述,则确定第一报文不由第一协议栈处理,而如果查找到,则确定第一报文不由第一协议栈处理(具体由第二协议栈处理)。
通过上面描述,实现了IP转发组件判断第一报文是否由第一协议栈处理的流程图。
至此,完成图4所示流程的描述。
需要说明的是,图4所示流程只是IP转发组件判断第一报文是否由第一协议栈处理的一种实施方式,并非用于限定。
下面描述业务进程发送报文的情况:
在本申请实施例中,每一业务进程进一步用于:向协议栈代理发送第二存储位置信息,第二存储位置信息表示业务进程待发送的第二报文在内存中的存储位置。这里的第二报文只是为便于描述而进行的命名,并非用于限定。
相应地,协议栈代理进一步用于:接收所述第二存储位置信息,向IP转发组件发送所述第二存储位置信息,以由IP转发组件通过与DPDK组件配合转发所述内存中的第二报文。这里,IP转发组件通过与DPDK组件结合转发内存中的第二报文与现有共享模型或独享模型中IP转发、DPDK执行的操作类似,不再赘述。
至此,业务进程发送的第二报文会被转发。需要说明的是,在本申请实施例中,第一协议栈支持的各应用进程发送报文的方式类似现有共享模型下应用进程发送报文的方式,这里不再赘述。
作为一个实施例,在本申请中,协议栈代理还可进一步用于:依据第二存储位置信息从上述内存读取第二报文,依据第二报文的报文特征信息、发送第二存储位置信息的业务进程的业务进程标识生成流表项并记录至本地流表。在一个例子中,第二报文的报文特征信息可包括:源IP地址、目的IP地址、源端口号、目的端口号。最终,上述生成的流表项中包括第二报文的源IP地址、目的IP地址、源端口号、目的端口号。
基于上述流表,则作为一个实施例,上述协议栈代理从相连接的各个业务进程中选择一个目标业务进程的操作可通过图5所示:
参见图5,图5为本申请实施例提供的协议栈代理选择目标业务进程的流程示意图。如图5所示,该流程可包括:
步骤501,协议栈代理依据第一存储位置信息从所述内存读取第一报文。
步骤502,协议栈代理在本地流表中查找到与第一报文的报文特征信息匹配的流表项。
如上描述的报文特征信息,则本步骤502中,协议栈代理在本地流表中查找到与第一报文的报文特征信息匹配的流表项包括:
协议栈代理以第一报文的报文特征信息(源IP地址、目的IP地址、源端口号、目的端口号)为关键字,在本地流表中查找到包含该关键字的流表项。
如上描述的流表项包括业务进程标识,基于此,即可执行步骤503。
步骤503,协议栈代理将查找到的流表项中的业务进程标识对应的业务进程确定为目标业务进程。
至此,完成图5所示流程。
通过图5所示流程即可实现协议栈代理选择目标业务进程的操作。
如上描述,第二报文携带的报文特征信息中包括源端口号、目的端口号。其中,当业务进程(发送上述第二存储位置信息的业务进程)运行在客户端,则上述源端口号是从设定端口号范围内选择出的且满足设定条件,目的端口号是服务器上的指定端口号。在一个示例中,源端口号可参见下文描述进行确定,这里暂不赘述。
当上述业务进程运行在服务器,则上述的源端口号是服务器上的指定端口号,目的端口号是已接收的第三报文的源端口号,第二报文为响应第三报文的响应报文。
下面对业务进程运行在客户端时,如何确定第二报文的源端口号进行描述:
作为一个示例,业务进程本地会预先配置端口号范围。当业务进程运行在客户端发送第二报文时,从预先配置的端口号范围中选择出一个端口号,若该端口号在本地还未使用,则先假若确定该端口号为第二报文的源端口号。之后,业务进程按照设定业务分担算法将包括第二报文的报文特征信息(包括第二报文的源端口号、目的端口号)、以及指定值M进行运算得到运算结果。这里,指定值M为:上述业务进程所属的应用对应的业务进程总数。之后,业务进程检查运算结果是否为本业务进程的业务进程标识,如果是,确定上述的端口号为第二报文的源端口号,否则,返回从预先配置的端口号范围中选择一个端口号的操作。
作为一个示例,上述业务进程按照设定业务分担算法将包括第二报文的报文特征信息(包括第二报文的源端口号、目的端口号)、以及指定值M进行运算得到运算结果可包括:按照设定的分流算法对第二报文的报文特征信息进行对应的计算得到一个数值,将该数值与指定值M进行设定运算比如求模运算得到上述运算结果。
综上可以看出,当业务进程运行在客户端时,上述第二报文的源端口号是从设定端口号范围内选择出的且满足设定条件。其中,设定条件为:按照设定业务分担算法将包括所述源端口号、目的端口号的所述报文特征信息、以及指定值M进行运算得到的结果为所述业务进程的业务进程标识,指定值M为:所述业务进程所属的应用对应的业务进程总数。
基于上述业务进程运行在客户端时如何确定第二报文的源端口号的方式,则上述协议栈代理从相连接的各个业务进程中选择一个目标业务进程可参见图6所示流程:
参见图6,图6为本申请实施例提供的协议栈代理选择目标业务进程的另一流程示意图。如图6所示,该流程可包括:
步骤601,协议栈代理依据第一存储位置信息从所述内存读取第一报文。
步骤602,协议栈代理确定与第一报文所属的应用对应的业务进程。
作为一个示例,与协议栈代理连接的各业务进程相对应的各应用在启动后,会注册至协议栈代理。协议栈代理会存储注册信息。这里的注册信息包括:应用特征信息、应用对应哪些业务进程等。这里的应用特征信息比如为应用的服务端口信息等。这里,应用的服务端口信息是指服务器上用于为该应用提供服务的端口的信息。
基于此,本步骤602中,当协议栈代理依据第一存储位置信息从所述内存读取第一报文后,会获取第一报文携带的应用特征信息,之后以获取的应用特征信息为关键字在已有的所有注册信息中查找到包含该关键字的注册信息,从查找到的注册信息中确定出业务进程,即确定与第一报文所属的应用对应的业务进程。
步骤603,协议栈代理在确定出的业务进程的数量等于1时,将确定出的业务进程作为目标业务进程;在确定出的业务进程的数量N大于1时,按照设定业务分担算法并将所述第一报文的报文特征信息和所述N进行运算得到业务进程标识,将与计算出的业务进程标识对应的业务进程确定为所述目标业务进程。
基于上述业务进程运行在客户端时如何确定第二报文的源端口号的方式,则步骤603中,协议栈代理可按照设定业务分担算法将包括第一报文的报文特征信息(包括第一报文的源端口号、目的端口号)、以及N进行运算得到业务进程标识。
至此,完成图6所示流程。
通过图6所示流程即可实现协议栈代理选择目标业务进程的操作。
以上对本申请提供的网络操作系统进行了描述。
需要说明的是,对于一些性能要求(比如延迟等)不高的应用,既使这些应用之前使用内核协议栈,当这些应用的网络操作系统升级为本申请提供的如图3所示的网络操作系统时,可以针对这些应用部署类似图3所示的第一协议栈(也可称为共享协议栈),并可保留原有的标准POSIX socket接口以及编程模型不变,移植工作量也会非常小。而对于性能要求特别高的应用,则当这些应用的网络操作系统升级为本申请提供的如图3所示的网络操作系统时,可以针对这些应用部署类似图3所示的第二协议栈(也可称为独享协议栈),并且可以采用多进程的模型部署,以满足高性能需求。
基于图3所示的网络操作系统,本申请还提供了应用上述网络操作系统的报文转发流程。
参见图7,图7为本申请提供的报文转发流程图。该流程应用于安装了上述网络操作系统的网络设备。
如图7所示,该流程可包括以下步骤:
步骤701,IP转发组件接收来自DPDK组件发送的第一存储位置信息,第一存储位置信息是DPDK组件在内存中获取的第一报文的存储位置。
步骤702,IP转发组件判断第一存储位置信息对应的第一报文是否由第一协议栈处理,若是,向第一协议栈发送第一存储位置信息,以由第一协议栈按照第一处理方式对第一报文进行处理,否则,向协议栈代理发送第一存储位置信息,以由协议栈代理从相连接的各个业务进程中选择一个目标业务进程,并向目标业务进程发送第一存储位置信息,以由目标业务进程依据第二协议栈并按照第二处理方式对内存中第一存储位置信息对应的第一报文进行处理。
这里,第一协议栈、第二协议栈如上描述。至于第一协议栈、第二协议栈如何处理报文,本申请并不具体限定。
在图7所示流程中,DPDK组件、IP转发组件、协议栈代理、第一协议栈处于转发进程,转发进程运行在用户态;上述各个业务进程处于转发进程之外,与协议栈代理相连接。
至此,完成图7所示流程。
通过图7所示流程,IP转发组件在收到第一存储位置信息时,决策第一存储位置信息对应的第一报文是由第一协议栈处理还是由第二协议栈处理,在由第一协议栈处理时,向第一协议栈发送第一存储位置信息,以由第一协议栈按照第一处理方式对内存中第一存储位置信息对应的第一报文进行处理,在由第二协议栈处理时,向协议栈代理发送第一存储位置信息,以由协议栈代理向目标业务进程发送第一存储位置信息,由目标业务进程中的第二协议栈按照第二处理方式对内存中第一存储位置信息对应的第一报文进行处理,实现了第一协议栈(可称为共享协议栈)与第二协议栈(可称为独享协议栈)共存。其中,共享协议栈支持多种类业务,独享协议栈支持高性能需求,如此,本申请通过在用户态设置共享协议栈与独享协议栈共存,可实现网络操作系统既支持多种类业务,又能满足高性能需求。
在一个例子中,上述IP转发组件判断内存中第一存储位置信息对应的第一报文是否由第一协议栈处理,可参见图4所示流程,这里不再赘述。
在一个例子中,上述协议栈代理从相连接的各个业务进程中选择一个目标业务进程可参见图5、图6所示流程,这里不再赘述。
至此,完成本申请提供的方法描述。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (11)
1.一种网络操作系统,其特征在于,所述网络操作系统包括:运行在用户态的转发进程和至少一个业务进程;
所述转发进程包括:数据平面开发配置DPDK组件、IP转发组件、协议栈代理、第一协议栈;所述第一协议栈为至少一种应用提供服务;
每一业务进程,与所述协议栈代理连接,至少包括:第二协议栈;每一业务进程的第二协议栈为该业务进程对应的应用提供服务;
DPDK组件,向IP转发组件发送第一报文在内存中的第一存储位置信息;
IP转发组件,接收第一存储位置信息,判断所述内存中第一存储位置信息对应的第一报文是否由第一协议栈处理,若是,向第一协议栈发送第一存储位置信息,以由第一协议栈按照第一处理方式对内存中第一存储位置信息对应的第一报文进行处理,否则,向协议栈代理发送第一存储位置信息;
协议栈代理,接收第一存储位置信息,从相连接的各个业务进程中选择一个目标业务进程,向目标业务进程发送第一存储位置信息,以由目标业务进程依据第二协议栈并按照第二处理方式对内存中第一存储位置信息对应的第一报文进行处理。
2.根据权利要求1所述的网络操作系统,其特征在于,所述IP转发组件判断所述内存中第一存储位置信息对应的第一报文是否由第一协议栈处理,包括:
依据所述第一存储位置信息从所述内存读取第一报文;
在已获取的各业务进程对应的应用的应用信息中,查找所述第一报文匹配的目标应用信息;
若未查找到,则确定所述第一报文由所述第一协议栈处理,若查找到,则确定所述第一报文由所述第二协议栈处理。
3.根据权利要求1所述的网络操作系统,其特征在于,每一业务进程进一步用于:向协议栈代理发送第二存储位置信息,所述第二存储位置信息表示业务进程待发送的第二报文在内存中的存储位置;
所述协议栈代理进一步用于:接收所述第二存储位置信息,向IP转发组件发送所述第二存储位置信息,以由IP转发组件通过与DPDK组件配合转发所述内存中的第二报文。
4.根据权利要求3所述的网络操作系统,其特征在于,所述协议栈代理进一步用于:依据所述第二存储位置信息从所述内存读取第二报文,依据第二报文中的报文特征信息、发送所述第二存储位置信息的业务进程的业务进程标识生成流表项并记录至本地流表;
所述协议栈代理从相连接的各个业务进程中选择一个目标业务进程包括:
依据所述第一存储位置信息从所述内存读取第一报文,在本地流表中查找到与所述第一报文的报文特征信息匹配的流表项,将查找到的流表项中的业务进程标识对应的业务进程确定为所述目标业务进程。
5.根据权利要求3所述的网络操作系统,其特征在于,所述第二报文携带有报文特征信息,所述报文特征信息至少包括:源端口号、目的端口号;
其中,当业务进程运行在客户端,所述源端口号是从设定端口号范围内选择出的且满足设定条件,所述目的端口号是服务器上的指定端口号;
所述设定条件为:按照设定业务分担算法将包括所述源端口号、目的端口号的所述报文特征信息、以及指定值M进行运算得到的结果为所述业务进程的业务进程标识,所述指定值M为:所述业务进程所属的应用对应的业务进程总数;
当业务进程运行在服务器,则所述源端口号是服务器上的指定端口号,所述目的端口号是已接收的第三报文的源端口号,所述第二报文为响应所述第三报文的响应报文。
6.根据权利要求5所述的网络操作系统,其特征在于,所述协议栈代理从相连接的各个业务进程中选择一个目标业务进程包括:
依据所述第一存储位置信息从所述内存读取第一报文,确定与所述第一报文所属的应用对应的业务进程;
在确定出的业务进程的数量N等于1时,将确定出的业务进程确定为所述目标业务进程;
在确定出的业务进程的数量N大于1时,按照设定业务分担算法并将所述第一报文的报文特征信息和所述N进行运算得到业务进程标识,将与计算出的业务进程标识对应的业务进程确定为所述目标业务进程。
7.一种报文转发方法,其特征在于,所述方法应用于网络设备,所述网络设备安装如权利要求1至6任一所述的网络操作系统,所述网络操作系统包括运行在用户态的转发进程和至少一个业务进程,所述转发进程包括:数据平面开发配置DPDK组件、IP转发组件、协议栈代理、第一协议栈;每一业务进程与所述协议栈代理连接,至少包括:第二协议栈;所述第一协议栈为至少一种应用提供服务,每一业务进程的第二协议栈为该业务进程提供服务;该方法包括:
所述IP转发组件接收来自DPDK组件发送的第一存储位置信息;所述第一存储位置信息表示所述第一报文在内存中的存储位置,
所述IP转发组件判断所述第一存储位置信息对应的第一报文是否由所述第一协议栈处理,若是,向所述第一协议栈发送所述第一存储位置信息,以由所述第一协议栈按照第一处理方式对所述第一报文进行处理,否则,向所述协议栈代理发送所述第一存储位置信息,以由所述协议栈代理从相连接的各个业务进程中选择一个目标业务进程,并向所述目标业务进程发送所述第一存储位置信息,以由目标业务进程依据第二协议栈并按照第二处理方式对内存中第一存储位置信息对应的第一报文进行处理。
8.根据权利要求7所述的方法,其特征在于,所述IP转发组件判断所述内存中第一存储位置信息对应的第一报文是否由第一协议栈处理包括:
依据所述第一存储位置信息从所述内存读取第一报文;
在已获取的各业务进程对应的应用的应用信息中,查找所述第一报文匹配的目标应用信息,若未查找到,则确定所述第一报文由所述第一协议栈处理,若查找到,则确定所述第一报文由所述第二协议栈处理。
9.根据权利要求7所述的方法,其特征在于,每一业务进程进一步用于:向协议栈代理发送第二存储位置信息,所述第二存储位置信息表示业务进程待发送的第二报文在内存中的存储位置;
所述协议栈代理进一步用于:接收所述第二存储位置信息,向IP转发组件发送所述第二存储位置信息,以由IP转发组件通过与DPDK组件配合转发所述内存中的第二报文。
10.根据权利要求9所述的方法,其特征在于,所述协议栈代理进一步用于:依据所述第二存储位置信息从所述内存读取第二报文,依据第二报文中的报文特征信息、发送所述第二存储位置信息的业务进程的业务进程标识生成流表项并记录至本地流表;
所述协议栈代理从相连接的各个业务进程中选择一个目标业务进程包括:
依据所述第一存储位置信息从所述内存读取第一报文,在本地流表中查找到与所述第一报文的报文特征信息匹配的流表项,将查找到的流表项中的业务进程标识对应的业务进程确定为所述目标业务进程。
11.根据权利要求9所述的方法,其特征在于,所述第二报文携带有报文特征信息,所述报文特征信息至少包括:源端口号、目的端口号;
其中,当业务进程运行在客户端,所述源端口号是从设定端口号范围内选择出的且满足设定条件,所述目的端口号是服务器上的指定端口号;
所述设定条件为:按照设定业务分担算法将包括所述源端口号、目的端口号的所述报文特征信息、以及指定值M进行运算得到的结果为所述业务进程的业务进程标识,所述指定值M为:所述业务进程所属的应用对应的业务进程总数;
当业务进程运行在服务器,则所述源端口号是服务器上的指定端口号,所述目的端口号是已接收的第三报文的源端口号,所述第二报文为响应所述第三报文的响应报文;
所述协议栈代理从相连接的各个业务进程中选择一个目标业务进程包括:
依据所述第一存储位置信息从所述内存读取第一报文,确定与所述第一报文所属的应用对应的业务进程;
在确定出的业务进程的数量N等于1时,将确定出的业务进程确定为所述目标业务进程;
在确定出的业务进程的数量N大于1时,按照设定业务分担算法并将所述第一报文的报文特征信息和所述N进行运算得到业务进程标识,将与计算出的业务进程标识对应的业务进程确定为所述目标业务进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910695477.9A CN111600833B (zh) | 2019-07-30 | 2019-07-30 | 网络操作系统及报文转发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910695477.9A CN111600833B (zh) | 2019-07-30 | 2019-07-30 | 网络操作系统及报文转发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111600833A true CN111600833A (zh) | 2020-08-28 |
CN111600833B CN111600833B (zh) | 2022-08-26 |
Family
ID=72190790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910695477.9A Active CN111600833B (zh) | 2019-07-30 | 2019-07-30 | 网络操作系统及报文转发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111600833B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115150464A (zh) * | 2022-06-22 | 2022-10-04 | 北京天融信网络安全技术有限公司 | 应用代理方法、装置、设备及介质 |
CN116170404A (zh) * | 2023-02-17 | 2023-05-26 | 通明智云(北京)科技有限公司 | 一种基于dpdk的数据转发方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070002761A1 (en) * | 2005-06-30 | 2007-01-04 | Nimrod Diamant | Internet protocol (IP) address sharing and platform dynamic host configuration protocol (DHCP) mediator |
WO2014166190A1 (zh) * | 2013-07-08 | 2014-10-16 | 中兴通讯股份有限公司 | 一种网络设备数据转发方法及装置 |
CN104142867A (zh) * | 2013-05-09 | 2014-11-12 | 华为技术有限公司 | 数据处理装置及数据处理方法 |
CN108366018A (zh) * | 2017-01-26 | 2018-08-03 | 普天信息技术有限公司 | 一种基于dpdk的网络数据包处理方法 |
CN109361606A (zh) * | 2018-09-28 | 2019-02-19 | 新华三技术有限公司 | 一种报文处理系统及网络设备 |
CN109379303A (zh) * | 2018-08-22 | 2019-02-22 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于提升万兆以太网性能的并行化处理框架系统和方法 |
-
2019
- 2019-07-30 CN CN201910695477.9A patent/CN111600833B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070002761A1 (en) * | 2005-06-30 | 2007-01-04 | Nimrod Diamant | Internet protocol (IP) address sharing and platform dynamic host configuration protocol (DHCP) mediator |
CN104142867A (zh) * | 2013-05-09 | 2014-11-12 | 华为技术有限公司 | 数据处理装置及数据处理方法 |
WO2014166190A1 (zh) * | 2013-07-08 | 2014-10-16 | 中兴通讯股份有限公司 | 一种网络设备数据转发方法及装置 |
CN108366018A (zh) * | 2017-01-26 | 2018-08-03 | 普天信息技术有限公司 | 一种基于dpdk的网络数据包处理方法 |
CN109379303A (zh) * | 2018-08-22 | 2019-02-22 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于提升万兆以太网性能的并行化处理框架系统和方法 |
CN109361606A (zh) * | 2018-09-28 | 2019-02-19 | 新华三技术有限公司 | 一种报文处理系统及网络设备 |
Non-Patent Citations (1)
Title |
---|
张青青: "LwIP网络应用开发平台系统设计", 《数字技术与应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115150464A (zh) * | 2022-06-22 | 2022-10-04 | 北京天融信网络安全技术有限公司 | 应用代理方法、装置、设备及介质 |
CN115150464B (zh) * | 2022-06-22 | 2024-03-15 | 北京天融信网络安全技术有限公司 | 应用代理方法、装置、设备及介质 |
CN116170404A (zh) * | 2023-02-17 | 2023-05-26 | 通明智云(北京)科技有限公司 | 一种基于dpdk的数据转发方法及装置 |
CN116170404B (zh) * | 2023-02-17 | 2023-09-29 | 通明智云(北京)科技有限公司 | 一种基于dpdk的数据转发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111600833B (zh) | 2022-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107733670B (zh) | 一种转发策略配置方法和装置 | |
CN114172802B (zh) | 容器网络配置方法、装置、计算节点、主节点及存储介质 | |
US9143582B2 (en) | Interoperability for distributed overlay virtual environments | |
CN110633175B (zh) | 基于微服务的多机房数据处理方法、电子设备及存储介质 | |
US20220045896A1 (en) | Network state management | |
CN111010329B (zh) | 一种报文传输方法及装置 | |
CN111327651A (zh) | 资源下载方法、装置、边缘节点及存储介质 | |
CN111600833B (zh) | 网络操作系统及报文转发方法 | |
CN108234422B (zh) | 资源调度方法及装置 | |
CN108337116B (zh) | 消息保序方法及装置 | |
CN113162779B (zh) | 一种多云互联的方法及设备 | |
CN114710549A (zh) | 一种容器平台中网卡的动态管理方法、系统及业务节点 | |
CN111654559B (zh) | 一种容器数据传输方法及装置 | |
CN111130978B (zh) | 网络流量转发方法、装置、电子设备及机器可读存储介质 | |
JP6119407B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
CN111756629B (zh) | 设备接入overlay网络及通信的方法、装置、设备、网络及介质 | |
EP3857826B1 (en) | Flexible unnumbered destination tunnels for virtual networks | |
CN109656674B (zh) | 一种计算机设备、虚拟化芯片及数据传输方法 | |
CN113504872A (zh) | 一种云物理机挂载虚拟磁盘的方法、系统、设备及介质 | |
CN114531320A (zh) | 通信方法、装置、设备、系统及计算机可读存储介质 | |
US20240171514A1 (en) | Vtep multipath data traffic forwarding system | |
CN110740198B (zh) | 邻居表项管理方法、装置、电子设备及机器可读存储介质 | |
US11303511B2 (en) | Boot server support in an enterprise fabric network | |
CN112748981B (zh) | 虚拟网络功能的软件镜像的处理方法和装置 | |
CN116155890B (zh) | 分布式文件系统的实现方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |