🌈个人主页:小新_-
🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
🏆所属专栏: 软件定义网络技术(SDN)与应用 欢迎订阅,持续更新中~~~
✨让小新带着你快乐的学习吧~✨
目录
一、SDN简介(了解即可)
1.1SDN产生背景
1.2 SDN的起源
1.3 SDN的发展历程
二、SDN原理
1.SDN的定义
2. SDN的体系结构
3.SDN的特征
3.1控制与转发分离
3.2网络虚拟化
3.3网络可编程化
总结:
一、SDN简介(了解即可)
1.1SDN产生背景
传统网络的层次结构是互联网取得巨大成功的关键。但是随着网络规模的不断扩大,封闭的网络设备内置了过多的复杂协议,提高了运营商定制优化网络的难度,导致科研人员无法在真实环境中规模化部署新协议。同时,互联网流量的快速增长、用户对流量的需求不断扩大、各种新型服务的不断出现等增加了网络运维成本。
另外,经过数十年的发展,IP网络从最初满足简单Internet服务的网络,演进成能够提供涵盖文本、语音、视频等多媒体业务的融合网络。其应用领域也逐步向社会生活的各个方面渗透,影响和改变着人们的生产和生活方式。随着互联网业务的发展,网络也面临着一系列问题。
(1)设备日趋复杂。IP技术使用“打补丁”式的演进策略,使得设备的功能和业务越来越多,复杂度显著提高。
(2)管理运维复杂。当前网络在部署一个全局业务策略时,需要逐一配置每台设备。随着网络规模的扩大和新业务的引入,管理运维变得更加复杂。
(3)网络创新困难。IP网络控制面和数据面深度耦合,分布式网络控制机制使得任何一种新技术的引入都严重依赖网络设备,并需要多个网络设备同步更新,导致新技术的部署周期较长(通常需要3~5年),严重制约了网络的演进和发展。
(4)成为新业务发展的瓶颈。随着云计算业务的发展和大数据服务的兴起,传统网络技术及架构无法满足新业务所需的动态配置、按需调用、自动负载均衡等需求。
为从根本上解决上述网络问题,业界一直在探索技术方案以提升网络的灵活性,其要义是打破网络的封闭架构,提高网络的可编程能力。经过多年的技术发展,SDN应运而生。
1.2 SDN的起源
2006年,SDN 诞生于美国全球网络调研环境(Global Environmentfor Networknvestigations,GENI)项目资助的斯坦福大学的Clean Slate项目。该项目的最终目的是改变已不合时宜且难以演进和发展的现有网络基础架构。该项目试图通过一个集中式的控制器,让网络管理员可以方便地定义基于网络流的安全控制策略,并将这些安全控制策略应用到各种网络设备中,从而实现对整个网络通信的安全控制。在项目研发过程中,尼克·麦基翁(NickMcKeown)教授等人发现,如果将传统网络设备的数据转发和路由控制两个功能模块相分离,通过集中式的控制器(以标准化的接口)对各种网络设备进行管理和配置,将为网络资源的设计、管理和使用提供更多的可能性,从而更容易推动网络的革新与发展。于是,其提出了OpenFlow和SDN的概念,即将网络中所有的网络设备视为被管理资源,并参考操作系统的原理,抽象出一个网络操作系统的概念。这样,基于网络操作系统这个平台,用户可以开发各种应用程序(Application Program,App),通过软件来定义逻辑上的网络拓扑,以满足用户对网络资源的不同需求,而无须关心底层网络的物理拓扑结构。
1.3 SDN的发展历程
从2006年开始,斯坦福大学研究生Martin Casado参与了Clean Slate项目,并着手领导了一个叫作Ethane的项目,改变难以演进和发展的网络基础架构。
在2007年的SIGCOMM会议上,Martin Casado发表了一篇名为“Ethane:Taking Control of the Enterprise”的论文,该论文引起了学术界的广泛关注。
2007年,Martin Casado联合Nick McKeown、Scott Shenker等人共同创建了一个致力于网络虚拟化技术创新的公司——Nicira。
2008年,Nick McKeown在SIGCOMM会议上发表文章“OpenFlow:Enabling Innovation in Campus Networks”,首次提出了将OpenFlow协议用于校园网络的试验创新。OpenFlow开始正式进入人们的视野,SDN呼之欲出。 2011年初,Google等企业共同成立了开放网络基金会(Open Networking Foundation,ONF),并正式提出了SDN的概念。
2013年4月,由Cisco、Juniper、Broadcom、IBM等公司主导的SDN开源控制器平台项目——OpenDaylight,引发了IT界一次巨大的轰动。OpenDaylight项目的成立对SDN技术的发展具有里程碑式的意义,它代表了传统网络芯片、设备“巨头”对网络领域开源技术方向的认可。 在2013年8月的SIGCOMM会议上,Google公司首次将其如何利用SDN技术解决数据中心之间流量问题的方案通过论文公之于众——“B4:Experience with a Globally-Deployed Software Defined WAN”。
2014年4月,中国电信与华为联合宣布双方合作完成了全球首个运营商SDN商用部署,将SDN技术成功应用于数据中心网络。
2014年8月,中国移动与华为合作利用SDN技术完成了政企专线业务在分组传送网(Packet Transport Network,PTN)中的改造,大幅提升了运维效率及带宽利用率。同年,中国联通首次成功实现了SDN IPRAN的商用,初步实现了运维精简、业务可视、快速创新的目标。 2015年9月,中国联通发布了新一代网络架构CUBE-Net 2.0白皮书,目标是基于SDN/NFV、云和超宽带技术实现网络重构。
二、SDN原理
1.SDN的定义
SDN(Software Defined Network),中文译为软件定义网络, 是由美国斯坦福大学cleanslate研究组提出的一种新型网络创新架构。sdn是网络虚拟化的一种实现方式,具有控制面和转发面分离以及开放可编程的特点。其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。 传统网络设备紧耦合的网络框架被拆分为应用、控制、转发三层分离的架构。控制功能被转移到了服务器,上层应用、底层转发设施被抽象成多个逻辑实体
2. SDN的体系结构
为了更好地理解SDN的体系结构,先对传统网络的体系结构进行简单的阐述。
传统网络是分布式控制的结构,其特点为:
- 在传统网络中,用于协议计算的控制面和用于报文转发的数据面位于同一台设备中。
- 路由计算和拓扑变化后, 每台设备都要重新进行路由计算。
- 在传统网络中,每台设备都是独立收集网络信息、独立计算的,且只关心自己的选路
- 设备在计算路由时缺乏统一性。
- 每台设备都包含独立的控制面和数据面。
传统网络的体系结构分为管理层、控制层和数据层
管理面主要包括设备管理系统和业务管理系统。设备管理系统负责网络拓扑、设备接口、设备特性的管理,同时可以给设备下发配置脚本;业务管理系统用于对业务进行管理,如业务性能监控、业务告警管理等。
控制面负责网络控制,主要功能为协议处理与计算。例如,路由协议用于路由信息的计算、路由表的生成。
数据面涉及设备根据控制面生成的指令完成用户业务的转发和处理。例如,路由器根据路由协议生成的路由表将接收的数据包从相应的端口转发出去。
根据传统网络的体系结构,可知传统网络的局限性主要表现在以下3个方面。
(1)流量路径的灵活调整能力不足。
(2)网络协议实现复杂,运维难度较大。
(3)网络新业务升级速度较慢。
造成以上局限性的主要原因如下。
(1)传统网络通常部署网管系统作为管理面,而控制面和数据面分布在每个设备上运行。
(2)流量路径的调整需要通过在网元上配置流量策略来实现,但对大型网络的流量路径进行调整仅烦琐还很容易出现故障;当然,可以通过部署终端设备(Terminal Equipment, TE)隧道来实现流量距径调整,但由于TE隧道具有复杂性,因此对于维护人员的技术要求很高。
(3)传统网络协议较复杂,且在不断增加。
(4)设备厂家除标准协议外都有一些私有协议扩展,不但设备操作命令繁多,而且不同厂家设备操作界面的差异较大,运维复杂。
(5)传统网络中由于设备的控制面是封闭式的,且不同厂家的设备实现机制可能有所不同,所以新功能的部署可能周期较长;且如果需要对设备软件进行升级,则需要在每台设备上进行操作,大大降低了工作效率。
SDN的体系结构是对传统网络的体系结构的一次重构,由原来分布式控制的网络结构重构为集中控制的网络结构。另外,SDN 的体系结构以软件应用为主导进行数据转发,而不再以协议控制的各种网络设备为主导进行数据转发。SDN的体系结构颠覆了OSI 7层的体系构,将网络划分为3层,即用户的应用接入层、设备的网络控制层和基础转发设备层。
针对不同的需求,许多组织提出了相应的SDN参考架构。SDN架构最先由ONF 提出并已经成为学术界和产业界普遍认可的架构。除此之外,欧洲电信标准组织(EuropeaTelecommunications Standards Institute,ETSI)提出的NFV架构随之发展起来,该体结构主要针对运营商网络,并得到了业界的支持。各大设备厂商和软件公司共同提出OpenDaylight,目的是具体实现SDN的体系结构,以便用于实际部署。
ONF 最初在白皮书中提到了SDN的体系结构,并于2013年年底发布了最新版本,其体系结构如图所示。SDN的体系结构由下到上(或称由南向北)分为数据面、控制面和应用面。数据面与控制面之间利用 SDN控制数居面接口(Control-Data-PlaneInterface,CDPI)进行通信,CDPI具有统一的通信标准,目前主要采用OpenFlow。控制面与应用面之间由SDN北向接口(Northbound Interface,NBI)负责通信,NBI允许用户按实际需求定制开发。
3.SDN的特征
整个SDN体系结构的三个层面通过管理系统实现控制,不同层面遵守不同的协议并实现不同的控制方式和功能。SDN的主要特点为控制与转发分离、网络虚拟化、网络可编程化
3.1控制与转发分离
ONF定义的SDN的体系结构共由4个平面组成,即数据面、控制面、应用面以及右侧的控制管理面,各平面之间使用不同的接口协议进行交互。
SDN的核心思想就是要分离控制面与数据面,并使用集中式的控制器实现网络的可编程性。控制器通过北向接口协议和南向接口协议分别与上层应用和下层转发设备实现交互。正是这种集中式控制和数控分离(解耦)的特点使SDN具有强大的可编程能力,这种强大的可编程能力使网络能够真正地被软件所定义,达到简化网络运维、灵活管理调度的目标。同时,为了使SDN能够实现大规模的部署,需要通过东、西向接口协议支持多控制器间的协同。
原理:
在深入理解SDN的控制面与数据面分离之前,首先对传统网络设备的控制面与数据面的一体性进行简要说明,以传统网络设备的路由器为例。路由器工作在OSI7层体系结构中的第3层,也就是网络层,其主要任务是接收来源于一个网络接口的数据包,根据这个数据包中所含的目的地址,决定转发到的下一个目的地址。路由器中时刻维持着一张路由表,所有数据包的发送和转发都通过查找路由表来实现。这个路由表可以静态配置,也可以通过动态路由协议产生。
路由器物理层从路由器的一个端口收到一个报文,发送到数据链路层。数据链路层去掉链路层封装,根据报文的协议域将其发送到网络层。网络层先看报文是否为发送给本机的,若是则去掉网络层封装,发送给上层。若不是,则根据报文的目的地址查找路由表,若找到路由则将报文发送相应端日的数据链路层,数据链路层封装后,发送报文;若找不到路由,则将报文丢弃。路由器的原理结构如图2-3所示,可以看出,路由器的路由选择就是指控制面,分组转发就是指数据面,这两个平面都集成在路由器上。
从路由器的原理结构中可以看出,在传统网络设备中,控制面和数据面虽然在物理距离上非常近,但它们实际上是相互分离的,并执行各自不同的功能,这一点为SDN的控制面与数据面分离的可行性奠定了基础。
SDN控制面一般由一个或多个SDN控制器组成,是网络的“大脑”。SDN控制器具有举足轻重的地位,它是连接底层网络交换设备与上层应用的“桥梁”。一方面,SDN控制器通过南向接口协议对底层网络交换设备进行集中管理、状态监测、转发决策以处理和调度数据面的流量;另一方面,SDN控制器通过北向接口协议向上层应用开放多个层次的可编程能力,允许网络用户根据特定的应用场景灵活地制定各种网络策略。
目前已经实现的SDN控制器非常多,有开源的控制器,也有商用的控制器,不同的SDN控制器有不同的架构和功能,下面来看一下典型的SDN控制器的架构。如图2-4所示,该架构分成6个层,包括南向接口层、抽象逻辑层、基础网络层、内置应用层、北向接口层和配置管理层。
(1)南向接口层主要提供对各种南向接口协议的支持,如OpenFlow等标准协议,SDN控制器通过南向接口层的通道实现对底层网络的管理。
(2)抽象逻辑层的主要作用是将服务抽象出来,实现各种通信协议的适配,为各模块和应用提供一致的服务。
(3)基础网络层在任何控制器中都是必不可少的。这里的模块包括控制器内部的实现逻辑,如拓扑管理,链路管理等,也包含一些·底层的网络实现逻辑。
(4)内置应用层提供基础功能包,如图所示
(5)北向接口层中的控制器实现了REST API,或者嵌入式的API,供上层应用调用
(6)配置管理层提供了控制器服务管理、集群管理和图形化界面,如ODL控制器提供了模块的启用删功能
数据控制分离是SDN的主要特征之一。SDN提出将各个设备的管理系统(控制平面)从设备中抽取出来,通过软件统一地进行定义,而网络设备专门地进行数据通信工作(转发平面)。
SDN的数据面负责数据处理、转发和状态收集等。其核心设备为交换机,可以是物理文换机,也可以是虚拟交换机。不同于传统网络转发设备,应用于SDN的转发设备将数据面与控制面完全分离,所有数据包的控制策略由远端的控制器通过南向接口协议下发,网络的配置管理同样由控制器完成,大大提高了网络管控的效率。交换设备只保留数据面,专注于数据包的高速转发,降低了交换设备的复杂度。
3.2网络虚拟化
SDN作为-种新型网络范式,采用控制面和数据面分离的架构,通过逻辑上集中的控制器,以标准化接口对底层转发设备进行管理,使得控制面和数据面能够独立演进,有助于解决网络僵化、难以快速部署新业务等问题,带来传统网络架构所不具备的许多优势,如网络控制直接可编程、允许管理员动态调整网络流量以满足变化的需求、借助全局网络视图实现细粒度路由策略部署等
SDN网络切片能够充分发挥SDN和传统网络的组合优势,支持网络资源的优化调度和高效利用,能实现灵活组网,近年来受到学术界和工业界的广泛关注。基于SDN实现的网络虚拟化被视为第五代移动通信技术( 5G )的重使能技术,能够为端到端切片提供可行的技术方案,包括视频、音频等在内的各种类型的服务能够运行在隔离的切片上,在满足不同特征需求的同时,提升服务质量和网络整体性能
SDN网络虚拟化主要表现在以下3个方面。
(1)基于代理的虚拟化。
FlowVisor(以下简称 FV)是基于 OpenFlow 的网络虚拟化管理平台,部署在多个OpenFlow 控制器和交换机之间,成为两者间的透明代理,允许多个逻辑网络共享底层物理网络。 Flowvisor是使用Java语言编写的建立在OpenFlow之上的网络虚拟化平台,用来在交换机和多个控制器之间传输透明代理proxy ,可以将物理网络分成多个逻辑网络,从而实现开放软件定义网络(SDN),是一个特殊的OpenFlow控制器,已经被部署在很多生产环境中,如从2009年开始应用于斯坦福大学的校园网络
FlowVisor是建立在OpenFlow之上的网络虚拟化工具,它可以将物理网络划分成多个逻辑网络,从而实现虚网划分。它为管理员提供了通过定义流规则,而不是调整路由器和交换机配置的方式来管理网络。正如管理程序依赖于标准x86指令来虚拟化服务器一样,FlowVisor使用标准OpenFlow指令集来管理OpenFlow交换机,这些指令设置了低级别规则,比如如何基于数据包表头的特点来转发数据包。 分类器用于记录每个物理设备的端口、带宽等信息,切片器用于维护与控制器连接的OpenFlow 会话,流空间则存储着虚拟网络切片策略。其核心是上行消息的映射和下行消息的过滤。当数据包从交换机上传给控制器时,FV通过匹配切片策略对数据包来源进行分析,进而将该数据包交给相应的控制器处理。当控制器下发OpenFlow 消息给交换机时,FV根据策略对 OpenFlow 消息进行拦截、修改和转发等操作,这样控制器就只能管理被允许控制的流,而不知道其管理的网络被FV切片。
FlowVisor能够与多个控制器连接使得每个控制器控制一个虚网,保证各虚网相互隔离。 FlowVisor的设计有如下几个原则:(a) FlowVisor对控制器和交换机而言是透明的,它们都感知不到FlowVisor的存在;(b)各个虚网之间是隔离的,即使在广播条件下各个虚网的流量也必须实现隔离;(c)虚网划分策略是丰富且可扩展的,由于当前网络虚拟化的技术还不成熟,因此划分虚网的策略需要是灵活的、模块化的且可扩展的。
目前虚网划分范围涵盖了物理层、数据链路层、网络层和传输层的协议字段,以数据包的12元组作为划分依据,按照流的思想将网络资源进行合理分配,以达到限定当前切片内数据流量类型的目的。一般对于某个特殊的应用,可以通过指定源/目的IP地址、源/目的MAC地址或者TCP端口信息来把数据包划分到一个切片内。
FlowVisor是一个特殊的OpenFlow控制器,所有OpenFlow消息都将透过FlowVisor进行传送。FlowVisor会根据配置策略对OpenFlow消息进行拦截、修改、转发等操作。这样,OpenFlow控制器就只控制其被允许控制的流,并不知道其所管理的网络被FlowVisor进行过分片操作。相似地,从交换机发出的消息经过FlowVisor也只会被发送到相应的控制器。
FlowVisor主要由FVClassifier、FVSlicer和FlowSpace数据库三部分组成。
FVClassifier用于维护与物理OpenFlow交换设备的连接,处理IO请求并记录每个物理设备的端口、性能等信息,每个FVClassifier对应一个OpenFlow交换设备。FVSlicer用于维护与控制器的连接,管理OpenFlow会话并对控制器下发的信令进行处理。当流从一个物理的OpenFlow交换设备到达FlowSpace后,FlowSpace根据数据库中切片规则,把OF消息交给本切片内的FVSlicer发送给连接的控制器。
FlowVisor的核心主要是对上行消息的映射和对下行信令的过滤。如图1所示,控制器和交换机与FlowVisor的所有联系都通过Poll Loop来交互,交换机交给控制器的数据包通过FlowVisor的OFSwitchAcceptor模块接收后,FVClassifier对数据包的来源进行分析,再连接到FlowVisor中的数据库与Flowspace进行匹配,从而决定此数据包应该交由哪个控制器来处理。同理,控制器下发给交换机的数据包会通过相反的过程到达交换机。
FV通过划分流空间区分不同虚拟网络流量,直接根据流量特征识别其所属切片,流空间可以看作所有OpenFlow 协议字段构成的一个完整匹配空间。 FV提供包括带宽、拓扑、CPU、控制信道在内的各种隔离机制,将切片流量映射到不同优先级队列中以实现带宽隔离,改写汇报端口信息的 OpenFlow 报文以实现拓扑隔离,限制交换机和对应切片控制器之间各类消息的传输速率以实现CPU和控制信道隔离。FV允许递归嵌套,形成层次结构,其工作示例如图2-8所示。根据切片策略,FV1创建的虚拟网络负责转发两台交换机上端口号为443的HTTPS数据流。
OpenVirteX(以下简称OVX)是onlab开发的一个网络虚拟化平台,可以实现多租户的网络虚拟化。对于租户而言,需要在OVX上注册,申请资源,配置自己的网络,指定自己的控制器。剩下的工作就由OVX完成了。 OVX可以根据租户的需求,将租户的网络拓扑映射到具体的物理拓扑上,完成网络的联通。对于租户而言,看到的是一个虚拟的网络,无法看到真实的物理拓扑,也不需要关心,即租户“认为”得到了一个属于自己的真实网络。而OVX的位置相当于一个介于租户控制器和交换机之间的转换平台。面对租户,OVX就是一个物理的网络,而面对交换机,OVX就是控制器。
网络虚拟化允许多租户占用同一个网络基础设施,同时允许租户对其网络的控制能力,对于租户而言,感觉上是自己控制了整个网络。OVX通过使租户能够获取到自己的虚拟拓扑和全网的地址空间来实现网络虚拟化。前者可以允许租户自定义网络拓扑,后者则是用于隔离不同租户的流量,防止冲突。
OpenVirteX(以下简称OVX)同样是作为代理存在的网络虚拟化管理平台,实现地址虚拟化和拓扑虚拟化。地址虚拟化能够为切片控制器提供完整的地址空间,拓扑虚拟化允许用户自定义网络拓扑。 OVX利用全局映射表存储底层拓扑和虚拟拓朴基本网络组件(交换机、端口、链路、地址等)的对应关系,在进行底层物理拓扑发现的同时,根据映射模拟的链接层发现协议处理过程,向控制器提供切片拓扑。
OVX分为以下几个主要的部分:
(1)面向南向物理基础设施的部分,管理了datapath到OVX之间的OpenFlow通道,并建立和维持了一系列数据结构,用于描述物理基础网络。
(2)面向北向租户控制器的部分,向租户控制器提供由OVX Swicth等组成的虚拟网络,并维护好OVX到各个租户控制器的OpenFlow通道。
(3)Global maps则保存了物理设施到OVX Network的component之间的映射关系,完成Physical Network到OVX Network之间的桥接路由(其实就是映射)。
(4)JSON的API用于配置和获取系统的信息。
OVX作为一个代理,存在于租户的控制器和底层网络之间。对于租户而言,OVX通过修改、重写OpenFlow报文来实现租户控制器与租户租用的物理网元之间的通信。 支持OpenFlow的可编程虚拟网络,从而使得租户可以指定自己的控制器来控制器网络。OVX是透明的,对于租户而言,OVX是一个底层网络,而对于底层网络而言,OVX是一个控制器。 在OVX中,无论物理的还是虚拟的网络,都是由交换机、端口、链路等基础的对象组成的。对于租户而言,他们面对的虚拟的交换机,本质上和真实的交换机没有差别。全局映射表(Global map)描述了虚拟交换机和物理交换机之间的n:1的映射关系,在这里的映射实现上是OVX Switch和Physical Switch之间的映射,本质上是租户侧看到的虚拟交换机和真实物理交换机之间的映射。n:1映射给交换机复用提供了条件,从而使得不同的租户的交换机可以映射到同一台真实的物理交换机。
OVX通过同一个header space来区分所有租户的数据。举个例子就是:两个用户可以设置同样的IP、子网掩码、相同的TCP/UDP端口号,而不会引起冲突,因为OVX做了地址虚拟化,即面向用户的地址是OVX IP Address,而真正在core datapath中使用的地址其实还是Physical IP Address,只是在边界设备的地方,OVX需要做一个转变,把地址从OVX IP Address的地址映射成唯一的Physical IP Address,而在core datapath的数据转发过程中,其实数据一直是由OVX来处理,从而实现了地址虚拟化
OVX的不足之处在于无法满足前缀匹配和通配,为了隔离不同用户的流量,物理交换机存储的流表匹配项必须有精确的MAC地址和IP地址,而OVX的地址映射是一一映射的。因此,OVX迫使用户控制器在匹配字段中设置准确的地址值,若用户转发策略仅依赖物理端口,则OVX的改写机制无法处理。此外,OVX缺少对虚拟链路上的流进行聚合的功能,由于改写后MAC地址中嵌入了流编号,因此流编号会因为通信主机数目的增多而快速增长,该条虚拟链路经过的物理交换机上的流表项也会随之急剧增多。
(2)基于策略的虚拟化。 CoVisor (以下简称CV)专注于实现异构SDN控制器间的协作,使得部署在不同平台、 采用不同语言编写的用户控制器能够共同作用于同一网络流,而非创建完全隔离的虚拟环境,通过组合不同控制器的应用程序生成最佳解决方案。来自用户控制器的多种应用策略被CV重新编译,形成单一的组合策略,再对应到物理交换机的流表项。物理交换机对网络流的处理逻辑仍然正确,就像没有发生过任何策略的组合一样。 CV的高层体系架构,顶部的5个应用( MAC地址学习、防火墙、网关、检测、路由)都是在各自的控制器(如Ryu、Floodlight 等)上运行的未经修改的SDN程序,按照显示的虚拟拓扑制定策略并下发流表; CV在拦截所有流表,将其重新编译为单个流协调策略逻辑的同时,检测控制器行为防止操作“越界”
利用编程语言及模型实现无中间层的网络虚拟化HyPer4(HP4)。HP4通过软件的方式拓展了P4兼容设备,使其在逻辑让能够同时存储并运行多个P4程序,允许用户部署、修改P4程序的动态组合。 HP4由运行环境、编译器和数据面管理单元3部分组成,其核心组件是一个能够模拟其他P4程序功能的P4程序。与原生P4环境类似,这个特殊设计的P4程序本身就是用于配置及编译生成的HP4运行环境的,具有执行不同操作的能力。为了避免对现有控制器的修改,HP4通过数据面管理单元进行翻译,将原生P4程序中对虚拟表的操作转换为对物理表的操作。进入交换机的数据包由运行环境解析并设定为特定的状态,HP4模拟了目标程序的匹配一执行序列,允许状态以任何途径变化以影响数据包的处理流程。
关于P4:
2014年7月,斯坦福大学提出了SDN编程语言P4。这是一种声明式编程语言,通过P4开发者可以灵活地定义各种协议报文的格式。它主要用于编写程序以下达指令给数据转发平面的设备(如交换机、网卡、防火墙、过滤器等)处理数据分组。 通过P4语言,可以很大程度上提升网络的可编程性。无论是在软件设计(编程、调试、代码覆盖、模块检查等)方面,还是在网络系统的设计上,都给用户带来了很多好处。 P4有三大特性。 ① 域可重构性:P4支持网络工程师在已经部署交换机后再更改交换机处理数据分组的方式。 ② 协议无关:P4编程定义如何处理数据分组的转发,交换机不应该绑定任何网络协议。 ③ 目标无关:网络工程师通过P4能够描述从高性能硬件到软件交换机的包处理功能。
3.3网络可编程化
网络可编程性最初是指网络管理员可以通过命令行对设备进行配置,后来有了可编程路由器、NetFPGA等设备,这些设备的可编程性主要是对设备本身硬件电路级的可编程。这种可编程的能力是对某台设备而言的,是一种处于最底层的编程能力,相当于计算机中汇编等级的编程语言,不够灵活便捷。 SDN的网络可编程性是从另外一个角度来看的,管理者可以通过SDN中这种高级的编程能力实现与网络设备的双向交互,通过软件更加方便、灵活地管理网络。这种可编程性是基于整个网络的,而不是基于某台设备的。它是对网络整体功能的抽象,使程序能通过这种抽象来为网络添加新的功能。
主动网络的基本思想是,打破传统网络只能被动传输信息的模式,允许网络中的节点在用户数据上执行用户所需的计算。
主动网络通过一系列的编程接口来控制网络节点内的资源
ANTS项目:通过编码分发的过程来压缩文件。
SwitchWare项目:项目提出一种创新的SwitchWare交换机,该交换机使用一个编程元件完成交换功能,由可编程元件控制的如端口组成,被称为“交换插件”的程序部分被发送到交换机端口,然后编译执行。
Smart Packets项目:该项目是将主动网络技术引入到网络管理中,一达到管理节点可编程化的目的。
Netscript项目:该项目的体系结构应用了压缩技术,用脚本语言对传统网络的功能进行一系列简单的抽象
网络可编程性是SDN的另一个重要属性,他通过为开发者们提供强大的编程接口,从而使网络有了还好的编程能力。 SDN的编程接口主要体现在北向接口上,北向接口提供了一系列丰富的API,开发者可以在此基础上设计自己的应用不必关心底层的硬件细节。
SDN北向接口是上层应用与控制器交互的接口,可以是基于控制器本本身提供的各种接口API函数,也可以是现在最为流行的REST API。
SDN南向接口协议时集中式的控制平面和分布式的转发设备之间交互的接口协议,用于实现控制器对底层转发设备的管控。
SDN 的控制平面可以是分布式的,在这种情况下,就需要一种接口协议来负责控制器之间的通信,SDN的东西向接口主要解决了控制器之间物理资源共享、身份认证、授权数据库间协作等问题,实现多域间控制信息交互,从而实现底层基础设施透明化的多控制器组网策略。
优势:
- SDN应用多集中在对控制平面的编程上、上层应用通过北向接口与控制器交互,然后控制器再通过南向接口与底层硬件交互,这样降低了程序与硬件的耦合度,只需实现不同的南向协议就可以在不同的硬件环境上执行相同的功能。
- SDN有一些明确的应用场景,使得业界对SDN的落地持有非常乐观的态度。
- SDN出现时硬件技术能基本支撑他的发展,有大批的厂商开发出了自己的SDN设备,且SDN设备的造价也越来越低。
- SDN的发展方向明确,SDN将目标放在为网络管理者和应用开发者提供强大的编程能力上,真正做到了为开发者提供一整套编程接口,让网络有强大的可编程能力。
问题:
SDN所提供的强大的可编程能力需要数据平面的转发设备来支撑,只有转发设备提供了丰富的功能,SDN才能真正提供强大的编程能力。但目前主流的设备厂商都有自己的交换芯片,转发设备数据模型的设计也各不相同,这就导致SDN功能实现起来越来越复杂。
总结:
本节介绍了SDN基础知识,我们需要了解SDN发展过程,重点掌握SDN的定义和体系结构,理解SDN的三大特征,为后续学习打下坚实基础
最后,感谢大家的观看!