SDN入门小结

1、SDN架构图

SDN特征:
1)  控制与转发分离。转发平面由受控转发的设备组成,转发方式以及业务逻辑由运行在分离出去的控制面上的控制应用所控制。

2)  控制平面与转发平面之间的开放接口。sDN为控制平面提供开放的网络操作接口,也称为可编程接口。通过这种方式,控制应用只需要关注自身逻辑,而不需要关注底层更多的实现细节。

3)  逻辑上的集中控制。逻辑上集中的控制平面可以控制多个转发面设备,也就是控制整个物理网络,因而可以获得全局的网络状态视图,并根据该全局网络状态视图实现对网络的优化控制。

2、Openflow架构

这是最基本的OpenFlow网络架构图,主要分为三个部分,控制器(controller)、OpenFlow交换机(OpenFlow switch),终端(terminal)。

3、Openflow交换机

OpenFlow交换机由流表、安全通道和OpenFlow协议三部分组成。

 OpenFlow交换机逻辑结构图如下:

3.1流表
在交换机中的每个流表中包含的一组流表项,用来匹配数据包,每组流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口。流表项由头域(匹配字段)、计数器和操作(指令)组成;其中头域是个十元组,是流表项的标识;计数器用来计数流表项的统计数据;操作标明了与该流表项匹配的数据包应该执行的操作。
3.2 流表项
流表项包含:

匹配字段:对数据包匹配。包括入口端口和数据包匹配,以及由前一个表指定的可选的元数据。

优先级:流表项的匹配次序。

计数器:更新匹配数据包的计数。OpenFlow流表的计数器可以针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护,用于统计数据流量的相关信息。例如:针对每张流表,统计当前活动的表项数、数据包查询次数、数据包匹配次数等;针对每个数据流,统计接收到的数据包数、字节数、数据流持续时间等;针对每个设备端口,除统计接收到的数据包数、发送数据包数、接收字节数、发送字节数等指标之外,还可以对各种错误发生的次数进行统计;针对每个队列,统计发送的数据包数和字节数,还有发送时的溢出(Overrun)错误次数等。

流表项可能包含数据包转发到某个端口。这通常是一个物理端口,但它也可能是由交换机定义的一个逻辑端口或通过本规范中定义的一个保留的端口。保留端口可以指定通用的转发行为,如发送到控制器、泛洪、或使用非OpenFlow的方法转发。如“普通”交换机转发处理;而交换机定义的逻辑端口,可以指定链路汇聚组,隧道或环回接口。

3.3 指令
指令存在于流表项中,描述报文匹配流表项时OpenFlow的处理方式。指令可以修改流水线处理,如指导包匹配另一个流表,也可以包含一系列添加到行动集的行动,还可以包含一系列立即应用到数据包的行动。
3.4 安全通道
连接OpenFlow交换机到控制器的接口。控制器通过这个接口控制和管理交换机,同时控制器接收来自交换机的事件并向交换机发送数据包。交换机和控制器通过安全通道进行通信,而且所有的信息必须按照OpenFlow协议规定的格式来执行。

3.5 行动(动作)
行动描述了数据包转发,数据包的修改和组表处理。流水线处理的指令允许数据包被发送到后面的表进行进一步的处理,并允许信息以元数据的形式在表之间进行通信。当与一个匹配的流表项相关联的指令集没有指向下一个表的时候,表流水线处理停止,这时该数据包通常被修改和转发。流表项相关的行动,也可直接把数据包发送到组,进行额外的处理。

OpenFlow流表的动作用于指示交换机在收到匹配的数据包后应该如何对其进行处理。与传统交换机转发表只需要指明数据包的转发出端口不同,OpenFlow交换机因为缺少控制平面的能力,所以对匹配数据包的处理不仅仅是简单的转发操作,而需要用动作来详细说明交换机将要对数据包所做的处理。

OpenFlow交换机的每个流表项可以对应有零至多个动作,如果没有定义转发动作,那么与流表项包头域匹配的数据包将被默认丢弃。统一流表项中的多个动作的执行可以具有优先级,但是在数据包的发送上并不保证其顺序。另外,如果流表项中出现有OpenFlow交换机不支持的参数值,交换机将向控制器返回相应的出错信息。

动作分为必备动作(Required Actions)和可选动作(Optional Actions)两种类型。其中,必备动作是需要由所有的OpenFlow交换机默认支持的,而可选动作则需要由交换机告知控制器它所能支持的动作种类。

OpenFlow流表动作的列表如下图所示。


 

3.6 行动集
行动集与数据包相关的行动集合,在报文被每个表处理的时候这些行动可以累加,在指令集指导报文退出处理流水线的时候这些行动会被执行。

3.7 组
组表示一组泛洪的指令集,以及更复杂的转发(如多路径,快速重路由,链路聚合)。作为间接的通用层,组也使多个流表项转发到一个单一的标识符(例如一个共同的下一跳的IP转发)。这种抽象的行为使相同的输出行动非常有效。 

3.8 组表
组表包含组表项,每个组表项包含了一系列依赖于组类型的特定规范的行动存储段。一个或多个操作的行动用来使数据包发送到该组。

3.9 计量
一个交换机元件,可以测量和控制数据包的速度。当数据包速率或通过计量的字节速率超过预定义的阈值时,计量触发计量带。如果计量带丢弃数据包的功能,它则被称为一个速率限制器。
 

4.OpenFlow 交换机具体的实现过程可以通过下图得到直观的展示。

具体过程是:流水线处理总是从第一个流表(即流表0)开始,数据包首先与流表0的流表项匹配,其他流表根据第一个流表的匹配结果来调用。当交换机接收到数据包时,开始查询流表中的第一个流表,当数据包开始成功匹配到一条流表项后,会首先更新该流表项对应的统计数据(如成功匹配数据包的总数及总字节数等),然后根据流表项中的指令进行相应的操作(如跳转至后续的流表继续处理,修改或者立即执行数据包对应的动作集等)。当数据包已经处于最后一个流表时,其对应的动作集中的所有动作将被执行,包括转发至某一端口、修改数据包某一字段、丢弃数据包等。为了处理未匹配的数据包,在Openflow1.3.0以后的版本,提出在每个表的最后添加一个Table-miss表项,它指定在流表中如何处理与其他流表项未匹配的数据包,比如数据包发送到控制器,丢弃数据包或直接将包扔到后续的表。

猜你喜欢

转载自blog.csdn.net/dwj_daiwenjie/article/details/87385135
SDN