实践课堂|QingCloud SDN/NFV 2.0——了解和善用史上最强大的云端网络功能



  • 主持人:我跟客户的交流过程,有时候被问到你们云跟虚拟化有什么区别?虚拟化只是云的一个重要的组成部分,更重要的组成部分是我们的网络技术。今天请到QingCloud SDN/NFV 2.0的作者之一陈海泉,欢迎。

    1038875402.jpg

    陈海泉:大家好,我是QingCloud的工程师陈海泉,大家可以叫我OC。今天分享的是QingCloud SDN/NFV 2.0的实践。SDN,软件定义网络,这不是网络实现,只需要软件可以定义任意的虚拟网络,给云上的用户使用。具体的SDN实现可以是硬件实现,让软件定义,这是硬件方案。也可以软件实现,通常叫NFV方案。

    QingCloud从2013年以来,我们在国内第一家提出公有云SDN服务,我们允许用户定义自己的虚拟网络、虚拟交换机,也可以定义虚拟的路由器,用户可以按照自己的需求,把路由器、交换机和主机连接在一起,让主机通过虚拟的网络,对内对外提供服务。随着我们这一、两年的运营,我们逐渐发现当用户量激增后,我们老一代的SDN开始出现一些瓶颈,比如用户量到达1000台VM的量时,使用我们第一代产品遇到一些困难,所以我们去年下半年开始研发第二代SDN产品,今年一月份在北京3区上线,我们解决了之前遇到的功能和性能上的问题,总结成第二代SDN的方案。

    为什么我们需要在云上提供SDN?虚拟计算需要虚拟网络支撑它,当我们用虚拟化的管理对用户提供IaaS服务时,往往需要虚拟资源能够在每个计算节点上任意迁移,迁移的时候通常会考虑到负载均衡或是业务高可用的情况。图中显示,一个虚拟机从一台物理机迁到另一个物理机,需要IP地址不要发生变化,用户可以在热迁移后接着使用,感觉不到业务受到影响。早期虚拟技术里,计算节点通常比较少,大多部署在二层网络里,我们要用虚拟机根本不需要虚拟网络,不管虚拟机在哪个物理机上,都是位于原来的二层网络,IP地址在发生迁移后不变,非常简单,没什么要改的。随着云计算的发展,虚拟机的集群越来越大,一个IDC里,往往把一个网络定义成很多个二层网络,用路由器把不同的交换机连接在一起。一台虚拟机从一个网关清理到另一个网关时,IP地址不变,无法继续使用原有的网络对外提供服务,这时候IP要么是变化,要么是不变,不变就没有网络访问。SDN出现就是为了解决这个问题,它可以让用户定义任意的IP地址和网段,可以在任何一个网络的计算节点上,用户的部署没有任何限制,可以在三层网络里做任意迁移,还能使用原来的IP地址。

    SDN另一个需求来自于VPC,当用户的业务量越来越大,传统的虚拟二层网络满足不了需求,用户要定义一个1000台虚拟机的计算集群时,这1000台不能分散到二层网络里,必须拆开到很多的三层网络里,VPC是虚拟的三层网络,之前说的是虚拟的二层网络。位于VPC的主机可以是用户定义的任何一个IP段,PPT图中有两个不同的VPC,即使他们使用相同的IP地址,也可以互不冲突的在同一台物理机上。VPC的出现给用户一个更灵活的选择,可以任意定义IP地址,规模可以水平扩展,跟物理网络几乎是一样的。

    QingCloud SDN方案研发时,还做过选型的考量,到底是使用现成的硬件方案,购买一些SDN交换机帮我们实现SDN,还是我们自己开发一套方案呢?这里有三方面的考量,一是成本,如果我们能在硬件上节省成本,最终会降低我们用户的使用成本,让我们的产品更有力量,谁不想SDN更便宜呢;二是摆脱硬件依赖,我们另一个业务是私有云,我们私有云的客户希望他们自己采购硬件,只要购买QingCloud的软件就可以了;三是情怀,作为QingCloud的工程师,当然希望自己做的SDN产品比别家做得有一些优势。如果我们都采用现有的SDN方案,大家做出来的产品会是一个样子,只有当我们把网络的每个环节都按照自己的想法实现,才有可能把整体性能做到最优。顺丰航空的截图,QingCloud做的网络和传统的物流运输网络与它非常类似。物流行业,中国哪家做得最好,我想是顺丰,甚至它们连飞机都是自己买的。当你控制到转发的每一个环节,才有可能在每个方面做更多的优化,每个环节都有一定的优势后,整个优势集中在一起,发现跟别的产品有质的不同。我们决定花了大概四个月的时间研发了自己的第二代SDN产品。

    如何实现SDN,一是传统的SDN是数据封装;二是控制平台(管理网络),二层交换、三层转发的规则,同步虚拟到网络上;三是需要数据平面,如何把网卡收到的数据包转发到虚拟网卡里,我们实现了一个Kernel模块,对外提供比较高级的路由器功能。除了传统意义上的SDN,我们QingCloud经过2013年来在公有云上运营SDN产品,我们意识到SDN组件除了一个基本的二层、三层网络外,需要更多的业务支撑用户的各种业务。这是我们特有的组件,一是公网IP,SDN/NFV 2.0可以让用户把公网IP绑定到任何一个网络中,对外提供服务;二是做到负载均衡器,无限下载带宽和HTTPS卸载能力。我想要10个节点或是1000个节点都可以,下载带宽会水平扩展,HTTPS的卸载能力也会增加。我们除了有高性能的负载均衡器,我们还做到4层和7层全透明,经过负载均衡器的数据包到达后端主机,原有的客户端会保留服务器里,这是后端发过来的,可以记录每个数据包的原地址,对后续的服务分析、安全保证都可以很方便做到。QingCloud是世界上唯一一家负载均衡器实现4层、7层全透明的运营商;三是我们改良了原有的基础网络,虚拟网络发生迁移后,IP地址不变。基础网络是QingCloud的物理网络,有了这个功能,我们可以让用户在没有VPC的情况下,把所有的主机连在一个局域网里,这些主机发生迁移后,IP地址不变;四是我们让VPC跟基础网络之间高效互联,1.0的时候,VPC的虚拟机要通过路由器端口转发才能到达基础网络,他们之间的效率会下降。2.0里通过技术,把效率达到极致,虚拟机跟物理网络的主机可以直接连接,性能没有损失。

    下面我会介绍我们做的每一个方面。SDN的基础需要实现基础网络,这是一个比较枯燥的概念。比如快递公司的服务,以前我在一家比较大的公司工作,假如我要给同事发邮件,我可以使用员工的工位号。比如我要发报销单给财务人员报销,我需要把发票寄给他,不需要自己跑到快递公司写邮件把材料寄过去,只需要准备一个信封,把报销材料放进去,变成一个包裹,交给收发室,收发室把邮件交给具体的财务人员,我跟财务人员之间是发件方和收件方,大家用的是私有地址通讯,我们位于全国不同的办公楼,我从北京发邮件给上海同事,公司收发室可以让我们两人之间进行通讯,完全不需要对方的物理地址是什么。我把内部地址信封交给收发室,收发室会查询,比如2PW067的工位在哪个办公楼,具体的门牌号是什么。他会拿出更大的信封把原有的信封装进去,写着对面收发室管理员的名字,地址是写字楼具体的街道地址,他把信封交给快递公司的时候,快递公司可以直接把邮件派送到那边的写字楼收发室。对方的收发室管理员可以拿到信封,把外面的信封拆掉,把我原先准备的信封拿出来,查询工位号,投送给相关的同事。内部邮件系统拿到网络里是虚拟网络,使用网络的接收方和发送方使用的是大家定义的私有地址,发送包的是原来的网络。我们需要有一个人把原来的地址翻译成物理地址,做这个事情的人是虚拟网络,我们使用它来实现虚拟网络,把原来的小信封装在更大的信封里。小信封写私有地址,大信封写物理地址,让发件人和收件人没有感觉。

    SDN控制器有一些考量,包括四点,它是集中的还是分布的,我们对比别家的方案发现,除了QingCloud,其他家的SDN方案都会使用集中的SDN控制器管理整个集群所有的虚拟资源,这是一件非常糟糕的事情。随着我们的集群节点水平扩展到了5000的规模,SDN控制器可能需要时刻同步几万个虚拟机对应的规则到这5000中,如果发现问题,它会直接失效。每个虚拟网络都有自己的控制器,每个控制器失效后,会立刻迁移到另一个节点中,我们会压缩它的同步范围和同步规则,让它的负载尽量小,小到它根本不存在。

    SDN控制器有一些考量,包括四点,它是集中的还是分布的,我们对比别家的方案发现,除了QingCloud,其他家的SDN方案都会使用集中的SDN控制器管理整个集群所有的虚拟资源,这是一件非常糟糕的事情。随着我们的集群节点水平扩展到了5000的规模,SDN控制器可能需要时刻同步几万个虚拟机对应的规则到这5000中,如果发现问题,它会直接失效。每个虚拟网络都有自己的控制器,每个控制器失效后,会立刻迁移到另一个节点中,我们会压缩它的同步范围和同步规则,让它的负载尽量小,小到它根本不存在。

    SDN数据平面-DVR,这是Kernel模块,作为虚拟的带路由功能的交换机,同时它是一个分布的路由器。能在每一台计算节点上,都为管理的VM提供二层转发和三层路由的功能。里面有三张图介绍为什么我们要做DVR功能,它做起来非常难,你要把一个路由器IP卖到相通的路由器,势必要打破原有的规则,它是非常重要的模块。比如(左图)是物理网络,这里有A和B的物理机通讯,经过A再到达B交换机,在物理上需要经过四条。早期的SDN方案,当我们把交换机路由器以虚拟化的形式做出来,按照原来的拓扑结构,逻辑上还是四条,在物理上可能需要16条。A跟C、D跟B之间都是不同的物理机,也就是如果我们用传统的方式实现虚拟网络的情况,它的性能会大幅衰减,因为每转发一条,物理上会转发四条。而我们实现的DVR是为了解决这个不足,A和B在本地的计算节点上都有自己的交换机和路由器,A只需要把包发给本地路由器,B路由器发给B,逻辑上还是4条,物理上跟(左图)是一致的,其他的物理设备仍然不变。我们要保持虚拟网络可以有好的性能,必须做DVR功能,让所有虚拟流量的转发是点对点的直连,不需要通过第三个物理集群绕路,保证虚拟网络的性能。

    QingCloud在SDN/NFV 2.0里提供DVR模块,提供五个模块,一是点对点的直连;二是跟物理网络进行转换连接;三是跟管理路由器提供连接;四是跟负载均衡器集群之间建立点对点的连接。有了DVR,我们才能实现QingCloud SDN所需要的功能。

    对大家影响最大的肯定是VPC,我们在北京3区提供的VPC理论上最大可以支持6.4万台虚拟主机,用户可以定义192.168.0.,每个子网之间的虚拟机可以高性能互相访问。SDN/NFV 1.0做到这个规模比较困难,老用户知道我们的路由器管理的是有限制的,要实现大规模的私有网络,部署非常困难。我们的VPC天生自动帮用户建立这样的连接,VPC在逻辑上是传统的核心交换机,它管理着许多接入交换机,也就是DVR,把网络设备连成虚拟的三层网络。我们通过分布式控制器,把所有的网络规则同步到每一个网络节点上,才能让VPC的主机之间能够互相访问。当初我们设计同步规则时,我们会考量如何实现超大规模的网络之间的节点分布。假如我们一次要同步6万台主机的信息时,在极端情况下可能需要有6万多条规则到6万多个物理机之间,别看它跟用户隔离,它的工作量非常大。如果我们要把它稳定的做出来,几乎不可能实现。我们发明了自动学习功能,让每个DVR自动学习路由,而不是同步所有的路由。即使有1万多台主机,这1万多台主机并不是时刻在点对点的连接,他们按照各自的业务逻辑分散各种业务集群,只有每个集群间的主机才需要高速访问,集群之间的主机往往不需要访问。就能保持用户业务高性能运行。因为用户真正需要的不是6万多条规则,而是业务真正需要的几百台规则。我们通过学习完整的同步,大大提高VPC的稳定和性能。VPC除了基本的网络连通功能,我们提供额外功能,比如我们可以让主账户跟子账户之间组成完整的VPC,考虑到用户的场景,我们QingCloud的用户的公司有很多项目,每个项目需要管理自己的网络。这些项目之间需要网络直连,使用我们的主账户和子账户可以让公司有自己的主账户,每个业务部门管理自己的子账户,这些子账户有自己的网络,别的业务部门的子账户之间可以连接在同一个VPC间,大家进行高效互相访问。我们提供边界路由器及高级路由功能,包括VPN隧道、公网网关、私有DNS,VPC的每一个主机可以绑定自己的防火墙和公网IP地址,这是2.0上新有的功能。

    我们除了提供VPC外,我们还对私有云用户提供VBC企业私有云网络,私有网络跟物理网络结合,做到虚拟机跟物理机之间互相高速访问,使用相同的地址段,没有任何影响。我们可以兼容所有的网络硬件,做到虚拟机在用户业务内部网络迁移时,IP地址不变。包括VPC所有的功能,并且没有部署规模限制,不需要边界路由器。在QingCloud的集群和原有业务集群中转发,原有的物理网络可以直接通信。

    QingCloud SDN/NFV 2.0的改进,如果我使用VPC时,在1.0的情况下,我必须使用VPC的路由器做端口转发,才能把流量带到虚拟机上,这会成为管理的虚拟网络的瓶颈。我们在2.0的网络里大大改进了这一点,因为我们把路由功能从虚拟路由器往下降,降到本地的DVR Kernel上,实现高效转发,所有的流量不需要出物理机,绕路到路由器,直接跟公网网关进行直连。北京3区上线后,比如做即时通讯的用户,他们的业务流量会有一定的限制,当他把业务原封未动的转到北京3区,发现并发数量在没有任何更改的情况下可以增加四倍,达到140万的并发。因为我们每个虚拟机都可以跟公网网关之间可以做到直连,分散到每个DVR上,不再放在集中的几个网关上。当主机绑定公网IP时,我们会主动绑一个防火墙,很好的保护用户私有网络的资源。

    SDN提供了负载均衡器集群,相比之前的负载均衡器,它有本质的改变。一是后端主机可以位于任何网络,我可以建一个负载均衡器集群,后端连任何一个IP,不再需要路由器转发,连在后端。最重要的是集群可以水平扩展,一个IP只绑定一个负载均衡器集群,带宽可能最大是500兆。我们把公网的带宽通过第一层转发,转发到不同的负载均衡器上。负载均衡器才是用户的后端,当我们出去的流量会通过负载均衡器节点找各自的网关出去,我们会做到进来和出去的流量不一致,出去的流量可以分散到不同的物理节点上,使用集群水平扩展单个IP下载的能力,通过提供负载均衡器的部署达到相关要求。我们做到四层、七层全透明,经过两层转发到达客户端,客户端的原地址没变化,仍然在IP的包头里,这是透明代理的功能。在所有公有云里才有七层负载均衡器的功能,这跟2.0的改进分不开。

    提问:您的SDN控制器不是集中式,也不是完全意义上的对等分布式,而是局部分布式的概念。SDN控制器如何判断和管理控制哪几个虚拟网络,比如它有A和B两个虚拟网络,A虚拟网络在北京物理数据中心,B虚拟网络可能在上海,创建、修改、删除流表,时间和反应时间有延迟,可能会有区别。A和B两个虚拟网络用户的体验可能有差异,它怎么知道控制器如何管理和控制哪几个虚拟网络。

    陈海泉:我们用分布的方式尽量做到控制器的范围缩小,才能让性能更好更稳定。每个控制器管理一个虚拟网络,不会管理两个虚拟网络,每个网络都有自己的控制器,而这些控制器之间可以点对点互相学习和同步的。

    提问:关于透明代理功能,在SDN1.0里已经出现了,能否详细谈谈2.0的透明代理和1.0有哪些改进,具体体现在使用上是怎样的?

    陈海泉:1.0的基础网络还是物理网关,2.0里使用统一的SDN平台实现基础网络和私有网络,在2.0里所有的主机都可以直接使用负载均衡器的透明网关服务,使用范围更大,使用起来更简单。因为负载均衡器可以直接连接每一台主机,不在需要配置路由器的端口转发。

    提问:1.0里透明代理有做改变吗?

    陈海泉:没有改变,只是适用范围更大,现在所有网络都可以使用。


登录后回复
 

与 青云QingCloud 社区 的连接断开,我们正在尝试重连,请耐心等待