CN105704028B - 报文处理方法及装置 - Google Patents
报文处理方法及装置 Download PDFInfo
- Publication number
- CN105704028B CN105704028B CN201610179298.6A CN201610179298A CN105704028B CN 105704028 B CN105704028 B CN 105704028B CN 201610179298 A CN201610179298 A CN 201610179298A CN 105704028 B CN105704028 B CN 105704028B
- Authority
- CN
- China
- Prior art keywords
- tlv
- type field
- length
- message
- circuit
- 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
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/12—Shortest path evaluation
- H04L45/124—Shortest path evaluation using a combination of metrics
-
- 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/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
- H04L49/1507—Distribute and route fabrics, e.g. sorting-routing or Batcher-Banyan
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例提供一种报文处理方法及装置,该方法包括:依次匹配报文与流表中的至少一条规则;若所述报文与任一条规则匹配成功,则对所述报文依次执行所述任一条规则中的,至少一条类型、长度和值TLV对应的动作集;其中,所述TLV中的类型字段的编码长度与所述类型字段的使用频率成反比。由于使用频率高的类型字段对应的编码则较短,相应地,使用频率低的类型字段对应的编码则较长,因此,整个流表中类型字段的平均编码变短了,从而达到节省内存空间的效果。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种报文处理方法及装置。
背景技术
软件定义网络(Software Defined Network,简称SDN)是一种新的网络架构,其核心技术Openflow通过将原本由交换机/路由器控制的报文转发过程,转化为由Openflow交换机和控制器分别完成的独立过程,即将控制面与数据面分离开来,从而实现网络流量的灵活控制,使网络作为管道变得更加智能。
Openflow是基于Openflow交换机部署的,要求每个Openflow交换机上包含一个开放的流表与一个用于增删流表表项的标准化接口。其中,Openflow交换机中的报文转发是根据流表来执行的,流表是报文处理的核心,流表中每一条表项称为规则,每条规则由三部分组成:匹配域,用于报文的匹配;计数器,用于统计每条规则的流量信息,如查找次数、发送报文数等;行动,用于对匹配报文的处理,其中,行动中包括一个动作集,该动作集用于对报文执行相应的动作。其中,每个动作对应一个类型、长度、值(Type Length Value,简称TLV)结构,比如:类型字段可以是统计、值字段可以是标识,则执行的动作则是根据标识对报文进行统计。
然而,现有技术中,每条TLV中类型字段占用的字节数为固定值,例如:5比特,该5比特可以表示25=32种类型,但是,存在一些“类型”并不经常用、甚至不用,因此,这种令类型字段占用的字节数为固定值的方式,会导致内存空间的浪费。
发明内容
本发明实施例提供一种报文处理方法及装置,从而达到节省内存空间的效果。
第一方面,本发明实施例提供一种报文处理方法,包括:依次匹配报文与流表中的至少一条规则;若报文与任一条规则匹配成功,则对报文依次执行任一条规则中的,至少一条类型、长度和值TLV对应的动作集;其中,该TLV中的类型字段的编码长度与所述类型字段的使用频率成反比。
本发明实施例提供的报文处理方法中,由于使用频率高的类型字段对应的编码则较短,相应地,使用频率低的类型字段对应的编码则较长,因此,整个流表中类型字段的平均编码变短了,从而达到节省内存空间的效果。
可选地,该报文处理方法还包括:在预设时间段内,获取每条所述TLV中的类型字段的使用频率;分别根据每个类型字段的使用频率,对类型字段进行编码。
可选地,上述编码方法可以采用霍夫曼编码方法,也可以采用如下方法:确定每个类型字段对应的使用频率,当确定使用频率最高的类型字段只有一个时,则该类型字段对应的编码可以为0或者1,即用一位二进制数来表示该类型字段,当确定使用频率最高的类型字段有两个时,则可以用两位二进制数来表示该类型字段,依次类推,确定完使用频率最高的类型字段之后,再通过同样的方式确定使用频率次高的类型字段对应的编码,该编码的长度比使用频率最高的类型字段的编码的长度多一位,依次类推,直到所有的类型字段都存在对应的编码,则结束。
本发明实施例对根据类型字段在预设时间段内的使用频率对类型字段进行编码的方法不做限制,只要满足类型字段对应的编码长度与类型字段在预设时间段内的使用频率成反比即可。
可选地,对报文依次执行所述任一条规则中的,至少一条类型、长度和值TLV对应的动作集,包括:确定待匹配的第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度;基于所述第一TLV的起始地址,确定长度为所述编码长度的数据为所述第一TLV中的类型字段对应的编码,并且基于所述第一TLV的起始地址,偏移所述待匹配的第一TLV中的类型字段的编码长度之后,确定第一偏移地址;从所述第一偏移地址开始,确定长度为所述第一TLV中的值字段的长度的数据为所述第一TLV中的值字段;根据所述第一TLV中的类型字段和值字段对所述报文执行相应的动作;根据所述第一TLV的起始地址、所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度,确定第二TLV的起始地址,并将所述第二TLV作为新的第一TLV,对所述报文执行所述新的第一TLV相应的动作,直至执行完所述动作集中的所有动作,其中,所述第二TLV为所述第一TLV中的下一条TLV。
可选地,根据第一TLV的起始地址、第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度,确定第二TLV的起始地址,包括:基于所述第一TLV的起始地址,偏移所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度之后,确定所述第二TLV的起始地址。
由于本发明中对TLV中的类型字段进行了压缩,即TLV中的类型字段不是固定长度,每条TLV中的类型字段的长度可能不尽相同,因此,通过上述方法可以准确、快速的确定第一TLV中的值字段以及第二TLV的起始地址,从而提高报文处理效率。
下面将提供一种报文处理装置,该装置的功能与效果与上述报文处理方法对应的效果相同,在此不再赘述。
第二方面,本发明实施例提供一种报文处理装置,包括:相连接的第一电路和第二电路;所述第一电路,用于依次匹配报文与流表中的至少一条规则;若所述报文与任一条规则匹配成功,则所述第二电路对所述报文依次执行所述任一条规则中的,至少一条类型、长度和值TLV对应的动作集;其中,所述TLV中的类型字段的编码长度与所述类型字段的使用频率成反比。
可选地,所述第一电路还用于:在预设时间段内,获取每条所述TLV中的类型字段的使用频率;分别根据每个所述类型字段的使用频率,对所述类型字段进行编码。
可选地,所述第一电路具体用于:根据每个所述类型字段的使用频率,对所述类型字段进行霍夫曼编码。
可选地,所述第二电路用于:确定待匹配的第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度;基于所述第一TLV的起始地址,确定长度为所述编码长度的数据为所述第一TLV中的类型字段对应的编码,并且基于所述第一TLV的起始地址,偏移所述待匹配的第一TLV中的类型字段的编码长度之后,确定第一偏移地址;从所述第一偏移地址开始,确定长度为所述第一TLV中的值字段的长度的数据为所述第一TLV中的值字段;根据所述第一TLV中的类型字段和值字段对所述报文执行相应的动作;根据所述第一TLV的起始地址、所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度,确定第二TLV的起始地址,并将所述第二TLV作为新的第一TLV,对所述报文执行所述新的第一TLV相应的动作,直至执行完所述动作集中的所有动作;其中,所述第二TLV为所述第一TLV中的下一条TLV。
可选地,所述第二电路包括:多个节点,所述多个节点构成与所述霍夫曼编码对应的霍夫曼树;则所述第二电路具体用于:根据所述第一TLV遍历所述霍夫曼树;遍历成功,确定所述第一TLV中的类型字段的编码长度。
可选地,所述第二电路具体用于:基于所述第一TLV的起始地址,偏移所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度之后,确定所述第二TLV的起始地址。
可选地,该装置还包括:第三电路;所述第三电路与所述第二电路为主备关系;当所述第二电路执行报文处理过程时,则所述第三电路根据控制命令调整所述第三电路的结构;当所述第三电路执行报文处理过程时,则所述第二电路根据控制命令调整所述第二电路的结构。这样在运行时可以针对类型字段的使用概率的变化动态修改霍夫曼树,而不至于影响正常的报文处理过程,从而可以提高压缩效率。
本发明实施例提供一种报文处理方法及装置,该方法包括:依次匹配报文与流表中的至少一条规则;若所述报文与任一条规则匹配成功,则对所述报文依次执行所述任一条规则中的,至少一条类型、长度和值TLV对应的动作集;其中,所述TLV中的类型字段的编码长度与所述类型字段的使用频率成反比。由于使用频率高的类型字段对应的编码则较短,使用频率低的类型字段对应的编码则较长,因此,整个流表中类型字段的平均编码变短了,从而达到节省内存空间的效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种报文处理方法的流程图;
图2为本发明一实施例提供的霍夫曼树的示意图;
图3为本发明另一实施例提供的报文处理方法的流程图;
图4为本发明一实施例提供的第二电路的示意图一;
图5为本发明一实施例提供的第二电路的示意图二;
图6为本发明一实施例提供的TLV数据流的示意图;
图7为本发明一实施例提供的一种报文处理装置的结构示意图;
图8为本发明另一实施例提供的一种报文处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中,由于流表中每条TLV中类型字段占用的字节数为固定值,导致内存空间浪费的问题,本发明实施例提供一种报文处理方法及装置,其中该方法的执行主体为报文处理装置,该装置可以是交换机、路由器、也可以是交换机或者路由器中的处理器等,该方法的应用场景为:流表中每条TLV中的类型字段在预设时间段内的使用频率不完全相同。图1为本发明一实施例提供的一种报文处理方法的流程图,如图1所示,该方法具体包括如下流程:
S101:依次匹配报文与流表中的至少一条规则;
S102:若报文与任一条规则匹配成功,则对报文依次执行任一条规则中的,至少一条类型、长度和值TLV对应的动作集;其中,TLV中的类型字段的编码长度与类型字段的使用频率成反比。
其中,类型字段可以是:统计(Count)、设置字段(Set field)、删除标识(DeleteTag)、增加标识(Add Tag)和输出(Output)等等,每一条TLV都对应有一个动作,比如:类型字段可以是统计、值字段可以是标识,则执行的动作则是根据标识对报文进行统计。其中,电路来实现对所述报文依次执行所述任一条规则中的,至少一条类型、长度和值TLV对应的动作集的,具体地,该电路根据编码规则生成对应的结构,比如:编码为霍夫曼编码,那么生成的结构则为霍夫曼树,每个霍夫曼树的叶子节点存储有:TLV中的类型字段对应的标识或者该TLV对应的程序入口地址,该程序用于实现该TLV对应的动作。
本发明实施例提供的报文处理方法中,由于使用频率高的类型字段对应的编码则较短,相应地,使用频率低的类型字段对应的编码则较长,因此,整个流表中类型字段的平均编码变短了,从而达到节省内存空间的效果。
可选地,所述方法还包括:在预设时间段内,获取每条所述TLV中的类型字段的使用频率;分别根据每个所述类型字段的使用频率,对所述类型字段进行编码。
一种可选方式,采用霍夫曼编码方式,霍夫曼编码是一种用于无损数据压缩的熵编码算法,也称“哈夫曼编码”,霍夫曼编码过程中,使用变长编码表对类型字段进行编码,其中变长编码表是根据类型字段在预设时间段内的使用频率得到的,该变长编码表中使用频率高的类型字段对应的编码则较短,相应地,使用频率低的类型字段对应的编码则较长。
具体地,霍夫曼编码过程如下:
首先,如表1,将六个类型字段type0、type1、type2、type3、type4、type5按照在预设时间段内的使用频率有小到大顺序排列,其中最左侧的类型字段对应的使用频率最小,上述六个类型字段对应的使用频率分别为2、3、4、4、5和7。
表1
类型字段 | type0 | type1 | type2 | type3 | type4 | type5 |
使用频率 | 2 | 3 | 4 | 4 | 5 | 7 |
其次,建立霍夫曼树,图2为本发明一实施例提供的霍夫曼树的示意图,如图2所示,该霍夫曼树中的叶子节点包括的是类型字段,其中,霍夫曼树建立的过程包括:将使用频率最小的两个节点进行频率相加,合成一个新的节点,确定使用频率最小的两个节点是type0和type1所代表的节点,频率相加为5,然后,在5、4、4、5和7中选出最小的两个频率为4、4,频率相加为8;在5、8、5和7中选出最小的两个频率为5、5,频率相加为10;在8、7和10中选出最小的两个频率为8和7,频率相加为15;最后将频率10和15相加得到25,给霍夫曼树的所有左分支赋予0,右分支赋予1,至此整个霍夫曼树建立完毕。
最后,基于上述建立好的霍夫曼树,得到变长编码表如表2,type0对应的编码为000,type1对应的编码为001,type2对应的编码为100,type3对应的编码为101,type3对应的编码为01、type5对应的编码为11。
表2
类型字段 | type0 | type1 | type2 | type3 | type4 | type5 |
使用频率 | 2 | 3 | 4 | 4 | 5 | 7 |
编码 | 000 | 001 | 100 | 101 | 01 | 11 |
另一种可选方式,和上面一种方式类似,确定每个类型字段对应的使用频率,如表1,当确定使用频率最高的类型字段只有一个时,则该类型字段对应的编码可以为0或者1,即用一位二进制数来表示该类型字段,当确定使用频率最高的类型字段有两个时,则可以用两位二进制数来表示该类型字段,依次类推,确定完使用频率最高的类型字段之后,再通过同样的方式确定使用频率次高的类型字段对应的编码,该编码的长度比使用频率最高的类型字段的编码的长度多一位,依次类推,直到所有的类型字段都存在对应的编码,则结束。比如:上述类型字段type5的使用频率为7,它对应的编码为0,type4的使用频率为5,它对应的编码为00,type3和type2的频率都是4,对应的编码分别可以为000,001,type1的使用频率为3,对应的编码为0000,type0的频率为2,对应的编码为00000。
需要说明的是,本发明实施例对根据类型字段在预设时间段内的使用频率对类型字段进行编码的方法不做限制,只要满足类型字段对应的编码长度与类型字段在预设时间段内的使用频率成反比即可。
综上,上述的两种编码方式,由于使用频率高的类型字段对应的编码则较短,相应地,使用频率低的类型字段对应的编码则较长,因此,整个流表中类型字段的平均编码变短了,从而达到节省内存空间的效果。
进一步地,图3为本发明另一实施例提供的报文处理方法的流程图,如图3所示,该方法包括:
S301:依次匹配报文与流表中的至少一条规则;
S302:若报文与任一条规则匹配成功,则确定待匹配的第一TLV中的类型字段的编码长度和第一TLV中的值字段的长度;
报文处理装置包括第一电路和第二电路,该第一电路用于执行S301,第二电路用于执行S302,其中,图4为本发明一实施例提供的第二电路的示意图一,如图4所示,该霍夫曼树的每个叶子节点中存储一个类型字段对应的标识或者该TLV对应的程序入口地址(图中仅示出的是类型字段对应的标识),根据图4所示节点连接关系以及箭头方向可以确定类型字段type0对应的编码为000,type1对应的编码为001,type2对应的编码为100,type3对应的编码为101,type4对应的编码为01、type5对应的编码为11。
进一步地,该霍夫曼树的每个叶子节点还可以存储值字段的长度,具体地,图5为本发明一实施例提供的第二电路的示意图二,如图5所示,比如:type0所在叶子节点存储的值字段的长度为12bit,type1所在叶子节点存储的值字段的长度为4bit,type2所在叶子节点存储的值字段的长度为16bit,type3所在叶子节点存储的值字段的长度为3bit,type4所在叶子节点存储的值字段的长度为20bit,type5所在叶子节点存储的值字段的长度为12bit,其中这些值字段的长度可以通过下面的方式确定:在报文处理装置对TLV中的类型字段进行编码之前,由于流表中的每条TLV还都采用的是现有技术中的固定格式,即每个类型字段的长度是固定的,并且TLV之间是对齐的,因此,该装置可以基于每条TLV的起始地址,偏移每个类型字段的长度之后,获得值字段的起始地址,开始读取值字段,确定该TLV中的值字段的长度。
由于基于本发明实施例所涉及的流表中的类型字段是根据每个类型字段对应的使用频率来确定的,因此,流表中每个类型字段的长度可能不尽相同,并且在各个时间段内同一个类型字段的长度也可能不同,这将引出报文处理过程中两个亟需解决的问题:第一,如何确定每条TLV中的值字段;第二,如何确定当前TLV的下一条TLV的起始地址。下面的实施例会对解决这两个问题的方法进行具体阐述如S303-S306:
S303:基于第一TLV的起始地址,确定长度为编码长度的数据为第一TLV中的类型字段对应的编码,并且基于第一TLV的起始地址,偏移待匹配的第一TLV中的类型字段的编码长度之后,确定第一偏移地址;
S304:从第一偏移地址开始,确定长度为第一TLV中的值字段的长度的数据为第一TLV中的值字段;
图6为本发明一实施例提供的TLV数据流的示意图,如图6所示,该第一TLV的类型字段为type0(这里用标识type0来表示类型字段,实际上该类型字段是0,1构成的编码),报文处理装置遍历第二电路构成的霍夫曼树,确定该type0对应的编码为000,编码长度为3,然后基于M,偏移3位后,得到第一偏移地址为M+3,在该装置对第一TLV中的类型字段进行编码之前,由于流表中的每条TLV还都采用的是现有技术中的固定格式,即每个类型字段的长度是固定的,并且TLV之间是对齐的,因此,该装置可以基于每条TLV的起始地址,偏移每个类型字段的长度之后,获得值字段的起始地址,开始读取值字段,确定该TLV中的值字段的长度为2,然后,从第一偏移地址开始,确定长度为2的数据即为第一TLV中的值字段。
S305:根据第一TLV中的类型字段和值字段对报文执行相应的动作;
由于每个叶子节点存储有类型字段对应的标识或者该TLV对应的程序入口地址,所以将值字段和报文代入该标识或者程序入口地址对应的程序,运行该程序,则实现了对报文执行相应的动作。
S306:根据第一TLV的起始地址、第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度,确定第二TLV的起始地址,并将第二TLV作为新的第一TLV,对报文执行新的第一TLV相应的动作。其中,第二TLV为第一TLV中的下一条TLV,直至执行完所述动作集中的所有动作。
具体地,基于第一TLV的起始地址,偏移第一TLV中的类型字段的编码长度和第一TLV中的值字段的长度之后,确定第二TLV的起始地址。如图6所示,值字段的长度为2,因此,M+3+2=M+5即为第二TLV的起始地址。
本发明实施例提供了通过上述方法可以准确、快速的确定第一TLV中的值字段以及第二TLV的起始地址,从而提高报文处理效率。
图7为本发明一实施例提供的一种报文处理装置的结构示意图,如图7所示,该装置包括:相连接的第一电路71和第二电路72;所述第一电路71,用于依次匹配报文与流表中的至少一条规则;若所述报文与任一条规则匹配成功,则所述第二电路72对所述报文依次执行所述任一条规则中的,至少一条类型、长度和值TLV对应的动作集;其中,所述TLV中的类型字段的编码长度与所述类型字段的使用频率成反比。
由于使用频率高的类型字段对应的编码则较短,相应地,使用频率低的类型字段对应的编码则较长,因此,整个流表中类型字段的平均编码变短了,从而达到节省内存空间的效果。
可选地,所述第一电路71还用于:在预设时间段内,获取每条所述TLV中的类型字段的使用频率;分别根据每个所述类型字段的使用频率,对所述类型字段进行编码。所述第一电路71具体用于:所述分别根据每个所述类型字段的使用频率,对所述类型字段进行霍夫曼编码。
可选地,所述第二电路72用于:确定待匹配的第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度;基于所述第一TLV的起始地址,确定长度为所述编码长度的数据为所述第一TLV中的类型字段对应的编码,并且基于所述第一TLV的起始地址,偏移所述待匹配的第一TLV中的类型字段的编码长度之后,确定第一偏移地址;从所述第一偏移地址开始,确定长度为所述第一TLV中的值字段的长度的数据为所述第一TLV中的值字段;根据所述第一TLV中的类型字段和值字段对所述报文执行相应的动作;根据所述第一TLV的起始地址、所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度,确定第二TLV的起始地址,并将所述第二TLV作为新的第一TLV,对所述报文执行所述新的第一TLV相应的动作,直至执行完所述动作集中的所有动作。其中,所述第二TLV为所述第一TLV中的下一条TLV。
具体地,如图4所示,所述第二电路72包括:多个节点,所述多个节点构成与所述霍夫曼编码对应的霍夫曼树;即霍夫曼树是一个数字电路,该霍夫曼树中的各个节点之间的连接关系、树的深度等都是根据霍夫曼编码确定的,所述第二电路72具体用于:根据所述第一TLV遍历所述霍夫曼树;遍历成功,确定所述第一TLV中的类型字段的编码长度,该霍夫曼树的每个叶子节点中存储一个类型字段对应的标识或者该TLV对应的程序入口地址。其中,遍历过程即将第一TLV对应的编码与霍夫曼树进行匹配,直到匹配到一条链路编码,则可以确定该链路编码即为第一TLV中类型字段对应的编码,并且可以确定该类型字段的编码长度。
进一步地,所述第二电路72具体用于:基于所述第一TLV的起始地址,偏移所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度之后,确定所述第二TLV的起始地址。
更进一步地,图8为本发明另一实施例提供的一种报文处理装置的结构示意图,如图8所示,该装置还包括:第三电路73;所述第三电路73与所述第二电路72为主备关系;即第三电路73与第二电路72的结构类似,比如:都可以是霍夫曼树,当所述第二电路72执行报文处理过程时,则所述第三电路73根据控制命令调整所述第三电路的结构;当所述第三电路73执行报文处理过程时,则所述第二电路72根据控制命令调整所述第二电路的结构,其中,该控制命令是控制器发送给第二电路72或者第三电路73的。
第二电路72和第三电路73可以基于表项entry选择使用,这样在运行时可以针对类型字段的使用概率的变化动态修改霍夫曼树,而不至于影响正常的报文处理过程,从而可以提高压缩效率,设置主备关系的第二电路72和第三电路73也可应用于无损升级,软件更新等场景。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种报文处理方法,其特征在于,包括:
依次匹配报文与流表中的至少一条规则;
若所述报文与任一条规则匹配成功,则对所述报文依次执行所述任一条规则中的,至少一条类型、长度和值TLV对应的动作集;
其中,所述TLV中的类型字段的编码长度与所述类型字段的使用频率成反比。
2.根据权利要求1所述的方法,其特征在于,还包括:
在预设时间段内,获取每条所述TLV中的类型字段的使用频率;
分别根据每个所述类型字段的使用频率,对所述类型字段进行编码。
3.根据权利要求2所述的方法,其特征在于,所述分别根据每个所述类型字段的使用频率,对所述类型字段进行编码,包括:
分别根据每个所述类型字段的使用频率,对所述类型字段进行霍夫曼编码。
4.根据权利要求3所述的方法,其特征在于,所述对所述报文依次执行所述任一条规则中的,至少一条类型、长度和值TLV对应的动作集,包括:
确定待匹配的第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度;
基于所述第一TLV的起始地址,确定长度为所述编码长度的数据为所述第一TLV中的类型字段对应的编码,并且基于所述第一TLV的起始地址,偏移所述待匹配的第一TLV中的类型字段的编码长度之后,确定第一偏移地址;
从所述第一偏移地址开始,确定长度为所述第一TLV中的值字段的长度的数据为所述第一TLV中的值字段;
根据所述第一TLV中的类型字段和值字段对所述报文执行相应的动作;
根据所述第一TLV的起始地址、所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度,确定第二TLV的起始地址,并将所述第二TLV作为新的第一TLV,对所述报文执行所述新的第一TLV相应的动作,直至执行完所述动作集中的所有动作;
其中,所述第二TLV为所述第一TLV中的下一条TLV。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一TLV的起始地址、所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度,确定第二TLV的起始地址,包括:
基于所述第一TLV的起始地址,偏移所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度之后,确定所述第二TLV的起始地址。
6.一种报文处理装置,其特征在于,包括:相连接的第一电路和第二电路;
所述第一电路,用于依次匹配报文与流表中的至少一条规则;
若所述报文与任一条规则匹配成功,则所述第二电路对所述报文依次执行所述任一条规则中的,至少一条类型、长度和值TLV对应的动作集;
其中,所述TLV中的类型字段的编码长度与所述类型字段的使用频率成反比。
7.根据权利要求6所述的装置,其特征在于,所述第一电路还用于:
在预设时间段内,获取每条所述TLV中的类型字段的使用频率;
分别根据每个所述类型字段的使用频率,对所述类型字段进行编码。
8.根据权利要求7所述的装置,其特征在于,所述第一电路具体用于:
根据每个所述类型字段的使用频率,对所述类型字段进行霍夫曼编码。
9.根据权利要求8所述的装置,其特征在于,所述第二电路用于:
确定待匹配的第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度;
基于所述第一TLV的起始地址,确定长度为所述编码长度的数据为所述第一TLV中的类型字段对应的编码,并且基于所述第一TLV的起始地址,偏移所述待匹配的第一TLV中的类型字段的编码长度之后,确定第一偏移地址;
从所述第一偏移地址开始,确定长度为所述第一TLV中的值字段的长度的数据为所述第一TLV中的值字段;
根据所述第一TLV中的类型字段和值字段对所述报文执行相应的动作;
根据所述第一TLV的起始地址、所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度,确定第二TLV的起始地址,并将所述第二TLV作为新的第一TLV,对所述报文执行所述新的第一TLV相应的动作,直至执行完所述动作集中的所有动作;
其中,所述第二TLV为所述第一TLV中的下一条TLV。
10.根据权利要求9所述的装置,其特征在于,所述第二电路包括:多个节点,所述多个节点构成与所述霍夫曼编码对应的霍夫曼树;
则所述第二电路具体用于:
根据所述第一TLV遍历所述霍夫曼树;
遍历成功,确定所述第一TLV中的类型字段的编码长度。
11.根据权利要求9或10所述的装置,其特征在于,所述第二电路具体用于:
基于所述第一TLV的起始地址,偏移所述第一TLV中的类型字段的编码长度和所述第一TLV中的值字段的长度之后,确定所述第二TLV的起始地址。
12.根据权利要求6-10任一项所述的装置,其特征在于,还包括:第三电路;
所述第三电路与所述第二电路为主备关系;
当所述第二电路执行报文处理过程时,则所述第三电路根据控制命令调整所述第三电路的结构;
当所述第三电路执行报文处理过程时,则所述第二电路根据控制命令调整所述第二电路的结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610179298.6A CN105704028B (zh) | 2016-03-25 | 2016-03-25 | 报文处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610179298.6A CN105704028B (zh) | 2016-03-25 | 2016-03-25 | 报文处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105704028A CN105704028A (zh) | 2016-06-22 |
CN105704028B true CN105704028B (zh) | 2019-02-19 |
Family
ID=56232891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610179298.6A Active CN105704028B (zh) | 2016-03-25 | 2016-03-25 | 报文处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105704028B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193731B (zh) * | 2017-05-12 | 2020-10-27 | 北京理工大学 | 使用控制变异的模糊测试覆盖率改进方法 |
CN107025175A (zh) * | 2017-05-12 | 2017-08-08 | 北京理工大学 | 一种模糊测试种子用例变长字段修剪方法 |
CN107707565B (zh) * | 2017-11-07 | 2020-05-19 | 盛科网络(苏州)有限公司 | 一种udf报文解析芯片 |
CN108234455B (zh) * | 2017-12-14 | 2021-03-19 | 北京东土科技股份有限公司 | 一种报文转发控制方法、装置、计算机装置及存储介质 |
DE102018201433A1 (de) * | 2018-01-31 | 2019-08-14 | Zf Friedrichshafen Ag | Übertragungssystem für Steuerdaten |
CN108599897B (zh) * | 2018-04-09 | 2020-08-11 | 珠海格力电器股份有限公司 | 设备的数据处理方法和装置 |
CN112148694B (zh) * | 2019-06-28 | 2022-06-14 | 华为技术有限公司 | 一种用于电子设备的数据压缩、数据解压方法及电子设备 |
CN112332854A (zh) * | 2020-11-27 | 2021-02-05 | 平安普惠企业管理有限公司 | 霍夫曼编码的硬件实现方法、装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102427428A (zh) * | 2011-12-07 | 2012-04-25 | 西安电子科技大学 | 基于多域最长匹配的流识别方法及设备 |
CN104009921A (zh) * | 2014-04-28 | 2014-08-27 | 开网科技(北京)有限公司 | 基于任意字段匹配的数据报文转发方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101454920B1 (ko) * | 2007-11-27 | 2014-10-28 | 삼성전자주식회사 | 통신 시스템의 슬립 모드에서 레인징 정보 송수신 장치 및 방법 |
US8208405B2 (en) * | 2009-02-27 | 2012-06-26 | Futurewei Technologies, Inc. | Information encoding for impaired optical path validation |
-
2016
- 2016-03-25 CN CN201610179298.6A patent/CN105704028B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102427428A (zh) * | 2011-12-07 | 2012-04-25 | 西安电子科技大学 | 基于多域最长匹配的流识别方法及设备 |
CN104009921A (zh) * | 2014-04-28 | 2014-08-27 | 开网科技(北京)有限公司 | 基于任意字段匹配的数据报文转发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105704028A (zh) | 2016-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105704028B (zh) | 报文处理方法及装置 | |
CN106713047A (zh) | 一种网状网络中的节点升级方法与系统 | |
CN106464713B (zh) | 用于分层压缩的系统和方法 | |
KR101605062B1 (ko) | 통신 장비에 송신될 인코딩된 심벌을 재-인코딩하기 위한 네트워크 재-인코딩 방법 및 디바이스 | |
WO2018103452A1 (zh) | 信息位图的编码、解码方法、装置及存储介质 | |
CN103534969A (zh) | 数据传输方法、基站及用户设备 | |
CN105530449A (zh) | 编码参数调整方法及装置 | |
CN107342773A (zh) | 编码、译码方法及设备 | |
WO2018059548A1 (zh) | 数据发送方法、装置及信源 | |
CN110768899B (zh) | 最短路径的确定方法、装置、存储介质及电子装置 | |
JPWO2003003673A1 (ja) | ルーチング方法、ノード、パケット通信システム、プログラム、及び記録媒体 | |
CN108696492A (zh) | Ip报文的处理方法与装置 | |
DE60211413D1 (de) | Verfahren zur Optimisierung, unter Betriebsmittelzwangsbedingungen, der Grösse von kodierten Datenblöcken | |
CN109995588A (zh) | 一种灵活以太网链路管理方法及系统 | |
CN103888317A (zh) | 一种协议无关的网络冗余流量消除方法 | |
JP7282895B2 (ja) | データの再送復号方法、装置、システム及び通信装置 | |
KR20190034665A (ko) | 폴라 코드들의 코딩 및 디코딩 방법 및 장치 | |
CN106254030B (zh) | 无速率Spinal码的双向编译码方法 | |
CN103166740A (zh) | 一种流量指示图的编码方式及信标帧 | |
CN101621681B (zh) | 一种调节视频通信质量的方法和设备 | |
JP7257523B2 (ja) | エンコーダおよびデコーダにおける変換選択を選択するための方法および装置 | |
CN105188075B (zh) | 语音质量优化方法及装置、终端 | |
Cao et al. | Minimal sets for capacity-approaching variable-length constrained sequence codes | |
CN111597139B (zh) | 一种gpu的通信方法、系统、设备以及介质 | |
CN102982046B (zh) | 一种网页数据压缩存储方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |