SDN(软件定义网络)数据平面

数据平面

传统网络数据平面

数据平面主要执行网络控制逻辑,数据包的处理主要通过查询由控制平面所生成的FIB表来完成

  • FIB表是转发信息表(Forwarding Information Base的缩写,它是网络设备根据路由表生成的转发表,用来指导数据包的转发123。FIB表中每条转发项都指明到达某网段或某主机的报文应通过路由器的哪个物理接口或逻辑接口发送4。

  • 流表主要用于SDN网络体系架构中。流表是SDN网络中控制平面下发给数据平面的转发规则,用来指导数据包按照匹配和动作进行处理123。流表是针对特定流的策略表项的集合,相当于传统网络中的MAC地址表和路由表34。流表中每个流表项都包含了一个匹配域、一个计数器、一个优先级和一组动作1。

FIB表通常只支持有限的协议和用户配置,而流表可以支持多种协议和用户自定义 。

特点

  • 数据转发处理都是协议相关的。

  • 只支持有限的用户配置,不支持编程自定义。

SDN数据平面

SDN中数据平面是指网络设备中负责转发数据包的部分,它与控制平面相分离,不需要实现复杂的网络协议,而只需要根据控制平面的指令执行匹配和动作。SDN数据平面通常使用一种通用的流表结构来表示转发规则,这种结构可以支持多种协议和用户自定义。

特点

  • 处理流程中的:解析(Parser)、转发(Forwarding)和调度 (Scheduling)都是可编程、协议无关的;

  • 传统网络设备的二层或三层转发表抽象成流表

SDN中数据平面的解析、转发、调度是指数据包在SDN交换机中的处理流程。

  1. 解析是指对数据包的头部进行拆封和分析,提取出匹配域的信息。

  1. 转发是指根据流表中的匹配和动作规则,对数据包进行相应的处理,如修改、丢弃或转发。

  1. 调度是指根据流表中的优先级和计数器,对数据包进行排队和缓存,以实现负载均衡和拥塞控制。

OpenFlow Switch通用转发模型

OpenFlow Switch是一种数据平面的抽象,它是SDN数据平面的一种实现方式。它可以通过OpenFlow协议进行通信,实现转、控分离,它是OpenFlow协议的基础。它将数据转发处理抽象成通用的匹配(Match)—动作( Action )过程,将各种查找表抽象成一种通用的流表结构。OpenFlow Switch通用转发模型可以实现协议无关和可编程的数据平面,为SDN提供了灵活和高效的网络控制能力。

除了OpenFlow Switch之外,还有其他的SDN数据平面的实现方式,例如PISA架构(可编程协议无关交换机架构)。PISA相对于OpenFlow有更高的灵活性和可扩展性,可以支持更多的网络功能和应用。

还有一些其他的SDN数据平面的实现方式,例如基于虚拟化技术的NFV(Network Function Virtualization),它可以将网络功能从硬件设备中解耦出来,以软件形式运行在通用服务器上。

OpenFlow架构概述

OpenFlow是一种南向接口协议,用于控制器与交换机之间的通信,定义了一种通用转发模型,将交换机的流表、安全通道和OpenFlow协议组合在一起。OpenFlow是ONF主推的SDN南向接口协议之一,目前已有多个版本的规范被发布。

三个组成部分

  1. 流表(Flow Table):每个动作(Action)关联一个流表项(Flow Entry),指示交换机如何进行流(Flow)的处理。

  • 流表是OpenFlow交换机的关键组成成分,由控制器下发来实现控制平面对转发平面的控制,每一个流表项关联一个动作指示交换机如何进行流的处理

  • 简单说就是:控制器告诉交换机如何处理不同类型的数据包,这些规则储存在一个或多个流表中,而每一个流表则有多个流表项,每一个流表项对应一种数据包类型和一种处理方式。数据包从第一个流表开始匹配,然后根据匹配结果可能被转发到下一个流表中,知道匹配到最后一个流表。

  1. 安全通道(Secure Channel):OpenFlow交换机通过安全通道与远端控制器连接,负责控制器与交换机之间的交互。

  • 控制器和OpenFlow交换机之间建立的一种通信路径。通过这个通道,控制器可以控制和管理交换机,也可以接收交换机的反馈。安全通道上交换的消息必须遵循OpenFlow协议规定的格式。安全通道通常使用TLS加密,但在OpenFlow 1.1及以后的版本中,也可以直接使用TCP明文传输。

  1. OpenFlow协议(Protocol):定义了一种南向接口标准,为控制 器与交换机之间的通信提供了一种开放标准的方式。

主要版本及特性

ONF将1.0和1.3作为长期支持的版本。

OpenFlow是ONF主推的南向接口协议,目前最为流行。

单流表到多级流表的架构

流表(FlowTable)

流(Flow):是指同一时间,经过同一网络中具有某种共同特征(属性)的数据。比如,可以将访问同一目的地址的数据视为一个流。流一般由网络管理员定义,根据不同的流执行不同的策略。OpenFlow体系中,数据以“流”为单位进行处理。

在OpenFlow网络中,控制器和交换机之间通过OpenFlow协议进行通信。控制器可以向交换机发送一些指令,这些指令叫做“流”。每个流包含了一些匹配字段、优先级、计数器、处理动作、超时时间和一个标识符。这些流按照顺序排列在一个或多个表中,形成了流表。
当交换机收到一个数据包时,它会根据包头信息和流表中的匹配字段进行比较,找到最合适的流表项,并执行相应的处理动作。如果没有找到匹配的流表项,交换机会把数据包转发给控制器。

流表及其组成

流表项

流表项包含三个域:包头域、计数器、动作表。

  1. 包头域:包含了数据包的一些特征信息,比如源地址、目的地址、端口号等,用于和流表中的匹配字段进行比较;

  1. 计数器:用于统计数据流量的相关信息,比如数据包数、字节数、持续时间等;

  1. 动作表:用于指示交换机在收到匹配的数据包后应该执行的操作,比如转发、丢弃、修改等。

包头域

第一层:入端口,消息在哪个端口进入交换机。

第二层:源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交换机不支持的参数值,交换机将向控制器返回相应的出错信息

动作表中含有必备动作可选动作

必备动作:需要所有OpenFlow交换机默认支持。

可选动作:需要交换机告知控制器它所能支持的动作种类。

OpenFlow端口

包括物理端口逻辑端口保留端口

保留端口

流表动作表

数据包处理流程

每个包按照优先级依次去匹配流表中表项,匹配包的优先级最高的表项即为 匹配结果。匹配成功,对应的计数器将更新,同时实施转发动作;如果没能 找到匹配的表项,则转发给控制器。

包头解析匹配流程

组表

组表(group table)是OpenFlow1.3版本新增加的一种表,它可以实现数据包的复制、负载均衡和故障转移等功能。组表中有多个组表项(group entry),每个组表项有一个唯一的标识符(group identifier)和一个或多个动作桶(action bucket)。动作桶中包含了对数据包执行的一系列动作,比如转发、修改、丢弃等。

组表和流表(flow table)的区别是:

  • 流表是用来匹配和处理数据流(flow)的,每个流表项(flow entry)有一个匹配域(match field),用来区分不同的数据流。

  • 组表是用来实现数据包的复制或选择性转发的,每个组表项(group entry)有一个类型域(type field),用来指定不同的转发策略。

  • 流表中可以引用组表,即在流表项中指定一个动作为转发给某个组标识符,这样就可以将数据包交给组表处理。

四种类型的组表

OpenFlow支持四种类型的组表:

  1. Indirect:执行该group中一个已定义的bucket,该组仅支持一个bucket。允许多个流表项或组表项指向一个公共的组(例如IP转发的下一跳)。这是最简单的group类型,交换机通常比较支持这种类型的group。

  1. All:执行该group中所有的bucket。可以用于实现广播、多播或并行处理等功能。

  1. Select:根据一定的算法从该group中选择一个bucket来执行。可以用于实现负载均衡等功能。

  1. Fast failover:按照优先级顺序从该group中选择第一个可用(live)的bucket来执行。可以用于实现故障恢复等功能。

计量表

SDN交换机

交换芯片

  • 通用CPU

  • 专用集成电路芯片(Application-Specific Integrated Circuit,ASIC);

  • 现场可编程门阵列(Field Programmable Gate Array,FPGA)芯片

  • 网络处理器(Network Processor,NP)

关于交换芯片

  • ONF成立了转发抽象组(Forwarding Abstraction WG),负责数据平面 新的转发抽象技术,并在现有交换芯片架构基础上提出了支持 OpenFlow接口的折中方案(Table Typing Pattern,TTP),后更名为可 协商的数据平面模型(Negotiable Data-plane Model,NDM);

  • 这种折中方案基于现有的交换芯片,在传统交换芯片基础上增加对 OpenFlow的支持,因此,该方案被芯片厂商普遍接受,加快了交换芯 片在产业界的落地

主流交换芯片

  • Broadcom StrataXGS系列交换芯片:三叉戟(Trident)和战斧(Tomahawk), 两种系列的芯片应用于不同的用户场景;

  • Barefoot Tofino系列交换芯片:基于通用可编程数据平面PISA架构,并 支持数据平面编程语言P4,提供高达12.8 Tb/s的交换处理能力;

  • 盛科系列芯片:CTC5160、CTC7148、CTC8096

交换机

交换机分为:SDN物理(硬件)交换机、SDN虚拟(软件)交换机。

物理交换机

  • 基于ASIC芯片的SDN品牌交换机;

  • Cisco 、NEC、Juniper、IBM、HPE、Arista、DCN等 

  • 基于ASIC芯片的SDN白盒交换机;

  • BigSwitch、盛科、Pica8

  • 基于NP的SDN交换机;

  • 基于FPGA的SDN交换机:NetFPGA

虚拟交换机

  • Open vSwitch(OVS)

  • Cisco Nexus 1000V

  • H3C S1020V

SDN交换机选型考虑参数

  • 背板带宽:交换机接口处理器和数据总线间所能吞吐的最大数据量, 背板带宽越高,所能处理数据的能力就越强,背板带宽是机架式交换 机的技术参数,对于盒式交换机一般没有背板带宽的概念。

  • 背板带宽从几个Gbps到几百Gbps不等,背板带宽也不是越高越好,只 要满足端口线速转发就可以。

  • 对于线速转发的交换机,背板的带宽计算方法:端口数*相应端口速率 *2(全双工模式

SDN交换机参数

  • 端口密度:代表着交换机的转发能力。端口密度:密度越大,设备的转发能 力越强;

  • 端口速率:速率越高,设备的处理性能越强;

  • 支持模块类型:类型越多,实用性越强,可以应用于不同的网络环境,比如: LAN接口、WAN接口、ATM接口。

  • 端口带宽类型:越丰富越好,即支持40G、100G高速端口,又支持百兆、千 兆低速端口,即支持XFP又支持SFP、SFP+、CFP等等多种光接口类型。

考虑参数

  • 时延(延迟)

  • 功耗

  • 支持OpenFlow版本

  • 机架单元

  • 网管功

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值