许多人都不理解OpenFlow和软件定义网络(SDN)之前的区别。毫不奇怪的是,因为这两个技术是紧密关联的,所以许多人有这样的疑惑。不过,它们并不是可以互相交换的。OpenFlow是一个协议,使用像API(应用程序编程接口)这样的流程来设置网络交换机。SDN是一个术语,描述的是在网络基础设施内部提供可编程接口来实现网络服务配置的高度自动化。SDN术语已经被许多市场行销人员滥用,这些人将这个术语用在了许多技术上。
实际上,SDN可以被明确定义。一个SDN网络有三个架构层:物理网络、SDN应用程序、SDN控制器。让我们一个个来看看。
物理网络。最底层包含网络中构成所有IT基础设施的基础的物理设备。我们使用“交换机”这个概念,因为OpenFlow改变了以太网交换机工作的方式。在本文中,你还可以考虑物理基础设施中的虚拟交换机部分。
SDN应用程序。SDN设计中最具有可视性的层是提供服务(比如交换/网络虚拟化、防火墙和流量均衡器)的应用程序。(注意,基于OpenFlow的负载均衡器被称为流量均衡器。它们并不是传统负载均衡器,因为它们不能读取数据包内容)这些应用程序与那些软件运行在专门硬件上的情境中的应用程序基本类似或相同。网络技术中大部分即将到来的创新将发生在SDN应用程序上。
SDN控制器。SDN控制器是中间件,由服务器作为整个架构的轴心。控制器必须和网络中所有物理以及虚拟设备整合。控制器将物理网络设备从与这些设备协同工作的SDN软件中抽象化出来。控制器和网络设备之间有高度的整合。在OpenFlow环境中,控制器将使用OpenFlow协议和NETCONF协议来与交换机对话。(OpenFlow是发送流数据到交换机的API,而NETCONF是网络设置API。)
SDN:基本架构
在目前的SDN方式下,厂商在单一产品中提供应用程序和一个控制器。例如,Nicira/VMware将它的应用程序和控制器封装在单个专有应用程序堆栈中。思科将会把控制器内嵌到设备上的IOS软件中,从而把它的控制器封装到OnePK产品中。Big Switch Networks最近发布了商业版本的SDN控制器,提供运行在控制器上的两个应用程序:Big Virtual Switch和Big Tap。
显然控制器是网络架构中的关键部分。它必须将API呈献给代表有用功能的应用程序。API也是厂商在SDN市场主导权上竞争最激烈的地方。
SDN API:新的战场
一个SDN架构有两个不同的网络API:北向和南向。OpenFlow是一个南向API。OpenFlow是一个行业标准的API,它可以设置以太网交换机内帧转发芯片并定义通过网络的流路径。此外,监管OpenFlow协议的标准实体Open Networking Foundation(ONF:开放网络基金会)发布一个用于设备设置的API,即所谓的OF-CONFIG。OF-CONFIG使用NETCONF XML数据格式来定义语言。
思科的OnePK也是一个南向API。在OpenFlow是否足够满足所有网络需求的问题上有许多争论,尤其是关于从基于包的网络到基于流的网络的迁移上。目前还有一些会妨碍这种迁移的问题,比如需要和现有协议(比如STP和OSPF)之间有互操作性。