SDN 入门介绍

Posted Itzel_yuki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDN 入门介绍相关的知识,希望对你有一定的参考价值。

一、 SDN技术概述
1、ONF SDN架构定义
 


2、SDN架构特征分析
集中控制:逻辑上集中的控制能够支持获得网络资源的全局信息,并根据业务需求进行资源的全局调配和优化,例如流量工程、负载均衡等。
开放接口:通过开放的南向接口和北向接口,能够实现应用和网络的无缝集成,使得应用能告知网络如何运行才能更好地满足应用的需求,比如业务的宽带、时延需求,计费对路由的影响等。
网络虚拟化:通过南向接口的统一和开放,屏蔽了底层物理转发设备的差异,实现了底层网络对上层应用的透明化。


3、SDN核心技术

SDN的架构可以与人的身体做类比:

控制层相当于人的大脑,转发层相当于人的四肢,应用层对应于各种创新的想法,大脑在想法的驱动下对四肢进行指挥以达到想要的效果;南向接口和北向接口则分别相当于人体内的神经和脑电波,负责进行上传下达。

以上类比中可以看到,作为大脑的控制层,其控制逻辑一定要周全,能够根据全局的网络视图做出合理的资源调配决策,作为四肢的转发层,其处理性能一定要高,而其本身可以是不做任何思考的“傻”设备。

遵循SDN的层次架构,SDN核心技术体系如图:


 
(1)交换机及南向接口技术
SDN交换机设备中的各个表项并非由设备自身根据周边的网络环境在本地自行生成的,而是由远程控制器统一下发的,因此各种复杂的控制逻辑都无需在SDN交换机中实现。SDN交换机可以忽略控制逻辑的实现,全力关注基于表项的数据处理,而数据处理的性能也就成为评价SDN交换机优劣的最关键指标,因此,很多高性能转发技术被提出,例如基于多张表以流水线方式进行高速处理的技术。
当前最著名的南向接口协议莫过于ONF的OpenFlow协议。OpenFlow解决了如何由控制层把SDN交换机所需的用于和数据流做匹配的表项下发给转发层设备的问题。


(2)控制器及北向接口技术
SDN控制器,业界有很多基于Openflow控制协议的开源的控制器实现,如NOX、Floodlightt等,都能够实现链路发现、拓扑管理、策略制定、表项下发等支持SDN网络运行的基本操作。控制器是SDN网络的核心,其可能存在负载过大、单点失效等问题。
SDN北向接口是通过控制器向上层业务应用开放的接口,其目标是使得业务能够便利地调用底层的网络资源和能力。北向接口缺少业界公认的标准,成为当前SDN领域竞争的焦点。




二、SDN交换机及南向接口技术
1、OpenFlow交换机规范
(1)OpenFlow1.0规范
  OpenFlow v1.0的核心组成包括三个部分:流表、安全通道和OpenFlow协议。流表负责数据包的高速查询和转发;此外交换机还需要通过一个安全通道与外部的控制器进行通信,这个安全通道上传输的是OpenFlow协议,它将负责传递控制器和交换机之间的管理和控制信息。
1.流表
 

包括三个部分,用于数据包匹配的包头域(Header Fields),用于统计匹配数据包个数的计数器(Counter),用于展示匹配的数据包如何处理的动作(Action)。


包头域:在v1.0中有12个元组,如图:

  包头域中用于和交换机接收到的数据包进行匹配的元组涵盖了ISO网络模型中的第二层到第四层的网络配置信息。每一个元组中的数值可以是一个确定的值或者是“ANY”以支持对任意值的匹配。

计数器:OpenFlow流表的计数器可以针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护,用于统计数据流量的相关信息。

动作:OpenFlow流表的动作用于指示交换机在收到匹配的数据包后应该如何对其进行处理。每个流表项可以对应有零个至多个动作,如果没有定义转发动作,则与之匹配的数据包将默认丢弃。
动作分为必备动作和可选动作,必备动作是所有OpenFlow交换机默认支持的,而可选动作则需要由交换机告知控制器它所能支持的动作种类。OpenFlow动作列表如下:
 
 

OpenFlow交换机在接收到网络数据包后,对其开展的处理流程如下:


 
当OpenFlow交换机收到一个数据包时,将按照流表的优先级依次匹配其本地的流表表项,并以发生具有最高优先级的匹配表项作为匹配结果,并根据相应的动作对数据包进行操作,同时一旦匹配成功,对应的计数器将更新,如果没有找到匹配的表项,,则将数据包转发给控制器。


OpenFlow交换机对数据包头的解析和匹配过程的细节操作如图:


 
首先初始化包头,如果以太网类型为0x8100,即数据包是VLAN包,则设置包头的VLAN  ID和PCP;如果以太网类型为0x0806,则为ARP包,继续设置源IP地址和目的IP地址;如果以太网类型为0x0800,即为IP包,则继续设置IP源、目的地址,协议和TOS位。。。


2.安全通道

OpenFlow 1.0要求协议传输通道必须是安全的,并规定通道需要采用TLS(早期的SSL)技术。


3.OpenFlow协议

OpenFlow协议是用来描述控制器和OpenFlow交换机之间交互所需要的消息的标准接口。OpenFlow协议支持三种消息类型,说明如图:
 
 

 



三、SDN控制器及北向接口技术
1、控制器核心技术
控制器的功能:链路发现、拓扑管理、策略制定、表项下发;
其中链路发现和拓扑管理是控制器利用南向接口的上行通道对底层交换设备上报信息进行统一监控和统计的技术;

策略制定和表项下发则是控制器利用南向接口的下行通道对网络设备实施统一控制的技术。


(1)链路发现和拓扑管理
SDN控制器主要使用LLDP(Link Layer Discovery Protocol,链路层发现协议)作为链路发现协议,该协议提供了一种标准的链路发现方式。
  当网络中只存在Openflow交换机:
控制器在执行链路发现的过程中,会首先通过一个Packet_out消息向所有与之相连接的交换机发送LLDP数据包,该消息命令交换机将LLDP数据包发送给所有端口。一旦交换机接收到Packet_out消息,就会把LLDP数据包通过其所有的端口发送给与之相连的设备。如果其相连的交换机是Openflow交换机,那么该交换机将执行流表查询操作,因为交换机中没有专门流表项用于处理LLDP消息,所以它将通过一个Packet_in消息将数据包发送给控制器。控制器在接收到Packet_in消息后,会对数据包进行分析并在其保存的链路发现表中创建两台交换机之间的连接记录。这样控制器就能够创建出完整的网络拓扑图(该网络中只存在一台控制器,该控制器能够获得与之相连的所有交换机的网络拓扑图)。
基于LLDP消息的方法只能对与控制器直连的Openflow交换机进行链路发现,如果网络中存在其他非Openflow交换机,这样就需要额外的链路发现手段。与链路中全部都是Openflow交换机相比,控制器会要求交换机发出广播包,广播包被发往除了与控制器相连的端口之外的所有端口,如果存在非Openflow交换机,则广播包将从这个交换机一端进入并穿越,进而达到与之相连的Openflow交换机。



(2)策略制定和表项下发

控制器制定的流表项中包含了传统网络的2-4层网络信息。
1、针对二层网络数据的转发:
传统网络:MAC地址学习和基于MAC地址的数据包转发。
SDN网路:MAC地址学习已经在控制器的链路发现过程中实现,因此,只需要控制器以目的MAC地址为依据将对应的交换机端口号写入相应的交换机流表项中即可。


2、针对三层网络数据的转发:
传统网络:“一次路由多次转发”机制
交换设备在接收到来自源IP的数据包后,查询路由表确定到达目的IP的路由,并通过一定的识别触发机制确立和记录源MAC地址与目的MAC地址以及转发端口的对应关系,后继在源和目的之间的通信由二层模块 直接处理。图解如下:
  (1)A知道B的IP地址,即目的IP地址,A根据子网掩码获得网络地址,判断B与自己是否处于同一网段。如果不在同一网段,则封装该网关的MAC地址。
(2)当封装好的数据帧到达交换机时,交换机根据帧的目的MAC查找转发表,发现目的MAC是自己的MAC,则将帧交给三层处理。
(3)三层设备根据目的IP查找路由表,找到转发出口以及其MAC地址(有可能是目的主机的MAC,也有可能是吓一跳的MAC),然后包这个包进行封装交给第二层并转发出去。
(4)当有了上边的一次转发后,就知道目的IP是XXX时,转发的端口是多少,目的MAC是多少,三层交换机会把这些信息写入一个表中,下次转发时直接查表即可,不用经过三层进行处理,直接由二层转发出去。
SDN网络:控制器利用相关的路由算法计算出源和目的之间的路由信息,并以IP地址、MAC地址为依据将对应的交换机转发端口号写入相应交换机的流表项中。


3、针对四层网络设备的转发:
主要问题:需要区分每个数据包中包含哪些应用协议(如HTTP、FTP等)的TCP/UDP端口号信息。
传统网络:需要维护一个连接表用于保存与业务应用服务器相对应的源IP、源TCP/UDP端口号信息。
SDN网络:四层数据解析将在控制器中完成,并以TCP/UDP端口号、IP地址和MAC地址为依据将对应的交换机转发端口写入交换机的流表项中。

以上是关于SDN 入门介绍的主要内容,如果未能解决你的问题,请参考以下文章

SDN南向接口协议是啥?

云原生全栈可编程的下一代SDN解析与实践 丨传统SDN架构演进

SDN的南向接口(Southbound interface)与北向接口是什么

SDN第二次作业

SDN第四次作业

SDN概述