认识一个人往往是从姓名开始,技术也是一样,因为名称往往是最精炼的介绍,涵括了技术最显著的特征。认识SDN,我们就从名字开始。SDN全称“software defined network”,即“软件定义网络”,从字面来看就是由软件为主导的网络。
目前的网络中也有软件,不过是设备商写死在设备中的,设备商并没有向网络用户开放这些软件,于是网络用户顺理成章的受制于设备商了。长期受着设备商的压制,花大价钱却得不到理想的网络,网络用户的小宇宙终于爆发了。网络用户大力推广SDN,试图以此摆脱设备商的钳制。
与传统网络不同的是,SDN中不仅有大量软件参与,而且软件占据主导地位。或者说,SDN是一种更智能的网络。假如传统网络是一个机器人,主人说“我要吃宫爆鸡丁”,那么机器人就会搜索已存的菜谱,根据菜谱做出一道宫爆鸡丁。但是如果主人今天想吃重口味的宫爆鸡丁,要求加变态辣,又或者主人今天上火,要求宫爆鸡丁不加辣,那么这种机器人就没法满足主人了,除非去找厂家重新写下代码,给增加几个固定选项,但是终归还是固定的,死板的。而SDN机器人就不一样了,将编程权利转交给主人,主人可以根据自己的喜好进行设置,不需要一直求助厂家。简而言之,SDN实现了网络的可编程性,不仅将网络控制权转移到用户手中,而且大大提高了网络的灵活性。
从名称可以大致了解SDN的涵义,但是并没有明确的概念,因此很容易产生误解。我们不仅需要知道SDN是什么,还应该明确SDN不是什么,这样才能更加立体的认识SDN。常常与SDN混为一谈的是OpenFlow,但实际上这两者并不等同。SDN并不是一项技术,而是一种网络架构,或者说是一种理念,符合这种理念的网络就可以认为是SDN网络。似乎SDN显得有点抽象,而OpenFlow不然,OpenFlow是SDN架构中的一种南向接口协议,也就是说没有OpenFlow协议的SDN网络依旧是SDN网络。之所以两者经常被混淆是因为OpenFlow是最具SDN特色、最有影响力的南向接口协议。
另一个经常与SDN同时出现的词是NFV(network function virtualization),从名称来看两者就不是一回事。SDN和NFV是两种概念,之所以常常同时提起是因为两者有很强的互补性,不过NFV并不依赖SDN的部署,二者的关系属于可以各自独立,但是融合在一起会产生一加一大于二的效果。
除了“你叫什么?”另一个常问的问题便是“你是哪里人?”诞生地让别人更了解你。SDN也是一样,了解SDN的起源可以帮助我们更全面的认识SDN。有人将SDN戏称为Stanford defined network,原因是SDN诞生于美国GENI项目资助的斯坦福大学Clean Slate课题。
首先我们了解一下Clean Slate项目。Internet凭借其松散型和简单性获得了巨大的成功,但是Internet与生俱来的缺陷集中在可扩展性、安全性、移动性和QoS,虽然在无类域间路由CIDR、网络地址翻译NAT、MPLS等技术缓解了这些问题,但是并没有从根本上解决问题,反而将互联网的小蛮腰补成了水桶腰,失去了最初的那份简单。于是越来越多的人认为重新定义网络架构或许是解决问题的根本方法,这种根本方法就是Clean Slate方案。Clean Slate有广义和狭义之分,广义泛指各种各样的下一代网络项目,狭义指有斯坦福大学Nick McKeown教授领头的实验室研究计划,而SDN就诞生于狭义Clean Slate。
Nick McKeown的学生Casaso在工作期间深刻意识到网络的复杂性、封闭性与不安全性,他认为想要彻底改变这种状况就必须进行网络改革。于是Casaso提出了一个关于网络安全与管理的项目Ethane,该项目试图通过一个集中式控制器定义基于网络流的安全控制策略,并将安全策略应用到各种网络设备中,从而实现对整个网络的控制。而该项目中的控制器就是NOX,为了让NOX更好地管理交换机,于是OpenFlow协议随之诞生了。这个项目得到了Casaso的导师McKeown的重视,给予了大量指导,此后McKeown及其团队基于OpenFlow进一步提出了SDN的概念。
说了这么多关于SDN的花边新闻,那么到底什么是SDN呢?简而言之,就是控制与转发分离。正如下图所示将控制层与转发层剥离,转发层只负责转发数据,控制、管理决策由控制器下发,网络管理员可以通过控制器管控网络行为。转发层面与控制层之间通过南向接口连接,而控制器与应用层之间通过北向接口连接。而最具代表性的南向接口协议就是OpenFlow了。