一种OpenFlow协议支持VPN的方法及设备的制作方法
【专利摘要】本发明公开了一种OpenFlow协议支持虚拟私有网VPN的方法,应用于OpenFlow网络的VPN交换设备中,同一VPN内其他交换设备通过所述VPN交换设备实现互访,且VPN之间转发隔离,该方法包括:VPN交换设备上创建有VPN实例,将对应物理端口加入到该VPN实例中,每一个VPN实例对应一个VPN逻辑端口;将携带有VPN逻辑端口信息的端口消息发送给控制设备,用于控制设备下发相应VPN逻辑端口的流表匹配项,进行报文匹配。本发明还公开了一种VPN交换设备和控制设备。采用本发明能够实现同一VPN内设备互访共用相同转发表项,减少硬件资源浪费。
【专利说明】-种OpenFlow协议支持VPN的方法及设备
【技术领域】
[0001] 本发明涉及网络通信【技术领域】,特别涉及一种OpenFlow协议支持VPN的方法及设 备。
【背景技术】
[0002] OpenFlow 是 SDN(Software Defined Network,软件定义网络)架构中定义的一个 控制器与转发层之间的通信接口标准。OpenFlow允许直接访问和操作网络设备的转发平 面,这些网络设备可能是物理上的,也可能是虚拟的。OpenFlow的思想是分离控制平面和 数据平面,二者之间使用标准的协议通信;数据平面采用基于流的方式进行转发。OpenFlow 网络由交换设备和控制设备通过OpenFlow通道(OpenFlow Channel)组成。控制设备是控 制中心,根据用户的配置或者动态运行的协议生成流表发送到交换设备。控制设备上可能 运行实验程序,或者第三方开发的软件等等。交换设备接收控制设备设置的流表,并根据流 表进行报文处理,向控制设备上报设备的状态和事件如接口 UP/D0WN。在交换设备和控制设 备之间通过OpenFlow通道(基于TCP或者SSL)进行通信。
[0003] 在现有的虚拟私有网络(VPN)技术中,主要有两种实现方法,分别为基于二层交 换的二层VPN和基于三层交换的三层VPN。二层VPN提供了各个站点的二层连接,VPN提供 了基于MAC地址转发的二层交换。三层VPN提供了各个站点的三层连接,VPN提供了基于 IP地址转发的三层交换。
[0004] 传统网络通过二、三层VPN实现网络隔离及互访控制,OpenFlow协议未定义对应 实现机制。
[0005] 在交换机上为支持VPN转发隔离,同时实现VPN内转发表项共用。通常做法是引 入VPN实例概念,报文进入交换机,基于入端口或报文VLAN设定VPN实例,然后在转发表项 查找增加 VPN实例的匹配,以此实现各VPN转发隔离,及同VPN内转发表项共享。图1为现 有技术三层VPN典型组网示意图。如图1所示,交换机A、B、C属于VPN1,交换机D、E、F属 于VPN2, VPN1和VPN2内交换机下挂主机需通过VPN交换机三层互访,同时VPN1和VPN2转 发隔离。
[0006] 报文进入VPN交换机,VPN交换机按VLAN设置报文VPN索引。报文三层转发,基 于此VPN索引+目的IP (DIP)匹配交换机路由表项,以进行转发。VPN交换机上各VPN路由 相关独立,从而实现各VPN转发隔离。
[0007] 由于OpenFlow未定义VPN相关的实现,针对以上访问需求,若按照标准OpenFlow 协议实现,为保证访问隔离,流表中需要增加报文入VLAN的匹配,若A和B均需要访问C,此 时需要下发两份流表项,例如,流表项1为:匹配项:源VLAN10+DIP30. 0. 0. 1/8动作项:出 端口 +目的VLAN30 ;流表项2为:匹配项:源VLAN20+DIP30. 0. 0. 1/8动作项:出端口 +目的 VLAN30,这样就造成交换机上硬件资源的浪费。
【发明内容】
[0008] 本发明的目的在于提供一种OpenFlow协议支持VPN的方法及设备,能够实现同一 VPN内设备互访共用相同转发表项,减少硬件资源浪费。
[0009] 为实现上述发明目的,本发明提供了一种OpenFlow协议支持VPN的方法,应用于 OpenFlow网络的VPN交换设备中,同一 VPN内其他交换设备通过所述VPN交换设备实现互 访,且VPN之间转发隔离,该方法包括:
[0010] VPN交换设备上创建有VPN实例,将对应物理端口加入到该VPN实例中,每一个 VPN实例对应一个VPN逻辑端口;
[0011] 将携带有VPN逻辑端口信息的端口消息发送给控制设备,用于控制设备下发相应 VPN逻辑端口的流表匹配项,进行报文匹配。
[0012] 为实现上述发明目的,本发明还提供了一种VPN交换设备,应用于OpenFlow网络 中,所述VPN交换设备包括 :
[0013] VPN实例创建单元,用于创建VPN实例,将对应物理端口加入到该VPN实例中,每一 个VPN实例对应一个VPN逻辑端口;
[0014] 端口消息上报单元,用于将携带有VPN逻辑端口信息的端口消息发送给控制设 备,用于控制设备下发相应VPN逻辑端口的流表匹配项,进行报文匹配。
[0015] 为实现上述发明目的,本发明还提供了一种控制设备,应用于OpenFlow网络中, 所述控制设备包括:
[0016] 接收单元,用于接收VPN交换设备发送的携带有VPN逻辑端口信息的端口消息;
[0017] 下发单元,用于根据所述携带有VPN逻辑端口信息的端口消息,下发相应VPN逻辑 端口的流表匹配项给VPN交换设备,进行报文匹配。
[0018] 综上所述,本发明实施例对现有OpenFlow协议进行扩展,实现对二三层VPN的支 持。VPN交换设备上创建有VPN实例,将对应物理端口加入到VPN实例中,每一个VPN实例 对应一个VPN逻辑端口;将携带有VPN逻辑端口信息的端口消息发送给控制设备,用于控制 设备下发相应VPN逻辑端口的流表匹配项,进行报文匹配。这样,同一 VPN内多个源设备访 问相同的目的设备,其流表项相同,即转发时共用相同的流表项,与现有技术多个流表项相 t匕,减少了硬件资源浪费。
【专利附图】
【附图说明】
[0019] 图1为现有技术三层VPN典型组网示意图。
[0020] 图2为本发明实施例提供的OpenFlow协议支持VPN的方法的流程示意图。
[0021] 图3为本发明实施例提供的VPN交换设备的结构示意图。
[0022] 图4为本发明实施例提供的控制设备的结构示意图。
【具体实施方式】
[0023] 为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对 本发明方案作进一步地详细说明。
[0024] 如图2所示,本发明实施例提供的OpenFlow协议支持VPN的方法的流程示意图包 括以下步骤:
[0025] 步骤201,VPN交换设备上创建有VPN实例,将对应物理端口加入到该VPN实例中, 每一个VPN实例对应一个VPN逻辑端口;
[0026] 步骤202、将携带有VPN逻辑端口信息的端口消息发送给控制设备,用于控制设备 下发相应VPN逻辑端口的流表匹配项,进行报文匹配。
[0027] 其中,VPN交换设备指的是OpenFlow网络中,支持VPN的交换设备,VPN内交换机 下挂主机需要通过VPN交换设备三层或者二层互访,同时VPN之间转发隔离,如图1中VPN 交换设备所示。通过图2所示的方法,在OpenFlow协议中引入VPN逻辑口的概念,VPN交 换机支持VPN逻辑口,通过端口消息将VPN逻辑口上报给控制设备,一个VPN逻辑口与一个 VPN实例绑定,也就是说,同一 VPN实例内的入端口都属于同一 VPN逻辑口,这样,同一 VPN 实例内,目的地址相同的报文可以匹配同一 VPN逻辑口的流表项,达到减少硬件资源浪费 的目的。
[0028] 在步骤202中,所述VPN逻辑端口信息为二层VPN或者三层VPN实例的名称。本 发明端口消息,可以是标准的Port Status消息,通过OpenFlow通道发送给控制设备,其包 括以下内容:
[0029] struct ofp_port {
[0030] uint32_t port_no ;/* 端口号 */
[0031] uint8_t pad[4] ;/* 字节对齐 */
[0032] uint8_t hw_addr [0FP_ETH_ALEN] ;/* 端口 MAC 地址 */
[0033] uint8_t pad2 [2] ;/* 字节对齐 */
[0034] char name [0FP_MAX_P0RT_NAME_LEN] ;/* 二层 VPN 或者三层 VPN 实例的名称 */
[0035] uint32_t config ;/* 端 口配置 */
[0036] uint32_t state ;/* 端 口状态 */
[0037] 这里的端口指的是VPN逻辑端口,所以上报给控制设备的端口消息是VPN逻辑端 口的消息,区别于物理端口消息。如果在VPN交换设备上创建有两个VPN实例,则对应有两 个VPN逻辑端口,则上报两个上述端口消息。其中端口消息中二层VPN实例的名称可以为: 虚拟交换实例(VSI)-XXX ;三层VPN实例的名称可以为:VPN-XXX。
[0038] 为清楚说明本发明,下面列举具体场景进行说明。
[0039] 实施例一:
[0040] 仍然参考图1,只是没有示出控制VPN交换设备的控制设备,在OpenFlow网络中, VPN1和VPN2内交换机下挂主机需通过VPN交换机三层互访,同时VPN1和VPN2转发隔离。 本实施例中交换设备A和B均需要访问C,则,
[0041] VPN实例可由用户在VPN交换设备上手动创建或由控制设备通过NETC0NF、SNMP等 协议在VPN交换设备上创建。VPN交换设备响应VPN创建请求,在VPN交换设备上创建VPN 实例。
[0042] 本实施例创建两个VPN实例,分别为VPN1和VPN2。在VPN1和VPN2创建后,将VPN 交换设备上VLAN10、VLAN20和VLAN30的端口加入到VPN1中,然后创建与VPN1对应的VPN 逻辑端口 1 ;将VPN交换设备上VLAN1UVLAN21和VLAN31的端口加入到VPN2中,然后创建 与VPN2对应的VPN逻辑端口 2。
[0043] 如果VPN交换设备已连接到控制设备,通过OpenFlow的2个Port Status消息, 分别将VPN逻辑端口 1和2上报给控制设备。VPN逻辑口 1和2都是基于OpenFlow端口消 息格式进行描述,为保证控制器能够识别此端口,需在端口消息正确描述端口 VPN信息。
[0044] 控制设备支持VPN逻辑端口 Port Status消息解析,识别逻辑口对应的VPN,分别 为 VPN1 和 VPN2 ;
[0045] 因此,控制设备下发的流表项的匹配项为:VPN+DIP动作项:出端口 +目的VLAN
[0046] 本实施例中,交换设备A和B均需要访问C,A、B和C都在VPN1中,所以流表项的 匹配项为:VPN1+DIP30. 0. 0. 1/8动作项:出端口 +目的VLAN30。
[0047] DIP为30. 0. 0. 1/8的报文从A进入VPN交换设备后,根据报文所带VLAN10映射到 所属VPN1,使得报文带有VPN1描述信息,然后匹配上述流表项,在出端口转发给设备C ;
[0048] 同理,DIP为30. 0. 0. 1/8的报文从B进入VPN交换设备后,根据报文所带VLAN20 映射到所属VPN1,使得报文带有VPN1描述信息,然后也匹配上述流表项,在出端口转发给 设备C。
[0049] 从上面可以看出,在同一 VPN1中访问同一设备,在VPN交换设备上的流表项设置 是相同的,因此达到了减少流表项设置的目的。
[0050] 实施例二:
[0051] 仍然参考图1,只是没有示出控制VPN交换设备的控制设备,在OpenFlow网络中, VSI1和VSI2内交换机下挂主机需通过VPN交换机二层互访,同时VSI1和VSI2转发隔离。 本实施例中交换设备A和B均需要访问C,则,
[0052] 性能交换实例(Virtual Swith Instance, VSI)是区别于三层VPN的二层VPN实 例,可由用户在VPN交换设备上手动创建或由控制设备通过NETC0NF、SNMP等协议在VPN交 换设备上创建。VPN交换设备响应VPN创建请求,在VPN交换设备上创建VSI。
[0053] 本实施例创建两个VSI,分别为VSI1和VSI2。在VSI1和VSI2创建后,将VPN交 换设备上VLAN10、VLAN20和VLAN30的端口加入到VPN1中,然后创建与VSI 1对应的VPN逻 辑端口 1 ;将VPN交换设备上VLAN1UVLAN21和VLAN31的端口加入到VSI2中,然后创建与 VSI2对应的VPN逻辑端口 2。
[0054] 如果VPN交换设备已连接到控制设备,通过OpenFlow的2个Port Status消息, 分别将VPN逻辑端口 1和2上报给控制设备。VPN逻辑口 1和2都是基于OpenFlow端口消 息格式进行描述,为保证控制器能够识别此端口,需在端口消息正确描述端口 VPN信息。
[0055] 控制设备支持VPN逻辑端口 Port Status消息解析,识别逻辑口对应的VPN,分别 为 VSI1 和 VSI2 ;
[0056] 因此,控制设备下发的流表项的匹配项为:VSI+DMAC动作项:出端口 +目的VLAN
[0057] 本实施例中,交换设备A和B均需要访问C,A、B和C都在VSI 1中,所以流表项的 匹配项为:VSI1+DMAC动作项:出端口 +目的VLAN30。
[0058] 具有DMAC1的报文从A进入VPN交换设备后,根据报文所带VLAN10映射到所属 VSI1,使得报文带有VSI1描述信息,然后匹配上述流表项,在出端口转发给设备C ;
[0059] 同理,具有DMAC1的报文从B进入VPN交换设备后,根据报文所带VLAN20映射到 所属VSI1,使得报文带有VSI1描述信息,然后也匹配上述流表项,在出端口转发给设备C。
[0060] 从上面可以看出,在同一 VSI1中访问同一设备,在VPN交换设备上的流表项设置 是相同的,因此达到了减少流表项设置的目的。
[0061] 另外,与在VPN交换设备上创建VPN实例相对应,也可以在VPN交换设备上删除 VPN实例,即删除对应的逻辑端口。如果VPN交换设备已连接控制设备,则可以通知控制设 备删除对应逻辑端口。
[0062] 综上所述,现有技术OpenFlow不支持VPN时,为保证节点访问安全隔离,流表下发 需要匹配报文入VLAN及入端口信息,造成很多流表项重复下发,浪费交换机上硬件资源。 OpenFlow引入VPN后,同VPN内设备在交换机上基于VPN逻辑口控制其间的互访,共用相同 转发表项,减少硬件资源消耗。
[0063] 基于同样的发明构思,本发明还提出一种VPN交换设备。如图3所示,本发明实施 例提供的VPN交换设备包括 :
[0064] VPN实例创建单元301,用于创建VPN实例,将对应物理端口加入到该VPN实例中, 每一个VPN实例对应一个VPN逻辑端口;
[0065] 端口消息上报单元302,用于将携带有VPN逻辑端口信息的端口消息发送给控制 设备,用于控制设备下发相应VPN逻辑端口的流表匹配项,进行报文匹配。
[0066] 优选地,该设备进一步包括:
[0067] 报文转发单元303,用于接收到报文后,根据接收报文的物理端口确定所对应的 VPN逻辑端口,根据所确定的VPN逻辑端口和目的地址匹配流表项,进行报文转发。
[0068] 本发明还提出一种控制设备。如图4所示,本发明实施例提供的控制设备包括:
[0069] 接收单元401,用于接收VPN交换设备发送的携带有VPN逻辑端口信息的端口消 息;
[0070] 下发单元402,用于根据所述携带有VPN逻辑端口信息的端口消息,下发相应VPN 逻辑端口的流表匹配项给VPN交换设备,进行报文匹配。
[0071] 以上,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发 明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围 之内。
【权利要求】
1. 一种OpenFlow协议支持VPN的方法,应用于OpenFlow网络的虚拟私有网VPN交换 设备中,同一 VPN内其他交换设备通过所述VPN交换设备实现互访,且VPN之间转发隔离, 该方法包括: VPN交换设备上创建有VPN实例,将对应物理端口加入到该VPN实例中,每一个VPN实 例对应一个VPN逻辑端口; 将携带有VPN逻辑端口信息的端口消息发送给控制设备,用于控制设备下发相应VPN 逻辑端口的流表匹配项,进行报文匹配。
2. 如权利要求1所述的方法,其特征在于,所述VPN逻辑端口信息为二层VPN或者三层 VPN实例的名称。
3. 如权利要求2所述的方法,其特征在于,所述VPN为三层VPN时,流表匹配项还包括 目的IP ;所述VPN为二层VPN时,流表匹配项还包括目的MAC。
4. 如权利要求3所述的方法,其特征在于,该方法进一步包括:VPN交换设备接收到报 文后,根据接收报文的物理端口确定所对应的VPN逻辑端口,根据所确定的VPN逻辑端口和 目的地址匹配流表项,进行报文转发。
5. -种VPN交换设备,应用于OpenFlow网络中,其特征在于,所述VPN交换设备包括: VPN实例创建单元,用于创建VPN实例,将对应物理端口加入到该VPN实例中,每一个 VPN实例对应一个VPN逻辑端口; 端口消息上报单元,用于将携带有VPN逻辑端口信息的端口消息发送给控制设备,用 于控制设备下发相应VPN逻辑端口的流表匹配项,进行报文匹配。
6. 如权利要求5所述的交换设备,其特征在于,该设备进一步包括: 报文转发单元,用于接收到报文后,根据接收报文的物理端口确定所对应的VPN逻辑 端口,根据所确定的VPN逻辑端口和目的地址匹配流表项,进行报文转发。
7. -种控制设备,应用于OpenFlow网络中,其特征在于,所述控制设备包括: 接收单元,用于接收VPN交换设备发送的携带有VPN逻辑端口信息的端口消息; 下发单元,用于根据所述携带有VPN逻辑端口信息的端口消息,下发相应VPN逻辑端口 的流表匹配项给VPN交换设备,进行报文匹配。
【文档编号】H04L29/06GK104092684SQ201410319647
【公开日】2014年10月8日 申请日期:2014年7月7日 优先权日:2014年7月7日
【发明者】赵海峰, 游君平 申请人:杭州华三通信技术有限公司