半年前的博文Open vSwitch带来的巨变》中提到了SDN(软件定义网络),很开心看到目前国内关于SDN的讨论越来越火,关注SDN的云计算同仁们越来越多。国外基于SDN的产品化已经做的很不错了,我们国内有没有一些具体的项目,能让人切实感受到SDN的灵活性、敏捷性给云计算带来的好处呢?如果只给你一天时间,用SDN能做出些什么呢?这个Demo也许能带来一点启示:《一天时间,用SDN能做些什么》。(清晰版下载,只有4M多。 Demo下载地址)

在介绍Demo之前,我们先接着聊聊SDN

虽然近来才为人熟知,但SDN并不是一个很新的概念。网络牛人们在很久以前就提出了这个概念。远的不说,最近VMware斥资12亿美金收购的网络虚拟化公司Nicira,早在五年前就成立了,专注于网络虚拟化解决方案。至于学术研究、概念讨论,则开始的更早。

那为什么SDN在近两年才逐渐热门起来呢?这应该是云计算发展到一定阶段的一个必然。计算虚拟化、存储虚拟化是云计算首先要解决的问题,在这些方面成熟之后,网络虚拟化滞后的问题对云计算灵活性的制约越来越明显,为解决这些问题,SDN越来越受重视。

网络虚拟化滞后给云计算带来了什么问题?各家公司在推广自己的SDN方案时,通常会提到这样的现状:部署简单、快捷是云计算的一大优势,而目前阻碍部署效率的往往都是网络配置。例如,部署一批VM只需数十分钟到几小时,但在交付这些VM给公司内不同部门使用前,网络管理员还需要花费数天,甚至更长时间,配置接入、安全等策略。听起来有些骇人听闻,但各大公司反复在宣传材料里使用这一案例,应该是较为可靠的现实状况。传统网络的弊端在于,每当网络拓扑、安全策略改变时,都要手动逐个配置众多的网络设备。问题根源在于计算虚拟化已经使计算资源和底层硬件服务器解耦了,但VM所使用的网络资源和底层网络硬件还紧紧耦合在一起。

SDN想要达到的理想状态是,将VM所使用的网络资源和底层网络硬件解耦,并能通过软件方式灵活、快捷地进行管理配置。这样,就像给VM分配计算资源时不需要操作底层物理服务器一样,管理VM的网络配置时,也不再需要(至少不必频繁地)操作众多的物理网络设备。进一步还能把计算、存储上流行的ProfilePolicy-Based Management等管理方式引入网络领域。这些改变能极大提高云计算数据中心的部署和管理效率。VMware最近在推SDD的概念(Software-defined Datacenter), 切入点就是上述思路。

SDN的瞬间火爆,离不开业界一系列引人关注的事件,让人们看到了一个技术概念能够产品化并规模化应用的可能:

1.当人们还在怀疑Openflow,说“Openflow标准对大型产品化应用来说还很不够”的时候,Google宣布他们使用古老的Openflow 1.0标准,将自己遍布全球的WAN主干网SDN化了。太强大了!

一天之内用SDN能做出什么_sdn

2.VMware5.1版本起,全面推广VXLAN + Edge的网络虚拟化架构;并高调收购Nicira,将NVP网络虚拟化方案收入自己旗下;

3.Openstack宣布在下一个发布版中,Quantum项目将被囊括进来。

下面两张图解释了openstack要做quantum项目的原因:

一天之内用SDN能做出什么_软件定义网络_02

 

一天之内用SDN能做出什么_云计算_03

 

了解Quantum项目的人,可能觉得它还太简单以至于不能称作SDN,嫌弃它只做了网络隔离。但这只是它要解决的第一个问题,Quantum本身的架构,为以后支持firewallload balance等更复杂的功能做了充分考虑。现在已经有公司在做供quantum使用的load balance。而且从下图可以看出,quantum的引入,也是为了解耦,使得网络接入成为一种服务(Quantum口号:connectivity as a service),能够以软件化的方式,直接供Nova调用。

一天之内用SDN能做出什么_软件定义网络_04 

回到SDN本身,就像云计算刚开始时,各家对云的理解都不一样。目前大家对SDN的理解也多种多样,采用的技术并不唯一,各家的实现方案也不尽相同。SDN最终会发展成什么样?目前没人能说清楚。

总的来说,目前做SDN的大致分为两个门派:

其中一派主推“二次封装”。代表方案有:NiciraNVP(采用STT封装),VMwareVXLAN + Edge,微软的NvGre,这些都是Mac In IP的方案,还有AmazonMac In Mac私有方案 

另一派主推OpenflowGoogle的方案是对Openflow enabled SDN强有力的背书。业界甚至有“SDNOpenflow绑架”的说法。

扯的有点多,回到DemoDemo主题的选择,没有重复业界已有的SDN产品,因为上面介绍的各种方案,都能搜到详细文档。而且上述multi-tenant隔离、软路由等方案也不是“一天”就能做出来的。主要想分享一下SDN能带来的灵活性、敏捷性,所以另辟蹊径,选择了半年前做的一个“基于SDNWeb访问控制”的原型系统,抛砖引玉,希望能带来一点启发。

在传统方案中,Web访问控制通常工作在网络边界处,例如proxyfirewall等,对http数据包进行分析、丢弃或者重定向。例如zscaler的一款Web访问控制产品,就是工作在proxy上。

一天之内用SDN能做出什么_sdn_05

 

该方案中,所有http数据包都是在到了网络边界的时候,才被甄别。非法数据包在内网飞来飞去。另外proxyfirewall本身还有其他工作要做,web访问控制增加了它们的负载。

有没有可能做些改变呢?例如,把proxyfirewall从这项工作中解放出来,让它们专注于其它工作。同时,缩短非法数据包在内网的生存期,在离VM最近的地方,对数据包进行分析、丢弃或重定向。通过引入SDN,可以实现上述构想。

一天之内用SDN能做出什么_sdn_06

 

在对云里的VM进行web访问控制时,该系统如何与云计算中心控制节点交互?是否提供命令行配置?是否支持运行时实时配置?

该系统提供三种实时配置方式:

1.       提供了python控制台,用户可通过命令行进行配置;

2.       接触到的公有云公司,有用python做总控节点的。该系统提供的第二种配置方式,支持云计算中心控制节点通过传参调用python脚本的方式进行实时配置;

3.       暴露REST API,云计算中心控制节点可以通过远程REST调用进行实时配置。

 

该系统实现了四种基本的Web访问控制:

Pass_all : 允许所有网页访问

Deny_all : 屏蔽所有网页访问

White_list : 允许白名单上的网页,屏蔽其它

White_list + Redirection : 允许白名单上的网页,其它网页自动重定向到指定网页

做这个原型的过程中,SDN的灵活性、敏捷性给我留下了深刻的印象。半年前的某个周末,着手做这个事情,该原型系统主体部分,一天左右就完成了。

好了,不多啰嗦了,上视频!

在线视频网址:《一天时间,用SDN能做些什么》

这次做Demo,还顺道给各家视频网站做了一把测试,优酷、新浪、腾讯试了个遍,发现视频网站们二次转码压缩的太狠了,明明上传的是divx的高清视频,转码之后却超级模糊。相比之下,腾讯的效果稍好一些。如果还是觉得看不清,请移步微盘下载清晰版,只有4M多。 Demo下载地址

纯属抛砖引玉,希望能看到大牛们关于SDN更多的分享。欢迎拍砖!

微博 http://weibo.com/bengocloud  Email: cloudbengo at gmail dot com