CN103746892A - 一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法 - Google Patents

一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法 Download PDF

Info

Publication number
CN103746892A
CN103746892A CN201310616467.4A CN201310616467A CN103746892A CN 103746892 A CN103746892 A CN 103746892A CN 201310616467 A CN201310616467 A CN 201310616467A CN 103746892 A CN103746892 A CN 103746892A
Authority
CN
China
Prior art keywords
packet
virtual network
stream
network
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.)
Granted
Application number
CN201310616467.4A
Other languages
English (en)
Other versions
CN103746892B (zh
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.)
Beijing University of Posts and Telecommunications
Jiangsu Future Networks Innovation Institute
Original Assignee
Beijing University of Posts and Telecommunications
Jiangsu Future Networks Innovation Institute
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 Beijing University of Posts and Telecommunications, Jiangsu Future Networks Innovation Institute filed Critical Beijing University of Posts and Telecommunications
Priority to CN201310616467.4A priority Critical patent/CN103746892B/zh
Publication of CN103746892A publication Critical patent/CN103746892A/zh
Application granted granted Critical
Publication of CN103746892B publication Critical patent/CN103746892B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法,接收数据包;物理交换机接收到数据包时首先查询物理交换机内的流表,若流表不存在与该数据包的匹配项条目,则将此数据包包头封装在上行信令内发送给网络虚拟化平台;网络虚拟化平台充当物理交换机的控制器;网络虚拟化平台接收上交的数据包;判断该数据包是否带有流标签;若数据包带有流标签,表明该数据包是虚拟网络内部的数据包;若数据包不带流标签,说明该数据包是未被分类的数据包。

Description

一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法
技术领域
本发明属于计算机网络技术领域,具体涉及一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法。
背景技术
随着互联网技术的飞速发展,互联网应用与用户数量急剧增长,基于TCP/IP的互联网逐渐暴露出许多的问题与弊端。不少国家提出了下一代互联网计划,软件定义网络应运而生。
OpenFlow软件定义网络由两部分组成:数据平面,用来转发网络数据包;控制平面,用来控制网络数据包的转发策略。数据平面的OpenFlow交换机内部维护一张流表,称之为虚拟网络流规则描述表。虚拟网络流规则描述表可以根据数据包包头的一层(物理层)到四层(传输层)特征进行匹配,并指定匹配虚拟网络流规则描述表项的数据包的处理方法。当一个数据包进入OpenFlow交换机后,OpenFlow交换机会查询内部的虚拟网络流规则描述表,按虚拟网络流规则描述表处理数据包。若OpenFlow交换机内部没有能够匹配数据包的虚拟网络流规则描述表,OpenFlow交换机会将这个数据包转发给控制平面的OpenFlow控制器,OpenFlow控制器再向OpenFlow交换机下发一条虚拟网络流规则描述表,指示OpenFlow交换机如何处理这个数据包。OpenFlow交换机和OpenFlow控制器之间的通信遵循OpenFlow协议。OpenFlow协议定义的上行信令(OpenFlow交换机到OpenFlow控制器)和下行信令(OpenFlow控制器到OpenFlow交换机)。
如果将一个OpenFlow网络交给多个OpenFlow控制器来控制,每个OpenFlow控制器只控制网络中的一部分特定的网络数据包,这样,每个OpenFlow控制器就控制着一个虚拟网络。但是在OpenFlow1.0中,每个OpenFlow交换机只能有一个控制逻辑,因此,不能将不同特征的数据包交给不同的OpenFlow控制器处理。为此,需要在OpenFlow交换机和OpenFlow控制器之间添加一个网络虚拟化层,它接收所有OpenFlow交换机的上行信令,并根据上行信令的特征将它转发给对应的OpenFlow控制器处理。同样,网络虚拟化层收到的OpenFlow控制器下发的下行信令也要对信令进行处理,处理后再将其转发给相应的OpenFlow交换机。
网络虚拟化层具体实现过程如下:网络虚拟化平台为网络建立与多个虚拟网络相对应的多个切片(Slice),为每个Slice指定一个OpenFlow控制器,将属于不同Slice的网络数据包转发给对应的OpenFlow控制器以实现网络虚拟化;再向每个Slice中添加流空间(FlowSpace)。流空间描述了转发给Slice的数据包的特征,至少包含以下多个匹配项中的一个或多个:交换机端口(layer1),源mac/目的mac或以太网类型(layer2),源IP/目的IP或协议类型(layer3),TCP/UDP源端口/目的端口(layer4);网络数据包进入OpenFlow交换机后向网络虚拟化平台发送PacketIn信令,网络虚拟化平台将PacketIn信令与FlowSpace中的匹配项进行匹配,若PacketIn信令匹配了FlowSpace中的流规则,则将这条PacketIn消息转发给这条FlowSpace所在的OpenFlow控制器。
现有技术中存在以下缺点:
1)网络虚拟化平台基于每个交换机进行虚拟网络划分,每当一个数据包进入OpenFlow交换机产生PacketIn,网络虚拟化平台都会将数据包与所有FlowSpace匹配,判断该数据包属于哪个虚拟网络,当数据包离开本交换机进入下一个交换机后,网络虚拟化平台还会将此数据包与所有FlowSpace匹配,判断该数据包属于哪个虚拟网络。这样每一跳都要进行虚拟网络的判断,效率较低。
2)OpenFlow协议允许交换机对数据包进行灵活的修改操作,当一个数据包被一个虚拟网络操作后,数据包的部分字段可能被改变,此数据包进入另一个OpenFlow交换机后,可能被网络虚拟化平台判断为另一个虚拟网络的数据包,这就导致了一个数据包被不同的与虚拟网络相对应的OpenFlow控制器控制,数据包隔离性差。
3)网络虚拟化平台虽然对与虚拟网络相对应的OpenFlow控制器下发的虚拟网络流规则描述表匹配项进行检查与修改,但是对flowspace的互斥性没有检查,这导致与虚拟网络1相对应的OpenFlow控制器下发的虚拟网络流规则描述表可能匹配了虚拟网络2对应的数据包,产生信令越界。
4)网络虚拟化平台对虚拟网络的物理范围没有定义,这会导致虚拟网络数据包任意扩散,数据包不具有封闭性。
发明内容
为克服上述现有技术的不足,本发明提供了一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法,其特征在于:
接收数据包;
物理交换机接收到数据包时首先查询物理交换机内的流表,若流表不存在与该数据包的匹配项条目,则将此数据包包头封装在上行信令内发送给网络虚拟化平台;
网络虚拟化平台充当物理交换机的控制器;
网络虚拟化平台接收上交的数据包;
判断该数据包是否带有流标签;
若数据包带有流标签,表明该数据包是虚拟网络内部的数据包;
若数据包不带流标签,说明该数据包是未被分类的数据包。
优选地,若数据包不带流标签,将各个虚拟网络的虚拟网络流规则与该数据包的包头进行匹配,将该数据包通过虚拟交换机转发给与虚拟网络相对应的匹配的虚拟网络控制器。
优选地,若数据包带有流标签,进一步判断该数据包发生的位置是否在虚拟网络所定义的物理范围内;若是,则弹出数据包的流标签,再将数据包转发给相应的与虚拟网络相对应的虚拟网络控制器;如否,则报错。
优选地,所述上交的数据包中包含如下信息:
产生数据包的虚拟网络交换机的ID;
数据包在虚拟网络交换机的入端口;
数据包的包头。
优选地,判断该数据包发生的位置是否在虚拟网络所定义的物理范围内具体为,判断接收数据包的端口是否属于流标签所标识的虚拟网络。
优选地,所述流标签为Vlan或MPLS;所述数据包为上行信令PacketIn。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
图1示出了根据本发明的一个实施例的网络结构图;
图2示出了根据本发明的一个实施例的数据包流向示意图;
图3示出了根据本发明的一个实施例的PacketIn信令处理流程;
图4示出了根据本发明的一个实施例的Match域的预处理流程;
图5示出了根据本发明的一个实施例的了FlowMod信令中的Action域的预处理流程;
图6示出了根据本发明的一个实施例的FlowMod信令中的Action域的处理流程;
图7示出了根据本发明的一个实施例的PacketOut信令中的Action域的处理流程。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的基于OpenFlow协议的网络虚拟化平台上下行信令处理方法其具体实施方式、特征及其功效,详细说明如后。在下述说明中,不同的“一实施例”或“实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。
图1中示出了根据本发明的一个实施例的网络结构图,其中网络虚拟化平台内部维护虚拟网络拓扑,虚拟网络内部交换机为虚拟网络交换机。OpenFlow交换机为网络中的物理交换机。虚拟化平台内部根据用户配置,生成多个虚拟网络,每个虚拟网络分别连接相应的虚拟网络控制器。对于物理交换机来说,虚拟化平台中的虚拟网络交换机就相当于物理交换机的控制器。
网络虚拟化平台内部维护有虚拟网络流规则描述表,当物理交换机接收到一个数据包时,如果物理交换机没有与该数据包匹配的流表,则将该数据包封装在PacketIn信令中发给网络虚拟化平台,网络虚拟化平台根据PacketIn信令中的数据包特征决定将这个数据包交给哪个虚拟网络来处理。如果PacketIn信令中的数据包含有虚拟网络流标签,则弹出虚拟网络流标签后将其根据虚拟网络流标签发给相应的虚拟网络控制器,若不含有虚拟网络流标签,则将PacketIn信令中的数据包与虚拟网络流规则描述表进行匹配,并将此数据包交给匹配项所指示的虚拟网络处理。
图2中示出了根据本发明的一个实施例的数据包流向示意图。
①表示数据包从终端发往OpenFlow交换机;
②表示接收到数据包后,如果物理交换机、即OpenFlow交换机没有对应的流表时,物理交换机将数据包封装在PacketIn信令中发给虚拟化平台;
③表示网络虚拟化平台判断数据包是否含有虚拟网络流标签;
④表示如果判断数据包中没有虚拟网络流标签,则需要根据虚拟网络流规则表决定数据包被送往哪个虚网;
⑤表示PacketIn信令通过虚拟网络内的虚拟网络交换机发送给虚拟网络控制器;
⑥表示虚拟网络控制器向虚拟网络交换机发送下行信令(FlowMod或PacketOut);
⑦表示网络虚拟化平台对下行信令进行处理后,将处理后的下行信令发送给物理交换机。
在本发明的一个具体实施方式中,网络虚拟化平台中维护有两张表,一张是虚拟网络物理范围描述表,一张是虚拟网络流规则描述表。在建立虚拟网络时,根据虚拟网络物理范围描述表建立虚拟网络拓扑。在虚拟网络运行过程中,根据虚拟网络的流规则,将物理网络中的数据包交给与虚拟网络相对应的虚拟网络控制器处理。
所述虚拟网络物理范围描述表用于描述虚拟网络的虚拟拓扑,其结构如下:
DPID OFPort
DPID1 OFPort1
DPID2 OFPort2
表1虚拟网络物理范围描述表
其中,DPID为一个64bit标识符,用来标识一台OF(OpenFlow)交换机;OFPort为一个16bit标识符,用来标识一个OF交换机中的一个接口。
通过DPID和OFPort二元组就可以唯一确定网络中的一个接口。虚拟网络物理范围描述表可以完整地描述一个虚拟网络所使用的物理资源。
所述虚拟网络流规则描述表用于描述虚拟网络数据包,其结构如下:
Figure BDA0000423880480000061
Figure BDA0000423880480000071
表2虚拟网络流规则描述表
当多个虚拟网络的物理范围存在重叠时,若从虚拟网络重叠区域产生了数据包,该数据包将依据虚拟网络流规则描述表交给其中一个虚拟网络处理。
流规则(rule)是对数据包的描述,可以描述一个数据包从1层到4层的包头特征。流规则包括如下11个匹配项,因此也被称为11元组,其中各匹配项含义如下:
dpid OF交换机ID
inport 数据包的输入端口
ether source 以太网源MAC地址
ether dst 以太网目的MAC地址
ether type 以太网类型
IP src/mask 源IP地址,mask用于通配
IP dst/mask 目的IP地址,mask用于通配
IP proto IP协议字段
IP TOS bits IP包TOS字段
TCP/UDP src port TCP/UDP源端口号
TCP/UDP dst port TCP/UDP目的端口号
表3虚拟网络流规则匹配项
表3中的每个匹配项均包含三个字段,即:匹配域,匹配类型和匹配参数,其中,匹配域是表3中的11元组之一,用于标识匹配项的匹配字段;匹配类型用于标识匹配域的匹配方式,具有三种取值:ignore,equal,other;匹配参数用于标识匹配域的匹配数据参数。
因此一个完整的流规则(rule)应包含如下信息:
Figure BDA0000423880480000081
表4流规则结构
流规则匹配类型一共有三种,即ignore,equal和other,分别表示:
ignore:忽略此匹配域的匹配;
equal:当数据包与此匹配域的匹配参数相同时匹配;
other:找出其他此匹配域匹配类型为equal的流规则,若这些流规则都没有匹配,则匹配此条目。
例如,已设置三条流规则分别为:
流规则1:匹配域:inport,匹配类型:equal,匹配参数:1;
流规则2:匹配域:inport,匹配类型:equal,匹配参数:2;
流规则3:匹配域:inport,匹配类型:other,匹配参数:null。
若有一个数据包的inport=1,则该数据包与流规则1相匹配;若该数据包的inport=2,则该数据包与流规则2相匹配;若该数据包的inport=3,则该数据包既没有与流规则1相匹配,也没有与流规则2相匹配,因此与流规则3相匹配。
在本发明的一个具体实施方式中,当一个物理交换机(OpenFlow交换机)连接到网络虚拟化平台后,网络虚拟化平台会查找所有已启动虚拟网络的虚拟网络物理范围描述表,若新接入的物理交换机在虚拟网络物理范围描述表中,则将其添加到虚拟网络的虚拟拓扑中。
网络虚拟化平台负责探测和维护物理网络的链路信息,当网络虚拟化平台发现一条物理链路后,且虚拟网络物理范围描述表含有该条物理链路两端的接口时,将该条物理链路添加到虚拟网络的虚拟拓扑中。
在本发明的一个具体实施方式中,虚拟网络拓扑建立好后,则要为虚拟网络添加虚拟网络流规则,从而,符合流规则的数据包才会被与虚拟网络相对应的OpenFlow控制器处理。虚拟网络中每添加一台虚拟交换机,将从数据库的虚拟网络流规则表中取出与该虚拟交换机相关联的条目,添加到虚拟网络流规则中。
数据包经由与虚拟网络相对应的OpenFlow控制器处理后存在两个走向:从虚拟网络边缘转发出去;或是被转发给另外的虚拟网络节点。由于OpenFlow控制器对数据包的操作不局限于转发操作,OpenFlow控制器还可能修改数据包的包头信息,而修改后的包头信息可能不匹配本虚拟网络的虚拟网络流规则,可能导致从虚拟网络一个节点转发给另一个虚拟网络节点的数据包被不同的OpenFlow控制器处理或者被丢弃。为了解决这个问题,本发明提出了一种为虚拟网络数据包添加标签的机制。当一个数据包在虚拟网络拓扑内部传输时,数据包必须带有独一无二的虚拟网络流标签,这样,无论此数据包的包头被如何修改过,都能被与虚拟网络相对应的正确的OpenFlow控制器处理。
在本发明的一个具体实施方式中,将每个虚拟网络的交换机端口分为三种类型:虚拟网络内部端口、虚拟网络边缘端口和虚拟网络抑制端口。虚拟网络内部端口为虚拟网络拓扑中连接链路的端口,虚拟网络边缘端口为虚拟网络拓扑中不连接链路的端口,虚拟网络抑制端口为虚拟网络拓扑中被关闭的端口。在本发明的一个具体实施方式中,与虚拟网络相对应的OpenFlow控制器下发的指令被检测,如果OpenFlow控制器将数据包从虚拟网络内部端口转发出去,则修改OpenFlow下行信令(PacketOut/FlowMod)中的Action域,在合适的位置添加打标签的动作(Action),保证从虚拟网络内部端口发出的数据包含有虚拟网络流标签。同理,为了保证从虚拟网络边缘端口发出的数据包不含有虚拟网络流标签,需要在Action域中合适位置添加弹出标签的动作(Action),确保从虚拟网络抑制端口不产生上行信令,下行信令对抑制端口的转发操作也是无效的。虚拟网络流标签可以是vlan标签、mpls标签或其他类型标签。本实施例中的虚拟网络流标签为vlan标签(ModVlan)。
在本申请中,数据包指软件定义网络中数据平面的数据流,当数据包到达Openflow交换机而Openflow交换机无法处理此数据包时,Openflow交换机会将此数据包封装到Openflow协议中发送给对应的控制器。Openflow协议数据包称为信令。
PacketIn信令是OpenFlow中最为主要的上行信令。当一个数据包到达OpenFlow交换机(物理交换机)后,OpenFlow交换机会查找流表以处理该数据包,若OpenFlow交换机的流表中不存在与该数据包相匹配的条目,则交换机通过PacketIn信令将该数据包上交给网络虚拟化平台来处理。若OpenFlow交换机的流表中存在与该数据包相匹配的条目(流表项),则物理交换机按照流表项指定的Action处理该该数据包。网络虚拟化平台首先收到PacketIn数据包,它需要决定将此PacketIn如何处理,如何转发。
网络虚拟化平台所收到的PacketIn消息包含如下信息:
1、产生PacketIn的OpenFlow交换机的DPID;
2、数据包在OpenFlow交换机的入端口;
3、数据包的包头(默认情况下是128字节);
参见图3的PacketIn信令处理流程。步骤101,网络虚拟化平台接收收到一个PacketIn消息;步骤102,判断其是否带有Vlan标签,;步骤103,若数据包带有Vlan标签,则表明该数据包是虚拟网络内部的数据包;步骤105,判断该PacketIn发生的位置是否在虚拟网络所定义的物理范围内,可通过判断接收PacketIn的端口是否属于Vlan所标识的虚拟网络(即,虚网);步骤106,若是,则弹出数据包的Vlan标签,再将数据包转发给相应的与虚拟网络相对应的OpenFlow控制器;步骤107,如否,则报错;步骤104,若数据包不带Vlan标签,说明这个数据包是个未被分类的数据包;步骤108,需要将各个虚拟网络的虚拟网络流规则与该数据包的包头进行匹配,将PacketIn转发给匹配的与虚拟网络相对应的OpenFlow控制器。
PacketOut信令和FlowMod信令是OpenFlow中最为主要的下行信令。下行信令主要需要对以下内容进行处理:
1、对下行信令的匹配域(Match)进行处理,防止虚拟网络控制器下发的流表匹配域与不属于此虚拟网络流规则的数据包相匹配,从而保证与虚拟网络相对应的OpenFlow控制器下发的控制信息在虚拟网络流规则的约束范围内。
2、对下行信令的Action域进行处理,一方面保证数据包在虚拟网络内转发时带有正确的虚拟网络流标签,另一方面,控制虚拟网络数据包的扩散范围,防止数据包从虚拟网络未定义的接口扩散到虚拟网络外。
下行信令中FlowMod信令包含Match域,下面以FlowMod信令为例说明Match域的处理方法,但是不排除在其他信令中的使用:
OpenFlow协议的数据包Match域,用于描述一个数据包如何匹配流标项。OFMatch域所包含的匹配项如下所示:
in_port;/*Input switch port.*/数据包输入端口
dl_src;/*Ethernet source address.*/源mac
dl_dst;/*Ethernet destination address.*/目的mac
dl_vlan;/*Input VLAN id.*/vlan标签
dl_vlan_pcp;/*Input VLAN priority.*/vlan优先级
dl_type;/*Ethernet frame type.*/以太网帧类型
nw_tos;/*IP ToS(actually DSCP field,6bits).*/IP优先级
nw_proto;/*IP protocol or lower8bits of ARP opcode.*/IP协议类型或ARP包中的操作数
nw_src;/*IP source address.*/IPv4源地址
nw_dst;/*IP destination address.*/IPv4目的地址
tp_src;/*TCP/UDP source port.*/TCP/UDP源端口
tp_dst;/*TCP/UDP destination port.*/TCP/UDP目的端口
一个OFMatch至少包含以上一个或多个任意匹配项,OFMatch通过掩码来指示哪些字段需要匹配。
OFMatch的交集是指两个OFMatch所具有的共同匹配字段。OFMatch的并集是指两个OFMatch具有的所有匹配字段,当两个OFMatch的匹配字段有重合项但重合匹配项的参数不同时,并集不存在。并集可记为OFMatch1+OFMatch2。
例如:OFMatch1=dl_src+dl_dst+dl_type
OFMatch2=dl_src+nw_src+nw_dst
OFMatch1与OFMatch2的交集为dl_src
当OFMatch1的dl_src与OFMatch2的dl_src相同时,OFMatch1与OFMatch2有并集,并集为dl_src+dl_dst+dl_type+nw_src+nw_dst。
图4示例性说明了Match域的预处理流程。步骤201,网络虚拟化平台接收OpenFlow控制器下发的FlowMod下行信令;步骤202,向FlowMod中的Match域添加匹配虚拟网络流标签(SliceVlan)的匹配项,从而Match项将匹配虚拟网络内部数据包;步骤203,此条Match即为Match1,将其添加到Match列表中;步骤204,向FlowMod中的Match域添加匹配无标签(NoVlan)的匹配项,生成的Match项为Match2,Match2将匹配虚拟网络边缘进入虚拟网络的数据包;步骤205,将Match2与虚拟网络流规则中的每一条流进行合并操作,即并集运算,将运算后的Match项加入到Match列表中;步骤206,最后的得到的Match列表即为FlowMod的Match域在这个虚拟网络中的等价Match列表,结束。
下行信令中FlowMod信令和PacketOut信令包含Action域。图5示例性地说明了FlowMod信令中的Action域的预处理流程。步骤301,开始;步骤302,检查Action列表中是否包含All或是Flood,目的在于预先检查Action域是否包含Output=Flood或者Output=All这样的泛洪操作;步骤303,如果Action列表中不包含All或是Flood,则针对Match列表中的每一个Match项生成与之对应的Action,并下发流规则以及进行步骤311;步骤304,如果Action列表中包含All或是Flood,则意味着包含泛洪操作;步骤305,检测是否还有更多的端口;步骤306,如果判断为是,则获取一个端口;步骤307,判断端口是否是虚网边缘端口;步骤309,如果判断为是,则将该端口与Match列表中的所有MatchVlan=NoVlan的Match项取并集,得到的新的Match项添加到新的Match列表中;如果步骤307判断为否,则步骤308,判断端口是否为虚网内部端口;步骤310,如果判断为是,则将该端口与Match列表中的所有MatchVlan=SliceVlan的Match项取并集,得到的新的Match项添加到新的Match列表中;如果步骤308判断为否,则返回步骤305;如果步骤305判断为否,则执行步骤303;步骤311,结束。
图6示例性地说明了FlowMod信令中的Action域的处理流程。在这一处理流程之前,FlowMod信令已经对Match项进行了处理,生成了Match列表,并针对Match列表的每一项,生成了一个与之对应的Action项,将该Match项和Action项结合生成Flowmod消息,并下发给OpenFlow交换机(物理交换机)。
步骤401,开始;步骤402,判断Match列表中是否还有更多Match项;如果判断否,则进行到步骤413;如果判断是,步骤403,从Match列表中获取一个条目;步骤404,判断是否还有更多的Action;步骤405,如果否,则将新的Action列表与Match项结合生成FlowMod信令,下发给OpenFlow交换机(物理交换机),并返回至步骤402;如果在步骤404中判断结果为是,则在步骤406获取下一条Action;步骤407,判断Action的类型是否为Output;若不为Output,则进行到步骤408,直接将此Action添加到新的Action列表中,并返回到步骤404;若为Output,则进行到步骤409,继续检查其参数Output是否等于flood或all;如果结果为否,则进行到步骤410,如果需要调整Vlan标签状态,将ModVlan Action添加到新的Action列表中,以及将Output=port添加到新的Action列表中,并返回到步骤404;如果步骤409中的判断结果为是,则进行到步骤411,,该结果为是,则表明Match域中一定含有Inport项,取出虚拟网络交换机中除Match项中Inport以外的其他虚拟网络端口;步骤412,针对每一个端口port,如需要调整Vlan标签,则将ModVlan Action添加到新的Action列表中,以及将Output=port添加到新的Action列表中,并返回到步骤404;步骤413,结束。
将Output=flood和Output=All Action转化为针对每个端口的Output Action。在每个Output Action之前,都要检查数据包的Vlan状态是含有虚拟网络流标签还是无标签,网络虚拟化平台必须保证转发的数据包含有合适的虚拟网络标签(Vlan),如果Vlan不合适,则需要进一步调整。
调整Vlan标签的方法是:
1、内部维护一个状态变量VlanState来保存当前数据包的Vlan标签状态。
2、查看FlowMod的Match域中的MatchVlan项,若为MatchVlan=SliceVlan,则VlanState的初始值为SliceVlan,若MatchVlan=NoVlan,则VlanState=NoVlan。
3、若Output=虚拟网络边缘端口,则查看VlanState是否为NoVlan,若是NoVlan,则直接将Output直接添加到新的Action列表中,若为SliceVlan,则先将ModVlan=NoVlan添加到Action列表中,再将VlanState改为NoVlan,Output添加到Action列表中。
4、若Output=虚拟网络内部端口,则查看VlanState是否为SliceVlan,若是SliceVlan,则直接将Output直接添加到新的Action列表中,若为NoVlan,则先将ModVlan=SliceVlan添加到Action列表中,再将VlanState改为SliceVlan,Output添加到Action列表中。
图7示例性地说明PacketOut信令中的Action域的处理流程。PacketOut只针对某一个特定数据包进行处理,并没有Match域。步骤501,开始;步骤502,获取PacketOut的Action域;步骤402,判断是否还有更多Action;如果判断否,则进行到步骤513,下发PacketOut信令,并前进至步骤514;如果判断是,步骤504,获取下一条Action;步骤505,判断Action的类型是否为Output;若不为Output,则进行到步骤506,将此Action添加到Action列表中,并返回到步骤503;若为Output,则进行到步骤507,继续检查其参数Output是否等于flood或all;如果结果为否,则进行到步骤508,如果需要调整Vlan标签状态,将ModVlan Action添加到新的Action列表中,以及将Output=port添加到新的Action列表中,并返回到步骤503;如果步骤507中的判断结果为是,则进行到步骤509,判断PacketOut的BufferID是否等于-1;如果BufferID等于-1,则表明PacketOut指定为信令中的数据,前进到步骤510,获取虚拟网络交换机在虚拟网络中的所有端口,并前进到步骤512;如果BufferID不等于-1,则表明PacketOut指定数据包为物理交换机中缓存的数据包,前进到步骤511,获取除BufferID对应数据包入端口以外,虚拟网络交换机在虚拟网络中的其他所有端口,并前进到步骤512;步骤512,针对每一个端口port,如需要调整Vlan标签,则将ModVlan Action添加到新的Action列表中,以及将Output=port添加到新的Action列表中,并返回到步骤503;步骤514,结束。对于PacketOut信令,在处理Action域时也要调整Vlan标签。
调整Vlan标签的方法是:
1、内部维护一个状态变量VlanState来保存当前数据包的Vlan标签状态。
2、查看PacketOut的BufferID项是否为-1,若为-1,则VlanState的初始值为NoVlan,若不为-1,则需要查看BufferID所对应的PacketIn数据包是否带有Vlan标签,若没有标签,则VlanState=NoVlan,否则VlanState=SliceVlan。
3、若Output=虚拟网络边缘端口,则查看VlanState是否为NoVlan,若是NoVlan,则直接将Output直接添加到新的Action列表中,若为SliceVlan,则先将ModVlan=NoVlan添加到Action列表中,再将VlanState改为NoVlan,Output添加到Action列表中。
4、若Output=虚拟网络内部端口,则查看VlanState是否为SliceVlan,若是SliceVlan,则直接将Output直接添加到新的Action列表中,若为NoVlan,则先将ModVlan=SliceVlan添加到Action列表中,再将VlanState改为SliceVlan,Output添加到Action列表中。以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (8)

1.一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法,其特征在于:
接收数据包;
物理交换机接收到数据包时首先查询物理交换机内的流表,若流表不存在与该数据包的匹配项条目,则将此数据包包头封装在上行信令内发送给网络虚拟化平台;
网络虚拟化平台充当物理交换机的控制器;
网络虚拟化平台接收上交的数据包;
判断该数据包是否带有流标签;
若数据包带有流标签,表明该数据包是虚拟网络内部的数据包;
若数据包不带流标签,说明该数据包是未被分类的数据包。
2.根据权利要求1的方法,其特征在于:
若数据包不带流标签,将各个虚拟网络的虚拟网络流规则与该数据包的包头进行匹配,将该数据包通过虚拟交换机转发给与虚拟网络相对应的匹配的虚拟网络控制器。
3.根据权利要求1-2任一的方法,其特征在于:
若数据包带有流标签,进一步判断该数据包发生的位置是否在虚拟网络所定义的物理范围内;
若是,则弹出数据包的流标签,再将数据包转发给相应的与虚拟网络相对应的虚拟网络控制器;
如否,则报错。
4.根据权利要求1-3任一的方法,其特征在于:
所述上交的数据包中包含如下信息:
产生数据包的虚拟网络交换机的ID;
数据包在虚拟网络交换机的入端口;
数据包的包头。
5.根据权利要求1-4任一的方法,其特征在于:
判断该数据包发生的位置是否在虚拟网络所定义的物理范围内具体为,判断接收数据包的端口是否属于流标签所标识的虚拟网络。
6.根据权利要求1-5任一的方法,其特征在于:
所述流标签为Vlan或MPLS。
7.根据权利要求1-6任一的方法,其特征在于:
所述数据包为上行信令PacketIn。
8.根据权利要求1-7任一的方法,其特征在于:
所述物理交换机为OpenFlow交换机。
CN201310616467.4A 2013-11-27 2013-11-27 一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法 Active CN103746892B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310616467.4A CN103746892B (zh) 2013-11-27 2013-11-27 一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310616467.4A CN103746892B (zh) 2013-11-27 2013-11-27 一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法

Publications (2)

Publication Number Publication Date
CN103746892A true CN103746892A (zh) 2014-04-23
CN103746892B CN103746892B (zh) 2016-01-13

Family

ID=50503883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310616467.4A Active CN103746892B (zh) 2013-11-27 2013-11-27 一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法

Country Status (1)

Country Link
CN (1) CN103746892B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104734994A (zh) * 2015-04-13 2015-06-24 上海斐讯数据通信技术有限公司 一种基于sdn框架的流标签控制方法
WO2015165270A1 (zh) * 2014-04-30 2015-11-05 华为技术有限公司 一种数据包处理方法及设备
CN105049358A (zh) * 2015-06-25 2015-11-11 清华大学 一种sdn网络的虚拟转发平台及其通信方法
CN105337857A (zh) * 2015-11-23 2016-02-17 北京邮电大学 一种基于软件定义网络的多路径传输方法
CN105471738A (zh) * 2014-09-09 2016-04-06 中国电信股份有限公司 一种业务流量的传输方法及系统
CN105791153A (zh) * 2014-12-24 2016-07-20 中国电信股份有限公司 业务流量调度方法和系统及流量控制器和网络边缘设备
CN105871675A (zh) * 2015-01-20 2016-08-17 华为技术有限公司 一种数据处理方法及装置
CN105915428A (zh) * 2016-04-19 2016-08-31 烽火通信科技股份有限公司 基于open_flow协议的sdn网络l2vpn实现方法及系统
CN106534048A (zh) * 2015-09-11 2017-03-22 中国电信股份有限公司 一种防范sdn拒绝服务攻击的方法、交换机和系统
US10055240B2 (en) 2014-09-23 2018-08-21 At&T Intellectual Property I, L.P. Service creation and management
CN109660443A (zh) * 2018-12-26 2019-04-19 江苏省未来网络创新研究院 基于sdn的物理设备与虚拟网络通信方法和系统
CN110166360A (zh) * 2019-05-27 2019-08-23 盛科网络(苏州)有限公司 基于OpenFlow交换机的MPLS-TP APS实现方法及系统
CN111404705A (zh) * 2019-01-02 2020-07-10 中国移动通信有限公司研究院 一种sdn的优化方法、装置及计算机可读存储介质
CN111541615A (zh) * 2020-04-24 2020-08-14 北京邮电大学 基于VxWorks操作系统的双协议栈系统
CN113360740A (zh) * 2021-06-04 2021-09-07 上海天旦网络科技发展有限公司 一种数据包标签方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102594689A (zh) * 2012-02-22 2012-07-18 中兴通讯股份有限公司 一种分布式网络控制方法及装置
CN102857416A (zh) * 2012-09-18 2013-01-02 中兴通讯股份有限公司 一种实现虚拟网络的方法和虚拟网络
CN102938794A (zh) * 2012-11-14 2013-02-20 华为技术有限公司 地址解析协议arp消息转发方法、交换机和控制器
CN102957603A (zh) * 2012-11-09 2013-03-06 盛科网络(苏州)有限公司 基于多级流表的Openflow报文转发方法及系统
CN103051629A (zh) * 2012-12-24 2013-04-17 华为技术有限公司 一种基于软件定义网络中数据处理的系统、方法和节点

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102594689A (zh) * 2012-02-22 2012-07-18 中兴通讯股份有限公司 一种分布式网络控制方法及装置
CN102857416A (zh) * 2012-09-18 2013-01-02 中兴通讯股份有限公司 一种实现虚拟网络的方法和虚拟网络
CN102957603A (zh) * 2012-11-09 2013-03-06 盛科网络(苏州)有限公司 基于多级流表的Openflow报文转发方法及系统
CN102938794A (zh) * 2012-11-14 2013-02-20 华为技术有限公司 地址解析协议arp消息转发方法、交换机和控制器
CN103051629A (zh) * 2012-12-24 2013-04-17 华为技术有限公司 一种基于软件定义网络中数据处理的系统、方法和节点

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10230647B2 (en) 2014-04-30 2019-03-12 Huawei Technologies Co., Ltd. Data packet processing method and device
WO2015165270A1 (zh) * 2014-04-30 2015-11-05 华为技术有限公司 一种数据包处理方法及设备
CN105099942B (zh) * 2014-04-30 2019-05-03 华为技术有限公司 一种数据包处理方法及设备
CN105099942A (zh) * 2014-04-30 2015-11-25 华为技术有限公司 一种数据包处理方法及设备
CN105471738A (zh) * 2014-09-09 2016-04-06 中国电信股份有限公司 一种业务流量的传输方法及系统
CN105471738B (zh) * 2014-09-09 2019-04-23 中国电信股份有限公司 一种业务流量的传输方法及系统
US10528381B2 (en) 2014-09-23 2020-01-07 At&T Intellectual Property I, L.P. Service creation and management
US11586461B2 (en) 2014-09-23 2023-02-21 Atlassian Us, Inc. Service creation and management
US11029994B2 (en) 2014-09-23 2021-06-08 At&T Intellectual Property I, L.P. Service creation and management
US10055240B2 (en) 2014-09-23 2018-08-21 At&T Intellectual Property I, L.P. Service creation and management
CN105791153A (zh) * 2014-12-24 2016-07-20 中国电信股份有限公司 业务流量调度方法和系统及流量控制器和网络边缘设备
CN105791153B (zh) * 2014-12-24 2019-04-30 中国电信股份有限公司 业务流量调度方法和系统及流量控制器和网络边缘设备
CN105871675A (zh) * 2015-01-20 2016-08-17 华为技术有限公司 一种数据处理方法及装置
CN105871675B (zh) * 2015-01-20 2019-05-03 华为技术有限公司 一种数据处理方法及装置
US10484204B2 (en) 2015-01-20 2019-11-19 Huawei Technologies Co., Ltd. Data processing method and apparatus
CN104734994A (zh) * 2015-04-13 2015-06-24 上海斐讯数据通信技术有限公司 一种基于sdn框架的流标签控制方法
CN105049358B (zh) * 2015-06-25 2018-08-28 清华大学 一种sdn网络的虚拟转发平台及其通信方法
CN105049358A (zh) * 2015-06-25 2015-11-11 清华大学 一种sdn网络的虚拟转发平台及其通信方法
CN106534048A (zh) * 2015-09-11 2017-03-22 中国电信股份有限公司 一种防范sdn拒绝服务攻击的方法、交换机和系统
CN105337857A (zh) * 2015-11-23 2016-02-17 北京邮电大学 一种基于软件定义网络的多路径传输方法
CN105337857B (zh) * 2015-11-23 2018-05-25 北京邮电大学 一种基于软件定义网络的多路径传输方法
CN105915428B (zh) * 2016-04-19 2018-09-18 烽火通信科技股份有限公司 基于open_flow协议的sdn网络l2vpn实现方法及系统
WO2017181637A1 (zh) * 2016-04-19 2017-10-26 烽火通信科技股份有限公司 基于open_flow协议的sdn网络l2vpn实现方法及系统
CN105915428A (zh) * 2016-04-19 2016-08-31 烽火通信科技股份有限公司 基于open_flow协议的sdn网络l2vpn实现方法及系统
CN109660443A (zh) * 2018-12-26 2019-04-19 江苏省未来网络创新研究院 基于sdn的物理设备与虚拟网络通信方法和系统
CN109660443B (zh) * 2018-12-26 2021-12-31 江苏省未来网络创新研究院 基于sdn的物理设备与虚拟网络通信方法和系统
CN111404705A (zh) * 2019-01-02 2020-07-10 中国移动通信有限公司研究院 一种sdn的优化方法、装置及计算机可读存储介质
CN110166360A (zh) * 2019-05-27 2019-08-23 盛科网络(苏州)有限公司 基于OpenFlow交换机的MPLS-TP APS实现方法及系统
CN110166360B (zh) * 2019-05-27 2021-04-20 盛科网络(苏州)有限公司 基于OpenFlow交换机的MPLS-TP APS实现方法及系统
CN111541615A (zh) * 2020-04-24 2020-08-14 北京邮电大学 基于VxWorks操作系统的双协议栈系统
CN113360740A (zh) * 2021-06-04 2021-09-07 上海天旦网络科技发展有限公司 一种数据包标签方法及系统

Also Published As

Publication number Publication date
CN103746892B (zh) 2016-01-13

Similar Documents

Publication Publication Date Title
CN103595647B (zh) 一种基于OpenFlow的SDN虚拟化平台下行信令处理方法
CN103746892B (zh) 一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法
CN103607348A (zh) 一种基于OpenFlow协议的虚拟网络流量分类方法
US20200220807A1 (en) Systems and methods for software defined networking service function chaining
US9602415B2 (en) Flow based network service insertion
US10069764B2 (en) Ruled-based network traffic interception and distribution scheme
EP3864807B1 (en) Differentiated services within a service mesh
US8873563B2 (en) Techniques for next-hop optimization
US20140071987A1 (en) Systems and methods providing reverse path forwarding compliance for a multihoming virtual routing bridge
US20180159702A1 (en) Packet forwarding
CN108307434A (zh) 用于流控制的方法和设备
CN103095583A (zh) 通过芯片环回实现Openflow两级流表的方法及系统
CN103685009A (zh) 数据包的处理方法、控制器及系统
CN104394083B (zh) 转发表项处理的方法、报文转发的方法及其装置和系统
CN111049752B (zh) 多传输线路的负载均衡方法及装置
CN105656796A (zh) 实现虚拟扩展局域网三层转发的方法和装置
CN109525501B (zh) 一种调整转发路径的方法和装置
CN109361608A (zh) 报文处理方法、系统及存储介质
CN105812294A (zh) 开流交换器、包交换方法、sdn控制器及数据流控制方法
CN109450793B (zh) 一种业务流量调度的方法和装置
CN103973568A (zh) 用于在mpls核心网上转发sdn流的方法和设备
KR101841026B1 (ko) 최적 경로 설정을 위한 서비스 기능 체이닝 네트워크 시스템
CN103684905A (zh) 一种网络虚拟化平台的流规则冲突检测及处理方法
CN108650178A (zh) 一种业务报文处理方法、装置及系统
CN103916321B (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
C14 Grant of patent or utility model
GR01 Patent grant