软件定义网络基础---OpenFlow流表
一:流表
(一)流的概念
我们把同一时间经过同一网络中,具有某种共同特征或属性的数据,抽象为一个流
比如:我们将访问同一个地址的数据视为一个流
流一般是由网络管理员定义的,可以根据不同的流执行不同的策略,
在OpenFlow中,数据都是作为流进行处理的。
所以流表就是针对特定流的策略表项的集合,负责数据包的查找和转发
一张流表包含了一系列的流表项flow entries
(二)流表项组成 (包头域、计数器、动作表3个)
(三)包头域
(四)计数器
(五)动作表
动作表用于指示交换机,在收到匹配的数据包后应该如何进行处理
动作分类
OpenFlow端口类型
动作转发,与交换机的端口直接相关。OpenFlow交换机的端口是交换机传递数据包的网络接口。
交换机通过接口和其他交换机建立逻辑连接
物理端口、逻辑端口不做介绍
流表动作列表
二:数据包
(一)数据包的处理流程
其中匹配表按照优先级进行排序,从高到低
如果匹配成功,对应计数器进行更新并去执行相应动作
如果表项没有对应的动作执行,则数据包将会被丢弃
如果没有找到匹配的表项,则封装数据包转发给控制器
(二)包头解析匹配流程
包头解析是为了得到数据分组的12元组(包头域)
1.初始化包头
2.根据以太网类型得到VLAN或三层IP的信息
3.根据IP分组头中的协议类型,确定是TCP/UDP/ICMP协议
4.得到四层的TCP/UDP的源目的端口号或者ICMP类型和编码
三:后续版本的变化
(一)流表项结构的变化
(二)1.3版本中的组表和计量表