SDN 网络体系结构: SDN网络应用, 北向接口, SDN控制器, 南向接口, SDN数据平面
网络应用: 对网络数据平面的配置,管理,控制
北向接口: 将数据平面资源和状态抽象成统一的开放编程接口
SDN控制器:重要,也称为网络操作系统,向北提供可编程能力,向南对数据平面统一配置,管理控制
南向接口: 对数据平面编程控制,实现数据平面的转发等网络行为(openflow在此)
思想:通用硬件底层,软件定义功能,开源
现有的分层协议可以看做是数据平面的抽象模型,但是控制平面只是网络功能和网络协议的堆砌
改进: 控制平面抽象后通过编程去控制网络,数据平面将不同协议的匹配表整合起来,形成多字段匹配表
openflow协议是一个狭义的南向协议,他通过下发流表项对数据平面设备的网络数据处理逻辑进行编程
狭义的SDN南向协议判断依据就是是否有确切的数据平面编程能力
广义的SDN含有三种
设计动机 通过修改流表规则来指导交换机对网络数据包进行转发和修改
通过TCP,TSL或者SSL传输openflow报文
分成流表和安全通道两部分
控制器和交换机通过安全通道进行连接,控制器下发流表给交换机来匹配流表中的数据包
怎么通讯? 连接初始化阶段:将自身的特性等上报给控制器. 数据包匹配流表失败,吧数据包放在Packet-in报文中上报给控制器
将数据包的处理变成了一条"流水线",每一个流表由匹配与,指令集和计数器构成
匹配域区分不同的数据流
计数器记录匹配流表的数据包的数目,字节数等相关数目
流表的结构:
匹配域 优先级 计数器 指令 计数器 cookie
定义了一组动作,正则主动做可以被多条流表项共同使用,实现组播,负载均衡,容灾备份和聚合的功能
组表的结构
组表号 类型 计数器 动作桶
用于计量和限速
结构
计量表号 计量带 计数器
控制器和交换机相互通讯的通道
控制器初始化,要求交换机回复
用于上报不能匹配流表的数据包
谁都可以发起,表达各种要求和状态
####openflow通信流程
互相发送hello报文,写上版本
控制器下发feature request,交换机回复feature reply,完成相关配置,可以正常通信
当数据包匹配流表失败的时候,控制器根据控制逻辑指导交换机处理数据流
为了保持openflow的活性,控制器周期性地向交换机发送echo报文
作用:对openflow交换机进行各种配置
和openflow相伴相生(但是还可以协助其他的南向协议,所以仿佛比openflow更有生命力)
也是openflow的交换机配置协议,但是只用于OVS
特性:可用于openflow也可用于传统设备
基于XML,不是专门为openflow打造
特性:仅含有{offset,length}来定位数据,匹配操作=>支持新协议时无需对交换机升级,仅需要升级控制平面
协议功能也就是增加修改删除对应的字段/标签,所以支持新协议时,只需要在控制器增加对应逻辑,交换机不用动,如同处理器只进行简单运算,不关心这是图形还是语音
为什么需要POF
POF可以使交换机在特定条件下主动创建修改删除流表
虽然数据操作灵活,但是控制流程复杂的多,所以还在初期探索阶段
他和openflow关注点不一样----数据平面的可编程,也是为了解决openflow编程能力不足和扩展性差的问题
特性:
交换机执行逻辑
入端口->解析器->匹配+动作(入端口流水线,执行操作为包修改和出端口选择)->缓存->匹配+动作(出端口流水线,执行操作为包修改->出端口
包解析+数据包转发
例子:从解析器出来的数据西线经过虚拟路由标识,再经过路由表再根据匹配的结果(0?1?)处理后交给交换表接口表村距离
每一个P4程序包含的组件
数据包的处理都看其报头决定,所以P4也要定义对应的报头(本质就是有序排列的协议字段序列)
定义报头协议之间的关系,以及数据包解析的流程(解析到第一行的结果,决定下一个该解析第五行内容)
格式:Match-Action 匹配域和对应动作
看似和openflow差不多哦,但关键是协议无关
决定了数据包的处理流程(先进谁的表)