一种SDN网络中建立链路的方法和装置
技术领域
本发明涉及网络通信领域,具体涉及一种SDN网络中建立链路中的方法。本发明同时涉及一种SDN网络中建立链路的装置。
背景技术
软件定义网络(Software Defined Network,SDN),是Emulex网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。
在传统网络通信技术中,存在两种最主要的通信方式:二层转发、三层转发。二层转发指的是:通信的两端具备相同的VLAN ID值,且通信的两端的IP地址也为相同网段,即子网相同。并且通信的两端如果不是直连,则要求中间的路径也能够转发相同的VLAN ID值,即中继此VLAN。三层转发,指的是:通信的两端在不同的IP网段中(子网不同),而此时三层转发是不关心二层的VLAN ID信息的,VLAN ID信息可以相同亦可以不同。
在传统网络中,VLAN ID表示的是VLAN的号码,是标识VLAN的一个数字,表示的只是一个代码,在不同的交换机不同的IOS上,可以分配的VLAN数也是不同的。
在传统网络中,VLAN(虚拟局域网)是将一组设备和主机连接起来,进行相互通信的广播域,就好像它们在同一个IP网段中一样。在同一个二层域内,只有相同VLAN ID值的通信节点才可以彼此之间通信。目前,当通信节点分别位于不同的VLAN ID内,利用传统网络,无法实现二层通信,要实现不同VLANID的设备和主机通信,则必须利用三层转发方式,查询IP路由方式。如果利用传统方式,只能将通信的两端VLAN ID修改一致,才能实现二层通信。
目前没有方法能够实现不同VLAN ID之间、相同IP网段的二层通信,即无法把两个不同的VLAN ID合并为同一个广播域。
发明内容
本发明提供一种SDN网络中建立链路的方法,以解决现有无法实现不同VLAN ID之间、相同IP网段的二层通信的问题。本发明另外提供一种SDN网络中建立链路的装置。
本发明提供一种SDN网络中建立链路的方法,所述SDN中包括SDN控制器和多个用于转发数据流的SDN网元,所述方法包括:
为业务连接的已选路径上的两个所述SDN网元之间的每段链路分配一个对应该业务的VLAN ID;对于通信节点与所述SDN网元之间的链路,采用该通信节点的VLAN ID作为该段链路的VLAN ID;
向该业务连接中的各所述SDN网元下发流表,通过对应每个所述SDN网元的所述流表中的所述VLALN ID和端口编号信息,对每个所述SDN网元的VLAN ID和端口编号进行匹配和替换,完成SDN中所述业务连接的链路的建立;其中,所述流表中包括匹配字段和动作字段,所述匹配字段用于匹配每个SDN网元的入向端口编号和入向链路VLAN ID,所述动作字段用于指示出向端口编号和设置出向链路VLAN ID。
较佳地,所述为业务连接的已选路径上的两个所述SDN网元之间的每段链路分配一个对应该业务的VLAN ID之前,还包括:
计算所述业务连接的两端所述通信节点通信时允许经过的所有可用路径;
根据所有可用路径中的最短路径或路径cost进行加权,得出唯一最优解作为所述已选路径。
较佳地,所述得出唯一最优解,具体包括:
假设加权结果相同,则随机选一个路径作为等价最优解。
较佳地,所述为业务连接的已选路径上的两个所述SDN网元之间的每段链路分配一个对应该业务的VLAN ID,具体为:
预先设置所述链路上VLAN ID的可用区间范围;
依次或随机分配VLAN ID。
较佳地,所述依次或随机分配VLAN ID,具体包括:
根据所述业务连接开通顺序,依次或随机在可用区间范围内取值;
当所述业务连接关闭时,回收此VLAN ID;
当VLAN ID分配到最大可用区间值时,再次从区间内第一个可用值开始取值;
当区间内所有值均分配完之后,则反馈错误。
本发明还提供一种SDN网络中建立链路的装置,包括:
分配单元,用于为业务连接的已选路径上的两个所述SDN网元之间的每段链路分配一个对应该业务的VLAN ID;对于通信节点与SDN网元之间的链路,采用该通信节点的VLAN ID作为该段链路的VLAN ID;
链路建立单元,用于向该业务连接中的各所述SDN网元下发流表,通过对应每个所述SDN网元的所述流表中的所述VLALN ID和端口编号信息,对每个所述SDN网元的VLAN ID和端口编号进行匹配和替换,完成SDN网络中所述业务连接的链路的建立;其中,所述流表中包括匹配字段和动作字段,所述匹配字段用于匹配每个SDN网元的入向端口编号和入向链路VLAN ID,所述动作字段用于指示出向端口编号和设置出向链路VLAN ID。
较佳地,还包括:
路径选择单元,用于计算所述业务连接的两端节点通信时允许经过的所有可用路径;
加权单元,用于根据所有可用路径中的最短路径或路径cost进行加权,得出唯一最优解作为已选路径。
较佳地,所述得出唯一最优解,具体包括:
假设加权结果相同,则随机选一个路径作为等价最优解。
较佳地,所述分配单元,具体用于预先设置所述链路上VLAN ID的可用区间范围;依次或随机分配VLAN ID。
较佳地,所述分配单元依次或随机分配VLAN ID,具体包括:
根据所述业务连接开通顺序,依次或随机在可用区间范围内取值;
当所述业务连接关闭时,回收此VLAN ID;
当VLAN ID分配到最大可用区间值时,再次从区间内第一个可用值开始取值;
当区间内所有值均分配完之后,则反馈错误。
与现有技术相比,本发明具有以下优点:
本发明通过为业务连接的已选路径上的两个所述SDN网元之间的每段链路分配一个对应该业务的VLAN ID;并向该业务连接中的各所述SDN网元下发流表,通过对应每个所述SDN网元的所述流表中的所述VLALN ID和端口编号信息,对每个所述SDN网元的VLAN ID和端口编号进行匹配和替换,完成SDN中所述业务连接的链路的建立。利用SDN转发、控制分离的特点,可以借助SDN控制器统一规划VLAN与链路的映射关系,将VLAN ID从全局唯一变成链路唯一,采用本发明可以提供的方法,利用VLAN ID标识链路并通过确定VLANID逐条修改可以唯一确定两端节点之间的通信,通过SDN流表实现VLAN ID的匹配、替换,实现不同VLAN ID的两端通信节点之间的通信。
附图说明
图1是一种SDN网络的结构示意图;
图2是本发明的一种SDN网络中建立链路的方法实施例的流程示意图;
图3是本发明的一个具体实例的结构示意图;
图4是本发明的一种SDN网络中建立链路的装置的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
本发明主要应用于网络通信领域。以下为涉及到的专业术语:
VLAN(Virtual Local Area Network,虚拟局域网)。
SDN(software defined networking,软件定义网络),由美国斯坦福大学cleanslate计划资助的一个开放式标准协议,后演变成GENI的子项目。SDN技术提出分离网络的控制平面和数据平面,其核心技术openflow将控制功能从网络设备之中分离出来,取而代之的是SDN网元设备维护流表(flow-table),数据报文按照流表中的优先级、匹配规则、转发策略进行转发。
SDN包含三个主要部分(SDN控制器、SDN网元、openflow控制协议),在本发明中,这三个部分分别承担这几个工作,如图1所示。
SDN控制器:由NOS(networking operation system,网络操作系统)实现控制逻辑功能,类似的控制器有很多,例如:Opendaylight、ONOS、NOX、RYU等等。集中控制,统一下流表,存储路径VLAN ID信息与业务对应关系。
SDN网元:又叫openflow Switch,OFS,openflow交换机。支持标准openflow转发的网络设备,支持控制器下发流表配置。网元设备根据流表规则,对VLAN ID进行替换、修改。
Oepnflow协议:SDN南向控制协议,用于SDN控制器与SDN网元之间的通信。SDN流表通过openflow方式由控制器下发给网元设备。
本发明实施例提供一种SDN网络中建立链路的方法,以下为具体实施例:SDN网络包括SDN控制器和多个用于数据转发的SDN网元,如图2所示,其为本申请提供的一种SDN网络中建立链路的方法实施例的流程示意图,该方法由SDN控制器执行,该方法包括如下步骤:
步骤S101、为业务连接的已选路径上的两个所述SDN网元之间的每段链路分配一个对应该业务的VLAN ID;对于通信节点与SDN网元之间的链路,采用该通信节点的VLAN ID作为该段链路的VLAN ID。
所述业务连接,是指通信的两端节点有互通的二层需求,两端通信节点已具有VLAN ID,并且两端通信节点已连接至由SDN网元组成的网络中。
所述链路是指两个直接相连的SDN网元之间的线路;
所述路径是指从两端通信节点之间业务连接的起点到终点所经过的可能的链路的集合。
较佳的,在所述步骤S101之前,还可以包括:
计算该业务连接的两端通信节点在通信时允许经过的所有可用路径;
根据所有可用路径中的最短路径或路径cost进行加权,得出唯一最优解。
较佳的,假设加权结果相同,则随机选一个路径作为等价最优解。
较佳的,路径cost进行加权是指网络中链路有带宽高低之分,通过cost系数加权可以解决不同带宽之间的比较。
本发明业务连接两端的通信节点可以具有相同的VLAN ID或不同的VLANID。
所述SDN控制器记录与该业务连接相连接的各个SDN网元的端口编号、业务连接两端的VLAN ID。
较佳地,需要区分该业务连接的两端通信节点的通信方向。两个方向分别作为两个业务连接。两个业务连接所经过的路径可以一致也可以不一致。
较佳地,步骤S101中,VLAN ID分配规则具体如下:
预先设置该链路上VLAN ID值可用区间范围,例如[200-300],即200至300;
依次或随机分配VLAN ID值。
较佳地,所述依次分配VLAN ID值,具体包括:
根据业务连接开通顺序,依次在可用区间内顺序取值;
当业务连接关闭时,回收此VLAN ID值;
当VLAN ID值分配到最大可用区间值时,再次从区间内第一个可用值开始取值;
当区间内所有值均分配完之后,则反馈错误。
较佳地,所述随机分配VLAN ID值,具体包括:
按业务连接开通顺序,随机在可用区间内取值;
当业务连接关闭时,此VLAN ID值回收;
当区间内所有值均分配完之后,则反馈错误。
SDN网元作为转发节点,连接着两条计算出的链路。SDN控制器知晓此业务连接经过SDN网元前的链路VLAN ID值以及经过此网元后的链路VLAN ID值。
每个SDN网元根据VLAN ID和端口编号能够确定一个业务连接,通过端口编号的不同来区分出业务连接,并根据所述流表,转发报文至特定出向。
此时,业务连接从起点到终点需要经过的所有链路和SDN网元,SDN控制器都能够计算得出。
步骤S102、SDN控制器向业务连接中的各SDN网元下发流表,通过对应每个所述SDN网元的所述流表中的所述VLALN ID和端口编号信息,对每个所述SDN网元的VLAN ID和端口编号进行匹配和替换,完成SDN网络中所述业务连接的链路的建立;所述流表中包括匹配字段和动作字段,所述匹配字段用于匹配每个SDN网元的入向端口编号和入向链路VLAN ID,所述动作字段用于指示出向端口编号和设置出向链路VLAN ID。
在业务连接的路径中,其中两条链路分别是通信节点与SDN网元之间的链路,其它链路是各SDN网元之间的链路。
其中,对于各SDN网元之间的每段链路所分配的所述VLAN ID,不仅对应该段链路上游的一端所述SDN网元的出向VLAN ID或者所述通讯节点的VLANID,还对应该段链路下游一端的所述SDN网元的入向VLAN ID或者所述通讯节点的VLAN ID。
较佳的,SDN控制器可以通过openflow协议下发流表。
所谓流表,其实可被视作是OpenFlow对网络设备的数据转发功能的一种抽象。在网络设备中,交换机和路由器的数据转发需要依赖设备中保存的二层MAC地址转发表或者三层IP地址路由表,而OpenFlow交换机中使用的流表也是如此,不过在它的表项中整合了网络中各个层次的网络配置信息,从而在进行数据转发时可以使用更丰富的规则。
流表是一张张转发表,每张流表都由很多条流表项组成。
OpenFlow流表的每个流表项都至少包括2部分内容:用于数据包匹配的匹配字段(match field),和用于展示匹配的数据包如何处理的动作字段(Actions)。
match field:OpenFlow流表的匹配域,用于对SDN网元接收到的数据包的包头内容进行匹配。match field包括报文本身的信息以及跟报文关联的字段,具体地,matchfield中包括:入向端口编号和入向VLAN ID。
Actions:OpenFlow流表的动作用于指示SDN网元在收到匹配的数据包后应该如何对其进行处理。与传统交换机转发表只需要指明数据包的转发出端口不同,OpenFlow交换机因为缺少控制平面的能力,所以对匹配数据包的处理不仅仅是简单的转发操作,而需要用动作来详细说明交换机将要对数据包所做的处理。Action是应用到一个报文上的最小原子操作,宏观看来包括两大类,报文编辑和报文转发。
OpenFlow交换机的每个流表项可以对应有零至多个动作,如果没有定义转发动作,那么与流表项匹配域匹配的数据包将被默认丢弃。统一流表项中的多个动作的执行可以具有优先级,但是在数据包的发送上并不保证其顺序。另外,如果流表项中出现有OpenFlow交换机不支持的参数值,交换机将向控制器返回相应的出错信息。
流表的Action包括:set field VLAN ID和output;
output:用于指示出向链路端口编号。
set field VLAN ID:用于指示SDN网元将入向VLAN ID设置为出向VLANID。
对于通信节点与SDN网元之间的链路,其VLAN ID,是该通信节点的VLAN ID。
对于两个SDN网元之间的链路,链路两端为两个SDN网元:链路上游一端的SDN网元和链路下游一端的SDN网元,由于分配给每个SDN网元的流表都包括该网元的入向VLAN ID和出向VLAN ID,因此,链路上游的一端所述SDN网元的出向VLAN ID,以及链路下游一端所述SDN网元的入向VLAN ID,均与该链路的VLAN ID相匹配。
此SDN网元针对此单向的业务连接,通过流表,已经知晓入向的链路VLANID值、出向链路的VLAN ID值。
SDN控制器能够知晓此SDN网元两条链路所对应的端口编号。
本发明通过SDN流表实现VLAN ID的匹配、替换,通过VLAN标签的灵活分配和使用,利用VLAN ID标识链路,实现不同VLAN ID的报文之间的通信,采用本发明可以提供的方法,不用修改已有的VLAN ID,也能够实现同一个二层广播域内的通信。
下面以一个具体实例说明如何实现VLAN间的二层通信及SDN网络中链路的建立。
如图3所示,H1和H2分别是两端通信节点,始末VLAN ID不同,且作为一个业务连接,有通信需求。当有一个新的单方向业务连接需要建立时,SDN控制器做如下计算工作:
步骤S201、为业务连接的已选路径(A->B-D)上的两个通信节点(H1,H2)之间的每段链路分配一个对应该业务的VLAN ID。
其中,网元A与网元B之间的链路,分配VLAN ID为X;
网元B与网元D之间的链路,分配VLAN ID为Y;
对于通信节点H1与网元A之间的链路,采用该H1的VLAN ID作为该段链路的VLANID;对于通信节点H2与网元D之间的链路,采用该H2的VLANID作为该段链路的VLAN ID。
较佳地,步骤S201之前,需要区分H1至H2的通信方向、H2至H1的通信方向。两个方向分别作为两个业务连接。H1和H2拥有相同的不VLAN ID 30。H1的VLAN ID是30,H2的VLANID是60,记录表1如下:
表1
两个业务连接所经过的路径可以一致也可以不一致。
SDN控制器记录SDN网元A上H1的端口编号和VLAN ID、SDN网元D上H2的端口编号和VLAN ID。
较佳地,步骤S201之前还包括:当H1需要与H2通信时,网元A需要连接至网元D,此时控制器预先计算得出所有可用路径{A-B、B-D}和{A-C、C-D}。
假设加权得出可用路径{A-B、B-D}和{A-C、C-D}值相同,则random{可用路径},选出等价最优解,假设为{A-B、B-D}。
此时,SDN网元A、B、D作为路径上转发的网元设备。SDN控制器知晓H1至H2单向连接业务中途径的SDN网元以及链路。
步骤S202、SDN控制器向业务连接中的SDN网元A,SDN网元B,SDN网元D下发流表,通过对应每个所述SDN网元的所述流表中的所述VLALN ID和端口编号信息,对每个所述SDN网元的VLAN ID和端口编号进行匹配和替换,完成SDN中所述业务连接的链路的建立;其中,所述流表中包括匹配字段和动作字段,所述匹配字段用于匹配每个SDN网元的入向端口编号和入向链路VLAN ID,所述动作字段用于指示出向端口编号和设置出向链路VLAN ID。
对于各SDN网元之间的每段链路所分配的所述VLAN ID,不仅对应该段链路上游的一端所述SDN网元的出向VLAN ID,还对应该段链路下游一端的所述SDN网元的入向VLANID;对于通信节点与SDN网元之间的每段链路的VLAN ID,是该通信节点的VLAN ID。
流表中包括SDN网元A、B、D的Match field,即入向端口编号和入向链路的VLANID,还包括Action,即将网元A、B、D的入向链路的VLAN ID设置为出向链路的VLAN ID,以及网元A、B、D的出向端口编号。
流表如下表2所示:
表2
根据上面具体实例,可以看到:
原本VLAN ID是全局的属性,但现在本发明中是每个链路上的属性。不同的业务连接,可以复用相同的VLAN ID值,例如上面的X、Y,可以分别分配在不同的链路上。
每个SDN网元,根据VLAN ID和端口编号能够唯一确定一个业务连接,即使VLAN相同,也能够通过端口编号不同来严格区分出业务连接,并根据action动作,转发报文至特定出向output。
利用本发明的方法,可以使相同VLAN ID的通信节点实现通信,也可使不同VLANID的通信节点实现通信。
在SDN网络环境中,原本的二三层报文封装信息被拉平了,不需要先匹配二层以太网帧,再匹配三层IP报文。SDN中,数据报文都是按照流表的规则匹配、执行,不再关心报文中某字段位于二层还是三层。那这时候VLAN ID不再是传统网络中的“虚拟局域网”,而是一个“身份标签”。在云计算、SDN网络环境中,VLAN ID可以用于区分租户,识别租户业务,做业务隔离。但受限于VLAN ID总计只有12比特,可用范围不超过2的12次方,即4096,可用值不超过4094。这个范围在单个数据中心或者小范围内是足够使用的,但在跨数据中心时或给多租户提供服务时,4096的范围是不够使用的。
原本VLAN ID受限于4K是因为传统网络通信过程中,VLAN ID是有作用域的,即二层域。在一个二层域内,同VLAN ID值的通信节点之间可以互相通信。而无法改变VLAN ID只有12比特的既有事实。本申请的方法是借助SDN集中控制的方法,将VLAN ID作为一个标签值使用,且仅本地有效。借助SDN控制器,统一记录每一个网元本地的VLAN ID对应的标签关系。
相对应的,本发明还提供一种SDN网络中建立链路的装置,以下为该装置的具体实施例:
如图4所示,其为本申请提供的一种SDN网络中建立链路的装置的结构示意图,包括:
分配单元11,用于为业务连接的已选路径上的两个所述SDN网元之间的每段链路分配一个对应该业务的VLAN ID;对于通信节点与SDN网元之间的链路,采用该通信节点的VLAN ID作为该段链路的VLAN ID;
链路建立单元12,用于向该业务连接中的各所述SDN网元下发流表,通过对应每个所述SDN网元的所述流表中的所述VLALN ID和端口编号信息,对每个所述SDN网元的VLANID和端口编号进行匹配和替换,完成SDN网络中所述业务连接的链路的建立;其中,所述流表中包括匹配字段和动作字段,所述匹配字段用于匹配每个SDN网元的入向端口编号和入向链路VLAN ID,所述动作字段用于指示出向端口编号和设置出向链路VLAN ID。
较佳地,该装置还包括:
路径选择单元13,用于计算所述业务连接的两端通信节点通信时允许经过的所有可用路径;
加权单元14,用于根据所有可用路径中的最短路径或路径cost进行加权,得出唯一最优解作为已选路径。
所述得出唯一最优解,具体包括:
假设加权结果相同,则随机选一个路径作为等价最优解。
较佳的,所述分配单元11,具体用于预先设置所述链路上VLAN ID的可用区间范围;依次或随机分配VLAN ID。
较佳的,所述分配单元11依次或随机分配VLAN ID,具体包括:
根据所述业务连接开通顺序,依次或随机在可用区间范围内取值;
当所述业务连接关闭时,回收此VLAN ID;
当VLAN ID分配到最大可用区间值时,再次从区间内第一个可用值开始取值;
当区间内所有值均分配完之后,则反馈错误。
本发明利用SDN转发与控制互相分离的特点,报文的转发根据流表进行匹配、转发,不再像传统网络中,需要先查询二层以太网帧信息再查询三层IP信息,而是可以根据流表的转发机制,通过VLAN标签的灵活分配和使用,利用VLAN ID标识链路,实现不同VLAN ID的报文之间的通信,同时能将VLAN作用域由原来的整个二层域内唯一变成每链路VLAN ID值唯一。
当前,在传统网络中,二层交换机用于实现同网段、同一个二层域内的数据报文通信,而三层交换机或路由器,在已实现二层交换机功能的同时,还可以实现不同IP网段、不同二层域之间的数据报文通信。
但是,在SDN网络中,SDN控制器可以对SDN交换机下发流表,并基于下发的流表转发报文。如果将下发的流表与通信两端通信节点的VLAN ID对应起来,则可以实现不同主机在不同VLAN内的二层通信。
因为SDN网络中,链路是依赖于SDN网元连接起来的,SDN控制器通过对SDN网元下发流表后,可以对SDN网络中的每一条链路的VLAN ID值进行修改。这样相当于将VLAN ID作为一个转发标签,实现基于VLAN ID的报文转发,同时,可以将VLAN ID作用域变成链路唯一,不同链路可以复用相同的VLANID值。
本发明利用SDN转发、控制分离的特点,可以借助SDN控制器统一规划VLAN与链路的映射关系,将VLAN ID从全局唯一变成链路唯一,并通过SDN流表实现VLAN ID的匹配、替换、报文转发,不用修改已有的VLAN ID,也能够实现同一个二层广播域内的通信。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。