软件定义网络(SDN)LAFILE_楊過2016.06.27报告纲要报告目的:主要介绍关于SDN的一些概念,特别是帮助大家理解对SDN核心技术方面概念的理解,并通过实验对SDN系统架构加深印象。1.SDN2.OpenFlow3.Of-CONFIG4.NETCONF/YANG5.OpenFlow交换机及OVS6.实验及结果演示7.报告总结8.参考文献9.致谢1.SDN1.1什么是SDN?1.2SDN产生的原因是什么?1.3与传统网相比SDN的优点是什么?1.4SDN的核心技术是什么?1.1什么是SDNSDN(softwaredefinednetworking,软件定义网络)是一种新兴的基于软件的网络架构及技术,其最大的特点就在于具有松耦合的控制平面与数据平面,支持集中化的网络状态控制(如图1.1.1),实现底层网络设施对上层应用的透明。图1.1.1传统网络架构与SDN架构对比1.1.1目前传统路由智能路由器:也就是智能化管理的路由器,通常具有独立的操作系统,可以由用户自行安装各种应用,自行控制带宽、自行控制在线人数、自行控制浏览网页、自行控制在线时间、同时拥有强大的USB共享功能,真正做到网络和设备的智能化管理,其网络结构如图1.1.1.1。图1.1.1.1传统三层路由设备系统图1.1.2SDN架构a控制平面,包括具有逻辑中心化和可编程的控制器,可掌握全局网络信息,方便运营商和科研人员管理配置网络和部署新协议等.b数据平面,包括哑的(dumb)交换机(与传统的二层交换机不同,专指用于转发数据的设备)。交换机仅提供简单的数据转发功能,可以快速处理匹配的数据包,适应流量日益增长的需求。c应用平面,包含着各类基于SDN的网络应用,用户无需关心底层设备的技术细节,仅通过简单的编程就能实现新应用的快速部署SDN将数据与控制相分离,分成新的体系结构,包括数据层、控制层和应用层。根据提出的SDN概念,目前有下列几种SDN体系架构(如表1.1.2.1):表1.1.2.1目前三种主要研究的SDN体系结构NFV:ETSI(EuropeanTelecommunicationsStandardsInstitute,欧洲电信标准化协会)从网络运营商角度触发提出,采用了资源虚拟化的方式,在硬件设备中建立一个网络虚拟层,负责将硬件资源虚拟化,形成虚拟计算资源、虚拟存储资源和虚拟网络资源等,运营商通过软件来管理这些虚拟资源。由于采用的是通用硬件设备,NFV降低了设备成本,减少了能耗,缩短了新网络服务的部署周期,从而适应网络运营商的发展需求。OpenDaylight:2013年4月,由思科、IBM、微软等巨头联手推出名为OpenDaylight的开源SDN项目。其目标是通过SDN的开源开发,推进业界可部署方案具体实施,其架构由设备厂商提出并得到众多IT软件厂商的支持.考虑到兼容性问题,OpenDaylight继承了SDN架构形式,同时又结合了NFV的特点。与ONF的SDN架构最大的不同在于:OpenDaylight控制器的南向接口除了支持OpenFlow协议之外,还支持NETCONF(一个全新的基于XML的网络配置协议)等配置协议和BGP(BGP可以将所有的差错控制功能交给传输协议来处理)等路由协议,并支持生产厂商的专有协议(如思科的OnePK协议)。控制平面与数据平面之间利用SDN控制数据平面接口(control-data-planeinterface,简称CDPI)进行通信,CDPI具有统一的通信标准,目前主要采用OpenFlow协议,如图1.1.3.CDPI负责将转发规则从网络操作系统发送到网络设备,它要求能够匹配不同厂商和型号的设备,而并不影响控制层及以上的逻辑控制平面与应用平面之间由SDN北向接口(northboundinterface,简称NBI)负责通信,NBI允许用户按实际需求定制开发.NBI允许第三方开发个人网络管理软件和应用,为管理人员提供更多的选择.网络抽象特性允许用户可以根据需求选择不同的网络操作系统,而并不影响物理设备的正常运行.图1.1.2.3SDN结构框图对于南向接口而言,目前主要的南向接口主要有以下几种(如表1.1.2.2):表1.1.2.2目前几种主流南向接口1.2SDN产生的原因1.增加了运营商定制优化网络的难度。2.科研人员无法在真实环境中规模部署新协议。3.同时,互联网流量的快速增长(预计到2018年,全球流量将达到1.6×1021字节),用户对流量的需求不断扩大。4.各种新型服务不断出现,增加了网络运维成本。传统网络结构存在的问题:封闭的网络设备内置了过多的复杂协议。1.3与传统网相比SDN的优点第一,设备硬件统一化,硬件只关注转发和存储能力,与业务特性解耦,可以采用相对廉价的商用的架构来实现。第二,网络的智能性全部由软件实现,网络设备的种类及功能由软件配置而定,对网络的操作控制和运行由服务器作为网络操作系统(NOS)来完成。SDN通过消除应用和特定网络细节——比如端口和地址之间的关联,使得无需花费时间和金钱重新编写应用和人工配置网络设备即可升级网络的物理平面成为可能。第三,对业务响应相对更快,可以定制各种网络参数,如路由、安全、策略、QoS、流量工程等,并实时配置到网络中,开通具体业务的时间将缩短。SDN本质上具有“控制和转发分离”、“设备资源虚拟化”和“通用硬件及软件可编程”三大特性,这至少带来了以下好处。1.4SDN核心技术A.交换机及南向接口技术B.控制器及北向接口技术C.应用编排和资源管理技术SDN的最终目标是服务于多样化的业务应用创新。SDN具体的系统框架图,如图1.4,图1.4SDN系统框架2.OpenFlow2.1OpenFlow是什么?2.2OpenFlow信息交互过程2.3Controller的功能2.4OpenFlow的产生对生产网络设备的影响2.1OpenFlow的含义1.OpenFlow交换机:进行数据层的转发;2.FlowVisor:对网络进行虚拟化;3.Controller:对网络进行集中控制,实现控制差点功能。OpenFlow标准的名称是OpenFlowSwitchSpecification,因此它本身是一份设备规范,其中规定了作为SDN基础设施层转发设备的OpenFlow交换机的基本组件和功能要求,以及OpenFlow协议。它是实现SDN的一个方案。OpenFlow网络由:2.1.1OpenFlow1.0协议Openflow交换机中的转发表称为流表(Flowtable):包含数据包匹配特征和数据包处理方法:数据包匹配特征:一层:交换机入端口(IngressPort)二层:源MAC地址(Ethersource)、目的MAC地址(Etherdst)、以太网类型(EtherType)、VLAN标签(VLANid)、VLAN优先级(VLANpriority)。三层:源IP(IPsrc)、目的IP(IPdst)、IP协议字段(IPproto)、IP服务类型(IPToSbits)四层:TCP/UDP源端口号(TCP/UDPsrcport)、TCP/UDP目的端口号(TCP/UDPdstport)数据包处理方法:转发修改包头2.1.2OPENFL0W协议演进1.0版本:中只有单流表,为了避免单流表膨胀,1.1版本:采用多级流表,以流水线的形式提高数据包匹配效率。由于OpenFlow将所有的控制协议都集中到控制器中,导致控制器成为众矢之的,为了提高安全性和健壮性,1.2版本引进了多控制器的概念。1.3和1.4版本:他们的匹配流程一致,与之前的版本相比多了一个table-miss流表项。(当报文匹配失败了,如果存在无匹配流表项(tablemiss)就按照该表项执行指令,一般是将报文转发给控制器、丢弃或转发给其他流表。如果没有tablemiss表项则默认丢弃该报文。)1.5版本:为了处理多种类型的数据包,添加了数据包类型识别流程。除此之外1.5还引进了egresstable,原先由控制器指定output的相关操作,现在将这一功能下放到交换机中,一方面提高数据包的处理效率,另一方面改进OpenFlow“最初的偏激”(其发展过程如图2.1.2)。图2.1.2OpenFlow协议发展历程2.2OpenFlow信息交互过程1、Controller‐to‐Switch:控制器至交换机消息此类消息由控制器主动发出Features用来获取交换机特性Configuration用来配置Openflow交换机Modify‐State用来修改交换机状态(修改流表)Read‐Stats用来读取交换机状态Send‐Packet用来发送数据包Barrier阻塞消息Openflow消息总共分为三大类:2、Asynchronous:异步消息此类消息由交换机主动发出Packet‐in用来告知控制器交换机接收到数据包Flow‐Removed用来告知控制器交换机流表被删除Port‐Status用来告知控制器交换机端口状态更新Error用来告知控制器交换机发生错误3、Symmetric:对称消息,可以由控制器或交换机主动发起Hello用来建立Openflow连接Echo用来确认交换机与控制器之间的连接状态Vendor厂商自定义消息连接建立:控制器与OpenFlow交换机建立TLS(TransportLayerSecurity,安全传输协议)隧道后,隧道中传送的都是控制协议消息,隧道中的流量转发无需查询交换机中的流表。当安全隧道建立起来之后,双方必须首先发送HELLO消息给对方,用以确定,双方都可支持的最低版本进行通信。连接中断:OpenFlow交换机与控制器之间连接发生异常,OpenFlow交换机将连接到备份的控制器,若仍然连接失败将进入紧急模式,并重置所有的IP连接。这种情况下,所有包只跟紧急模式的表进行匹配,其他非紧急正常流表将全部从流表中删除(交换机启动时默认进入紧急模式)。加密:控制器与OpenFlow交换机之间采用TLS连接加密。每个OpenFlow交换机至少需要两个证书,一个用来认证控制器,另一个用来向控制器发送认证。生成树支持:OpenFlow交换机支持802.1d生成树协议。流表项修改:包括,增加新的流表项、修改所有匹配流表项、修改严格匹配的流表项、删除所有匹配的流表项、删除严格匹配的流表项。OpenFlow协议的主要交互过程:2.2.1基于Openflow的SDN工作流程①主机向网络发送数据包②OF交换机流表无匹配项,通过PacketIn事件将数据包上报给控制器③控制器下发流表(或PacketOut)④数据包转发⑤同②⑥同③⑦数据包转发基于OpenFlow的SDN工作流程大概如下(如图2.2.1.1):图2.2.1.1基于OpenFlow的SDN工作流程图我们将前面讲的工作流程展开,分别介绍各个部分的具体内容。首先介绍OpenFlow交换机与controller初始化连接过程:1.建立OpenFlow连接:控制器与交换机互相发送Hello消息(如图2.1.1.2)。Hello消息中只包含OpenflowHeader,OpenflowHeader中的version字段为发送方所支持的最高版本Openflow协议,双方选取Hello消息中最低版本的协议作为通信协议。如果有一方不支持Openflow协议版本,应发送Error消息后断开连接。如果双方Openflow版本可以兼容,则Openflow连接建立成功。图2.1.1.2OpenFlow连接过程2.获取交换机特性(Features)信息:Openflow连接建立后,控制器最需要获得交换机的特性信息,交换机的特性信息包括交换机的ID(DPID),交换机缓冲区数量,交换机端口及端口属性等等(如图2.1.1.3)。控制器向交换机发送FeaturesRequest消息查询交换机特性,FeaturesRequest消息只包含Openfl