计算机网络——新型网络架构:SDN/NFV
1. 传统节点与SDN节点
1.1 传统节点(Traditional Node)
这幅图展示了传统网络节点的结构。在这种设置中,控制层和数据层是集成在同一个设备内。
以太网交换机:在传统网络中,交换机包括控制层和数据层,它不仅负责数据包的传输,还负责决策如何处理和转发数据包。
控制软件/硬件(Control SW/HW):这里指的是交换机内部的软件和硬件,它们负责处理路由表、ACL规则等,以及所有决定网络流量如何通过交换机的逻辑。
1.2 SDN节点(SDN Node)
这幅图说明了SDN架构的基本组成部分。在SDN中,控制层(Control Plane)与数据层(Data Plane)是分开的。
SDN控制器:控制器是SDN架构的核心,它负责决定网络中的数据包如何流动。控制器与网络设备之间的通信通常是通过一个标准化的接口进行的,比如OpenFlow协议。
SDN客户端:这个术语通常不是标准用语,它指的是SDN环境中的任何网络设备,如交换机、路由器,或者实际上是指作为SDN控制器下发策略对象的实体。
应用(Apps):在SDN控制器上运行的应用程序可以编程网络行为,比如路由、负载均衡等策略。
以太网交换机(Ethernet Switch):物理设备,它在SDN中作为数据平面的一部分,负责数据的传输,但不做路由决策,这些决策由SDN控制器提供
1.3 平面的概念
在计算机网络中,通常将网络功能分为三个不同的层次:管理平面(Management Plane)、控制平面(Control Plane)和数据平面(Data Plane)
1.3.1 管理平面 (Management Plane)
配置 (Configuration):管理平面涉及网络设备的配置和管理。这包括设置路由器、交换机和其他网络设备的参数,如IP地址、路由协议等。
监控 (Monitoring):此外,管理平面还负责监控网络设备和流量,确保网络正常运行并进行性能分析。
1.3.2 控制平面 (Control Plane)
在路由器中建立状态 (Establishing the state in routers):控制平面负责决定数据应该如何和到哪里转发。它包括路由协议和策略的制定,这些协议和策略帮助建立路由器内部的路由表。
决定数据包的转发方式和路径 (Determines how and where packets are forwarded):控制平面通过更新路由表来响应网络中的变化,例如路径改变、网络拥塞等。
慢速时间尺度 (Slow time-scale):控制平面的操作通常是基于控制事件的,比如网络拓扑的变化,这些操作不是实时的,而是有一定的延迟。
1.3.3 数据平面 (Data Plane)
处理和转发数据包 (Processing and forwarding packets):数据平面负责实际处理和转发网络上的数据包。这涉及查看数据包的头信息,根据路由表决定其下一跳的位置。
基于路由器和端点的状态 (Based on state in routers and endpoints):数据平面依据控制平面建立的状态和策略来执行数据包的转发。
每个数据包的时间尺度(快速!)(Per-packet timescale (fast!)):数据平面的操作是针对每个数据包的,因此需要非常迅速地处理和转发,以保持网络流量的连续性和效率。
总结来说,管理平面负责网络设备的配置和监控,控制平面决定数据的转发策略,而数据平面则执行实际的数据处理和转发工作。这三个层次共同确保网络的有效和高效运行。
2. SDN发展的原因(为什么要使用新模式)
由于难以创新、设备昂贵、系统封闭网络多年来几乎没有变化
2.1 因素1:数据中心(DC)与虚拟化
2.1.1 数据中心虚拟化的原因
2.1.1.1 服务器利用率低下
传统的物理服务器经常存在资源未被充分利用的情况,虚拟化允许在单个物理服务器上运行多个虚拟机(VM),从而显著提高资源利用率。
2.1.1.2 多租户环境
尤其是提供云服务的数据中心,需要同时服务多个客户(租户)。虚拟化使得可以为每个租户创建独立的VM,确保隐私和安全。
2.1.1.3 隔离网络和重配置需求
当VM从一个主机迁移到另一个主机时,需要维护一致的网络配置。技术如VLAN(虚拟局域网)和VXLAN(可扩展虚拟局域网)被用来为每个VM创建隔离的网络,并在迁移过程中维持网络连续性。
SDN是更敏捷的方法来以编程方式构建和动态更改逻辑网络基础设施的查询指向了对更灵活、软件驱动方法的需求。
2.1.2 软件定义网络(SDN)
2.1.2.1 程序化控制
SDN将网络的控制平面(决定流量应该如何流动)与数据平面(根据这些决策转发流量)分离。这种分离允许更加可编程和动态的网络控制。
2.1.2.2 动态重配置
通过SDN,网络可以快速且以程序化的方式重新配置,而不需要对每次变更进行手动干预。这一能力在虚拟化环境中非常有益,因为工作负载和虚拟网络功能可能迅速变化。
2.1.2.3 自动化和编排
SDN使得网络资源的自动化和编排变得更加高效,允许更有效地管理网络流量,特别是在多租户和云环境中。
2.2 因素2:抽象的必要性
2.2.1 抽象=>接口=>模块化
2.2.2 抽象的原因
一台只能使用供应商提供的命令来开发程序的计算机?
必须配置系统的每个元素(内存、磁盘等),所以我们需要对网络进行抽象,将问题解耦,使其模块化。当前的网络层只处理数据平面的抽象层,网络没有与控制层相关的抽象。
2.2.3 SDN起源的抽象概念
软件定义网络(SDN)的发展初期涉及到了几个关键的抽象概念,这些概念对于理解SDN的工作原理和设计哲学至关重要。下面是这些抽象概念的简要解释:
2.2.3.1 全局网络视图 (Global Network View)
在传统网络中,决策通常是通过分布式协议在各个设备上独立做出的。而在SDN中,引入了一个全局的网络视图。这意味着网络的配置和管理不再是在每个设备上单独进行,而是基于整个网络的全局视图。配置变成了一个函数,该函数的输入是全局视图,输出是网络配置。这种方法使得网络管理更加中心化,简化了决策过程,提高了效率。
2.2.3.2 简化的网络视图 (Simplified Network View)
SDN中的另一个关键抽象是简化的网络视图。在这种视图下,控制层指定整体目标和策略,而不是直接配置物理设备。这种抽象使得网络管理员可以专注于更高层次的网络设计和策略制定,而不必担心具体设备的复杂配置。网络控制变得更加灵活和高级,使得网络可以快速适应变化的需求和环境。
2.2.3.3 转发 (Forwarding)
SDN中的第三个重要抽象是控制程序与转发电路(硬件)之间的通信。在SDN架构中,控制平面(负责决策)与数据平面(负责数据包的实际转发)是分离的。控制程序指导数据平面如何转发数据。这种分离使得网络设备的转发逻辑可以根据来自控制程序的指令动态变化,提供了更大的灵活性和可编程性。
2.2.3.4 总结
SDN的这些抽象概念共同构成了其创新的核心。通过提供全局网络视图、简化的网络控制和灵活的转发机制,SDN极大地提高了网络的可管理性、可编程性和适应性。这种新的网络管理方法为网络设计和操作带来了革命性的变化。
2.2.4 SDN 架构初步建议
图片是一个手绘的软件定义网络(SDN)初步架构提案图。这个图表展示了SDN的层次结构,并突出了以下几个组成部分:
2.2.4.1 控制层(抽象网络模型)
在层次结构的顶部,控制层与“指定行为”动作相链接。这表明控制层负责通过创建网络操作的抽象模型来定义网络的行为。
2.2.4.2 网络虚拟化(网络虚拟)
在控制层下面,网络虚拟化层与“编译拓扑”相关联。这暗示了网络虚拟化是关于编译完整的网络拓扑图,很可能是以一种方式抽象物理基础设施到逻辑拓扑图。
2.2.4.3 全局视图(网络操作系统)
在网络虚拟化层下是“全局视图”,与“传输到交换机”配对。这表明网络操作系统(OS)维护着对网络的全面视图,并负责将信息和指令传输到物理交换机。
2.2.4.4 网络图
在图表的底部,有一个表示由SDN架构管理的物理或逻辑网络拓扑的网络图,包含了多个节点和连接。虚线表明网络操作系统在中心角色,可能充当抽象控制策略(在顶部定义)与其在实际网络硬件(在底部)实施之间的中介。
这种架构强调了将网络的控制逻辑与底层硬件基础设施分离,使得网络管理和操作更加灵活。
2.3 因素3:已存在的趋势
在软件定义网络(SDN)之前,控制平面和数据平面的分离这一趋势已经存在,并且在某些网络技术中已经部分实现,尤其是在以下几个方面:
2.3.1 MPLS边缘路由器计算路径(MPLS Edge Routers Computing the Path)
在多协议标签交换(MPLS)技术中,边缘路由器负责计算数据包的路径。这涉及到控制决策,即如何标记数据包以便它们能够通过预定义的路径传输。MPLS通过在数据包前添加短的标签来工作,这些标签指示了数据包在网络中的转发路径,而这些转发决策是由控制平面预先计算并配置的。
2.3.2 路由器内控制平面和数据平面的分离(Control and Data Plane Separation Within Routers)
在传统的网络路由器中,控制平面和数据平面通常是分开的功能模块,但它们位于同一个设备(机箱)中。控制平面负责如路由选择、网络策略的制定和维护,而数据平面负责实际处理和转发到来的数据包。尽管这两个平面在功能上是分开的,但在物理上它们是集成在一起的,这意味着控制平面的更改和维护可能会影响到数据平面的性能。
2.3.3 电信网络中的长久做法(Longstanding Practice in Telephony Networks)
在传统的电信网络中,控制信号(例如电话拨号和信号交换)总是被分离出来,与实际传输语音的数据通路分开处理。例如,在电话网络中,信号系统7 (SS7) 是一个控制协议,它在电话网络中用于建立呼叫、路由选择、计费等,而与语音数据传输的通路是分开的。
2.3.4 结论
这些早期的分离倾向为SDN的发展奠定了基础。SDN将这种分离发展到了一个新的层次,使得控制平面可以完全独立于数据平面,通过集中式的控制器来管理网络。这不仅使得网络更加灵活和易于管理,而且还促进了创新和快速部署新服务的能力。SDN在这些早期的分离概念之上建立,并将它们扩展到更高级和更广泛的网络管理实践中。
3. SDN(软件定义网络)的发展过程
3.1 2007年 Ethane(Martin Casado等人)
Ethane项目是“Clean Slate(干净的画板)”计划的一部分,这个计划旨在探讨如果我们从零开始重建互联网,它在15年后会是什么样子。Ethane项目的主要贡献包括提出了集中式控制器的概念和OpenFlow协议。
3.2 2011年 ONF(Open Networking Foundation)成立
为了标准化OpenFlow,这个基金会被创建。OpenFlow是一种允许远程控制网络交换机行为的协议,是SDN的核心技术之一。
ONF(Open Networking Foundation,开放网络基金会)是一个由用户驱动的组织,致力于通过开放标准的发展来促进和推广软件定义网络(SDN)。这个组织的成立主要是为了支持和标准化SDN技术,特别是关键的OpenFlow协议。
ONF的成立成员包括一些重量级的科技和通信公司,这些公司对推动SDN技术的发展和应用具有显著的影响力。
3.2.1 创始成员
德国电信(Deutsche Telekom)
Facebook
谷歌(Google)
微软(Microsoft)
威瑞森通信(Verizon)
雅虎(Yahoo!)
这些成员的参与不仅体现了SDN技术在各种网络环境中应用的重要性,也说明了业界对于开放标准和技术创新的共同承诺。ONF的成立促进了SDN技术的研究、开发和标准化,对整个网络行业产生了深远的影响。
3.2.2 ONF(Open Networking Foundation,开放网络基金会)的会员信息和组织结构
ONF的会员主要由供应商和电信公司组成,有不同的会员级别。
会员级别有:
合作伙伴(Partners):这一级别的会员密切关注ONF的愿景和使命,并寻求通过与其他同样有志向的成员合作来影响整个ONF生态系统,利用ONF的开放源代码平台解决方案,并积极与ONF一起推动其业务和整个行业的转型。
成员(Members):这个级别的组织可能会专注于消费ONF的特定项目。成员资格提供了专注于ONF的工作和工程团队,并在ONF中提供资源以帮助教育、支持和推广会员,以确保他们的成功。
合作伙伴级别的9个成员:其中包括Intel、Google、AT&T、Deutsche Telekom等。
成员级别的110个成员:包括Cisco、Dell、Ericsson、Nokia、Microsoft等。
3.3 2011年5月 Marvell和Larch Networks宣布
它们宣布了一款支持OpenFlow的交换机的可用性。这标志着SDN技术在商业化方面的重要进步。
3.4 总结
总的来说,SDN的“创世纪”阶段涉及到了对网络架构的重新思考,以及通过集中式控制和OpenFlow等创新技术来实现这种新架构的尝试。这些努力共同推动了SDN从理论到实际应用的转变。
4. SDN
4.1 SDN原则
a.控制平面和数据平面分离
b.控制平面可在商品硬件中执行
c.可编程数据平面
4.2 SDN的四个关键组成部分
软件定义网络(SDN)的四个关键组成部分:
4.2.1 控制逻辑中心化(网络操作系统)
在SDN中,控制逻辑是中心化的,有时被称为网络操作系统。这意味着网络决策由一个集中的控制点做出,而不是由各个网络设备独立进行。
4.2.2 流级控制,而不是基于数据包目的地
SDN关注于流级别的控制,允许更细粒度的流量管理,而不是传统的基于目的地地址的数据包转发。
4.2.3 控制面和数据面分离
SDN的一个基本原则是控制面(决定数据如何流过网络的部分)和数据面(实际传输数据包的部分)是分离的。这允许网络管理员更灵活地调整网络行为而不必更换硬件。
4.2.4 分片:任何服务都可以在网络操作系统之上定义其自己的网络平面
SDN支持网络分片,允许创建多个虚拟网络,每个都有独立的控制和数据平面,从而支持多租户或服务特定的网络配置。
这些组件一起工作,为网络提供了前所未有的灵活性和可控性,这是SDN技术的核心优势。
4.3 SDN(软件定义网络)愿望清单
反映了人们希望通过SDN技术实现的目标和改进。这些目标包括:
4.3.1 促进创新
SDN希望通过提供可编程的网络来促进新应用和服务的创新。
4.3.2 允许实验和研究,无需昂贵设备
SDN允许研究者和开发者在不投资高昂硬件设备的情况下测试和验证他们的想法,从而减少资本支出(CapEx)。
4.3.3 灵活性
SDN提供更高的网络可配置性和适应性,使得网络可以更容易地调整以满足变化的需求。
4.3.4 快速升级
通过软件更新而不是硬件更换,SDN能够实现快速升级和部署新功能。
4.3.5 提高上市速度
SDN可以加快新产品和服务的开发周期,从而更快地推向市场。
4.3.6 降低运营支出(OpEx)
通过自动化和简化管理,SDN有助于减少运营成本和复杂性。
这些目标体现了SDN技术对于现代网络管理的价值主张,旨在提高网络的灵活性和经济性,同时推动网络技术的快速发展和创新。
4.4 ONF(开放网络基金会)所提出的软件定义网络(SDN)的架构
4.4.1 ONF Proposed Architecture
SDN的三层架构模型:
基础设施层:位于最底层,由物理交换机组成,这些交换机通过OpenFlow协议与上层交互。
控制层:位于中间,由网络服务组成,它通过API与上层和下层交互,并且是网络智能的核心所在。
应用层:位于顶层,包含了业务应用程序,它们通过API与控制层交互,利用网络服务来满足业务需求。
这种分层设计允许网络的不同部分独立开发和管理,提高了灵活性和可扩展性。
4.4.2 应用层与基础资源层之间的交互
应用层:体现了用户需求和服务需求,通过编排(Orchestration)、抽象(Abstraction)和自动化(Automation)与下层交互。
资源层:由虚拟化和递归组成,处理网络状态,提供管理和控制功能。
这张图展示了软件定义网络(SDN)的结构框架,其中包含三个主要组成部分:
4.4.2.1 应用层(Applications)
位于顶层,满足用户需求和服务要求。它通过以下三个关键功能与资源层交互:
编排(Orchestration):管理和协调计算资源,以便高效地满足特定的应用需求。
抽象(Abstraction):隐藏底层复杂性,为上层应用提供简化的视图。
自动化(Automation):减少人工干预,通过自动化过程改善服务部署和运维。
4.4.2.2 资源层(Resources)
位于底层,提供网络的物理和虚拟资源。它由两部分构成:
虚拟化(Virtualization):创建多个独立的、隔离的虚拟网络环境。
递归(Recursion):能够在网络内部再次实现网络功能,允许多层次的网络抽象。
4.4.4.3 管理与控制(Management & Control)
这些功能横跨应用和资源层,监控网络状态,并进行必要的管理和控制操作,以保持网络的健康和性能。
整体而言,SDN的这种架构允许网络运营商和企业更灵活地部署和管理网络资源,根据实际应用需求快速调整网络行为。
这个模型强调了SDN的关键功能,如虚拟化、集中控制和自动化管理,这些功能有助于网络根据应用需求灵活地调整资源分配和行为。
SDN通过分离控制逻辑和网络硬件,以及通过集中控制来实现网络的灵活配置和管理。这种架构使得网络能够更快速地适应变化,更有效率地管理网络流量,并支持新型网络服务和应用的开发。
4.4.3 软件定义网络(SDN)参考架构
其组件包括:
应用程序(ASP1, ASP2, ASP3):这些是运行在SDN上的各种应用,可以通过北向API(Northbound API)与网络控制器软件交互。
网络控制器软件:例如OpenDaylight和Floodlight,这是SDN的核心,负责处理来自应用的请求,并通过南向API(Southbound API)控制网络设备。
FlowVisor:一个网络虚拟化层,可以允许多个控制器看到和管理同一网络硬件的不同“切片”。
OpenFlow:这是南向API中使用的一种协议,它允许网络控制器与网络转发硬件(如交换机)通信。
转发硬件(Forwarding HW):物理交换机执行实际的数据包转发工作。
东西向API(East-West API),它允许不同的SDN控制器或网络域之间进行通信。这种设计使得网络可以在控制器之间实现集中管理,同时保持了灵活性和可扩展性。
4.5 软件定义网络(SDN)是一种革新性的网络技术,其核心概念和优势如下:
Wikipedia定义:SDN允许网络管理员通过开放接口以及对底层功能的抽象化,以编程方式动态初始化、控制、更改和管理网络行为。
ONF定义:SDN涉及到网络控制平面与转发平面的物理分离,其中控制平面能够控制多个设备。
OpenDayLight观点:SDN的现代运动源于一个简单的问题:为什么网络设备不能像其他计算平台一样可编程?采用这种方法的好处显而易见:不再需要学习复杂的协议,也不再依赖于网络供应商开发你需要的特殊功能。如果你可以自己开发功能,就可以根据价格和性能独立于功能丰富性选择你的设备。
4.6 SDN(软件定义网络)相关协议的标准化机构包括:
4.6.1 ONF (Open Networking Foundation)
负责SDN标准化,包括OpenFlow协议的开发和维护。
4.6.2 IETF (Internet Engineering Task Force)
是一个大型开放的国际社群,负责互联网标准的开发,包括与SDN相关的多个工作组和标准。
4.6.3 NFV/ETSI (Network Functions Virtualization / European Telecommunications Standards Institute):
ETSI是一个标准化组织,NFV是其主导的一个项目,与SDN紧密相关,专注于网络功能的虚拟化。
这些机构共同工作,以确保网络技术的互操作性、安全性和可靠性。
4.7 OpenDaylight
这是一个开源的软件定义网络(SDN)控制器平台。它强调OpenDaylight作为业界最广泛部署的SDN控制器平台,在过去六年中有10次发布,1000多名作者/提交者,100K+的提交,为全球超过10亿用户的网络提供动力。
OpenDaylight的运营视图架构,包括:
第三方应用:比如编排和控制平面等。
OpenDaylight API:为上层应用提供接口。
平台服务:支持网络服务和应用。
OpenDaylight平台:包含数据存储(配置和运营)、消息通知/远程过程调用(RPC)等核心组件。
接口和协议插件:为不同的数据平面元素提供接口支持。
数据平面元素:包括虚拟交换机和物理设备。
5. OpenFlow
5.1 OpenFlow的定义
OpenFlow是软件定义网络(SDN)的一个关键组成部分。它是第一个标准化的通信接口,定义了SDN架构中控制层和转发层之间的交互。由开放网络基金会(ONF)进行标准化。
OpenFlow允许网络控制器通过流表(flow tables)向网络设备发送指令,从而决定数据如何在网络中转发。因此,OpenFlow是实现SDN中控制平面和数据平面分离的基本技术。
通过OpenFlow,控制器可以动态地、集中地管理网络流量,这是构建灵活、可编程网络的基础。
5.2 流表条目的结构
OpenFlow转发机制中的一个流表条目的结构。
5.2.1 每个条目包括几个关键部分:
匹配字段(Match fields):包含多个用于匹配入站流量的标准,如输入端口(In port)、VLAN ID、源MAC(SA)、目的MAC(DA)、以及IP和传输层的协议和端口号。
优先级(Priority):决定了多个匹配条目时的处理顺序。
计数器(Counters):跟踪匹配到特定流表条目的数据包和字节的数量。
指令(Instructions):定义了匹配流量后执行的动作,如转发到特定端口、封装并转发到控制器、丢弃、传递给下一个处理阶段,或修改字段等。
超时(Timeouts):定义了流表条目在没有匹配到流量时在流表中保留的时间。
Cookie:是由控制器用来标识和管理流表条目的附加信息,通常用于统计和计量。
这个机制是OpenFlow规范定义的核心,使得SDN控制器能够精确地控制网络设备上的每个流量流,并实现高度定制化的网络流量管理。
5.2.2 一些例子
OpenFlow转发规则,它们分别对应不同的网络功能。以下是每条规则的具体说明:
a.VLAN交换:当以太网目的MAC地址为"00:1f...",VLAN ID为"vlan1"的数据包到达时,根据规则,数据包将被转发到端口6、7和9。
b.路由:所有目的IP地址为"5.6.7.8"的数据包将被转发到端口6。
c.防火墙:任何TCP目的端口为"22"的数据包将被丢弃,通常这是针对SSH服务的规则。
d.流交换:当数据包从端口3到达,源MAC地址为"00:20...",目的MAC地址为"00:1f...",VLAN ID为"vlan1",源IP地址为"1.2.3.4",目的IP地址为"5.6.7.8",TCP源端口为"17264",目的端口为"80"时,将被转发到端口6。
e.交换:当以太网目的MAC地址为"00:1f..."的数据包到达时,将被转发到端口6。
5.3 OpenFlow转发管道(Forwarding-Pipeline)的工作过程
当数据包进入OpenFlow交换机时,它会经历以下步骤:
数据包与管道中的多个表匹配:数据包基于入口端口和其他匹配字段在流表中被匹配。
查找优先级最高的匹配流表项:系统会根据优先级确定应用哪个规则。
应用指令:
修改数据包并更新匹配字段。
应用操作指令(比如转发、修改头部、丢弃等)。
写入动作指令。
更新元数据。
将匹配数据和动作集发送到下一个表:如果有后续的流表,处理结果将传递给下一表。
执行操作集:数据包最终被执行操作集,例如被转发出交换机。
这个过程允许复杂的决策过程和流量管理,是SDN中流量处理的核心。
5.4 OpenFlow定义了一组动作,这些动作决定了数据包在匹配流表项后如何被处理:
Output:指定数据包的输出端口(即接口)。
Set-Queue:为输出端口内指定的队列标识符,用于流量管理和QoS。
Group:对于定义的组,必须应用该组的动作。
Push-Tag/Pop-Tag:修改VLAN ID或MPLS标签。
Set-Field:修改数据包头部的值,例如DSCP、目的IP地址等。
Change-TTL:修改TTL值(IPv4/MPLS)或跳数限制(IPv6)。
Drop:如果没有提供动作,那么默认的动作是丢弃数据包。
这些动作允许SDN控制器精细地控制通过网络设备的数据流,从而提供高度可定制和灵活的网络管理能力。
5.5 在OpenFlow中使用多个流表可以提供更模块化和灵活的网络配置
这样做允许将处理逻辑划分为不同阶段,每个表负责网络决策的一个方面。例如:
表0:可以用来根据目的地址识别输出接口。这是数据包转发决策的第一步。
表1:可以用来根据DSCP值(区分服务代码点,用于QoS)确定调度策略。这涉及到如何处理和优先级排序数据包。
通过这种方式,网络管理员可以创建一个由多个简单规则组成的复杂流量管理策略,而不是一个非常复杂的单一表,这可以提高网络策略的清晰度和易管理性。
5.6 OpenFlow协议定义了多种类型的消息,用于控制器和交换机之间的通信。
这些消息包含一个消息头,指定了版本(8比特),类型(8比特),以及长度(16比特)。
这些消息大致分为三十种类型,包括但不限于:
Hello:用于控制器和交换机之间的初始握手。
Packet-In:当交换机需要控制器做决策时,将数据包发送到控制器。
Packet-Out:控制器用来指示交换机发送数据包。
Set-Config:控制器用来配置或修改交换机的行为。
这些消息可以属于以下三个类别之一:
控制器到交换机(Controller-to-switch):从控制器到交换机的指令。
异步(Asynchronous):事件通知,如交换机状态变化,不需要控制器的即时请求。
对称(Symmetric):既可以由控制器发起,也可以由交换机发起,用于通信的管理和辅助功能。
OpenFlow是一种通信协议,用于控制器和OpenFlow交换机之间的通信。它通过TCP运行,以确保可靠的传输。出于安全考虑,虽然不是强制要求,但鼓励使用TLS(传输层安全性)进行加密通信。OpenFlow协议允许基于流和表的交换机操作,可以更细粒度地控制网络流量。最新的OpenFlow规范版本为1.5.1(2015年5月发布)和1.6(2016年9月发布)。OpenFlow作为SDN的早期标准协议,随着技术发展,可能会被更加灵活的替代方案所取代。
6. SDN其他通信协议
OpenFlow是SDN中使用的一个南向接口,但确实不是唯一的南向接口选项。
6.1 其他几种南向接口包括
NETCONF:网络配置协议,用于安装、操纵和删除设备上的配置。
XMPP:可扩展消息和存在协议,通常用于即时通讯,但也可以用于网络设备间的通信。
OVSDB:Open vSwitch数据库管理协议,用于配置Open vSwitch虚拟交换机实例。
Cisco’s onePK:Cisco提供的一种编程接口,允许开发者对Cisco设备进行细粒度控制。
这些接口与OpenFlow一样,提供了控制器与网络设备之间的通信能力,但它们可能支持不同的功能集和操作模型。
6.2 NETCONF
NETCONF是一个网络配置协议,由IETF标准化,用于安装、操作和删除网络设备上的配置。它通常与YANG一起使用,后者是一种数据建模语言,为网络设备提供了操作和配置数据的标准化模型。虽然NETCONF/YANG并非专为SDN开发,但它们可以作为南向接口在SDN环境中使用,允许以程序化的方式更新和修改网络设备的配置,因此在SDN的上下文中非常重要。
6.3 NETCONF VS OpenFlow
NETCONF和OpenFlow都是南向接口协议,但它们服务于不同的目的:
NETCONF 是用于配置网络设备的协议,它允许管理设备上的配置,但它并不直接涉及到控制平面和数据平面的分离。NETCONF通常用于更广泛的网络管理任务。
OpenFlow 专注于网络转发,允许控制器直接管理交换机的流表,从而实现对数据平面的精确控制。
两者不是互相矛盾的,实际上可以在同一SDN环境中共存,服务于不同的管理和控制需求。NETCONF/YANG虽然不是专门为SDN设计的,但它们提供了网络设备配置的标准化方法,这在SDN环境中非常有用,因为它们支持程序化的网络设备管理。
7 NFV
7.1 NFV的定义
NFV(网络功能虚拟化)是一种网络架构概念,它利用IT虚拟化技术将网络节点功能虚拟化为可连接或串联起来以创建通信服务的构建块。NFV的目标是将传统的网络功能(如路由、负载平衡、防火墙等)从专用硬件中解耦出来,并在标准的服务器硬件上以软件形式实现这些功能。
7.2 NFV VS SDN
虽然NFV和SDN都关注于提高网络的灵活性和减少对专用硬件的依赖,但它们并不相同,也不是竞争关系。SDN关注于网络流量的控制和管理,而NFV关注于网络服务功能的实现。实际上,它们是相辅相成的技术,通常一起使用可以实现更高效、灵活的网络设计和运营。
7.3 NFV实现过程
描述了网络功能虚拟化(NFV)的概念,它展示了从传统的网络设备方法转变到基于NFV的方法的变化。在传统方法中,各种网络功能(如CDN、防火墙、NAT等)通常由专用的硬件设备实现。而在NFV方法中,这些功能是以软件的形式在标准的、高容量的服务器、存储和以太网交换机上实现的,这些硬件设备通常被称为“白盒”。通过使用虚拟化技术,NFV能够实现这些网络功能的灵活部署和管理,提高创新性和竞争力。
7.4 VNF
在NFV(网络功能虚拟化)中,网络功能:
是以软件形式编写的。
部署在数据中心或者可编程为网络节点的“白盒”内。
目标是实现敏捷性、易于修改和面向服务的网络。
这样,网络功能就被虚拟化为VNF(虚拟网络功能),它们可以在不同的硬件平台上运行,以适应快速变化的服务需求和简化网络的管理与运维。
VNFs(虚拟网络功能)与云计算有类似之处,都涉及到将传统的物理资源虚拟化。在云计算中,这通常是指基础设施(IaaS)、平台(PaaS)和软件(SaaS)。类似地,VNFs将网络服务虚拟化,可以作为网络即服务(NaaS)提供。这样,网络资源和服务就可以按需提供,类似于云服务,从而实现网络的灵活性、可扩展性和按需分配。
这些VNFs组合成一个服务链,在物理硬件资源上虚拟化的。VNFs可以包括但不限于DNS、防火墙、WAN优化器等网络功能。这些功能可以根据需要在数据中心或者企业网络中部署,以提供灵活的网络服务和资源优化。
7.5 NFV框架
欧洲电信标准化协会(ETSI)提出的NFV(网络功能虚拟化)架构,
这一架构通常包含几个层次:
硬件资源层:包括计算、存储和网络硬件。
虚拟化层:物理硬件资源在这一层被抽象和虚拟化为虚拟计算、存储和网络资源。
VNF层:实际的虚拟网络功能(VNFs)位于这一层,由各自的元素管理系统(EMS)管理。
OSS/BSS:操作支持系统/业务支持系统,负责管理和运营VNF和网络服务。
编排和VNF管理器:负责编排和管理VNF的生命周期及其与物理和虚拟资源的交互。
这种架构使得网络资源可以灵活、可扩展且动态分配,这些是NFV的主要优势。
8. NFV与SDN的混合使用
NFV(网络功能虚拟化)和SDN(软件定义网络)虽然可以独立运作,但它们相辅相成:
仅NFV:在通用服务器上运行的虚拟机(VMs)中部署VNFs,通过标准网络互联。
仅SDN:在专用硬件上运行的网络功能,通过SDN控制器互联。
NFV + SDN:在通用服务器上的虚拟机(VMs)中部署VNFs,并通过SDN控制器进行互联,结合了两者的优势。
9. SDN(软件定义网络)面临的开放性问题和挑战
可扩展性:随着网络规模的增加,确保SD解决方案可以有效地扩展以管理更大的网络是一个挑战。
冗余:为了实现高可用性,需要在SDN控制器和网络设计中考虑冗余机制。
控制器布置:确定控制器的最佳位置以优化性能和响应时间。
控制器间接口:控制器间的通信和协调机制尚未完全标准化,这可能影响不同SDN系统之间的互操作性。
10. 真实产品
10.1 SDN控制器的种类
包括商业和学术研究用的
10.1.1 商业/开源SDN控制器
OpenDaylight:一个广泛支持的开源SDN控制器平台。
ONOS (Open Network Operating System)**:专为服务提供商和运营商网络设计的开源SDN控制器。
Floodlight:一个易于使用的开源SDN控制器。
10.1.2 学术/研究用SDN控制器
POX:一个比较早的Python编写的SDN控制器,常用于教学和研究。
Ryu:一个由日本NTT实验室开发的组件化的SDN框架。
10.1.3 厂商专有SDN控制器
例如**Cisco**,提供了适用于其网络设备的自家SDN控制器解决方案。
这些控制器各有特点和优势,选择哪个取决于特定网络的需求、规模、以及所需的功能。
10.2 OpenFlow的交换机
商业环境中确实有支持OpenFlow的交换机,许多网络设备供应商如Cisco、Juniper、Big Switch Networks、Brocade、Arista、Extreme Networks、IBM、Dell、NoviFlow、HP、NEC等都提供支持OpenFlow的产品。然而,这些厂商通常也会推出基于他们自己的抽象和接口的SDN解决方案,以适应特定的网络需求和提供差异化的网络管理功能。
10.3 ONF(开放网络基金会)进行的一些活跃项目
CORD(Central Office Re-architected as a Datacenter):一个项目,旨在将传统的电信中心办公室转变为数据中心,以便利用SDN、NFV和云技术。
ONOS(Open Network Operating System):一个开源的SDN控制器项目,为服务提供商和运营商网络设计。
Mininet:一个用于创建虚拟网络的工具,允许研究人员和开发人员在单一系统上模拟大型网络。
SD-RAN(软件定义的无线电接入网络):旨在利用SDN原理为5G无线电接入网络带来灵活性和创新。
10.4 谷歌的成功案例
谷歌的SDN部署是一个众所周知的成功案例。它使用私有WAN连接全球的数据中心,并采用OpenFlow交换机的SDN架构。在采用SDN之前,建立MPLS隧道的收敛时间较长;而采用SDN之后,能够通过中心化的流量工程服务使链路接近100%的利用率。此外,通过在多条路径之间分配应用流量,可以根据应用的优先级和需求来平衡容量。
10.5 SDN使用趋势
根据“2020全球网络趋势报告”,SDN(软件定义网络)得到了广泛的应用,包括:
数据中心:约64%的数据中心采用了SDN。
广域网络(WAN):约58%的广域网络采用了SDN。
接入网络:约40%的接入网络采用了SDN。
这些统计数据表明SDN已成为改善网络管理、优化资源利用和提高网络灵活性的关键技术。
11. 所以SDN是颠覆性技术还是适用性技术?
SDN和相关技术可以被视为颠覆性技术,因为它们引入了全新的网络范式,如可编程性、敏捷性、虚拟化和抽象化。这些技术已经引起了工业界的极大兴趣,早期的应用主要出现在数据中心。SD-WAN和5G网络切片是两个关键的应用案例。
关于未来的发展,有一些担忧SDN控制器可能成为新的供应商锁定产品。展望未来,SDN第三阶段将专注于可验证的、自顶向下的网络行为控制。
网络行业的下一步发展趋势可能包括基于意图的网络(Intent-based networking)、自驱动网络(Self-driven networks)、从自动化到自治网络的转变,以及网络即服务(NaaS)的兴起。这些趋势体现了网络技术向更智能、自动化和服务化的方向发展。
相关文章:

计算机网络——新型网络架构:SDN/NFV
1. 传统节点与SDN节点 1.1 传统节点(Traditional Node) 这幅图展示了传统网络节点的结构。在这种设置中,控制层和数据层是集成在同一个设备内。 以太网交换机:在传统网络中,交换机包括控制层和数据层,它不仅负责数据包的传输&…...

【精选】java继承进阶,子类继承父类(内存图、内存分析工具)
🍬 博主介绍👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…...

Google Play上架:因行为透明度被拒审或下架的政策自查(基于区块链的内容)
近期很多朋友的项目出现因行为透明度问题被谷歌拒审或者已经上架的包被下架甚至封号,今天解释一下为什么会被封号下架,根据是什么? 目录 政策发布时间与截止时间政策内容政策背景政策解析和问题讲解政策发布时间与截止时间 基于区块链的内容相关政策,于2023-07-12 公布,…...
备战蓝桥杯---搜索(剪枝)
何为剪枝,就是减少搜索树的大小。 它有什么作用呢? 1.改变搜索顺序。 2.最优化剪枝。 3.可行性剪枝。 首先,单纯的广搜是无法实现的,因为它存在来回跳的情况来拖时间。 于是我们可以用DFS,那我们如何剪枝呢&#…...

ResizeObserver的使用
这篇说下ResizeObserver API。ResizeObserver接口监视 Element 内容盒或边框盒或者 SVGElement 边界尺寸的变化。 ResizeObserver避免了通过回调函数调整大小时,通常创建的无限回调循环和循环依赖项。它只能通过在后续的帧中处理 DOM 中更深层次的元素来做到这一点…...

CleanMyMac X 4.14.7帮您安全清理Mac系统垃圾
CleanMyMac X 4.14.7是一款强大的 Mac 清理、加速工具和健康卫士,可以让您的 Mac 再次恢复巅峰性能。 移除大型和旧文件、卸载应用,并删除浪费磁盘空间的无用数据。 5倍 更多可用磁盘空间 CleanMyMac X 4.14.7帮您安全清理Mac系统垃圾 CleanMyMac X 4.14.7一键深度扫描mac系统…...

C语言实现memcpy、memmove库函数
目录 引言一、库函数介绍二、库函数详解三、源码实现1.memcpy源码实现2.memmove源码实现 四、测试1.memcpy函数2.memmove函数 五、源码1.memcpy源码2.memmove源码 六、参考文献 引言 关于memcpy和memmove这两个函数,不论是算法竞赛还是找工作面试笔试,对…...

MySQL数据库④_表的约束(主键_自增长_唯一键_外键等)
目录 1. 约束概念和常见的约束 2. 空属性null/not null 2. 默认值default 3. 列描述comment 4. 自动填充zerofill 5. 主键primary key 5.1 主键 5.2 复合主键 6. 自增长auto_increment 7. 唯一键unique key 8. 外键forei…...
SpringBoot过滤器获取请求的参数
一、背景 在项目开发过程中,需要对于某些接口统一处理。 这时候就需要获取请求的报文,再对获取的报文进行统一处理。 二、了解过滤器 首先了解一下过滤器拦截器的区别: JAVA中的拦截器、过滤器:https://blog.csdn.net/qq_38254…...

幻兽帕鲁mac可以玩吗?
《幻兽帕鲁》(英文:Palworld)是一款近期在 Steam 爆红的动作冒险生存游戏,游戏设置在一个居住着「帕鲁」的开放世界中,玩家可以战斗并捕捉帕鲁,也能用它们来建造基地、骑乘和战斗。 不过目前《幻兽帕鲁》仅…...

webstorm、vscode、HBuilder配置eslint检查
你们好,我是金金金。 场景 每个人写的代码都有自己所属的风格,所以项目中统一代码风格特别重要,新开的项目中如何快速配置ESLint呢? 安装 npm install --save-dev eslint ----安装eslintnpm install --save-dev eslint-plugin-vu…...

大数据知识图谱之深度学习——基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统
文章目录 大数据知识图谱之深度学习——基于BERTLSTMCRF深度学习识别模型医疗知识图谱问答可视化系统一、项目概述二、系统实现基本流程三、项目工具所用的版本号四、所需要软件的安装和使用五、开发技术简介Django技术介绍Neo4j数据库Bootstrap4框架Echarts简介Navicat Premiu…...
年底个人总结
年底个人总结 前言:又到了年底,在游戏行业工作了接近10年,想想也应该把自己做过的东西做一个总结。 从14年在北京毕业,懵懂的我在机缘巧合下遇到了陈g,我行业的领路人,在他的带领下我进入到了游戏行业。 当…...

jsp教材管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 JSP 教材管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…...

SpringBoot:配置相关知识点
SpringBoot:多环境配置 配置知识点demo:点击查看LearnSpringBoot02 点击查看更多的SpringBoot教程 一、SpringBootApplication SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用,运行这个类的main方法来…...

在线JSON转SQL工具
在线JSON转SQL - BTool在线工具软件,为开发者提供方便。在线JSON转SQL工具可以将JSON文件中的数据或者JSON对象转换为SQL插入语句,方便用户将数据导入到数据库中。用户可以通过简单的界面上传JSON文件,或者文本框输入,点击JSON转S…...

网络安全大赛
网络安全大赛 网络安全大赛的类型有很多,比赛类型也参差不齐,这里以国内的CTF网络安全大赛里面著名的的XCTF和强国杯来介绍,国外的话用DenCon CTF和Pwn2Own来举例 CTF CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相…...

phpMyAdmin 未授权Getshell
前言 做渗透测试的时候偶然发现,phpmyadmin少见的打法,以下就用靶场进行演示了。 0x01漏洞发现 环境搭建使用metasploitable2,可在网上搜索下载,搭建很简单这里不多说了。 发现phpmyadmin,如果这个时候无法登陆,且也…...

PHP实现DESede/ECB/PKCS5Padding加密算法兼容Java SHA1PRNG
这里写自定义目录标题 背景JAVA代码解决思路PHP解密 背景 公司PHP开发对接一个Java项目接口,接口返回数据有用DESede/ECB/PKCS5Padding加密,并且key也使用了SHA1PRNG加密了,网上找了各种办法都不能解密,耗了一两天的时间…...

亚马逊认证考试系列 - 知识点 - 安全组介绍
第一部分:AWS简介 Amazon Web Services(AWS)是全球领先的云计算服务提供商,为个人、企业和政府机构提供广泛的云服务解决方案。AWS的服务包括计算、存储、数据库、分析、机器学习、人工智能、物联网、安全和企业应用等领域。AW…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...