软件定义网络PART 3
- 数据平面
- SDN数据平面
- 传统网络数据平面
- 传统网络数据平面的特点
- SDN数据平面
- SDN数据平面的特点
- OpenFlow Switch通用转发模型
- 通用可编程转发模型
- OpenFlow 概述
- OpenFlow架构三个组成部分
- OpenFlow主要版本及特性
- 单流表到多级流表的架构
- Open Flow 流表
- 什么是流表(flow table)?
- OpenFlow v1.0流表项
- 流表及其组成
- OpenFlow v1.0流表项-包头域
- OpenFlow v1.0流表项-计数器
- OpenFlow v1.0流表项-动作表
- 流表动作列表:
- OpenFlow端口类型:
- OpenFlow保留端口:
- 数据包处理流程
- 包头解析匹配流程
- 各个版本流表项结构变化
- 组表(Group Table)
- 计量表(Meter Table)
- SDN交换机
- SDN交换机----交换芯片
- 设计支持OpenFlow架构的交换芯片
- 主流交换芯片产品
- SDN交换机
- SDN物理交换机
- 基于ASIC芯片的SDN品牌交换机
- 基于ASIC芯片的SDN白盒交换机
- SDN虚拟(软件)交换机
- SDN交换机选型考虑参数
数据平面
SDN数据平面
传统网络数据平面
数据平面主要执行网络控制逻辑,数据包的处理主要通过查询由控制平面所生成的FIB表来完成。包处理流程:
FIB表:forward information datebase 转发信息库
传统网络数据平面的特点
- 数据转发处理都是协议相关的;
- 只支持有限的用户配置,不支持编程自定义。
SDN数据平面
SDN数据平面的特点
- 处理流程中的:解析(Parser)、转发(Forwarding)和调度(Scheduling)都是可编程、协议无关的;
- 传统网络设备的二层或三层转发表抽象成流表;
OpenFlow Switch通用转发模型
通用可编程转发模型
OpenFlow 概述
2008年, Nick等在SIGCOMM会议上发表论文“OpenFlow: Enabling Innovation in Campus Networks”,首次提出OpenFlow交换机架构,将OpenFlow协议用于校园网络的试验创新。
论文感兴趣的可以评论滴滴我
OpenFlow架构三个组成部分
- 流表(Flow Table),每个动作(Action)关联一个流表项(FlowEntry),指示交换机如何进行流(Flow)的处理;
- 安全通道(Sccure Channel),OpenFlow交换机通过安全通道与远 端控制器连接,负责控制器与交换机之间的交互;
- OpenFlow协议(Flow Table)(Protocol),定义了一种南向接口标准,为控制 器与交换机之间的通信提供了一种开放标准的方式。
2009年12月,ONF发布了具有里程碑意义的可用于商业化产品的OpenFlow 1.0版本规范。
OpenFlow是ONF主推的南向接口协议,目前已成为SDN主流的南向接口协议之一。
已经有多个版本的OpenFlow规范(OF)被发布。
OpenFlow主要版本及特性
- Open Flow可扩展匹配:既能增加关键字匹配字段,也能节省流表空间- 流表同步机制:多流表共享相同匹配字段,且可定义不同的动作- 计量表:控制关联流表数据包传输效率- 出向流表:入向匹配过程基础上添加了出向匹配
ONF将1.0和1.3版本作为长期支持的稳定版本,此后一段时间内后续版本的发展要维持版本的兼容性。学习重点技术规范文件:
- openflow-spec-v1.0.0
- openflow-spec-v1.3.0
单流表到多级流表的架构
Open Flow 流表
什么是流表(flow table)?
流的概念:
- 同一时间,经过同一网络中具有某种共同特征(属性)的数据,抽象为一个流。比如,可以将访问同一目的地址的数据视为一个流;
- 流一般由网络管理员定义,根据不同的流执行不同的策略;
- OpenFlow体系中,数据以“流”为单位进行处理。
流表:针对特定流的策略表项的集合,负责数据包的查找与转发。一张流表包含了一系列的流表项(flow entries)。
OpenFlow v1.0流表项
流表项包括三个域:
- 包头域(Head Fields) :涵盖了链路层、网络层和传输层大部分标识;
- 计数器( Counters ) :用于统计数据流量相关信息,可以针对交换机
中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护; - 动作表(Actions) :指示与该流表项匹配的数据包应该执行的下一步 操作。
流表及其组成
openflow 交换机 = 安全通道 + 流表
这里的图不准确,准确来说,controller 与安全通道相连接 ,其深意可以自行百度,安全通道是什么?
OpenFlow v1.0流表项-包头域
包头域包含传统网络OSI模型的前四层:
- 第一层:入端口(Ingress Port) ,即消息在哪个端口进入交换机;
- 第二层:源MAC地址(Ether source),目的MAC地址(Ether dst),以太网类型(Ether Type),VLAN标签(VLAN id),VLAN优先级(VLAN priority);
- 第三层:源IP(IP src),目的IP(IP dst),IP协议字段(IP Proto),IP服务类型(IP ToSbits);
- 第四层:TCP/UDP源端口号(TCP/UCP src port),TCP/UDP目的端口号(TCP/UDP dst port)。
OpenFlow v1.0流表项-计数器
针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队
列进行维护,用于统计数据流量的相关信息:
- ➢对每张流表,统计当前活动的 表项数、数据包查询次数、数据包匹配 次数等;
- ➢ 对每个数据流,统计接收到的数据包数、字节数、数据流持续时间等;
- ➢ 对每个设备端口,除统计接收到的数据包数、发送数据包数、接收字 节数、发送字节数等指标之外,还可以对各种错误发生的次数进行统计;
- ➢ 对每个队列,统计发送的数据包数和字节数,还有发送时的溢出错误次数等。
OpenFlow v1.0流表项-动作表
用于指示交换机在收到匹配的数据包后应该如何对其进行处理
➢ 每个流表项可以对应有零至多个动作,如果没有定义转发动作,那么数据包将被默认丢弃;
➢同一流表项中的多个动作的执行可以具有不同优先级,但是在数据包的发
送上并不保证其顺序;
➢如果流表项中出现有OpenFlow交换机不支持的参数值,交换机将向控制器返回相应的出错信息;
必备动作(Required Actions) 、可选动作(Optional Actions)
➢ 必备动作:需要所有OpenFlow交换机默认支持
➢ 可选动作:需要交换机告知控制器它所能支持的动作种类
流表动作列表:
OpenFlow端口类型:
端口(Ports):交换机传递数据包的网络接口,交换机通过接口和其他交换机建立逻辑连接
- 物理端口
- 逻辑端口: 是对物理端口的虚拟化,提高可复用性,逻辑端口的数据包需要有tunnel_id;
- 保留端口 :指定通用的转发动作(包括:ALL、CONTROLLER、TABLE、IN_PORT、ANY、LOCAL、NORMAL、FLOOD)。
OpenFlow保留端口:
● ALL:转发给所有出端口,但不包括入端口
● CONTROLLER:封装数据包并转发给控制器
● TABLE:对packet_out数据包执行流表操作
● LOCAL:转发给本地的网络栈;
● IN_PORT:从入端口发出
● NORMAL:利用交换机的传统转发机制处理数据包
● FLOOD:按照最小生成树从设备出端口洪泛发出
数据包处理流程
每个包按照优先级依次去匹配流表中表项,匹配包的优先级最高的表项即为
匹配结果。匹配成功,对应的计数器将更新,同时实施转发动作;如果没能
找到匹配的表项,则转发给控制器。
匹配表N 理解为给表项的分组头域精度不同产生的匹配优先级
STP: Spanning Tree Protocol 生成树协议
类型: 链路管理协议
作用: 避免单点故障、网络回环
可应用于计算机网络中树形拓扑结构建立,主要作用是防止网桥网络中的冗余链路形成环路工作。但某些特定因素会导致STP失败,要排除故障可能非常困难,这取决于网络设计 。生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的。
包头解析匹配流程
各个版本流表项结构变化
组表(Group Table)
- 组表为OpenFlow交换机提供了更高级的数据包转发特性(如 select和all),从而实现组播、负载均衡、容灾备份和聚合等功能;
- 一个组表由多个组表项(Group Entries)组成。
- 组表号(Group Identifier):一个32位无符号整数,组表项的唯一标识。
- 组表类型(Group Type):表明了对数据包的处理行为。其中必须支持的动作包括all和indirect,可选动 作包括select和fast failover;
- 计数器(Counters):被该组表项处理过的数据包的统计量。
- 动作桶(Action Buckets):一个Action Bucket的有序列表,每个Action Bucket又包含了一组Action集合 及其参数。
计量表(Meter Table)
- 通过计量表,OpenFlow交换机可以实现简单的QoS功能,比如速率限
制等,还可以与每个端口队列结合,实现更加复杂的QoS框架,如DiffServ; - 每个计量表由多个计量表项(Meter Entries)组成。
- 计量表号(Meter Identifier):一个32位无符号整数,计量表项的唯一标识。
- 计量带(Meter Bands):一个无序的Meter Band集合,每个Meter Band指明了带宽速率以及处理数据包的行为。
- 计数器(Counters):被该计量表项处理过的数据包的统计量。
SDN交换机
SDN交换机----交换芯片
- 通用CPU;
- 专用集成电路芯片(Application-Specific Integrated Circuit,ASIC);
- 现场可编程门阵列(Field Programmable Gate Array,FPGA)芯片;
- 网络处理器(Network Processor,NP)
设计支持OpenFlow架构的交换芯片
- ONF成立了转发抽象组(Forwarding Abstraction WG),负责数据平面新的转发抽象技术,并在现有交换芯片架构基础上提出了支持OpenFlow接口的折中方案(Table Typing Pattern,TTP),后更名为可协商的数据平面模型(Negotiable Data-plane Model,NDM);
- 这种折中方案基于现有的交换芯片,在传统交换芯片基础上增加对OpenFlow的支持,因此,该方案被芯片厂商普遍接受,加快了交换芯片在产业界的落地。
主流交换芯片产品
- Broadcom StrataXGS系列交换芯片:三叉戟(Trident)和战斧(Tomahawk),两种系列的芯片应用于不同的用户场景;
- Barefoot Tofino系列交换芯片:基于通用可编程数据平面PISA架构,并支持数据平面编程语言P4,提供高达12.8Tb/s的交换处理能力;
- 盛科系列芯片:CTC5160、CTC7148、CTC8096。
SDN交换机
- SDN物理(硬件)交换机:多数为支持OpenFlow的混合模式交换机,支持传统二、三层处理模式和SDN处理模式;
- SDN虚拟(软件)交换机:成本低、配置灵活,性能满足中小规模网络要求
SDN物理交换机
- 基于ASIC芯片的SDN品牌交换机;
- Cisco 、NEC、Juniper、IBM、HPE、Arista、DCN等 - 基于ASIC芯片的SDN白盒交换机;
- BigSwitch、盛科、Pica8 - 基于NP的SDN交换机;
- 基于FPGA的SDN交换机:NetFPGA
基于ASIC芯片的SDN品牌交换机
- Cisco Nexus 9000系列:Nexus 9500、Nexus 9300
- NEC IP8800系列交换机;
- Arista 7160系列和7500R;
- HPE FlexFabric 5700、5900、 12900系列;
- Juniper EX9200系列
- IBM RackSwitch G8264交换机;
- DCN CS16800系列
- H3C S12500系列
- 博科ICX7450
基于ASIC芯片的SDN白盒交换机
- 盛科V330、V350、V580;
- Pica8 P3290、P3295、P3297、P3920、P3922、P3930、P5101、P5401
SDN虚拟(软件)交换机
- Open vSwitch(OVS)
- Cisco Nexus 1000V
- H3C S1020V
SDN交换机选型考虑参数
-
背板带宽:交换机接口处理器和数据总线间所能吞吐的最大数据量,背板带宽越高,所能处理数据的能力就越强,背板带宽是机架式交换机的技术参数,对于盒式交换机一般没有背板带宽的概念。
盒式交换机,机架式交换机和框架交换机都是属于交换机中的一种类别,它根据实际使用场景的不同以及配置参数等等方面而在定价和销售定位方面有所区别,大家在实际购买的时候需要结合自己的需求以及预算选择一款最合适的产品。1、机架式交换机:是可以安装在标准19“机柜中的网络设备,美观度好看;2、框架式交换机:是自带外框架的网络设备,一般情况也可以安装在19”网络机柜中,美观度一般;3、盒式交换机:我理解的就是落地式、塔式交换机,放在机柜中的托板上,美观度较差;
-
背板带宽从几个Gbps到几百Gbps不等,背板带宽也不是越高越好,只要满足端口线速转发就可以。
-
对于线速转发的交换机,背板的带宽计算方法:端口数相应端口速率2(全双工模式)
-
端口密度:代表着交换机的转发能力。端口密度:密度越大,设备的转发能力越强;
-
端口速率:速率越高,设备的处理性能越强;
-
支持模块类型:类型越多,实用性越强,可以应用于不同的网络环境,比如:LAN接口、WAN接口、ATM接口。
-
端口带宽类型:越丰富越好,即支持40G、100G高速端口,又支持百兆、千兆低速端口,即支持XFP又支持SFP、SFP+、CFP等等多种光接口类型。
-
时延(延迟)
-
功耗
-
支持OpenFlow版本
-
机架单元
-
网管功能
参考资料:中国大学MOCC SDN网络课程、百度百科
文章有什么问题或错误的地方可在评论区或私信联系我,谢谢!