OpenFlow概念学习

前言

 OpenFlow交换机将原来完全由交换机/路由器控制的报文转发过程转化为由OpenFlow
 交换机和控制服务器来共同完成,目的交换机要通过of协议(OpenFlow Protocol)经
 安全通道(Secure Channel)连接到外部控制器(controller)从而实现数据的转发和
 路由控制的分离。

一、OpenFlow术语

在这里插入图片描述在这里插入图片描述

二、OpenFlowSwitch

1. 通用转发抽象模型

在这里插入图片描述

2. Flow Table处理流程

在这里插入图片描述

3. 多机流表处理流程

在这里插入图片描述

4. 基于OpenFlow的SDN网络中网络设备的工作过程

假设主机A向主机B发送IP数据包,且所有流表有该数据包相应表项

  • OpenFlow交换机查询流表来转发数据包,查表成功则基于匹配域(如目的IP地址+源IP地址)转发;查表失败时,则询问SDN控制器
  • 流表由SDN控制器来构建
    -在这里插入图片描述假设主机A向主机B发送IP数据包,且OpenFlow交换机中流表为空OF交换机
  1. 接收IP数据包
  2. OF交换机解析数据包首部并查询流表,由于流表为空,不知道如何转发,因此需要询问控制器
  3. OF交换机向控制器发送Packet-In消息
  4. 控制器为主机A发送给主机B的IP数据包计算路由
  5. 控制器向OF交换机下发流表,使用FlowMod消息承载流表信息,OF交换机接收该消息后安装流表
  6. 控制器向OF交换机发送Packet-Out消息,指示OF交换机按照刚安装好的流表转发IP数据包
  7. OF交换机收到Packet-Out消息后转发数据包

5. 小结

  1. 路由计算、转发规则(流表)下发由控制器完成
  2. OF交换机只需要按照流表进行转发,查表失败时,通过Pacekt-In消息询问控制器

三、流表详细介绍

1. 流表

流表(Flow Table)是OpenFlow中最重要的一张表,它用于指导OpenFlow交换机对收到的数据包进行转发,相当于二层的MAC地址表和三层的路由表。在OpenFlow 1.1以后的版本中,每台交换机支持使用多张流表,构成流水线处理,从而完成对数据包更为复杂的处理。
在这里插入图片描述

2. 流表项

流表由若干条流表项(Flow Entry)组成,流表项结构如下图所示。
在这里插入图片描述匹配域(Match Fields):用于定义某条流,也是流表匹配的依据
指令(Instructions):表示对该条流应该如何处理
优先级(Priority):表示该流表项的优先匹配程度
计数器(Counters):用于统计该条流的信息
生存时间(Timeouts):表示流表项的有效存活时间
Cookie:控制器设置用来过滤被流统计、流修改和流删除操作请求影响的流表项
标志(Flags):用于流表项管理

3. 流表项匹配域

OpenFlow提供丰富的匹配域字段来定义不同粒度的流,如可以基于目的IP地址定义一条流,也可以根据源IP地址 + 目的IP地址来定义一条流。
在这里插入图片描述

4. 流表项指令

在这里插入图片描述

指令(Instruction)是流表项匹配成功时的处理动作,分为三类:

更新动作集(Action Set):添加、修改、清空动作集,前面两个对应Write-Actions指令,清空动作集对应Clear-Actions指令
修改流水线处理次序:从序号低的表跳到序号高的表,对应Go-To-Table指令
其他:更新元数据以及设定触发器,分别对应Write-Metadata指令和Stat-Trigger指令
在这里插入图片描述

5. Action

]Action是指对数据包的具体处理动作,可分为两类,一类是定义数据包的转发,另一类是修改数据包包头字段
在这里插入图片描述

四、流表匹配过程

解析数据包得到的首部字段,用于与流表项匹配域进行匹配。若一个数据包与多个流表项匹配成功,最后只与优先级最高的流表项进行匹配。

  • 匹配成功,更新计数器,执行相应指令

  • 匹配失败

    流表中没有设置Table-Miss流表项,匹配失败时,丢弃数据包
    流表中设置有Table-Miss流表项(优先级为0且匹配域为ANY),则最后会匹配该表项,执行相应指令(如丢弃、交由控制器处理、交给下一张流表处理)
    在这里插入图片描述

五、 多级流表与流水线处理

从OpenFlow1.1开始引入了多级流表和流水线处理机制,多级流表的出现一方面能够实现对数据包的复杂处理,另一方面又能有效降低单张流表的长度,提高查表效率。每张表都有序号,数据包通过跳转指令按照流表序号递增的方向在多个流表之间进行匹配,这样就构成了一条流水线,如下图所示,可见流水线处理是有方向的。流水线处理可以在OpenFlow交换机的入端口或出端口上进行,一般都在入端口出进行流水线处理。当流水线上只有一张流表时,就简化成单流表匹配的情况。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值