CN107124362B - 一种基于子流表分割的流表存储优化方法及装置 - Google Patents
一种基于子流表分割的流表存储优化方法及装置 Download PDFInfo
- Publication number
- CN107124362B CN107124362B CN201610101139.4A CN201610101139A CN107124362B CN 107124362 B CN107124362 B CN 107124362B CN 201610101139 A CN201610101139 A CN 201610101139A CN 107124362 B CN107124362 B CN 107124362B
- Authority
- CN
- China
- Prior art keywords
- flow
- category
- vector
- vectors
- flow table
- 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
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000011218 segmentation Effects 0.000 title claims abstract description 23
- 238000005457 optimization Methods 0.000 title claims abstract description 17
- 239000013598 vector Substances 0.000 claims abstract description 202
- 239000011159 matrix material Substances 0.000 claims description 18
- 238000000638 solvent extraction Methods 0.000 claims description 8
- 238000005192 partition Methods 0.000 claims description 3
- 230000009471 action Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
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/02—Topology update or discovery
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于子流表分割的流表存储优化方法及装置,所述方法包括:根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量;合并相同的流类别向量,并统计出各个流类别向量对应的权重;根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,所述最优流类别向量集合覆盖所述流表中的所有匹配字段;根据所述最优流类别向量集合以及表项依赖图谱进行子流表分割,将所述表项划分到所述子流表中进行存储。
Description
技术领域
本发明涉及软件定义网络领域,尤其涉及一种基于子流表分割的流表存储优化方法及装置。
背景技术
软件定义网络定义了一种控制平面与数据平面解耦合的新型网络架构,网络转发设备中的控制功能被移除出来,成为简单的转发单元。控制平面和数据平面之间通过标准化的接口进行交互,通常,将该接口称为南向接口。OpenFlow协议就是一种在软件定义网络中被广泛接受的南向接口。
控制器和网络转发设备之间采用OpenFlow协议进行交互,控制器将规则下发到转发设备中,转发设备将其存储到流表中,一条规则对应流表中的一个表项,然后转发设备通过查询流表匹配字段,根据指令完成对数据包的动作,包括丢弃、转发和将数据包发送到控制器等。如图1所示,OpenFlow流表存储在内存中。由于功能扩展,随着OpenFlow版本的演进,OpenFlow流表中的匹配字段不断增加,同时也增加了流表的复杂度。流表大小急剧增加,流表的存储成为一个亟需解决的问题。
现有方案中,将流表根据匹配字段的共存关系和冲突关系分割成数张子流表。设D={Fi|1≤i≤d}表示流表T中的一条流表项Ri的d个匹配字段。那么,共存关系定义如下:
Coe={(Fi,Fj)|Fi∈D,Fj∈D,如果Fi存在,则Fj必然存在,如果Fi不存在则Fj也不存在}
例如OpenFlow定义的匹配字段IP_SRC和IP_DST,TCP_SRC和TCP_DST都是共存关系。
冲突关系定义为:
Col={(Fi,Fj)|Fi∈D,Fj∈D,Fi与Fj不能同时存在}
例如TCP_SRC和UDP_SRC就是互斥关系。
根据冲突关系与共存关系,对流表进行初始分割,直至子流表数大于等于限定阈值K,并将初始流表中的表项添加到子流表中存储。在流表更新的过程中,如果子流表中的表项条数超出限定阈值n,则对子流表进行分割操作。如果子流表的个数超过限定阈值K,则对子流表进行合并操作。在整个过程中,没有考虑表项之间的优先级与依赖关系,尽管节省了存储空间,但增加了查找匹配的时间开销。
发明内容
为解决上述技术问题,本发明实施例提供了一种基于子流表分割的流表存储优化方法及装置。
本发明实施例提供的基于子流表分割的流表存储优化方法,包括:
根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量;
合并相同的流类别向量,并统计出各个流类别向量对应的权重;根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,所述最优流类别向量集合覆盖所述流表中的所有匹配字段;
根据所述最优流类别向量集合以及表项依赖图谱进行子流表分割,将所述表项划分到所述子流表中进行存储。
本发明实施例中,所述根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量,包括:
建立流类别向量,所述流类别向量包括所述流表中的所有匹配字段;
针对每一个表项,当所述表项中的匹配字段为空,则将所述流类别向量中对应的匹配字段设置为第一值;当所述表项中的匹配字段不为空,则将所述流类别向量中对应的匹配字段设置为第二值,所述第一值与所述第二值不同。
本发明实施例中,所述合并相同的流类别向量,并统计出各个流类别向量对应的权重,包括:
合并相同的流类别向量,将合并成同一流类别向量的数目作为该流类别向量对应的权重。
本发明实施例中,所述根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,包括:合并相同的流类别向量,建立流类别向量矩阵建立流类别矩阵;
从所述流类别矩阵中提取任意K个流类别向量,得到多组流类别向量集合;所述流类别向量集合能够覆盖流表中的所有匹配字段;K小于等于所有的流类别向量数目;
从所述多组流类别向量集合中,选择权重最大的一组流类别向量集合作为最优流类别向量集合。
本发明实施例中,所述表项依赖图谱包括如下信息:表项的优先级信息和表项之间的依赖关系。
本发明实施例中,所述方法还包括:
计算得到表项依赖图谱;根据所述表项依赖图谱,将具有依赖关系的表项存储到同一子流表中;或者,
对所述表项依赖图谱进行更新,将新下发的表项存储到对应的子流表中。
本发明实施例提供的基于子流表分割的流表存储优化装置,包括:
确定单元,用于根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量;
合并单元,用于合并相同的流类别向量,并统计出各个流类别向量对应的权重;
选择单元,用于根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,所述最优流类别向量集合覆盖所述流表中的所有匹配字段;
分割存储单元,用于根据所述最优流类别向量集合以及表项依赖图谱进行子流表分割,将所述表项划分到所述子流表中进行存储。
本发明实施例中,所述确定单元,还用于建立流类别向量,所述流类别向量包括所述流表中的所有匹配字段;针对每一个表项,当所述表项中的匹配字段为空,则将所述流类别向量中对应的匹配字段设置为第一值;当所述表项中的匹配字段不为空,则将所述流类别向量中对应的匹配字段设置为第二值,所述第一值与所述第二值不同。
本发明实施例中,所述合并单元,还用于合并相同的流类别向量,将合并成同一流类别向量的数目作为该流类别向量对应的权重。
本发明实施例中,所述选择单元,还用于根据所有的流类别向量,合并相同的流类别向量,建立流类别向量矩阵;从所述流类别矩阵中提取任意K个流类别向量,得到多组流类别向量集合;所述流类别向量集合能够覆盖流表中的所有匹配字段;K小于等于所有的流类别向量数目;从所述多组流类别向量集合中,选择权重最大的一组流类别向量集合作为最优流类别向量集合。
本发明实施例中,所述表项依赖图谱包括如下信息:表项的优先级信息和表项之间的依赖关系。
本发明实施例中,所述装置还包括:
更新单元,用于计算得到表项依赖图谱;根据所述表项依赖图谱,将具有依赖关系的表项存储到同一子流表中;或者,对所述表项依赖图谱进行更新,将新下发的表项存储到对应的子流表中。
本发明实施例的技术方案中,根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量;合并相同的流类别向量,并统计出各个流类别向量对应的权重;根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,所述最优流类别向量集合覆盖所述流表中的所有匹配字段;根据所述最优流类别向量集合以及表项依赖图谱进行子流表分割,将所述表项划分到所述子流表中进行存储。此外,流表更新时,计算得到表项依赖图谱;根据所述表项依赖图谱,将具有依赖关系的表项存储到同一子流表中;或者,对所述表项依赖图谱进行更新,将新下发的表项存储到对应的子流表中。可见,本发明实施例引入流表表项的流类别向量,然后将一张流表分割成数张子流表,从而降低各个流表的维度,达到压缩流表存储空间的目的。本发明实施例还充分考虑了流表分割及表项更新所要考虑的流表表项的优先级及依赖性关系问题。通过本发明实施例的方案,可以有效地压缩流表存储空间,并提高流表的查找匹配效率。
附图说明
图1为软件定义网络中网络转发设备架构;
图2为本发明实施例的基于子流表分割的流表存储优化方法的流程示意图;
图3为流表T及其流类别矩;
图4为流类别权重表;
图5为表1流表的流规则间的依赖关系;
图6为本发明实施例提供的基于子流表分割的流表存储优化装置的结构组成示意图。
具体实施方式
为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
本发明实施例中,引入流类别向量α={f1,f2,...,fk},其中,f1到fk为流表T中的所有匹配字段。对于一条流表项Ri,如果fi不为空,那么将fi置为1,反之置为0。例如一张流表的匹配字段为{ETH_SRC,ETH_SRC,IP_SRC,IP_DST,TCP_SRC,TCP_DST}。那么二层交换的以太网分组的匹配字段只需包含二层的信息,其流类别向量可以表示为{1,1,0,0,0,0},三层路由的流类别向量表示为{0,0,1,1,0,0}。
合并相同的流类别向量,生成流类别向量矩阵G,并引入流类别权重的概念,根据权重,选取一个最优的包含k个流类别向量的集合Set,该集合能够覆盖流表中的所有匹配字段。以Set为依据将分割为k个子流表。在流表分割过程中,由于表项之间优先级不同,且每条表项之间存在一定的关联性,即流表是许多规则集合的集合,一个规则集合是一些相互依赖的流表项的集合。引入表项的依赖图谱,将相互依赖的表项存储到同一子流表中。当新增表项时,首先更新依赖图谱,再将新的表项存储到对应的子流表。这样做可以提高表项匹配的速度,提高执行效率。此外,在流表表项更新过程中,当子流表中的表项条数超出限定阈值n,则对子流表进行分割。
本发明实施例提出了一种基于子流表分割的流表存储优化方法,即引入流表表项的流类别向量,将一张流表分割成数张子流表,从而降低各个流表的维度,达到压缩流表存储空间的目的。本发明实施例还充分考虑了流表分割及表项更新所要考虑的流表表项的优先级及依赖性关系问题。通过对本发明实施例的实施,可以有效地压缩流表存储空间,并提高流表的查找匹配效率。本发明实施例的方案以OpenFlow1.3为基准。
图2为本发明实施例的基于子流表分割的流表存储优化方法的流程示意图,如图2所示,所述基于子流表分割的流表存储优化方法包括以下步骤:
步骤201:根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量。
本发明实施例中,所述根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量,包括:
建立流类别向量,所述流类别向量包括所述流表中的所有匹配字段;
针对每一个表项,当所述表项中的匹配字段为空,则将所述流类别向量中对应的匹配字段设置为第一值;当所述表项中的匹配字段不为空,则将所述流类别向量中对应的匹配字段设置为第二值,所述第一值与所述第二值不同。
具体地,设流表T={Ri|1≤i≤n},引入表项的流类别向量α={f1,f2,…,fk}(k≤40,OpenFlow1.3中包含40个匹配字段,其中,13个为必选字段,27个为可选字段),其中f1到fk为T中所包含的匹配字段。那么对于一条流而言,若其某个匹配字段fi不为空,那么将fi置为1,反之将fi置为0。例如假设流表所有匹配字段为{ETH_SRC,ETH_SRC,IP_SRC,IP_DST,TCP_SRC,TCP_DST}。那么二层交换的以太网分组的匹配字段只需包含二层的信息,其流类别向量可以表示为{1,1,0,0,0,0},三层路由的流类别向量表示为{0,0,1,1,0,0}。而对于ACL而言,若其要过滤掉所有的HTTP请求,那么四层的流规则设置为{TCP_DST=80,ACTION:DROP}即可,其流类别向量为{0,0,0,0,0,1}。由于只有f=1的匹配字段才携带有效的信息。因此,可以利用流表分割的方式,将不同流类别的表项划分到不同的子流表中存储。
步骤202:合并相同的流类别向量,并统计出各个流类别向量对应的权重;根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,所述最优流类别向量集合覆盖所述流表中的所有匹配字段。
本发明实施例中,所述合并相同的流类别向量,并统计出各个流类别向量对应的权重,包括:
合并相同的流类别向量,将合并成同一流类别向量的数目作为该流类别向量对应的权重。
本发明实施例中,所述根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,包括:
根据所有的流类别向量,合并相同的流类别向量,建立流类别向量矩阵;
从所述流类别矩阵中提取任意K个流类别向量,得到多组流类别向量集合;所述流类别向量集合能够覆盖流表中的所有匹配字段;K小于等于所有的流类别向量数目;
从所述多组流类别向量集合中,选择权重最大的一组流类别向量集合作为最优流类别向量集合。
具体地,如图3所示,流表中的序号index=1的表项R的流类别向量为
α1={1,1,0,0,0}。遍历流表T的n个表项,获取流表的类型矩阵G,那么流表T的所有流类别可以表示为:
G=[α1,α2,...,αm]T(其中m≤n)
那么对于图3中的流表T而言,可以看到index=1的流和index=3的流的流类别相同,它们均可以用α1来表示,其流类别矩阵G=[α1,α2,α3,α4]T,如图3所示。
设每个流类别向量的权重W的初始值均为0,然后遍历流表T,每遇到一个流类别向量为αi的流,那么αi的权重就加1,当遍历流表T结束时就可以得到一个流类别向量所对应的权重表,例如图4所示。
从流类别矩阵G中取出K个流类别向量的所有set,并从中选取权重最大的set作为最优set。
Set={α1,α2,...,αK}(其中K≤M)
集合set中的所有的流类别需要能够覆盖流表T的所有的匹配字段并满足以下条件:流类别矩阵G中除了set所包含的流类别向量外,剩余的流类别向量都可以被set中的流表类型包含。其数学表示为:
步骤203:根据所述最优流类别向量集合以及表项依赖图谱进行子流表分割,将所述表项划分到所述子流表中进行存储。
本发明实施例中,所述表项依赖图谱包括如下信息:表项的优先级信息和表项之间的依赖关系。
本发明实施例中,所述方法还包括:
计算得到表项依赖图谱;根据所述表项依赖图谱,将具有依赖关系的表项存储到同一子流表中;或者,
对所述表项依赖图谱进行更新,将新下发的表项存储到对应的子流表中。
具体地,为了方便讨论,本提案中把表项的更新分为两个阶段,第一个阶段是网络设备初始化时,OpenFlow控制器为了减少和交换机交互的流量而预先将一张流表下发到OpenFlow交换机中。本提案讨论如何将流表中的表项添加到各个已经分割好的子流表中。第二个阶段是交换机收到新的流请求而查询不到匹配表项时与控制器交互,然后控制器将新的表项下发到OpenFlow交换机。由于流表的组织结构对控制器是透明的,控制器下发的无疑是符合流表存储结构的表项,如何将该流表项更新到子流表中也是要讨论的问题。
OpenFlow流表的表项Ra和Rb间的依赖关系d(Ra,Rb)定义为:
即存在一个分组被Ra,Rb匹配,但优先级在Priority(Ra)和Priority(Rb)之间的表项均不匹配该分组。那么表项Ra的依赖集合D(Ra),即为对D(Ra)中的任意表项R而言,d(Ra,R)均成立。
D(Ra)={R|(R∈T)∧d(Ra,R)}
因此,一张流表可以用依赖集合图来表示。以表1的流表为例。
Rule | Match | Action |
R<sub>1</sub> | 0000 | Forward port1 |
R<sub>2</sub> | 11** | Forward port 2 |
R<sub>3</sub> | 000* | Forward port 3 |
R<sub>4</sub> | 1*1* | Forward port 4 |
R<sub>5</sub> | 0**0 | Forward port 5 |
R<sub>6</sub> | 10*1 | Drop Packet |
表1
由上述依赖关系的定义可知,表1中,R1,R3和R5组成相互依赖的规则集合,而R2,R4和R6组成另外一个规则集合。表项依赖图可以表示为图5所示。
由图5可知,依赖图谱是个无环图。采用这个方法,表项的更新就变得很简明,在第一阶段OpenFlow交换机初始化预装流表时,可以计算得到流表的依赖关系图谱。然后将相互依赖的表项存储到同一子流表中。而第二阶段的表项的实时更新,首先对依赖图谱进行更新,然后再将新下发的表项存储到对应的子流表。
此外,当某个子流表的表项个数大于其门限值n,则对其进行分割,以进一步压缩存储空间。如果子流表的流类别向量只有一种,那么构造一个匹配字段一致的新子流表,然后从此往后将新更新的此类流表项都添加到其中。但是,如果子流表包含多种类型的流表项,那么就按照前述的思路分割子流表。
图6为本发明实施例提供的基于子流表分割的流表存储优化装置的结构组成示意图,如图6所示,所述装置包括:
确定单元61,用于根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量;
合并单元62,用于合并相同的流类别向量,并统计出各个流类别向量对应的权重;
选择单元63,用于根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,所述最优流类别向量集合覆盖所述流表中的所有匹配字段;
分割存储单元64,用于根据所述最优流类别向量集合以及表项依赖图谱进行子流表分割,将所述表项划分到所述子流表中进行存储。
本发明实施例中,所述确定单元61,还用于建立流类别向量,所述流类别向量包括所述流表中的所有匹配字段;针对每一个表项,当所述表项中的匹配字段为空,则将所述流类别向量中对应的匹配字段设置为第一值;当所述表项中的匹配字段不为空,则将所述流类别向量中对应的匹配字段设置为第二值,所述第一值与所述第二值不同。
本发明实施例中,所述合并单元62,还用于合并相同的流类别向量,将合并成同一流类别向量的数目作为该流类别向量对应的权重。
本发明实施例中,所述选择单元63,还用于根据所有的流类别向量,合并相同的流类别向量,建立流类别向量矩阵;从所述流类别矩阵中提取任意K个流类别向量,得到多组流类别向量集合;所述流类别向量集合能够覆盖流表中的所有匹配字段;K小于等于所有的流类别向量数目;从所述多组流类别向量集合中,选择权重最大的一组流类别向量集合作为最优流类别向量集合。
本发明实施例中,所述表项依赖图谱包括如下信息:表项的优先级信息和表项之间的依赖关系。
本发明实施例中,所述装置还包括:
更新单元65,用于计算得到表项依赖图谱;根据所述表项依赖图谱,将具有依赖关系的表项存储到同一子流表中;或者,对所述表项依赖图谱进行更新,将新下发的表项存储到对应的子流表中。
本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种基于子流表分割的流表存储优化方法,其特征在于,所述方法包括:
根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量;
合并相同的流类别向量,并统计出各个流类别向量对应的权重;根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,所述最优流类别向量集合覆盖所述流表中的所有匹配字段;
根据所述最优流类别向量集合以及表项依赖图谱进行子流表分割,将所述表项划分到所述子流表中进行存储;
其中,所述合并相同的流类别向量,并统计出各个流类别向量对应的权重,包括:
合并相同的流类别向量,将合并成同一流类别向量的数目作为该流类别向量对应的权重;
所述根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,包括:
根据所有的流类别向量,合并相同的流类别向量,建立流类别向量矩阵;
从所述流类别矩阵中提取任意K个流类别向量,得到多组流类别向量集合;所述流类别向量集合能够覆盖流表中的所有匹配字段;K为正整数且小于等于所有的流类别向量数目;
从所述多组流类别向量集合中,选择权重最大的一组流类别向量集合作为最优流类别向量集合。
2.根据权利要求1所述的基于子流表分割的流表存储优化方法,其特征在于,所述根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量,包括:
建立流类别向量,所述流类别向量包括所述流表中的所有匹配字段;
针对每一个表项,当所述表项中的匹配字段为空,则将所述流类别向量中对应的匹配字段设置为第一值;当所述表项中的匹配字段不为空,则将所述流类别向量中对应的匹配字段设置为第二值,所述第一值与所述第二值不同。
3.根据权利要求1所述的基于子流表分割的流表存储优化方法,其特征在于,所述表项依赖图谱包括如下信息:表项的优先级信息和表项之间的依赖关系。
4.根据权利要求3所述的基于子流表分割的流表存储优化方法,其特征在于,所述方法还包括:
计算得到表项依赖图谱;根据所述表项依赖图谱,将具有依赖关系的表项存储到同一子流表中;或者,
对所述表项依赖图谱进行更新,将新下发的表项存储到对应的子流表中。
5.一种基于子流表分割的流表存储优化装置,其特征在于,所述装置包括:
确定单元,用于根据流表中的匹配字段是否为空,确定所述流表中各个表项的流类别向量;
合并单元,用于合并相同的流类别向量,并统计出各个流类别向量对应的权重;
选择单元,用于根据各个流类别向量对应的权重,从所有流类别向量中选择一组最优流类别向量集合,所述最优流类别向量集合覆盖所述流表中的所有匹配字段;
分割存储单元,用于根据所述最优流类别向量集合以及表项依赖图谱进行子流表分割,将所述表项划分到所述子流表中进行存储;
所述合并单元,还用于合并相同的流类别向量,将合并成同一流类别向量的数目作为该流类别向量对应的权重;
所述选择单元,还用于根据所有的流类别向量,合并相同的流类别向量,建立流类别向量矩阵;从所述流类别矩阵中提取任意K个流类别向量,得到多组流类别向量集合;所述流类别向量集合能够覆盖流表中的所有匹配字段;K为正整数且小于等于所有的流类别向量数目;从所述多组流类别向量集合中,选择权重最大的一组流类别向量集合作为最优流类别向量集合。
6.根据权利要求5所述的基于子流表分割的流表存储优化装置,其特征在于,所述确定单元,还用于建立流类别向量,所述流类别向量包括所述流表中的所有匹配字段;针对每一个表项,当所述表项中的匹配字段为空,则将所述流类别向量中对应的匹配字段设置为第一值;当所述表项中的匹配字段不为空,则将所述流类别向量中对应的匹配字段设置为第二值,所述第一值与所述第二值不同。
7.根据权利要求5所述的基于子流表分割的流表存储优化装置,其特征在于,所述表项依赖图谱包括如下信息:表项的优先级信息和表项之间的依赖关系。
8.根据权利要求7所述的基于子流表分割的流表存储优化装置,其特征在于,所述装置还包括:
更新单元,用于计算得到表项依赖图谱;根据所述表项依赖图谱,将具有依赖关系的表项存储到同一子流表中;或者,对所述表项依赖图谱进行更新,将新下发的表项存储到对应的子流表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610101139.4A CN107124362B (zh) | 2016-02-24 | 2016-02-24 | 一种基于子流表分割的流表存储优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610101139.4A CN107124362B (zh) | 2016-02-24 | 2016-02-24 | 一种基于子流表分割的流表存储优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107124362A CN107124362A (zh) | 2017-09-01 |
CN107124362B true CN107124362B (zh) | 2019-12-20 |
Family
ID=59717753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610101139.4A Active CN107124362B (zh) | 2016-02-24 | 2016-02-24 | 一种基于子流表分割的流表存储优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107124362B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111431929B (zh) * | 2020-04-08 | 2020-11-13 | 清华大学 | 软件定义网络多协议区分流表构建方法和系统 |
CN112511438B (zh) * | 2020-11-19 | 2022-12-13 | 锐捷网络股份有限公司 | 一种利用流表转发报文的方法、装置及计算机设备 |
CN113645137B (zh) * | 2021-08-02 | 2022-05-31 | 清华大学 | 一种软件定义网络多级流表压缩方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103368851B (zh) * | 2013-07-22 | 2016-03-23 | 武汉烽火网络有限责任公司 | 基于资源复用的Openflow流表存储优化方法 |
CN104348716B (zh) * | 2013-07-23 | 2018-03-23 | 新华三技术有限公司 | 一种报文处理方法及设备 |
CN104580027B (zh) * | 2013-10-25 | 2018-03-20 | 新华三技术有限公司 | 一种OpenFlow报文转发方法及设备 |
CN103560963B (zh) * | 2013-11-18 | 2016-08-17 | 中国科学院计算机网络信息中心 | 一种OpenFlow流表存储空间压缩方法 |
WO2015199743A1 (en) * | 2014-06-25 | 2015-12-30 | Hewlett-Packard Development Company, L.P. | Selecting an optimal network device for reporting flow table misses upon expiry of a flow in a software defined network |
-
2016
- 2016-02-24 CN CN201610101139.4A patent/CN107124362B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107124362A (zh) | 2017-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8750144B1 (en) | System and method for reducing required memory updates | |
US10715585B2 (en) | Packet processor in virtual filtering platform | |
CN105122745B (zh) | 用于网络设备的高效最长前缀匹配技术 | |
US9438505B1 (en) | System and method for increasing capacity in router forwarding tables | |
CN105897584B (zh) | 路径规划方法和控制器 | |
US20120066410A1 (en) | Data structure, method and system for address lookup | |
US10459729B2 (en) | Map tables for hardware tables | |
CN107124362B (zh) | 一种基于子流表分割的流表存储优化方法及装置 | |
US11762826B2 (en) | Search apparatus, search method, program and recording medium | |
CN105634974B (zh) | 软件定义网络中的路由确定方法和装置 | |
US9141677B2 (en) | Apparatus and method for arranging query | |
CN115426312B (zh) | 一种大规模多模态网络中标识管理及优化转发方法和装置 | |
CN109376789B (zh) | 一种网络包分类算法与系统 | |
US20150256450A1 (en) | Generating a Shape Graph for a Routing Table | |
EP3560148B1 (en) | Database functions-defined network switch | |
US11080274B2 (en) | Best-efforts database functions | |
US20120109913A1 (en) | Method and system for caching regular expression results | |
Krumke et al. | On minimizing the maximum flow time in the online dial-a-ride problem | |
Sun et al. | Software-defined flow table pipeline | |
CN115917473A (zh) | 用分布式lpm实现的高度可扩展算法构建数据结构的系统 | |
US20180113627A1 (en) | Method of Accessing Data for a Switch by Using Sub-flow Entry Tables | |
CN105049315B (zh) | 一种基于虚拟网络分割的虚拟网络改进映射方法 | |
CN106063228A (zh) | 利用准确匹配的一致性哈希在硬件负载平衡的应用 | |
US8316151B1 (en) | Maintaining spatial ordering in firewall filters | |
US7647592B2 (en) | Methods and systems for assigning objects to processing units |
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 |