第二章-SDN南向协议

  • Post author:
  • Post category:其他


SDN 网络体系结构: SDN网络应用, 北向接口, SDN控制器, 南向接口, SDN数据平面

网络应用: 对网络数据平面的配置,管理,控制

北向接口: 将数据平面资源和状态抽象成统一的开放编程接口

SDN控制器:

重要

,也称为网络操作系统,向北提供可编程能力,向南对数据平面统一配置,管理控制

南向接口: 对数据平面编程控制,实现数据平面的转发等网络行为(openflow在此)


思想:通用硬件底层,软件定义功能,开源

现有的分层协议可以看做是数据平面的抽象模型,但是控制平面只是网络功能和网络协议的堆砌

改进: 控制平面抽象后通过编程去控制网络,数据平面将不同协议的匹配表整合起来,形成多字段匹配表



2.1 SDN 南向协议

openflow协议是一个狭义的南向协议,他通过下发流表项对数据平面设备的网络数据处理逻辑进行编程


狭义的SDN南向协议判断依据就是是否有确切的数据平面编程能力

广义的SDN含有三种

  1. 传统的,仅能进行网络配置的(无法指导数据交换)
  2. 狭义的SDN,指导数据交换
  3. 完全可编程:本来就存在,但不是为SDN设计,只是被应用在SDN上



openflow

设计动机 通过修改流表规则来指导交换机对网络数据包进行转发和修改

通过TCP,TSL或者SSL传输openflow报文



openflow交换机

分成流表和安全通道两部分

控制器和交换机通过安全通道进行连接,控制器下发流表给交换机来匹配流表中的数据包

怎么通讯? 连接初始化阶段:将自身的特性等上报给控制器. 数据包匹配流表失败,吧数据包放在Packet-in报文中上报给控制器



openflow的表
  1. 流表

将数据包的处理变成了一条”流水线”,每一个流表由匹配与,指令集和计数器构成

匹配域区分不同的数据流

计数器记录匹配流表的数据包的数目,字节数等相关数目

流表的结构:

匹配域 优先级 计数器 指令 计数器 cookie

  1. 组表

定义了一组动作,正则主动做可以被多条流表项共同使用,实现组播,负载均衡,容灾备份和聚合的功能

组表的结构

组表号 类型 计数器 动作桶

  1. Meter表

用于计量和限速

结构

计量表号 计量带 计数器



openflow通道

控制器和交换机相互通讯的通道

  1. controller-to-switch

控制器初始化,要求交换机回复

  1. 异步报文

用于上报不能匹配流表的数据包

  1. 任意报文

谁都可以发起,表达各种要求和状态

####openflow通信流程

  1. 互相发送hello报文,写上版本

  2. 控制器下发feature request,交换机回复feature reply,完成相关配置,可以正常通信

  3. 当数据包匹配流表失败的时候,控制器根据控制逻辑指导交换机处理数据流

  4. 为了保持openflow的活性,控制器周期性地向交换机发送echo报文



2.3 广义的SDN南向协议



of-config

作用:对openflow交换机进行各种配置

  • 配置控制器
  • 配置交换机端口队列
  • 改变端口状态和特性
  • 完成交换机和控制器的安全连接证书问题
  • 发现逻辑交换机
  • 配置隧道协议

和openflow相伴相生(但是还可以协助其他的南向协议,所以仿佛比openflow更有生命力)



OVSDB(The Open vSwitch Database Management Protocol)OVS(虚拟交换机)的数据库管理协议

也是openflow的交换机配置协议,但是只用于OVS

  • 增删改网桥(datapath)
  • 配置网桥所需要的控制器信息
  • 配置管理端
  • 增删改端口,隧道,队列
  • 配置QOS
  • 收集统计



NETCONF

特性:可用于openflow也可用于传统设备



XMPP

基于XML,不是专门为openflow打造



2.4完全可编程南向协议



POF(protocol oblivious forwarding)

特性:仅含有{offset,length}来定位数据,匹配操作=>支持新协议时无需对交换机升级,仅需要升级控制平面

协议功能也就是增加修改删除对应的字段/标签,所以支持新协议时,只需要在控制器增加对应逻辑,交换机不用动,如同处理器只进行简单运算,不关心这是图形还是语音


为什么需要POF

  • openflow在不停地扩充支持的协议,所以越来越复杂
  • 现在openflow无法对交换机的转发逻辑编程和修改,只能通过

    添加流表来指导数据包转发
  • openflow是无状态的,无法维护网络状态并主动做出动作
  • 数据平面和控制平面分离不彻底:交换机必须掌握协议的语义等控制信息才能完成数据匹配=>协议增多,特定指令增多
  • 只能按照固定的协议逻辑处理数据,不能增加一些辅助信息
  • 给openflow增加新特性时,需要重写控制器和交换机两端的协议栈
  • 交换机无法描述现有状态并主动采取动作,一切皆靠控制器

POF可以使交换机在特定条件下主动创建修改删除流表


虽然数据操作灵活,但是控制流程复杂的多

,所以还在初期探索阶段



P4 programming protocol-independent packet processors协议无关数据包处理编程语言

他和openflow关注点不一样—-数据平面的可编程,也是为了解决openflow编程能力不足和扩展性差的问题

特性:

  1. 有对交换机协议解析流程和数据处理流程进行编程的能力
  2. 交换设备无需关注协议的语法
  3. 无需关注底层设备的具体信息
  4. 支持并行和串行执行Match-Action

交换机执行逻辑

入端口->解析器->匹配+动作(入端口流水线,执行操作为包修改和出端口选择)->缓存->匹配+动作(出端口流水线,执行操作为包修改->出端口


包解析+数据包转发

例子:从解析器出来的数据西线经过虚拟路由标识,再经过路由表再根据匹配的结果(0?1?)处理后交给交换表接口表村距离

在这里插入图片描述


每一个P4程序包含的组件

  • Header报头

数据包的处理都看其报头决定,所以P4也要定义对应的报头(本质就是有序排列的协议字段序列)

  • Parser解析器

定义报头协议之间的关系,以及数据包解析的流程(解析到第一行的结果,决定下一个该解析第五行内容)

  • Table表

格式:Match-Action 匹配域和对应动作

看似和openflow差不多哦,但关键是

协议无关

  • Control Program控制程序

决定了数据包的处理流程(先进谁的表)