第四章 SDN数据平面

    Hurray 2192次浏览 0条评论 1575字

#笔记 #SDN

在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)

最后修改: