数据平面

  1. 数据平面的OpenFlow交换机架构
  • OpenFlow流表
    1. 流表的组成
  • 数据平面在传统网络设备中控制平面和数据平面在物理上是紧耦合的在逻辑上相互独立,运行于独立的处理器或板卡中。

    数据平面的任务主要是执行网络的控制逻辑,如解析数据包头、转发数据包到某些端口,数据平面对数据包的处理主要通过查询由控制平面所生成的转发信息表来完成。传统网络数据平面中数据包的处理流程,数据包从入端口进入后主要经过拆封与解析转发策略匹配和转发调度等处理阶段然后被转发到相应的输出端口。传统网络数据平面中数据转发的特点:1.协议相关,只能处理某几种特定的协议的数据包(比如某一设备的数据平面只能对某几种特定的特殊协议的数据包进行解析)2.网络设备的功能模块在生产时就已经固定,只支持有限的用户配置不支持编程的自定义(比如二层表只支持MAC地址学习和查找处理,三层表只支持IP地址的学习与查找处理)

    针对上述数据平面存在的不足提出了一种理想的SDN数据平面架构:
    理想的SDN数据平面与传统数据平面是一致的。主要变换在于第一在该SDN数据平面中包处理流程中的所有模块包括解析、转发和调度都是可编程与协议无关的;第二传统网络设备中的二层或三层转发表被抽象成流表。如下图:

    架构图

    上述这种理想的架构设计目的是为网络用户提供一种可以通过软件编程任意定义网络功能的方式。McKeown团队设计了一个可编程通用转发抽象模型(OpenFlow交换机模型),
    在该转发模型中OpenFlow交换机将传统网络数据平面中的各种查找表抽象成一种通用的流表结构,同时将数据转发处理抽象为通用的匹配-动作过程,每个流表可以实现用户定义的网络处理功能从而实现可编程的数据转发处理。OpenFlow交换机转发模型是现有通用可编程数据平面的代表。目前主流厂商的SDN物理交换机和主流的虚拟交换机(Open vSwitch)都实现了OpenFlow的支持。但是OpenFlow交换机模型并未实现协议无关的转发页也不支持对数据包解析进行编程,因此还无法达到理想的通用可编程转发模型的要求。
    为进一步实现通用可编程的数据平面,学术界做了大量的研究工作其中最具代表性的设计思路是Nick教授提出的可编程协议无关交换机架构(PISA架构)
    在PISA架构中,首先在数据包到达后由可编程解析器解析在通过入口侧一系列的匹配-动作阶段,然后经由队列系统交换再由出口匹配-动作阶段再次处理最后重新组装发送到输出端口。

    与OpenFlow交换机架构相比,该架构有两个主要的不同,第一,设计了可编程解析器,实现了协议无关的数据包协议解析处理,改进了OpenFlow交换机在支持新网络协议方面的不足;第二,在入口和出口分别设计了匹配-动作逻辑,而且匹配-动作逻辑是通过支持通用数据包处理指令集的计算逻辑单元来实现的。解析器和匹配-动作单元只有在被编程后才能做具体的数据包处理工作,PISA芯片在没有配置前不会实现任何的数据平面协议,所以说PISA是协议无关的架构。
    
    数据平面的OpenFlow交换机架构

    在该架构中主要有三个部分,分别是流表、安全通道、OpenFlow协议
    流表(Flow Table):指示交换机如何进行流的处理,每个动作关联一个流表项。
    安全通道(Sccure Channel):负责控制器与交换机之间的联系,OpenFlow交换机通过安全通道与远端的控制器连接。
    OpenFlow协议:定义了一种南向接口标准,为控制器与交换机之间的通信提供了一种开放的标准的方式。
    OpenFlow是ONF主推的南向接口协议也是SDN主流的南向接口协议之一。

    OpenFlow主要版本以及特性

    16版本

    由于OpenFlow和各个版本不兼容,因此ONF奖1.0和1.3版本作为长期支持的稳定版本
    OpenFlow交换机架构的变换过程:

    该架构是简单的单流表设计,数据包的匹配在这张流表中完成。这张流表就相当于承载了传统网络OSI模型中4到7层的大部分功能。随着越来越多样化的网络需求流表变得十分臃肿,流表规模的增加对硬件性能的要求越来越高。为解决这一问题OpenFlow1.1版本设计了多级流表+组表的交换机架构。OpenFlow1.1到1.4版本一直沿用的多级流表+组表的交换机架构设计,多张流表串联起来形成了流水线,数据包的匹配在流水线的处理过程中完成。

    OpenFlow流表

    我们把同一时间经过同一网络中具有某种共同特征或属性的数据抽象为一个流,比如我们将访问同一目的地的地址的数据视为一个流,流一般是由网络管理员定义的可以根据不同的流执行不同的策略。在OpenFlow体系中数据都是以“流”作为单位进行处理的,所以流表就是针对特定流的策略的集合,负责数据包的查询与转发。一张流表包括了一系列的流表项(flow entries)。以OpenFlow1.0为例流表项包括了三个部分包头域、计数器和动作表。包头域由多个匹配项组成,涵盖了链路层、网络层和传输层大部分标识;计数器用于统计数据流量的相关信息,可以针对交换机中的每张流表每个数据流数据流每个设备端口以及每个转发队列进行维护;动作表指示了与交换机匹配的数据包应该执行的下一步动作。

    流表的组成

    23流表的组成

    包头域是一个12元组,基本涵盖了OSI模型的1-4层

    24 包头域

    计数器针对交换机中的每张流表、每个数据流、每个设备端口以及每个转发队列进行维护,用于统计数据流量的相关信息。具体来说对于每张流表统计当前活动的表项数、数据包查询次数数据包匹配次数等;对于数据流统计接收到的数据包数、字节数、数据流持续时间等;对于每个设备端口统计接收到的数据包数、发送数据包数、接收数据包数、发送字节、错误发生的次数;对于每个队列统计发送的数据包、字节数、溢出错误次数等。

    动作表用于指示交换机在收到匹配的数据包后应该如何对其进行处理,每个流表项可以对应零到多个动作,如果没有定义转发动作,那么与流表项包头域匹配的数据包将被默认丢弃;统一流表项中的多个动作的执行可以具有不同的优先级,但是在数据的发送上并不保证其顺序;如果流表项中出现有OpenFlow交换机不支持的参数值,交换机将向控制器返回相应的出错信息。
    OpenFlow交换机的端口(因为动作的转发与交换机的端口直接相关),是交换机传递数据包的网络接口,交换机通过接口与其他交换机建立逻辑连接,主要有三类接口;
    1.物理端口
    2.逻辑端口
    3.保留端口(指定通用的转发动作)
    ALL:转发给所有出端口,但不包含入端口
    CINTEROLLER:封装数据包并转发给控制器
    TABLE:对packet_out数据包执行流表操作
    IN_PORT:从入端口发出
    LOCAL:转发给本地的网络栈
    NORMAL:传统转发机制处理数据包
    FLOOD:按照最小生成树从设备出端口洪泛发出

    流表项的动作分为必备动作和可选动作两类

    26流表动作

    数据包的匹配处理如何进行?
    1.数据包处理流程

    27数据包处理流程

    首先接收到报文后,TP处理(可选动作),进行包头的解析,进入匹配阶段(在匹配阶段每个包按照优先级依次去匹配流表中的表项,最后优先级最高的匹配项即为匹配结果,如果匹配成功对应的计数器将更新并实施相应的动作,如果表项没有操作对应数据包将会被丢弃,如果没有找到匹配的表项则分装数据包通过安全通道转发给控制器。

    包头解析匹配流程:包头解析是为了得到数据分组的12元组。

    28包头解析匹配流程

    首先是初始化包头根据以太网类型得到Vlan或三层IP的信息,再根据IP分组头中的协议类型确定是TCP协议还是UDP协议或者是ICMP协议,最后得到四层的TCP/UDP的源目的端口号或者ICMP类型和编码。
    以上是以V1.0版本为例,简绍了OpenFlow交换机的流表以及数据的处理流程。后续版本的一些细节变化。

    从OpenFlow1.1版本开始原1.0版本中流表项中的分组头域改为匹配域;为增强协议的扩展性从1.3版本开始用户可以根据需要自定义匹配字段;同时1.3版本中增加了优先级、计数器和Cookie字段。优先级字段表示表项在所属表中的优先级匹配冲突时以优先级高的表项为准;另外为满足更加丰富的处理方法从OpenFlow1.1开始提出了指令集的概念。在1.3版本中的组表和计量表,组表为OpenFlow交换机提供了更高级的数据包转发特性,实现组播、负载均衡、容灾备份和聚合等功能,一个组表由多个组表项(Group Entries)组成,包括组表号、组表类型、计数器和动作桶通过计量表OpenFlow交换机可以实现简单的QoS功能(比如速率限制等),还可以与每个端口队列结合实现更复杂的QoS框架,每个计量表也由多个计量表项组成包括计量表号、计量表带和计数器。

    SDN交换机

    SDN交换机的核心部件——交换芯片。
    我们说SDN数据平面架构改变了传统数据流量的处理方式,因此如何设计专门满足SDN交换设备的通用交换芯片是业界需要解决的重要问题。
    常用的交换芯片类型主要有通用的CPU、专用的集成电路芯片(Application-Specific Integrated Circuit-ASIC)、现场可编程门阵列(Field Programmable Gate Array-FPGA)和网络处理器(Network Processor-NP),各种芯片都有其各自的特点。

    提出了支持OpenFlow接口的折中方案(Table Typing Pattern-TTP)后来更名为可协商的数据平面模型(Negotiable Data-plane Model-NDM)。这种方案实质是基于现有的交换芯片在传统交换机芯片基础上增加对OpenFlow的支持。该方案被芯片厂商普遍接受,加快了交换芯片在业界的落地。

    目前SDN的交换机主要包括两大类:SDN物理(硬件)交换机和SDN的虚拟(软件)交换机。SDN物理(硬件)交换机大多数为支持OpenFlow的混合模式交换机,也就是同时支持SDN处理模式和传统的二三层的处理模式。SDN的虚拟(软件)交换机具有成本低和配置灵活但是性能上跟硬件交换机还由很大差距,只能满足中小规模网络要求。
    SDN的硬件交换机可以分为两类。(还由一些基于NP的SDN交换机和基于FPGA的SDN交换机等)
    1.基于ASIC芯片的SDN品牌交换机(主要是以Cisc、NEC、Juniper、HPE、Arista等公司的产品)

    2.基于ASIC芯片的SDN白盒交换机(代表厂商BigSwitc、盛科、Pica8等)
    SDN的软件交换机主要是Open vSwitch(OVS)以及Cisco的Nexus 1000V为主的一些虚拟交换机。
    下面介绍交换机的主要参数

    背板带宽是机架式的交换机的一个技术参数对盒式交换机来说一般没有背版带宽的概念,背板带宽从几个Gbps到几百Gbps不等。对于线速转发的交换机背板的宽带计算方法:端口数*相应端口的速率(如果是全双工需要乘以2)。

    38参数

    39另外参数

    下一篇:南向接口


    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2924854739@qq.com

    文章标题:数据平面

    本文作者:DROBP

    发布时间:2019-08-02, 21:40:49

    最后更新:2019-08-07, 17:49:39

    原始链接:https://DROBP.github.io/2019/08/02/数据平面/

    版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

    目录
    ×

    喜欢就点赞,疼爱就打赏