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

文档序号:10626989阅读:346来源:国知局
业务报文分发方法及装置的制造方法
【专利摘要】本申请提供一种业务报文分发方法及装置,该方法包括:通过内核态接收业务报文;根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket;通过所述Socket将所述业务报文发送给对应的用户态进程。本申请通过在内核态中直接将业务报文分发到对应的用户态进程中进行处理,提高了网络设备的业务处理效率。
【专利说明】
业务报文分发方法及装置
技术领域
[0001]本申请涉及网络通信技术领域,尤其涉及业务报文分发方法及装置。
【背景技术】
[0002]目前,有越来越多的网络设备采用多CPU (Central Processing Unit,中央处理器)多进程的方式提高网络设备的业务处理能力。网络设备通过Socket (套接字)在操作系统的用户态接收其它网络设备发送的业务报文,当多个进程同时监听同一个端口时,由于端口冲突导致操作系统无法获知哪个进程的Socket获取了该业务报文,进而无法确定业务报文在哪个进程中处理。
[0003]现有技术方案中,采用一个主进程对应多个子进程的方式,由主进程负责接收业务报文,然后根据预设的分发算法将该业务报文分发给各个子进程处理,子进程处理完后再将需要发送的报文通过主进程发送出去。该处理方式增加了主进程与子进程之间的通信数据量,且所有的报文都通过主进程收发存在瓶颈,影响网络设备的工作效率。

【发明内容】

[0004]有鉴于此,本申请提供了一种业务报文分发方法,该方法包括:
[0005]通过内核态接收业务报文;
[0006]根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket ;
[0007]通过所述Socket将所述业务报文发送给对应的用户态进程。
[0008]本申请还提供了一种业务报文分发装置,该装置包括:
[0009]接收单元,用于通过内核态接收业务报文;
[0010]确定单元,用于根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket ;
[0011]发送单元,用于通过所述Socket将所述业务报文发送给对应的用户态进程。
[0012]本申请在内核态接收业务报文,并根据该业务报文的报文特征确定发送该业务报文的Socket,通过该Socket将业务报文发送给与该Socket绑定的用户态进程。可见,本申请在内核态中直接实现了对业务报文的分发,每个业务报文直接送入对应的用户态进程中处理,提高了网络设备的业务处理效率。
【附图说明】
[0013]图1是本申请一种实施例中业务报文分发方法的处理流程图;
[0014]图2是本申请一种实施例中IKE协商系统示意图;
[0015]图3是本申请一种实施例中用户态与内核态之间业务报文分发示意图;
[0016]图4是本申请一种实施例中业务报文分发装置的基础硬件示意图;
[0017]图5是本申请一种实施例中业务报文分发装置的结构示意图。
【具体实施方式】
[0018]为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图对本申请所述方案作进一步地详细说明。
[0019]目前,有越来越多的网络设备采用多CPU多进程的方式提高网络设备的业务处理能力。网络设备通过Socket在操作系统的用户态接收其它网络设备发送的业务报文,以UDP(User Datagram Protocol,用户数据包协议)协议传输的业务报文为例,网络设备在操作系统的用户态通过UDP Socket接收业务报文,当多个用户态进程的UDP Socket同时监听同一目的端口时,由于目的端口冲突导致操作系统无法获知哪个用户态进程的UDPSocket获取了该业务报文,因此,无法确定业务报文在哪个用户态进程中处理。
[0020]现有技术方案中,采用一个主进程对应多个子进程的方式,由主进程负责接收业务报文,然后根据预设的分发算法将该业务报文分发给各个子进程处理,子进程处理完后再将需要发送的报文通过主进程发送出去。该处理方式增加了主进程与子进程之间的通信数据量,且所有的业务报文都通过主进程收发存在瓶颈,影响网络设备的工作效率。
[0021]针对上述问题,本申请实施例提出一种业务报文分发方法,该方法在内核态接收业务报文,并根据该业务报文的报文特征确定发送该业务报文的Socket,通过该Socket将业务报文发送给与该Socket绑定的用户态进程。
[0022]参见图1,为本申请业务报文分发方法的一个实施例流程图,该实施例对业务报文分发的处理过程进行描述。
[0023]步骤110,通过内核态接收业务报文。
[0024]网络设备在接收业务报文之前,首先根据实际的业务需求在用户态创建若干用户态进程,为每一个用户态进程创建对应的进程组,例如,进程I对应进程组1,进程2对应进程组2,以此类推。同时,为每一个用户态进程创建对应的Socket,例如,进程I对应Socketl,进程2对应Socket2,以此类推。上述为进程创建的Socket为用户态与内核态之间的通信接口,例如:Linux系统中的Netlink Socket就是一种用户态与内核态之间双向传输数据的通信接口。建立每一个用户态进程的Socket与进程组的绑定关系,例如,进程I的Socketl与进程组I绑定,进程2的Socket2与进程组2绑定,以此类推。
[0025]网络设备接收业务报文后,通过协议栈送到内核态,执行后续步骤。
[0026]步骤120,根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket0
[0027]内核态接收业务报文后,获取业务报文的报文特征,例如,该业务报文的源IP地址,再获取已创建的进程组的数量,通过业务报文的源IP地址对进程组的数量进行取模,根据取模结果确定处理该业务报文的进程组的进程组标识。根据获得的进程组标识查询步骤110中建立的Socket与进程组的绑定关系,找到发送该业务报文的Socket。
[0028]步骤130,通过所述Socket将所述业务报文发送给对应的用户态进程。
[0029]现以IKE (Internet Key Exchange Protocol,因特网密钥交换协议)协商为例,详细介绍业务报文分发的处理过程。
[0030]参见图2为本申请IKE协商系统示意图。假设某企业员工分别通过远程主机PCl?PCn访问企业内部服务器,在企业入口处有一台网关GW,用户主机首先与该企业网关建立IKE协商,以实现通过专用的VPN (Virtual Private Network,虚拟专用网)通道访问内部服务器,保证业务安全。
[0031]参见图3,假设,GW内有3个CPU,在每一个CPU内为IKE协商创建一个用户态进程,分别为进程1、进程2以及进程3 ;为每一个用户态进程创建对应的进程组,分别为进程组1、进程组2以及进程组3 ;并为每一个用户态进程创建对应的Netlink Socket,分别为Socketl、Socket2以及Socket3 ;建立Netlink Socket与进程组的绑定关系,Socketl与进程组I绑定,Socket2与进程组2绑定,Socket3与进程组3绑定。
[0032]假设,GW接收到PCl发送的IKE协商报文,该报文首先到达GW的内核态,在内核态中对该IKE协商报文进行分组,具体过程为:首先,获取PCl的IP地址(假设为1.1.1.1),通过该IP地址除以创建的进程组数量3,计算得到的余数为I,则找到进程组I,通过与进程组I绑定的Socketl将PCl发送的IKE协商报文发送给进程I处理。
[0033]同理,假设PC2的IP地址为1.1.1.2,则计算的余数为2,通过与进程组2绑定的Socket2将PC2发送的IKE协商报文发送给进程2处理,以此类推,将所有用户发送的IKE协商报文分发到不同的用户态进程中处理。
[0034]与前述业务报文分发方法的实施例相对应,本申请还提供业务报文分发装置的实施例。
[0035]本申请业务报文分发装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的CPU运行存储器中对应的计算机程序指令形成的。从硬件层面而言,如图4所示,为本申请业务报文分发装置所在设备的一种硬件结构图,除了图4所示的CPU、存储器之外,实施例中装置所在的设备通常还可以包括其他硬件。
[0036]请参考图5,为本申请一个实施例中的业务报文分发装置的结构示意图。该业务报文分发装置包括接收单元501、确定单元502以及发送单元503,其中:
[0037]接收单元501,用于通过内核态接收业务报文;
[0038]确定单元502,用于根据所述业务报文的报文特征确定发送所述业务报文的套接字 Socket ;
[0039]发送单元503,用于通过所述Socket将所述业务报文发送给对应的用户态进程。
[0040]进一步地,所述业务报文分发装置还包括:
[0041]创建单元,用于在所述接收单元501通过内核态接收业务报文之前,在用户态创建若干用户态进程;为每一个用户态进程创建对应的进程组以及Socket ;建立所述每一个用户态进程的Socket与进程组的绑定关系;
[0042]所述确定单元502,包括:
[0043]标识获取模块,用于根据所述业务报文的报文特征获取处理所述业务报文的进程组的进程组标识;
[0044]Socket确定模块,用于根据所述进程组标识查询所述Socket与进程组的绑定关系,确定发送所述业务报文的Socket。
[0045]进一步地,
[0046]所述标识获取模块,具体用于获取所述业务报文的源IP地址;获取已创建的进程组的数量;根据所述源IP地址和所述进程组的数量计算处理所述业务报文的进程组的进程组标识。
[0047]进一步地,
[0048]所述Socket 为 Netlink Socket。
[0049]上述图5示出的业务报文分发装置的实施例,其具体实现过程可参见前述方法实施例的说明,在此不再赘述。
[0050]从以上方法和装置的实施例中可以看出,本申请在内核态接收业务报文,并根据该业务报文的报文特征确定发送该业务报文的Socket,通过该Socket将业务报文发送给与该Socket绑定的用户态进程。可见,本申请在内核态中直接实现了对业务报文的分发,每个业务报文直接送入对应的用户态进程中处理,提高了网络设备的业务处理效率。
[0051]以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
【主权项】
1.一种业务报文分发方法,其特征在于,该方法包括: 通过内核态接收业务报文; 根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket ; 通过所述Socket将所述业务报文发送给对应的用户态进程。2.如权利要求1所述的方法,其特征在于,所述通过内核态接收业务报文之前,还包括: 在用户态创建若干用户态进程; 为每一个用户态进程创建对应的进程组以及Socket ; 建立所述每一个用户态进程的Socket与进程组的绑定关系; 所述根据所述业务报文的报文特征确定发送所述业务报文的Socket,包括: 根据所述业务报文的报文特征获取处理所述业务报文的进程组的进程组标识; 根据所述进程组标识查询所述Socket与进程组的绑定关系,确定发送所述业务报文的 Socket。3.如权利要求2所述的方法,其特征在于,所述根据所述业务报文的报文特征获取处理所述业务报文的进程组的进程组标识,包括: 获取所述业务报文的源IP地址; 获取已创建的进程组的数量; 根据所述源IP地址和所述进程组的数量计算处理所述业务报文的进程组的进程组标识。4.如权利要求1至3任一所述的方法,其特征在于: 所述 Socket 为 Netlink Socket。5.一种业务报文分发装置,其特征在于,该装置包括: 接收单元,用于通过内核态接收业务报文; 确定单元,用于根据所述业务报文的报文特征确定发送所述业务报文的套接字Socket ; 发送单元,用于通过所述Socket将所述业务报文发送给对应的用户态进程。6.如权利要求5所述的装置,其特征在于,所述装置还包括: 创建单元,用于在所述接收单元通过内核态接收业务报文之前,在用户态创建若干用户态进程;为每一个用户态进程创建对应的进程组以及Socket ;建立所述每一个用户态进程的Socket与进程组的绑定关系; 所述确定单元,包括: 标识获取模块,用于根据所述业务报文的报文特征获取处理所述业务报文的进程组的进程组标识; Socket确定模块,用于根据所述进程组标识查询所述Socket与进程组的绑定关系,确定发送所述业务报文的Socket。7.如权利要求6所述的装置,其特征在于: 所述标识获取模块,具体用于获取所述业务报文的源IP地址;获取已创建的进程组的数量;根据所述源IP地址和所述进程组的数量计算处理所述业务报文的进程组的进程组标识O8.如权利要求5至7任一所述的装置,其特征在于:所述 Socket 为 Netlink Socket。
【文档编号】H04L29/08GK105991755SQ201510264416
【公开日】2016年10月5日
【申请日】2015年5月21日
【发明人】孔伟政, 刘宇驰
【申请人】杭州迪普科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1