• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 关于我们

15-OpenFlow配置指导

目录

01-OpenFlow配置

本章节下载 01-OpenFlow配置  (297.49 KB)

01-OpenFlow配置


1 OpenFlow

1.1  OpenFlow概述

1.1.1  OpenFlow背景

随着虚拟化技术的大规模应用,传统的网络架构和网络设备的不足越来越多的被暴露出来,如控制平面与转发平面相集成,扩展性低,不易定制,技术更新周期长,过于依赖网络设备商。而虚拟化技术要求设备操作简单灵活、扩展性能高、不需要用专门的芯片来进行转发控制。传统的网络设备已经无法满足虚拟化技术以及数据中心网络的需求。而SDN(Software Defined Network,软件定义网络)技术可以分离控制平面和网络转发平面,解决数据中心网络中所面临的问题。

1.1.2  OpenFlow介绍

OpenFlow是SDN(Software Defined Network,软件定义网络)架构中定义的一个控制器与转发器之间的通信接口标准。OpenFlow允许控制器直接访问和操作网络设备的转发平面,这些网络设备可能是物理上的,也可能是虚拟的路由器或者交换机。

OpenFlow的思想:分离控制平面和数据平面,二者之间使用标准的协议通信;数据平面采用基于流的方式进行转发。

OpenFlow网络由OpenFlow网络设备(Switch)和控制器(Controller)通过安全通道(OpenFlow channel)组成,如图1-1所示。OpenFlow设备与Controller通过TCP建立通道,进行OpenFlow消息交互,实现表项下发、查询以及状态上报等功能。

图1-1 OpenFlow网络组成

 

1.1.3  基本概念

1. Switch类型

OpenFlow Switch有下面两种:

·     OpenFlow-Only Switch:仅支持OpenFlow转发。

·     OpenFlow-Hybrid Switch:既支持OpenFlow转发,也支持正常转发。本系列交换机即为OpenFlow-Hybrid Switch。

2. OpenFlow接口

OpenFlow接口有下面三类:

·     物理接口:例如交换机的以太网接口等,可以作为入接口和出接口。

·     逻辑接口:例如聚合接口等,可以作为入接口和出接口。

说明

设备不支持匹配Tunnel接口和LoopBack接口。

 

·     保留接口:由转发动作定义的接口,实现OpenFlow转发功能。除Any接口外,其他接口仅可以作为出接口,仅Controller和Local可以作为入接口,具体类型请参见表1-1

表1-1 保留接口说明

 

1.1.4  OpenFlow实例

OpenFlow支持多实例。每个OpenFlow实例可以单独连接控制器,相当于一台独立的OpenFlow设备,OpenFlow实例根据控制器下发的流表项指导流量的转发,下文如果没有特殊说明,交换机为一个OpenFlow实例。

1. 实例划分

OpenFlow实例通过VLAN划分作用范围,在实例的作用范围内,流量转发遵循流表中定义的规则。

2. 实例激活

OpenFlow实例配置完成后,需要进行激活才能生效。

OpenFlow需要将设备的支持能力、当前的接口信息等设备信息上报给控制器后,控制器才能够下发流表项指导转发。

在配置更改的情况下,需要重新激活实例,使配置生效。在激活配置时,OpenFlow实例会与所有控制器断开连接,然后重新进行连接。

3. 实例所属接口

OpenFlow协议规定OpenFlow实例需要将接口信息上报给控制器,这些接口包括物理接口、逻辑接口以及保留接口中的Local。

对于通过VLAN划分作用范围的OpenFlow实例,当且仅当接口所属VLAN完全包含了OpenFlow对应的VLAN后,该接口才是该OpenFlow实例的接口,可以被上报到控制器。如果配置了loosen模式,只要接口所在VLAN与实例配置VLAN存在交集,接口就属于OpenFlow实例。

1.1.5  OpenFlow流表

1. 流表项组成

OpenFlow通过流表(Flow Table)来匹配和处理报文,在同一个流表中按规则的优先级进行先后匹配。一台OpenFlow交换机可以包含一个或者多个流表。

流表分为两种类型:

·     MAC-IP流表:通过MAC地址表和FIB表实现。只能匹配报文的目的MAC地址、VLAN以及目的IP地址,动作也仅支持修改报文的目的MAC地址、源MAC地址、VLAN以及指定出接口。

·     Extensibility流表:即扩展流表,可以匹配报文的源MAC地址、目的MAC地址、源IP地址、目的IP地址、报文优先级、TCP源端口、TCP目的端口等。

图1-2 流表项结构

 

流表项结构如图1-2所示:

·     Match Fields:报文匹配规则。可以匹配入接口、报文头等字段。

·     Priority:优先级。定义流表项之间的匹配顺序,优先级高的先匹配。

·     Counters:统计计数。统计有多少个报文和字节匹配到该流表项。

·     Instructions:动作指令集。定义匹配到该流表项的报文需要进行的处理。流表项动作指令集是对动作进行操作,流表项的动作有两种执行类型:

¡     动作集(Action Set):一系列动作的组合,设备不会立刻修改报文内容,直到报文不再需要进入下一级流表,动作集里每种动作仅有一个,并且按照图1-2从上到下的顺序执行。

¡     动作序列(Action List):需要立即执行的一系列动作,其动作内容与动作集相同,此时立即修改报文的内容,并且执行顺序按照下发的顺序执行。

表1-2 动作指令集定义

 

·     Timeouts:超时时间。包括了Idle time和Hard time。

¡     Idle time:在Idle time时间内,如果没有报文匹配到该流表项,则此流表项被删除。

¡     Hard time:在hard time时间超时后,无论是否有报文匹配到该流表项,此流表项都会被删除

·     Cookie:控制器下发的流表项的标识。

(2)     流表处理流程

图1-3所示,报文进入设备后,设备先解析报文,然后从第一个流表开始,按照流表编号从小到大依次匹配,当数据包成功匹配一条规则后,将首先更新该规则对应的统计数据(如成功匹配数据包总数),然后根据规则中的指令进行相应操作(例如转下一个流表继续处理、修改或者立即执行该数据包对应的动作等)。当数据包处于最后一个流表时,其对应的动作将被执行(例如转发至某一端口、修改数据包某一字段或丢弃数据包等)。

图1-3 OpenFlow转发示意图

 

2. Table Miss表项

每个流表都包含一个Table Miss流表项,该表项用于定义在流表中没有匹配的报文的处理方式,该表项匹配任何报文,优先级为0,动作指令与正常表项相同。

3. Group Table

Group Table由Group表项组成,Group表项被流表项所引用,提供额外的报文转发功能。

图1-4 Group表项结构

 

 

·     Group Identifier:Group ID,用于识别Group,32bits。

·     Group Type:Group类型。All表示执行所有动作桶,用于组播或者广播。

·     Counters:当报文被Group处理时,更新计数器。

·     Action Buckets:一个由动作桶组成的有序列表。每个动作桶由许多动作组成。

4. Meter Table

Meter Table由Meter表项组成,Meter表项被流表项所引用,为所有引用Meter表项的流表项提供报文限速的功能。

图1-5 Meter表项结构

 

·     Meter Identifier:Meter ID,用于识别Meter,32bits。

·     Meter Bands:一个Meter表项可以包含一个或者多个Meter Bands,每个Meter Band定义了速率以及动作。当报文的速率超过了某些Meter Band,根据这些Meter Band中速率最大的那个定义的动作进行处理。

·     Counters:当报文被Meter处理时,更新计数器。

图1-6 Meter Bands结构

 

·     Band Type:Band类型,定义报文如何处理。为可选,可使用丢弃(drop),即报文高于该速率会被丢弃;以及重新标记DSCP(dscp remark)。

·     Rate:Meter用于选择Band的最低速率,即报文速率高于该速率并最接近该速率,该Band将被应用。

·     Counters:当Band处理报文时,更新计数器。

·     Type Specific arguments:某些Band含有的特定参数。

1.1.6  协议规范

OpenFlow Switch Specification Version1.3.1

1.2  OpenFlow配置任务简介

表1-3 OpenFlow配置任务简介

 

1.3  配置OpenFlow实例

说明

当LLDP与OpenFlow配合使用时,需要在Openflow网络设备上全局使能LLDP功能,但为了此时LLDP不影响OpenFlow控制器发现拓扑,建议在OpenFlow实例内的接口上关闭LLDP功能。有关LLDP的详细介绍,请参见“二层技术-以太网交换配置指导”中的“LLDP”。

 

1.3.1  创建OpenFlow实例

表1-4 创建OpenFlow实例

 

1.3.2  配置OpenFlow实例的基本能力

下面配置用于定义OpenFlow实例的基本能力,设备与控制器建立连接后,会向控制器上报这些基本能力,控制器根据这些能力下发表项。

1. 配置OpenFlow实例对应的VLAN

配置OpenFlow实例对应的VLAN后,对应VLAN内的流量根据OpenFlow流表项转发,其它VLAN内的流量进行正常转发。

注意

·     不能将同一个VLAN映射到多个实例中,否则,流量无法正确处理。

·     如果OpenFlow实例对应的VLAN不存在,在激活实例后,不存在的VLAN会自动创建。在实例激活后,请不要删除OpenFlow实例对应的VLAN。

·     配置VLAN对应的VLAN接口下不允许配置BFD MAD检测功能,该功能的相关内容请参见“IRF配置指导”中的“IRF”。

·     TRILL端口所属VLAN的流量都由TRILL协议控制转发,因此OpenFlow实例对应的VLAN不能配置为TRILL端口所属VLAN,否则可能出现流量不通等现象。

 

表1-5 配置OpenFlow实例对应的VLAN

 

2. 配置流表ID

表1-6 配置流表ID

操作

命令

说明

进入系统视图

system-view

-

进入OpenFlow实例视图

openflow instance instance-id

-

配置OpenFlow实例下的流表类型和流表ID

flow-table { extensibility table-id | mac-ip table-id }*

缺省情况下,Extensibility流表ID为0,没有配置MAC-IP流表ID

一个OpenFlow实例只支持配置一个MAC-IP表和一个Extensibility表,如果多次执行该命令,后面的配置将会覆盖前面的配置

MAC-IP表的ID值必须小于Extensibility表的ID值

 

3. 配置OpenFlow实例与控制器的连接模式

OpenFlow实例与控制器连接时,支持以下两种模式:

·     Single模式:同一时刻,OpenFlow实例仅与一个控制器建立连接,配置的多个控制器之间互为备份,当且仅当当前的连接断开后,OpenFlow实例连接下一个控制器,直到连接成功。

·     Multiple模式:同一时刻,OpenFlow实例可以与多个控制器建立连接,在与某个控制器连接失败或者断开连接后,在重连时间间隔后重新与之进行连接,直到连接成功。

说明

Single模式下,设备根据控制器ID依次连接控制器,只有在前一个控制器连接不上时才会连接下一个控制器。如果配置了多个路由不可达的控制器,设备遍历到路由可达的控制器并建立连接所用时间可能较长。

 

表1-7 配置OpenFlow实例与控制器的连接模式

 

4. 配置Extensibility流表项的上限

在OpenFlow实例中允许定义Extensibility流表支持的表项最大值,当控制器下发的流表表项个数超过最大值的时候,向控制器返回失败。

表1-8 配置Extensibility流表项的上限

 

5. 配置带内管理VLAN

带内管理VLAN是OpenFlow实例对应的VLAN中的一个或多个VLAN,专门用于在OpenFlow实例内建立该实例与控制器的连接。

配置带内管理VLAN后,带内管理VLAN中的数据报文不再进行OpenFlow转发,并且仅在带内管理VLAN中的端口不再属于OpenFlow接口。因此,进行该功能的配置前,请用户做好网络规划。

带内管理VLAN必须是OpenFlow实例对应的VLAN的子集。

 

表1-9 配置带内管理VLAN

 

6. 配置OpenFlow实例对应的VLAN禁止MAC地址学习

配置该功能后,OpenFlow实例对应的VLAN的MAC地址学习功能被禁止。

带内管理VLAN不受该功能限制。

 

表1-10 配置OpenFlow实例对应的VLAN禁止MAC地址学习

操作

命令

说明

进入系统视图

system-view

-

进入OpenFlow实例视图

openflow instance instance-id

-

配置OpenFlow实例对应的VLAN禁止MAC地址学习

mac-learning forbidden

缺省情况下,OpenFlow实例对应的VLAN允许MAC地址学习

 

7. 配置禁止OpenFlow实例上送Controller的端口类型

表1-11 配置禁止OpenFlow实例上送Controller的端口类型

 

8. 配置Table Miss表项的缺省动作

使用active instance命令激活OpenFlow实例后,且Controller没有下发动作前,Table Miss表项的缺省动作为丢弃报文,配置该功能后,Table Miss表项的缺省动作修改为允许报文进行正常转发。

表1-12 配置Table Miss表项的缺省动作

 

9. 配置OpenFlow实例的Datapath ID

OpenFlow网络中,每个OpenFlow实例都使用唯一的Datapath ID来标识本实例。缺省情况下,OpenFlow实例的Datapath ID由实例ID和设备桥MAC组成,用户可以配置Datapath ID。

表1-13 配置OpenFlow实例的Datapath ID

操作

命令

说明

进入系统视图

system-view

-

进入OpenFlow实例视图

openflow instance instance-id

-

配置OpenFlow实例的Datapath ID

datapath-id datapath-id

缺省情况下,OpenFlow实例的Datapath ID由实例ID和设备桥MAC组成,前16位为实例ID,后48位为设备桥MAC

 

1.3.3  激活OpenFlow实例

此功能用于激活实例。如果实例已经与控制器建立了连接,修改OpenFlow实例的基本能力配置后,需要重新激活该OpenFlow实例,此时,OpenFlow实例会断开与所有控制器的连接,清除已经下发的流表,根据当前的配置更新OpenFlow实例的能力集,重新与控制器建立连接。

注意

重新激活OpenFlow实例会导致流量中断,请谨慎使用。

 

表1-14 激活OpenFlow实例

 

1.4  配置连接控制器

1.4.1  配置主连接

一个OpenFlow实例可以连接多个控制器,但仅允许与一个控制器建立主连接,用于控制消息的处理(下发流表项、获取数据、信息上报等),需要使用TCP保持可靠的连接。

表1-15 配置主连接

 

1.4.2  配置连接中断模式

一旦OpenFlow实例与所有控制器断开连接,则OpenFlow实例必须进入连接中断模式,模式分为两种:

·     Secure模式:连接断开后,交换机根据流表项转发。不主动删除控制器下发的表项,而是等待表项超时后进行删除,一旦连接建立成功,未超时的表项依然存在。

·     Standalone模式:连接断开后,交换机正常转发。

如果交换机与控制器重新连接成功,则继续作为OpenFlow设备根据流表项进行转发。

表1-16 配置连接中断模式

 

1.5  配置OpenFlow定时器

控制器和交换机都会发送Echo request/reply报文,用于验证连接是否正常。

连接检测定时器用于定义发送Echo request报文时间间隔,当超过三次Echo request报文发送并且没有收到Echo reply报文,则OpenFlow实例与控制器的连接断开。

OpenFlow实例与控制器重连的时间间隔定义OpenFlow实例与控制器断开连接后再次开始重新连接的时间间隔。

表1-17 配置OpenFlow定时器

操作

命令

说明

进入系统视图

system-view

-

进入OpenFlow实例视图

openflow instance instance-id

-

配置发送Echo request报文的时间间隔

controller echo-request interval  interval-value

缺省情况下,发送Echo request报文的时间间隔为5秒

设备CPU负担较大的情况下,请配置较大的发送Echo request报文的时间间隔

配置OpenFlow实例与控制器重连的时间间隔

controller connect interval interval-value

缺省情况下,OpenFlow实例与控制器重连的时间间隔为60秒

 

1.6  配置支持动态MAC地址

此功能仅在支持MAC-IP流表情况下,决定是否支持控制器在查询或者删除流表项时包含动态MAC地址。

表1-18 配置支持动态MAC地址

 

1.7  OpenFlow显示和维护

在完成上述配置后,在任意视图下执行display命令可以显示配置后OpenFlow的运行情况,以及控制器下发的流表项。

表1-19 OpenFlow显示和维护

操作

命令

显示OpenFlow实例的详细信息

display openflow instance [ instance-id ]

显示OpenFlow实例的流表信息

display openflow instance instance-id flow-table [ table-id ]

显示OpenFlow实例的控制器信息

display openflow instance instance-id controller

显示OpenFlow实例的Group表信息

display openflow instance instance-id group [ group-id ]

显示OpenFlow实例的Meter表信息

display openflow instance instance-id meter [ meter-id ]

显示OpenFlow实例的概要信息

display openflow summary

清除控制器发送和接收的报文的统计计数

reset openflow instance instance-id controller [ controller-id ] statistics

 

1.8  OpenFlow典型配置举例

1. 组网需求

·     创建OpenFlow实例1,把VLAN 4092和4094映射到OpenFlow实例中1,并激活实例。

·     使用VLAN 1作为OpenFlow实例1与控制器通信的VLAN。

·     配置OpenFlow实例1连接的控制器,用来控制器能够控制OpenFlow实例1上的流量转发。

2. 组网图

图1-7 OpenFlow配置组网图

 

3. 配置步骤

(1)     配置VLAN

# 创建VLAN 4092和4094。

<Switch> system-view

[Switch] vlan 4092

[Switch-vlan4092] port ten-gigabitethernet 1/0/1

[Switch-vlan4092] quit

[Switch] vlan 4094

[Switch-vlan4094] port ten-gigabitethernet 1/0/2

[Switch-vlan4094] quit

(2)     创建实例并映射VLAN

[Switch] openflow instance 1

[Switch-of-inst-1] classification vlan 4092 mask 4093 loosen

(3)     配置控制器1的IP地址为192.168.49.49,并激活实例

[Switch-of-inst-1] controller 1 address ip 192.168.49.49

[Switch-of-inst-1] active instance

(4)     验证配置

# 显示实例详细信息。

[Switch-of-inst-1] display openflow instance 1

Instance 1 information:                                                

                                                                               

Configuration information:                                                     

 Description   : --                                                            

 Active status : Active                                                        

 Inactive configuration:                                                       

  None                                                                          

 Active configuration:                                                         

  Classification VLAN, loosen mode, total VLANs(2)                                          

   4092, 4094                                                                  

  In-band management VLAN, total VLANs(0)                                      

   Empty VLAN                                                                  

  Connect mode: Multiple                                                       

  Mac address learning: Enabled                                                 

  Flow table:                                                                  

   Table ID(type): 0(Extensibility), count: 0                                  

  Flow-entry max-limit: 65535                                                  

  Datapath ID: 0x00010cda415e232e                                              

  Default table-miss: Drop                                                      

  Forbidden port: None

Port information:                                                              

 Ten-GigabitEthernet1/0/1                                                      

 Ten-GigabitEthernet1/0/2

Active channel information:                                                    

 Controller 1 IP address: 192.168.49.49 port: 6633

 

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们