由SDR看到Open API for network,再看到SDN,OpenFlow。照我目前的理解,SDN之于路由器,就像虚拟机之于服务器,就像Android之于手机。下面这张来自Nick McKeown的图也许能比较好的表现SDN和Openflow的概念。

在维基百科上SDN是这么解释的:

Software Defined Networking是Kate Greene 创造的一个词,在大约2009年提出的。它是指网络的控制平面与实际的物理上的拓扑结构互相分离。这种分离可以使控制平面用一种不同的方式实现,比如分布式的实现方式;另外,它还可以改变控制平面的运行环境,比如不再运行在传统的交换机上的那种低功耗CPU上。

OK,所以关键点是控制平面与数据平面是分离的。OpenFlow,就是连接这两者的桥梁,是两者之间的通信协议。控制平面与数据平面分离,听起来好像没什么新意。新的地方(真的很新吗?)在于,两者在物理上是分离的,控制平面在一个服务器上运行,数据平面在一个路由器上运行。

(TR10:Software-Defined Networking)这篇文章介绍了OpenFlow的主要思想:给路由器安装一个小软件OpenFlow,然后研究人员就可以很容易的改变路由器的路由规则等等,从而改善网络质量。

其实现在的路由器也给用户留下了接口,允许用户修改协议,但是这些接口或者说应用程序是厂家设计的。比如Cisco的路由器装的是Cisco的软件,Huawei的路由器装的是Huawei的软件。而OpenFlow就像一个中间层,它屏蔽了底层硬件的差异,对上面的控制软件提供了统一的接口。于是运营商或者局域网的管理员,可以在很大的范围内,快速的,对各种厂家的路由器做相同的配置,从而实现某个功能,能够快速的提供某种业务。

总的来说,OpenFlow的作用跟虚拟机或者Android有点像,屏蔽硬件差异,提供统一接口,建设开放平台,鼓励快速的、多样化的创新.

这里有一个很好的SDN的简介, “How SDN will shape networking” by Nick McKeown from Stanford Univ.