最近SD-WAN在业界炙手可热,越来越多的企业客户准备或已经上马SD-WAN。在此风生水起之际,各式各样的SD-WAN供应商自然轮番出招、应接不暇。笔者在深入接触了一些国外主流商用SD-WAN厂家的技术方案后,希望能对这些主流商用SD-WAN方案中所采用的最根本的SDN特性进行一些分析,供大家讨论。

主流商用SD-WAN方案真的算是SDN吗?_java

说实话笔者在深入了解业界主流商用SD-WAN之前,对SD-WAN名字中Software Defined的认知更多的停留在传统SDN所强调的控制面和转发面分离的模糊概念上。笔者曾先入为主的以为SD-WAN中采用的转控分离就是沿袭学术界SDN的经典套路,采用类似Google 基于Openflow 构建的横跨全球数据中心的B4 SD-WAN 的思路--毕竟Google 的B4 WAN是 SD-WAN的鼻祖啊。


然而在初步接触了几大商用SD-WAN厂商的技术方案之后,笔者骤然有种被欺骗的感觉:这些SD-WAN解决方案中所谓的“SDN Controller” 其实就相当于一个大家已经使用了快20年的BGP Route Reflector, 和 SDN 没什么关系。这完全颠覆了笔者的世界观,令我非常的失望和不安。


但随着进一步的深入了解,笔者发现这些所谓的“SDN Controller” 和传统的BGP Route Reflector 虽有神似,实则不同。具体说来,这些冒牌的"SDN Controller" 虽然没有像学术界或Google B4 SD-WAN所使用的SDN Controller中转控分离做的那么理想和纯粹,但确实也继承了SDN的一些神韵。如此一来,SD-WAN的名字也算差强人意。下面就请听我慢慢道来:


首先我们来讲讲主流商用SD-WAN方案中这些所谓的"SDN Controller" 和传统的 BGP Route Reflector 究竟有多么的相似。我们借用全球SD-WAN Top 2 厂商 Viptela 的一张系统架构图(图一)来解释一下。(注:目前Viptela 和 VeloCloud 谁是SD-WAN市场老大还存在争议,但他们两个以及绝大多数SD-WAN厂商的系统架构都非常类似。另外有趣的是,这两个Top 2 Vendors 最近分别被Cisco和VMware收购了, 可见这个市场的热度, 竞争的激烈, 以及日趋饱和)。

主流商用SD-WAN方案真的算是SDN吗?_java_02

图一:Viptela SD-WAN 系统架构

在图一中,vSmart Controller 就是Viptela 所谓的 “SDN Controller”, 用来负责与用户各个站点的CPE设备(图中的vEdge Routers)进行通信从而交换用户各个站点之间的路由信息。所以从控制平面来看,各站点的CPE设备彼此之间不再交换路由信息,而是统一发送给中心控制器。之后再由中心控制器将路由信息传递给其他的CPE设备。这种集中控制的思想正是SDN的精髓所在。然而如果仔细来看这些CPE设备与中心控制器之间是如何来交换路由信息的话,我们发现目前主流SD-WAN厂商都是采用基于BGP协议的路由交换 。BGP? 是的,您没有看错,正是那仙福永享,寿与天齐的BGP,而不是因为SDN炒的火热的新贵小开OpenFlow(注:通常SD-WAN 厂商都会在BGP的基础上做些改动和扩展,比如Viptela将改动后的BGP协议称为Overlay Management Protocol (OMP), 具体细节可以参见他们为OMP申请的专利:https://www.google.com/patents/US9467478。)


看到这里,各位看官可能会有这样的疑惑:如果CPE设备和中心控制器都是基于BGP的路由交换,那么这和传统的BGP Route Reflector有什么区别呢?(注:这里附上一个传统的BGP Route Reflector 的架构图供您参考,其中心思想就是各个BGP Router之间不再建立网状的BGP Session来交换路由,而是统一发给中心的BGP Route Reflector ,再由他传递给其他所有的BGP Routers。可见其与SD-WAN 里的SDN Controller多么的相似)

主流商用SD-WAN方案真的算是SDN吗?_java_03

图二:传统的BGP Route Reflector架构

BGP Route Reflector早就有了, 比今天大家热炒的SDN早了快20年。这些主流SD-WAN厂商所采用的技术真的算是SDN 吗,还是挂羊头卖狗肉,新瓶装旧酒?


这种疑惑伴随着笔者许久,直到笔者仔细研究了这些SD-WAN厂商对BGP协议的改动和扩展,以及这些解决方案中对集中式Policy的强调和使用,才发现SD-WAN里的SDN Controller大大超出了传统BGP Route Reflector的能力范围。下面是笔者总结的所谓的SDN Controller与传统BGP Route Reflector的几个主要区别:


1.目标的不同

传统的BGP Route Reflector 主要是为了解决iBGP网络里对BGP Router之间需要Full Mesh互联的问题。BGP Route Reflector 可以有效的将所需的BGP Session的总量从Full Mesh时的N^2的数量级降低到Hub-Spoke时的N的数量级。这对减少超大规模的BGP网络的复杂度非常重要。


而反观 SD-WAN 里的 SDN Controller, 它最主要的目的是提供一个集中管理和配置Overlay网络的工具。同时SDN Controller除了提供以Hub-Spoke方式的路由交换,还提供了简化的安全密钥交换(用于数据平面CPE设备之间IPSec隧道的建立),中心化的Policy 控制,以及VPN 标签的分配,等等。所以SD-WAN中的SDN Controller的目标和功能远远超出了传统BGP Route Reflector单纯的路由交换。


2.路由传递实现方式的不同


传统的BGP Route Reflector在交换路由时,只是简单的将从一个CPE Router处收到的路由信息原封不动的“反射”给其他所有的CPE Routers, 这也正是Route Reflector (路由反射) 名字的由来。


然而 SD-WAN里的SDN Controller 在收到从一个CPE Router 发出的路由信息之后,在SDN Controller 做了很多的计算和处理,然后才将过滤和处理后的路由信息发给相应的CPE Routers (注意不一定是其它所有的CPE Routers)。通常SDN Controller 所做的处理包括:根据用户定义的Policy来修改路由的参数,综合所有已收到的路由信息计算出到达任何用户子网的最佳路由,将上面计算出的最佳路由信息发送给某些特定的CPE Routers (具体由用户Policy决定)。从这里我们再次可以看到 SD-WAN里的SDN Controller 比传统的BGP Route Reflector 要复杂得多,功能也要强大的多。


当然除了以上总结的两点主要区别以外,他们之间还有其它一些小的区别,比如路由所携带的参数信息,最佳路由的算法等,此处不再展开。


如果您能坚持看到这里还没有睡着或者改刷朋友圈的话,那么恭喜您!-您已经掌握了目前市场上主流SD-WAN厂商所使用的最核心的路由技术及其与SDN这个大帽子的真正关系。当然SD-WAN不仅仅是SDN,我们今天所讨论的路由技术也只是SD-WAN所使用的众多技术中的一个。虽然笔者认为如何在Overlay层面构建路由是SD-WAN最核心的关键技术,然而我们不得不承认SD-WAN在Overlay路由基础之上所提供的多种多样的功能和服务(比如Application Aware Routing, 集中化和界面化的Policy Control, Zero Touch Provisioning (ZTP), VPN 和 Segmentation )才是SD-WAN真正吸引客户的地方。关于SD-WAN那些琳琅满目,吸引客户争先恐后掏出荷包的功能,我们下次再专门找个机会聊一聊。