CN111431806B - 一种流表处理方法和设备 - Google Patents

一种流表处理方法和设备 Download PDF

Info

Publication number
CN111431806B
CN111431806B CN202010189009.7A CN202010189009A CN111431806B CN 111431806 B CN111431806 B CN 111431806B CN 202010189009 A CN202010189009 A CN 202010189009A CN 111431806 B CN111431806 B CN 111431806B
Authority
CN
China
Prior art keywords
node
pointer
new
deleted
conflict
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.)
Active
Application number
CN202010189009.7A
Other languages
English (en)
Other versions
CN111431806A (zh
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.)
Beijing Jinganjia New Technology Co ltd
Original Assignee
Beijing Jinganjia New Technology 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 Beijing Jinganjia New Technology Co ltd filed Critical Beijing Jinganjia New Technology Co ltd
Priority to CN202010189009.7A priority Critical patent/CN111431806B/zh
Publication of CN111431806A publication Critical patent/CN111431806A/zh
Application granted granted Critical
Publication of CN111431806B publication Critical patent/CN111431806B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种流表处理方法和设备,所述流表包括组合散列表和三向链表,该三向链表还包括第一指针、第二指针、冲突节点指针,该方法包括:根据第二指针的指向信息和最小时间戳节点的时间戳确定流表中的超时节点;调整第二指针指向超时节点的下一个节点,并根据超时节点在桶中的位置地址判断是否存在超时节点的冲突节点,位置地址是根据超时节点的预设键哈希对应的流通道确定的;当存在冲突节点时,基于冲突节点指针确定超时节点在桶中的不为空的新位置地址,并根据新位置地址和所述冲突节点指针的指向信息处理所述超时节点,从而更加准确快捷的处理流表中冲突节点的问题,进一步提高了处理流表的效率。

Description

一种流表处理方法和设备
技术领域
本申请涉及数据通信技术领域,更具体地,涉及一种流表处理方法和设备。
背景技术
流(报文流):在一段时间内,一个源ip地址和目的ip地址之间传输的单向报文流,所有报文具有相同的源端口号、目的端口号、协议号和源、目的ip地址,即五元组内容相同。
流表,即用于缓存报文流的全局hash表。通常流表实现以五元组为key,流通道channel为值,在一定时间内缓存各种报文流,若有某条流超时需要删除该流表项,以防止流表过大,流表有查找、插入、删除、超时检查等处理。
hash函数所建立的key到channel的映射是多对一的映射关系,也就是说,多个不同的key经同一hash函数处理后,得到相同的channel,那么这个channel作为地址的位置上需要保存对应的所有key,而一个存储地址无法保存多个数据,这种现象称为hash冲突。
现有技术中存在基于哈希表+双向链表实现流表的处理的方式,然而现有技术这种处理方式在遇到hash冲突时还需要借助其他结构实现,例如使用线性偏移或再哈希等方法,从而造成流表处理效率不高。
因此,如何进一步提高流表的处理效率,是目前有待解决的技术问题。
发明内容
本发明提供一种流表处理方法,用以解决现有技术中流表处理效率不高的技术问题,所述流表中包括组合散列表和三向链表,所述组合散列表中包括记录所述三向链表中各节点的位置的桶、指向所述三向链表中最大时间戳节点的第一指针和指向所述三向链表中最小时间戳节点的第二指针,所述三向链表中包括指向前一节点的前向指针、指向后一节点的后向指针以及指向冲突节点的冲突节点指针该方法包括:
根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点;
调整所述第二指针指向所述超时节点的下一个节点,并根据所述超时节点在所述桶中的位置地址判断是否存在所述超时节点的冲突节点,所述位置地址是根据所述超时节点的预设键哈希对应的流通道确定的;
当存在所述冲突节点时,基于所述冲突节点指针确定所述超时节点在所述桶中的不为空的新位置地址,并根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点。
优选地,根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点,具体为:
当所述新位置地址对应的第一流通道为所述超时节点对应的第二流通道且所述冲突节点指针不为空时,将所述新位置地址赋值给所述超时节点的下一冲突节点,以覆盖所述超时节点;
当所述第一流通道为所述第二流通道且所述冲突节点指针为空时,删除所述超时节点。
优选地,根据所述超时节点在所述桶中的位置地址判断是否存在所述超时节点的冲突节点,具体为:
判断所述位置地址对应的第三流通道是否为所述第二流通道;
若是,确定不存在所述冲突节点;
若否,确定存在所述冲突节点。
优选地,根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点,具体为:
获取当前时间点位;
判断所述第二指针是否为空;
当所述第二指针不为空且所述当前时间点位与所述时间戳对应的时间点位的差值大于预设阈值时,将所述最小时间戳节点确定为所述超时节点;
当所述第二指针为空,或当所述第二指针不为空且所述差值不大于预设阈值时,确定所述最小时间戳节点不是所述超时节点。
优选地,在调整所述第二指针指向所述超时节点的下一个节点之后,还包括:
再次判断所述第二指针是否为空;
若是,将所述第一指针置空;
若否,将所述下一个节点的前向指针置空;
通过所述超时节点的预设键哈希对应的流通道确定所述位置地址。
优选地,所述方法还包括:
当接收到节点插入请求时,根据新节点的预设键哈希确定所述新节点在所述桶的新节点位置地址,所述新节点的内存在所述流表外部分配;
当所述新节点位置地址不为空时,基于所述冲突节点指针确定所述新节点为空的新的新节点位置地址,并将所述新的新节点地址赋值所述新节点;
判断所述第一指针是否为空;
若是,将所述第一指针和所述第一指针指向所述新节点;
若否,将所述第一指针指向所述新节点;
将所述三向链表的节点个数加一。
优选地,所述方法还包括:
当接收到节点删除请求时,根据待删除节点的预设键哈希确定所述待删除节点在所述桶的待删除节点位置地址;
当所述待删除节点位置地址对应的第四流通道不为空时,判断所述第四流通道是否为所述待删除节点对应的第五流通道;
当所述第四流通道不是所述第五流通道时,基于所述冲突节点指针确定所述待删除节点不为空的新的待删除节点位置地址;
当所述新的待删除节点位置地址对应的第六流通道为所述第五路通道时,判断所述第一指针是否指向所述待删除节点;
当所述第一指针指向所述待删除节点且所述第二指针也指向所述待删除节点时,将所述第一指针和所述第二指针置空;
当所述第一指针指向所述待删除节点且所述第二指针不指向所述待删除节点时,将所述第一指针指向所述待删除节点的上一个节点;
当所述第一指针不指向所述待删除节点且所述第二指针指向所述待删除节点时,将所述第二指针指向所述待删除节点的下一个节点;
当所述第一指针不指向所述待删除节点且所述第二指针不指向所述待删除节点时,将所述下一个节点的前向指针指向所述上一个节点,并将所述上一个节点的后向指针指向所述下一个节点;
判断所述冲突节点指针是否为空;
当所述冲突节点指针不为空时,将所述新的待删除节点位置地址赋值给所述待删除节点的下一冲突节点,以覆盖所述待删除节点;
当所述冲突节点指针为空时,删除所述待删除节点;
将所述三向链表的节点个数减一。
优选地,所述方法还包括:
当接收到节点查询请求时,根据待查询节点的预设键哈希确定所述桶中是否存在对应节点;
当存在所述对应节点时,判断所述对应节点的键值是否与所述待查询节点的键值相等;
当所述对应节点的键值与所述待查询节点的键值不相等时,基于所述冲突节点指针确定新对应节点;
当所述新对应节点的键值与所述待查询节点的键值相等时,判断所述第一指针是否指向所述新对应节点;
当所述第一指针指向所述新对应节点时,更新时间;
当所述第一指针不指向所述新对应节点且所述第二指针指向所述新对应节点时,将所述第二指针指向所述新对应节点的下一个节点,并将所述新对应节点的下一个节点的前向指针置空,以及将所述第一指针指向所述新对应节点;
当所述第一指针不指向所述新对应节点且所述第二指针不指向所述新对应节点时,将所述新对应节点的下一个节点的前向指针指向所述新对应节点的上一个节点,并将所述新对应节点的上一个节点的后向指针指向所述新对应节点的下一个节点,以及将所述第一指针指向所述新对应节点。
优选地,所述流表的键中包括五元组、ip版本、传输层协议、报文流方向和键哈希值,所述键的大小为40字节。
相应的,本发明还提出了一种流表处理设备,所述流表中包括组合散列表和三向链表,所述组合散列表中包括记录所述三向链表中各节点的位置的桶、指向所述三向链表中最大时间戳节点的第一指针和指向所述三向链表中最小时间戳节点的第二指针,所述三向链表中包括指向前一节点的前向指针、指向后一节点的后向指针以及指向冲突节点的冲突节点指针,所述设备包括:
确定模块,用于根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点;
调整模块,用于调整所述第二指针指向所述超时节点的下一个节点,并根据所述超时节点在所述桶中的位置判断是否存在所述超时节点的冲突节点,所述位置地址是根据所述超时节点的预设键哈希对应的流通道确定的;
处理模块,用于当存在所述冲突节点时,基于所述冲突节点指针确定所述超时节点在所述桶中不为空的新位置地址,并根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点。
与现有技术对比,本发明具有以下有益效果:
本发明公开了一种流表处理方法和设备,所述流表包括组合散列表和三向链表,该三向链表还包括第一指针、第二指针、冲突节点指针,该方法包括:根据第二指针的指向信息和最小时间戳节点的时间戳确定流表中的超时节点,调整第二指针指向超时节点的下一个节点,并根据超时节点在桶中的位置地址判断是否存在超时节点的冲突节点,位置地址是根据超时节点的预设键哈希对应的流通道确定的,当存在冲突节点时,基于冲突节点指针确定超时节点在桶中的不为空的新位置地址,并根据新位置地址和所述冲突节点指针的指向信息处理所述超时节点,从而更加快捷的处理流表中冲突节点的问题,进一步提高了处理流表的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提出的一种流表处理方法的流程示意图;
图2示出了本发明实施例中对流表执行超时检查的流程示意图;
图3示出了本发明实施例中对流表执行插入操作的流程示意图;
图4示出了本发明实施例中对流表执行删除操作的流程示意图;
图5示出了本发明实施例中对流表执行查询操作的流程示意图;
图6示出了本发明实施例提出的键key的设计示意图;
图7示出了本发明实施例提出的一种流表处理设备的结构示意图;
图8示出了本发明实施例提出的流表的设计示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案执行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如背景技术所述,现有技术中存在基于哈希表+双向链表实现流表的处理的方式,然而现有技术这种处理方式在遇到hash冲突时还需要借助其他结构实现,并会造成处理效率不高的问题。
为解决上述问题,本申请实施例提出了一种流表处理方法,所述流表包括组合散列表和三向链表,该三向链表还包括第一指针、第二指针、冲突节点指针,通过根据第二指针的指向信息和最小时间戳节点的时间戳确定流表中的超时节点,调整第二指针指向超时节点的下一个节点,并根据超时节点在桶中的位置地址判断是否存在超时节点的冲突节点,当存在冲突节点时,基于冲突节点指针确定超时节点在桶中的不为空的新位置地址,并根据新位置地址和所述冲突节点指针的指向信息处理所述超时节点,从而更加快捷的处理流表中冲突节点的问题,进一步提高了处理流表的效率。
如图1所示本发明实施例提出的一种流表处理方法的流程示意图,该方法包括以下步骤:
步骤S101,根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点。
在本申请具体的应用场景中,如图8所示,该流表是组合散列表和三向链表形成的,而该散列表中记录着三向链表中各节点的位置的桶、指向三向链表中最大时间戳节点的第一指针和指向三向链表中最小时间戳的第二指针,并且三向链表中包含了指向前一节点的前向指针、指向后一节点的后向指针以及指向冲突节点的冲突节点指针,所述桶就是流表中的哈希桶,其中前一节点的时间戳小于后一节点的时间戳。
具体的,由于时间戳越小代表着节点在流表中的时间越久,因此,可以通过时间戳来确定流表中那些已经超时的节点,其中,散列表中记录着指向三向链表中最小时间戳节点的第二指针,所以,可以通过第二指针的指向信息和最小时间戳节点对应的时间戳来确定流表中超时节点。
为了准确的判断出超时节点,在本申请优选的实施例中,根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点,具体为:
获取当前时间点位;
判断所述第二指针是否为空;
当所述第二指针不为空且所述当前时间点位与所述时间戳对应的时间点位的差值大于预设阈值时,将所述最小时间戳节点确定为所述超时节点;
当所述第二指针为空,或当所述第二指针不为空且所述差值不大于预设阈值时,确定所述最小时间戳节点不是所述超时节点。
如上所述,在判断超时节点时,需要先获取当前的时间点位,然后进而判断第二指针是否为空,如果不为空,便会计算当前时间点位和第二指针指向的最小时间戳节点的时间戳对应的时间点位的差值,当这个差值大于预设的阈值时,便将该最小时间戳节点确定为超时节点,当这个差值不大于预设的阈值时,则不将该最小时间戳确定为超时节点。
而当第二指针为空的时候,则直接确定该最小时间戳不为超时节点,节省了确定超时节点的时间,提高了确定超时节点的效率。
本领域技术人员可灵活设置不同的阈值,并根据实际情况决定判断周期或者实时监测,这并不影响本申请的保护范围。
需要说明的是,以上优选实施例的方案仅为本申请所提出的一种具体实现方式,其他确定流表中超时节点的方案均属于本申请的保护范围。
步骤S102,调整所述第二指针指向所述超时节点的下一个节点,并根据所述超时节点在所述桶中的位置地址判断是否存在所述超时节点的冲突节点,所述位置地址是根据所述超时节点的预设键哈希对应的流通道确定的。
其中,在本申请具体的应用场景中,如图6所示,流表的键中包括了五元组、ip版本、传输层协议、报文流方向和键哈希值,所有节点在建立时都会有一个预设的键哈希,并通过预设的键哈希对应的流通道生成每个节点的位置地址。
具体的,下一个节点的时间戳大于所述超时节点的时间戳,且下一个节点与所述超时节点相邻,在确定超时节点后,调整第二指针指向超时节点的下一个节点,同时根据超时节点在桶中的位置地址来判断是否存在超时节点的冲突节点,该冲突节点可能是与超时节点占用了同一个位置地址,超时节点在桶中的位置地址是该超时节点的预设键哈希对应的流通道确定的。
为了下一次判断超时节点,在本申请优选的实施例中,在调整所述第二指针指向所述超时节点的下一个节点之后,还包括:
再次判断所述第二指针是否为空;
若是,将所述第一指针置空;
若否,将所述下一个节点的前向指针置空;
通过所述超时节点的预设键哈希对应的流通道确定所述位置地址。
如上所述,在调整第二指针指向所述超时节点的下一个节点后,需要再次判断第二指针是否为空,如果为空,则将第一指针置空,如果不为空,则将下一个节点的前向指针置空,同时,通过确定好的超时节点的预设键哈希对应的流通道确定该超时节点的位置地址。
需要说明的是,以上优选实施例的方案仅为本申请所提出的一种具体实现方式,其他确定超时节点的位置地址的方案均属于本申请的保护范围。
为了准确的判断是否存在冲突节点,在本申请优选的实施例中,根据所述超时节点在所述桶中的位置地址判断是否存在所述超时节点的冲突节点,具体为:
判断所述位置地址对应的第三流通道是否为第二流通道;
若是,确定不存在所述冲突节点;
若否,确定存在所述冲突节点。
如上所述,其中,第二流通道为确定好的超时节点对应的流通道,一般情况下,冲突节点是指另一个节点可能会和超时节点使用同一个位置地址,因此,需要找出超时节点的冲突节点,首先确定出超时节点在所述桶中的位置地址,然后判断该位置地址对应的流通道也就是所述第三流通道是否为第二流通道,如果第三流通道也是第二流通道,则说明不存在冲突节点,否则确定存在所述冲突节点。
需要说明的是,以上优选实施例的方案仅为本申请提出的一种具体实现方案,其他基于节点的流通道和节点在在桶中的位置地址对应的流通道判断是否存在冲突节点的方式均属于本申请的保护范围。
步骤S103,当存在所述冲突节点时,基于所述冲突节点指针确定所述超时节点在所述桶中的不为空的新位置地址,并根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点。
具体的,在所述链表中存在冲突节点时,可以根据该冲突节点的指针重新确定超时节点在桶中的不为空的新位置地址,再根据确定出的新位置地址和冲突节点指针指向信息处理所述超时节点。
为了更准确的处理所述超时节点,在本申请优选的实施例中,根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点,具体为:
当所述新位置地址对应的第一流通道为所述超时节点对应的第二流通道且所述冲突节点指针不为空时,将所述新位置地址赋值给所述超时节点的下一冲突节点,以覆盖所述超时节点;
当所述第一流通道为所述第二流通道且所述冲突节点指针为空时,删除所述超时节点。
如上所述,在确定出的新位置地址对应的第一流通道即为超时节点对应的第二流通道且冲突节点指针不为空时,便将新位置地址赋值给超时节点的下一个冲突节点,以使其覆盖超时节点,也就是说,冲突节点指针不为空时,说明存在下一冲突节点,可将将新位置地址赋值给该下一个冲突节点,以使其覆盖超时节点。
在第一流通道即为第二流通道且所述冲突节点指针为空时,直接删除超时节点,也就是说,冲突节点指针不为空时,说明不存在下一冲突节点,可直接删除超时节点。
需要说明的是,以上优选实施例的方案仅为本申请所提出的一种具体实现方案,其他基于冲突节点确定超时节点新位置地址的方式均属于本申请的保护范围。
为了准确的进行节点插入操作,在本申请优选的实施例中,所述方法还包括:
当接收到节点插入请求时,根据新节点的预设键哈希确定所述新节点在所述桶的新节点位置地址,所述新节点的内存在所述流表外部分配;
当所述新节点位置地址不为空时,基于所述冲突节点指针确定所述新节点为空的新的新节点位置地址,并将所述新的新节点地址赋值所述新节点;
判断所述第一指针是否为空;
若是,将所述第一指针和所述第一指针指向所述新节点;
若否,将所述第一指针指向所述新节点;
将所述三向链表的节点个数加一。
如上所述,链表中的节点数并不是固定的,在接收到新节点插入请求后,会根据新节点的预设键哈希确定新节点在所述桶中的位置地址,该位置地址也是所述新节点的唯一标识标识地址以方便对新节点的查找确定,并将确定的位置地址赋值给需要插入的新节点,需要指出的是,该新节点的内存空间在流表的外部分配,减少流表的资源消耗,同时,判断流表中指向最大时间戳的第一指针是否置空,如果置空,则将第一指针和第二指针均指向新节点,如果不为空,则将第一指针指向新节点,在上述操作完成之后将三向链表中的节点个数加一。
需要说明的是,以上优选实施例的方案仅为本申请所提出的一种具体实现方案,其他将新节点插入至链表中的方式均属于本申请的保护范围。
为了准确的进行节点删除操作,在本申请优选的实施例中,所述方法还包括:
当接收到节点删除请求时,根据待删除节点的预设键哈希确定所述待删除节点在所述桶的待删除节点位置地址;
当所述待删除节点位置地址对应的第四流通道不为空时,判断所述第四流通道是否为所述待删除节点对应的第五流通道;
当所述第四流通道不是所述第五流通道时,基于所述冲突节点指针确定所述待删除节点不为空的新的待删除节点位置地址;
当所述新的待删除节点位置地址对应的第六流通道为所述第五路通道时,判断所述第一指针是否指向所述待删除节点;
当所述第一指针指向所述待删除节点且所述第二指针也指向所述待删除节点时,将所述第一指针和所述第二指针置空;
当所述第一指针指向所述待删除节点且所述第二指针不指向所述待删除节点时,将所述第一指针指向所述待删除节点的上一个节点;
当所述第一指针不指向所述待删除节点且所述第二指针指向所述待删除节点时,将所述第二指针指向所述待删除节点的下一个节点;
当所述第一指针不指向所述待删除节点且所述第二指针不指向所述待删除节点时,将所述下一个节点的前向指针指向所述上一个节点,并将所述上一个节点的后向指针指向所述下一个节点;
判断所述冲突节点指针是否为空;
当所述冲突节点指针不为空时,将所述新的待删除节点位置地址赋值给所述待删除节点的下一冲突节点,以覆盖所述待删除节点;
当所述冲突节点指针为空时,删除所述待删除节点;
将所述三向链表的节点个数减一。
具体的,在接收到节点删除请求后,首先根据待删除节点对应的预设键哈希确定待删除节点在桶中的位置地址,该位置地址对应的流通道为第四流通道,待删除节点对应的流通道为第五流通道,在第四通道不为空的时候判断第四流通道是否即为第五流通道,在第四流通道不为第五流通道时,便根据链表中的冲突节点指针确定所述待删除节点不为空的新的待删除节点位置地址,判断新的待删除节点位置地址对应的第六流通道是否即为待删除节点对应的第五流通道:
若第六流通道即为第五流通道时,判断流表中指向最大时间戳的第一指针是否指向待删除节点,根据判断结果分为以下四种情况:
1、在第一指针和第二指针均指向待删除节点时,说明链表中只有这一个节点,则将该第一指针和第二指针置空。
2、在第一指针指向待删除节点但第二指针不指向待删除节点时,说明待删除节点只是最后一个节点,而不是第一个节点,将该第一指针指向待删除节点的上一个节点。
3、在第一指针不指向待删除节点且第二指针指向待删除节点时,说明待删除节点是链表中的第一个节点但不是最后一个节点,则将第二指针指向待删除节点的下一个节点。
4、在第一指针和第二指针均不指向待删除节点时,说明待删除节点是链表中某个中间节点,则调整指针去掉该节点,将待删除节点的下一个节点的前向指针指向待删除节点的上一个节点,将待删除节点的上一个节点的后向指针指向待删除节点的下一个节点,其中,下一个节点的时间戳大于待删除节点的时间戳,上一个节点的时间戳小于待删除节点的时间戳。
再次判断冲突节点指针是否为空,在冲突节点指针为空的时候,便将待删除节点执行删除操作,在冲突节点指针不为空的时候,将确定好的新的待删除节点位置地址赋值给待删除节点的下一冲突节点,以便使所述下一冲突节点覆盖待删除节点以达到删除节点的目的。
为了准确进行节点查询操作,在本申请优选的实施例中,查询方法包括:
当接收到节点查询请求时,根据待查询节点的预设键哈希确定所述桶中是否存在对应节点;
当存在所述对应节点时,判断所述对应节点的键值是否与所述待查询节点的键值相等;
当所述对应节点的键值与所述待查询节点的键值不相等时,基于所述冲突节点指针确定新对应节点;
当所述新对应节点的键值与所述待查询节点的键值相等时,判断所述第一指针是否指向所述新对应节点;
当所述第一指针指向所述新对应节点时,更新时间;
当所述第一指针不指向所述新对应节点且所述第二指针指向所述新对应节点时,将所述第二指针指向所述新对应节点的下一个节点,并将所述新对应节点的下一个节点的前向指针置空,以及将所述第一指针指向所述新对应节点;
当所述第一指针不指向所述新对应节点且所述第二指针不指向所述新对应节点时,将所述新对应节点的下一个节点的前向指针指向所述新对应节点的上一个节点,并将所述新对应节点的上一个节点的后向指针指向所述新对应节点的下一个节点,以及将所述第一指针指向所述新对应节点。
如上所述,流表有时会接收到节点查询请求,这时,会根据待查询节点的预设键哈希来获取在所述桶中的对应节点,如果对应节点为空,则直接返回空。
若所述桶中存在着对应节点,则判断该对应节点的键值是否与待查询节点的键值相等,当对应节点的键值和待查询节点的键值不相等,便基于冲突节点指针重新确定一个新的对应节点,当对应节点的键值与待查询节点的键值相等,便判断第一指针指向着对应节点,第一指针是否指向对应节点分为以下三种情况:
1、当判断出第一指针指向桶中的对应节点时,直接更新时间即可。
2、当判断出第一指针不指向桶中的对应节点时,且第二指针指向对应节点时,将第二指针调整为指向对应节点的下一个节点,同时,将对应节点的下一个节点的前向指针置空,以及将第一指针指向对应节点。
3、当第一指针不指向桶中的对应节点且第二指针也不指向对应节点时,将对应节点的下一个节点的前向指针指向对应节点的上一个节点,并将对应节点的上一个节点的后向指针指向对应节点的下一个节点,以及将第一指针指向对应节点,其中,下一个节点的时间戳大于对应节点的时间戳,上一个节点的时间戳小于对应节点的时间戳。
通过应用以上技术方案,根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点,调整所述第二指针指向所述超时节点的下一个节点,并根据所述超时节点在所述桶中的位置地址判断是否存在所述超时节点的冲突节点,所述位置地址是根据所述超时节点的预设键哈希对应的流通道确定的,当存在所述冲突节点时,基于所述冲突节点指针确定所述超时节点在所述桶中的不为空的新位置地址,并根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点,从而更加准确快捷的处理流表中冲突节点的问题,进一步提高了处理流表的效率。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案执行说明。
本发明实施例提出了一种流表处理方法,通过获取当前时间,然后判断指向链表头部指针front指向的节点是否超时,在头部指针指向节点超时时,创建临时指针指向头部指针front,并通过临时指针的键哈希key_hash找到该节点在桶中的位置channel_ptr所在节点channel是否为空,在不为空的时候判断是否有下一冲突节点,如果没有下一冲突节点则删除该节点,解决链表中超时节点的处理问题。
需要特别说明的是,本申请具体实施例中,对流表和流表的键还有着特殊设计,具体设计调整如下:
1、关于流表中键key的设计
流表中的键一般是包含五元组,这五元组分别是源ip、源端口号、目的ip、目的端口号和协议,而本申请中的key除了这五元组外,还包含了版本、流方向以及键哈希key_hash等字段,通过此项设计,便可将ipv4、ipv6、tcp、udp等统一在一张表中,并且这样设计能方便区分流的方向,并且,key中部分字段利用联合体union共享内存的方式执行优化,使其内存占用仅为40字节,如图6所示,其中v(version)表示ip版本,p(protocol)表示传输层协议,d(direction)表示流的方向,它们各占一个位;key_hash表示键的哈希值,占29位。
2、关于流表的设计
如图8所示,本申请具体实施例中的流表设计是通过组合散列表和三向链表来实现的,散列表包含了桶buckets、桶容量bucket_num、节点个数size、指向三向链表头的头部指针front和指向三向链表尾的尾部指针back,其中,back指针指向的数据最新,front指向的数据最旧,三向链表是在双向链表(next、prev)的基础上增加指向冲突节点的第三个指针hnext指针,同时,链表中的节点除了指针外,还包含这key和时间戳timestamp。
上述方法具体步骤如图2所示:
步骤S201、获取当前时间。
步骤S202、判断头部指针是否为空。
具体的,在本申请具体实施例中,头部指针front指针是指向链表头部节点的指针,也就是整个链表中timestamp最小的节点,即为最旧节点,若为空执行步骤S203,若不为空则执行步骤S204。
步骤S203、在步骤S202处判断出front指针为空的时候,便不再执行后续操作,直接返回,因为front指针为空的时候代表着没有最旧节点。
步骤S204、判断front指针指向的节点是否超时,若是执行步骤S205,若否执行步骤S203。
具体的,当front指针不为空的时候,便判断该指针指向的节点是否超时:cur_time-front->timestamp是否大于timeout。
步骤S205、创建临时指针the_channel指向front,同时调整front指针指向下一个节点。
具体的,因为链表中需要在对节点执行操作后的访问更新,若front指向的节点已超时,则创建临时指针the_channel指向front,同时调整front指针指向下一个节点:front=front->next。
步骤S206、判断头部指针front是否为空,若是,执行步骤S207;若否,执行步骤S208。
具体的,此步骤是为了确定链表中的节点数是单个还是多个,若判断出front指针为空则执行步骤S207,若判断出front指针不为空则执行步骤S208。
步骤S207、链表尾部指针back置空。
具体的,在front指针为空时,说明链表中的节点数只有一个,便将指向三向链表尾部的back指针置空,执行步骤S209。
步骤S208、将front->prev置空,执行步骤S209。
具体的,在front指针不为空的时候,说明链表中的节点数不止一个,则将front指针指向的下一个节点的prev指针置空,表示该下一个节点不再有前驱。
步骤S209、通过临时指针the_channel的key_hash找到该节点在桶中的位置:channel_ptr=&buckets[front->key_hash]。
步骤S210、该位置channel_ptr所在节点channel是否为空,若是执行步骤S202,若否执行步骤S211。
步骤S211、channel是否为要删除的超时节点the_channnel,若是,执行步骤S213,若否,执行步骤S212。
步骤S212、调整位置channel_ptr指向下一冲突节点,并重新执行S210。
当channel不是要删除的超时节点the_channnel,说明存在冲突节点,调整位置channel_ptr指向下一个冲突节点:channel_ptr=&channel->hnext,重新执行S210。
步骤S213、是否存在下一个冲突节点,若是,执行步骤S214,若否,执行步骤S215。
具体的,当确定出的节点channel即为超时节点the_channnel时,判断是否还存在着下一个冲突节点:channel->hnext是否为空,若存在下一个冲突节点,执行步骤S214,若不存在下一个冲突节点,则执行步骤S215。
步骤S214、将下一个冲突节点覆盖当前节点。
具体的,当前节点即为超时节点,将一个冲突节点覆盖当前节点*channel_ptr=channel->hext,便相当于将超时节点清理掉,然后执行步骤S216。
步骤S215、删除该节点。
步骤S216、节点个数size减1,继续执行步骤S202。
为了准确进行节点插入操作,如图3所示为本发明实施例中对流表执行插入操作的流程示意图。
具体步骤如下:
步骤S301、接收插入请求。
步骤S302、通过key_hash获取new_channel所在的桶buckets的位置地址。
具体的,通过key_hash获取new_channel所在的桶buckets的位置地址:channel_ptr=&buckets[new_channel->key_hash],新节点在插入链表中时,都会有一个预设的key_hash,而新节点的流通道new_channel内存在函数外部分配,通过key_hash获取new_channel所在桶buckets的位置地址。
步骤S303、该位置地址所在的节点channel是否为空,若是,执行步骤S304,若否,执行步骤S305。
具体的该步骤是为了查找是否存在与新节点对应的冲突节点,若不为空,执行步骤S304,若为空,执行步骤S305。
步骤S304、将channel_ptr指向冲突节点的地址,然后执行步骤S303。
不为空则说明存在哈希冲突节点,将channel_ptr指向冲突节点的地址:channel_ptr=&channel->hnext,重新执行步骤S303
步骤S305、将此位置赋值新节点。
直到channel_ptr所在的节点channel为空后,此位置赋值新节点:*channel_ptr=new_channel
步骤S306、链表尾部指针back是否为空,若是,执行步骤步骤S308,若否,执行步骤S307。
步骤S307、将新节点追加到back后。然后执行步骤S309。
若不为空,则将新节点追加到back后:back->next=new_channel;new_channel->prev=back;back=new_channel。
步骤S308、令back指向new_channel,同时front也指向新节点。
步骤S309、增加节点个数size=size+1。
为了准确进行节点删除操作,如图4所示为发明实施例中对流表执行删除操作的流程示意图:
具体步骤如下:
步骤S401、接收删除请求。
步骤S402、通过要删除节点old_channel的key_hash获取所在的桶的位置。
通过要删除节点old_channel的key_hash获取所在的桶的位置地址:channel_ptr=&buckets[old_channel->key_hash]。
步骤S403、该位置地址所在的节点channel是否为空,若是执行步骤S404,若否执行步骤S405。
步骤S404、删除失败。
步骤S405、channel是否为要删除节点old_channel,若是执行步骤S407,若否执行步骤S406。
具体的,当channel不是要删除节点old_channel时,则说明存在hash冲突节点,执行步骤S406,当channel是要删除节点old_channel时,执行步骤S407。
步骤S406、将channel_ptr指向冲突节点的地址,然后执行步骤S403。
若不是old_channel,则说明存在哈希冲突节点,将新地址指向冲突节点:channel_ptr=&channel->hnext,重新执行步骤S403。
步骤S407、是否为back指针指向的节点,若是执行步骤S409,若否执行步骤S408。
具体的,当back指针指向要删除节点时,说明channel是最后一个节点,执行步骤S409,当back指针没有指向要删除节点时,执行步骤S408。
步骤S408、在不是back指针指向的节点时,是否为front指针指向的节点,若是执行步骤S412,若否执行步骤S413。
步骤S409、在是back指针指向的节点时,是否为front指针指向的节点。
具体的,如果是front指向的节点,说明整个链表中只有这一个节点,则执行步骤S410,如果不是front指针指向的节点,则执行步骤S411。
步骤S410、back指针和front指针全部置空,然后执行步骤S414。
步骤S411、back指向上一个节点,然后执行步骤S414。
若channel只是最后一个节点,而不是第一个节点,则令back指向上一个节点:back=back->prev;back->next=null。
步骤S412、将front指针指向下一个节点,然后执行步骤S414。
若channel是front指向的节点,说明channel是链表中的第一个节点但不是最后一个节点,则将front指针指向下一个节点:front=front->next;front->prev=null。
步骤S413、调整指针去掉该节点。
channel既不是back指向的节点,也不是front指向的节点,说明channel是链表中某个中间节点,则调整指针去掉该节点:channel->next->prev=channel->prev;channel->prev->next=channel->next。
步骤S414、是否存在下一个冲突节点,若是,执行步骤S416,若否执行步骤S415。
步骤S415、删除channel节点,然后执行步骤S417。
步骤S416、覆盖当前节点。
当存在下一个冲突节点时,直接将下一个冲突节点覆盖当前节点:*channel_ptr=channel->hnext
步骤S417、节点数size减一。
为了准确进行节点查询操作,现结合本申请对流表执行查询操作的应用场景,对本发明的技术方案进行说明,如图5所示:
具体步骤如下:
步骤S501、接收查询请求。
步骤S502、通过key_hash获取new_channel所在的桶backets的位置地址。
步骤S503、节点是否存在,若是执行步骤S505,若否执行步骤S504。
具体的、通过new_channel在桶backets的位置可以获取桶中对应的节点,若该节点不存在,执行步骤S504,若该节点存在,执行步骤S505。
步骤S504、返回空。
步骤S505、节点的key是否与要查询的key相等,若相等,执行步骤S507;若不相等,执行步骤S506。
步骤S506、将channel_ptr指向冲突节点的地址,然后执行步骤S503。
步骤S507、是否等于back指向的节点,若是执行步骤S508,若否执行步骤S509。
当位置地址对应的节点的key等于要查询节点的key且也是back指针指向的节点,执行步骤S508,当位置地址对应的节点的key等于要查询节点的key且不是back指针指向的节点,执行步骤S509。
步骤S508、更新时间。
步骤S509、是否等于front指向的节点,若是,执行步骤S511,若否执行步骤S510。
步骤S510、调整节点指针,将当前节点的下一个节点的prev指向上一个节点,将上一个节点的next指向下一个节点,然后执行步骤S512。
步骤S511、将front指针指向下一个节点,并设置该节点的prev指针为空。
步骤S512、调整back指针指向当前节点。
为了达到以上技术目的,本申请实施例还提出了一种流表处理设备,所述流表中包括组合散列表和三向链表,所述组合散列表中包括记录所述三向链表中各节点的位置的桶、指向所述三向链表中最大时间戳节点的第一指针和指向所述三向链表中最小时间戳节点的第二指针,所述三向链表中包括指向前一节点的前向指针、指向后一节点的后向指针以及指向冲突节点的冲突节点指针,如图7所示,所述设备包括:
确定模块701,用于根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点;
调整模块702,用于调整所述第二指针指向所述超时节点的下一个节点,并根据所述超时节点在所述桶中的位置判断是否存在所述超时节点的冲突节点,所述位置地址是根据所述超时节点的预设键哈希对应的流通道确定的;
处理模块703,用于当存在所述冲突节点时,基于所述冲突节点指针确定所述超时节点在所述桶中不为空的新位置地址,并根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请执行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案执行修改,或者对其中部分技术特征执行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种流表处理方法,其特征在于,所述流表中包括组合散列表和三向链表,所述组合散列表中包括记录所述三向链表中各节点的位置的桶、指向所述三向链表中最大时间戳节点的第一指针和指向所述三向链表中最小时间戳节点的第二指针,所述三向链表中包括指向前一节点的前向指针、指向后一节点的后向指针以及指向冲突节点的冲突节点指针,所述方法包括:
根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点;
调整所述第二指针指向所述超时节点的下一个节点,并根据所述超时节点在所述桶中的位置地址判断是否存在所述超时节点的冲突节点,所述位置地址是根据所述超时节点的预设键哈希对应的流通道确定的;
当存在所述冲突节点时,基于所述冲突节点指针确定所述超时节点在所述桶中的不为空的新位置地址,并根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点。
2.如权利要求1所述的方法,其特征在于,根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点,具体为:
当所述新位置地址对应的第一流通道为所述超时节点对应的第二流通道且所述冲突节点指针不为空时,将所述新位置地址赋值给所述超时节点的下一冲突节点,以覆盖所述超时节点;
当所述第一流通道为所述第二流通道且所述冲突节点指针为空时,删除所述超时节点。
3.如权利要求2所述的方法,其特征在于,根据所述超时节点在所述桶中的位置地址判断是否存在所述超时节点的冲突节点,具体为:
判断所述位置地址对应的第三流通道是否为所述第二流通道;
若是,确定不存在所述冲突节点;
若否,确定存在所述冲突节点。
4.如权利要求1所述的方法,其特征在于,根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点,具体为:
获取当前时间点位;
判断所述第二指针是否为空;
当所述第二指针不为空且所述当前时间点位与所述时间戳对应的时间点位的差值大于预设阈值时,将所述最小时间戳节点确定为所述超时节点;
当所述第二指针为空,或当所述第二指针不为空且所述差值不大于预设阈值时,确定所述最小时间戳节点不是所述超时节点。
5.如权利要求2所述的方法,其特征在于,在调整所述第二指针指向所述超时节点的下一个节点之后,还包括:
再次判断所述第二指针是否为空;
若是,将所述第一指针置空;
若否,将所述下一个节点的前向指针置空;
通过所述超时节点的预设键哈希对应的流通道确定所述位置地址。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到节点插入请求时,根据新节点的预设键哈希确定所述新节点在所述桶的新节点位置地址,所述新节点的内存在所述流表外部分配;
当所述新节点位置地址不为空时,基于所述冲突节点指针确定所述新节点为空的新的新节点位置地址,并将所述新的新节点地址赋值所述新节点;
判断所述第一指针是否为空;
若是,将所述第一指针和所述第二指针指向所述新节点;
若否,将所述第一指针指向所述新节点;
将所述三向链表的节点个数加一。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到节点删除请求时,根据待删除节点的预设键哈希确定所述待删除节点在所述桶的待删除节点位置地址;
当所述待删除节点位置地址对应的第四流通道不为空时,判断所述第四流通道是否为所述待删除节点对应的第五流通道;
当所述第四流通道不是所述第五流通道时,基于所述冲突节点指针确定所述待删除节点不为空的新的待删除节点位置地址;
当所述新的待删除节点位置地址对应的第六流通道为所述第五流通道时,判断所述第一指针是否指向所述待删除节点;
当所述第一指针指向所述待删除节点且所述第二指针也指向所述待删除节点时,将所述第一指针和所述第二指针置空;
当所述第一指针指向所述待删除节点且所述第二指针不指向所述待删除节点时,将所述第一指针指向所述待删除节点的上一个节点;
当所述第一指针不指向所述待删除节点且所述第二指针指向所述待删除节点时,将所述第二指针指向所述待删除节点的下一个节点;
当所述第一指针不指向所述待删除节点且所述第二指针不指向所述待删除节点时,将所述下一个节点的前向指针指向所述上一个节点,并将所述上一个节点的后向指针指向所述下一个节点;
判断所述冲突节点指针是否为空;
当所述冲突节点指针不为空时,将所述新的待删除节点位置地址赋值给所述待删除节点的下一冲突节点,以覆盖所述待删除节点;
当所述冲突节点指针为空时,删除所述待删除节点;
将所述三向链表的节点个数减一。
8.如权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到节点查询请求时,根据待查询节点的预设键哈希确定所述桶中是否存在对应节点;
当存在所述对应节点时,判断所述对应节点的键值是否与所述待查询节点的键值相等;
当所述对应节点的键值与所述待查询节点的键值不相等时,基于所述冲突节点指针确定新对应节点;
当所述新对应节点的键值与所述待查询节点的键值相等时,判断所述第一指针是否指向所述新对应节点;
当所述第一指针指向所述新对应节点时,更新时间;
当所述第一指针不指向所述新对应节点且所述第二指针指向所述新对应节点时,将所述第二指针指向所述新对应节点的下一个节点,并将所述新对应节点的下一个节点的前向指针置空,以及将所述第一指针指向所述新对应节点;
当所述第一指针不指向所述新对应节点且所述第二指针不指向所述新对应节点时,将所述新对应节点的下一个节点的前向指针指向所述新对应节点的上一个节点,并将所述新对应节点的上一个节点的后向指针指向所述新对应节点的下一个节点,以及将所述第一指针指向所述新对应节点。
9.如权利要求1所述的方法,其特征在于,所述流表的键中包括五元组、ip版本、传输层协议、报文流方向和键哈希值,所述键的大小为40字节。
10.一种流表处理设备,其特征在于,所述流表中包括组合散列表和三向链表,所述组合散列表中包括记录所述三向链表中各节点的位置的桶、指向所述三向链表中最大时间戳节点的第一指针和指向所述三向链表中最小时间戳节点的第二指针,所述三向链表中包括指向前一节点的前向指针、指向后一节点的后向指针以及指向冲突节点的冲突节点指针,所述设备包括:
确定模块,用于根据所述第二指针的指向信息和所述最小时间戳节点的时间戳确定所述流表中的超时节点;
调整模块,用于调整所述第二指针指向所述超时节点的下一个节点,并根据所述超时节点在所述桶中的位置判断是否存在所述超时节点的冲突节点,所述位置地址是根据所述超时节点的预设键哈希对应的流通道确定的;
处理模块,用于当存在所述冲突节点时,基于所述冲突节点指针确定所述超时节点在所述桶中不为空的新位置地址,并根据所述新位置地址和所述冲突节点指针的指向信息处理所述超时节点。
CN202010189009.7A 2020-03-18 2020-03-18 一种流表处理方法和设备 Active CN111431806B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010189009.7A CN111431806B (zh) 2020-03-18 2020-03-18 一种流表处理方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010189009.7A CN111431806B (zh) 2020-03-18 2020-03-18 一种流表处理方法和设备

Publications (2)

Publication Number Publication Date
CN111431806A CN111431806A (zh) 2020-07-17
CN111431806B true CN111431806B (zh) 2022-07-08

Family

ID=71549529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010189009.7A Active CN111431806B (zh) 2020-03-18 2020-03-18 一种流表处理方法和设备

Country Status (1)

Country Link
CN (1) CN111431806B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112632079B (zh) * 2020-12-30 2023-07-21 联想未来通信科技(重庆)有限公司 一种数据流标识的查询方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1929451A (zh) * 2006-09-29 2007-03-14 华为数字技术有限公司 一种解决Hash冲突的方法及装置
CN101241492A (zh) * 2007-02-06 2008-08-13 中兴通讯股份有限公司 具有容量动态控制功能的内存数据存储装置及其实现方法
CN102682116A (zh) * 2012-05-14 2012-09-19 中兴通讯股份有限公司 基于哈希表的表项处理方法及其装置
CN103064948A (zh) * 2012-12-27 2013-04-24 中国航空工业集团公司第六三一研究所 基于散列链表的内容寻址方法及相应的存储器电路
CN106789697A (zh) * 2016-12-01 2017-05-31 北京锐安科技有限公司 一种提高大批量网络流表老化效率的方法及装置
CN107045530A (zh) * 2017-01-20 2017-08-15 华中科技大学 一种将对象存储系统实现为本地文件系统的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040001492A1 (en) * 2002-07-01 2004-01-01 Johnson Erik J. Method and system for maintaining a MAC address filtering table
US7653670B2 (en) * 2005-11-28 2010-01-26 Nec Laboratories America, Inc. Storage-efficient and collision-free hash-based packet processing architecture and method
US9003247B2 (en) * 2011-04-28 2015-04-07 Hewlett-Packard Development Company, L.P. Remapping data with pointer

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1929451A (zh) * 2006-09-29 2007-03-14 华为数字技术有限公司 一种解决Hash冲突的方法及装置
CN101241492A (zh) * 2007-02-06 2008-08-13 中兴通讯股份有限公司 具有容量动态控制功能的内存数据存储装置及其实现方法
CN102682116A (zh) * 2012-05-14 2012-09-19 中兴通讯股份有限公司 基于哈希表的表项处理方法及其装置
CN103064948A (zh) * 2012-12-27 2013-04-24 中国航空工业集团公司第六三一研究所 基于散列链表的内容寻址方法及相应的存储器电路
CN106789697A (zh) * 2016-12-01 2017-05-31 北京锐安科技有限公司 一种提高大批量网络流表老化效率的方法及装置
CN107045530A (zh) * 2017-01-20 2017-08-15 华中科技大学 一种将对象存储系统实现为本地文件系统的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
流量自适应的多维度包分类方法研究;万云凯等;《计算机学报》;20160718;全文 *

Also Published As

Publication number Publication date
CN111431806A (zh) 2020-07-17

Similar Documents

Publication Publication Date Title
US10021026B2 (en) Incremental update of a shape graph
US7774538B2 (en) Method for ternary contents address memory table management
US6968393B1 (en) Method and apparatus for an attribute oriented routing update
US8397025B2 (en) Apparatus and method for determining a cache line in an N-way set associative cache using hash functions
CN106789730B (zh) 分片报文的处理方法及装置
US20140301394A1 (en) Exact match hash lookup databases in network switch devices
US20040039845A1 (en) Partially-ordered cams used in ternary hierarchical address searching/sorting
EP1126666A2 (en) A packet flow control apparatus and a method for controlling the same
CN100448225C (zh) 一种无需ip分片重组实现动态流分类的装置和方法
US20040001492A1 (en) Method and system for maintaining a MAC address filtering table
US9270519B2 (en) Address translation device, address translation method, and computer product
CN111431806B (zh) 一种流表处理方法和设备
CN107147581B (zh) 路由表项的维护方法和装置
CN112235436A (zh) 网络地址转换规则匹配方法及设备
CN104778193A (zh) 数据去重方法及装置
US20070088854A1 (en) Apparatus for searching TCP and UDP sockets
CN112565045A (zh) Evpn中报文转发方法、装置、设备及存储介质
US6795816B2 (en) Method and device for translating telecommunication network IP addresses by a leaky-controlled memory
CN112565091A (zh) 一种报文转发方法、装置、存储介质及终端设备
US8924640B2 (en) Dynamic allocation of records to clusters in a ternary content addressable memory
CN107870925B (zh) 一种字符串过滤方法和相关装置
US20190260676A1 (en) Detecting stale memory addresses for a network device flow cache
CN111641555B (zh) 一种路由收敛方法及装置
JP6344348B2 (ja) バッファ制御装置、通信ノード、及び中継装置
CN112286966A (zh) 一种数据流处理、恢复方法以及设备和存储介质

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
GR01 Patent grant
GR01 Patent grant