CN108063727A - 一种针对CPU cache优化的TCP流表查找算法 - Google Patents

一种针对CPU cache优化的TCP流表查找算法 Download PDF

Info

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
Application number
CN201711188752.5A
Other languages
English (en)
Inventor
马勇
殷德军
陈昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi South China New Energy Electric Technology Development Co Ltd
Original Assignee
Wuxi South China New Energy Electric Technology Development Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuxi South China New Energy Electric Technology Development Co Ltd filed Critical Wuxi South China New Energy Electric Technology Development Co Ltd
Priority to CN201711188752.5A priority Critical patent/CN108063727A/zh
Publication of CN108063727A publication Critical patent/CN108063727A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/255Maintenance or indexing of mapping tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation 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

一种针对CPU cache优化的TCP流表查找算法
技术领域
本发明涉及计算机技术领域,尤其涉及一种针对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)。
CN201711188752.5A 2017-11-24 2017-11-24 一种针对CPU cache优化的TCP流表查找算法 Pending CN108063727A (zh)

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)

* Cited by examiner, † Cited by third party
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查找优化方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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