什么是软件定义网络 (SDN)?
What exactly is Software-Defined Networking (SDN)?
我仔细研究了 Open DayLight 的文档,似乎无法理解 软件定义的网络 到底是什么。我在 SDN 上可以找到的所有媒体炒作、博客和文章都充斥着对我这个工程师来说毫无意义的流行语。所以我问:SDN(究竟)是什么?有哪些具体用途cases/problems它解决了?是吗:
- 只是让专有网络硬件为网络 API 服务,从而允许程序配置它们(而不是 IT 人员使用控制台或 Web 界面)?或
- 将(传统上专有的)网络硬件实现为软件;或
- 编写以某种方式与虚拟化平台(vLAN、vSwitch 等)使用的虚拟网络硬件集成的软件?或
- 完全是别的东西?!?
奖励: Open DayLight 如何符合这里的等式?
首先,你是对的,NIST 或一些类似的标准化机构没有官方定义,其含义模糊这一事实被营销人员利用。
SDN 的要点是它允许使用 APIs 对网络功能进行编程。
过去,交换机和路由器等网络设备只能使用专有接口(供应商特定工具或设备上的 CLI)进行配置,并且没有 API 允许配置 OSI L2 - L3 方面像 VLAN 和路由,还有 L6 - L7 方面,比如高度动态的负载平衡。顺便提一句。在 L6 - L7 功能的情况下,术语 NVF = 网络虚拟化功能似乎现在已经成立。
这对于支持多租户的虚拟化 IaaS 系统尤其需要。您可以创建新的 VPC,并随意排列在一起。要真正将租户彼此隔离,您需要进行 L2 隔离,因此为 VPC 提供的相同动态会传播到网络以将它们互连。
结论:这是关于你的扩展的第一个项目符号,API不一定是由一些硬件设备提供的,它也可以由一些纯软件实现提供。
关于 OpenDaylight:
它是 SDN 的 OpenStack 吊坠。他们还积极推动与 OpenStack 的集成。他们说他们是"open, reference framework for programmability and control through an open source SDN and NFV solution"。这意味着它(如您所说)为 manfold aspects of networking 提供了外观。
他们拥有所有知名人士作为成员,这可能意味着他们有能力像 OpenStack 那样建立一个事实上的标准。会员受益于他们可以为他们的产品提供插件、集成和适配,以便他们与 OpenDaylig 无缝集成,您只需要关心一个 standard API.
SDN 是可编程网络。不同的 SDN 解决方案在其 API 中向应用程序开发人员提供不同的功能。
此处为软件开发人员很好地概述了 SDN:
https://github.com/BRCDcomm/BVC/wiki/SDN-applications
SDN 解决方案最常见的元素是
- 北向 API:application/script 用于监视、管理和控制网络拓扑和数据包流的编程接口。
- 网络元素:通过北向 API 执行应用程序提供的规则的交换或路由网络元素。这些元素可能是物理的(Cisco、Brocade、Tallac 等)或虚拟的(Open VSwitch、Brocade Vyatta vrouter、Cisco 1000 等)或组合。
基于控制器的解决方案有一个集群架构元素('controller'),它为应用程序提供北向 api 和一组可扩展的南向 APIs哪些网络设备连接。目前可用的一些控制器包括 OpenDaylight、开放网络操作系统 (ONOS)、Juniper Open Contrail、Brocade Vyatta 控制器(ODL 分发)、HP VAN 控制器等。
了解 SDN 产品的最佳经验法则:
- 阅读它的北行 API - 这告诉您您将能够在您的网络中监视、管理和控制什么。
- 找出它支持哪个南行 API - 这会告诉你它可能与哪个 switches/routers 一起工作。
一些 SDN 使用 cases/applications:
- DevOps/Admin 自动化 - 通过自动化使网络管理员或 DevOps 生活更轻松的应用程序和脚本。 OpenStack Neutron 是一个常见的例子。
- 安全性 - HP 提供 'Network Protector' 学习网络拓扑,然后监控 activity 提供警报 and/or 不合规行为的补救措施。
- 网络优化
- Brocade 提供 'Traffic Manager' 监控网络利用率并实时修改流量以根据定义的策略优化质量。
- HP 提供 'HP Network Optimizer',为企业 Microsoft Lync 用户提供端到端的语音优化路径。
- Lyatiss 实时配置 AWS 网络以满足应用程序需求。
- 监控课堂任务时间 - Elbrys 提供了一个应用程序,该应用程序为教师提供了一个仪表板,以实时监控学生的任务时间并导致个别学生重定向到他们选择的网页。 (免责声明:我在 Elbrys Networks 工作)
- OpenDaylight 项目提案页面 - https://wiki.opendaylight.org/view/Project_Proposals:Main
SDN的概念很简单。 SDN 将控制平面(即决策制定)与数据平面(实际转发操作)分离,并在它们之间提供 API(例如 OpenFlow API)。
图片来源:https://www.commsbusiness.co.uk/features/software-defined-networking-sdn-explained/
借助 SDN 架构,网络工程师不再需要学习针对不同供应商的专有 CLI 命令。他们可以专注于开发 逻辑集中控制程序 来做出网络全局决策并将其发送到网络交换机(数据平面)。 转储网络交换机(数据平面)收到控制器rules/decisions并相应地处理网络数据包,如果没有发现他们询问控制器的决定。
例如:在SDN架构 路由算法中作为控制器中的程序开发,它收集所有必需的元数据(例如交换机,端口、主机连接、链接、速度等)然后为网络中的每个交换机做出路由决策。而在 传统网络 中,路由算法在所有交换机中以分布式方式实现(即通常每个交换机都有自己的智能并做出自己的路由决策)。
我仔细研究了 Open DayLight 的文档,似乎无法理解 软件定义的网络 到底是什么。我在 SDN 上可以找到的所有媒体炒作、博客和文章都充斥着对我这个工程师来说毫无意义的流行语。所以我问:SDN(究竟)是什么?有哪些具体用途cases/problems它解决了?是吗:
- 只是让专有网络硬件为网络 API 服务,从而允许程序配置它们(而不是 IT 人员使用控制台或 Web 界面)?或
- 将(传统上专有的)网络硬件实现为软件;或
- 编写以某种方式与虚拟化平台(vLAN、vSwitch 等)使用的虚拟网络硬件集成的软件?或
- 完全是别的东西?!?
奖励: Open DayLight 如何符合这里的等式?
首先,你是对的,NIST 或一些类似的标准化机构没有官方定义,其含义模糊这一事实被营销人员利用。
SDN 的要点是它允许使用 APIs 对网络功能进行编程。 过去,交换机和路由器等网络设备只能使用专有接口(供应商特定工具或设备上的 CLI)进行配置,并且没有 API 允许配置 OSI L2 - L3 方面像 VLAN 和路由,还有 L6 - L7 方面,比如高度动态的负载平衡。顺便提一句。在 L6 - L7 功能的情况下,术语 NVF = 网络虚拟化功能似乎现在已经成立。
这对于支持多租户的虚拟化 IaaS 系统尤其需要。您可以创建新的 VPC,并随意排列在一起。要真正将租户彼此隔离,您需要进行 L2 隔离,因此为 VPC 提供的相同动态会传播到网络以将它们互连。
结论:这是关于你的扩展的第一个项目符号,API不一定是由一些硬件设备提供的,它也可以由一些纯软件实现提供。
关于 OpenDaylight: 它是 SDN 的 OpenStack 吊坠。他们还积极推动与 OpenStack 的集成。他们说他们是"open, reference framework for programmability and control through an open source SDN and NFV solution"。这意味着它(如您所说)为 manfold aspects of networking 提供了外观。 他们拥有所有知名人士作为成员,这可能意味着他们有能力像 OpenStack 那样建立一个事实上的标准。会员受益于他们可以为他们的产品提供插件、集成和适配,以便他们与 OpenDaylig 无缝集成,您只需要关心一个 standard API.
SDN 是可编程网络。不同的 SDN 解决方案在其 API 中向应用程序开发人员提供不同的功能。
此处为软件开发人员很好地概述了 SDN:
https://github.com/BRCDcomm/BVC/wiki/SDN-applications
SDN 解决方案最常见的元素是
- 北向 API:application/script 用于监视、管理和控制网络拓扑和数据包流的编程接口。
- 网络元素:通过北向 API 执行应用程序提供的规则的交换或路由网络元素。这些元素可能是物理的(Cisco、Brocade、Tallac 等)或虚拟的(Open VSwitch、Brocade Vyatta vrouter、Cisco 1000 等)或组合。
基于控制器的解决方案有一个集群架构元素('controller'),它为应用程序提供北向 api 和一组可扩展的南向 APIs哪些网络设备连接。目前可用的一些控制器包括 OpenDaylight、开放网络操作系统 (ONOS)、Juniper Open Contrail、Brocade Vyatta 控制器(ODL 分发)、HP VAN 控制器等。
了解 SDN 产品的最佳经验法则:
- 阅读它的北行 API - 这告诉您您将能够在您的网络中监视、管理和控制什么。
- 找出它支持哪个南行 API - 这会告诉你它可能与哪个 switches/routers 一起工作。
一些 SDN 使用 cases/applications:
- DevOps/Admin 自动化 - 通过自动化使网络管理员或 DevOps 生活更轻松的应用程序和脚本。 OpenStack Neutron 是一个常见的例子。
- 安全性 - HP 提供 'Network Protector' 学习网络拓扑,然后监控 activity 提供警报 and/or 不合规行为的补救措施。
- 网络优化
- Brocade 提供 'Traffic Manager' 监控网络利用率并实时修改流量以根据定义的策略优化质量。
- HP 提供 'HP Network Optimizer',为企业 Microsoft Lync 用户提供端到端的语音优化路径。
- Lyatiss 实时配置 AWS 网络以满足应用程序需求。
- 监控课堂任务时间 - Elbrys 提供了一个应用程序,该应用程序为教师提供了一个仪表板,以实时监控学生的任务时间并导致个别学生重定向到他们选择的网页。 (免责声明:我在 Elbrys Networks 工作)
- OpenDaylight 项目提案页面 - https://wiki.opendaylight.org/view/Project_Proposals:Main
SDN的概念很简单。 SDN 将控制平面(即决策制定)与数据平面(实际转发操作)分离,并在它们之间提供 API(例如 OpenFlow API)。
图片来源:https://www.commsbusiness.co.uk/features/software-defined-networking-sdn-explained/
借助 SDN 架构,网络工程师不再需要学习针对不同供应商的专有 CLI 命令。他们可以专注于开发 逻辑集中控制程序 来做出网络全局决策并将其发送到网络交换机(数据平面)。 转储网络交换机(数据平面)收到控制器rules/decisions并相应地处理网络数据包,如果没有发现他们询问控制器的决定。
例如:在SDN架构 路由算法中作为控制器中的程序开发,它收集所有必需的元数据(例如交换机,端口、主机连接、链接、速度等)然后为网络中的每个交换机做出路由决策。而在 传统网络 中,路由算法在所有交换机中以分布式方式实现(即通常每个交换机都有自己的智能并做出自己的路由决策)。