数据分流方法及分流器的制造方法

文档序号:8415537阅读:571来源:国知局
数据分流方法及分流器的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种数据分流方法及分流器。
【背景技术】
[0002]当今,处理器已经迈入多核时代,在多核架构下,往往以多线程部署在多个核心的方式实现并行处理,那么就需要通过分流的方式将数据包发送至不同线程,以使多个核心实现并行处理。
[0003]现有的数据分流方法分流粒度是进程,即将数据包发送至该数据包对应的进程的缓冲队列中。该进程中的线程从该进程的缓冲列队中获取数据包,该数据包的连接信息可能被其他线程共享。如果共享,则该线程访问该数据包对应的连接信息时需要通过线程间互斥和同步机制保证数据的一致性访问。如果此时恰好另一个线程正在访问该连接信息,则该线程需要一直等待,直到另一个线程访问完毕才能继续访问该连接信息。
[0004]因此,现有的数据分流方法存在以下缺点:多个线程共享同一个进程的缓冲队列,将引起大量的线程间互斥和同步开销以及核心间cache失效,从而导致多核处理器的处理能力不能充分发挥。

【发明内容】

[0005]有鉴于此,本发明实施例提供一种数据分流方法及分流器,以提高多核处理器的处理能力。
[0006]在第一方面,本发明实施例提供一种数据分流方法,应用于数据分流系统中,所述数据分流系统中包括分流器,存储器和用于处理数据的多个线程,每个线程对应一个缓冲队列,所述存储器存储有传输层通信协议和分流表的对应关系及每个传输层通信协议对应的分流表,每个分流表中设置有数据流的标识信息和线程的对应关系,所述方法包括:
[0007]分流器对所接收的数据包进行解析确定所述数据包所属的传输层通信协议;
[0008]所述分流器从所述数据包中,获取与确定的所述传输层通信协议对应的所述数据包所属的数据流的标识信息,所述数据流的标识信息用于区分所述数据包所属的数据流;
[0009]所述分流器根据所述传输层通信协议和分流表的对应关系,从所述存储器中获取所述数据包所属的传输层通信协议对应的分流表;
[0010]所述分流器根据所述数据包所属的传输层通信协议对应的分流表中的数据流的标识信息和线程的对应关系,确定所述数据包所属的数据流对应的线程;
[0011]所述分流器将所述数据包发送至所述数据流对应的线程的缓冲队列,以使所述数据流对应的线程从所述缓冲队列获取数据包。
[0012]在第一方面的第一种可能实现的方式中,若所述数据包所属的传输层通信协议为面向无连接的传输层通信协议,则所述数据流的标识信息为所述数据包的二元组,所述二元组包括:所述数据包的目的IP地址和目的端口 ;所述面向无连接的传输层通信协议对应的分流表包括:二元组与线程标示符的对应关系,每个线程标示符对应一个线程。
[0013]结合第一方面的第一种可能实现的方式,在第二种可能实现的方式中,所述分流器根据所述数据包所属的传输层通信协议对应的分流表中的数据流的标识信息和线程的对应关系,确定所述数据包所属的数据流对应的线程包括:所述分流器在所述数据包所属面向无连接的传输层通信协议对应的分流表中的二元组与线程标示符的对应关系中,查找所述数据包的二元组对应的线程标示符;所述分流器将所述数据包的二元组对应的线程标示符对应的线程确定为所述数据包所属的数据流对应的线程。
[0014]在第一方面的第三种可能实现的方式中,若所述数据包所属的传输层通信协议为面向连接的传输层通信协议,则所述数据流的标识信息为所述数据包的四元组,所述四元组包括:所述数据包的源IP地址,源端口、目的IP地址和目的端口 ;所述面向连接的传输层通信协议对应的分流表包括:第一分流表和第二分流表;所述第一分流表包括:四元组与线程标示符的对应关系,每个线程标示符对应一个线程;所述第二分流表包括:目的IP地址和目的端口与线程标示符的对应关系,每个线程标示符对应一个线程,及每个线程的负载;其中,目的IP地址和目的端口对应的线程为不同进程中的线程。
[0015]结合第一方面的第三种可能实现的方式,在第四种可能实现的方式中,所述分流器根据所述数据包所属的传输层通信协议对应的分流表中的数据流的标识信息和线程的对应关系,确定所述数据包所属的数据流对应的线程包括:所述分流器在所述数据包所属的面向连接的传输层通信协议对应的第一分流表中的四元组与线程标示符的对应关系中,查找所述数据包的四元组对应的线程标示符;若所述第一分流表中存在所述数据包的四元组对应的线程标识符,则所述分流器将所述数据包的四元组对应的线程标示符对应的线程确定为所述数据包所属的数据流对应的线程;若所述第一分流表中不存在所述数据包的四元组对应的线程标示符,则所述分流器在所述数据包所属的面向连接的传输层通信协议对应的第二分流表中的目的IP地址和目的端口与线程标示符的对应关系中,查找所述数据包的目的IP地址和目的端口对应的线程标示符;所述分流器将所述数据包的目的IP地址和目的端口对应的线程标识符对应的线程中负载最小的线程确定为所述数据包所属的数据流对应的线程。
[0016]结合第一方面的第一种可能实现的方式或第一方面的第二种可能实现的方式或第一方面的第三种可能实现的方式或第一方面的第四种可能实现的方式,在第五种可能实现的方式中,所述线程标识符为线程对应的缓冲队列地址。
[0017]结合第一方面或第一方面的第一种可能实现的方式或第一方面的第二种可能实现的方式或第一方面的第三种可能实现的方式或第一方面的第四种可能实现的方式或第一方面的第五种可能实现的方式,在第六种可能实现的方式中,所述方法还包括:分流器根据线程的状态更新分流表。
[0018]在第二方面,本发明实施例提供一种分流器,应用于数据分流系统中,所述数据分流系统中还包括存储器和用于处理数据的多个线程,每个线程对应一个缓冲队列,所述存储器存储有传输层通信协议和分流表的对应关系,每个分流表中设置有数据流的标识信息和线程的对应关系,所述分流器包括:
[0019]解析单元,用于对所接收的数据包进行解析确定所述数据包所属的传输层通信协议;
[0020]第一获取单元,用于从所述数据包中,获取与确定的所述传输层通信协议对应的所述数据包所属的数据流的标识信息,所述数据流的标识信息用于区分所述数据包所属的数据流;
[0021]第二获取单元,用于根据所述传输层通信协议和分流表的对应关系中,从所述存储器中获取所述数据包所属的传输层通信协议对应的分流表;
[0022]确定单元,用于根据所述数据包所属的传输层通信协议对应的分流表中的数据流的标识信息和线程的对应关系,确定所述数据包所属的数据流对应的线程;
[0023]发送单元,用于将所述数据包发送至所述数据流对应的线程的缓冲队列,以使所述数据流对应的线程从所述缓冲队列获取数据包。
[0024]在第二方面的第一种可能实现的方式中,若所述数据包所属的传输层通信协议为面向无连接的传输层通信协议,则所述数据流的标识信息为所述数据包的二元组,所述二元组包括:所述数据包的目的IP地址和目的端口 ;所述面向无连接的传输层通信协议对应的分流表包括:二元组与线程标示符的对应关系,每个线程标示符对应一个线程。
[0025]结合第二方面的第一种可能实现的方式,在第二种可能实现的方式中,所述确定单元具体用于:在所述数据包所属面向无连接的传输层通信协议对应的分流表中的二元组与线程标示符的对应关系中,查找所述数据包的二元组对应的线程标示符;将所述数据包的二元组对应的线程标示符对应的线程确定为所述数据包所属的数据流对应的线程。
[0026]在第二方面的第三种可能实现的方式中,所述面向连接的传输层通信协议对应的分流表包括:第一分流表和第二分流表;所述第一分流表包括:四元组与线程标示符的对应关系,每个线程标示符对应一个线程;所述第二分流表包括:目的IP地址和目的端
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1