概述
文章目录
- 1 SDN数据平面
- 1.1 传统网络设备
- 1.2 数据平面的任务
- 1.3 传统网络数据平面数据包的处理流程
- 1.4 传统网络数据平面的特点
- 1.5 SDN数据平面
- 1.6 SDN数据平面的特点
- 1.7 OpenFlow转发模型
- 1.7.1 SDN数据平面实现的一次尝试
- 1.7.2 OpenFlow交换机转发模型
- 1.7.3 OpenFlow交换机通用转发模型——代表性和缺点
- 1.8 可编程协议无关交换机架构(PISA架构)
- 2 OpenFlow概述
- 2.1 交换机模型架构
- 2.2 OpenFlow主要版本及特性
- 2.3 单流表到多级流表的架构
- 3 OpenFlow流表
- 3.1 流表的概念
- 3.1.1 流的概念
- 3.1.2 流表项的组成(包头域、计数器、动作表)
- 3.1.3 流表及其组成
- 3.2 数据包
- 3.2.1 数据包的处理流程
- 3.2.2 包头解析匹配流程
- 3.3 后续版本变化
- 3.3.1 流表项结构变化
- 3.3.2 组表(Group Table)
- 3.3.3 计量表(Meter Table)
1 SDN数据平面
1.1 传统网络设备
1.2 数据平面的任务
数据平面主要执行网络控制逻辑:
- 解析数据包头
- 转发数据包到某些端口
- 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成
1.3 传统网络数据平面数据包的处理流程
1.4 传统网络数据平面的特点
- 数据转发处理都是协议相关的
- 只支持有限的用户配置,不支持编程自定义
- 功能模块固定,在网络生产时就已经固定。例如:
1.5 SDN数据平面
1.6 SDN数据平面的特点
- 在该SDN数据平面中,包处理流程中的所有模块,包括解析、转发和调度,都是可编程、协议无关的
- 传统网络设备中的二层或三层转发表被抽象成流表
1.7 OpenFlow转发模型
1.7.1 SDN数据平面实现的一次尝试
1.7.2 OpenFlow交换机转发模型
在该转发模型中,OpenFlow交换机将传统网络数据平面中的各种查找表抽象成一种通用的流表结构。同时将数据转发处理,抽象成通用的匹配-动作过程(Match-Action过程)
每个流表可以实现:
用户定义网络处理功能——>可编程的数据转发处理
1.7.3 OpenFlow交换机通用转发模型——代表性和缺点
- OpenFlow交换机转发模型是现有通用可编程数据平面中的代表。
- 目前主流SDN物理交换机和虚拟交换机(Open
vSwitch)都实现了对OpenFlow的支持
缺点:
- 未实现协议无关转发
- 不支持对数据包解析逻辑进行编程
1.8 可编程协议无关交换机架构(PISA架构)
与OpenFlow相比:
- 设计了可编程解析器,实现了协议无关的数据包解析处理
- 在入口和出口分别设计了“匹配——动作”逻辑
2 OpenFlow概述
2008年,Nick等在SIGCOMM会议上发表论文“OpenFlow: Enabling Innovation in Campus Networks”,首次提出OpenFlow交换机架构,将OpenFlow协议用于校园网络的实验创新
2.1 交换机模型架构
OpenFlow架构三个组成部分:
- 流表(Flow Table),每个动作(Action)关联一个流表项(Flow
Entry),指示交换机如何进行流(Flow)的处理 - 安全通道(Sccure Channel),OpenFlow交换机通过安全通道与远
端控制器连接,负责控制器与交换机之间的交互 - OpenFlow协议(Protocol),定义了一种南向接口标准,为控制
器与交换机之间的通信提供了一种开放标准的方式。
2.2 OpenFlow主要版本及特性
ONF将1.0和1.3版本作为长期支持的稳定版本,此后一段时间内
后续版本的发展要维持版本的兼容性
2.3 单流表到多级流表的架构
(a)单流表—OpenFlow 1.0:随着越来越多样化的网络需求,流表变得十分臃肿。单流表对硬件的需求越来越高
(b)多级流表+组表—OpenFlow 1.1-1.4:多张流表串联起来形成流水线,数据包的匹配在流水线的处理过程中完成
(c)出入向匹配—OpenFlow1.5:该版本中增加了入向匹配和出向匹配两个阶段
3 OpenFlow流表
3.1 流表的概念
3.1.1 流的概念
- 同一时间,经过同一网络中具有某种共同特征(属性)的数据,抽象为一个流。比如,可以将访问同一目的地址的数据视为一个流。
- 流一般是由网络管理员定义的,可以根据不同的流执行不同的策略,
- 在OpenFlow中,数据都是作为流进行处理的。
3.1.2 流表项的组成(包头域、计数器、动作表)
3.1.3 流表及其组成
流表:针对特定流的策略表项的集合,负责数据包的查找与转发。
一张流表包含了一系列的流表项(flow entries)
包头域:
计数器:
动作表:
用于指示交换机在收到匹配的数据包后应该如何对其进行处理
- 每个流表项可以对应有零至多个动作,如果没有定义转发动作,那么数据包将被默认丢弃;
- 同一流表项中的多个动作的执行可以具有不同优先级,但是在数据包的发送上并不保证其顺序
- 如果流表项中出现有OpenFlow交换机不支持的参数值,交换机将向控制
器返回相应的出错信息 - 必备动作(Required Actions) 、可选动作(Optional Actions)
必备动作:需要所有OpenFlow交换机默认支持
可选动作:需要交换机告知控制器它所能支持的动作种类
OpenFlow端口类型:
动作转发,与交换机的端口直接相关。OpenFlow交换机的端口是交换机传递数据包的网络接口。交换机通过接口和其他交换机建立逻辑连接。
- 物理端口
- 逻辑端口: 是对物理端口的虚拟化,提高可复用性,逻辑端口的数据包要有tunnel_id
- 保留端口 :指定通用的转发动作(包括:ALL、CONTROLLER、TABLE、IN_PORT、ANY、LOCAL、NORMAL、FLOOD)
ALL:转发给所有出端口,但不包括入端口
CONTROLLER:封装数据包并转发给控制器
TABLE:对packet_out数据包执行流表操作
LOCAL:转发给本地的网络栈;
IN_PORT:从入端口发出
NORMAL:利用交换机的传统转发机制处理数据包
FLOOD:按照最小生成树从设备出端口洪泛发出
流表动作列表
3.2 数据包
3.2.1 数据包的处理流程
每个包按照优先级依次去匹配流表中表项,匹配包的优先级最高的表项即为
匹配结果。
- 如果匹配成功,对应的计数器将更新,同时实施相应的动作
- 如果表项没有对应的动作执行,则将数据包丢弃
- 如果没能找到匹配的表项,则转发给控制器。
3.2.2 包头解析匹配流程
包头解析是为了得到数据分组的12元组(包头域)
- 初始化包头
- 根据以太网类型得到VLAN或三层IP的信息
- 根据IP分组头中的协议类型,确定是TCP/UDP/ICMP协议
- 得到四层的TCP/UDP的源目的端口号或者ICMP类型和编码
3.3 后续版本变化
3.3.1 流表项结构变化
3.3.2 组表(Group Table)
- 组表为OpenFlow交换机提供了更高级的数据包转发特性(如select和all),从而实现组播、负载均衡、容灾备份和聚合等功能;
- 一个组表由多个组表项(Group Entries)组成。
3.3.3 计量表(Meter Table)
- 通过计量表,OpenFlow交换机可以实现简单的QoS功能,比如速率限
制等,还可以与每个端口队列结合,实现更加复杂的QoS框架,如DiffServ; - 每个计量表由多个计量表项(Meter Entries)组成。
最后
以上就是长情未来为你收集整理的四、SDN数据平面1 SDN数据平面2 OpenFlow概述3 OpenFlow流表的全部内容,希望文章能够帮你解决四、SDN数据平面1 SDN数据平面2 OpenFlow概述3 OpenFlow流表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复