CN102497323A - 一种基于intel万兆网卡实现同源同宿报文分流的系统和方法 - Google Patents
一种基于intel万兆网卡实现同源同宿报文分流的系统和方法 Download PDFInfo
- Publication number
- CN102497323A CN102497323A CN2011104271028A CN201110427102A CN102497323A CN 102497323 A CN102497323 A CN 102497323A CN 2011104271028 A CN2011104271028 A CN 2011104271028A CN 201110427102 A CN201110427102 A CN 201110427102A CN 102497323 A CN102497323 A CN 102497323A
- Authority
- CN
- China
- Prior art keywords
- module
- hash value
- message
- random number
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种基于intel万兆网卡实现同源同宿报文分流的系统和方法,构造随机数K,使K的前面3个32位相等,也就是说,随机数序列K中的前12个字节,排列为K[0]K[1]K[2]…K[11],满足关系K[i]=K[i+4]。利用随机数序列配置和修改网卡芯片的参数,基于intel万兆网卡的分流HASH算法,实现报文的同源同宿分流。与现有技术相比,本发明的有益效果在于:解决了基于intel万兆网卡实现同源同宿的报文分流的问题。
Description
技术领域
本发明属于网络数据处理领域,具体涉及一种基于intel万兆网卡实现同源同宿报文分流的系统和方法。
背景技术
Intel万兆网卡支持多缓冲区队列技术,可以把网口输入的报文分流到多个接收报文的缓冲区队列,分流采用的算法,是把报文的IP字段和一个随机数序列K进行位运算,得到一个值,作为报文目标缓冲区队列的编号,这种方法可以保证源ip和目的ip相同的报文被分流到同一个缓冲区队列。
在有些应用中,报文分流不仅要保证源ip和目的ip相同的报文被分流的同一个缓冲队列,还要保证源目ip互换后的报文也要分配到同一个队列,称为同源同宿,intel网卡默认的分流方法无法实现同源同宿的分流。
专利号为CN201010538814.2,名称为“支持多用户的高速报文分流方法”公开了一种支持多用户的高速报文分流方法,目的是为支持多用户模式的高速大容量分流设备提供一种高速、低延迟的数据报文从单块输入卡到多块输出卡的组播分流方法。技术方案是先修改输入卡、输出卡,使输入卡支持多用户模式,使输出卡支持指定端口分流,构建由输入卡、交换卡和输出卡组成的两级交换结构;然后初始化两级交换结构并采用两级交换结构进行分流。
专利号为CN201010598343.4,名称为“一种基于保证连接均衡性的报文分流方法”公开了一种保证TCP连接均衡性的报文分流方法。建立一张基于四元组的分流表;记录每个四元组信息并分配流序号;当IP包到达网络设备时,查找分流表,若可以找到该四元组,则取出流序号进行分流;否则为其在分流表中新分配一项,并分配一个流序号。本发明采用这种方式可以实现网络分流设备负载更加均衡。
但上述技术方案中,硬件本身实现的分流不能做到同源同宿,需要同源同宿分流时,只使用一个缓冲区队列,网卡上的硬件芯片把所有报文分流到一个队列,然后再由软件把该队列中的报文按同源同宿的方法分流到其他队列。而软件实现同源同宿分流,不能充分发挥intel网卡硬件芯片分流的功能,带来系统性能的损失。
发明内容
本发明克服现有技术存在的不足,通过设计intel网卡中分流算法的随机K值,配置和修改网卡芯片的参数,实现了硬件同源同宿的报文分流。
本发明提供了一种基于intel万兆网卡实现同源同宿报文分流的系统,其包括下列模块:初始化模块,该模块构造随机数K,并且设置网卡芯片的HASH值R初始值为0;源目IP地址I判断模块,该模块扫描输入报文的源目IP地址I,并对每一位b进行判断,如果b=1,则进入获取新HASH值模块,否则进入结束循环判断模块;获取新HASH值模块,该模块利用当前HASH值和K的最左边32位得到新的HASH值R;获取新K值模块,该模块把K左移1位,作为新的K;结束循环判断模块,该模块判断是否结束循环,如果结束循环,则进入确定目标缓冲区队列模块,否则进入源目IP地址I判断模块;确定目标缓冲区队列模块,该模块利用R和缓冲区队列数得到该报文的目标缓冲区队列。
本发明提供的基于intel万兆网卡实现同源同宿报文分流的系统,其初始化模块中随机数K的构造是如下实现的:使K的前面3个32位相等,也就是说,随机数序列K中的前12个字节,排列为K[0]K[1]K[2]…K[11],满足关系K[i]=K[i+4]。
本发明提供的基于intel万兆网卡实现同源同宿报文分流的系统,其源目IP地址I判断模块中从左到右依次扫描输入报文的源目IP地址I,共8个字节,扫描64位从而对每一位b进行判断。
本发明提供的基于intel万兆网卡实现同源同宿报文分流的系统,其获取新HASH值模块中对当前HASH值和K的最左边32位进行异或运算,得到新的HASH值R。
本发明提供的基于intel万兆网卡实现同源同宿报文分流的系统,其确定目标缓冲区队列模块中得到新K值并且扫描I结束后,返回最终的R和缓冲区队列数取模运算后,作为该报文的目标缓冲区队列。
本发明还提供了一种基于intel万兆网卡实现同源同宿报文分流的方法,构造随机数K,使K的前面3个32位相等,也就是说,随机数序列K中的前12个字节,排列为K[0]K[1]K[2]…K[11],满足关系K[i]=K[i+4]。
完成所述K[i]=K[i+4]后,配置网卡芯片,设置HASH值R初始值为0。
完成所述配置网卡芯片和初始化HASH值R后,从左到右依次扫描输入报文的源目IP地址I,共8个字节,64位,对每一位b进行判断。
所述每一位b进行判断完成后,如果b等于1,则把当前HASH值和K的最左边32位进行异或运算,得到新的HASH值R。
得到所述新的HASH值R后,把K左移1位,作为新的K。
得到所述新K值后,扫描I结束后,返回最终的R,和缓冲区队列数取模运算后,作为该报文的目标缓冲区队列。
与现有技术相比,本发明的有益效果在于:需要同源同宿分流时,避开了由软件把该队列中的报文按同源同宿的方法分流到其他队列,不通过软件实现同源同宿分流,充分发挥intel网卡硬件芯片分流的功能,带来系统性能的提升。
附图说明
图1是本发明的流程示意图。
具体实施方式
本发明利用intel网卡的算法特点,设计一个可实现同源同宿计算的随机数,配置到网卡中,利用随机数和IP地址的位运算,实现同源同宿的分流。
本发明提供了一种基于intel万兆网卡实现同源同宿报文分流的系统,其包括下列模块:初始化模块,该模块构造随机数K,使K的前面3个32位相等,也就是说,随机数序列K中的前12个字节,排列为K[0]K[1]K[2]…K[11],满足关系K[i]=K[i+4],并且设置网卡芯片的HASH值R初始值为0;源目IP地址I判断模块,该模块从左到右依次扫描输入报文的源目IP地址I,共8个字节,扫描64位从而对每一位b进行判断,如果b=1,则进入获取新HASH值模块,否则进入结束循环判断模块;获取新HASH值模块,该模块利用当前HASH值和K的最左边32位进行异或运算,得到新的HASH值R;获取新K值模块,该模块把K左移1位,作为新的K;结束循环判断模块,该模块判断是否结束循环,如果结束循环,则进入确定目标缓冲区队列模块,否则进入源目IP地址I判断模块;确定目标缓冲区队列模块,该模块利用最终的R和缓冲区队列数取模运算后,作为该报文的目标缓冲区队列。
图1是本发明的流程示意图。
本发明的方法和过程如下:
(1)构造随机数K,使K的前面3个32位相等,也就是说,随机数序列K中的前12个字节,排列为K[0]K[1]K[2]…K[11],满足关系K[i]=K[i+4]。
(2)配置网卡芯片,设置HASH值R初始值为0。
(3)从左到右依次扫描输入报文的源目IP地址I,共8个字节,64位,对每一位b进行判断。
(4)如果b等于1,则把当前HASH值和K的最左边32位进行异或运算,得到新的HASH值R。
(5)把K左移1位,作为新的K。
(6)扫描I结束后,返回最终的R,和缓冲区队列数取模运算后,作为该报文的目标缓冲区队列。
本发明通过设计intel网卡中分流算法的随机K值,配置和修改网卡芯片的参数,实现了硬件同源同宿的报文分流。不通过软件实现同源同宿分流,充分发挥intel网卡硬件芯片分流的功能,带来系统性能的提升。
以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所述领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者同等替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种基于intel万兆网卡实现同源同宿报文分流的方法,其包括下列步骤:
(1)构造随机数K,设置网卡芯片的HASH值R初始值为0;
(2)扫描输入报文的源目IP地址I,并对每一位b进行判断,如果b=1,则进入步骤(3),否则进入步骤(5);
(3)利用当前HASH值和K的最左边32位得到新的HASH值R;
(4)把K左移1位,作为新的K;
(5)判断是否结束循环,如果结束循环,则进入步骤(6),否则进入步骤(2);
(6)利用R和缓冲区队列数得到该报文的目标缓冲区队列。
2.根据权利要求1所述的方法,其特征在于,步骤(1)中随机数K的构造是如下实现的:使K的前面3个32位相等,也就是说,随机数序列K中的前12个字节,排列为K[0]K[1]K[2]…K[11],满足关系K[i]=K[i+4]。
3.根据权利要求1-2所述的方法,其特征在于,步骤(2)中从左到右依次扫描输入报文的源目IP地址I,共8个字节,扫描64位从而对每一位b进行判断。
4.根据权利要求1-3所述的方法,其特征在于,步骤(3)中对当前HASH值和K的最左边32位进行异或运算,得到新的HASH值R。
5.根据权利要求1-4所述的方法,其特征在于,步骤(6)中得到新K值并且扫描I结束后,返回最终的R和缓冲区队列数取模运算后,作为该报文的目标缓冲区队列。
6.一种基于intel万兆网卡实现同源同宿报文分流的系统,其包括下列模块:
初始化模块,该模块构造随机数K,并且设置网卡芯片的HASH值R初始值为0;
源目IP地址I判断模块,该模块扫描输入报文的源目IP地址I,并对每一位b进行判断,如果b=1,则进入获取新HASH值模块,否则进入结束循环判断模块;
获取新HASH值模块,该模块利用当前HASH值和K的最左边32位得到新的HASH值R;
获取新K值模块,该模块把K左移1位,作为新的K;
结束循环判断模块,该模块判断是否结束循环,如果结束循环,则进入确定目标缓冲区队列模块,否则进入源目IP地址I判断模块;
确定目标缓冲区队列模块,该模块利用R和缓冲区队列数得到该报文的目标缓冲区队列。
7.根据权利要求6所述的系统,其特征在于,初始化模块中随机数K的构造是如下实现的:使K的前面3个32位相等,也就是说,随机数序列K中的前12个字节,排列为K[0]K[1]K[2]…K[11],满足关系K[i]=K[i+4]。
8.根据权利要求6-7所述的系统,其特征在于,源目IP地址I判断模块中从左到右依次扫描输入报文的源目IP地址I,共8个字节,扫描64位从而对每一位b进行判断。
9.根据权利要求6-8所述的系统,其特征在于,获取新HASH值模块中对当前HASH值和K的最左边32位进行异或运算,得到新的HASH值R。
10.根据权利要求6-9所述的方法,其特征在于,确定目标缓冲区队列模块中得到新K值并且扫描I结束后,返回最终的R和缓冲区队列数取模运算后,作为该报文的目标缓冲区队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104271028A CN102497323A (zh) | 2011-12-19 | 2011-12-19 | 一种基于intel万兆网卡实现同源同宿报文分流的系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104271028A CN102497323A (zh) | 2011-12-19 | 2011-12-19 | 一种基于intel万兆网卡实现同源同宿报文分流的系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102497323A true CN102497323A (zh) | 2012-06-13 |
Family
ID=46189111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104271028A Pending CN102497323A (zh) | 2011-12-19 | 2011-12-19 | 一种基于intel万兆网卡实现同源同宿报文分流的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102497323A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103763198A (zh) * | 2013-11-15 | 2014-04-30 | 武汉绿色网络信息服务有限责任公司 | 一种数据包分类方法 |
CN106375237A (zh) * | 2016-09-28 | 2017-02-01 | 郑州云海信息技术有限公司 | 一种基于Intel 82599万兆网卡的Hash函数Key值筛选方法 |
CN106506691A (zh) * | 2016-12-06 | 2017-03-15 | 北京锐安科技有限公司 | 一种支持千兆万兆混合多端口负载均衡的方法 |
CN109756389A (zh) * | 2018-11-28 | 2019-05-14 | 南京知常容信息技术有限公司 | 一种万兆网络隐蔽通信检测系统 |
CN115134284A (zh) * | 2021-03-24 | 2022-09-30 | 中国电信股份有限公司 | 通过多个分流器实现同源同宿分流的方法、装置和介质 |
-
2011
- 2011-12-19 CN CN2011104271028A patent/CN102497323A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103763198A (zh) * | 2013-11-15 | 2014-04-30 | 武汉绿色网络信息服务有限责任公司 | 一种数据包分类方法 |
CN103763198B (zh) * | 2013-11-15 | 2016-08-17 | 武汉绿色网络信息服务有限责任公司 | 一种数据包分类方法 |
CN106375237A (zh) * | 2016-09-28 | 2017-02-01 | 郑州云海信息技术有限公司 | 一种基于Intel 82599万兆网卡的Hash函数Key值筛选方法 |
CN106375237B (zh) * | 2016-09-28 | 2019-11-01 | 郑州云海信息技术有限公司 | 一种基于Intel 82599万兆网卡的Hash函数Key值筛选方法 |
CN106506691A (zh) * | 2016-12-06 | 2017-03-15 | 北京锐安科技有限公司 | 一种支持千兆万兆混合多端口负载均衡的方法 |
CN106506691B (zh) * | 2016-12-06 | 2019-11-22 | 北京锐安科技有限公司 | 一种支持千兆万兆混合多端口负载均衡的方法 |
CN109756389A (zh) * | 2018-11-28 | 2019-05-14 | 南京知常容信息技术有限公司 | 一种万兆网络隐蔽通信检测系统 |
CN115134284A (zh) * | 2021-03-24 | 2022-09-30 | 中国电信股份有限公司 | 通过多个分流器实现同源同宿分流的方法、装置和介质 |
CN115134284B (zh) * | 2021-03-24 | 2023-07-14 | 中国电信股份有限公司 | 通过多个分流器实现同源同宿分流的方法、装置和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11469922B2 (en) | Data center network with multiplexed communication of data packets across servers | |
CN102497323A (zh) | 一种基于intel万兆网卡实现同源同宿报文分流的系统和方法 | |
CN107819695B (zh) | 一种基于sdn的分布式控制负载均衡系统与方法 | |
Yin et al. | LIONS: An AWGR-based low-latency optical switch for high-performance computing and data centers | |
US8995456B2 (en) | Space-space-memory (SSM) Clos-network packet switch | |
US10979366B1 (en) | Optimization of multi-stage hierarchical networks for practical routing applications | |
CN105337883A (zh) | 一种支持多业务的网络交换装置及其实现方法 | |
CN101517981A (zh) | 多机架仿真交换机 | |
CN103701710A (zh) | 一种数据传输方法、核心转发设备以及端点转发设备 | |
US9374322B2 (en) | Optimization of multi-stage hierarchical networks for practical routing applications | |
Yuan | On nonblocking folded-clos networks in computer communication environments | |
CN102111327A (zh) | 信元调度方法和系统 | |
CN102164088A (zh) | 数据中心网络系统 | |
CN105791145A (zh) | 基于等价多路径ecmp的报文传输方法及装置 | |
CN102201949A (zh) | 一种测试网络设备转发性能的系统及方法 | |
CN102594650B (zh) | 处理多播报文的方法和交换接入装置 | |
CN102195931A (zh) | 一种设备内部多播流量转发的方法、网络设备及线卡 | |
US20050157713A1 (en) | Distribution stage for enabling efficient expansion of a switching network | |
Tu et al. | Design a simple and high performance switch using a two-stage architecture | |
Yang et al. | Routing permutations on baseline networks with node-disjoint paths | |
CN109327405A (zh) | 报文保序方法及网络设备 | |
Yoshigoe | The CICQ switch with virtual crosspoint queues for large RTT | |
JP2014068110A (ja) | 通信装置および切替制御方法 | |
CN102571529B (zh) | 消除头阻塞的数据发送方法和装置 | |
Lee et al. | A load balancing scheme for two-stage switches maintaining packet sequence |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120613 |