SDN基础知识

news2024/11/16 3:41:13

 🌈个人主页:小新_-

🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝

🏆所属专栏: 软件定义网络技术(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的体系结构,先对传统网络的体系结构进行简单的阐述。

传统网络是分布式控制的结构,其特点为:

  1. 在传统网络中,用于协议计算的控制面和用于报文转发的数据面位于同一台设备中。
  2. 路由计算和拓扑变化后, 每台设备都要重新进行路由计算。    
  3. 在传统网络中,每台设备都是独立收集网络信息、独立计算的,且只关心自己的选路  
  4.  设备在计算路由时缺乏统一性。
  5. 每台设备都包含独立的控制面和数据面。

传统网络的体系结构分为管理层、控制层和数据层

管理面主要包括设备管理系统和业务管理系统。设备管理系统负责网络拓扑、设备接口、设备特性的管理,同时可以给设备下发配置脚本;业务管理系统用于对业务进行管理,如业务性能监控、业务告警管理等。
控制面负责网络控制,主要功能为协议处理与计算。例如,路由协议用于路由信息的计算、路由表的生成。
数据面涉及设备根据控制面生成的指令完成用户业务的转发和处理。例如,路由器根据路由协议生成的路由表将接收的数据包从相应的端口转发出去。



根据传统网络的体系结构,可知传统网络的局限性主要表现在以下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的东西向接口主要解决了控制器之间物理资源共享、身份认证、授权数据库间协作等问题,实现多域间控制信息交互,从而实现底层基础设施透明化的多控制器组网策略。

优势:

  1. SDN应用多集中在对控制平面的编程上、上层应用通过北向接口与控制器交互,然后控制器再通过南向接口与底层硬件交互,这样降低了程序与硬件的耦合度,只需实现不同的南向协议就可以在不同的硬件环境上执行相同的功能。
  2. SDN有一些明确的应用场景,使得业界对SDN的落地持有非常乐观的态度。
  3. SDN出现时硬件技术能基本支撑他的发展,有大批的厂商开发出了自己的SDN设备,且SDN设备的造价也越来越低。
  4. SDN的发展方向明确,SDN将目标放在为网络管理者和应用开发者提供强大的编程能力上,真正做到了为开发者提供一整套编程接口,让网络有强大的可编程能力。

问题:

SDN所提供的强大的可编程能力需要数据平面的转发设备来支撑,只有转发设备提供了丰富的功能,SDN才能真正提供强大的编程能力。但目前主流的设备厂商都有自己的交换芯片,转发设备数据模型的设计也各不相同,这就导致SDN功能实现起来越来越复杂。

总结:

本节介绍了SDN基础知识,我们需要了解SDN发展过程,重点掌握SDN的定义和体系结构,理解SDN的三大特征,为后续学习打下坚实基础

 

最后,感谢大家的观看!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1616474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQLite的DBSTAT 虚拟表(三十六)

返回:SQLite—系列文章目录 上一篇:SQLite运行时可加载扩展(三十五) 下一篇:SQLite—系列文章目录 1. 概述 DBSTAT 虚拟表是一个只读的同名虚拟表,返回 有关用于存储内容的磁盘空间量的信息 的 SQLite 数据库。 示例用例…

【数据结构(邓俊辉)学习笔记】绪论03——递归分析

文章目录 意图目标1. 线性递归数组求和线性递归减而治之 2. 递归分析递归跟踪递推方程典型递推方程 3. 递归模式多递归基多向递归 4. 递归消除空间成本尾递归及其消除 5. 二分递归分而治之数组求和 6 . 效率7. 算法设计优化总结前n项计算算法 意图 数据结构中经常用到递归&…

VScode配置MySQL

1、进入官网,下载MySQL 地址:dev.mysql.com/downloads/mysql/ ZIP方式下载,选择本地的路径进行解压。 2、配置环境变量 形如下方的路径: D:\software\Mysql\mysql-8.3.0-winx64\bin 即是解压位置后文件夹下的bin文件路径 3、初…

在 VSCode 中运行 C#

文章目录 1.为何选择VSCode而不是VS2.操作步骤2.1 安装.NET2.2 安装扩展插件2.2.1 C#2.2.2 Code Runner 3.新建工程HelloCsharp 1.为何选择VSCode而不是VS VS实在是太“重”了,如果只是写一些简单控制台程序进行调试,则完全没必要 2.操作步骤 2.1 安装…

【前端】vue3树形组件使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、树形组件简介二、树形组件使用三、总结 前言 随着开发语言及人工智能工具的普及,使得越来越多的人学习使用vue前端工具,本文主要是…

第十、十一章 折线图 + 地图 + 柱状图的绘制

第十章 折线图的绘制 官网:pyecharts - A Python Echarts Plotting Library built with love. 画廊官网:Document 懒人工具:懒人工具-手机APP工具下载-手机软件下载大全 - 173软件站 (ab173.com) 导学 json 定义 (1&#xff…

Flask 数据库前后端交互案例-1

Flask 数据库前后端交互案例 目录结构templates目录base.htmlheader.htmlleft.html首页职员管理页面添加员工界面员工编辑页面员工详情界面 后台main.pyapp.pymodels.pyviews.py 数据库数据position.sqlperson.sqlpermission.sqldepartment.sql 目录结构 静态文件链接&#xff…

工装行业项目管理系统哪家好?找企智汇工程项目管理系统!

在工装行业,项目管理是至关重要的一环。好的项目管理系统能够提高工装企业的效率、降低成本、提升客户满意度。在这个竞争激烈的市场中,选择一款好的项目管理系统,对于企业的发展至关重要。 今天,我向大家介绍的是企智汇工程项目…

uniapp自定义顶部导航栏

首先uniapp获取设备信息:uni.getSystemInfo或uni.getSystemInfoSync,可用于设置顶部安全区 留一个设备安全区的位置哦 然后在pages.json文件里配置自定义导航栏 {"pages": [ //pages数组中第一项表示应用启动页,参考&#xff1a…

如何使用 ArcGIS Pro 快速为黑白地图配色

对于某些拍摄时间比较久远的地图,限于当时的技术水平只有黑白的地图,针对这种情况,我们可以通过现在的地图为该地图进行配色,这里为大家讲解一下操作方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微…

windows SDK编程 --- 消息(3)

前置知识 一、消息的分类 1. 鼠标消息 处理与鼠标交互相关的事件,比如移动、点击和滚动等。例如: WM_MOUSEMOVE: 当鼠标在窗口客户区内移动时发送。WM_LBUTTONDOWN: 当用户按下鼠标左键时发送。WM_LBUTTONUP: 当用户释放鼠标左键时发送。WM_RBUTTOND…

Cisco NX-OS Software Release 10.4(3)F - 网络操作系统软件

Cisco NX-OS Software Release 10.4(3)F - 网络操作系统软件 NX-OS 网络操作系统 请访问原文链接:Cisco NX-OS Software Release 10.4(3)F - 网络操作系统软件,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Cisc…

K8s: Ingress对象, 创建Ingress控制器, 创建Ingress资源并暴露服务

Ingress对象 1 )概述 Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTPIngress-nginx 本质是网关,当你请求 abc.com/service/a, Ingress 就把对应的地址转发给你,底层运行了一个 nginx但 K8s 为什么不…

通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验

通义灵码自成功入职阿里云后,其智能编程助手的角色除了服务于阿里云内部几万开发者,如今进一步服务函数计算 FC 产品开发者。近日,通义灵码正式进驻函数计算 FC WebIDE,让使用函数计算产品的开发者在其熟悉的云端集成开发环境中&a…

yolov5 的几个问题,讲的比较清楚

yolov5, 几个问题 【BCELoss】pytorch中的BCELoss理解 三个损失函数原理讲解 https://zhuanlan.zhihu.com/p/458597638 yolov5源码解析–输出 YOLOv5系列(十) 解析损失部分loss(详尽) 1、输入数据是 xywh, 针对原图的, 然后,变成 0-1, x/原图w, y/原图h, w/原图w, h/原图h,…

【Java网络编程】TCP通信(Socket 与 ServerSocket)和UDP通信的三种数据传输方式

目录 1、TCP通信 1.1、Socket 和 ServerSocket 1.3、TCP通信示例 2、UDP的三种通信(数据传输)方式 1、TCP通信 TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象 通信之前要保证连接已经建立(注意TCP是一…

从win10升级到win11后,安全中心没有病毒防护的解决办法

从win10升级到win11后,安全中心没有病毒防护的解决办法 问题就是Win11的安全中心打开没有病毒和威胁防护选项(不装其它第三方防病毒软件的情况下)。 这可能是因为注册表出了问题。 具体操作如下: 点击Windows左下角搜索栏&…

使用JavaScript及HTML、CSS完成秒表计时器

案例要求 1.界面为一个显示计时面板和三个按钮分别为:开始&#xff0c;暂停&#xff0c;重置 2.点击开始&#xff0c;面板开始计时&#xff0c; 3.点击暂停&#xff0c;面板停止 4.点击重置&#xff0c;计时面板重新为0 案例源码 <!DOCTYPE html> <html lang"…

echart-better基于最新的echarts5.5标题旋转功能

使用教程以及相关的echarts-better最新的包在这里&#xff1a;https://edu.csdn.net/course/detail/24569 echarts在侧边竖向展示标题&#xff0c;以及次标题 主标题和次标题进行旋转&#xff0c;适用于移动端或其他场景。

Azure AD统一认证及用户数据同步开发指导

本文主要目的为&#xff1a;指导开发者进行自有服务与Azure AD统一认证的集成&#xff0c;以及阐述云端用户数据同步的实现方案。本文除了会介绍必要的概念、原理、流程外&#xff0c;还会包含Azure门户设置说明&#xff0c;以及使用Fiddler进行全流程的实操验证&#xff0c;同…