编辑: sunny爹 | 2019-08-01 |
2 www.
h3c.com
2 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow的工作机制
01 02
03 OpenFlow发展的背景 OpenFlow的基本概念 OpenFlow的基本配置及方案介绍
04 目录
3 www.h3c.com
3 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow背景 功能厂商主要研发目标:厂商依赖性 网络规模和设备功能复杂:管控能力减弱 各厂商的命令不一样:网络维护不方便 设备只能通过命令行接口:低扩展性 各自的控制逻辑:网络架构复杂 控制与转发分离架构4www.h3c.com
4 Copyright ?
2016 NEW H3C Group. All rights reserved. RCP架构 ? RCP(routing control platform) 逻辑中央平台 路由控制服务器 仅实现BGP路由决策集中管理 IBGP ? 逻辑中央平台 ? 路由控制服务器 ? IBGP
5 www.h3c.com
5 Copyright ?
2016 NEW H3C Group. All rights reserved. 4D架构 ? 4D(decision,dissemination,discovery,data) 仅仅是理论和功能建模 Decision Data Dissemination Discovery 直接 控制 网络 视图 ? 数据平面 ? 发现平面 ? 分发平面 ? 决策平面
6 www.h3c.com
6 Copyright ?
2016 NEW H3C Group. All rights reserved. Ethane架构 ? Ethane 奠定OpenFlow 技术基础 Ethane交换机 中央控制器 ? ? Ethane交换机 ? 中央控制器
7 www.h3c.com
7 Copyright ?
2016 NEW H3C Group. All rights reserved. SDN架构 控制层 应用层 基础设施层 应用程序 SDN 控制软件 网络服务 网络设备 网络设备 网络设备 网络设备 API API API openflow openflow ? SDN OpenFlow诞生 ? 应用层 ? 控制层 ? 基础设施层
8 www.h3c.com
8 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow的工作机制
01 02
03 OpenFlow发展的背景 OpenFlow的基本概念 OpenFlow的基本配置及方案介绍
04 目录
9 www.h3c.com
9 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFLow组件 ? OpenFlow主要组件 ? OpenFlow控制器 ? OpenFlow交换机 ? OpenFlow交换机组成 ? 一个或多个流表&
组表&
meter表?到控制器的OpenFlow的信道(安全通道) ? OpenFlow协议 ? 安全通道 ? 使用TCP进行连接 ? 默认TCP目的端口号6633 OpenFlow Switch Secure Channel Flow Table Controller OpenFlow Protocal SSL Scope of OpenFlow Switch Specification
10 www.h3c.com
10 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow交换机 ? OpenFlow交换机类别: ? OpenFlow-Only交换机 ? OpenFlow-Hybrid交换机 ? OpenFlow实例类型: ? 全局实例 ? VLAN实例 ? 接口实例 Secure Channel Controller1 Controller2 Flow Table Secure Channel Flow Table OpenFlow protocol OpenFlow protocol OpenFlow Switch Instance
1 Instance
2 11 www.h3c.com
11 Copyright ?
2016 NEW H3C Group. All rights reserved. Flow Table ? OpenFlow流表由流表项构成.流表项的结构随着OpenFlow版本的 演进不断丰富,不同协议版本的流表项结构如下: Match Fields Priority Counters Instructions Timeouts Cookie V1.0 V1.1&
V1.2 V1.3 Match Fields Counters Instructi ons Header Filed Counters Actions
12 www.h3c.com
12 Copyright ?
2016 NEW H3C Group. All rights reserved. Flow Removal流表删除 ? 某个流表表项长时间不匹配报文 ? 则idle_timeout字段设置为非0 ? 某个流表表项一定时间过后,无论是否匹配报文 ? 则hard_timeout字段设置为非0 ? 当任意一个timeouts字段超时后,交换机会移除该流表表项 ? 控制器可以发送删除流表表项修改报文来移除交换机的流表表项 ? 可以设置交换机在移除表项后发送流移除报文到控制器
13 www.h3c.com
13 Copyright ?
2016 NEW H3C Group. All rights reserved. Instructions
13 ? 指令:指导报文如何处理 必选的 Write-Actions 写入动作 可选的 Meter 指示报文到指定的meter Apply-Actions 不改变动作集,立即执行动作 Clear-Actions 立即清空动作集 Write-Metadata 写入隐藏的元数据 Goto-Table 指示处理管道中的下个表
14 www.h3c.com
14 Copyright ?
2016 NEW H3C Group. All rights reserved. Action &
Action Set 必选 的Output 转发到指定的OpenFlow端口 Drop 无直接动作,指令集中无output动作则丢 弃该报文 Group 处理报文到指定Group 可选 的Set-Queue 设置报文的队列id Push-Tag /Pop-Tag 写入/弹出标签 例如VLAN, MPLS等Change-TTL 修改TTL,Hop Limit等字段 ? 每个报文均分配一个动作集,动作集里面包含多个动作 Set-Field 修改报文的头字段
15 www.h3c.com
15 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow 端口 ? 物理端口 (以太网接口等) ? 逻辑端口 (环回接口,聚合接口等) ? 保留端口 (使用支持的行动来定义) ALL 代表交换机所有可以用来转发特定报文的端口 TABLE 代表OpenFlow管道的起点 IN_PORT 代表报文的进入端口 ANY 用于某些命令的特殊值, 出入端口不能设为any LOCAL 代表交换机本地网络的堆栈和管理堆栈 NORMAL 代表传统的非OpenFlow交换机管道 FLOOD 代表传统的非OpenFlow交换机泛洪 CONTROLLER 代表OpenFlow控制器的控制信道
16 www.h3c.com
16 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow Processing Pipeline Note: 管道处理只会向前不会倒退 报文无匹配表项则为Table-Miss Packet in OpenFlow管道 Table
0 Table n Table
1 Execute Action Set Ingress port Action Set=0 Packet+ Ingress port+ metadata Action set Action set Packet Packet Out ? OpenFlow管道处理流程
17 www.h3c.com
17 Copyright ?
2016 NEW H3C Group. All rights reserved. Table Miss ? 每一个流表都需要支持一个匹配流表失败的表项来处理 匹配失败 ? Table-Miss表项会定义如何处理匹配失败的报文.比如 送到控制器处理,丢弃报文或直接送往下一个流表 ? Table-Miss表项的优先级为0 ? 如果Table-Miss表项不存在,默认行为是丢弃报文
18 www.h3c.com
18 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow组表 ? 组表(Group)使OpenFlow可以支持额外的转发行为.组表含有以 下组件: ? Openflow定义的Group Type:ALL、Indirect、Select、Fast failover Indirect 执行Group中定义的一个桶. Select 选取一个动作桶来执行. Fast failover 执行第一个有效的动作桶. Group Identier Group Type Counters Action Buckets All 执行所有动作桶.这个Group通常用于组播或者广播.
19 www.h3c.com
19 Copyright ?
2016 NEW H3C Group. All rights reserved. Meter Table ? Meter Identifier:用于识别meter的32bits长的唯一整数 ? Meter Bands: 指定速率范围和处理报文的方式 ? Counters: 当报文被meter处理时更新计数器 Meter Identifier Meter Bands Counters ? Meter 用于测量分配给它的报文的速率,以达到启用QoS的目的 ? Meter 直接和流表项相关联
20 www.h3c.com
20 Copyright ?
2016 NEW H3C Group. All rights reserved. Counters ? OpenFlow交换机必须支持上表的计数器类型 ? 循环指的是该组件出现在OpenFlow交换机上的时间 计数器 Bits 流表 参考统计(启用的表项)
32 流表项 循环(秒)
32 接口 接收到报文数
64 传输的报文数
64 循环(秒)
32 队列 传输的报文数
64 循环(秒)
32 组 循环(秒)
32 流量 循环(秒)
32 21 www.h3c.com
21 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow的工作机制
01 02
03 OpenFlow发展的背景 OpenFlow的基本概念 OpenFlow的基本配置及方案介绍
04 目录
22 www.h3c.com
22 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow信道
22 ? OpenFlow 信道是连接控制器和每一个OpenFlow交换机的接口, 控制器通过该信道设置,管理交换机 ? 通过OpenFlow信道的报文都是根据OpenFlow协议定义的.通 常采用TLS加密,但也支持简单的TCP直接传输 ? OpenFlow协议目前支持三种报文类型: ? controller-to-switch ? Asynchronous ? symmetric
23 www.h3c.com
23 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow消息 ? Controller-to-switch消息 ? Feature,控制器向交换机请求交换机openflow能力 ? Modify-state,控制器管理交换机流表项和端口状态 ? Packet-out,控制器通过交换机指定端口发送报文 ? 同步symmetric消息 ? Hello,用于控制器与交换机建立连接 ? Echo,交换机和控制器均可以向对方发送echo消息,接受者需要回复reply来测量延迟和保活 ? 异步asynchronous消息 ? Packet-in,交换机发送数据报文给控制器 ? Port-status,交换机端口状态发生变化时,触发该消息,通知控制器 ? Flow-removed,交换机中流表项被删除时,触发该消息 ? Error,交换机发送错误时触发该消息
24 www.h3c.com
24 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow 信道连接 协商 版本 OpenFlow连 接建立成功 终止连接 根据交 换机设 置Fail secure mode 交换机 Fail standalone mode 交换 机OpenFlow信 道连接正常运 行Echo 超时 互相发送hello报文 成功 失败 是否功能请求(Feature Request) 功能响应(Feature reply) controller OF switch hello Feature request Feature reply echo SYN on
6633 SYN,ACK
25 www.h3c.com
25 Copyright ?
2016 NEW H3C Group. All rights reserved. 报文上送控制器的处理过程 有无匹配流 表项 Receive 报文按照匹配的 流表项转发 下发packet out 报文,动作为 out到table Packet in上 送控制器 no yes 提取报文的 特征信息 (mac、ip等) 下发Flow-mode 消息到交换机, 添加流表项
26 www.h3c.com
26 Copyright ?
2016 NEW H3C Group. All rights reserved. 报文上送控制器的处理过程
27 www.h3c.com
27 Copyright ?
2016 NEW H3C Group. All rights reserved. 单播报文流表转发
27 yes 更新计数器:执行指 令?更新动作集 ? 更新报文/匹配集 字段 ? 更新元数据 报文从 表0开始 匹配 表N 未匹 配 丢弃 前往 表M 执行动作集 yes yes no no no
28 www.h3c.com
28 Copyright ?
2016 NEW H3C Group. All rights reserved. 单播报文流表转发
28 7.7.7.1 9.9.9.1 OF SW2 OF SW1
29 www.h3c.com
29 Copyright ?
2016 NEW H3C Group. All rights reserved. 组播报文转发 ? 终端发出组播报文后,控制器为网络下发指导查询组表的流表 ? 流表与组表关联
30 www.h3c.com
30 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow的工作机制
01 02
03 OpenFlow发展的背景 OpenFlow的基本概念 OpenFlow的基本配置及方案介绍
04 目录
31 www.h3c.com
31 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow基本配置 ? 创建OpenFlow实例,并进入OpenFlow实例视图 [Switch] openflow instance instance-id ? 配置OpenFlow实例的类型为全局类型 [Switch-of-inst-instance-id] classification global ? 配置OpenFlow实例对应的VLAN [Switch-of-inst-instance-id] classification vlan vlan-id [ mask vlan-mask ] [ loosen ] ? 配置带内管理VLAN [Switch-of-inst-instance-id] in-band management vlan vlan-list
32 www.h3c.com
32 Copyright ?
2016 NEW H3C Group. All rights reserved. OpenFlow基本配置 ? 配置Table Miss表项的缺省动作 Switch-of-inst-instance-id] default table-miss permit ? 配置连接中断模式 [Switch-of-inst-instance-id] fail-open mode { secure | standalone } ? 配置连接控制器 [Switch-of-inst-instance-id] controller id address ip ip-address local address ip local-ip-address } ? 激活OpenFlow实例 [Switch-of-inst-instance-id] active instance
33 ........