软件定义网络:SDN与OpenFlow解析
上QQ阅读APP看书,第一时间看更新

蒋林涛推荐序

软件定义网络(SDN, Software Defined Networks)是美国斯坦福大学提出的,它是以OpenFlow为基础,为了建设网络的创新平台设计的。目前SDN的概念已经被泛化,泛化后的SDN目标大体有:简化网络操作,提升网络性能,提供网络创新平台,研究下一代网络技术。SDN不仅是Software Defined Networks的缩写形式,同时也是Software Defined Networking和Software Driven Network的缩写形式。

上述“三种”SDN,从应用场景角度可以分为两类。一类是用于创新网络的场景,基于OpenFlow的Software Defined Networks;另一类是为了简化网络操作、优化网络结构和性能的Software Defined Networking和Software Driven Network。

第一类SDN主要用于创新网络场景,可以生成新的网络。具体步骤是:(1)提出对新型网络的技术需求;(2)提出新型网络的完整的体系架构和总体技术要求(即完成网络的顶层设计);(3)设计流表,开发软件,生成新型网络;(4)能力开放(API),北向接口开放;(5)控制器中增加软件定义能力。第一类SDN基于OpenFlow,与OpenFlow紧密关联。应用场景大体上有两个方面:网络技术的创新平台,以及研究和生成新型网络。

第二类SDN与OpenFlow没有必然的关联。尽管在很多场合还是使用了OpenFlow,但不用OpenFlow也完全不影响它的工作。这类SDN中又可以分为软件驱动网络(Software Driven Network)和软件定义组网(Software Define Networking)两类。

软件驱动网络(Software Driven Network)的设想是很合理的,那就是业务层(Service Stratum)和传送层(Transport Stratum)间需要接口以便互控,这个接口就是SDN中说的网络北向接口。从表面上来看,北向接口问题解决起来好像很简单。实际上,当网络规模不大的时候的确不难。但随着网络规模的扩大,问题就来了。目前所想到的办法都存在严重的扩展性问题,是无法真正实用的。由于机理中的基因缺陷,北向接口做起来很难。

软件定义组网(Software Define Networking)就泛化了,大体上等于:(1)智能网管+QoS路由+软路由器;(2)网管能力开放(API);(3)网管中增加软件定义能力;(4)网管智能化,网络能力虚拟化和智能化等。目前提出的绝大多数的SDN应用场景都属于这一类,一般来说对局部、小范围都是有效的,但规模大了都很难实现。控制与转发分离只是SDN的特征之一,不是其主要特征。控制与转发分离有好处也有坏处,不是一概都好。一般来说,集中控制做不大,扩展性差是通病。它的适用场景是:改造现有网络,简化网络操作,提升网络性能。

本书前言中提到一种很神奇的动物:鸭子。作者明确说道:“鸭子游动时大多数的动作都在水下完成,而这些动作是无法轻易观察到的。强健的脚掌在水面下滑动着,推动鸭子前进,这与软件定义网络在很多方面有着相似之处。”以此来表述作者对SDN的看法。当然,中国的一般说法是:“鸭子什么都会做,但什么都做不好。”本书前言中提到的鸭子,给读者对SDN留下了一个很宽泛的想象空间。

国内对SDN的看法分歧很大。有高度看好SDN的,认为它是网络界的救星,能够为网络带来翻天覆地的变化;有一般看好SDN的,认为这是一种局部技术,在局部对网络优化是有贡献的;也有完全不看好SDN的,认为它是网络界在包装上的一场炒作。当然,这些看法都有道理,都是从各自的期望出发的。我是看好SDN的。近期,SDN可以用于在局部范围内改造网络,优化网络结构,提升网络性能;远期,SDN可以成为网络创新的潜在实现技术。

目前的SDN技术还非常初步,在体系结构上、协议上、硬件上都有很大的开拓空间。但从SDN的发展来说,真正困难的是对网络的理解,网络的顶层设计。SDN的机遇与挑战共存,机遇大于挑战。因此,必须明确方向,摆脱盲从思维,坚定地走自己的路。

工业和信息化部电信研究院科技委主任

2014年3月于北京