大家好,非常高兴今天能有这个机会跟大家分享一下工作中的一些探索。之前有很多专家,有的讲了站在这个市场和战略的角度,跟我们分析了一下SDN的大好前景。有的专家给我们介绍了他们开发的一些很好的产品,非常好。也有的专家给我们讲了他们在虚拟化和网络设计中的一些宝贵的经验。今天下午的主题是SDN和NFV的应用和探索,我今天来就是想围绕这个探索跟大家分享一下工作中的一些思考、反思。我个人是在联想研究院云计算部门,平时的工作就是做一些网络相关的设计以及功能开发,有时候甚至还写一些代码。
我这个题目是大规模异构混合云环境下的虚拟化网络架构设计,好处大家看就知道,我可能会讲的东西是什么,作为一个技术人员,在我熟悉的领域跟大家讲一下。台下相信也有很多技术人员,如果说我今天的分享能让大家有一些思考或者共鸣,我倍感荣幸。
我们今天所讲的大概是这样的,首先提出我们的问题是什么,基于这些问题我们怎么样的一个思路,我们这个思路是怎么样由粗到细,最后得出我们的架构,最后讲讲我们实现的方案有哪些,最后看看我们的效果怎么样。在最后就是我个人的思考以及展望。
在云计算和大数据的浪潮中,我们说云计算它主要的三个核心模块,一个是计算,一个是存储,一个是网络,网络不仅是服务于最终客户,它还同时服务于云计算中其他的两个重要的组成部分,一个计算,一个存储,它们都依赖网络。网络随着应用的发展、大数据的发展,这个网络的规模要求越来越大,网络上的应用也越来越多。现在上千台的服务器已经很常见了,上午有个专家讲了他们的环境里面,甚至有上万的服务器。他们成千上万的这些网络节点,它们之间的通信需求如何满足,在云计算的环境下要求他们尽量做到二层互通,因为只有二层是即插即用的,是最简单的。
第二个异构环境的问题,异构环境是我们现在相互通信的节点之间有物理服务器,也有虚拟机,甚至有物理的交换机,也有虚拟的交换机,包括是不同网络之间的通信,如何满足异构环境下的通信需求,也是现在越来越突出的问题,给我们网络设计提出了不小的挑战。
第三个就是流量模型,网络虚拟化之后,随着现在各种分布式系统的出现,以及火热发展,这个网络里的流量不仅仅是南北向的,还有东西向的,甚至现在东西向的流量都变得很大。比如说一个存储系统,它背后会做一些备份,它默认的情况下有三份备份,它要求这个备份不仅在本地机架,甚至有时候要异地备份,为了可靠性。这些也是对我们的流量模型,对我们的网络架构会产生很本质的影响。
第四个方面就是混合组网,物理服务器和虚机之间互联连互通的时候,异构环境下把它们连起来。但是现在的应用要求物理服务器不仅仅连通起来,甚至需要像虚拟机一样用起来。有时候要给这个虚拟机做一个快照恢复到物理设备上,物理设备做一个快照到虚机上。
我们看看现在这个360度的全方位挑战,我们如何应对。我们知道设计一个系统的时候,一定要定义好这个系统的边界,否则就会在无休止的均衡和权衡中继续下去。今天我们讨论的主题,我也想把它定一个边界,就是我们的目标定于解决二三层网络的通信性能问题。SDN和NFV应用很多,其实四到七层也有很多精彩的应用,但是我们今天主要讨论二三层网络的通信问题。我们可以简单把我们的网络需求分成两类,一类是网内的通信,一类是网间的通讯。通过我们初步的思考,我们可以得出一个初步的结论,就是网类通信要解决哪些问题,要解决它的规模和混合问题,网间要解决它的异构和出口的问题。有了初步的结论,我们首先想到的或者得到的最好的实践是什么样的?为什么会有规模的问题?传统的二层网络为什么规模没办法发展的很大,原因在于二层的本质是广播,像以前的基本通讯一样,我查一下谁的MAC、IP地址是多少,要取一个IP地址,就广播一下。这种广播就会导致,当你二层网络的范围很大的时候,这个网络就变得混乱不堪,不可用。所以我们解决规模问题主要的问题就是消灭广播,我们可以通过集中控制或者代达这样的方法来消灭或者一定程度上抑制广播。
第二个混合的问题如何解决,消灭混合我们可以通过统一的控制,统一的管理,物理交换机和虚拟交换机,这样就把这个异构和混合屏蔽下去。
第三,屏蔽异构,我们通过软件定义的方法,使用网络虚拟化,这样上层的应用最大的一个好处是不用修改。它可以在一个虚拟的网络之上完成它的各项需求。最后就是解决出口的问题,主要是网间的问题。从一般的考虑上,我们可以想到两个方法,一个要么就是你把这个出口扩大,要么就是把这个出口增加,变成很多个出口。现在我们把这个设计目标明确下来,我们要满足这些弹性、性能以及成本等设计目标的时候,我们将会用到哪些技术,我们的设计必须是保持弹性的,它能够满足各种各样的用户需求。首先就是OpenFlow和Controller,第二是Overlay、VR、LXC。性能就是我们的虚拟化网络,必须是能够满足于应用的性能,那么主要的几个手段,一个是要做到分布式。第二个是负载均衡,还有一种在大二层网络里面要尽量做到多路径,这样的话更高的利用我们的投入,降低客户的成本。第三,成本就是硬件加软件,因为我们使用传统的硬件网络,网络节点,防火墙还是网关,还是我们使用VR这些容器来实现虚拟化的网关功能,为什么现在NFV发展这么快,原因就在于我们可以通过通用的X86架构来代替这些传统的网络节点。另一个方面就是我们的方案必须是双活的或者尽量做到双活,它不仅可以做到成本的降低,对性能的提高也很有意义。
我们大致的架构,首先基于物理基础设施之上,构建出SDN网络,通过统一的Controller,最后通过功能模块形成统一的网络,这个网络之上就是我们的应用,像使用传统网络一样,不需要修改,从它原来的物理环境迁移到虚拟环境之下。在我们的虚拟网络之上可能还会提供一些优于传统网络的接口或者特性,如果能够利用这些特性,它们将会带给用户更好的体验。
我们看几个简单典型实现场景。我举的比较简单,因为在我看来技术人员看这个网络设计方案的时候,他们会自动把不重要的过滤掉。如图上所示,这是一个模拟的大二层网络,ABCDE,上面紫色的、蓝色的是交换机,它们在传统的二层网络里面是一个树型结构,因为原来的应用就是那样要求的,它们横向流量很少,它们就提供南北向流量。但是现在这种分布式系统的应用越来越广之后,这个横向流量、东西向流量越来越多,这个大二层原来的传统树型结构已经不能满足这个流量模型了,我们需要把这个网络从原来的树型,改造成一个真正的图形。首先要解决的问题就是二层如何来破环,就是现在其实已经发展出很多技术,它们总的思想都是一致的,就是把三层路由引入二层来。因为在路由最重要的算法SPF算法就是一个无环的算法。引入到二层来之后就相当于在二层加了一个控制层面,所以很多同行把这个技术称之为2.5层的技术,我们不纠结它叫什么名字,我们只需要清楚它的效果,我举个例子,A到C它们之间的通信可以通过E,可以通过B,可以通过D来转发。其次,二层规模大了之后,我们前面讲了要消灭它的广播,我们可以通过NRP代达或者静态NRP表来解决,从而让我们的二层规模可以越做越大,内容满足客户的需求。
第二个实现场景就是通过Controller,统一的集中管理来解决混合组网的问题。我刚才讲了现在的物理机要和虚拟机在管理角度看不区分使用,但是实际上它们之间的性能是有差别的,比如说大型的DB,它们跑在虚拟机上是不行的,在客户来看我这个东西不可能跑在虚拟机上,我还是要跑在物理机上,但是我有一些APP业务是可以跑在虚拟机上的,那么如何无缝的对接起来,就需要解决混合组网的问题。我们把物理交换机和虚拟交换机统一的管理起来,我们通过SDN的手段,直接把它们统一管控起来,屏蔽了我们混合组网。但是实际上在我们的管理实践中,在物理的虚拟交换机上,它和虚机是在一个物理环境下,所以对虚机的了解更多。虚拟交换机更多的和虚机做更多的网络功能,物理交换机在于平衡带宽之间的流量,做到最大化的充分利用网络的功能。这是一个混合组网的解决思路。当然还有其他很多的方法可以解决,我们只是提供了我们在这个项目实践中有过实验经验的一些想法。
第三个是Overlay的网络要解决异构和跨地域的问题,比如我们要解决一个分布式的系统,它有一部分应用在私有云上,有一部分应用在北京,有一部分应用在上海,我们需要把它通过普通的VPN或者GRE类似的技术,我们需要把它们连成一个有机的网络。我们希望这些应用最终是感觉不到这些差异的,不管是跨地域还是异构都感觉不到,那么就需要把这些异地的物理网络把它们连起来形成一个虚拟的网络。在部署这些分布式应用时候,就可以充分发挥地域的优势,比如说我们有一些WEB服务,如果跨地域我们可以在北京部署,在上海部署,这样不同地区的人总是访问到最近的服务器,可以获得更高的用户体验。然后就是实时备份,像现在的存储讲究两地三中心这样的架构,我们可以在打通它们的二层之后,在上面的系统不做改动,可以直接把副本放在ED,这样可靠性可以得到保证。
平时网络开发人员经常会碰到一个问题,我在本地测试好的环境和部署好的系统,把它移到公有云上或者换一个环境非常困难,它里面有DB的配置,有各种各样的参数,当我换一个环境的时候特别麻烦。当我们如果能够把它在这种跨地域的情况下建立一个虚拟网络之后,那么我们做这些工作,比如说我们可以用亚马逊的虚机,当我的环境迁移过去的时候直接在本地做快照,在亚马逊上把快照做起来,那么环境就迁移过去了。
我们谈OpenStack里面的实现,这个场景解决的是三层跨网段的东西向流量问题。OpenStack现在在网上的资料也有很多,我这里就不再仔细的讲它。它总的思想就是通过在每个计算节点上内置一个内部的路由器完成跨网段之间的路由转发。每个虚机,比如这个图中的A和C,它们是跨网段的,其实这种思想在很多地方都有体现。这个OpenStack的特性,在这个版本中已经发布。
下一个看看我们DVR在联想的一个应用。我们这个多网端,它不再通过多个VR来模拟同一个网关,它在同一个二层网络里面提供一个二层网关,比如说10.0.1.1和10.0.1.2,它的外网也提供两个IP。你都在北京也可以做到这样的效果,如果让我把一个最典型的场景图拿出来的话,那就是跨地域的,比如说一个数据中心在北京,一个数据中心在上海,那么基于这两地的物理服务器,它上面启动的虚机,我们通过隧道把它们连到一个虚拟网络中之后,首先一个问题就是网关放在什么地方。如果网关放在北京,是不是所有上海的虚机要连接的网关都要回到北京来。在没有DVR时候,如上海的第三代虚机就得沿着红线穿越广域网回到北京才能出去,如果有了DVR之后,我们就可以在北京一个网关,在上海一个网关,这样它们各自从自己的网关出去就可以。路由协议中的STF的算法,S就是最短,在这个隧道里穿来穿去肯定是网络设计人员不可接受的。这种多网关在一定程度上打破了网络的架构。传统的网络就是一个网关,你两个网关怎么工作呢?我们现在通过ART代达或者DHCP都可以做到,甚至有的数据中心中的云计算环境,通过内部配置,静态的内部IP也可以做到。当这个虚机迁移的时候,我们有两种方式,一种控制它的虚机尽量在本地迁移,我们不能说不让迁移,但是可以尽量控制。如果真要迁移到异地,我们可以动态的修改我们的DNS,我们通过DNS联动也可以依然保持这个服务的连续性。
其实这个NFV和SDN,它们应用很多。我这里只是说我个人在我所经历的项目中所探索过的一些方法。这五个场景是远远不够的,但是我也是希望自己的一些思考和反思,能为大家探索的思路提供一点帮助、一点参考。下面这个实践就是我们在联想去年发布的THINKCLOUD发布的。还有我们在传统的分层、分网段之前,也就是数千台服务器的规模,但是在我们探索了大二层的一些技术之后,服务器的规模可以轻松达到万台级别。第三个,我们联想研究院CIC的项目,叫Ralegh,研究院内部的大数据分析,他们这些项目都是基于我们基础平台之上的,在这些实践中得到的反馈,他们相当于我们的第一个客户。
最后我说一下我自己对SDN的展望。SDN现在虽然在企业网、校园网、数据中心、混合云、数据中心互联的应用场景已经很多了,但是它今后的发展方向应该是规模更大、应用程度更深。性能呢,SDN现在包括很多国内的交换机厂商,他们自己支撑的OpenFlow交换机之后,其实本质上他们也是把这个表象翻译成一个传统的表象来做到SDN的效果,而这个OpenFlow的流表设计,其实对转发芯片提出了非常高的要求。SDN的性能其实已经成为了它发展路途上的一个很严重的问题。
第三个方向就是它的功能,今天我们主要讲了它二三层的应用。而实际上它在QoS或者四到七层应用上也有很多很精彩的技术。后续的应用应该是能够更直接的感受到四到七层,或者网络各个层面对上层应用更好的支持。上面是我个人的一些想法。谢谢大家的关注,希望各界同行或者技术爱好者跟我交流,让我们为共同征服这个复杂的网络世界共同探索,共同进步。再次感谢大家。谢谢。
演讲者简介:
马亮亮,联想SDN技术专家