毛文波:一种OpenFlow新公式

谢谢给我提供这么一个很好的交流机会。大家这几天听到了很多SDN其中包括OpenFlow等等,SDN是什么?OpenFlow当然是SDN其中一个重要的思想。作为一个创业公司,总是要找到一些应用,所以我今天跟大家分享一下,对于这么好的一个思路,一个协议,设计出来了以后,我们看到似乎不管什么地方总是应用为王,所以我们一直在找一些应用。结果最近大家也听说,这个OpenStack,它作为一个云的开源代码,也发展的非常红火。但是我们也感觉到OpenStack作为一个集群的软件,它还是一个很难的东西。我们想了一下,可能OpenFlow还是有点用的,由于它部署在集群服务器,服务器和服务器之间都是网络的关系,所以我们想想这里面网络一定有问题,作为一个应用可以得到简化。

毛文波:一种OpenFlow新公式

道里云是一家创业公司,主要的精力放在网络和云上面,这两个结合,所以今天讲的应用也是一个很自然的道里云公司要干的事情。最简单的先来一个电梯版的介绍,当然分成两半,上下没有什么太大关系。总的来讲,一个简单的介绍片子要说的东西,就是面向OpenStack的云操作系统,就是大型的云操作系统,它管理一群服务器。现在要部署它的话,一般需要一些部署软件来做,OpenStack自己也有一些软件。这些部署软件是配置方面的工作,以前用编辑器把这些做了,有多少服务器。其中有很多很重要的配置工作都要用这个软件写到这个上面,造成这些之间有网络关联,然后再去部署OpenStack,这是一个高技术活。我们在这个应用上可以变成一个傻瓜版的。云总是要有控制器,没有控制器不能叫云。但凡有了控制器它可以控制网络,这个控制器包含很多云WEB管理,有CPU的管理,我们今天主要强调的是OpenFlow控制器来管理网络。你可以先装一些控制器,然后可以再装一些互相无关的服务器,就是这么简单。如果这个控制器规模装的特别大,你就打开用就可以了。现在都知道出来一个Docker,它可以很简化的把所有云都装在分装的环境里面。待会儿我们可以分析Docker为什么跨网络不通,目前没有特别好的,很容易管理的方法,每一个Docker就是一个云,结果Docker也可以联通了,实际上就是两方面的应用。大概我先说一下,会先分析一下云网络到底有什么问题。然后我们把OpenVswitch的用法来在这上面解决一下,然后把云网络的问题能不能比较好的解决掉,我们尝试了一下,解释一下为什么它可以在Open Stack的傻瓜化上面。基本上简单到了中学生会玩的流程图。实际上这个里面可以用一个字,一云二治,低成本,高可用,易运维,傻瓜化,总的来讲需要具有一个基于服务的架构,云计算是一个服务。分析一下什么叫基于服务的架构。我大概会讲一下比较概括性的东西,大家会看到这是一个互联云的概念。一些技术细节我放在后面,这个PPT在我们公司网页上面也有,欢迎大家上我们的网易上下载这个PPT,还有白皮书。

实际上真正的做法就是把云做小,为了做大,先把它的物理实现做的很小。底下这张图看到了控制器,每个很小的云它们互相之间通信,如果发生我不会的时候,大家找一下控制器,控制器就会给它下发一些OpenFlow的路由规则,可以看到一些策略你到底可以不可以通。至于这些被打通的东西什么东西是没有关系,大家看完之后实际上这个处理的方法是一样的。

云网络问题的分析。这两天的报告里面大家听到了很多关键词,VxLAN等等,都可以用底下的图说明一下。你也可以看到VxLAN,这个图它原来的包统统打到里面。首先云上面要隔离,打标记就起这个作用。尤其到现在Docker,那个数量级又上去了。所以多租户互相之间要有隔离,而且这个云又必须是要跨服务器,云必须是在一个集群上才有意义,不是一个集群的云没有什么意义的,那么跨服务器怎么通呢?打上一个标记,在外面用Underlay。大家昨天到现在听到的所有东西,可以在二层打标记,VxLAN就是这么一个东西。你可以在这个上面通过标记的方法再弄一张子网出来,这个子网完全可以属于某一个租户的。你也可以如果是这种VxLAN比较有限制,它对硬件、对VxLAN的大小、规模都有限制,在二层本来就是一个二层网,本来就是小的,所以你在云上就有局限性了。比如说划成三层的IP,底下这张图就直接在四层打标记了。这两个需求都是可以满足的。那么问题是我们来分析一下这个问题,如果你用打标记的办法,实际上做出来的云网络,它为什么变成二层,其实都是和底下的二层是一样的,你在这个范围要有一个DHCP。它们互相之间二层是广播通的,你要在标记的范围内也得广播,广播的目的显然就是要把很远端的很多交换机连接起来。总的来讲,结果模拟出来一张,实际上是实现出来一张,真的实现出来一张二层网。这个二层网没多大关系,一般的到了租户级别,到了应用级别,它总是被应用限制的。实际上经常通信会在两个实体之间发生,但是它由于地上二层网的原理通过广播获得的,实际上这张网里不止两个人,你可以看到一种非服务性的架构。一种资产我已经弄到了,任何时刻都是两个实体在通信的时候,我为了发二层包,我为这两个群体中间的同事也都连出来一张网,这张网也是物理的,哪怕它叫做VxLAN,它只是在物理网做出一个子的物理网。实际上总的来讲没有什么太大的问题,我们在OpenStack上面看到这样的问题,不同的服务器集群之间就有关系了。如果说一下,实际上有一些上网的行为也是可以用VPN来实现的,这种规模比较小,而且上网之前要做好准备。比如我们上百度它根本是不知道的,它从来没有去为这两个通信去准备一张一个很大的网。我们有时候翻墙的动静不大的,规模很小的,因为它必须有一些前提做好了以后才能做HTCP通讯。实际上都是一个先做VPN,先做一个物理的二层网。

那么事先连上的问题,云的动态性少了,云的管理,云软件的配置工作就多了,实际上是把一些人的智能当做一种控制器来用,来配置到每一个盒子里面去。你也可以说有可能OpenStack可以用软件来写,它写上以后就生根了,如果你要迁移的话要一起迁移。你越管东西越多,一个VxLAN它到底在哪有VxLAN,所以管理的越多,管理的成本就越大。我们看是不是有这个必要,为什么要这样?这件事现在是这样做的一点都不奇怪,大家都要理解。网络都是从以前发展起来的,以前的发展都是以盒子来卖网络的,几个盒子之间要通一定要靠人当控制器来配置,人不能通信发声地时候才像OpenFlow控制器那样的规则。总的来讲它是实现把它做好,我给出这么一个论断。最后还是,比如说OpenStack到底好用不好用?用户的接受程度由这条决定的,或者它的规模到底能做多大。

我们想了一想,目前的OpenStack,我们也想了一下做跨数据中心的OpenStack,结果真是不成功的。像左面的情况,一个云用一个OpenStack。按照云的服务架构,它应该无所不在。所以你为什么要限制它到某一个点去呢?在这个点上它到底有多少级做一个OpenStack呢?都是问题。我们发现如果一云两治,能不能有两个独立的OpenStack,不一定是2,实际上多于2。它们自己在CPU的管理,在磁盘的管理,在它们的自己的DHCP的管理,它们是独立的,不同的公司完全不认识。如果是这样的话,那么这个OpenStack就稳定了,就可以做了,就像我们知道了DHCP网络为什么这么大。我们右边的图就是把这个架构拆出来,右边的云上面每个OpenStack,你也可以说是Docker,听说都是不通,实际上应该是通的。谢天谢地,这些不同的OpenStack,这些不同的Docker可以找控制器,也是业界的同仁那么努力,把它做通了。让这些人找一下控制器,控制器可以灵活的配置。人是做不到这一条的。

我们看一下,有一个能够做这件事,能够解开偶合的一个思路。这个和刚才第五页上面有一个黄标记,打在头上的很不一样。现在这些绿色的理念都是五层以上的。那个包头就是Overlay公用的,每一个虚拟机或者每一个物理的应用,所有的东西,它自己OSI基层架构里面,它每发起一个应用请求的时候,它都为自己做隔离的。这么多的应用之间,你不能把邮件发到微信里面去,它自己会有一个随机数。如果底下服务,你们都属于张三的,我根本不管你已经为自己做隔离了,我在外面又打上标记,我为张三做隔离,就把上面的CPU资源浪费掉了。所以前面的黄标记和这个地方不一样,这个地方首包上传上控制器看到的话,控制器看到这个标记和IP地址一看就知道,是唯一的,没有问题的。至于Overlay的身份多,这个标记也多,路由是没有问题的,所以它可以换过去。如果它发现这个IP底下,这个上面的Overlay生成的已经被别人用过了,没有关系的,在这个流没有失效之前我给你随需起一个,控制器看的非常清楚,等包回来我给你换一个,然后你再换回去。它要想无外乎换二层,换三层,换四层,这就看到了OpenFlow控制的一个网关。由于做云一定要有控制器,既然要有控制器,那控制器怎么就看一个点呢?控制器用传销的办法,一个控制器看100个服务器完全可以。控制器可以看到你这个请求者想要发给谁呢?都在那儿注册着,它的Overlay,它要在你这里下发,在那里也下发一个类似的,到了里面Overlay实际上收到的就是二层包。Overlay看到一个任何规模的二层网,这是真的二层网。其中在一个时间两个机器,它要的什么我都给你满足。因为我是二层网,你要的什么东西我全给你换回去,所以它认为我很大很大,实际上一个通信在两个G之间,也就是顶多三个机器,其中控制器只干了一件事。结果这个二层网就通了,所以这个里面就看到了,这是一个基于服务的架构,这个Overlay的二层网从来没有从底下搞一个子网出来。我们刚才第一页的流程图,你可以部署一群控制器,只要我的资源服务器能够找到它就行,我们自动编辑了程序可以自动找到它。资源服务器必须互相之间不认识,它们当然硬件插上就行了,它们软件之间必须相互不认识,它们软件之间一旦认识部署OpenStack就是一个专业活了。我们现在做这个东西,服务器里面是空的,你可以看到实际上一个Overlay的包,那些虚线是怎么发生的呢?是一个Overlay包想要和另外一个Overlay包发生通信的时候,这个服务器不会,结果找到了控制器,控制器给相应的服务器下发了流表,那就通了。我们进一步可以这样想,一个Overlay可以百度给腾讯发包了,一个网关,那个网关也是OpenFlow控制的,一个流表下发到这个服务器,那个流表下发到那个网关,这些Overlay的机器也在网关外面,也在虚拟网关的外面,所以道里云的这些云每一个服务器就是一个网关,这些网关上面有很多洞,大多数的洞是网卡,这个小的服务器它自己内部有一个完全自闭症的一个DHCP,它不想要跟全世界的任何人交流,我都不知道你的物理IP地址是什么。你自己内部想要干,它是完全自封闭的。结果我刚才说了,这些虚拟网卡也是网关外面,物理网卡也是网关外面,它在一个应用上面可以有一个用户的DHCP,这是完全注册在控制器上的。至于百度、腾讯,它们那些所谓的打引号的虚拟机,有它们公网的IP地址,是他们自己为了服务之前已经准备好的。所以你会看到道里云的这些一云二治,一云多治的那些小OpenStack,它每一个OpenStack就是一个网关,就是一个马蜂窝,它有很多虚和实的网关。所以OpenFlow下的就是不同的网关互通。世界上任何地点,任何感官,任何应用基于这个可以做到一个二层网,二层网是一个真正的二层网。然而这个二层网确实是虚的,这个二层网逻辑上无线大,而实际上小到两个点。这是道里云目前做出来的这么一个东西,这个东西实现起来里面有很多细节,我们也都学了很多东西。如果总结一下,我看到网络规模那么大,没想到要经过好几年的实现才真的,最后等到了OpenFlow,所以是完全可以做出来的。

所以云在物理上实现小不是坏事,正因为实现小,逻辑上才能做的更大。它全是热插拔的。一些性能,我不需要一条条做广告了。我希望大家试一下,大家可以看到这个控制器的首包。而且这些流表基于服务架构的流表都会老化的,OBS老化掉就释放掉了。它还是攻击的对象,攻击磁盘永远比攻击内存容易。我做了一辈子安全,这些方面我都知道。你只要把控制器管好,内存你要攻击的话,一般来说你要用一些内部的方法,你要部署恶意软件了。这个实际上出来了就是云际互联的东西,每家按自己分包的话,云际互联的确是一个很远的事情。如果用网关来做的话,实际上每个云自己和自己也得互联,就是阿里云也好,它自己要做都要做云际互联。按照傻瓜流程图一个G就是一个云,其他的跨运营商等等都是一样的,都是云际互联的,云际互联是很重要的。就像发的电,我哪知道我家里的电和酒店的电是来自一个发电厂。

首先,OpenFlow的好处是可以云网络虚拟化技术,对OpenFlow技术市作出的一个创新性的贡献。我有一个盲人摸象的OpenFlow,OpenFlow是可以把人,把管理员的工作让CPU来干了,这是人类一直在走,人类的IT从来都是这样干。当然如果OpenFlow如果还在用把低层的网络通过标记一下变成子网那种办法是很讨厌的,但这一步还是很难跨过去的。云的部署变成傻瓜化了,我们自己做了这样一个应用,欢迎大家去试。小的用户都可以安装OpenStack,OpenStack从此变得比较容易,它的存储也是一样的,可以极大规模的降低销售成本。OpenStack实际上只有很少的人会玩,它的销售成本很高。我们是一家小公司,如果是7×24小时,我们只能卖一家,所以销售成本是不可能从零到一走得成的。规模化、互联云,扩扩展。万物互联,物联网,任何东西,电冰箱、地下室通通可以互联。因为这个东西已经不是一个小小的APP了,所以我们希望和全世界和全工业界,学术界一起把这个做起来。这个实际上真不难做,控制器很重要,控制器的分布式,控制器的安全性等等。实际上OpenFlow大家也都知道,控制器非常非常重要。我们的云是跨上海、北京的,我们的确在每个地方都需要有控制器。

我想后面的这些后面还有三张片子我不说了,就是分析一下技术里面真正的很详细的东西,今天不适于在这里说。欢迎大家使用道里云,谢谢大家。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/11740.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于15-05-19
0