CN108259353B - 一种基于匹配字段具体值重复率的多级流表设计方法 - Google Patents
一种基于匹配字段具体值重复率的多级流表设计方法 Download PDFInfo
- Publication number
- CN108259353B CN108259353B CN201810024377.9A CN201810024377A CN108259353B CN 108259353 B CN108259353 B CN 108259353B CN 201810024377 A CN201810024377 A CN 201810024377A CN 108259353 B CN108259353 B CN 108259353B
- Authority
- CN
- China
- Prior art keywords
- flow table
- field
- flow
- tag
- decomposition
- 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/54—Organization of routing tables
-
- 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
Abstract
本发明公开了一种基于匹配字段具体值重复率的多级流表设计方法。它包括如下步骤:1)控制器管理交换机内的单级流表,记标号为0(记为Table(0)),定义由该流表转化生成的多级流表的最大标号为K;2)定义当前流表的最大标号,记为m,若m=K,则结束;3)计算Table(m)内部的所有非Tag字段的分解增益G,若最大的分解增益等于0,则结束;4)挑选Table(m)内分解增益最大的一个字段,记为字段X,并在该流表内添加Tag字段,记为字段T,为字段T创建与字段X一一对应的值;5)新建流表Table(m+1);6)为Table(m)添加table‑miss表项,动作为跳转到下一级流表;7)跳转到第2)步。本发明采用上述方法,解决了单级流表向多级流表转化的问题,减少了流表的存储空间。
Description
技术领域
本发明涉及新型网络管理领域,尤其涉及一种基于匹配字段具体值重复率的多级流表设计方法。
背景技术
SDN的核心思想是将网络设备的控制平面与数据平面在物理上进行解耦,允许控制器在远端对网络流量进行灵活控制,为网络应用的创新提供良好的平台。OpenFlow是目前SDN的核心技术之一,它将网络中具备一定特征的数据包都看作一个“流”,控制器根据软件定义的业务逻辑,通过下发流表项以指导数据平面对“流”的处理。OpenFlow v1.0中,数据平面中只有一级流表,所有流表项都存于其中。当网络规模较大,上层业务逻辑较复杂时,这种单流表的设计会暴露出一些弊端,除了会造成数据平面流表资源的浪费外,单级流表还会制约应用平面的开发,甚至会给OpenFlow网络的运行和维护带来诸多不便。究其原因,首先在单级流表架构下,数据包只能进行一次匹配,难以实现一些复杂的网络业务逻辑;其次,即使开发者可以通过精心设计满足上层复杂的业务逻辑,也会不可避免地造成应用组件间的高度耦合,难以实现网络应用的增量式开发;还有,使用单级流表设计网络,所有的转发逻辑都将混在一起,这将使OpenFlow网络的维护工作变得异常困难。针对这些问题,OpenFlow v1.1及其后续版本的协议提出多级流表技术以解决上述由单流表造成的瓶颈。
从OpenFlow v1.0版本协议中定义的流表开始,每条流表项中的匹配字段从传统网络设备中包分类使用的五元组拓展到了超过十元组,不仅匹配字段的宽度增加,而且网络应用中的不同功能的组合使得流表中的流表项数据爆炸性的剧增。OpenFlow v1.3中已引入了40个匹配字段,流表项中匹配域的总长度超过了1227Bits。因此如果采用单级流表进行保存,OpenFlow交换机中能支持的流表项数量将会非常有限。而在当前的数据中心网络中,部署网络业务所需的流表项的数目是非常庞大的。另外,对于单级流表来说,流表项之间存在冗余度过高的问题,造成流表空间浪费。单级流表实现不同的网络服务功能会导致功能之间耦合度过高、业务逻辑过于复杂、维护困难等问题。多级流表技术的出现在一定程度上可以解决上述问题。
多级流表的出现,最直观地解决了交换机流表空间中流表项数量过于庞大的问题。可以通过对单级流表进行流表项特征的提取,按照给定的方法将流表项分解到不同的流表中,把数据包的匹配分解成多个过程以流水线的形式进行匹配。这样能够在一定程度上降低OpenFlow交换机空间内流表项的数量。另外,可以将不同服务功能的流表项下发到指定的流表内,使得不同流表之间所实现的网络功能耦合度下降,解耦了同一网络节点的网络服务功能。从而能够一定程度上降低流表项之间的耦合度,减少流表项数量,压缩流表存储空间,使流表的存储更加高效。
现有大多数高速数据包处理器主要是基于TCAM 或者Hash来实现,但TCAM存在成本高、功耗大和表项更新复杂的问题。Guerra Perez等人提出了一个用于取代TCAM的多匹配域的多级流表查找模型,并设计了多种可以进行多维查找的可以实现不同应用需求(例如MAC学习)的过滤器。葛敬国等人提出H-SOFT(Heuristic Storage space Optimisationalgorithm for Flow Table)算法,实现了单级流表向多级流表的转化。他们通过分析OpenFlow v1.3中的13个必要字段的逻辑关系,提出了“互斥字段”和“共存字段”的概念,以进行流表项的裁剪。但他们一味地裁剪流表项而忽略了裁剪后本属于同一条流表项的子流表项间的逻辑关联,这样会影响后面流表项的查找与匹配。刘中金等提出一种OpenFlow多级流表结构及其映射算法,将单一流表映射到多级流表中进行高效存储和查找, 该方法比单一流表的存储方法节省17%-95% 的TCAM 资源。但是该TCAM 资源映射方法需要进行多次映射运算,同时优化结果波动性较大。
发明内容
为了克服现有技术的不足,本发明提供了一种基于匹配字段具体值重复率的多级流表设计方法。
一种基于匹配字段具体值重复率的多级流表设计方法,包括如下步骤:
1-1)控制器管理交换机内的单级流表,记标号为0,该流表记为Table(0),同时定义由该流表转化生成的流表的最大标号为K;
1-2)确认当前流表的最大标号,记为m,若m=K,则结束本方法;
1-3)计算Table(m)内部的所有非Tag字段的分解增益G,若最大的分解增益等于0,则结束本方法;
1-4)挑选Table(m)内分解增益最大的一个字段,记为字段X,并在该流表内添加Tag字段,记为字段T,为字段T创建与字段X一一对应的值;
1-5)新建流表Table(m+1),对Table(m)中所有流表项进行操作,将除字段X以外的所有匹配字段及动作移动到Table(m+1)中,并将原流表项的动作改为将Tag字段的值设为y,y即是该流表项Tag字段的值,跳转到Table(m+1),合并Table(m)中的相同流表项;
1-6)为Table(m)添加table-miss表项,动作为跳转到下一级流表 ;
1-7)跳转到第1-2)步;
所述的步骤1-2)中,提出了分解增益G,作为流表分解的依据,即设一个流表内有M条流表项,有n个字段,且字段i中的每个具体值占的比特数为L_i,字段i有N_i个不重复的值,则字段i的分解增益G_i=(M-N_i)*L_i。
所述的步骤1-4)中,选用OpenFlow协议规定的metadata作为Tag字段。
所述的步骤1-5)中,通过OpenFlow协议里的Write-Metadata动作来修改metadata的值。
本发明具有如下有益效果:
OpenFlow v1.0中,数据平面中只有一级流表,所有流表项都存于其中。当网络规模很大时,会造成数据平面流表资源的浪费。通过提出的多级流表划分方法,能够压缩交换机空间内流表的存储空间并且能在一定程度上减少流表项的数量。
具体实施方式
下面结合实施例对本发明做进一步阐述和说明。
我们在“合并一个字段内的相同值”的思想上,提出了分解增益的概念,并根据每个字段的分解增益大小作为流表转化时流表项分解的依据。同时,通过OpenFlow协议里的write-Metadata动作,对流表中的相关字段进行修改,作为数据包在多级流表流水线中跳转的临时标记,以保证整个查找过程的准确。本发明在节省存储空间的同时,更贴近OpenFlow多级流表的流水线模式,不通过映射进行流表项查找,节省了映射的时间。
一种基于匹配字段具体值重复率的多级流表设计方法,包括如下步骤:
1)控制器管理交换机内的单级流表,记标号为0(记为Table(0),下同),同时确定由该流表转化生成的多级流表的最大标号为K;
2)确认当前流表的最大标号,记为m,若m=K,则结束本方法;
3)计算Table(m)内部的所有非Tag字段的分解增益G,若最大的分解增益等于0,则结束本方法;
4)挑选Table(m)内分解增益最大的一个字段,记为字段X,并在该流表内添加Tag字段,记为字段T,为字段T创建与字段X一一对应的值(若字段X的值为空,则该条流表项的T字段也为空);
5)新建流表Table(m+1),对Table(m)中所有流表项进行操作,将除字段X以外的所有匹配字段及动作移动到Table(m+1)中,并将原流表项的动作改为将Tag字段的值设为y(y即是该流表项Tag字段的值)和跳转到Table(m+1),合并Table(m)中的相同流表项;
6)为Table(m)添加table-miss表项,动作为跳转到下一级流表;
7)跳转到第2)步。
所述的步骤2)中,提出了分解增益G的概念,作为流表分解的依据。设一个流表内有M条流表项,有n个字段,且字段i中的每个具体值占的比特数为L_i,字段i有N_i个不重复的值,则字段i的分解增益G_i=(M-N_i)*L_i。
所述的步骤4)中,我们选用metadata作为Tag字段。在OpenFlow协议中,metadata的主要作用是在交换机的流表间传递信息。同时,它也可以作为匹配域中的匹配字段进行流表项匹配。metadata里有48位,我们可以根据需求选择一定的位数,将这几位作为一个标签字段
所述的步骤5)中,我们通过OpenFlow协议里的Write-Metadata动作来修改metadata的值。
实施例
为了便于本领域一般技术人员理解和实施本发明,现结合表格进一步说明本发明的技术方案,给出一种本发明所述方法的具体实施方式。以下是一个单级流表向多级流表转化的具体步骤。
假定一个OpenFlow交换机中的单级流表内存在A、B、C匹配字段的流表项。为了多级流表分解增益G计算的方便,令A、B、C三个匹配字段的位宽都相等,为48Bits。当前流表内总共拥有10条流表项,此时匹配字段的存储总空间为1440Bits,且流表级数的最大标号K=5。原流表Table(0)如表1所示。
1)按照步骤1-1),本次转化的最大流表标号为5。
2)按照步骤1-2),由于当前流表为单级流表,所以流表级数的最大标号为0。因为0小于5,所以继续进行下面的步骤。
3)按照步骤1-3),计算Table(0)内各字段的分解增益,可得字段A的分解增益为G_A=(10-4)*48=288Bits、G_B=(10-5)*48=240Bits、G_C=(10-10)*48=0。
4)按照步骤1-4),由于字段A在Table(0)中的分解增益最大,所以先对字段A进行处理。我们在该流表内添加Tag字段,记为Tag_A,唯一标记字段A的值(如表2所示)。
5)按照步骤1-5),新建流表Table(1),将除字段A以外的所有匹配字段及动作移动到Table(1)中,并修改原流表项的动作,将metadata的值变为该流表项中Tag_A的值和跳转到Table(1),合并Table(0)中的相同流表项(如表3、4所示)。
6)按照步骤1-6),为Table(0) 添加table-miss流表项(如表5所示)。
7)按照步骤1-2),此时交换机内流表的最大标号是2,小于5。
8)按照步骤1-3),计算Table(1)中的非Tag字段的增益G_B=240Bits、G_C=0。
)按照步骤1-4),此时,Table(1)中的非Tag字段中分解增益最大是字段B,因此为字段B添加Tag字段,记为Tag_B(如表6所示)。
10)按照步骤1-5),新建流表Table(2),将除字段B以外的所有匹配字段及动作移动到Table(2)中,并修改原流表项的动作,将metadata的值变为该流表项中Tag_B的值和跳转到Table(2),合并Table(1)中的相同流表项(如表7、8所示)。
11)按照步骤1-6),为Table(1)添加table-miss流表项。
12)按照步骤1-2),此时交换机内流表的最大标号为3,小于5。
13)按照步骤1-3),此时Table(2)中的非Tag字段只剩下字段C,其分解增益为0,因此转化过程到此结束。
在本实施例中,原始流表的存储空间M_0=1440Bits。因为Tag_A和Tag_B的值小于8个,所以我们选择两个3bit的字段替代二者。因此,转化后的流表的存储空间
M_1=4*48+5*48+10*(3+3+48)=972Bits。等式右边的三项分别是Table0、Table1和Table2三张流表的存储空间。乘号的左边是每张流表内的流表项的数量,右边是每条流表项的存储空间。最后计算节省的存储空间比例:
λ=(M_1-M_0)/M_0=(1440Bits-972Bits)/1440Bits*100%=32.5%。
Claims (3)
1.一种基于匹配字段具体值重复率的多级流表设计方法,其特征在于,包括如下步骤:
1-1)控制器管理交换机内的单级流表,记标号为0,该流表记为Table(0),同时定义由该流表转化生成的流表的最大标号为K;
1-2)确认当前流表的最大标号,记为m,若m=K,则结束;
1-3)计算Table(m)内部的所有非Tag字段的分解增益G,若最大的分解增益等于0,则结束;
1-4)挑选Table(m)内分解增益最大的一个字段,记为字段X,并在该流表内添加Tag字段,记为字段T,为字段T创建与字段X一一对应的值;
1-5)新建流表Table(m+1),对Table(m)中所有流表项进行操作,将除字段X以外的所有匹配字段及动作移动到Table(m+1)中,并将原流表项的动作改为将Tag字段的值设为y,y即是该流表项Tag字段的值,跳转到Table(m+1),合并Table(m)中的相同流表项;
1-6)为Table(m)添加table-miss表项,动作为跳转到下一级流表 ;
1-7)跳转到第1-2)步;
所述的步骤1-2)中,提出了分解增益G,作为流表分解的依据,即设一个流表内有M条流表项,有n个字段,且字段i中的每个具体值占的比特数为L_i,字段i有N_i个不重复的值,则字段i的分解增益G_i=(M-N_i)*L_i。
2.根据权利要求1所述的方法,其特征在于,所述的步骤1-4)中,选用OpenFlow协议规定的metadata作为Tag字段。
3.根据权利要求1所述的方法,其特征在于,所述的步骤1-5)中,通过OpenFlow协议里的Write-Metadata动作来修改metadata的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810024377.9A CN108259353B (zh) | 2018-01-10 | 2018-01-10 | 一种基于匹配字段具体值重复率的多级流表设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810024377.9A CN108259353B (zh) | 2018-01-10 | 2018-01-10 | 一种基于匹配字段具体值重复率的多级流表设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108259353A CN108259353A (zh) | 2018-07-06 |
CN108259353B true CN108259353B (zh) | 2021-02-26 |
Family
ID=62725965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810024377.9A Active CN108259353B (zh) | 2018-01-10 | 2018-01-10 | 一种基于匹配字段具体值重复率的多级流表设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108259353B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113645137B (zh) * | 2021-08-02 | 2022-05-31 | 清华大学 | 一种软件定义网络多级流表压缩方法及系统 |
CN114448886A (zh) * | 2021-12-28 | 2022-05-06 | 天翼云科技有限公司 | 一种流表的处理方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103354522B (zh) * | 2013-06-28 | 2016-08-10 | 华为技术有限公司 | 一种多级流表查找方法和装置 |
US9838305B2 (en) * | 2013-07-11 | 2017-12-05 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method, system and apparatus for an OpenFlow hybrid architecture network device |
US9712431B2 (en) * | 2013-07-17 | 2017-07-18 | Kt Corporation | Methods for managing transaction in software defined network |
CN104426762A (zh) * | 2013-08-30 | 2015-03-18 | 中兴通讯股份有限公司 | 一种传输、接收元数据的方法、开放流逻辑交换机 |
CN104468357B (zh) * | 2013-09-16 | 2019-07-12 | 中兴通讯股份有限公司 | 流表的多级化方法、多级流表处理方法及装置 |
CN103729427B (zh) * | 2013-12-25 | 2017-08-29 | 南京未来网络产业创新有限公司 | 一种基于自定义多级流表增量更新的流表转换方法 |
CN103744986B (zh) * | 2014-01-20 | 2017-04-19 | 江苏省未来网络创新研究院 | 一种自定义流表中单表多域规则表转换为多表多域规则表的方法 |
US10439962B2 (en) * | 2014-07-25 | 2019-10-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet processing in an OpenFlow switch |
CN104320340A (zh) * | 2014-10-21 | 2015-01-28 | 杭州华三通信技术有限公司 | 软件定义网络中学习源mac地址的方法和装置 |
CN105553851A (zh) * | 2015-12-10 | 2016-05-04 | 中国电子科技集团公司第三十二研究所 | 基于sdn的网络处理器微码和流表实现装置及方法 |
-
2018
- 2018-01-10 CN CN201810024377.9A patent/CN108259353B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108259353A (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103117931B (zh) | 基于哈希表和tcam表的mac地址硬件学习方法及系统 | |
US10230639B1 (en) | Enhanced prefix matching | |
CN103368851B (zh) | 基于资源复用的Openflow流表存储优化方法 | |
CN102484610B (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
CN102308533B (zh) | 对报文进行分类的方法及装置 | |
US20150242429A1 (en) | Data matching based on hash table representations of hash tables | |
US10075375B2 (en) | Method for making flow table multiple levels, and multi-level flow table processing method and device | |
CN102487374B (zh) | 一种访问控制列表实现方法及装置 | |
US20180375773A1 (en) | Technologies for efficient network flow classification with vector bloom filters | |
CN108259353B (zh) | 一种基于匹配字段具体值重复率的多级流表设计方法 | |
CN106547644B (zh) | 增量备份方法和设备 | |
CN101345694A (zh) | 一种快速查找定位和匹配访问控制列表的方法 | |
CN101345707A (zh) | 一种实现IPv6报文分类的方法及设备 | |
CN113806403B (zh) | 一种在智能网卡/dpu内降低查找匹配逻辑资源的方法 | |
Yang et al. | Fast OpenFlow table lookup with fast update | |
CN101778041B (zh) | 路径选择方法、装置和网络设备 | |
CN106487769B (zh) | 一种访问控制列表acl的实现方法及装置 | |
CN105515997A (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN102045412A (zh) | IPv6地址前缀压缩存储方法及设备 | |
CN106802927A (zh) | 一种数据存储方法及查询方法 | |
CN113645137B (zh) | 一种软件定义网络多级流表压缩方法及系统 | |
CN112787938B (zh) | 一种路由表项配置方法及装置 | |
CN108259354B (zh) | 一种基于匹配字段间逻辑关系的多级流表设计方法 | |
CN104252504A (zh) | 数据查询方法、设备和系统 | |
US10242740B2 (en) | T-CAM bier bit-string lookups |
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 |