OpenFlow

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OpenFlow结构
流表项包括三个域:匹配域、计数器、行动。 匹配域:多个匹配项,涵盖了链路层、网络层和传输层大部分标识; 计数器:用于统计数据流量相关信息,可以针对交换机中的每张流 表、每个数据流、每个设备端口、每个转发队列进行维护 行动:表示与该流表项匹配的数据包应该执行的下一步操作. 流表项结构 包头域 计数器 包头域结构
由转发,被拓展到了基于多域网包包头描述的流转发。
OpenFlow发展历史
自2009年12月发布第一个版本(v1.0)以来,已经有多个版本的
OpenFlow规范(OF)被发布
2011年2月,OF 1.1, 2012年4月 定义多表Pipeline, OF 1.3.0,拓扑发现 支持标签/隧 测试流程,测试集 2013年4月OF 1.3.2 MPLS、multipart 等微小改动
入口 端 源 MAC 地址 目的 MAC 地址 以太 网类 型 VLAN VLAN 优先 ID 级 源IP 地址 目的 IP地 址 IP协 议 IP TOS 位 TCP/ UDP 源端 口 TCP/ UDP 目的 端口
行动
OpenFlow1.0流表计数器
针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队
Add Your Company Slogan
OpenFlow 技术
Logo
OpenFlow概况
目标: 简化管理网络 特点:1.传统的控制层面从转发设备中剥离出来,所有转发行
为的决策从交换机自身“迁移”到了某个集中控制器上,
OpenFlow技术负责转发。
2.OpenFlow 使传统的二层和三层交换机具备了细粒度流 转发能力,即传统的基于MAC 的网包转发,基于IP 的路
数据包处ຫໍສະໝຸດ Baidu流程
每个包按照优先级依次去匹配流表中表项,匹配包的优先级最高的表
项即为匹配结果。匹配成功,对应的计数器将更新;如果没能找到匹配 的表项,则转发给控制器。
802.1 STP处理 (可选) 是
接收报文
包头解析
匹配表0? 否 匹配表N? 否 通过安全通道 发送到控制器
实施动作

包头解析匹配流程
通道加密:
安全通道采用TLS(Transport Layer Security)连接加密。 当交换机启动时,尝试连接到控制器的6633 TCP 端口,双方通过交 换证书进行认证。 因此,每个交换机至少需配置两个证书,一个是用来认证控制器,一 个用来向控制器发出认证。
Logo
主要协议交互过程
换机状态变化更新到控制器;
symmetric(对称): 消息可由交换机或控制器发起。
Logo
controller-to-switch 消息
名称 Features
说明
备注
控制器发起,对 控制器设置或查询交换机上的配置信息, OpenFlow交换机进 Configuration 交换机仅需要应答查询消息。 行状态查询和修改 配置等操作; Modify-state 控制器管理交换机流表项和端口状态等 OpenFlow交换机 接收并处理可能发 控制器向交换机请求一些诸如流、网包 Read-state 送或不需要发送的 等统计信息。 应答消息。 Send-packet 控制器通过交换机指定端口发出网包。 Barrier 控制器通过barrier请求及相应报文,确 认相关消息已经被满足或收到完成操作 的通知。
symmetric消息列表
名称 立连接。
说明
备注 不必通过请求建立,控 制器和交换机都可以主 动发起,并需要接受方
Hello 用于在OpenFlow交换机和控制器用来建 交换机和控制器均可以向对方发出Echo
消息,收者则需要回复Echo reply。该消
Echo 息用来协商延迟、带宽、是否连接保持等 接参数。
流表项修改
控制器下发的流表项修改指令:
名称
ADD MODIFY MODIFY-STIRCT DELETE DELETE-STRICT
说明
增加一个新的流表项 修改所有匹配的流表项 修改严格匹配的流表项 删除所有匹配流表项 删除严格匹配流表项
流表项移除:
定时器计时结束: 每个表项均有一个idle_timeout 定时器和一个 hard_timeout定时器,前者计算的是没有Flow匹配发生的时间,而 后者则计算的是表项在流表中的总时间。一旦到达时间期限,交换 机将自动删除该表项,同时发出一个流删除的消息。 控制器主动删除流表项:控制器通过下发DELETE_STRICT、 DELETE等指令相关的协议消息主动删除流表项
生成树支持:
交换机可以选择支持802.1D 生成树协议,如果支持,所有相关包在 查找流表之前应该先在本地进行传统处理。 支持生成树协议的交换机在FEATURES应答消息的相应域需要设置 STP 位,并且需要在所有的物理端口均支持生成树协议,但无需在 虚拟端口支持。 生成树协议会设置端口状态,来限制发到FLOOD 的网包仅被转发到 生成树指定的端口。需要注意指定出口的转发或发往ALL 的网包会 忽略生成树指定的端口状态,按照规则设置端口转发。 如果交换机不支持802.1D 生成树协议,则必须允许控制器指定泛洪 时的端口状态。
列进行维护,用于统计数据流量的相关信息 对每张流表,统计当前活动的表项数、数据包查询次数、数据包匹配 次数等; 对每个数据流,统计接收到的数据包数、字节数、数据流持续时间等; 对每个设备端口,除统计接收到的数据包数、发送数据包数、接收字 节数、发送字节数等指标之外,还可以对各种错误发生的次数进行统计; 对每个队列,统计发送的数据包数和字节数,还有发送时的溢出错误次 数等。
设置输入端口,以太网 源地址、目的地址及其 类型,其他值置0 初始化包头
以太网类型 =0x8100
设置VLAN ID及优先级
0x8100:以太网自动保护开关 0x0806:AR协议 0x0800:网际协议(IP) 6:TCP协议 17:UDP协议 1:ICMP协议
IP不分段 IP协议为 6或17 TCP/UDP源、 目的端口作为 第四层信息 ICMP类型和编 码作为四层信息
排队 (Enqueue)
交换机将数据包转发到某个出端口对应的转发序列中,便于提供QOS 支持
交换机修改包头的具体字段包括: 修改域(Modify 设置VLAN ID、VLAN优先级、剥离VLAN头 -Field) 修改源MAC地址、目的MAC地址 修改源IPv4地址、目的IPv4地址、IP ToS位
安全性 可靠性 控制器容量
2.OF交换机上流表规模受存储
和匹配速度限制。
OpenFlow交换机
1.每个of 交换机(switch)都有流 表,进行包查找和转发。
2.交换机可以通过of 协议经一个安 全通道连接到外部控制器对流表进 行查询和管理。
3.对每一个包进行查找,如果匹配 则执行相关策略,否则通过安全通 道将包转发到控制器,控制器来决 策相关行为。
Logo
数据包处理
提供两种数据包的处理方法: • 转发(Forward) • 修改包头(Modify field)
SET_VLAN_VID 修改VLAN标签 STRIP_VLAN 弹出VLAN标签 SET_VLAN_PCP 修改VLAN优先级 SET_DL_SRC 修改源MAC地址
必备动作(Required Actions) 、可选动作(Optional Actions) 必备动作:需要所有OpenFlow交换机默认支持 可选动作:需要交换机告知控制器它所能支持的动作种类
流表动作列表
类型 名称 说明 交换机将数据包交给设备的物理端口以及如下的一个或多个虚拟端口: ALL:转发给所有出端口,但不包括入端口 CONTROLLER:封装数据包并转发给控制器 TABLE:对packet_out数据包执行流表操作 LOCAL:转发给本地的网络栈; IN_PORT:从入端口发出
应答
用于建立连接、检测对 方是否在线等。
控制器到OpenFlow交换机之间隧道的连 消息为双向对称,主要
Vendor 交换机提供额外的附加信息功能。为未来
版本预留。
主要协议交互过程
连接建立:
控制器与OpenFlow交换机建立TLS隧道后,隧道中传送的都是控制 协议消息,因此隧道中的所有流量转发都无需查询交换机中的流表; 当OpenFlow安全隧道建立起来后,双方必须首先发送HELLO消息给
对方,该消息携带本方支持的最高协议版本号,接收方将采用双方都
支持的最低协议版本进行通信; 一旦发现两者拥有共同支持的协议版本,则连接建立,否则发送 ERROR消息,描述失败原因,并终止连接。
主要协议交互过程
连接中断:
当交换机与控制器之间的连接发生异常时,OpenFlow交换机应尝试 连接备份控制器 当多次尝试均失败后,OpenFlow交换机将进入紧急模式,并重置所 有的TCP连接。此时所有包将匹配指定的紧急模式表项,而其它所有 正常表项将被从流表中删除 当交换机刚启动时,默认进入紧急模式
交换机对没有明确动作指示的流表项,将会对与其匹配的数据包默认 执行丢弃操作 交换机可选支持将数据包转发给如下虚拟端口: NORMAL:利用交换机的传统转发机制处理数据包 FLOOD:按照最小生成树从设备出端口洪泛发出
必备 动作
转发 (Forward) 丢弃 (Drop) 转发 (Forward)
可选 动作
在建立传输层安全会话的时候,控制器 发送feature请求消息给交换机,交换机 需要应答自身支持的功能。
asynchronous消息列表
名称
说明
备注
交换机收到一个网包,在流表中没有匹配项, 则发送Packet-in 消息给控制器。若交换机缓存 足够多,网包被临时放在缓存中,部分内容 交换机主动发起, Packet-in (默认128 字节)和在交换机缓存中的序号也 通知交换机上发 一同发给控制器;如果交换机缓存不足以存储 生的某些异步事 网包,则将整个网包作为消息的附带内容发给 件,消息是单向 控制器。 的,不需要控制 器应答; Flow- 交换机中的流表项因为超时或修改等原因被删 用于交换机向控 制器通知收到报 removed 除掉,会触发Flow-removed 消息。 文、状态变化及 出席错误等事件 Port交换机端口状态发生变化时(例如down 掉), 信息。 status 触发Port-status 消息。 Error 交换机通过Error 消息来通知控制器发生的问题
以太网类型 =0x0806
设置IP源及 目的地址 使用设置好的包 头域进行查表
IP协议=1
以太网类型 =0x0800
设置IP源、目的 地址及TOS位
Of协议—消息类型
安全通道用来连接交换机和控制器,所有安全通道必须遵守of 协议,
of 协议支持三种消息类型(每一类消息又有多个子消息类型):
controller-to-switch:消息由控制器发起,管理或获取switch状态 asynchronous(异步): 消息由switch 发起,用来将网络事件或交
OpenFlow1.0流表动作
用于指示交换机在收到匹配的数据包后应该如何对其进行处理 每个流表项可以对应有零至多个动作,如果没有定义转发动作,那么与流 表项包头域匹配的数据包将被默认丢弃; 同一流表项中的多个动作的执行可以具有不同优先级,但是在数据包的发 送上并不保证其顺序; 如果流表项中出现有OpenFlow交换机不支持的参数值,交换机将向控制 器返回相应的出错信息;
随着软件定义网络应用场景的扩展和网络技术的自身发展,
OpenFlow需要支持越来越多的协议和报文处理方式;即便是针对常 用标准协议,如TCP协议,OpenFlow 也不能对其头部的任意域进行 匹配和处理。
转发性能
1.支持OF的交换机和控制器之
间新建连接速度受控制器限制。
版本兼容
流表规模
OpenFlow
2014年12月 OF 1.5.0
2009.12,OF1.0, 基本协议,12元 组、计时器、动作
2011年12月OF1.2, TLV变长表项消息, 支持IPv6基本匹配
2012年9月OF 1.3.1, 提升了版本协商能力
2013年10月OF 1.4.0, 改善控制平面功能.
OpenFlow存在问题
相关文档
最新文档