网络操作系统及报文转发方法技术方案

技术编号:25446377 阅读:51 留言:0更新日期:2020-08-28 22:32
本申请提供了网络操作系统及报文转发方法。本申请中,网络操作系统融合了共享模型和独享模型,实现共享模型中的协议栈(称为共享协议栈,上述的第一协议栈)与独享模型中的协议栈(称为独享协议栈,上述的第二协议栈)共存。而这种共享协议栈与独享协议栈的共存,实现了网络操作系统同时兼顾既支持多种类业务,又能满足高性能需求。

【技术实现步骤摘要】
网络操作系统及报文转发方法
本申请涉及网络通信技术,特别涉及网络操作系统及报文转发方法。
技术介绍
随着智能设备的普及,很多应用程序(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:DataPlaneDevelopmentKit)的发展,以DPDK为代表的用户态收发包正逐渐成为主流。所谓以DPDK为代表的用户态收发包,其是指通过DPDK绕过Linux内核协议栈,直接在用户态进行报文的收发与处理。DPDK为高效的用户态收发包提供了库函数和驱动的支持。DPDK是一款报文转发处理套件,但它不是网络协议栈,不提供二层、三层转发功能。当网络操作系统的内核态运行DPDK时,还需要在内核态运行协议栈。在一个示例中,用户态上的协议栈主要应用在以下两种模型:共享模型和独享模型。下面分别进行分析:共享模型:共享模型是指在用户态单独创建一个协议栈(Protocolstack)。这里的协议栈可简称共享协议栈。在一个示例中,多种不同应用可共享该共享协议栈,共享协议栈可同时为多种应用提供服务。在共享模型中,用户态内除了上述的共享协议栈后,还包括DPDK和转发进程(Fwdprocess)。在一个例子中,DPDK与转发进程可处于两个不同的进程。在另一个例子中,DPDK与转发进程也可处于同一进程。在另一个例子中,上述共享协议栈与转发进程可处于同一个进程。也可处于两个不同的进程。在共享模型中,转发进程用于在DPDK与共享协议栈之间转发报文。下面基于共享模型描述报文的转发过程:参见图1,图1示出了共享模型的结构。在图1所示的共享模型结构中,共享协议栈与转发进程处于两个不同的进程。DPDK与转发进程处于同一进程。为便于描述,此时的转发进程可不再称为转发进程,而是称为IP转发组件(IPFwd);同样,此时的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转本文档来自技高网...

【技术保护点】
1.一种网络操作系统,其特征在于,所述网络操作系统包括:运行在用户态的转发进程和至少一个业务进程;/n所述转发进程包括:数据平面开发配置DPDK组件、IP转发组件、协议栈代理、第一协议栈;所述第一协议栈为至少一种应用提供服务;/n每一业务进程,与所述协议栈代理连接,至少包括:第二协议栈;每一业务进程的第二协议栈为该业务进程对应的应用提供服务;/nDPDK组件,向IP转发组件发送第一报文在内存中的第一存储位置信息;/nIP转发组件,接收第一存储位置信息,判断所述内存中第一存储位置信息对应的第一报文是否由第一协议栈处理,若是,向第一协议栈发送第一存储位置信息,以由第一协议栈按照第一处理方式对内存中第一存储位置信息对应的第一报文进行处理,否则,向协议栈代理发送第一存储位置信息;/n协议栈代理,接收第一存储位置信息,从相连接的各个业务进程中选择一个目标业务进程,向目标业务进程发送第一存储位置信息,以由目标业务进程依据第二协议栈并按照第二处理方式对内存中第一存储位置信息对应的第一报文进行处理。/n

【技术特征摘要】
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进行运算得到业务进程标识,将与计算出的业务进程标识对应的业务进程确定为所述目标业务...

【专利技术属性】
技术研发人员:李昊
申请(专利权)人:新华三技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1