CN110233800A - 一种开放可编程的报文转发方法和系统 - Google Patents
一种开放可编程的报文转发方法和系统 Download PDFInfo
- Publication number
- CN110233800A CN110233800A CN201910386365.5A CN201910386365A CN110233800A CN 110233800 A CN110233800 A CN 110233800A CN 201910386365 A CN201910386365 A CN 201910386365A CN 110233800 A CN110233800 A CN 110233800A
- Authority
- CN
- China
- Prior art keywords
- message
- assembly line
- openflow flow
- waterline
- openflow
- 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
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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种开放可编程的报文转发方法和系统,包括:入口OpenFlow流水线对报文进行匹配;入口OpenFlow流水线根据匹配结果,将需要发送至中间流水线的报文发送至中间流水线;在中间流水线中查找接收到的报文中的目的地址;判断所述目的地址在中间流水线的二三层表项中对应的地址是否有配置,若有配置则将所述接收到的报文发送至出口OpenFlow流水线;出口OpenFlow流水线按照OpenFlow流表的配置对接收到的报文进行匹配。通过增加出口OpenFlow流水线,使用出口OpenFlow流水线的流表对报文进行匹配和转发,能够提高控制器对报文转发控制的灵活性,丰富数据的转发规则,提高流表对报文的处理效率,适用于可编程交换芯片,适用范围广,并且可以被使用于数据中心网络出向流量智能选路等领域。
Description
技术领域
本申请涉及软件定义网络技术领域,尤其涉及一种开放可编程的报文转发方法和系统。
背景技术
现代网络架构一般分为控制平面和数据平面,控制平面跟数据转发面之间,通过标准的南向接口进行通信,而OpenFlow是南向接口中的一种,也是应用最为广泛的一种。OpenFlow被控制器(Controller)用来控制网络设备,被网络设备用来反馈信息给控制器,并且OpenFlow还规定了网络设备对报文的转发方式。
目前业界OpenFlow交换机所支持的报文转发方式有两种,一种是纯OpenFlow的报文转发方式,如图1所示,报文进入OpenFlow流水线后,OpenFlow流水线根据报文与OpenFlow流表匹配后得到的结果,将报文发送至所用芯片的流水线下一级处理逻辑进行处理(例如:转发、丢弃和修改)。另一种是既支持OpenFlow,也支持传统二三层转发的混合模式。混合模式的实现有两种架构,一种架构是通过入接口或Vlan对处理流程进行区分,即不同入接口或Vlan进入的报文,根据入接口或Vlan的属性(属于OpenFlow域还是属于传统二三层域),走不同的处理流程,这种架构下,OpenFlow流水线和传统二三层转发互不影响,是一种流水线并行的架构,如图2所示,根据入接口或Vlan的属性,将报文发至OpenFlow流水线或二三层流水线。进入OpenFlow流水线的报文,OpenFlow流水线根据报文与OpenFlow流表匹配后得到的结果,将报文发送至所用芯片的流水线下一级处理逻辑进行处理,进入二三层流水线的报文,二三层流水线根据报文与二三层表项匹配后得到的结果,将报文发送至所用芯片的流水线下一级处理逻辑进行处理;另一种架构是在报文经过OpenFlow流水线处理后,通过OpenFlow协议中保留的NORMAL或FLOOD出接口,将报文送到传统二三层转发的流水线进行处理,这种架构下,报文先经过OpenFlow流水线进行处理,OpenFlow流水线根据报文与OpenFlow流表匹配后得到的结果,将报文发送至所用芯片的流水线下一级处理逻辑进行处理。OpenFlow流水线将匹配到动作是output:NORMAL或FLOOD出接口的报文转发到传统二三层流水线进行处理,二三层流水线根据报文与二三层表项匹配后得到的结果,将报文发送至所用芯片的流水线下一级处理逻辑进行处理;这是一种流水线串行的融合架构,如图3所示。
但是在现有的流水线串行的融合架构中,只能实现对入口流量(报文)的OpenFlow处理,而在报文转交到传统二三层流水线之后,不能再进行OpenFlow的流表匹配,导致控制器对流量转发控制的灵活性低,数据转发规则少,流表的处理效率低。
综上所述,需要提供一种对报文转发控制的灵活性高,数据的转发规则丰富,提高流表对报文的处理效率的报文转发方法和系统。
发明内容
为解决以上问题,本申请提出了一种开放可编程的报文转发方法和系统。
一方面,本申请提出一种开放可编程的报文转发方法,包括:
入口OpenFlow流水线对报文进行匹配;
入口OpenFlow流水线根据匹配结果,将需要发送至中间流水线的报文发送至中间流水线;
在中间流水线中查找接收到的报文中的目的地址;
判断所述目的地址在中间流水线的二三层表项中对应的地址是否有配置,若有配置则将所述接收到的报文发送至出口OpenFlow流水线;
出口OpenFlow流水线按照OpenFlow流表的配置对接收到的报文进行匹配。
优选地,所述入口OpenFlow流水线对报文进行匹配,还包括:
若无匹配表项,则根据入口OpenFlow流水线的流表所定义的表项匹配失败动作处理报文。
优选地,所述表项匹配失败动作包括:丢弃报文、发送报文至下级流表进行匹配或发送报文至中间流水线。
优选地,在所述在中间流水线中查找接收到的报文中的目的地址之前,还包括:在二三层表项里对地址进行设置。
优选地,所述入口OpenFlow流水线包括:一级流表或多级流表。
优选地,所述出口OpenFlow流水线包括:一级流表或多级流表。
优选地,在所述入口OpenFlow流水线对报文进行匹配之后,还包括:
入口OpenFlow流水线将不需要发送至中间流水线的报文发送至所用芯片的流水线下一级处理逻辑。
优选地,还包括:
出口OpenFlow流水线根据匹配结果处理报文。
优选地,所述匹配结果包括:发送报文至中间流水线、丢弃报文、发送报文至匹配到的出接口或发送报文至下级流表进行匹配。
第二方面,本申请提出一种开放可编程的报文转发系统,包括:
入口OpenFlow流水线模块,用于对报文进行匹配,根据匹配结果,将需要发送至中间流水线的报文发送至中间流水线;
中间流水线模块,用于在中间流水线模块中查找接收到的报文中的目的地址,判断所述目的地址在中间流水线的二三层表项中对应的地址是否有配置,若有配置则将所述接收到的报文发送至出口OpenFlow流水线模块;
出口OpenFlow流水线模块,用于按照OpenFlow流表的配置对接收到的报文进行匹配。
本申请的优点在于:通过增加出口OpenFlow流水线,使用出口OpenFlow流水线的流表对报文进行匹配和转发,能够提高控制器对报文转发控制的灵活性,丰富数据的转发规则,提高流表对报文的处理效率。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选事实方案的目的,而并不认为是对本申请的限制。而且在整个附图中,用同样的参考符号表示相同的部件。在附图中:
图1是现有的纯OpenFlow的报文转发方式的示意图;
图2是现有的混合模式并行构架的报文转发方式示意图;
图3是现有的混合模式融合(串行)构架的报文转发方式示意图;
图4是本申请提供的一种开放可编程的报文转发方法的步骤示意图;
图5是本申请提供的一种开放可编程的报文转发方法的示意图;
图6是现有的交换芯片Xpliant的流水线处理架构的示意图;
图7是现有的混合模式的融合架构的报文转发方式在交换芯片Xpliant上的示意图的示意图;
图8是一种本申请提供的方法在交换芯片Xpliant上实现的示意图;
图9是另一种本申请提供的方法在交换芯片Xpliant上实现的示意图;
图10是第三种本申请提供的方法在交换芯片Xpliant上实现的示意图;
图11是本申请提供的一种开放可编程的报文转发系统的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
根据本申请的实施方式,提出一种开放可编程的报文转发方法,如图4所示,包括:
S101,入口OpenFlow流水线对报文进行匹配;
S102,入口OpenFlow流水线根据匹配结果,将需要发送至中间流水线的报文发送至中间流水线;
S103,在中间流水线中查找接收到的报文中的目的地址;
S104,判断所述目的地址在中间流水线的二三层表项中对应的地址是否有配置,若有配置则将所述接收到的报文发送至出口OpenFlow流水线;
S105,出口OpenFlow流水线按照OpenFlow流表的配置对接收到的报文进行匹配。
所述入口OpenFlow流水线对报文进行匹配,还包括:
若无匹配表项,则根据入口OpenFlow流水线的流表所定义的表项匹配失败动作处理报文。
所述表项匹配失败动作包括:丢弃报文、发送报文至下级流表进行匹配或发送报文至中间流水线等。
所述中间流水线为二三层流水线。
所述地址和目的地址包括MAC地址和IP地址。
在所述在中间流水线中查找接收到的报文中的目的地址之前,还包括:在二三层表项里对地址进行设置。
所述判断所述目的地址在中间流水线的二三层表项中对应的地址是否有配置,包括:判断所述目的地址对应的二三层表项中的地址是否是被设置的地址。
在所述判断所述目的地址在中间流水线的二三层表项中对应的地址是否有配置之前,还包括:将所述目的地址在中间流水线的二三层表项中无对应地址的接收到的报文发送至所用芯片的流水线下一级处理逻辑。
所述入口OpenFlow流水线包括:一级流表或多级流表。
所述出口OpenFlow流水线包括:一级流表或多级流表。
在所述入口OpenFlow流水线对报文进行匹配之后,还包括:
入口OpenFlow流水线将不需要发送至中间流水线的报文发送至所用芯片的流水线下一级处理逻辑。
以入口OpenFlow流水线包括n级流表为例,每一级OpenFlow流表的格式定义包括报文头中的某一个或者多个领域(匹配域)的组合。报文在进入入口OpenFlow流水线后,入口OpenFlow流水线根据其入口OpenFlow流表,对报文进行匹配。当报文进入入口OpenFlow流水线的某一级流表时,其报文头内的某一个或者多个领域会被提取出来与那一级流表内所有的表项内容进行匹配,找出最匹配的表项。
若表项匹配成功,则根据入口OpenFlow流水线匹配表项所定义的动作处理报文。所述表项匹配成功动作包括:丢弃报文、发送报文到指定出接口,发送报文至下级某个流表进行进一步的匹配或发送报文至中间流水线。
若无法找到任何一个匹配的表项,则报文会根据那一级流表所定义的表项匹配失败的动作进行处理。表项匹配失败的动作可能包括:丢弃报文、继续入口OpenFlow流水线里下一级流表对报文进行进一步的匹配(发送报文至下级流表进行匹配)、或者当在入口OpenFlow流水线最后一级(第n级)流表时,将报文转送到中间流水线进行进一步的处理(发送报文至中间流水线)。
入口OpenFlow流水线将需要发送至中间流水线的报文发送至中间流水线。
所述判断所述目的IP在中间流水线的二三层表项中对应的地址是否有配置,若有配置则发送至出口OpenFlow流水线,还包括:
若无配置则发送至所用芯片的流水线下一级处理逻辑。
中间流水线查找接收到的报文中的目的地址。若接收到的报文(从入口OpenFlow流水线发送至中间流水线的报文)中的目的地址在中间流水线的二三层表项中无对应地址,则中间流水线将此报文丢弃,或发送至所用芯片的流水线下一级处理逻辑。若接收到的报文的目的地址在中间流水线的二三层表项地址有匹配,则根据匹配到的地址的设置,将所述报文直接发送到出接口或者发送到出口OpenFlow流水线。
若所述对应地址被设置为转发至出口OpenFlow流水线,则中间流水线将此报文发送至出口OpenFlow流水线;若所述对应地址未被设置为转发至出口OpenFlow流水线,则中间流水线根据所述对应地址,将此报文发送至所用芯片的流水线下一级处理逻辑进行处理。所述转发方法还包括:
出口OpenFlow流水线根据匹配结果处理报文。
出口OpenFlow流水线根据其出口OpenFlow流表,对接收到的报文(从中间流水线发送至出口OpenFlow流水线的报文)进行匹配,根据匹配结果,对所述接收到的报文进行转发、丢弃和修改等处理。
所述入口OpenFlow流水线的流表匹配结果包括:发送报文至中间流水线、丢弃报文、发送报文至匹配到的出接口或发送报文至下级流表进行匹配等。
所述发送报文至下级流表进行匹配包括:发送报文至下一级流表进行匹配或发送报文至下某级流表进行匹配等。
所述中间流水的二三层表项的匹配结果包括:发送报文至出口OpenFlow流水线、丢弃报文或发送报文至匹配到的出接口等。
入口OpenFlow流水线的流表匹配结果还包括在出接口前修改报文。
中间流水线的二三层表项的匹配结果还包括在出接口前修改报文。
出口OpenFlow流水线的流表匹配结果还包括在出接口前修改报文。
需要丢弃的报文、需要修改的报文和需要发送至匹配到的出接口的报文都被发送至所用芯片的流水线下一级处理逻辑进行处理。
如图5所示,以入口OpenFlow流水线包括多级流表为例,每一级OpenFlow流表的格式定义包括报文头中的某一个或者多个领域(匹配域)的组合。报文在进入入口OpenFlow流水线后,入口OpenFlow流水线根据其OpenFlow流表,对报文进行匹配。当报文进入入口OpenFlow流水线的某一级流表时,其报文头内的某一个或者多个领域会被提取出来与那一级流表内所有的表项内容进行匹配,找出最匹配的表项。
若找到一个最匹配的表项,则报文会根据所述最匹配的表项里所定义的报文处理动作进行处理。最匹配的表项里所定义的报文处理动作可能包括:丢弃报文、直接出口报文到指定的某个出接口(发送报文至匹配到的出接口)、跳到入口OpenFlow流水线里下某级流表对报文进行进一步的匹配(发送报文至下级流表进行匹配)、或者将报文转到中间流水线进行进一步的处理(发送报文至中间流水线)。
若无法找到任何一个匹配的表项,则报文会根据那一级流表所定义的表项匹配失败的动作进行处理。表项匹配失败的动作可能包括:丢弃报文、继续入口OpenFlow流水线里下一级流表对报文进行进一步的匹配(发送报文至下级流表进行匹配)、或者当在入口OpenFlow流水线最后一级流表时,将报文转送到中间流水线进行进一步的处理(发送报文至中间流水线)。
入口OpenFlow流水线将需要发送至中间流水线的报文发送至中间流水线。
所述需要发送至中间流水线的报文包括,在入口OpenFlow流水线中的各级流表进行匹配后,得到的匹配结果为发送报文至中间流水线的报文和表项匹配失败的动作中的发送报文至中间流水线的报文。
所述不需要发送至中间流水线的报文包括,在入口OpenFlow流水线中的各级流表进行匹配后得到的匹配结果不是发送报文至中间流水线的报文和表项匹配失败的动作中不是发送报文至中间流水线的报文。
中间流水线查找接收到的报文中的目的地址。若接收到的报文(从入口OpenFlow流水线发送至中间流水线的报文)中的目的地址在中间流水线的二三层表项中无对应地址,则中间流水线将此报文发送至所用芯片的流水线下一级处理逻辑。若接收到的报文的目的地址在中间流水线的二三层表项中有对应地址,且所述对应地址被设置为转发至出口OpenFlow流水线,则中间流水线将此报文发送至出口OpenFlow流水线;若所述对应地址未被设置为转发至出口OpenFlow流水线,则中间流水线根据所述对应地址,将此报文发送至所用芯片的流水线下一级处理逻辑进行处理。
出口OpenFlow流水线根据其OpenFlow流表,对接收到的报文(从中间流水线发送至出口OpenFlow流水线的报文)进行匹配,根据匹配结果,对所述接收到的报文进行转发、丢弃和修改等处理。
对二三层表项中的地址进行设置包括:根据需要,在二三层表项中对应的MAC地址和/或IP地址处添加转发至出口流水线的命令。
所用芯片的流水线下一级处理逻辑根据报文与入口OpenFlow流表、二三层表项或出口OpenFlow流表的匹配结果对报文进行处理,对报文进行处理包括:转发、丢弃和修改。
所述方法适用于可编程交换芯片,以可编程的交换芯片Xpliant为例进行说明。
如图6所示,为交换芯片Xpliant的流水线处理架构。其中,LDE(Lookup DecisionEngines)是可编程的逻辑单元,可以根据业务需求对其进行编程,从而实现对不同的场景下定制不同的报文处理和转发逻辑;ISME(Inter-Switch Memory Element)是交换间内存单元。Xpliant是采用软件定义网络的理念设计的下一代交换芯片,可用于大规模数据中心和云计算。
如图7所示为现有的混合模式的融合架构的报文转发方式在交换芯片Xpliant上的示意图。在这种现有的转发下,解析器(Parser)将报文存储至缓冲存储器,将报文的报头发送至入方向虚接口分配与隧道终结(Ingress VIF Assignment&Tunnel Termination),入方向虚接口分配与隧道终结(LDE3)根据入接口及其所属虚拟局域网(Virtual LocalArea Network,VLAN),找到相应的虚接口。根据虚接口属性决定是否将报文的报头发送到入口OpenFlow流水线(流表0至流表n)或是中间流水线。报头经过入口OpenFlow流水线的多级流表(流表0至流表n)对应的LDE处理,将命中动作是转发到标准(NORMAL)出接口或泛洪(FLOOD)出接口的报文(需要发送至中间流水线的报文)报头通过入方向策略(IngressPolicy),即LDE2,转发到网桥(Bridge)、路由(Route)进行处理,将不需要发送至中间流水线的报文报头发送至更新改写引擎。网络地址转换(LDE6)用于将报头中的本地地址(内网IP地址)转换成全球IP地址(外网IP地址)。网桥(LDE5)和路由(LDE6)根据接收到的报头的目的MAC地址或目的IP地址,将报文报头通过出方向策略(Egress Policy),即LDE7,发送至更新改写引擎,更新改写引擎根据收到的报头,从缓冲存储器中提取对应的报文,并对报文进行修改后,将需要转发的报文发送至多播复制引擎,多播复制引擎根据报文需要转发到的出接口,对报文进行复制和/或转发,将报文发送到一个或多个出接口。入口OpenFlow流水线包括流表0至流表n。中间流水线包括LDE2、LDE5、LDE6、LDE4和LDE7。图7中的流水线(Pipeline)虚线框对应图6中的流水线部分。如图8所示为本申请提供的一种开放可编程的报文转发方法在交换芯片Xpliant上的一种实现方法。将原用于传统转发逻辑的出方向策略(LDE7),作为OpenFlow流表的一级,即出口OpenFlow流水线,从而实现在经过入口OpenFlow流水线和中间流水线(二三层)处理之后的报文,可以通过出口OpenFlow流水线进行过滤(匹配)。解析器将报文存储至缓冲存储器,将报文的报头发送至入方向虚接口分配与隧道终结(LDE3),LDE3根据入接口及其所属虚拟局域网,找到相应的虚接口。根据虚接口属性决定是否将报文的报头发送到入口OpenFlow流水线(流表0至流表n)或是中间流水线。报头经过入口OpenFlow流水线的多级流表(流表0至流表n)对应的LDE处理,将命中动作是转发到标准(NORMAL)出接口或泛洪(FLOOD)出接口的报文(需要发送至中间流水线的报文)报头通过入方向策略(LDE2)转发到网桥(Bridge)、路由(Route)进行处理,将不需要发送至中间流水线的报文报头发送至更新改写引擎。网络地址转换(LDE6)用于将报头中的本地地址(内网IP地址)转换成全球IP地址(外网IP地址)。网桥(LDE5)和路由(LDE6)查找接收到的报头的目的MAC地址或目的IP地址,并根据配置好的二三层表项中的地址,判断将报文报头发送至更新改写引擎还是流表m(LDE7),出口OpenFlow流水线包括流表m。出口OpenFlow流水线根据其OpenFlow流表,对接收到的报文报头进行匹配,根据匹配结果,将需要转发和修改的报文报头发送至更新改写引擎,更新改写引擎根据收到的报头,从缓冲存储器中提取对应的报文,并对报文进行修改后,将需要转发的报文发送至多播复制引擎,多播复制引擎根据报文需要转发到的出接口,对报文进行复制和/或转发,将报文发送到一个或多个出接口。入口OpenFlow流水线包括流表0至流表n。中间流水线包括LDE2、LDE5、LDE6和LDE4。图8中的流水线虚线框对应图6中的流水线部分。
如图9所示为本申请提供的一种开放可编程的报文转发方法在交换芯片Xpliant上的另一种实现方法。在此种实现方法中,保留传统转发逻辑的出方向策略(LDE7),而将原来未使用的LDE9作为出口OpenFlow流水线,从而实现在经过入口OpenFlow流水线和中间流水线(二三层)处理之后的报文,可以通过出口OpenFlow流水线进行过滤。解析器将报文存储至缓冲存储器,将报文的报头发送至入方向虚接口分配与隧道终结(LDE3),LDE3根据入接口及其所属虚拟局域网,找到相应的虚接口。根据虚接口属性决定是否将报文的报头发送到入口OpenFlow流水线(流表0至流表n)或是中间流水线。报头经过入口OpenFlow流水线的多级流表(流表0至流表n)对应的LDE处理,将命中动作是转发到标准(NORMAL)出接口或泛洪(FLOOD)出接口的报文(需要发送至中间流水线的报文)报头通过入方向策略(LDE2)转发到网桥(Bridge)、路由(Route)进行处理,不需要发送至中间流水线的报文报头发送至更新改写引擎。网络地址转换(LDE6)用于将报报头的本地地址(内网IP地址)转换成全球IP地址(外网IP地址)。网桥(LDE5)和路由(LDE6)查找接收到的报头的目的MAC地址或目的IP地址,并根据配置好的二三层表项中的地址决定出接口,然后将报文发送到出方向策略(LDE7)来判断将报文报头发送至更新改写引擎还是流表m(LDE9),出口OpenFlow流水线包括流表m。需要发送至流表m的报文报头经过出方向策略(LDE7)发送至出口OpenFlow流水线,出口OpenFlow流水线根据其OpenFlow流表,对接收到的需报文报头进行匹配,根据匹配结果,将需要转发和修改的报文报头发送至更新改写引擎,更新改写引擎根据收到的报头,从缓冲存储器中提取对应的报文,并对报文进行修改后,将需要转发的报文发送至多播复制引擎,多播复制引擎根据报文需要转发到的出接口,对报文进行复制和/或转发,将报文发送到一个或多个出接口。入口OpenFlow流水线包括流表0至流表n。中间流水线包括LDE2、LDE5、LDE6、LDE4和LDE7。图9中的流水线虚线框对应图6中的流水线部分。
如图10所示为本申请提供的一种开放可编程的报文转发方法在交换芯片Xpliant上的第三种实现方法。通过将传统转发逻辑的出方向策略(LDE7),作为出口OpenFlow流水线的一级,并且将原来未使用的LDE9作为出口OpenFlow流水线的另一级,从而实现在经过入口OpenFlow流水线和中间流水线(二三层)处理之后的报文,可以通过出口OpenFlow流水线进行过滤。本实现方法通过使用多级流表对报文进行处理,从而能更灵活的处理报文,同时也可以扩充匹配的规格。解析器将报文存储至缓冲存储器,将报文的报头发送至入方向虚接口分配与隧道终结(LDE3),LDE3根据入接口及其所属虚拟局域网,找到相应的虚接口。根据虚接口属性决定是否将报文的报头发送到入口OpenFlow流水线(流表0至流表n)或是中间流水线。报头经过入口OpenFlow流水线的多级流表(流表0至流表n)对应的LDE处理,将命中动作是转发到标准(NORMAL)出接口或泛洪(FLOOD)出接口的报文(需要发送至中间流水线的报文)报头通过入方向策略(LDE2)转发到网桥(Bridge)、路由(Route)进行处理,将不需要发送至中间流水线的报文报头发送至更新改写引擎。网络地址转换(LDE6)用于将报头中的本地地址(内网IP地址)转换成全球IP地址(外网IP地址)。网桥(LDE5)和路由(LDE6)查找接收到的报头的目的MAC地址或目的IP地址,并根据配置好的二三层表项中的地址,判断将报文报头发送至更新改写引擎还是流表m(LDE7),出口OpenFlow流水线包括流表m和流表m+1(LDE9)。出口OpenFlow流水线根据其多级OpenFlow流表,对接收到的报文报头进行匹配,根据匹配结果,将需要转发和修改的报文报头发送至更新改写引擎,更新改写引擎根据收到的报头,从缓冲存储器中提取对应的报文,并对报文进行修改后,将需要转发的报文发送至多播复制引擎,多播复制引擎根据报文需要转发到的出接口,对报文进行复制和/或转发,将报文发送到一个或多个出接口。入口OpenFlow流水线包括流表0至流表n。中间流水线包括LDE2、LDE5、LDE6和LDE4。图10中的流水线虚线框对应图6中的流水线部分。
在Xpliant芯片中,需要丢弃的报文和需要修改的报文都发送至更新改写引擎进行处理。
根据需要可以增加在网桥(LDE5)处将报文报头发送至更新改写引擎的设置。
根据本申请的实施方式,还提出一种开放可编程的报文转发系统,如图11所示,包括:
入口OpenFlow流水线模块101,用于对报文进行匹配,根据匹配结果,将需要发送至中间流水线的报文发送至中间流水线;
中间流水线模块102,用于在中间流水线模块中查找接收到的报文中的目的地址,判断所述目的地址在中间流水线的二三层表项中对应的地址是否有配置,若有配置则将所述接收到的报文发送至出口OpenFlow流水线模块;
出口OpenFlow流水线模块103,用于按照OpenFlow流表的配置对接收到的报文进行匹配。
中间流水线模块还用于,将报文直接发送至对应的出接口(所用芯片的流水线下一级处理逻辑)。在中间流水线模块中的二三层表项里对地址进行设置,若接收到的报文的目的地址在中间流水线的二三层表项中有对应地址,且所述对应地址被设置为转发至出口OpenFlow流水线模块,则中间流水线模块将此报文发送至出口OpenFlow流水线模块;若所述对应地址未被设置为转发至出口OpenFlow流水线模块,则中间流水线模块根据所述对应地址,将此报文发送至所用芯片的流水线下一级处理逻辑。
本申请的方法中,增加了出口OpenFlow流水线,由于出口OpenFlow流水线能够根据传统二三层流水线的匹配结果进行过滤,但是在入口OpenFlow流水线中没有进行二三层的匹配,所以不能针对出口进行过滤,使用出口OpenFlow流水线的流表对报文进行匹配和转发,能够提高控制器对报文转发控制的灵活性,丰富数据的转发规则,提高流表对报文的处理效率;针对交换或路由的出口信息进行OpenFlow流表处理,提高了业务处理的灵活性和网络的安全性,可以被使用于数据中心网络出向流量智能选路等领域。本方法适用于可编程交换芯片,适用范围广。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种开放可编程的报文转发方法,其特征在于,包括:
入口OpenFlow流水线对报文进行匹配;
入口OpenFlow流水线根据匹配结果,将需要发送至中间流水线的报文发送至中间流水线;
在中间流水线中查找接收到的报文中的目的地址;
判断所述目的地址在中间流水线的二三层表项中对应的地址是否有配置,若有配置则将所述接收到的报文发送至出口OpenFlow流水线;
出口OpenFlow流水线按照OpenFlow流表的配置对接收到的报文进行匹配。
2.如权利要求1所述的一种开放可编程的报文转发方法,其特征在于,所述入口OpenFlow流水线对报文进行匹配,还包括:
若无匹配表项,则根据入口OpenFlow流水线的流表所定义的表项匹配失败动作处理报文。
3.如权利要求2所述的一种开放可编程的报文转发方法,其特征在于,所述表项匹配失败动作包括:丢弃报文、发送报文至下级流表进行匹配或发送报文至中间流水线。
4.如权利要求1所述的一种开放可编程的报文转发方法,其特征在于,在所述在中间流水线中查找接收到的报文中的目的地址之前,还包括:在二三层表项里对地址进行设置。
5.如权利要求1所述的一种开放可编程的报文转发方法,其特征在于,所述入口OpenFlow流水线包括:一级流表或多级流表。
6.如权利要求1所述的一种开放可编程的报文转发方法,其特征在于,所述出口OpenFlow流水线包括:一级流表或多级流表。
7.如权利要求1所述的一种开放可编程的报文转发方法,其特征在于,在所述入口OpenFlow流水线对报文进行匹配之后,还包括:
入口OpenFlow流水线将不需要发送至中间流水线的报文发送至所用芯片的流水线下一级处理逻辑。
8.如权利要求1所述的一种开放可编程的报文转发方法,其特征在于,还包括:
出口OpenFlow流水线根据匹配结果处理报文。
9.如权利要求1所述的一种开放可编程的报文转发方法,其特征在于,所述匹配结果包括:发送报文至中间流水线、丢弃报文、发送报文至匹配到的出接口或发送报文至下级流表进行匹配。
10.一种开放可编程的报文转发系统,其特征在于,包括:
入口OpenFlow流水线模块,用于对报文进行匹配,根据匹配结果,将需要发送至中间流水线的报文发送至中间流水线;
中间流水线模块,用于在中间流水线模块中查找接收到的报文中的目的地址,判断所述目的地址在中间流水线的二三层表项中对应的地址是否有配置,若有配置则将所述接收到的报文发送至出口OpenFlow流水线模块;
出口OpenFlow流水线模块,用于按照OpenFlow流表的配置对接收到的报文进行匹配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910386365.5A CN110233800A (zh) | 2019-05-09 | 2019-05-09 | 一种开放可编程的报文转发方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910386365.5A CN110233800A (zh) | 2019-05-09 | 2019-05-09 | 一种开放可编程的报文转发方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110233800A true CN110233800A (zh) | 2019-09-13 |
Family
ID=67861251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910386365.5A Pending CN110233800A (zh) | 2019-05-09 | 2019-05-09 | 一种开放可编程的报文转发方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110233800A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111107536A (zh) * | 2019-12-30 | 2020-05-05 | 联想(北京)有限公司 | 一种用户面功能的转发方法、装置、系统和存储介质 |
CN114747193A (zh) * | 2019-12-26 | 2022-07-12 | 华为技术有限公司 | 交换芯片 |
CN114745323A (zh) * | 2022-04-02 | 2022-07-12 | 北京东土军悦科技有限公司 | 一种流量报文的转发方法和系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546351A (zh) * | 2012-03-15 | 2012-07-04 | 北京邮电大学 | openflow网络和现有IP网络互联的系统和方法 |
CN103200101A (zh) * | 2013-04-15 | 2013-07-10 | 昆山天元昌电子有限公司 | 基于交换芯片的openflow多表查询的方法及装置 |
CN103401794A (zh) * | 2013-07-17 | 2013-11-20 | 国家电网公司 | 一种面向大规模应用的软件定义网络控制优化方法 |
CN103401783A (zh) * | 2013-07-26 | 2013-11-20 | 盛科网络(苏州)有限公司 | 实现Openflow多级流表的方法及装置 |
CN103428094A (zh) * | 2013-08-12 | 2013-12-04 | 杭州华三通信技术有限公司 | 开放流OpenFlow系统中的报文转发方法及装置 |
CN104580027A (zh) * | 2013-10-25 | 2015-04-29 | 杭州华三通信技术有限公司 | 一种OpenFlow报文转发方法及设备 |
WO2015121864A1 (en) * | 2014-02-16 | 2015-08-20 | B.G. Negev Technologies And Applications Ltd., At Ben-Gurion University | A system and method for integrating legacy flow-monitoring systems with sdn networks |
CN105207958A (zh) * | 2014-06-05 | 2015-12-30 | 中兴通讯股份有限公司 | 一种元数据处理方法、交换机及控制器 |
CN106487572A (zh) * | 2015-09-02 | 2017-03-08 | 中兴通讯股份有限公司 | 报文的处理方法及装置 |
CN107204867A (zh) * | 2016-03-18 | 2017-09-26 | 中兴通讯股份有限公司 | 一种信息传输方法、装置和系统 |
US20180227224A1 (en) * | 2015-01-30 | 2018-08-09 | Hewlett Packard Enterprise Development Lp | Forwarding table of hybrid software defined networking switch |
CN109587826A (zh) * | 2017-09-29 | 2019-04-05 | 华为技术有限公司 | 一种gtp数据包传输方法、相关装置及存储介质 |
-
2019
- 2019-05-09 CN CN201910386365.5A patent/CN110233800A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546351A (zh) * | 2012-03-15 | 2012-07-04 | 北京邮电大学 | openflow网络和现有IP网络互联的系统和方法 |
CN103200101A (zh) * | 2013-04-15 | 2013-07-10 | 昆山天元昌电子有限公司 | 基于交换芯片的openflow多表查询的方法及装置 |
CN103401794A (zh) * | 2013-07-17 | 2013-11-20 | 国家电网公司 | 一种面向大规模应用的软件定义网络控制优化方法 |
CN103401783A (zh) * | 2013-07-26 | 2013-11-20 | 盛科网络(苏州)有限公司 | 实现Openflow多级流表的方法及装置 |
CN103428094A (zh) * | 2013-08-12 | 2013-12-04 | 杭州华三通信技术有限公司 | 开放流OpenFlow系统中的报文转发方法及装置 |
CN104580027A (zh) * | 2013-10-25 | 2015-04-29 | 杭州华三通信技术有限公司 | 一种OpenFlow报文转发方法及设备 |
WO2015121864A1 (en) * | 2014-02-16 | 2015-08-20 | B.G. Negev Technologies And Applications Ltd., At Ben-Gurion University | A system and method for integrating legacy flow-monitoring systems with sdn networks |
CN105207958A (zh) * | 2014-06-05 | 2015-12-30 | 中兴通讯股份有限公司 | 一种元数据处理方法、交换机及控制器 |
US20180227224A1 (en) * | 2015-01-30 | 2018-08-09 | Hewlett Packard Enterprise Development Lp | Forwarding table of hybrid software defined networking switch |
CN106487572A (zh) * | 2015-09-02 | 2017-03-08 | 中兴通讯股份有限公司 | 报文的处理方法及装置 |
CN107204867A (zh) * | 2016-03-18 | 2017-09-26 | 中兴通讯股份有限公司 | 一种信息传输方法、装置和系统 |
CN109587826A (zh) * | 2017-09-29 | 2019-04-05 | 华为技术有限公司 | 一种gtp数据包传输方法、相关装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
邱恺: "《混合IP/SDN网络关键技术研究》", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114747193A (zh) * | 2019-12-26 | 2022-07-12 | 华为技术有限公司 | 交换芯片 |
CN114747193B (zh) * | 2019-12-26 | 2023-02-03 | 华为技术有限公司 | 交换芯片 |
CN111107536A (zh) * | 2019-12-30 | 2020-05-05 | 联想(北京)有限公司 | 一种用户面功能的转发方法、装置、系统和存储介质 |
CN114745323A (zh) * | 2022-04-02 | 2022-07-12 | 北京东土军悦科技有限公司 | 一种流量报文的转发方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7499456B2 (en) | Multi-tiered virtual local area network (VLAN) domain mapping mechanism | |
CN106170952B (zh) | 用于在数据网络中部署最大冗余树的方法和系统 | |
CN102792646B (zh) | 通信系统、控制装置、通信方法 | |
CN103095583B (zh) | 通过芯片环回实现Openflow两级流表的方法及系统 | |
US6553028B1 (en) | Method and apparatus for multicast switching using a centralized switching engine | |
CN102857425B (zh) | 通过trill的fcoe | |
US6807175B1 (en) | Distributed multicast routing in packet-based communication network devices | |
CN102238083B (zh) | 用于适配分组处理流水线的系统和方法 | |
CN101076972B (zh) | 获得与基于虚拟专用lan服务(vpls)的网络相关的路径信息 | |
US9686137B2 (en) | Method and system for identifying an outgoing interface using openflow protocol | |
CN104780111B (zh) | 虚拟化网络中报文转发的方法及装置、虚拟化网络 | |
CN104168170B (zh) | 封包交换装置及方法 | |
CN110233800A (zh) | 一种开放可编程的报文转发方法和系统 | |
CN107040462A (zh) | 路由方法和中间路由器 | |
CN104219145B (zh) | 网络系统及路由方法 | |
US8306024B2 (en) | Preventing forwarding of a packet to a control plane | |
US7796506B2 (en) | Load balancing network using Ethernet bridges | |
AU2003286511A1 (en) | Modified spanning tree protocol for metropolitan area network | |
JP2002314571A5 (zh) | ||
CN105450525B (zh) | 用于路由交换设备使用的方法和设备 | |
CN103905325B (zh) | 二层网络数据传送方法及网络节点 | |
CN105591868A (zh) | 一种虚拟专用网络vpn的接入方法和装置 | |
CN104639440B (zh) | 一种在网络中实现三层转发并封装协议信息的方法和装置 | |
CN104702509B (zh) | 一种隔离sdn协议报文和数据报文的方法及装置 | |
CN109327374A (zh) | 实现三层vpn网络接入的系统及方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190913 |
|
RJ01 | Rejection of invention patent application after publication |