什么是可编程网络?
可编程网络是指网络设备的行为和流量控制由独立于网络硬件运行的软件处理的网络。可编程网络的基本性质是将底层物理硬件与设备的控制软件分开。
网络可编程的历史
当可编程网络的概念首次出现时,它是计算机网络发展史上革命性的一步。它与网络管理员长期以来使用的呆板的网络配置方法形成了巨大的范式转变。
传统上,网络管理员在配置网络中的每台设备时都是相互独立的。他们使用命令行界面(CLI)逐一键入数百条命令,直到一组设备按照它们应有的方式转发处理流量。
当时也有一些自动化技术,但大多采用繁琐的脚本语言或剪切和粘贴的形式。例如,管理员可以剪切和粘贴更改本地化的设备信息,如 IP 地址。然而,随着网络设备的激增,这种自动化水平开始变得不够用。
网络的可编程性指什么,它与 SDN 有什么关系?
通过将硬件与控制软件分离,网络可编程性使软件对整个网络有了更广阔的视野,形成了众所周知的万丈高楼平地起的局面。现在,软件可以在一个地方进行编程,使用控制器来协调构成网络的其他硬件设备的配置。
这一发展促成了软件定义网络(SDN)的诞生。现在,SDN 这一术语在普通网络词汇中已基本取代了通用术语可编程网络。
云原生、全栈可编程的下一代SDN解析与实践丨传统SDN架构演进
实现网络可编程性的基础协议
通过使用 OpenFlow 等协议以及其他开放和专有标准,网络管理员现在可以在同一时间、同一地点对网络进行控制和编程。所有底层硬件都能协同工作,就像有人在每台设备上输入了所有 CLI 命令一样。这一重要进步使可扩展网络能够达到支持不断增长的云和容器化工作负载所需的规模和范围,从而对基础设施造成更大压力。
应用程序接口
可编程网络还促进了应用编程接口(API)的发展。API 是一种软件结构,其存在的时间几乎与计算机的存在时间一样长,它能让一个软件与另一个软件对话。
控制器使用 API 与受其控制的设备对话。但软件控制器本身可通过行业标准的 RESTful API 进行访问,使任何人都能编写定制软件来协调可编程网络。
基础设施即代码 (IaaC)
使用 API 控制网络的过程现在已经司空见惯。除最小的网络外,现代网络的规模和范围根本不允许旧式的逐设备配置。随着企业开始采用虚拟化、容器化和云部署,另一个被称为 “基础设施即代码”(infrastructure as code)的概念已经深入人心。”基础设施即代码 “是指在抽象硬件层的基础上,使用软件从头开始构建一个完整的网络,包括存储和计算。
可编程网络的优势
与传统网络相比,可编程网络有以下几个优点:
- 降低长期成本;
- 应用程序能够维护有关设备功能的信息;
- 网络能够对应用状态和资源需求做出响应;
- 更好地分配带宽和资源;
- 流量整形的数据包优先级;
- 提高操作灵活性和透明度。