SDN基础:网络可编程性
网络工程师通常会使用命令行接口(CLI)或图形化用户界面(GUI)来配置网络设备。虽然这种工作方式很普遍,但是这里也有一些问题。实现复杂的网络配置可能要求工程师分别配置几个不同的网络设备。这个过程非常耗费时间、繁杂且容易出错。系统管理员可以使用一些自动化工具(如Puppet )来简化他们的工作。尽管简单网络管理协议(SNMP)远处不在,但是网络工程师从未有一些能够处理任务分配的可预言管理工具。
网络可编程性旨在转变原先的做法:通过提供应用编程接口(API),通过编程语言向网络设备发送强大的编程指令。使用这种API,就意味着网络分配不需要网络工程师通过发送CLI来实现,而是通过一些支持网络编程的工具来实现。下面是一些例子:
网络工程师可以使用脚本创建自动化分配任务,或者收集网络统计信息。(虽然网络工程师现在可以使用脚本,但是他们通常只是对CLI或SNMP交互的一种封装而已。)API可以提供更丰富的功能,也可以为工程师创造可以协作的生态系统。
编排工具可以整合网络分配任务和其他用于开发业务应用程序的任务。
网络应用程序可以作为中央控制器的插件,它们可以给网络环境增加功能,概念上很像一个类似于智能手机的应用程序。
许多网络供应商一直在努力开发能够完全利用网络硬件特性的自定义API。思科和瞻博网络就是这样的。虽然思科的onePK在早期提供了一个API库,它允许对运行IOS、IOS-XR和NX-OS的各种思科网络硬件进行编程。瞻博的Junos一直有XML API;甚至它的CLI都会生成XML代码,然后再发送到底层操作系统。
在提及网络可编程性时,不可避免地要涉及OpenFlow。在开放网络联盟成员的稳定支持和开发下,OpenFlow已经成为使用中央控制器实现网络编程的主流方法。OpenFlow是一个不依赖供应商的标题,它描述了如何编程控制一个网络交换机。它使用各种匹配条件(MAC地址、IP目标地址等)来标识特定的流,然后在这些流上执行一些操作(通过端口X转发、丢弃数据包等)。掌握整个网络拓扑信息的OpenFlow中央控制器可以在所有网络交换机上通过编程实现这种行为。
开源的OpenFlow控制器有Beacon和FloodLight。在交换产品中支持OpenFlow的网络供应商有惠普、瞻博、Pica8、思科等。虽然OpenFlow在概念上很庞大,但是它也遇到了规模和兼容性问题,因为OpenFlow操作经常无法与网络芯片相匹配,从而导致不同的供应商在“兼容OpenFlow”时会遇到各不相同的问题。因此,OpenFlow的未来并不明朗。