在SDN架构中,控制平面是网络的大脑,控制着数据平面的行为;而`数据平面`是执行网络数据包处理的实体。网络可编程能力取决于数据平面的可编程能力。
## SDN数据平面简介
数据平面执行网络控制逻辑,比如解析数据包头和转发数据包到某些端口。本质上,决定网络编程能力的因素在于数据平面的可编程。只有数据平面提供足够的可编程能力,控制平面才能通过南向接口来对网络进行更灵活的编程控制。
####SDN通用可编程数据平面架构
输入端口 -->
可编程包解析(计数器SRAM)-->
可编程包转发(查找表SRAM/TCAM)-->
可编程包调度(包缓存DRAM)-->
输出端口
## 通用可编程转发模型
传统路由器和交换机一般有多种不同功能的查找表,而OpenFlow Switch将网络数据转发处理抽象成通用的Match-Action过程,对网络系统中的各种查找表进行了通用化处理,抽象成一种新的通用流表转发模型结构。
特征:
1. 转发行为由控制平面指定
2. 由基础转发原语组成
3. 支撑高性能和低功耗
4. 避免厂商锁定控制程序
### 通用硬件模型
OpenFlow Switch的网络数据处理流程为:
数据包从某个端口进入通用模型,通用模型中的协议解析模块完成对数据包头部分的分析,然后根据分析结果选择对应的流表进行处理。在流表内部,解析出来的数据包内容会与每个流表项进行比较。如果匹配成功,则对该数据包执行表项中规定的处理操作,否则按照某种特定指令处理(比如丢弃或转发给控制器)。
指令分为:`操作指令`、`跳转指令`、`专用指令`。
`操作指令`通常是对网络数据包的具体操作,比如转发数据包、修改数据包,以及组表处理和Meter表处理;
`跳转指令`数显网络数据包在多个流表之间的跳转操作;
`专用指令`实现某种特定的网络数据流处理。
在OpenFlow Switch通用硬件模型中,对每个数据包的处理取决于其包头标识域在匹配表中的搜索结果。
### 流水线处理
流水线处理是采用了多级流表实现的,使得OpenFlow Switch模型具备更强的适配能力。
### 流表
OpenFlow Switch采用`Flow`(数据流/流)的概念来描述具备相同特征的网络数据包集合。Flow的使用使得网络用户可以在会话级、应用级和用户级等更细颗粒度的层面上部署网络策略。
![](https://file.hurray0.com/uploads/menu/18/3fa2f19c667b72c30da5143147a7c8ea.jpg)
每个流表项对应一个Flow,其结构 通常由六部分组成。
1. 匹配域
* 输入端口
* VLAN ID
* VLAN pcp
* MAC src
* Eth type
* IP Src
* IP Dst
* IP ToS
* IP Prot
* L4 sport
* L4 dport
* Meta data
2. Instrucitions
* 修改操作指令集或流水线处理流程:Goto-Table, Apply/ClearActions
3. 计数器
* 记录流表项匹配的数据包信息
4. 优先级
* 描述流表项的匹配优先级
5. 失效时间
* 流表项空闲时间
6. Cookie
7. Flags
### 组表
`组表`也是一种转发表类型的抽象子模型,其具备给一组端口定义某种制定操作的抽象能力,从而为组播、负载均衡、重定向及聚类操作等网络功能提供更加便捷的实现方式。
![](https://file.hurray0.com/uploads/menu/18/0ce0ea0e78d44e017b137d29ce4467df.jpg)
组表项结构:
Group ID、Group Type、Counters、Action Buckets
四种组表项类型(Group Type):
1. 全选择类型(All)-->组播广播
2. 选择类型(Select)
3. 间接类型(Indirect)-->(类似指针)汇聚
4. 快速回复类型(Fast Failover)--> 容灾备份
### Meter表
`Meter表`(计量表)使得OpenFlow Switch模型具备测量Flow的能力,可用来实现速率控制等QoS服务,也可以用来实现相对复杂的QoS服务。
![](https://file.hurray0.com/uploads/menu/18/970faf2c93ac7117e2bf265e8e3b7dd2.jpg)
版权属于:Hurray's InfoShare
本文链接:https://hurray0.com/menu/18/
如果没有特别声明,则为本博原创。转载时须注明出处及本声明!