业务报文分发方法及装置制造方法及图纸

技术编号:13790411 阅读:141 留言:0更新日期:2016-10-05 21:50
本申请提供一种业务报文分发方法及装置,该方法包括:通过内核态接收业务报文;根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket;通过所述Socket将所述业务报文发送给对应的用户态进程。本申请通过在内核态中直接将业务报文分发到对应的用户态进程中进行处理,提高了网络设备的业务处理效率。

【技术实现步骤摘要】

本申请涉及网络通信
,尤其涉及业务报文分发方法及装置
技术介绍
目前,有越来越多的网络设备采用多CPU(Central Processing Unit,中央处理器)多进程的方式提高网络设备的业务处理能力。网络设备通过Socket(套接字)在操作系统的用户态接收其它网络设备发送的业务报文,当多个进程同时监听同一个端口时,由于端口冲突导致操作系统无法获知哪个进程的Socket获取了该业务报文,进而无法确定业务报文在哪个进程中处理。现有技术方案中,采用一个主进程对应多个子进程的方式,由主进程负责接收业务报文,然后根据预设的分发算法将该业务报文分发给各个子进程处理,子进程处理完后再将需要发送的报文通过主进程发送出去。该处理方式增加了主进程与子进程之间的通信数据量,且所有的报文都通过主进程收发存在瓶颈,影响网络设备的工作效率。
技术实现思路
有鉴于此,本申请提供了一种业务报文分发方法,该方法包括:通过内核态接收业务报文;根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket;通过所述Socket将所述业务报文发送给对应的用户态进程。本申请还提供了一种业务报文分发装置,该装置包括:接收单元,用于通过内核态接收业务报文;确定单元,用于根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket;发送单元,用于通过所述Socket将所述业务报文发送给对应的用户态进程。本申请在内核态接收业务报文,并根据该业务报文的报文特征确定发送该业务报文的Socket,通过该Socket将业务报文发送给与该Socket绑定的用户态进程。可见,本申请在内核态中直接实现了对业务报文的分发,每个业务报文直接送入对应的用户态进程中处理,提高了网络设备的业务处理效率。附图说明图1是本申请一种实施例中业务报文分发方法的处理流程图;图2是本申请一种实施例中IKE协商系统示意图;图3是本申请一种实施例中用户态与内核态之间业务报文分发示意图;图4是本申请一种实施例中业务报文分发装置的基础硬件示意图;图5是本申请一种实施例中业务报文分发装置的结构示意图。具体实施方式为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图对本申请所述方案作进一步地详细说明。目前,有越来越多的网络设备采用多CPU多进程的方式提高网络设备的业务处理能力。网络设备通过Socket在操作系统的用户态接收其它网络设备发送的业务报文,以UDP(User Datagram Protocol,用户数据包协议)协议传输的业务报文为例,网络设备在操作系统的用户态通过UDP Socket接收业务报文,当多个用户态进程的UDP Socket同时监听同一目的端口时,由于目的端口冲突导致操作系统无法获知哪个用户态进程的UDP Socket获取了该业务报文,因此,无法确定业务报文在哪个用户态进程中处理。现有技术方案中,采用一个主进程对应多个子进程的方式,由主进程负
责接收业务报文,然后根据预设的分发算法将该业务报文分发给各个子进程处理,子进程处理完后再将需要发送的报文通过主进程发送出去。该处理方式增加了主进程与子进程之间的通信数据量,且所有的业务报文都通过主进程收发存在瓶颈,影响网络设备的工作效率。针对上述问题,本申请实施例提出一种业务报文分发方法,该方法在内核态接收业务报文,并根据该业务报文的报文特征确定发送该业务报文的Socket,通过该Socket将业务报文发送给与该Socket绑定的用户态进程。参见图1,为本申请业务报文分发方法的一个实施例流程图,该实施例对业务报文分发的处理过程进行描述。步骤110,通过内核态接收业务报文。网络设备在接收业务报文之前,首先根据实际的业务需求在用户态创建若干用户态进程,为每一个用户态进程创建对应的进程组,例如,进程1对应进程组1,进程2对应进程组2,以此类推。同时,为每一个用户态进程创建对应的Socket,例如,进程1对应Socket1,进程2对应Socket2,以此类推。上述为进程创建的Socket为用户态与内核态之间的通信接口,例如:Linux系统中的Netlink Socket就是一种用户态与内核态之间双向传输数据的通信接口。建立每一个用户态进程的Socket与进程组的绑定关系,例如,进程1的Socket1与进程组1绑定,进程2的Socket2与进程组2绑定,以此类推。网络设备接收业务报文后,通过协议栈送到内核态,执行后续步骤。步骤120,根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket。内核态接收业务报文后,获取业务报文的报文特征,例如,该业务报文的源IP地址,再获取已创建的进程组的数量,通过业务报文的源IP地址对进程组的数量进行取模,根据取模结果确定处理该业务报文的进程组的进程组标识。根据获得的进程组标识查询步骤110中建立的Socket与进程组的绑定关系,找到发送该业务报文的Socket。步骤130,通过所述Socket将所述业务报文发送给对应的用户态进程。现以IKE(Internet Key Exchange Protocol,因特网密钥交换协议)协商为例,详细介绍业务报文分发的处理过程。参见图2为本申请IKE协商系统示意图。假设某企业员工分别通过远程主机PC1~PCn访问企业内部服务器,在企业入口处有一台网关GW,用户主机首先与该企业网关建立IKE协商,以实现通过专用的VPN(Virtual Private Network,虚拟专用网)通道访问内部服务器,保证业务安全。参见图3,假设,GW内有3个CPU,在每一个CPU内为IKE协商创建一个用户态进程,分别为进程1、进程2以及进程3;为每一个用户态进程创建对应的进程组,分别为进程组1、进程组2以及进程组3;并为每一个用户态进程创建对应的Netlink Socket,分别为Socket1、Socket2以及Socket3;建立Netlink Socket与进程组的绑定关系,Socket1与进程组1绑定,Socket2与进程组2绑定,Socket3与进程组3绑定。假设,GW接收到PC1发送的IKE协商报文,该报文首先到达GW的内核态,在内核态中对该IKE协商报文进行分组,具体过程为:首先,获取PC1的IP地址(假设为1.1.1.1),通过该IP地址除以创建的进程组数量3,计算得到的余数为1,则找到进程组1,通过与进程组1绑定的Socket1将PC1发送的IKE协商报文发送给进程1处理。同理,假设PC2的IP地址为1.1.1.2,则计算的余数为2,通过与进程组2绑定的Socket2将PC2发送的IKE协商报文发送给进程2处理,以此类推,将所有用户发送的IKE协商报文分发到不同的用户态进程中处理。与前述业务报文分发方法的实施例相对应,本申请还提供业务报文分发装置的实施例。本申请业务报文分发装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的CPU运行存储器中对应的计算机程序指令形成的。从硬件层面而言,如图4所示,为本申请业务报文分发装置所在设备的一种硬件结构图,除了图4所示的CPU、存储
器之外,实施例中装置所在的设备本文档来自技高网
...

【技术保护点】
一种业务报文分发方法,其特征在于,该方法包括:通过内核态接收业务报文;根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket;通过所述Socket将所述业务报文发送给对应的用户态进程。

【技术特征摘要】
1.一种业务报文分发方法,其特征在于,该方法包括:通过内核态接收业务报文;根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket;通过所述Socket将所述业务报文发送给对应的用户态进程。2.如权利要求1所述的方法,其特征在于,所述通过内核态接收业务报文之前,还包括:在用户态创建若干用户态进程;为每一个用户态进程创建对应的进程组以及Socket;建立所述每一个用户态进程的Socket与进程组的绑定关系;所述根据所述业务报文的报文特征确定发送所述业务报文的Socket,包括:根据所述业务报文的报文特征获取处理所述业务报文的进程组的进程组标识;根据所述进程组标识查询所述Socket与进程组的绑定关系,确定发送所述业务报文的Socket。3.如权利要求2所述的方法,其特征在于,所述根据所述业务报文的报文特征获取处理所述业务报文的进程组的进程组标识,包括:获取所述业务报文的源IP地址;获取已创建的进程组的数量;根据所述源IP地址和所述进程组的数量计算处理所述业务报文的进程组的进程组标识。4.如权利要求1至3任一所述的方法,其特征在于:所述Socket为Netlink Socket。5.一...

【专利技术属性】
技术研发人员:孔伟政刘宇驰
申请(专利权)人:杭州迪普科技有限公司
类型:发明
国别省市:浙江;33

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

1