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

文档序号:8415537阅读:来源:国知局
议对应的分流表。
[0078]可选地,如图2所示,如果数据包所属的传输层通信协议为面向非连接的传输层通信协议,则分流表包括:二元组与线程标示符的对应关系,每个线程标示符对应一个线程。其中,线程标识符可以为线程的身份标识号码ID或线程对应的缓冲队列地址或其他能够唯一确定线程的标识。
[0079]可选地,如图3所述,如果数据包所属的传输层通信协议为面向连接的传输层通信协议,则分流表包括:第一分流表和第二分流表。第一分流表包括:四元组与线程标示符的对应关系,每个线程标示符对应一个线程;第二分流表包括:目的IP地址和目的端口与线程标示符的对应关系,每个线程标示符对应一个线程,及每个线程的负载。其中,目的IP地址和目的端口对应的多个线程为不同进程中的线程,从而实现不同进程中的线程与同一组目的IP地址和目的端口绑定。线程标识符可以为线程的身份标识号码ID或线程对应的缓冲队列地址或其他能够唯一确定线程的标识。
[0080]确定单元640用于根据该数据包所属的传输层通信协议对应的分流表中的数据流的标识信息和线程的对应关系,确定该数据包所属的数据流对应的线程。
[0081]可选地,数据包所属的传输层通信协议为面向非连接的通信协议时,则根据图2所示的分流表确定数据包所属的数据流对应的线程。确定单元640具体用于在数据包所属面向无连接的传输层通信协议对应的分流表中的二元组与线程标示符的对应关系中,查找该数据包的二元组对应的线程标示符,将数据包的二元组对应的线程标示符对应的线程确定为该数据包所属的数据流对应的线程。
[0082]可选地,数据包所属的传输层通信协议为面向连接的通信协议时,则根据图3所示的分流表确定数据包所属的数据流对应的线程。确定单元640具体用于在数据包所属的面向连接的传输层通信协议对应的第一分流表中的四元组与线程标示符的对应关系中,查找该数据包的四元组对应的线程标示符;若第一分流表中存在数据包的四元组对应的线程标识符,则将数据包的四元组对应的线程标示符对应的线程确定为数据包所属的数据流对应的线程;若第一分流表中不存在该数据包的四元组对应的线程标示符,则在该数据包所属的面向连接的传输层通信协议对应的第二分流表中的目的IP地址和目的端口与线程标示符的对应关系中,查找该数据包的目的IP地址和目的端口对应的线程标示符,将数据包的目的IP地址和目的端口对应的线程标识符对应的线程中负载最小的线程确定为该数据包所属的数据流对应的线程。
[0083]从图3所示的分流表可知第二分流表中的每个线程标识符都对应有该线程标识符对应的线程的负载。如果在图4所示的分流表中的第二分流表中,该数据包的目的IP地址和目的端口只对应一个线程标识符,则直接将该线程标示符对应的线程确定为该数据包所属的数据流对应的线程。如果在图3所示的分流表中的第二分流表中,该数据包的目的IP地址和目的端口对应多个线程标识符,则将多个线程标识符对应的线程中负载最小的线程确定为该数据包所属的数据流对应的线程,以实现线程的负载均衡,从而使得多核处理器负载均衡。
[0084]发送单元650用于将该数据包发送至该数据包所属的数据流对应的线程的缓冲队列,以使该数据流对应的线程从该缓冲队列获取数据包。
[0085]在确定单元640根据分流表确认该数据包所属的数据流对应的线程之后,发送单元650将该数据包发送至该数据包所属的数据流对应的线程的缓冲队列。然后该线程直接从其对应的缓冲队列获取数据包,因此数据包不会被多个线程共享,可避免线程间互斥和同步开销以及核心间cache失效。
[0086]另外,如图7所示,本发明实施例二提供的分流器还可以包括:更新单元660。
[0087]更新单元660用于根据线程的状态更新分流表。
[0088]具体的,对于图2所示的分流表,当有线程建立连接时,更新单元660将该建立连接的线程对应的线程标示符和该线程对应的目的IP地址和目的端口添加到分流表中。当分流表中的线程标示符对应的线程从连接状态变为空闲状态(本实施例中的空闲状态是指线程未关闭的情况下,线程的连接状态关闭,或线程的连接状态异常中断)时,更新单元660将该从连接状态变为空闲状态的线程对应的线程标识符及该线程对应的目的IP地址和目的端口从分流表中删除。
[0089]对于图3所示的分流表,当第一分流表中的线程标示符对应的线程从连接状态变为监听状态时,更新单元660将第一分流表中的该线程的线程标示符及该线程对应的源IP地址,源端口、目的IP地址和目的端口的删除,并将该线程的线程标示符、该线程对应的目的IP地址和目的端口及该线程的负载添加到第二分流表中。当第二分流表中的线程标示符对应的线程从监听状态变为连接状态时,更新单元660将第二分流表中的该线程的线程标示符、该线程对应的目的IP地址和目的端口及该线程的负载删除,并将该线程的线程标示符及该线程对应的源IP地址,源端口、目的IP地址和目的端口添加到第一分流表中。当有线程从空闲状态变为监听状态时,更新单元660将该从空闲状态变为监听状态的线程对应的线程标示符、该线程对应的目的IP地址和目的端口及该线程的负载添加到第二分流表中。当第一分流表或第二分流表中的线程标示符对应的线程变为空闲状态时,更新单元660将该变为空闲状态线程的线程标示符及该线程对应的源IP地址,源端口、目的IP地址和目的端口从第一分流表删除,或将该变为空闲状态线程对应的线程标示符,该线程对应的目的IP地址和目的端口及该线程的负载从第二分流表中删除。
[0090]利用本发明实施例二提供的分流器,该分流器以线程为分流粒度,并且不同的传输层通信协议对应不同的分流表,分流器根据数据包所属的传输层通信协议对应的分流表将数据包分配到该数据包所属的数据流对应的线程的缓冲队列,以使线程从该线程对应的缓冲队列中获取数据包。由于每个线程都有其独立的缓冲队列,因此数据包和数据包的连接信息不会被多个线程共享,可避免线程间互斥和同步开销以及核心间cache失效。并且针对面向连接的传输层通信协议实现了多个线程对同一个端口进行监听,可有效均衡多个核心之间的负载,从而提高了多核处理器的处理能力。
[0091]专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0092]结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0093]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种数据分流方法,其特征在于,应用于数据分流系统中,所述数据分流系统中包括分流器,存储器和用于处理数据的多个线程,每个线程对应一个缓冲队列,所述存储器存储有传输层通信协议和分流表的对应关系及每个传输层通信协议对应的分流表,每个分流表中设置有数据流的标识信息和线程的对应关系,所述方法包括: 分流器对所接收的数据包进行解析确定所述数据包所属的传输层通信协议; 所述分流器从所述数据包中,获取与确定的所述传输层通信协议对应的所述数据包所属
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1