CN108063727A - 一种针对CPU cache优化的TCP流表查找算法 - Google Patents
一种针对CPU cache优化的TCP流表查找算法 Download PDFInfo
- Publication number
- CN108063727A CN108063727A CN201711188752.5A CN201711188752A CN108063727A CN 108063727 A CN108063727 A CN 108063727A CN 201711188752 A CN201711188752 A CN 201711188752A CN 108063727 A CN108063727 A CN 108063727A
- Authority
- CN
- China
- Prior art keywords
- bucket
- tcb
- characteristic value
- flow table
- tcp
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/255—Maintenance or indexing of mapping tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种针对CPU cache优化的TCP流表查找算法,以一条cache line为整体来保存流表的信息,CPU以cache line为单位使用cache;压缩用来查找TCB的数据大小,在一条cache line中保存TCP流的信息;利用四元组和一个函数计算出一个特征值,在一个bucket中,只保存这个特征值。本发明的算法比原来要保存四元组节省许多cache line的空间;计算函数选取得当,即使只用一个字节表征特征值,也基本可以避免同一bucket中的2条不同的TCP连接计算出相同的特征值;可以根据特征值在bucket中的位置定位到某一特定TCB。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种针对CPUcache优化的TCP流表查找算法。
背景技术
现有的TCP流表的信息保存和查找机制大致是这样的:如图1所示的,利用(源IP地址,源端口号,目的IP地址,目的端口号)四元组算出一个hash值,具有相同hash值的TCP连接用一个linkedlist串接起来,linked list所用的指针保存在TCP连接信息(以下称TCB)中的。查找时同样也利用(源IP地址,源端口号,目的IP地址,目的端口号)四元组算出一个hash值,然后在相应的linked list中从头至尾用(源IP地址,源端口号,目的IP地址,目的端口号)四元组去匹配,匹配一致即为找到。
这样做的问题是当TCP连接的数目很多时,查找每遍历linked list中的一个node都有可能造成cache的miss,所需数据都需要从主内存中获取。读取内存是非常耗时的操作,这极大地降低了整个系统的性能,导致采用这种方式来保存和查找TCB的系统无法支持非常多的并发TCP连接。
发明内容
本发明的目的在于:针对现有技术中存在的上述技术问题,提供一种针对CPUcache优化的TCP流表查找算法。
本发明是通过以下技术方案实现的:一种针对CPUcache优化的TCP流表查找算法,以一条cacheline为整体来保存流表的信息,CPU以cache line为单位使用cache,压缩用来查找TCB的数据大小,在一条cache line中保存TCP流的信息;先利用四元组和一个函数计算出一个特征值,这个特征值可以只有2个字节或1个字节,在一个bucket中,只保存这个特征值;所述的四元组为源IP地址,源端口号,目的IP地址和目的端口号。
进一步,所述的查找TCB的数据大小,首先计算出这个特征值,用来和bucket中的特征值比对,如果相同,再取出真正的TCB用四元组比对。
进一步,为了避免在bucket中保存每个TCP连接所对应的TCB的地址,将一个bucket所对应的所有TCB统一分配,bucket中只保存一个指向这个TCB组的指针;Bucket中的特征值的位置与TCB在TCB组中的位置一一对应。
进一步,所述的方法步骤如下:
A、报文处理模块接收当前处理报文后,提取出报文首部信息,即四元组。然后以此四元组通过一个hash函数计算出一个hash值;
B、报文处理模块根据hash值找到hash表相应位置,取出相应表项,即bucket,所述的bucket长度为cachelinesize的整数倍;
C、处理模块再根据四元组计算出该TCP连接的特征值,然后根据这个特征值和bucket中保存的特征值进行比对,如果发现和bucket中某个特征值一致,则根据bucket中保存的TCB组的指针和此特征值位置的序号去系统内存中取出对应TCB,转至步骤D;
D、取出TCB中保存的四元组,和报文首部的四元组对比,如果一致,即为找到对应TCB;如果不一致,转至步骤C,对比下一特征值;
F、如果在一个bucket中没有找到任何匹配的项,说明此TCP连接是一个新的TCP连接,生成对应TCB数据,加入对应的bucket和TCB组中。
进一步,当一个bucket已经存满了TCP连接的信息,又有新的TCP连接想添加到这个bucket中时,再分配一个bucket,串接到原先的bucket。
进一步,当一个bucket已经存满了TCP连接的信息,又有新的TCP连接想添加到这个bucket中时,把此TCP连接的信息用传统的流表形式保存。
进一步,为了让同一个TCP流的两个方向上的数据包都能对应唯一一个bucket中的唯一特征值,hash函数和特征值计算函数在选择上必须满足以下特性:
f(IP地址1,端口号1,IP地址2,端口号2)=f(IP地址2,端口号2,IP地址1,端口号1)。
综上所述,由于采用了上述技术方案,本发明的有益效果是:本发明的算法比原来要保存四元组节省许多cacheline的空间;计算函数选取得当,即使只用一个字节表征特征值,也基本可以避免同一bucket中的2条不同的TCP连接计算出相同的特征值;可以根据特征值在bucket中的位置定位到某一特定TCB。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为现有技术现有的TCP流表的信息保存和查找机制示意框图;
图2为本发明算法的数据结构示意图;
图3为本发明bucket存满时的处理。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
如图1所示的,一种针对CPU cache优化的TCP流表查找算法,目标是在根据四元组查找TCP流表时,尽可能减少cache的miss。现代CPU一般以一条cacheline为单位来使用cache,一条cacheline的大小一般为32字节或者64字节。为充分利用cache,我们需要如下方式:
尽量以一条cacheline为整体来保存流表的信息。CPU以cacheline为单位使用cache,如果用来查找TCB的信息和其它无用的信息保存在一起,将降低cache的利用率。
尽量压缩用来查找TCB的数据的大小,以便在一条cache line中保存尽可能多的TCP流的信息。原来直接利用(源IP地址,源端口号,目的IP地址,目的端口号)四元组来匹配,现在改为先利用(源IP地址,源端口号,目的IP地址,目的端口号)四元组和一个函数计算出一个特征值,这个特征值可以只有2个字节,甚至1个字节,在一个bucket中,只保存这个特征值,比原来要保存四元组节省许多cache line的空间。查找时,首先计算出这个特征值,用来和bucket中的特征值比对,如果相同,再取出真正的TCB用四元组比对。只要计算函数选取得当,即使只用一个字节表征特征值,也基本可以避免同一bucket中的2条不同的TCP连接计算出相同的特征值。
如图2所示的数据结构,为了避免在bucket中保存每个TCP连接所对应的TCB的地址,将一个bucket所对应的所有TCB统一分配,bucket中只保存一个指向这个TCB组的指针。Bucket中的特征值的位置与TCB在TCB组中的位置一一对应,这样可以根据特征值在bucket中的位置定位到某一特定TCB。
所述方法,包括下列步骤:
A.报文处理模块接收当前处理报文后,提取出报文首部信息,即(源IP地址,源端口号,目的IP地址,目的端口号)四元组。然后以此四元组通过一个hash函数计算出一个hash值;
B.报文处理模块根据hash值找到hash表相应位置,取出相应表项(即bucket,长度为cache linesize的整数倍);
C.处理模块再根据(源IP地址,源端口号,目的IP地址,目的端口号)四元组计算出该TCP连接的特征值,然后根据这个特征值和bucket中保存的特征值进行比对,如果发现和bucket中某个特征值一致,则根据bucket中保存的TCB组的指针和此特征值位置的序号去系统内存中取出对应TCB,转至步骤D。如果不一致则继续步骤C,对比下一特征值。
D.取出TCB中保存的四元组,和报文首部的四元组对比,如果一致,即为找到对应TCB;如果不一致,转至步骤C,对比下一特征值。
F.如果在一个bucket中没有找到任何匹配的项,说明此TCP连接是一个新的TCP连接,生成对应TCB数据,加入对应的bucket和TCB组中。
当一个bucket已经存满了TCP连接的信息,又有新的TCP连接想添加到这个bucket中时,可以有2种处理方法:
1.再分配一个bucket,串接到原先的bucket后,如下图3所示。
2.把此TCP连接的信息用传统的流表形式保存。
即使是采用第2种方法,因为bucket满的情况极少发生,也不会对系统性能产生太大影响。
为了让同一个TCP流的两个方向上的数据包都能对应唯一一个bucket中的唯一特征值,hash函数和特征值计算函数在选择上必须满足以下特性:
f(IP地址1,端口号1,IP地址2,端口号2)=f(IP地址2,端口号2,IP地址1,端口号1)。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
Claims (7)
1.一种针对CPU cache优化的TCP流表查找算法,其特征在于:以一条cache line为整体来保存流表的信息,CPU以cache line为单位使用cache;压缩用来查找TCB的数据大小,在一条cache line中保存TCP流的信息;利用四元组和一个函数计算出一个特征值,这个特征值可以只有2个字节或1个字节,在一个bucket中,只保存这个特征值;所述的四元组为源IP地址,源端口号,目的IP地址和目的端口号。
2.根据权利要求1所述的针对CPU cache优化的TCP流表查找算法,其特征在于,所述的查找TCB的数据大小,首先计算出这个特征值,用来和bucket中的特征值比对,如果相同,再取出真正的TCB用四元组比对。
3.根据权利要求1所述的针对CPU cache优化的TCP流表查找算法,其特征在于,为了避免在bucket中保存每个TCP连接所对应的TCB的地址,将一个bucket所对应的所有TCB统一分配,bucket中只保存一个指向这个TCB组的指针;Bucket中的特征值的位置与TCB在TCB组中的位置一一对应。
4.根据权利要求1所述的针对CPU cache优化的TCP流表查找算法,其特征在于,所述的方法步骤如下:
A、报文处理模块接收当前处理报文后,提取出报文首部信息,即四元组。然后以此四元组通过一个hash函数计算出一个hash值;
B、报文处理模块根据hash值找到hash表相应位置,取出相应表项,即bucket,所述的bucket长度为cache line size的整数倍;
C、处理模块再根据四元组计算出该TCP连接的特征值,然后根据这个特征值和bucket中保存的特征值进行比对,如果发现和bucket中某个特征值一致,则根据bucket中保存的TCB组的指针和此特征值位置的序号去系统内存中取出对应TCB,转至步骤D;
D、取出TCB中保存的四元组,和报文首部的四元组对比,如果一致,即为找到对应TCB;如果不一致,转至步骤C,对比下一特征值;
F、如果在一个bucket中没有找到任何匹配的项,说明此TCP连接是一个新的TCP连接,生成对应TCB数据,加入对应的bucket和TCB组中。
5.根据权利要求4所述的针对CPU cache优化的TCP流表查找算法,其特征在于,当一个bucket已经存满了TCP连接的信息,又有新的TCP连接想添加到这个bucket中时,再分配一个bucket,串接到原先的bucket。
6.根据权利要求4所述的针对CPU cache优化的TCP流表查找算法,其特征在于,当一个bucket已经存满了TCP连接的信息,又有新的TCP连接想添加到这个bucket中时,把此TCP连接的信息用传统的流表形式保存。
7.根据权利要求4所述的针对CPU cache优化的TCP流表查找算法,其特征在于,为了让同一个TCP流的两个方向上的数据包都能对应唯一一个bucket中的唯一特征值,hash函数和特征值计算函数在选择上必须满足以下特性:
f(IP地址1,端口号1,IP地址2,端口号2)=f(IP地址2,端口号2,IP地址1,端口号1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711188752.5A CN108063727A (zh) | 2017-11-24 | 2017-11-24 | 一种针对CPU cache优化的TCP流表查找算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711188752.5A CN108063727A (zh) | 2017-11-24 | 2017-11-24 | 一种针对CPU cache优化的TCP流表查找算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108063727A true CN108063727A (zh) | 2018-05-22 |
Family
ID=62135123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711188752.5A Pending CN108063727A (zh) | 2017-11-24 | 2017-11-24 | 一种针对CPU cache优化的TCP流表查找算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108063727A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163010A1 (en) * | 2006-12-29 | 2008-07-03 | Paul Racunas | Fault detection |
CN102420771A (zh) * | 2011-12-28 | 2012-04-18 | 中国科学技术大学苏州研究院 | 高速网络环境中提高tcp并发连接速度的方法 |
CN103581007A (zh) * | 2013-10-28 | 2014-02-12 | 汉柏科技有限公司 | 一种报文分类及查找方法 |
CN107294855A (zh) * | 2017-05-31 | 2017-10-24 | 国家电网公司 | 一种高性能计算网络下的tcp查找优化方法 |
-
2017
- 2017-11-24 CN CN201711188752.5A patent/CN108063727A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163010A1 (en) * | 2006-12-29 | 2008-07-03 | Paul Racunas | Fault detection |
CN102420771A (zh) * | 2011-12-28 | 2012-04-18 | 中国科学技术大学苏州研究院 | 高速网络环境中提高tcp并发连接速度的方法 |
CN103581007A (zh) * | 2013-10-28 | 2014-02-12 | 汉柏科技有限公司 | 一种报文分类及查找方法 |
CN107294855A (zh) * | 2017-05-31 | 2017-10-24 | 国家电网公司 | 一种高性能计算网络下的tcp查找优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10732851B2 (en) | Hybrid memory device for lookup operations | |
US9385957B1 (en) | Flow key lookup involving multiple simultaneous cam operations to identify hash values in a hash bucket | |
US10389633B2 (en) | Hash-based address matching | |
US8924687B1 (en) | Scalable hash tables | |
JP3640978B2 (ja) | ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置 | |
US8370575B2 (en) | Optimized software cache lookup for SIMD architectures | |
US20160044143A1 (en) | Data structure and associated management routines for tcp control block (tcb) table in network stacks | |
JP2018133086A (ja) | ハイブリッドメモリーモジュール及びその動作方法 | |
US20070171911A1 (en) | Routing system and method for managing rule entry thereof | |
JP2008027450A (ja) | キャッシュ効率的なオブジェクトローダ | |
CN105022696B (zh) | 一种基于内存访问热度的大内存页整合方法 | |
US20170366502A1 (en) | IP Route Caching with Two Search Stages on Prefix Length | |
CN102567211A (zh) | Sas扩展器连接路由技术 | |
US9866480B1 (en) | Hash range lookup command | |
US9235523B2 (en) | Data processing apparatus and control method thereof | |
CN104951403A (zh) | 一种低开销且无差错的冷热数据识别方法 | |
US11868262B2 (en) | Methods and systems for distributing memory requests | |
JP4998554B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
CN110018811A (zh) | Cache数据处理方法以及Cache | |
CN108063727A (zh) | 一种针对CPU cache优化的TCP流表查找算法 | |
US7720930B2 (en) | Systems and methods using NIC-based prefetching for host TCP context lookup | |
US20170123993A1 (en) | Systems and methods for read request bypassing a last level cache that interfaces with an external fabric | |
US20140082289A1 (en) | Storing data in a system memory for a subsequent cache flush | |
CN108021674A (zh) | 一种同步云端仿真数据的多级缓存传输加速系统 | |
KR102101419B1 (ko) | 라우팅 테이블 검색 방법 및 이를 구현하는 메모리 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180522 |