当前,软件定义网络(SDN)成为业界一个时髦的话题,SDN技术及其可能带来的影响受到了学术界和产业界的高度重视,同时也存在着对SDN不同的理解和认识。本文试图从梳理SDN技术的发展脉络入手,分析SDN技术的内涵、本质特征、应用领域、发展趋势,进而分析SDN技术发展带来的影响。
一、“众说纷纭”SDN
目前对SDN关注度比较高的专家大致可以分为三类:IDC设计与运维人员、数据设备设计研发人员、未来网络研究与试验人员。这三类专家关注SDN的出发点及对SDN的认识不一样,对SDN的发展愿景和期待也各不相同。一项新技术出现后,对于追溯这个概念最早是谁提出、何时提出以及是不是一个新概念等种种讨论通常只具有学术意义,对于认识新技术的本质并无实质性帮助。讨论SDN概念还是要从其真正市场需求入手。
(1)SDN商用需求最早出现在数据中心内部
IDC内部网络为了支持应用服务器上虚拟机的迁移,通常是一个二层网络,因为如果采用三层组网,那么虚拟机迁移时,虚拟机对应的应用服务的IP地址要跟着变化,带来业务部署和管理的困难,而二层网络则没有这个问题。
但是,在IDC内部直接应用既有的二层网络技术,则会主要带来以下两方面的问题:一个是在二层网络中,为了消除广播包的环路,通常采用生成树(STP)协议,在网络节点之间构建一棵逻辑树,节点之间的流量按照这个“树状”拓扑来传递,即使网络节点之间有多个物理链路,也只有一条链路真正传递数据,其他链路都是空闲的(只起备份作用)。但是,在IDC内部,多个服务器之间存在着频繁的数据交换需求,基于STP的树状网络拓扑不能高效支持这种“横向”流量,服务器之间的空闲链路也造成了网络资源的大量浪费,因此基于STP的二层网络对于IDC来说过于简单,需要进行变革,尤其是随着云计算的发展,这种IDC内部二层组网需求越来越迫切。另一个问题是通常IDC内部的应用服务器众多,有的达到上万台,甚至十几万台,二层交换机需要利用ARP等协议,学习接收到的数据包的源地址来建立MAC地址表,由于应用服务器多,所以MAC地址表项也多,通常会超过常规二层交换机MAC地址表的容量,则造成大量MAC地址无法进入MAC地址表,二层交换机对于无法在MAC地址表中查到的MAC地址对应的数据帧进行二层域内的广播,造成二层网络内部的流量泛滥,影响IDC内部网络效率。
造成上述两个问题的根本原因是,传统的二层网络设计的过于简单,二层交换机只会学习MAC地址,不会基于MAC地址来规划数据转发路径,也就是说传统二层网络中没有一个控制平面(或者说控制平面的功能非常非常弱,且与转发功能融合在一起),只有数据平面(负责数据帧的转发)。因此在二层网络中增加控制平面(或者说强化控制平面功能),负责较大的二层网络内部节点间的流量调度和管理成为了一种迫切需求。目前较为主流的解决思路,就是利用IS-IS路由协议的变种来构建控制平面路由功能;利用Openflow来定义控制平面与转发平面之间的接口。这就引出了控制平面与转发平面分离的概念。但这只是二层网络中的控制平面与转发平面的分离。
(2)SDN商用需求来自于路由器内部功能优化
在传统路由器中,负责路由规划、选路策略的控制平面与负责数据封装、高速转发的数据平面之间的接口是不开放的,是紧耦合在一起的。每个厂家都通过自有的协议或接口来连接控制平面和转发平面,这也是CISCO、JUNIPER等优势厂商维持技术壁垒、排挤新兴厂商的优势所在。