四、SDN数据平面

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. 未实现协议无关转发
  2. 不支持对数据包解析逻辑进行编程

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:按照最小生成树从设备出端口洪泛发出

流表动作列表
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章