很多人都不了解OpenFlow和软件定义网络(SDN)之间的差异。这并不奇怪,因为这两种技术是如此地紧密相关。然而,它们又是不可替换的。OpenFlow是配置网络交换机的一种协议,采用的过程类似于API。而SDN则是描述网络基础设施内部可编程接口的一个术语,这样的接口可以让网络服务的配置高度自动化。SDN正在被市场营销人员所滥用,用来指称各种不同的技术。
事实上,SDN的定义很清晰。一个SDN网络有三个架构层:物理网络、SDN应用和SDN控制器。我们来仔细分析一下这三个层。
物理网络。这是网络的最底层,由各种物理设备构成,形成所有IT基础设施的基础。我们之所以使用术语“交换机”,是因为OpenFlow改变了以太网交换机的工作方式。就本文而言,你还要考虑物理基础设施的虚拟交换机部分。
SDN应用。这是SDN设计中最容易看到的层,是交付各种服务,如交换机/网络虚拟化、防火墙和流量均衡器(注意:基于OpenFlow的负载均衡器叫做流量均衡器)等的各种应用所在的层。这些应用有点儿类似于我们今天在专用硬件上所使用的软件。网络中的大部分创新都将出自SDN应用。
SDN控制器。SDN控制器是中间件,是整个SDN架构的关键所在。该控制器必须与网络中的所有物理和虚拟设备相集成。该控制器通过与物理网络设备相应的SDN软件中去抽象各种物理设备。控制器与网络设备之间是高度集成的。在OpenFlow环境中,控制器将使用OpenFlow协议和NETCONF协议与交换机进行通信(OpenFlow是API,它发送流数据给交换机,而NETCONF则是网络配置API)。
在现有的各种SDN方式中,一般是厂商提供应用,控制器是单一产品。举例说,Nicira/VMware将其应用于控制器打包成一个专利的应用堆栈。思科则将其控制器打包成OnePK产品,嵌入思科设备上的IOS软件中。我预计思科不久也会发布一款主控制器。Big Switch最近发布的商用版本SDN控制器可提供在控制器上运行的两个应用:Big Virtual Switch和Big Tap。
显然,控制器是网络架构中的关键。它必须为各种应用提供API,才能让应用呈现其有用的功能,所以争夺SDN市场统治地位的最激烈的战争也将在这里发生。