CN104821890A - 一种基于普通交换芯片的OpenFlow多级流表的实现方法 - Google Patents

一种基于普通交换芯片的OpenFlow多级流表的实现方法 Download PDF

Info

Publication number
CN104821890A
CN104821890A CN201510141725.7A CN201510141725A CN104821890A CN 104821890 A CN104821890 A CN 104821890A CN 201510141725 A CN201510141725 A CN 201510141725A CN 104821890 A CN104821890 A CN 104821890A
Authority
CN
China
Prior art keywords
stream
list item
packet
openflow
implementation method
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.)
Pending
Application number
CN201510141725.7A
Other languages
English (en)
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.)
SHANGHAI BAUD DATA COMMUNICATION CO Ltd
Original Assignee
SHANGHAI BAUD DATA COMMUNICATION 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 SHANGHAI BAUD DATA COMMUNICATION CO Ltd filed Critical SHANGHAI BAUD DATA COMMUNICATION CO Ltd
Priority to CN201510141725.7A priority Critical patent/CN104821890A/zh
Publication of CN104821890A publication Critical patent/CN104821890A/zh
Pending legal-status Critical Current

Links

Abstract

本发明公开了一种基于普通交换芯片的OpenFlow多级流表的实现方法,其由网络设备维护一个或者若干个多级流表,并且数据流只按照这些流表进行转发,所述流表由一些关键字和执行动作组成的灵活规则,并且每个关键字字段都是可以通配的,流表本身的生成、维护、下发完全由外置的控制器来管理。在实际应用中,网络管理人员可以通过配置流表项中具体的匹配关键字来决定使用何种粒度的流转发规则。其优点为可以集中控制多厂商的环境,通过自动化减少复杂性,更高的创新,提高网络的可靠性和安全性,更细粒度的网络控制,以及更好的用户体验。

Description

一种基于普通交换芯片的OpenFlow多级流表的实现方法
技术领域
本发明涉及数据通信领域,特别涉及一种基于普通交换芯片的OpenFlow多级流表的实现方法。
背景技术
随着数据通信设备的复杂程度不断提高,云计算及其业务的发展,服务器的应用需求产生了爆炸性的增长,随着社交网络,移动互联网,物联网等业务领域的快速发展,大数据正日益成为当前的焦点,其面向的海量数据处理也对当今的网络提出了更高的要求。传统的网络架构已经不能够满足今天的企业,运营商和终端用户的需求。
发明内容
鉴于上述技术问题,本发明的目的在于提供一种基于普通交换芯片的OpenFlow多级流表的实现方法,以满足现有网络对数据通信处理的要求。
为了达到上述目的,本发明采用如下的技术方案:
一种基于普通交换芯片的OpenFlow多级流表的实现方法,该方法由网络设备维护一个或者若干个多级流表(FlowTable),并且数据流只按照这些流表进行转发,所述流表由一些关键字和执行动作组成的灵活规则,并且每个关键字字段都是可以通配的,流表本身的生成、维护、下发完全由外置的控制器(Controller)来管理。
优选的,所述多级流表(FlowTable)的下发可以是主动的,也可以是被动的,在主动模式下,控制器(Controller)将自己收集的流表信息主动下发给网络设备,随后网络设备可以直接根据流表进行转发;在被动模式下,网络设备收到一个报文没有匹配的流表(FlowTable)记录时,将该报文转发给控制器(Controller),由控制器(Controller)进行决策该如何转发,并下发相应的流表。
优选的,所述多级流表(FlowTable)里设有pipeline管道,基于该pipeline管道形成报文处理流水线,整个处理流程在报文入方向有32个匹配阶段(Match Stage),同时在报文出方向有32个匹配阶段(Match Stage)。
优选的,所述pipeline管道基于以下三个步骤来实现:
a)找到对应流表中最高优先级的匹配项;
b)将匹配项中的指令(instructions)应用到packet、match、action上,并更新对应流表中的动作信息;
c)将报文中的匹配项和动作集送往多级流表中的下一个表(table)。如果没有在多级流表的所有的表(table)中匹配,那么有多种默认行为可以实现,如丢包、继续下一个表、发往controller。
优选的,所述流表由流量实体(Flow Entry)组成,一个流表中包含多个流表项。
优选的,所述流表流表项包括匹配字段(Match Fields)、计数器和指令集三个部分,所述匹配字段(Match Fields)是报文匹配的输入关键字,计数器是管理所需,指令集是决定报文如何转发,最基本的转发行为包括转发给某个端口、封装改写报文后转发以及丢弃。
优选的,所述流表项通过匹配字段和优先级决定,在一个流表中匹配字段和优先级共同确定唯一的流表项,其中所有字段通配和优先级等于0的流表项为table-miss流表项,所述table-miss表项指定在流表中如何处理与其他流表项未匹配的数据包。
优选的,在进行流表项匹配时,优先级最高的流表项必须被选择,此时与选择流表项相关的计数器也会被更新,选定流表项的指令集也被执行。
优选的,对于table-miss表项,默认情况下,在流表中不存在table-miss表项,控制器可以在任何时候添加或删除它,而且它可能会超时失效,able-miss表项可以匹配流表中其他表项中不能匹配的数据,当数据包与table-miss表项匹配时,table-miss表项指令就会执行,如果该table-miss表项直接将数据包通过CONTROLLER端口发送到控制器,那么报文中的信息必须与一个table-miss表项匹配;如果该table-miss表项不存在,默认情况下,流表项无法将数据包丢弃。
优选的,所述多级流表(FlowTable)按顺序编号,从0开始,据此构成的流水线处理总是从第一流表开始,数据包第一个与流表0的流表项匹配,其它流表根据第一个表的匹配结果来调用。
优选的,所述流表进行处理时,将数据包与流表中的流表项进行匹配,从而选择流表项,如果匹配到了流表项,那么包括在该流表项的指令集被执行时,这些指令可能明确指导数据包传递到另一个流表,在那里同样的处理被重复执行。
优选的,数据包与流表中的流表项进行匹配时,从数据包中提取相应的数据包匹配字段,利用该数据包匹配字段基于流水线处理进行表查找,该数据包匹配字段依赖于数据包类型,该类型包括各种数据包的报头字段;数据包匹配字段中的值用于查找匹配的流表项,如果流表项字段具有值的ANY(表示任意字段),则可以匹配报头中的所有可能的值;如果相应的交换机支持任意的位掩码对特定的匹配字段,这些掩码可以更精确地进行匹配。
优选的,除了通过数据包报头字段进行匹配,也可以通过入口端口和元数据字段进行匹配。
优选的,流表项只能指导数据包到大于自己表号的流表,如果匹配的流表项并没有指导数据包到另一个流表,流水线处理将停止在该表中,当流水线处理停止,数据包被与之相关的行动集处理并通常被转发;如果数据包在流表中没有匹配到流表项,这是一个table-miss的行为,table-miss行为依赖于表的配置。
优选的,所述流表项可以通过控制器的请求或交换机流超时机制在流表中删除。
本发明提供的OpenFlow的多级流表实现方案可以集中控制多厂商的环境,通过自动化减少复杂性,更高的创新,提高网络的可靠性和安全性,更细粒度的网络控制,以及更好的用户体验。
本方案基于远程控制端Controller和OpenFlow多级流表实现,可以满足现有网络的需求,对于网络,逻辑上集中的控制层面能够支持网络资源的灵活调度,开放的接口能够支持网络能力的按需调度,标准的统一能够实现网络的虚拟透明。其能够有力的为云计算,大数据,日益增长的移动互联需求提供更高效,安全,方便的网络支持。
附图说明
以下结合附图和具体实施方式来进一步说明本发明。
图1为本发明方法中OpenFlow概念图。
图2为本发明方法中OpenFlow流表结构。
图3为本发明方法中OpenFlow流水线流表结构。
图4为本发明方法中OpenFlow多级流表匹配流程。
图5为本发明方法中OpenFlow多级流表处理流程。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
参见图1,本发明提供的基于普通交换芯片实现的OpenFlow多级流表,其主要是网络设备(如相应的OpenFlow交换机)维护一个或者若干个流表(FlowTable),并且数据流只按照这些流表进行转发;该流表本身的生成、维护完全由外置的控制器(Controller)来管理,流表并非仅指普通的IP五元组,而是由一些关键字和执行动作组成的灵活规则,并且每个关键字字段都是可以通配的。在实际应用中,网络管理人员可以通过配置流表项中具体的匹配关键字来决定使用何种粒度的流转发规则。
如图所示,本方案维护的OpenFlow多级流表,在表里面里设有相应的pipeline管道,基于该pipeline管道形成报文处理流水线。参见图5,整个处理流程中没有任何跟具体的协议相关的处理,只有很中性的Match Stage(匹配阶段),在报文入方向(Ingress Processing)和出方向各有32个。对应到OpenFlow里面,形成相应的多级流表,即为整个OpenFlow协议在交换机里处理的流程。
这里的pipeline管道可以用三个步骤来描述:
a)找到对应流表中最高优先级的匹配项;
b)将匹配项中的指令(instructions)应用到packet、match、action上,并更新对应信息;
c)将报文中的匹配项和动作集送往多级流表中的下一个表(table)。如果没有在多级流表的所有的表(table)中匹配,那么有多种默认行为可以实现,如丢包、继续下一个表、发往controller。
这里的流表由流量实体(Flow Entry)组成,一个流表中包含多个流表项。
参见图2,流表流表项包括匹配字段(Match Fields)、计数器和指令集三个部分,所述匹配字段(Match Fields)是报文匹配的输入关键字,计数器是管理所需,指令集是决定报文如何转发,最基本的转发行为包括转发给某个端口、封装改写报文后转发以及丢弃。
流表项通过匹配字段和优先级决定,在一个流表中匹配字段和优先级共同确定唯一的流表项。所有字段通配(所有字段省略)和优先级等于0的流表项被称为table-miss流表项。
如图4所示,进行流匹配,先从table 0开始匹配,不断的update action set(通过instructions),如果不跳转表那么就即刻执行action set。如果发生了tablemiss,也即没有match任何一条表项,那么可以丢包/发给controller/特殊处理等。
大部分match的行为都是直观的,比如mac匹配,ipv4匹配。值得一提的是metadata,在spec中写到“Metadata may be used to pass information betweentables in a switch.”意思就是metadata(可以)用作table之间的标记。
另外需要说明的,报文在一个表中只会匹配优先级最大的一条flow,但如果有多条优先级相同的flow,那么这个flow选取动作在spec中是未定义的。OVS会直接随机挑选一条。(这个场景仅在CONTROLLER不设置OFPFF_CHECK_OVERLAP项时才会出现,此时存在“重叠流”)IP分片会在进入pipeline过程前直接重组好。所以在这里可能要考虑分片的性能问题。
再者,本方案中的每一个流表还都支持能处理table-miss的流表项。table-miss表项指定在流表中如何处理与其他流表项未匹配的数据包。比如数据包发送到控制器,丢弃数据包或直接将包扔到后续的表。
table-miss的流表项也有它的匹配字段和优先级,它通配所有匹配字段(所有领域省略),并具有最低的优先级(0)。table-miss流表项的匹配可能不属于正常范围内流表支持的匹配,例如精确匹配表可能不支持在其他流表项中使用通配符,但必须支持table-miss的通配符流表项。table-miss流表项可能没有与正常流表项相同的能力。交换机最好支持和OpenFlow的以前版本的处理能力相同的table-miss流表项:将数据包发送到控制器,丢弃数据包或直接发到后续的表。
table-miss表项的行为在许多方面像任何其它流表项:默认情况下,在流表中不存在table-miss表项。控制器可以在任何时候添加或删除它,而且它可能会超时失效。table-miss流表项可以匹配流表中其他表项中不能匹配的数据。当数据包与table-miss表项匹配时,table-miss表项指令就会执行。如果该table-miss表项直接将数据包通过CONTROLLER端口发送到控制器,那么报文中的信息必须与一个table-miss表项匹配。
如果该table-miss表项不存在,默认情况下,流表项无法将数据包丢弃。一个交换机的配置,例如使用OpenFlow的配置协议,可以覆盖此默认值,指定其他行为。
再者,本方案中的流表项可以通过两种方式在流表中删除,控制器的请求或交换机流超时机制。
交换机流超时机制运行基于相关的控制器和流表项的状态和配置。每个流的表项具有一个和它相关的idle_timeout和hard_timeout值。如果两个值中有一个不为零,交换机必须注意的流表项的老化时间,因为交换机可能删除该项。如果给定非零hard_timeout的值,那么一段时间后,可以导致流表项被删除,无论有多少数据包与之匹配。如果给定非零idle_timeout的值,那么如果在一段时间没有报文与之匹配,可以导致流表项被删除。交换机必须实现流表项超时和删除功能。
该控制器可积极的从流表中通过发送流表修改信息(OFPFC_DELETE,或OFPFC_DELETE_STRICT)删除流表项。流表项被删除时,无论是控制器控制或流表项超时机制,交换机必须检查流表项的OFPFF_SEND_FLOW_REM标志。如果该标志被设置,该交换机必须将流删除消息发送到控制器。每个流清除消息中包含的流表项的完整的描述、清除的原因(超时或删除),在清除时的流表项的持续时间,在清除时的流的统计数据。
基于上述流表进行的OpenFlow的流水线处理定义了数据包如何与那些流表进行交互。OpenFlow交换机需要具有流表中的至少一个,并可以有更多的可选择的流表。只有一个单一的流表的OpenFlow交换机是有效的,而且在这种情况下流水线处理进程可以大大简化。
参见图3,OpenFlow交换机的流表按顺序编号的,从0开始。流水线处理总是从第一流表开始:数据包第一个与流表0的流表项匹配。其他流表根据第一个表的匹配结果来调用。
根据某个流表进行处理时,将数据包与流表中的流表项进行匹配,从而选择流表项。如果匹配到了流表项,那么包括在该流表项的指令集被执行时,这些指令可能明确指导数据包传递到另一个流表,在那里同样的处理被重复执行。表项只能指导数据包到大于自己表号的流表,换句话说流水线处理,只能前进,而不能后退。据此,流水线的最后一个表项可以不包括GOTO指令。如果匹配的流表项并没有指导数据包到另一个流表,流水线处理将停止在该表中。当流水线处理停止,数据包被与之相关的行动集处理并通常被转发。如果数据包在流表中没有匹配到流表项,这是一个table-miss的行为。table-miss行为依赖于表的配置。一个table-miss的流表中的表项可以指定如何处理无法匹配的数据包:包括丢弃,传递到另一个表中,或凭借数据包中的信息通过控制通道发送到控制器。
具体的,OpenFlow交换机在接收一个数据包时,基于图3中所示的流水线流表结构,交换机开始执行一个查找表中的第1流表,并基于流水线处理,也可能在其它流表中执行表查找。从数据包中提取相应的数据匹配字段,用于表查找,该数据包匹配字段依赖与数据包类型,这些类型通常包括各种数据包的报头字段,如以太网源地址或IPv4目的地址。除了通过数据包报头中进行匹配,也可以通过入口端口和原数据字段进行匹配。原数据可以用来在一个交换机的不同表里面传递信息。报文匹配字段表示报文的当前状态,如果在前一个表中使用Apply-Actions改变了数据包的报头,那么这些变化也会在数据包匹配字段中反映。
数据包匹配字段中的值用于查找匹配的流表项。如果流表项字段具有值的ANY(字段省略)(表示任意字段),它就可以匹配报文头中的所有可能的值。如果交换机支持任意的位掩码对特定的匹配字段,这些掩码可以更精确地进行匹配。
数据包与表进行匹配时,优先级最高的表项必须被选择,此时与选择流表项相关的计数器也会被更新,选定流表项的指令集也被执行。如果有多个匹配的流表项具有相同的最高的优先级的,所选择的流表项被确定为未定义表项。只有控制器记录器在传统的流信息中没有设置OFPFF_CHECK_OVERLAP位并且增加了重复的表项的时候,这种情况才能出现。
如果在流水线处理前,交换机配置包含OFPC_FRAG_REASM标志,IP碎片必须被重新组装。当交换机接收到一个格式不正确或损坏的数据包,直接丢弃该错误的数据包,不做其余处理。
以下通过一实例来进一步说明本发明的方案:
由上方案可知,这方案中涉及的FlowTable并非是指IP五元组,以OpenFlow 1.0为例,其定义了包括端口号、VLAN、L2/L3/L4信息的10个关键字,但是每个字段都是可以通配的,网络的运营商可以决定使用何种粒度的流,比如运营商只需要根据目的IP进行路由,那么流表中就可以只有目的IP字段是有效的,其它全为通配。
这种控制和转发分离的架构对于L2交换设备而言,意味着MAC地址的学习由Controller来实现,V-LAN和基本的L3路由配置也由Controller下发给交换机。对于L3设备,各类IGP/EGP路由运行在Controller之上,Controller根据需要下发给相应的路由器。流表的下发可以是主动的,也可以是被动的:主动模式下,Controller将自己收集的流表信息主动下发给网络设备,随后网络设备可以直接根据流表进行转发;被动模式是指网络设备收到一个报文没有匹配的FlowTable记录时,将该报文转发给Controller,由后者进行决策该如何转发,并下发相应的流表。
被动模式的好处是网络设备无需维护全部的流表,只有当实际的流量产生时才向Controller获取流表记录并存储,当老化定时器超时后可以删除相应的流表,故可以大大节省TCAM空间。当一个Controller同时控制多个交换机/路由器设备时,相当于一个大的逻辑交换机,各个交换机/路由器硬件就如同这个逻辑网络设备的远程线卡,例如在Cisco的Nexus 1000/1000v、ASR9000/9000v和Juniper的Q-Fabric架构方案,称之为nV(NetworkVirtualization)技术。
OpenFlow 1.0协议的流表具体分为Match Fields、计数器和指令集三个部分,Match Fields是报文匹配的输入关键字,计数器是管理所需,指令集是决定报文如何转发,最基本的转发行为包括转发给某个端口、封装改写报文后转发以及丢弃。
另外OpenFlow 1.1协议还增加了对MPLS以及UDP/SCTP传输层协议的支持,同时针对流表开销过大的情况设计了多级流表,并增加分组策略功能。
据此,本实例以一数据通信设备为例具体说明,该数据通信设备包括了一台Controller设备、若干允许OpenFlow功能模块的交换机单板所连接的网络。所有上述单板都包含运行所需的OpenFlow多级流表。
由此,在报文进到交换芯片之中,首先是进行解析。传统的芯片通常是用硬编码(hard code)的方式来把所有已知的报文解析出来,简单明了,但是如果有新的协议报文,其就无能为力了,只能再重新开发一颗芯片。而在这个OpenFlow模型中,并不使用硬编码,而是查表的方式,从报文L2/L3/L4(即2层/3层/4层)的Type位置取到相应的Type(类型),然后用这个Type去查表,表里面的内容是用户可配的,里面的每条表项都存放了一个特定的Type、它所对应的L2/L3/L4甚至L7的header length以及需要匹配的字段的偏移和长度。通过这种方式,即使有了新的协议,用户也可以通过编程的方式,往这个解析表里面加一条新的报文类型,足以让芯片把这种报文给解析出来。
参见图3,本实例方案中的多级流表包括以下三部分:
1、多级流表Flowtable本身的生成、维护、下发完全由外置的Controller来实现。流表的下发可以是主动的,也可以是被动的,主动模式下,Controller将自己收集的流表信息主动下发给网络设备,随后网络设备可以直接根据流表进行转发;被动模式是指网络设备收到一个报文没有匹配的FlowTable记录时,将该报文转发给Controller,由后者进行决策该如何转发,并下发相应的流表。
2、一个报文进到交换机里面,报文进到芯片之中,首先是进行解析。然后进行查表,在每一级流表里面,就像OpenFlow标准所定义的那样,它不再区分是要做路由查找还是二层Mac查找或者MPLS/Trill/Fcoe/PBB/Nat查找,而是确定要用报文中的哪些字段组合去做匹配查找,查找完之后出什么样的动作,而且一级流表处理后的部分结果可以作为下一级流表处理的输入参数,所有这一切都是中性的、协议无关的。
在每一级流表的查找结果里面都包含一个信息,这个信息是告诉下一个流表(第一级流表所需要的这个信息通过端口上的配置给出),用什么字段组合来进行Hash查找。这样就可以用大量的SRAM来做,同时为了灵活性,每一级流表都还会在下面放一块TCAM,万一SRAM查不到,可以用TCAM来做默认的查找。另外,每一级流表都可以出任意的动作,包括报文编辑和转发,其中报文编辑可以针对每一个字段做独立的处理。
3、解析什么样的报文是可编程的,每级流表用什么字段来做查找,查找后执行的动作都是可编程的。另外,入方向处理和出方向处理每个最多都可以有32级流表,但并不是永远固定为32个,如果不需要这么多,也可以将多个流表的Memory合并成一个,这就意味着流表数量以及每张流表的大小也都是灵活可编程的。同时由于每个流表所用的查找字段是可变的,即每个流表的表项宽度也是可变的,所有一切都是可编程的。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (15)

1.一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述实现方法由网络设备维护一个或者若干个多级流表,并且数据流只按照这些流表进行转发,所述流表由一些关键字和执行动作组成的灵活规则,并且每个关键字字段都是可以通配的,流表本身的生成、维护、下发完全由外置的控制器来管理。
2.根据权利要求1所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述多级流表的下发可以是主动的,也可以是被动的,在主动模式下,控制器将自己收集的流表信息主动下发给网络设备,随后网络设备可以直接根据流表进行转发;在被动模式下,网络设备收到一个报文没有匹配的流表记录时,将该报文转发给控制器,由控制器进行决策该如何转发,并下发相应的流表。
3.根据权利要求1所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述多级流表里设有pipeline管道,基于该pipeline管道形成报文处理流水线,整个处理流程在报文入方向有32个中的MatchStage(匹配阶段),同时在报文出方向有32个中的Match Stage(匹配阶段)。
4.根据权利要求3所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述pipeline管道基于以下三个步骤来实现:
a)找到对应流表中最高优先级的匹配项;
b)将匹配项中的指令应用到packet、match、action上,并更新对应流表中的动作信息;
c)将报文中的匹配项和动作集送往多级流表的下一个表。
5.根据权利要求1-3中任一项所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述流表由流量实体组成,一个流表中包含多个流表项。
6.根据权利要求5所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述流表流表项包括匹配字段、计数器和指令集三个部分,所述匹配字段是报文匹配的输入关键字,计数器是管理所需,指令集是决定报文如何转发,最基本的转发行为包括转发给某个端口、封装改写报文后转发以及丢弃。
7.根据权利要求6所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述流表项通过匹配字段和优先级决定,在一个流表中匹配字段和优先级共同确定唯一的流表项,其中所有字段通配和优先级等于0的流表项为table-miss流表项,所述table-miss表项指定在流表中如何处理与其他流表项未匹配的数据包。
8.根据权利要求6所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,在进行流表项匹配时,优先级最高的流表项必须被选择,此时与选择流表项相关的计数器也会被更新,选定流表项的指令集也被执行。
9.根据权利要求7所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,对于table-miss表项,默认情况下,在流表中不存在table-miss表项,控制器可以在任何时候添加或删除它,而且它可能会超时失效,able-miss表项可以匹配流表中其他表项中不能匹配的数据,当数据包与table-miss表项匹配时,table-miss表项指令就会执行,如果该table-miss表项直接将数据包通过CONTROLLER端口发送到控制器,那么报文中的信息必须与一个table-miss表项匹配;如果该table-miss表项不存在,默认情况下,流表项无法将数据包丢弃。
10.根据权利要求5中任一项所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述流表项可以通过控制器的请求或交换机流超时机制在流表中删除。
11.根据权利要求5-10中任一项所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述多级流表按顺序编号,从0开始,据此构成的流水线处理总是从第一流表开始,数据包第一个与流表0的流表项匹配,其它流表根据第一个表的匹配结果来调用。
12.根据权利要求11所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,所述流表进行处理时,将数据包与流表中的流表项进行匹配,从而选择流表项,如果匹配到了流表项,那么包括在该流表项的指令集被执行时,这些指令可能明确指导数据包传递到另一个流表,在那里同样的处理被重复执行。
13.根据权利要求12中任一项所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,数据包与流表中的流表项进行匹配时,从数据包中提取相应的数据包匹配字段,利用该数据包匹配字段基于流水线处理进行表查找,该数据包匹配字段依赖于数据包类型,该类型包括各种数据包的报头字段;数据包匹配字段中的值用于查找匹配的流表项,如果流表项字段具有值的ANY,则可以匹配报头中的所有可能的值;如果相应的交换机支持任意的位掩码对特定的匹配字段,这些掩码可以更精确地进行匹配。
14.根据权利要求13中任一项所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,除了通过数据包报头字段进行匹配,也可以通过入口端口和元数据字段进行匹配。
15.根据权利要求12中任一项所述的一种基于普通交换芯片的OpenFlow多级流表的实现方法,其特征在于,流表项只能指导数据包到大于自己表号的流表,如果匹配的流表项并没有指导数据包到另一个流表,流水线处理将停止在该表中,当流水线处理停止,数据包被与之相关的行动集处理并通常被转发;如果数据包在流表中没有匹配到流表项,这是一个table-miss的行为,table-miss行为依赖于表的配置。
CN201510141725.7A 2015-03-27 2015-03-27 一种基于普通交换芯片的OpenFlow多级流表的实现方法 Pending CN104821890A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510141725.7A CN104821890A (zh) 2015-03-27 2015-03-27 一种基于普通交换芯片的OpenFlow多级流表的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510141725.7A CN104821890A (zh) 2015-03-27 2015-03-27 一种基于普通交换芯片的OpenFlow多级流表的实现方法

Publications (1)

Publication Number Publication Date
CN104821890A true CN104821890A (zh) 2015-08-05

Family

ID=53732063

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510141725.7A Pending CN104821890A (zh) 2015-03-27 2015-03-27 一种基于普通交换芯片的OpenFlow多级流表的实现方法

Country Status (1)

Country Link
CN (1) CN104821890A (zh)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105187325A (zh) * 2015-10-27 2015-12-23 上海斐讯数据通信技术有限公司 一种sdn流表管理方法及系统、交换机
CN105553851A (zh) * 2015-12-10 2016-05-04 中国电子科技集团公司第三十二研究所 基于sdn的网络处理器微码和流表实现装置及方法
CN106535274A (zh) * 2015-09-14 2017-03-22 中国移动通信集团公司 一种实现动态网络连接的方法及系统
CN106888176A (zh) * 2015-12-15 2017-06-23 瑞昱半导体股份有限公司 网路装置及其控制方法
CN106961412A (zh) * 2016-01-11 2017-07-18 中国移动通信集团公司 一种报文转换方法、装置及系统
CN107347036A (zh) * 2016-05-06 2017-11-14 中华电信股份有限公司 用于开放流中优化流的系统及方法
CN107528794A (zh) * 2016-06-19 2017-12-29 华为技术有限公司 一种数据处理方法和装置
CN107566298A (zh) * 2016-06-30 2018-01-09 华为技术有限公司 一种生成表项的方法和设备
CN107623635A (zh) * 2017-10-30 2018-01-23 深圳市德赛微电子技术有限公司 一种网络交换芯片可识别流表的智能匹配方法
CN108337172A (zh) * 2018-01-30 2018-07-27 长沙理工大学 大规模OpenFlow流表分级存储架构与加速查找方法
CN108600107A (zh) * 2017-11-07 2018-09-28 北京交通大学 一种可自定义内容字段的流匹配方法
CN108989219A (zh) * 2018-07-11 2018-12-11 中国人民解放军陆军工程大学 一种基于多级流表的多优先级路由转发系统及方法
CN111050339A (zh) * 2019-12-19 2020-04-21 中国科学院信息工程研究所 一种基于协议无感知转发的高速数据更新系统及方法
CN111211999A (zh) * 2019-11-28 2020-05-29 中国船舶工业系统工程研究院 一种基于ovs的实时虚拟网络的实现方法
CN111277612A (zh) * 2020-05-08 2020-06-12 常州楠菲微电子有限公司 一种网络报文处理策略生成方法、系统及介质
CN111585903A (zh) * 2020-04-13 2020-08-25 华南理工大学 一种OpenFlow流表项自适应超时的方法及系统
CN112217919A (zh) * 2020-12-11 2021-01-12 广东省新一代通信与网络创新研究院 一种用于实现网络地址转换的方法及系统
CN112217779A (zh) * 2019-07-10 2021-01-12 罗伯特·博世有限公司 用于分析面向服务的通信的方法和设备
CN113824609A (zh) * 2021-08-16 2021-12-21 紫光云(南京)数字技术有限公司 一种sdn控制器雷达探测方法
CN114374648A (zh) * 2020-10-14 2022-04-19 芯启源(南京)半导体科技有限公司 一种np芯片结合tcam实现智能网卡的方法
CN114710434A (zh) * 2022-03-11 2022-07-05 深圳市风云实业有限公司 一种基于OpenFlow交换机的多级流表构建方法
CN115086450A (zh) * 2022-06-01 2022-09-20 珠海高凌信息科技股份有限公司 一种可编程数据平面架构、流表更新方法及交换机

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2408155A1 (en) * 2009-03-09 2012-01-18 Nec Corporation Openflow communication system and openflow communication method
CN102594664A (zh) * 2012-02-02 2012-07-18 杭州华三通信技术有限公司 流量转发方法和装置
CN102843299A (zh) * 2012-09-12 2012-12-26 盛科网络(苏州)有限公司 基于TCAM实现Openflow多级流表的方法及系统
CN102859952A (zh) * 2010-04-19 2013-01-02 日本电气株式会社 交换机和流表控制方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2408155A1 (en) * 2009-03-09 2012-01-18 Nec Corporation Openflow communication system and openflow communication method
CN102859952A (zh) * 2010-04-19 2013-01-02 日本电气株式会社 交换机和流表控制方法
CN102594664A (zh) * 2012-02-02 2012-07-18 杭州华三通信技术有限公司 流量转发方法和装置
CN102843299A (zh) * 2012-09-12 2012-12-26 盛科网络(苏州)有限公司 基于TCAM实现Openflow多级流表的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OPENNETWORKING FOUNDATION: "OpenFlow Switch Specification Version 1.3.0", 《OPENFLOW SWITCH SPECIFICATION》 *

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106535274A (zh) * 2015-09-14 2017-03-22 中国移动通信集团公司 一种实现动态网络连接的方法及系统
CN105187325A (zh) * 2015-10-27 2015-12-23 上海斐讯数据通信技术有限公司 一种sdn流表管理方法及系统、交换机
CN105553851A (zh) * 2015-12-10 2016-05-04 中国电子科技集团公司第三十二研究所 基于sdn的网络处理器微码和流表实现装置及方法
CN106888176B (zh) * 2015-12-15 2019-11-29 瑞昱半导体股份有限公司 网路装置及其控制方法
CN106888176A (zh) * 2015-12-15 2017-06-23 瑞昱半导体股份有限公司 网路装置及其控制方法
CN106961412A (zh) * 2016-01-11 2017-07-18 中国移动通信集团公司 一种报文转换方法、装置及系统
CN106961412B (zh) * 2016-01-11 2020-04-24 中国移动通信集团公司 一种报文转换方法、装置及系统
CN107347036A (zh) * 2016-05-06 2017-11-14 中华电信股份有限公司 用于开放流中优化流的系统及方法
CN107528794A (zh) * 2016-06-19 2017-12-29 华为技术有限公司 一种数据处理方法和装置
US11012542B2 (en) 2016-06-19 2021-05-18 Huawei Technologies Co., Ltd. Data processing method and apparatus
CN107528794B (zh) * 2016-06-19 2021-01-15 华为技术有限公司 一种数据处理方法和装置
CN107566298A (zh) * 2016-06-30 2018-01-09 华为技术有限公司 一种生成表项的方法和设备
CN107566298B (zh) * 2016-06-30 2021-11-19 华为技术有限公司 一种生成表项的方法和设备
CN107623635A (zh) * 2017-10-30 2018-01-23 深圳市德赛微电子技术有限公司 一种网络交换芯片可识别流表的智能匹配方法
CN107623635B (zh) * 2017-10-30 2020-07-21 深圳市德赛微电子技术有限公司 一种网络交换芯片可识别流表的智能匹配方法
CN108600107A (zh) * 2017-11-07 2018-09-28 北京交通大学 一种可自定义内容字段的流匹配方法
CN108600107B (zh) * 2017-11-07 2021-06-01 北京交通大学 一种可自定义内容字段的流匹配方法
CN108337172A (zh) * 2018-01-30 2018-07-27 长沙理工大学 大规模OpenFlow流表分级存储架构与加速查找方法
CN108337172B (zh) * 2018-01-30 2020-09-29 长沙理工大学 大规模OpenFlow流表加速查找方法
CN108989219B (zh) * 2018-07-11 2021-09-28 中国人民解放军陆军工程大学 一种基于多级流表的多优先级路由转发系统及方法
CN108989219A (zh) * 2018-07-11 2018-12-11 中国人民解放军陆军工程大学 一种基于多级流表的多优先级路由转发系统及方法
CN112217779A (zh) * 2019-07-10 2021-01-12 罗伯特·博世有限公司 用于分析面向服务的通信的方法和设备
CN111211999A (zh) * 2019-11-28 2020-05-29 中国船舶工业系统工程研究院 一种基于ovs的实时虚拟网络的实现方法
CN111050339A (zh) * 2019-12-19 2020-04-21 中国科学院信息工程研究所 一种基于协议无感知转发的高速数据更新系统及方法
CN111050339B (zh) * 2019-12-19 2021-01-01 中国科学院信息工程研究所 一种基于协议无感知转发的高速数据更新系统及方法
CN111585903B (zh) * 2020-04-13 2021-09-21 华南理工大学 一种OpenFlow流表项自适应超时的方法及系统
CN111585903A (zh) * 2020-04-13 2020-08-25 华南理工大学 一种OpenFlow流表项自适应超时的方法及系统
CN111277612B (zh) * 2020-05-08 2020-08-07 常州楠菲微电子有限公司 一种网络报文处理策略生成方法、系统及介质
CN111277612A (zh) * 2020-05-08 2020-06-12 常州楠菲微电子有限公司 一种网络报文处理策略生成方法、系统及介质
CN114374648A (zh) * 2020-10-14 2022-04-19 芯启源(南京)半导体科技有限公司 一种np芯片结合tcam实现智能网卡的方法
CN114374648B (zh) * 2020-10-14 2024-03-19 芯启源(南京)半导体科技有限公司 一种np芯片结合tcam实现智能网卡的方法
CN112217919A (zh) * 2020-12-11 2021-01-12 广东省新一代通信与网络创新研究院 一种用于实现网络地址转换的方法及系统
CN113824609A (zh) * 2021-08-16 2021-12-21 紫光云(南京)数字技术有限公司 一种sdn控制器雷达探测方法
CN114710434A (zh) * 2022-03-11 2022-07-05 深圳市风云实业有限公司 一种基于OpenFlow交换机的多级流表构建方法
CN114710434B (zh) * 2022-03-11 2023-08-25 深圳市风云实业有限公司 一种基于OpenFlow交换机的多级流表构建方法
CN115086450A (zh) * 2022-06-01 2022-09-20 珠海高凌信息科技股份有限公司 一种可编程数据平面架构、流表更新方法及交换机
CN115086450B (zh) * 2022-06-01 2023-11-17 珠海高凌信息科技股份有限公司 一种可编程数据平面装置、流表更新方法及交换机

Similar Documents

Publication Publication Date Title
CN104821890A (zh) 一种基于普通交换芯片的OpenFlow多级流表的实现方法
EP2926513B1 (en) Packet prioritization in a software-defined network implementing openflow
EP2795872B1 (en) System for flexible and extensible flow processing in software-defined networks
CN103765839B (zh) 用于网络设备内的分组处理的基于变量的转发路径结构
US8964752B2 (en) Method and system for flow table lookup parallelization in a software defined networking (SDN) system
EP2795874B1 (en) Controller for flexible and extensible flow processing in software-defined networks
TWI520530B (zh) 封包交換裝置及方法
US8576841B2 (en) Hybrid port range encoding
EP2677704B1 (en) Unicast data frame transmission method and apparatus
US9590922B2 (en) Programmable and high performance switch for data center networks
CN101789949B (zh) 一种实现负荷分担的方法和路由设备
WO2014183518A1 (zh) 一种实现数据包转发的方法及系统
US20170317922A1 (en) Apparatus and method for enabling flexible key in a network switch
CN110380966A (zh) 一种发现转发路径的方法及其相关设备
Pawar et al. Segmented proactive flow rule injection for service chaining using SDN
CN105207904A (zh) 报文的处理方法、装置和路由器
Hantouti et al. A novel SDN-based architecture and traffic steering method for service function chaining
KR102001487B1 (ko) 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치
EP3104562B1 (en) Method of aggregation of flows in ict networks
US9191319B2 (en) Packet transmission system, method and non-transitory computer readable storage medium of the same
Sun et al. A Collaborated IPv6-Packets Matching Mechanism Base on Flow Label in OpenFlow
CN104468359A (zh) 报文转发方法和设备
CN117221201A (zh) 报文发送的方法、网络设备及系统
CN115348206A (zh) 一种路由获取方法、装置、存储介质及电子装置
WO2019050423A1 (ru) Способ организации автоматической балансировки потоков многопоточного соединения на коммутационных устройствах с использованием их самообучения

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20150805

RJ01 Rejection of invention patent application after publication