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