更新转发表的方法、硬件加速器、OVS和服务器与流程

文档序号:17896483发布日期:2019-06-13 16:01阅读:259来源:国知局
本申请涉及通信领域,尤其涉及一种一种更新转发表的方法以及实现所述方法的硬件加速器、开放虚拟交换机和服务器。
背景技术
::随着物联网发展、大数据汇聚、数据中心兴起,网络流量带宽越来越大,提高用于实现网络流量交换的网络交换设备的转发效率变得越来越重要。支持开放流(openflow)协议的开放虚拟交换机(openvswitch,ovs)用于在开源的虚拟化平台中执行网络交换设备的功能,因此,同样需要提高ovs的转发速率。技术实现要素:本申请实施例提供了一种更新转发表的方法、硬件加速器、ovs和服务器,用于提高ovs的转发效率。本发明第一方面提供了一种更新转发表的方法。该方法应用于开放虚拟交换机ovs中,所述ovs包括处理器和硬件加速器,所述硬件加速器上存储有保护缓存表和临时缓存表,所述保护缓存表用于存储大象流对应的转发表项,所述临时缓存表用于存储非大象流对应的转发表项。所述硬件加速器接收第一报文,解析所述第一报文以获取所述第一报文的至少一个待匹配字段,所述至少一个待匹配字段用于识别所述第一报文所属的第一数据流。所述硬件加速器根据所述第一报文的至少一个待匹配字段查找所述保护缓存表;当没有从所述保护缓存表中找到所述第一数据流对应的保护缓存表项时,所述硬件加速器根据所述第一报文的至少一个待匹配字段查找所述临时缓存表得到所述第一数据流对应的临时缓存表项。所述硬件加速器根据所述第一数据流对应的临时缓存表项转发所述第一报文。所述硬件加速器统计所述第一数据流的报文数,并确定所述第一数据流的报文数是否大于设定的阈值。当所述第一数据流的报文数大于设定的阈值时,所述硬件加速器根据所述第一数据流对应的临时缓存表项更新所述保护缓存表和所述临时缓存表。本发明实施例中,将用于存储大象流的转发表项的保护缓存表存储在硬件加速器上,使得属于大象流的报文不经过处理器就被转发,提高了大象流的处理效率。进一步地,本发明实施例中,通过在临时缓存表中记录非大象流的转发表项,并统计临时缓存表中记录的数据流的报文数,可以准确识别大象流。故本申请实施例提供的硬件加速器和更新转发表的方法可以提高ovs的转发效率。在第一方面的第一实施方式中,所述硬件加速器根据所述第一数据流对应的临时缓存表项更新所述保护缓存表和所述临时缓存表包括:所述硬件加速器将所述第一数据流对应的临时缓存表项写入所述保护缓存表作为所述第一数据流对应的保护缓存表项;以及所述硬件加速器从所述临时缓存表中删除所述临时缓存表项。通过上述方式,使用保护缓存表存储大象流,使用临时缓存表存储非大象流,并且一旦将临时缓存表中的表项写入保护缓存表,就删除临时缓存表中的相应表项,可以节约硬件加速器的存储空间。在第一方面的第二实施方式中,所述硬件加速器还接收第二报文;所述第二报文为所述第一数据流的后续报文。所述硬件加速器解析所述第二报文以获取所述第二报文的至少一个待匹配字段。所述硬件加速器根据所述第二报文的至少一个待匹配字段查找所述保护缓存表得到所述第一数据流对应的保护缓存表项。所述硬件加速器根据所述第一数据流对应的保护缓存表项转发所述第二报文。通过上述方式,当保护缓存表中存储有大象流对应的表项时,硬件加速器可以直接根据该表项转发属于该大象流的报文,提高了ovs的转发效率。在第一方面的第三实施方式中,当满足预设条件时,所述硬件加速器从所述保护缓存表中删除所述第一数据流对应的保护缓存表项;所述预设条件为以下任意一个:所述第一数据流对应的保护缓存表项为所述保护缓存表中被最早写入的表项;所述第一数据流对应的保护缓存表项为所述保护缓存表中最长时间未被使用的表项;所述第一数据流对应的保护缓存表项为所述保护缓存表中设定时长内被使用次数最少的表项。通过上述方式,硬件加速器实时更新保护缓存表的表项,使保护缓存表中始终记录最新最活跃的大象流,最大限度提高保护缓存表的命中率,提高ovs的效率。在第一方面的第四实施方式中,所述从所述保护缓存表中删除所述第一数据流对应的保护缓存表项之前,所述硬件加速器将所述第一数据流对应的保护缓存表项重新写入所述临时缓存表,作为所述第一数据流的临时缓存表项。进一步地,硬件加速器还可以为该第一数据流设置一个较大的初始计数。通过上述方式,当硬件加速器再次接收到该第一数据流的后续报文时,可以很快将该第一数据流再次确认为大象流,并将该第一数据流对应的临时缓存表项再次写入保护缓存表。在第一方面的第五实施方式中,所述硬件加速器提供n个哈希函数,n大于等于2,所述硬件加速器统计所述第一数据流的报文数包括:所述硬件加速器将所述至少一个待匹配字段分别应用于所述n个哈希函数得到n个哈希值,所述n个哈希值中每个哈希值分别对应n个计数器中的一个计数器,所述硬件加速器根据所述第一报文的至少一个匹配字段将所述n个计数器的值分别加1,得到更新后的n个计数器的值,将所述更新后的n个计数器的值的最小值作为所述第一数据流的报文数。通过上述方式,硬件加速器可以精确统计第一数据流的报文数,并识别出大象流。在第一方面的第六实施方式中,所述硬件加速器接收第三报文;所述硬件加速器解析所述第三报文以获取所述第三报文的至少一个待匹配字段;所述至少一个待匹配字段用于识别所述第三报文所属的第二数据流。所述硬件加速器根据所述第三报文的至少一个待匹配字段查找所述保护缓存表;当所述保护缓存表中不存在所述第二数据流对应的保护缓存表项时,所述硬件加速器查找所述临时缓存表;当所述临时缓存表中不存在所述第二数据流对应的临时缓存表项时,所述硬件加速器向所述处理器发送所述第三报文的至少一个待匹配字段;所述硬件加速器接收所述处理器根据所述第三报文的至少一个待匹配字段生成的所述第二数据流对应的临时缓存表项;所述硬件加速器将所述第二数据流对应的临时缓存表项添加到所述临时缓存表。通过上述方式,本发明实施例可以将最近处理的数据流对应的临时缓存表项添加到临时缓存表中,以根据该临时缓存表项转发该最近处理的数据流的报文,避免将该数据流的所有报文都发送给处理器处理,提高了报文处理效率。本发明第二方面提供了一种硬件加速器,该硬件加速器包括缓存,用于存储保护缓存表和临时缓存表,所述保护缓存表用于存储大象流的转发表项,所述临时缓存表用于存储非大象流的转发表项。所述硬件加速器还包括:接收电路,用于接收第一报文;解析电路,用于解析所述第一报文以获取所述第一报文的至少一个待匹配字段,所述至少一个待匹配字段用于识别所述第一报文所属的第一数据流;查找电路,用于根据所述第一报文的至少一个待匹配字段查找所述保护缓存表;当没有从所述保护缓存表中找到所述第一数据流对应的保护缓存表项时,根据所述第一报文的至少一个待匹配字段查找所述临时缓存表得到所述第一数据流对应的临时缓存表项;发送电路,用于根据所述第一数据流对应的临时缓存表项转发所述第一报文;计数电路,用于:统计所述第一数据流的报文数,确定所述第一数据流的报文数是否大于设定的阈值,当所述第一数据流的报文数大于设定的阈值时,触发所述缓存;所述缓存,还用于在所述计数电路的触发下所述根据所述第一数据流对应的临时缓存表项更新所述保护缓存表和所述临时缓存表。在第二方面的第一实施方式中,所述缓存用于:将所述第一数据流对应的临时缓存表项写入所述保护缓存表作为所述第一数据流对应的保护缓存表项;以及从所述临时缓存表中删除所述临时缓存表项。在第二方面的第二实施方式中,所述接收电路还用于接收第二报文;所述第二报文为所述第一数据流的后续报文;所述解析电路还用于解析所述第二报文以获取所述第二报文的至少一个待匹配字段;所述查找电路还用于根据所述第二报文的至少一个待匹配字段查找所述保护缓存表得到所述第一数据流对应的保护缓存表项;所述发送电路还用于根据所述第一数据流对应的保护缓存表项转发所述第二报文。在第二方面的第三实施方式中,所述缓存还用于:当满足预设条件时,从所述保护缓存表中删除所述第一数据流对应的保护缓存表项;所述预设条件为以下任意一个:所述第一数据流对应的保护缓存表项为所述保护缓存表中被最早写入的表项;所述第一数据流对应的保护缓存表项为所述保护缓存表中最长时间未被使用的表项;所述第一数据流对应的保护缓存表项为所述保护缓存表中设定时长内被使用次数最少的表项。在第二方面的第四实施方式中,所述缓存还用于:将所述第一数据流对应的保护缓存表项重新写入所述临时缓存表,作为所述第一数据流的临时缓存表项。在第二方面的第五实施方式中,所述硬件加速器提供n个哈希函数,n大于等于2,所述计数电路用于:将所述至少一个待匹配字段分别应用于所述n个哈希函数得到n个哈希值,所述n个哈希值中每个哈希值分别对应n个计数器中的一个计数器,根据所述第一报文的至少一个匹配字段将所述n个计数器的值分别加1,得到更新后的n个计数器的值,将所述更新后的n个计数器的值的最小值作为所述第一数据流的报文数。在第二方面的第六实施方式中,所述接收电路还用于接收第三报文;所述解析电路还用于解析所述第三报文以获取所述第三报文的至少一个待匹配字段;所述至少一个待匹配字段用于识别所述第三报文所属的第二数据流;所述查找电路还用于:根据所述第三报文的至少一个待匹配字段查找所述保护缓存表,当所述保护缓存表中不存在所述第二数据流对应的保护缓存表项时,查找所述临时缓存表;当所述临时缓存表中不存在所述第二数据流对应的临时缓存表项时,向所述处理器发送所述第三报文的至少一个待匹配字段;所述缓存还用于:接收所述处理器根据所述第三报文的至少一个待匹配字段生成的所述第二数据流对应的临时缓存表项;将所述第二数据流对应的临时缓存表项添加到所述临时缓存表。本发明第三方面提供一种开放虚拟交换机ovs,该ovs包括处理器和上述第二方面及第二方面的任意实现方式中的硬件加速器。本发明第三方面提供一种服务器,该服务器包括上述第三方面的ovs。本申请第二、第三和第三方面的方案的有益效果可以参考上述第一方面的方法。附图说明为了更清楚地说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1为现有技术提供的一种ovs的结构示意图;图2为本发明实施例提供的一种ovs的结构示意图;图3为本发明实施例提供的一种更新转发表的方法的流程示意图;图4为本发明实施例提供的一种统计数据流的报文数的过程示意图;图5为本发明实施例提供的一种服务器的结构示意图。具体实施方式数据在网络中以报文(packet)或帧(frame)的形式传输。具有某些共同特征的报文或帧组成了数据流(dataflow),属于同一数据流的报文或帧被同一个转发设备采用相同的方式转发。转发设备在转发报文的时候,需要先查找转发表,转发表用于指导报文的转发。转发表的每个转发表项包括特征字段和出接口,该特征通常至少包括源因特网协议(internetprotocol,ip)地址,目的ip地址,源媒体访问控制(mediaaccesscontrol,mac)地址,目的mac地址和传输协议中的一种。数据流又被称为流(flow)、传输流(trafficflow)、包流(packetflow)或者网流(networkflow)。据统计,网络中10%的数据流占用了该网络提供的带宽的90%,这10%的数据流通常被称为大象流(elephantflow)或者重流(heavyflow)。大象流是指在某一链路上根据tcp或者其他协议建立的超大(总比特数)的连续流。提高经过ovs的大象流的转发速率,必然会提高ovs的转发效率。如图1所示,提供了ovs10的结构示意图。该ovs10包括处理器110和存储器120。其中,处理器110可以为通用处理器,例如中央处理单元(centralprocessingunit,cpu)。处理器110包括接收单元110,解析单元120,查找单元130和发送单元140。此外,通用处理器1100上还设置了两个缓存,分别是用于存储精确匹配表的精确匹配缓存1301和用于存储通配符匹配表的通配符匹配缓存1302。存储器120包括第一存储块1201和第二存储块1202,其中第一存储块1201用于存储程序代码,第二存储块1202用于存储一般匹配表。在转发报文的时候,查找单元130最多需要查找精确匹配表,通配符匹配表和一般匹配表这三个转发表,因此,该ovs10可以称为支持三级转发的ovs。以下具体说明图1所示的ovs10转发报文的过程。当报文进入ovs10的接收单元110后,解析单元120从接收队列中获取该报文并解析,得到该报文的至少一个待匹配字段。openflow协议支持的特性可以覆盖互联网协议组(internetprotocolsuite)的各层,例如,第一层(layer1)的隧道(tunnel)标识(identifier,id),输入端口(inport),服务质量(qualityofservice,qos)优先级;第二层(layer2)的源mac地址、目的mac地址,虚拟局域网标识(virtuallocalareanetwork,vlan)id,以太类型(ethernettype);第三层(layer3)的源ipv4地址,目的ipv4,源ipv6地址,目的ipv6地址;第四层(layer4)的传输控制协议(transmissioncontrolprotocol,tcp),用户数据报协议(userdatagramprotocol,udp),因特网消息控制协议(internetcontrolmessageprotocol,icmp)等。以上特性只是枚举,并没有穷尽所有的可匹配特性。本申请将从报文中获取的特性的值称为待匹配字段,将存储在转发表中的特性的值称为特征字段。那么,查找转发表,就是用上述待匹配字段匹配转发表中的特征字段。解析单元120将该至少一个待匹配字段发送给查找单元130,查找单元130根据该至少一个待匹配字段生成哈希值,并根据生成的哈希值查找精确匹配缓存1301。精确匹配缓存1301又称为microflowcache,用于存储精确匹配表(exactmatchingtable)。该精确匹配表的每个表项包括一个哈希值和对应该哈希值的出接口。当根据该生成的哈希值在该精确匹配表中找到对应的精确匹配表项(即匹配成功)时,查找单元130将该报文发送给发送单元140,发送单元140根据该精确匹配表项通过快速路径转发该报文。当根据该生成的哈希值在该精确匹配表中找不到对应的表项(即匹配失败)时,查找单元130根据该至少一个待匹配字段查找通配符匹配缓存1302,该通配符匹配缓存1302中存储有通配符匹配表,该通配符匹配表的每个表项包括用于匹配至少一个字段的通配符以及对应的出接口。当根据该至少一个待匹配字段在该通配符匹配表中找到对应的通配符匹配表项(即匹配成功)时,查找单元130将该报文发送给发送单元140,发送单元140根据该通配符匹配表项中的出接口对应的次快路径的发送该报文。并且,查找单元130根据该通配符匹配表项生成对应的精确匹配表项,并根据该精确匹配表项更新该精确匹配表。当根据该至少一个待匹配字段在该通配符匹配表中找不到对应的表项(即匹配失败)时,查找单元130根据该至少一个待匹配字段查找第二存储块1202中存储的一般匹配表,该一般匹配表的每个表项包括至少一个特征字段以及对应该至少一个特征字段的出接口。当根据该至少一个待匹配字段在该一般匹配表中找到对应的一般匹配表项(即匹配成功)时,查找单元130将该报文发送给发送单元140,发送单元140根据该一般匹配表项中的出接口对应的慢速路径发送该报文。并且,处理器110根据该一般匹配表项生成对应的通配符匹配表项,并根据该通配符匹配表项更新该通配符匹配表。如果查找单元130根据该至少一个待匹配字段在该一般匹配表中仍找不到对应的表项(即匹配失败)时,处理器110将该报文发送给控制器20,控制器20为该报文生成对应的转发表项,并根据该转发表项发送该报文。在发送该报文后,控制器20将该转发表项发送给ovs10,ovs10将该转发表项添加到该一般匹配表以更新该一般匹配表。由于控制器20接收的报文在被控制器20接收之前已经经过多次查表,需要的处理时间较长,因此,将控制器20转发报文的路径称为特慢路径。图1中,快速路径是指查找一次转发表得到的转发路径,次快路径是指查找两次转发表得到的转发路径,慢速路径是指查找三次转发表得到的转发路径,特慢路径是指查找四次转发表得到的转发路径。在上述架构中,精确匹配缓存1301和通配符匹配缓存1302均为硬件缓存,其缓存空间有限,因此限制了精确匹配表和通配符匹配表的大小。精确匹配表的表项数较少导致查找单元130因在精确匹配表中查找不到报文对应的转发表项,而不得不根据报文的待匹配字段查找通配符匹配缓存1302甚至第二存储块1202。并且,缓存更新(即在缓存中添加新的表项)会导致精确匹配缓存1301和通配符匹配缓存1302溢出。所述溢出是指如果接收到新的表项的时候,所述精确匹配缓存1301或通配符匹配缓存1302已经达到最大容量,即精确匹配缓存表或通配符匹配缓存表已经达到最大规格,则从精确匹配表或通配符匹配表中删除最早写入精确匹配表或通用符匹配表的表项,并在精确匹配表或通配符匹配表中添加该新的表项。精确匹配缓存1301溢出导致大象流对应的表项也可能被删除,当大象流对应的表项被删除后,在转发属于该大象流的报文时又需要再次查找通配符匹配缓存1302甚至第二存储块1202。并且,由于属于大象流的报文众多,精确匹配缓存1301溢出可能导致该大象流对应的表项不断被从精确匹配缓存1301删除又被重新添加到精确匹配缓存1301。上述精确匹配表的表项数较少或者精确匹配缓存1301的溢出都会导致ovs10转发报文的效率低下。进一步地,不断地更新精确匹配表和通配符匹配表,浪费了处理器110的资源。为了提高ovs的转发效率,在图1所示ovs10的基础上,本发明实施例提供了另一种ovs,如图2所示,本发明实施例中的ovs200包括处理器1000、硬件加速器2000和至少一个存储块,例如,第一存储块3001。其中,硬件加速器2000可以为现场可编程门阵列(field-programmablegatearray,fpga)或特定应用集成电路(application-specificintegratedcircuit,asic)等硬件单元。硬件加速器2000包括接收电路210,解析电路220,查找电路230,发送电路240,缓存260和计数电路270。其中,接收电路210,解析电路220和发送电路240的功能可以参考对接收单元110,解析单元120和发送单元140的描述,不同的是,接收电路210,解析电路220,发送电路240由硬件实现,具有更快的处理速度。处理器1000包括查找单元280,用于查找第一存储块3001,该第一存储块3001用于存储一般匹配表。缓存260用于存储保护缓存表261和临时缓存表262。其中,保护缓存表261用于存储大象流的转发表项。临时缓存表262用于存储非大象流的转发表项。其中,保护缓存表261的最大表项数为x。计数电路270用于统计接收的数据流的报文数并确定该数据流是否为大象流。下文将结合附图对本发明实施例中ovs200的功能予以详细说明。如图3所示,为本发明一实施例提供的更新转发表的方法流程示意图,所述方法由所述ovs200执行。所述转发表至少包括保护缓存表261,所述保护缓存表261用于存储大象流的转发表项。由于图3所示的流程包括多个判断步骤,而在每个判断步骤中,每个报文只可能对应一个判断结果。因此,下面以多个报文为例,说明本发明实施例针对不同判断结果的处理过程。在步骤301中,硬件加速器接收第一报文。在一个实施方式中,硬件加速器2000的接收电路电路210接收报文(例如第一报文)。具体地,接收电路210用于从网卡或者其他网络接口接收所述报文。在步骤302中,所述硬件加速器解析所述第一报文以获取所述第一报文的至少一个待匹配字段;所述至少一个待匹配字段用于识别所述第一报文所属的第一数据流。在一个实施方式中,硬件加速器2000的解析电路220解析所述第一报文以获取所述第一报文的至少一个待匹配字段,并将所述至少一个待匹配字段发送给查找电路230。其中,所述至少一个待匹配字段可以是三元组(包括三个待匹配字段),五元组(包括五个待匹配字段),七元组(包括七个待匹配字段)等等,所述至少一个待匹配字段用于识别所述第一报文所属的第一数据流。在步骤303中,所述硬件加速器根据所述第一报文的至少一个待匹配字段查找所述保护缓存表。在一个实施方式中,硬件加速器2000的查找电路230根据所述至少一个待匹配字段查找所述保护缓存表261,当查找电路230没有从所述保护缓存表261中查找到所述第一数据流对应的保护缓存表项(即没命中保护缓存表或保护缓存表匹配失败)时,表明该第一数据流尚未被标识为大象流,当查找电路230从所述保护缓存表261中查找到所述第一数据流对应的保护缓存表项(即命中保护缓存表或保护缓存表匹配成功)时,表明该第一数据流已经被标识为大象流。在一个实施方式中,所述保护缓存表261的每个表项包括至少一个特征字段和对应的出接口,所述查找电路230直接根据所述至少一个待匹配字段查找该保护缓存表261。在另一个实施方式中,所述保护缓存表261的每个表项包括哈希值与对应的出接口,所述查找电路230根据所述至少一个待匹配字段和预设的哈希函数计算哈希值,并根据计算得到的哈希值查找所述保护缓存表261。在步骤304中,当没有从所述保护缓存表中找到所述第一数据流对应的保护缓存表项时,所述硬件加速器根据所述第一报文的至少一个待匹配字段查找所述临时缓存表得到所述第一数据流对应的临时缓存表项。在一个实施方式中,硬件加速器2000的查找电路230根据所述第一报文的至少一个待匹配字段查找临时缓存表262,如果查找电路230查找到所述第一数据流对应的临时缓存表项(即命中临时缓存表或临时缓存表匹配成功),表明ovs已经转发过该第一数据流的其他报文,但是该数据流尚未被标识为大象流,查找电路230将所述第一报文和查找到的临时缓存表项一起发送给发送电路240。在一个实施方式中,所述临时缓存表262的每个表项包括至少一个特征字段和对应的出接口,所述查找电路230直接根据所述至少一个待匹配字段查找该临时缓存表262。在另一个实施方式中,所述临时缓存表262的每个表项包括哈希值与对应的出接口,所述查找电路230根据所述至少一个待匹配字段和预设的哈希函数计算哈希值,并根据计算得到的哈希值查找所述临时缓存表262。在步骤305中,所述硬件加速器根据所述第一数据流对应的临时缓存表项转发所述第一报文。在一个实施方式中,硬件加速器2000的发送电路240通过所述临时缓存表项中的出接口发送所述第一报文。在步骤306中、所述硬件加速器统计所述第一数据流的报文数。其中,步骤305和306没有执行顺序的限制。在306的一个实施方式中,硬件加速器2000为临时缓存表262中记录的每个数据流设置一个计数器,硬件加速器2000根据所述第一报文的至少一个匹配字段将所述计数器的值加1并读取得到的所述计数器的值,就可得到所述第一数据流的报文数。具体地,该计数器关联计数电路270,查找电路230将所述第一报文的至少一个待匹配字段发送给计数电路270,电路计数电路270将所述至少一个待匹配字段对应的计数器的值加1,得到所述第一数据流的报文数。在306的另一个实施方式中,硬件加速器2000提供n个哈希函数,n大于等于2,硬件加速器2000将所述至少一个待匹配字段分别应用于所述n个哈希函数得到n个哈希值,所述n个哈希值中每个哈希值分别对应n个计数器中的一个计数器,所述硬件加速器在转发所述第一报文后将所述n个计数器的值分别加1,得到更新后的n个计数器的值,将所述更新后的n个计数器的值的最小值作为所述第一数据流的报文数。具体地,如图4所示,为本发明实施例提供的一种统计第一数据流的报文数的过程示意图。计数电路270中设置有包括n行计数器的计数器阵列2701和n个哈希函数2702,该n个哈希函数2702包括hash1,hash2,…hashn,每个哈希函数对应一行计数器;查找电路230将所述第一报文的至少一个待匹配字段发送给计数电路270,计数电路270将所述至少一个待匹配字段应用于所述n个哈希函数得到n个哈希值a,b,c…n,在所述计数器阵列2701中查找所述n个哈希值a,b,c…n分别对应的n个计数器(图中箭头指向的方块),将所述n个计数器的值分别加1,得到更新后的n个计数器的值,将所述更新后的n个计数器的值的最小值(即最小值(a,b,c…n))作为所述第一数据流的报文数。在所述计数器阵列2701中查找所述n个哈希值分别对应的n个计数器具体包括,对于所述n个哈希值中的每个哈希值,在生成所述哈希值的哈希函数对应的计数器行中查找所述哈希值对应的计数器。本发明实施例中,硬件加速器2000只需要统计临时缓存表262中记录的数据流的报文数。在步骤307中,所述硬件加速器确定所述第一数据流的报文数是否大于设定的阈值。在一个实施方式中,计数电路270确定所述第一数据流的报文数是否大于设定的阈值。其中,该设定的阈值用于判断数据流是否为大象流。例如,设定时长为5秒,设定的阈值为1000,那么在5秒之内,如果计数电路270统计的某个数据流的报文数超过了1000,则确认该数据流的报文数大于设定的阈值。如果所述第一数据流的报文数大于设定的阈值,所述硬件加速器根据所述第一数据流对应的临时缓存表项更新所述保护缓存表261和所述临时缓存表262。如果所述第一数据流的报文数不超过设定的阈值,则所述电路计数电路270等待接收下一个报文的待匹配字段。在步骤308中,当所述第一数据流的报文数大于设定的阈值时,所述硬件加速器根据所述第一数据流对应的临时缓存表项更新所述保护缓存表和所述临时缓存表。在一个实施方式中,硬件加速器2000将所述第一数据流对应的临时缓存表项写入所述保护缓存表261作为所述第一数据流对应的保护缓存表项,以及从所述临时缓存表262中删除所述临时缓存表项。在另一个实施方式中,硬件加速器2000的计数电路270在所述第一数据流的报文数大于设定的阈值时触发缓存260,缓存260在所述计数电路270的触发下将所述临时缓存表项从所述临时缓存表262读出并写入所述保护缓存表261,然后将所述临时缓存表项从所述临时缓存表262删除。其中,所述触发可以是发送迁移指令或者发送一个用于更新表项的信号。通过以上过程,可以将已经记录在临时缓存表262中的数据流识别为大象流并在保护缓存表261中添加该大象流对应的保护缓存表项,这样,当硬件加速器2000(或接收电路210)接收到该大象流的后续报文,例如第二报文,时,就可以在执行步骤301-303后,查找到该保护缓存表项。然后,在步骤304中,硬件加速器2000可以根据查找到的该保护缓存表项转发该第二报文。即,所述方法还可以包括:所述硬件加速器接收第二报文;所述第二报文为所述第一数据流的后续报文;所述硬件加速器解析所述第二报文以获取所述第二报文的至少一个待匹配字段;所述硬件加速器根据所述第二报文的至少一个待匹配字段查找所述保护缓存表得到所述第一数据流对应的保护缓存表项;所述硬件加速器根据所述第一数据流对应的保护缓存表项转发所述第二报文。在另一个实施方式中,如果经过执行步骤301-304之后,硬件加速器2000(或查找电路230)发现保护缓存表261和临时缓存表262中都没有记录接收的报文,例如第三报文,所属的数据流的转发表项,则在步骤309中,查找电路230将根据该第三报文得到的待匹配字段发送给处理器1000中的查找单元280。在步骤310中,查找单元280接收所述第三报文的待匹配字段,根据该第三报文的待匹配字段查找第一存储块3001中的一般匹配表,找到该第三报文对应的一般匹配表项,根据该一般匹配表项生成对应的临时缓存表项,将该临时缓存表项写入缓存260中的临时缓存表262,并通知查找电路230。查找电路230将该第三报文和该临时缓存表项发送给发送电路240,发送电路240通过该临时缓存表项中的出接口发送该第三报文。即,所述方法还包括:所述硬件加速器解析所述第三报文以获取所述第三报文的至少一个待匹配字段;所述至少一个待匹配字段用于识别所述第三报文所属的第二数据流;所述硬件加速器根据所述第三报文的至少一个待匹配字段查找所述保护缓存表;当所述保护缓存表中不存在所述第二数据流对应的保护缓存表项时,所述硬件加速器查找所述临时缓存表;当所述临时缓存表中不存在所述第二数据流对应的临时缓存表项时,所述硬件加速器向所述处理器发送所述第三报文的至少一个待匹配字段;所述硬件加速器接收所述处理器根据所述第三报文的至少一个待匹配字段生成的所述第二数据流对应的临时缓存表项;所述硬件加速器将所述第二数据流对应的临时缓存表项添加到所述临时缓存表,以更新所述临时缓存表。所述硬件加速器没有从所述临时缓存表中找到所述第二数据流对应的临时缓存表项时,所述硬件加速器可以丢弃该第三报文,也可以保存该第三报文,并在从所述处理器接收到所述第二数据流对应的临时缓存表项后,根据所述第二数据流对应的临时缓存表项转发该第三报文。在本发明实施例中,上述查找单元280可以由软件实现,也可以由硬件实现,还可以由软件和硬件结合实现。当该查找单元280由软件实现时,该ovs还包括第二存储块3002,用于存储程序代码。处理器1000还用于从第二存储块3002中调用该程序代码,以实现查找单元280的功能。根据本发明实施例,ovs由处理器和硬件加速器组成,处理器用于存储一般匹配表,该一般匹配表用于记录ovs转发的所有数据流的转发表项。硬件加速器包括保护缓存表和临时缓存表。保护缓存表用于记录大象流的转发表项,临时缓存表用于记录非大象流的转发表项。由于网络中90%的流量为非大象流,用于记录大象流的转发表项的保护缓存表的最大表项数x远远小于一般匹配表的最大表项数,因此,通过查找保护缓存表能够更快找到大象流的转发表项。硬件加速器接收到报文后,先查找保护缓存表,使得属于大象流的报文不需要经过处理器处理就可以被快速转发。进一步地,本发明实施例中,通过在临时缓存表中记录非大象流的转发表项,并统计临时缓存表中记录的数据流的报文数,可以准确识别大象流。故本申请实施例提供的硬件加速器和更新转发表的方法可以提高ovs的转发效率。本发明实施例还可以进一步更新经过图3所示的流程得到的保护缓存表和临时缓存表。例如,当所述保护缓存表的表项数为最大表项数x时,如果硬件加速器发现了新的大象流,需要将该新的大象流对应的临时缓存表项写入所述保护缓存表。此时,如果第一数据流对应的保护缓存表项满足预设条件,所述硬件加速器就可以从所述保护缓存表中删除所述第一数据流对应的保护缓存表项。所述预设条件可以为以下任意一个:所述第一数据流对应的保护缓存表项为所述保护缓存表中被最早写入的表项;所述第一数据流对应的保护缓存表项为所述保护缓存表中最长时间未被使用的表项;所述第一数据流对应的保护缓存表项为所述保护缓存表中设定时长内被使用次数最少的表项(即使用频率最低的表项)。然后,硬件加速器可以将该新的大象流对应的临时缓存表项写入所述保护缓存表。上述更新过程可以确保保护缓存表中的记录的是活跃的大象流的转发表项,避免数据流从大象流转为非大象流之后仍然占用保护缓存表的资源,提高大象流的报文命中保护缓存表的概率。在从所述保护缓存表中删除所述第一数据流对应的保护缓存表项之前,所述硬件加速器还可以将所述第一数据流对应的保护缓存表项重新写入所述临时缓存表,作为所述第一数据流的临时缓存表项。进一步地,所述硬件加速器还可以在所述第一数据流对应的计数器中设置初始计数,所述初始计数大于0,以便所述硬件加速器在接收到所述第一数据流的后续报文后,将所述第一数据流快速确认为大象流。上述更新保护缓存表和临时缓存表的过程具体可以由缓存260实现。由于第一数据流曾经被确认为大象流,硬件加速器仍然有很大可能会收到第一数据流的后续报文,为了避免将第一数据流对应的保护缓存表项从保护缓存表中删除后,在接收到第一数据流的后续报文时再次为第一数据流生成临时缓存表项,所示硬件加速器可以将所述第一数据流对应的保护缓存表项重新写入所述临时缓存表,作为所述第一数据流的临时缓存表项。并且,第一数据流后续仍然后很大可能是大象流,因此,在一个实施方式中,将该第一数据流对应的保护缓存表项写入该临时缓存表,并为该第一数据流设置一个较大的初始计数。这样,当硬件加速器再次接收到该第一数据流的后续报文时,可以很快将该第一数据流再次确认为大象流,并将该第一数据流对应的临时缓存表项再次写入保护缓存表。通过这种将删除的大象流的保护缓存表项写入临时缓存表并为该大象流设定较大的初始计数的方式可以提高ovs的综合转发性能。如图5所示,本发明实施例还提供了一种服务器500,该服务器500用于实现本发明上述实施例。例如,该服务器500上可以部署图2所示的ovs200,以实现图3所示的方法。该服务器500包括入端口510,硬件加速器520,处理器530,存储器540和出端口550。其中,入端口510用于接收报文,并将报文发送给硬件加速器520,硬件加速器520用于执行图2和图3中硬件加速器2000的功能。处理器530用于执行图2和图3中处理器1000的功能,处理器530可以由软件或者硬件实现,或者由软件和硬件的结合实现。存储器540用于存储一般匹配表和程序代码,出端口550用于发送报文。存储器540可以包括一个或多个磁盘,可以是随机存取存储器(randomaccessmemory,ram)、闪存、只读存储器(read-onlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablerom,eprom)、电可擦可编程只读存储器(electricallyeprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质。处理器902可以包括一个或多个cpu、asic、多核处理器、数字信号处理器(digitalsignalprocessor,dsp)或者是被配置成实施本发明实施例的一个或多个集成电路。以上所述仅是本申请的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1