一种网络数据分发方法及网络设备技术

技术编号:12420475 阅读:105 留言:0更新日期:2015-12-02 15:36
本发明专利技术公开了一种网络数据分发方法及网络设备,所述方法包括:获取第一参数,第一参数包含了当前网络数据的流向信息;获取预设的关键字,关键字的比特位数为A的倍数且每组A个比特位周期性相同;从A个比特位中提取比特位为1或0的各个比特位;在各个比特位中,确定每一比特位在第一参数中的影响区间;将所有影响区间按位进行异或运算,得到第二参数;若A个比特位中比特位为1的位数不超过A/2或第一参数中比特位为1的位数为奇数,则将第二参数取逆序并取反后得到第三参数,若A个比特位中比特位为1的位数超过A/2且第一参数中比特位为1的位数为偶数,则将第二参数取逆序后得到第三参数;根据第三参数将当前网络数据分配给对应的CPU核处理。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种网络数据分发方法及网络设备
技术介绍
为了提升计算机的性能,现代计算机一般采用多核架构处理数据。对于基于多核 架构的网络设备而言,当它接收到一个网络数据包时,相关的网卡需要通过一种机制决定 将这个数据包交给哪个CPU处理,RSS (receive side scaling)就是这样一种机制。RSS应 用广泛,尤其是在一些高性能的网络硬件设备中,如Intel推出的基于8259910Gb以太网控 制器的万兆网卡就支持使用开发者给定的参数通过RSS来进行CPU的任务分配。 除了用硬件实现RSS算法外,RSS算法的软件实现也具有重要意义。一方面,随着 虚拟化技术的发展,用软件模拟硬件行为已经成为重要的发展方向,另一方面,通过软件实 现RSS算法,可以及时地预测RSS网卡硬件的行为,进而实现程序开发上的优化。例如,在 实际的应用场景中,如NAPT(Network Address Port Translation,网络端口地址转换),为 了提升计算机系统的使用效能,网络会话(session)信息的记录往往是与特定的CPU绑定 的。因此,常常希望一条会话两个方向上的数据包在RSS作用下均能分配到同一个CPU核 上,为了保证这一点,就需要在数据包做NAPT时进行相应的RSS软件计算。 如图1所示的RSS处理流程示意图,可简要表述为如下几个步骤: 步骤1、确定入参。入参包括一个40字节(320比特)的关键字key和一个长度 为128的数组分配表redirection table。一般情况下,这两个入参可以由开发者指定,以 满足特定场景下的计算需求。Key用于计算hash (哈希)值,redirection table则用于将 hash值映射到各个CPU(即各个发送队列的id)上。 步骤2、根据key和输入的网络数据信息input (input从已解析的接收数据包中获 取)通过给定的hash算法计算出一个32位的hash值。其中,Input的选取一般有两种形 式,一种是取源IP与目的IP二元组连接成的数据段,另一种是取源IP、目的IP、源端口、目 的端口四元组连接成的数据段。在计算TCP (Transmission Control Protocol,传输控制协 议)、UDP(User Datagram Protocol,用户数据报协议)等常用数据包时,一般都采用后一种 即四元组的数据形式作为input,四元组形式下input共包含12个字节,它作为一串96(8 * 12 = 96)位的0/1数字参与如下计算。关于采用hash算法计算出的32位hash值,由 如下方式产生: (1)、先将32位hash值(采用result表示)的初值置为0 ; (2)、如果input最左端的一位为1,则将result更新为result自身与key最左端 32位的异或值。否则,保持result不变。 (3)将 input 与 key 均左移一位。 (4)如果input各个位均为0,则将当前得到的result作为输出结果。否则,重复 ⑵⑶⑷。 步骤3、取出作为输出结果的result的7位最低有效位(LSB,即32位二进制hash 值的最右侧7位),找出redirection table中下标与所述7位最低有效位数值相同的数 组。 步骤4、读取步骤3中找出数组对应的i d值。 根据上述RSS处理流程可知,RSS算法的hash值是一系列异或运算的组合,当用 软件方法模拟RSS分发数据包时,每次运算的计算量与输入数据input有关,即,通过判断 input中96个比特的每一位是否为1来确定异或运算的内容。在最坏的情况下,一次RSS 运算需要96次的判断与96次异或运算,在平均情况下,一次运算需要96次的判断与48次 异或运算,但是,这样的计算量显然过大,其计算性能无法让人满意。
技术实现思路
有鉴于此,本专利技术实施例的主要目的在于提供一种网络数据分发方法及网络设 备,以实现提高网络数据分发速度的目的。 为实现上述目的,本专利技术实施例提供了一种网络数据分发方法,包括: 网络设备获取第一参数,所述第一参数包含了当前网络数据的流向信息,所述第 一参数为二进制数且所述第一参数的比特位数为A的倍数; 获取预设的关键字,所述关键字的比特位数为A的倍数且每组A个比特位周期性 相同; 从所述A个比特位中提取比特位为1或0的各个比特位; 在所述各个比特位中,确定每一比特位在所述第一参数中的影响区间,所述影响 区间包括B个比特位; 将所有影响区间按位进行异或运算,得到比特位数为B的第二参数; 若所述A个比特位中比特位为1的位数不超过A/2或所述第一参数中比特位为1 的位数为奇数,则将所述第二参数取逆序并取反后得到第三参数,若所述A个比特位中比 特位为1的位数超过A/2且所述第一参数中比特位为1的位数为偶数,则将所述第二参数 取逆序后得到第三参数; 根据所述第三参数读取预设的数组分配表中的身份标识号码,并将所述当前网络 数据分配给所述身份标识号码对应的CPU核处理; 其中,A、B为大于0的自然数,A大于或等于B。 优选地,所述获取第一参数,包括: 从输入数据流中提取当前网络数据的流向信息,所述流向信息包括源IP地址、目 的IP地址、源端口号及目的端口号; 利用所述流向信息形成比特位数为C的流向参数,所述流向参数从左到右依次 为:比特位数为D的源IP地址、比特位数为E的目的IP地址、比特位数为F的源端口号及 比特位数为G的目的端口号,其中,D+E+F+G = C ; 将所述流向参数拆分成H块,且每块中的比特位数为A的倍数; 将每块参数的比特位按位进行异或运算,得到第一参数。 优选地,所述从所述A个比特位中提取比特位为1或0的各个比特位,包括: 确定所述A个比特位中比特位为1的个数nk; 若叫小于或等于A/2,则提取所述A个比特位中比特位为1的各个比特位; 若nk大于A/2,则提取所述A个比特位中比特位为0的各个比特位。 优选地,所述在所述各个比特位中,确定每一比特位在所述第一参数中的影响区 间,包括: 根据所述各个比特位中每一比特位的序列号b,计算每一比特位在所述第一参数 中的影响区间,所述影响区间为。 优选地,A = 16, B = 7, C = 96, D = E = 32, F = G = 16。 本专利技术实施例还提供了一种网络设备,包括: 第一参数获取单元,用于获取第一参数,所述第一参数包含了当前网络数据的流 向信息,所述第一参数为二进制数且所述第一参数的比特位数为A的倍数; 关键字获取单元,用于获取预设的关键字,所述关键字的比特位数为A的倍数且 每组A个比特位周期性相同; 比特位提取单元,用于从所述关键字获取单元获取的关键字中的A个比特位中提 取比特位为1或0的各个比特位; 影响区间确定单元,用于在所述比特位提取单元提取的各个比特位中,确定每一 比特位在所述第一参数获取单元获取的第一参数中的影响区间,所述影响区间包括B个比 特位; 第二参数计算单元,用于将所述影响区间确定单元确定的所有影响区间按位进行 异或运算,得到比特位数为B的第二参数; 第三参数计算单元,用于若所述关键字获取单元获取的关键字中的A本文档来自技高网
...

【技术保护点】
一种网络数据分发方法,其特征在于,包括:网络设备获取第一参数,所述第一参数包含了当前网络数据的流向信息,所述第一参数为二进制数且所述第一参数的比特位数为A的倍数;获取预设的关键字,所述关键字的比特位数为A的倍数且每组A个比特位周期性相同;从所述A个比特位中提取比特位为1或0的各个比特位;在所述各个比特位中,确定每一比特位在所述第一参数中的影响区间,所述影响区间包括B个比特位;将所有影响区间按位进行异或运算,得到比特位数为B的第二参数;若所述A个比特位中比特位为1的位数不超过A/2或所述第一参数中比特位为1的位数为奇数,则将所述第二参数取逆序并取反后得到第三参数,若所述A个比特位中比特位为1的位数超过A/2且所述第一参数中比特位为1的位数为偶数,则将所述第二参数取逆序后得到第三参数;根据所述第三参数读取预设的数组分配表中的身份标识号码,并将所述当前网络数据分配给所述身份标识号码对应的CPU核处理;其中,A、B为大于0的自然数,A大于或等于B。

【技术特征摘要】

【专利技术属性】
技术研发人员:孙浩
申请(专利权)人:东软集团股份有限公司
类型:发明
国别省市:辽宁;21

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

1