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

23-OpenFlow配置指导

目录

01-OpenFlow配置

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

01-OpenFlow配置

  录

1 OpenFlow

1.1 OpenFlow简介

1.1.1 OpenFlow网络构成

1.1.2 OpenFlow Switch类型

1.1.3 OpenFlow接口

1.1.4 OpenFlow实例

1.1.5 OpenFlow流表

1.1.6 Group Table

1.1.7 Meter Table

1.1.8 OpenFlow channel

1.1.9 控制器

1.1.10 协议规范

1.2 OpenFlow配置限制和指导

1.3 OpenFlow配置任务简介

1.4 配置OpenFlow实例

1.4.1 创建OpenFlow实例

1.4.2 配置OpenFlow实例的类型

1.4.3 配置带内管理VLAN

1.4.4 配置流表和流表项

1.4.5 配置控制器连接模式

1.4.6 配置禁止上送控制器的端口类型

1.4.7 开启OpenFlow数据转发平面功能

1.4.8 激活OpenFlow实例

1.4.9 配置OpenFlow实例的属性

1.5 配置连接控制器

1.6 配置不受OpenFlow控制的VLAN

1.7 配置OpenFlow实例作为SSL服务器监听控制器

1.8 刷新MAC-IP流表的三层表项

1.9 使用OpenFlow关闭接口

1.10 开启OpenFlow告警功能

1.11 OpenFlow显示和维护

1.11.1 显示OpenFlow配置及运行状况

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

1.12 OpenFlow典型配置举例

1.12.1 全局类型OpenFlow典型配置举例

1.13 附录 A 应用限制

1.13.1 Flow Entry的限制

1.13.2 Action List和Action Set整合的限制

1.13.3 Packet Out的处理限制

1.13.4 Packet in的处理限制

1.13.5 匹配LLDP报文的限制

1.13.6 Flow Mod的限制

1.14 附录 B MAC-IP流表

1.14.1 MAC-IP流表支持能力

1.14.2 MAC-IP流表的限制

1.14.3 MAC-IP流表的Table Miss

1.14.4 Dynamic aware

1.14.5 MAC-IP流表与Extensibility流表的配合

1.15 附录 C Ingress-vlan流表和Egress-vlan流表

1.15.1 Ingress-vlan流表支持能力

1.15.2 Egress-vlan流表支持能力

 


1 OpenFlow

1.1  OpenFlow简介

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

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

1.1.1  OpenFlow网络构成

OpenFlow网络由OpenFlow设备(Switch)和控制器(Controller)通过安全通道(OpenFlow channel)组成,如图1-1所示。Switch与Controller通过TLS或者TCP建立安全通道,进行OpenFlow消息交互,实现表项下发、查询以及状态上报等功能。下文如果没有特殊说明,交换机指的就是OpenFlow设备。

图1-1 OpenFlow网络组成

 

1.1.2  OpenFlow Switch类型

OpenFlow Switch有下面两种:

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

·     OpenFlow-Hybrid Switch:既支持OpenFlow转发,也支持正常转发。

1.1.3  OpenFlow接口

OpenFlow接口有如下类型:

·     物理接口:比如以太网接口。可以作为入接口和出接口。

·     逻辑接口:比如聚合接口、Tunnel接口等。可以作为入接口和出接口。

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

表1-1 保留接口类型

类型

说明

ALL

报文从所有接口发送

Controller

报文上送控制器

Table

报文重新进入流表进行匹配

In Port

报文从入接口转发

Any

接口通配描述,不能作为入接口以及出接口

Local

报文上送本地CPU

Normal

报文正常转发

Flood

报文广播发送

 

1.1.4  OpenFlow实例

OpenFlow支持多实例。每个OpenFlow实例可以单独连接控制器,相当于一台独立的交换机,根据控制器下发的流表项指导流量转发。

下文如果没有特殊说明,交换机指的就是一个OpenFlow实例。

1. 实例划分

OpenFlow实例有以下类型:

·     全局类型:对设备上所有流量都根据OpenFlow流表项转发。将OpenFlow实例配置为该类型后,设备所有业务接口都属于该OpenFlow实例。

·     VLAN类型:配置VLAN内的流量根据OpenFlow流表项转发,其他VLAN内的流量进行正常转发。配置VLAN类型的OpenFlow实例时,需要同时指定OpenFlow实例对应的VLAN,VLAN内所有接口都属于该OpenFlow实例。

2. 实例激活

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

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

3. 实例所属接口

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

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

1.1.5  OpenFlow流表

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

1. 流表类型

流表类型如下:

·     MAC-IP流表:通过MAC地址表和FIB表实现。只能匹配目的MAC地址、VLAN以及目的IP地址,动作也仅支持修改目的MAC地址、源MAC地址、VLAN、TUNNEL ID以及指定出接口。具体请参见1.14  附录 B MAC-IP流表

·     Extensibility流表:扩展流表,使用ACL实现。

·     Ingress-vlan流表:表示入方向添加VLAN Tag流表。

·     Egress-vlan流表:表示出方向剥离VLAN Tag流表。

2. 流表项组成

图1-2 流表项结构

 

流表项如图1-2所示:

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

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

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

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

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

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

表1-2 动作指令集定义

Instruction

处理

Meter

对匹配到流表项的报文进行限速

Apply-Actions

立即执行动作序列中的动作

Clear-Actions

清除动作集中的所有动作

Write-Actions

更改动作集中的所有动作

Write-Metadata

更改流表间数据,在支持多级流表时使用

Goto-Table

进入下一级流表

 

具体动作类型如表1-3所示。

表1-3 动作类型(1.3.1版本)

动作名称

可选/必选

描述

Output

必选

转发报文到特定的OpenFlow端口,例如物理端口、逻辑端口以及OpenFlow保留端口

Drop

必选

没有直接的动作来代表Drop,当动作集中不含有Output指令时,报文被丢弃。通常空指令集、空动作集或执行清空动作集后,报文被丢弃

Group

必选

将报文转交给Group处理,该动作的含义由Group的类型定义

Set-Queue

可选

为报文指定队列ID。当报文被转发到特定端口时,队列ID通常被用于基本QoS

Push-Tag

Pop-Tag

可选

适用于VLAN头、MPLS头、PBB头(802.1AH)

Set-Field

可选

识别报文字段的类型,并且可以修改该字段的值。通常只适用于最外层的字段(例如当内外层均有VLAN tag时,该动作只修改最外层的VLAN Tag)

Change-TTL

可选

改变报文中IPv4的TTL、IPv6的Hop Limit、或MPLS的TTL。只适用于最外层的字段

该动作可以设置TTL(TTL必须已经存在)、减少TTL、TTL值拷贝(inwards/outwards)

 

·     Timeouts:超时时间。包括了idle time和hard time。

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

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

·     Cookie:控制器选用的自定义数据,不用于处理报文。可能被控制器用于匹配流表项。

·     Flags:改变流表项管理方式的标识,例如OFPFF_SEND_FLOW_REM标识用于触发交换机向控制器发送该流表项的Flow-Removed消息。

3. 流表处理流程

图1-3所示,当报文进入交换机后,必须从流表ID最小的流表开始依次匹配;流表可以按次序从小到大越级跳转,但不能从某一流表向前跳转至流表ID更小的流表。一旦在某个流表匹配到后,会更新此报文的动作集(允许被下一级流表覆盖),到了最后一个流表后,所有的动作会被执行,此时报文的内容会被修改,指定出接口进行转发。如果在某个流表处理时,处理指令包含Action List,则报文的一份拷贝立即执行Action List而不需要在最后一个流表处理结束后再执行。

图1-3 OpenFlow转发示意图

 

4. Table Miss表项

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

1.1.6  Group Table

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

图1-4 Group表项结构

 

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

·     Group Type:Group类型。

¡     All:执行所有动作桶,用于组播或者广播。

¡     Select:自动选择一个动作桶执行。

¡     Indirect:始终执行固定的动作桶。

¡     Fast failover:始终执行第一个活跃的动作桶。

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

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

1.1.7  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.8  OpenFlow channel

交换机与控制器通过TLS或者TCP建立Channel,进行OpenFlow消息交互,实现表项下发、查询以及状态上报等功能。

OpenFlow协议中定义了三种消息类型:Controller to Switch消息、异步消息和同步消息,每种报文类型都有很多子类型。

1. Controller to Switch消息

Controller to Switch消息是指由控制器产生并发送到交换机,用来查询交换机的消息,可以不需要交换机响应。这些消息主要由控制器用来对交换机进行状态查询和修改配置等操作。

表1-4 Controller to Switch消息

子类型

描述

Features

用于控制器发送请求来了解交换机的能力,交换机必须回应该报文

Configuration

用于控制器设置,查询交换机的配置,交换机只有在控制器查询时回应

Modify-State

用于管理交换机的状态,如流表项和端口状态。该命令主要用于增加、删除、修改、交换机内的流表表项,组表表项以及交换机端口的属性

Multipart

用于控制器收集交换机各方面的信息,例如当前配置,统计信息等

Packet-Out

用于通过交换机特定端口发送报文,这些报文可以通过Packet-In消息触发,也可以通过控制器直接发送。通常Packet-Out消息包含整个之前接收到的Packet-In消息所携带的报文或者buffer ID(用于指示存储在交换机内的特定报文)。这个消息需要包含一个动作列表,当交换机收到该动作列表后会对Packet-Out消息所携带的报文执行该动作列表。如果动作列表为空,Packet-Out消息所携带的报文将被交换机丢弃

Barrier

用于确认之前下发动作是否成功。控制器发送Barrier请求消息,当交换机确认之前下发的流表等操作都已经成功时会回复Barrier应答消息

Role-Request

用于设定或查询OpenFlow channel的角色。通常用于交换机和多个控制器相连的情况

Asynchronous-Configuration

控制器使用该报文设定异步消息过滤器来接收其只希望接收到的异步消息报文,或者向交换机查询该过滤器。通常用于交换机和多个控制器相连的情况

 

2. 异步(Asynchronous)消息

异步(Asynchronous)消息是由交换机发送给控制器,用来通知交换机上发生的某些异步事件的消息。例如,当某一条规则因为超时而被删除时,交换机将自动发送一条Flow-Removed消息通知控制器,以方便控制器作出相应的操作,如重新设置相关规则等。

表1-5 异步消息

子类型

描述

Packet-In

转移报文的控制权到控制器。对于所有通过匹配流表项或者Table Miss后转发到保留端口Controller端口的报文均要通过Packet-in消息送到控制器。也有部分其他流程,如TTL检查等,也需要通过该消息和控制器交互。Packet-In既可以携带报文,也可以通过在交换机内部设置报文的Buffer来仅携带报文头以及其Buffer ID传输给控制器。控制器在接收到Packet-In消息后会对其接收到的报文或者报文头和Buffer ID进行处理,并发回Packet-out消息通知交换机如何处理该报文

Flow-Removed

通知控制器将某个流表项从流表中移除。通常该消息在控制器发送删除流表项的消息或者流表项的两个定时器其中之一超时时产生

Port-Status

通知控制器端口状态或设置的改变

Error

通知控制器交换机出现的问题或错误

 

3. 对称(Symmetric)消息

对称(Symmetric)消息,就是双向对称的消息,主要用来建立连接和检测对方是否在线等。

表1-6 对称消息

子类型

描述

Hello

当连接启动时交换机和控制器会发送Hello交互

Echo

用于验证控制器与交换机之间连接的存活,控制器和交换机都会发送Echo request/reply消息,而且对于接收到的Echo request消息必须能返回Echo reply消息。

该消息也可用于测量控制器与交换机之间链路的延迟和带宽

Experimenter

为将来新加入的特性预留的消息

 

4. OpenFlow定时器

OpenFlow中包含连接检测定时器和重连定时器,作用如下:

·     连接检测定时器:定义发送Echo request报文时间间隔,设备发送三次Echo request报文,仍然没有收到Echo reply报文,则交换机断开与控制器的连接。

·     重连定时器:定义交换机与控制器断开连接后,下次开始重新连接的时间间隔。

1.1.9  控制器

1. 控制器角色

一个OpenFlow交换机可以与多个控制器建立连接,初始连接时,多个控制器的角色相同,权限相同,控制器可以通过OpenFlow消息设置本控制器的角色,各种角色的权限如表1-7所示。

表1-7 控制器角色

角色

权限

Master

处于该角色的控制器拥有全部权限,可以下发流表项,查询统计信息,接收设备上报的状态信息,在多个控制器中仅能有一个控制器是Master角色

Equal

处于该角色的控制器同样拥有全部权限,相对于Master角色,唯一不同的是可以有多个控制器处于Equal角色

Slave

处于该角色的控制器仅拥有部分权限,Controller to switch消息中不能下发流表项,Group表项以及Meter表项,不允许修改接口配置和设备配置,不允许执行Packet Out操作。异步消息中,缺省情况下设备不会上送Flow Remove消息和Packet In消息,仅能上送接口状态变化消息,但是异步消息的上送能力可以通过控制器的设置异步消息进行修改

 

2. 控制器连接模式

交换机与多个控制器建立连接时,连接分为Single模式和Multiple模式:

·     Multiple模式:同一时刻可以与多个控制器建立连接。交换机会同时连接实例内所有的控制器,在与某个控制器连接失败或者断开连接时,在重连定时器超时后重新进行连接,直到连接成功。

·     Single模式:同一时刻仅与一个控制器建立连接,其他控制器作为备份。当且仅当当前的连接断开后,交换机会连接下一个控制器,直到连接成功。

3. 主连接和辅助连接

交换机与每个控制器建立的连接中,可包含一个主连接和多个辅助连接:

·     主连接:一般用于控制消息的处理(下发流表项、获取数据、信息上报等),使用TCP/SSL保持可靠的连接。

·     辅助连接:用于提高控制器和OpenFlow交换机的通信能力。辅助连接的目的地址和端口号可以和主连接不一致。

4. 连接中断模式

如果交换机与所有控制器断开连接,则交换机进入连接中断模式,连接中断模式包括:

·     Secure模式:连接断开后,交换机根据流表项转发。不主动删除控制器下发的表项,而是等待表项超时后进行删除,一旦连接建立成功,未超时的表项依然存在。匹配的流表项中执行output controller动作转发的流量被丢弃。创建OpenFlow实例时,缺省为Secure模式。

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

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

1.1.10  协议规范

·     OpenFlow Switch Specification Version 1.3.3

1.2  OpenFlow配置限制和指导

目前设备不支持VLAN特性。

1.3  OpenFlow配置任务简介

OpenFlow配置任务如下:

(1)     配置OpenFlow实例

a.     创建OpenFlow实例

b.     配置OpenFlow实例的类型

c.     (可选)配置带内管理VLAN

d.     (可选)配置流表和流表项

e.     (可选)配置控制器连接模式

f.     (可选)配置禁止上送控制器的端口类型

g.     开启OpenFlow数据转发平面功能

在转发与控制分离的组网中必选;在其他组网中可选。

h.     激活OpenFlow实例

i.     (可选)配置OpenFlow实例的属性

(2)     配置连接控制器

(3)     (可选)配置不受OpenFlow控制的VLAN

(4)     (可选)配置OpenFlow实例作为SSL服务器监听控制器

(5)     (可选)刷新MAC-IP流表的三层表项

(6)     (可选)使用OpenFlow关闭接口

(7)     (可选)开启OpenFlow告警功能

1.4  配置OpenFlow实例

1.4.1  创建OpenFlow实例

(1)     进入系统视图。

system-view

(2)     创建OpenFlow实例,并进入OpenFlow实例视图。

openflow instance instance-id

(3)     (可选)配置OpenFlow实例的Datapath ID。

datapath-id id

缺省情况下,OpenFlow实例的Datapath ID由实例ID与设备桥MAC组成,其中前16个比特为实例ID,后48个比特为设备桥MAC。

Datapath ID用来在唯一标识OpenFlow实例,不同OpenFlow实例的Datapath ID不能相同。

(4)     (可选)配置OpenFlow报文的DSCP值。

tcp dscp dscp-value

缺省情况下,未配置OpenFlow报文的DSCP值。

1.4.2  配置OpenFlow实例的类型

1. 配置限制和指导

对于VLAN类型的OpenFlow实例,需要注意的是:

·     一个VLAN仅能属于一个OpenFlow实例,否则会导致流量无法正确处理。

·     如果配置的对应VLAN不存在,在激活实例时,设备将会自动创建该VLAN。

·     同一个接口所属VLAN必须属于同一OpenFlow实例,否则,控制器下发的不同实例的接口状态消息会相互覆盖。

2. 配置OpenFlow实例为全局类型

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     配置OpenFlow实例的类型。

classification global

缺省情况下,未配置OpenFlow实例的类型。

3. 配置OpenFlow实例为VLAN类型

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     配置OpenFlow实例的类型。

classification vlan vlan-id [ mask vlan-mask ] [ loosen ]

缺省情况下,未配置OpenFlow实例的类型。

1.4.3  配置带内管理VLAN

1. 功能简介

带内管理VLAN内的流量进行正常转发,用于OpenFlow设备与控制器建立安全通道。

2. 配置限制和指导

仅在带内管理VLAN的接口不属于OpenFlow接口。

对于VLAN类型的OpenFlow实例,带内管理VLAN必须是OpenFlow实例配置的对应VLAN的子集。

对于全局类型和VLAN类型的OpenFlow实例,通过管理以太网接口之外的接口连接控制器时,需要将该接口所属VLAN配置为带内管理VLAN。

对于端口类型的OpenFlow实例,无需配置带内管理VLAN。

3. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     配置带内管理VLAN。

in-band management vlan vlan-id-list

缺省情况下,未配置带内管理VLAN。

1.4.4  配置流表和流表项

1. 配置限制和指导

一个OpenFlow实例仅支持配置一个MAC-IP流表,支持配置多个Extensibility流表。

Ingress-vlan流表和Egress-vlan流表与MAC-IP流表、Extensibility流表同时配置时,Ingress-vlan流表必须为第一个流表,Egress-vlan流表必须为最后一个流表。

Ingress-vlan流表和Egress-vlan流表仅在配置QinQ模式,且设备处于Standalone模式时生效。

设备仅支持先输入mac-ip参数配置MAC-IP流表,后输入extensibility参数配置Extensibility流表。

Extensibility流表ID必须大于MAC-IP流表ID。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     配置流表类型和流表ID。

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

缺省情况下,流表类型为Extensibility,流表ID为0。

(4)     配置Extensibility的流表项的最大值。

flow-entry max-limit limit-value

缺省情况下,Extensibility的流表项的最大值为65535。

控制器下发的流表表项数量超过最大值时,向控制器返回失败。

设备存在多个Extensibility流表时,每个流表都单独受此配置限制。

(5)     配置允许动态ARP表项覆盖OpenFlow ARP表项。

precedence dynamic arp

缺省情况下,禁止动态ARP表项覆盖OpenFlow ARP表项。

仅MAC-IP流表支持本功能。

(6)     允许控制器下发的流表中包含聚合接口的成员端口。

permit-port-type member-port

缺省情况下,禁止控制器下发的流表中包含聚合接口的成员端口。

(7)     配置Table Miss流表项的缺省动作为正常转发。

default table-miss permit

缺省情况下,Table Miss流表项的缺省动作为丢弃。

1.4.5  配置控制器连接模式

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     配置控制器连接模式。

controller mode { multiple | single }

缺省情况下,控制器连接模式为Multiple模式。

1.4.6  配置禁止上送控制器的端口类型

1. 功能简介

配置该功能后,交换机不再向控制器上送对应三层以太网接口、三层聚合接口、VLAN接口或VXLAN中的VSI(Virtual Switch Instance,虚拟交换实例)虚接口的信息。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     配置禁止上送控制器的端口类型。

forbidden port { l3-physical-interface | vlan-interface | vsi-interface } *

缺省情况下,未配置禁止上送控制器的端口类型,即所有接口类型都上送控制器。

1.4.7  开启OpenFlow数据转发平面功能

1. 功能简介

在转发与控制分离的组网中,设备需要开启OpenFlow数据转发平面功能,才能将用户侧接口(AC所在的接口)与VXLAN的对应关系上送控制器,控制器根据这些接口对应关系生成流表项再下发到设备,指导报文转发。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     开启OpenFlow数据转发平面功能。

data-plane enable

缺省情况下,OpenFlow数据转发平面功能处于关闭状态。

1.4.8  激活OpenFlow实例

1. 功能简介

新配置或修改OpenFlow实例后,需要激活实例使配置生效。重新激活实例时,交换机会断开与所有控制器的连接,清除已下发的流表,更新能力集,重新与控制器建立连接。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     激活OpenFlow实例。

active instance

缺省情况下,OpenFlow实例处于未激活状态。

1.4.9  配置OpenFlow实例的属性

1. 配置限制和指导

配置OpenFlow实例属性时,无需激活OpenFlow实例即可生效。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     配置OpenFlow实例的描述信息。

description text

缺省情况下,未配置OpenFlow实例的描述信息。

(4)     配置OpenFlow定时器相关参数。

¡     配置连接检测定时器。

controller echo-request interval interval

缺省情况下,连接检测定时器的值为5。

¡     配置重连定时器。

controller connect interval interval

缺省情况下,重连定时器的值为60。

(5)     配置MAC地址相关功能。

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

mac-learning forbidden

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

带内管理VLAN中配置的VLAN不受该功能限制。

¡     配置匹配控制器查询或删除流表项指令中的动态MAC地址。

mac-ip dynamic-mac aware

缺省情况下,忽略控制器查询或删除流表项指令中的动态MAC地址。

仅MAC-IP流表支持本功能。

(6)     配置禁止ARP报文上送的控制器

forbidden packet-in arp controller controller-id-list

缺省情况下,未配置禁止ARP报文上送的控制器。

配置该功能后,交换机不再向指定控制器上送ARP报文,防止设备中的大量ARP报文冲击这些控制器。

(7)     关闭流表项变化成功后打印日志的开关。

flow-log disable

缺省情况下,流表项变化成功后打印日志的开关处于开启状态。

1.5  配置连接控制器

1. 配置限制和指导

辅助连接配置和主连接配置不做配置冲突检查,如果辅助连接与主连接配置冲突,则无法建立辅助连接。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入OpenFlow实例视图。

openflow instance instance-id

(3)     配置主连接。

controller controller-id address { ip ipv4-address | ipv6 ipv6-address } [ port port-number ] [ local address { ip local-ipv4-address | ipv6 local-ipv6-address } [ port local-port- number ] ] [ ssl ssl-policy-name ] [ vrf vrf-name ]

源IP地址必须为OpenFlow实例中端口的IP地址,否则交换机和控制器之间无法建立连接。

(4)     (可选)配置辅助连接。

controller controller-id auxiliary auxiliary-id transport { tcp | udp | ssl ssl-policy-name } [ address { ip ipv4-address | ipv6 ipv6-address } ] [ port port-number ]

辅助连接中未配置IP地址或接口号时,则IP地址或接口号与主连接一致。

(5)     (可选)配置连接中断模式。

fail-open mode { secure standalone }

缺省情况下,连接中断模式为Secure。

(6)     (可选)开启OpenFlow连接备份功能。

tcp-connection backup

缺省情况下,OpenFlow连接备份功能处于开启状态。

开启连接备份功能后,设备发生主备倒换时,OpenFlow实例仍然保持与控制器的连接。

本功能仅支持设备只有两个主控板(MPU)进行主备倒换的场景。

仅基于TCP的OpenFlow连接支持开启连接备份功能。

1.6  配置不受OpenFlow控制的VLAN

1. 功能简介

配置OpenFlow实例对应的VLAN时,通过VLAN ID和VLAN掩码计算出的VLAN中包含需要正常转发流量的VLAN,可以配置该功能将正常转发流量的VLAN排除,正常转发流量的VLAN不受OpenFlow控制。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     配置不受OpenFlow控制的VLAN。

openflow normal-forward vlan { vlan-id [ to vlan-id ] } &<1-10>

缺省情况下,未配置不受OpenFlow控制的VLAN。