一、能力
在对具体技术细节进行介绍前,让我们先了解一下两种类别的基础组网能够增强哪些方面的能力
能给我们
1-VPC
1.1 独立的网络空间,优秀的安全能力
VPC给用户提供专属的网络空间,不同的VPC之间逻辑隔离。如果应用不需要与外界交互,可以借助这个安全的网络空间在云上完全隐身。如果应用需要与外界交互,可以选择不同方式进行部分暴露,减少暴露面就能大大降低安全防护成本,提高应用的安全性。
1.2灵活的组网范围,优秀的扩展能力
VPC可以提供跨数据中心的Overlay组网能力,应用在一个VPC内部署,就可以方便地扩展到多个数据中心,从而屏蔽掉不同物理环境带来的差异。VPC网络的覆盖范围也可以随着数据中心底座扩展而动态扩展。
1.3自主的网络定义,优秀的定制化能
用户可以在自己的网络空间内,根据需要去自定义网络及安全的能力,不用担心相互影响。这样既能够满足用户多样化的需求,又能避免由于误操作对其他用户造成影响。
不过任何的技术手段都有短板,在带来上述能力的同时,这种网络模式也存在一些不足之处:使用这种模型学习成本高;隔离性带来的统一管理不便;出入VPC需要在网络层做NAT,不利于流量追踪等等。但是瑕不掩瑜,主流云平台都把VPC作为用户使用云网络的基本方式。
2-VBC
2.1. 互联互通的网络,便捷的管理资源
VBC组网地址是内网全互通的,方便各种统一管理工具对资源进行管理。
2.2.全网路由的地址,顺畅的流量追踪
进出VBC网络不需要做任何地址转换,对流量的追踪、问题排查都有很大的帮助。
2.3.扁平的网络,低廉的学习成本
从网络层面上讲这种组网方式给用户的体验与传统网络几乎没有区别,大大降低用户学习和使用的成本。
同样VBC网络也有短板,主要体现在安全方面防护方面。由于是全互联互通的网络,云上应用系统的暴露面大,对安全防护也提出了挑战,而传统的云防火墙和ACL策略等安全手段在管理大规模、动态扩缩的云网络时也显得力不从心。对此全栈云也引入了更适合云安全的技术手段来解决这个问题,就不在本文中赘述。
二、技术方案
在了解两种组网方式各自的能力后,我们进一步剖析它们具体实现的技术方案。两种网络实现的思路相同,下面统一进行简要描述
Software Defined Network
在软件定义一切的云环境中,网络也不例外。其实现方式主要遵照SDN的思想。SDN(Software Defined Network,软件定义网络),其主要思路是通过南向协议将管理面和转发面进行解耦。这样设计有两个好处,一是能统一管理多种转发面而屏蔽他们的差异,二是能避免管理面和转发面在故障发生时相互影响。
根据控制方式的不同,SDN的实现方式主要有两种,下面对两种方式进行介绍:
1.由统一的管理面来负责规划、管理、下发所有的转发规则,从而实现对网络的控制,转发面接收转发规则并按规则进行数据包转发。这样的优势在于管理面掌握网络中所有流量转发路径的完整信息,方便流量追踪;缺点在于一旦这个管理大脑失灵,所有的转发面将失去控制,容易造成全局性的风险
2.通过协议自组织的方式实现管控,优点在于资源占用少可以一套网络一套控制面,故障范围可控。缺点在于缺乏网络路径数据,不方便流量的追踪。
在综合考虑两种方式的优缺点后,我们决定采用第二种技术方案来避免全局性的技术风险,对于流量路径信息则采用其他的技术手段来解决。下面分控制面和转发面两部分进行详细阐述:
不断创新服务模式,聚焦品质优化。只有在服务过程中不断倾听业主的声音,才能及时了解业主所需和所期,我们创建多条沟通渠道,建立和谐温情的物业服务关系。
(1)控制面:
EVPN(Ethernet VPN),通过扩展BGP协议新定义了集中BGP EVPN路由,通过在控制网络中发布路由来实现VTEP的自动发现、主机地址学习。
在控制面中,为了更加适应云网络的环境,我们也做了大量的控制优化:
优化一:全覆盖的内部控制网络:
为了让VPC/VBC网络能够覆盖到云平台各个计算资源,我们在软件层面上实现了一个内部控制私网便于路由信息的传递和下发。
优化二:独立的软路由处理器:
为了让服务器的资源被充分利用,每台服务器上会运行不同用户的虚拟资源,这就要保障每台服务器上的路由空间相互隔离。我们利用linux内核隔离技术为不同用户的网络做了独立的路由处理器,保证属于不同网络的资源在相同的服务器上都能够互不影响的处理路由信息。
(2)转发面:
linux bridge是在内核层用纯软件实现的虚拟交换机,我们可以把各种类型的虚拟网卡绑定到这个虚拟交换机上,以便于将虚拟计算资源连接到网络中。
同样在转发面上,我们也做了大量改进来提升转发效率:
优化一:智能的数据包处理:
云网络转发面使用Overlay进行组网,这种组网方式对数据包进行大量的封装/解封装操作,而这种操作是占用服务器的计算资源的,不但造成了CPU资源的浪费而且转发效率也不高。为了解决这个问题,全栈云采用了智能网卡来对数据包进行处理,实现了不占用CPU资源对数据包进行封装/解封装,同时也提升了网络性能。
优化二:智能的路径选择:
对于路由优化,使得两个计算节点之间通信路径大大缩短,也提高了网络的性能。
三、技术实现
两种网络的控制原理相同,不同点仅在于网络内的地址是否要通告给物理网络,下面对两种网络的实现方式进行统一介绍。
1-控制面
控制面采用EVPN,通过MPBGP协议定义了BGP EVPN路由,全栈云控制面中主要使用以下两种类型的扩展路由:
mac/ip路由(type2):用来通告主机mac地址、主机arp和主机路由信息
inclusive multicast路由(type3):用于vtep自动发现和vxlan隧道动态建立。
控制面结构示意图如图一所示,图中黑色和蓝色分别代表两个逻辑上相互隔离的网络。
图一
网络管理器
每个计算节点物理机上都运行一个网络管理器,主要有以下两个功能:
- 负责维护与反射器间的BGP邻居关系,通告本机上VM的ip地址和VTEP信息。在每个虚机创建/迁移的时候,其所在的计算节点就会发出type2路由来通告它的位置信息。如果在该物理服务器上没有该网络的分布式路由器,则会创建一个分布式路由器,并发送type3路由来通告vtep信息,完成vxlan组网;
- 接收MPBGP中携带的路由信息,分析其属于哪个网络,并以路由表和邻居表的形式写入到对应网络的分布式路由的命名空间中。
网络反射器
每个网络一对反射器,将BGP路由同步给网络中所有的管理器,引入反射器可以有效降低BGP邻居数量。在VBC场景下也会将收到的路由信息同步给路由管理器,用于向物理网络通告路由。
物理网络地址通告
只有VBC类型的网络要向物理网络同步路由。路由通过平台统一的路由控制器同步给物理交换机,因为全栈云网络为全动态路由组网,虚机的下线、迁移等操作也可以动态同步到物理网络中。示意图如图二所示:
图二
计算节点上的反射器将路由信息同步给管理节点路由管理器,然后路由管理器将接收到的路由信息进行过滤整合后,同步给物理交换机,完成了的vbc地址的通告。
2-转发面
下面以VBC为例,介绍转发面(图中设计所有地址均非真实地址)
图三
物理网络
如图三所示,两个虚机在同一个VBC的网段中。在同网段内部通信时,二层通信查分布式路由器的fdb(forward database)表,按查找结果,直接通过b1这个vxlan类型的端口转发到目标的dvr。如果三层通信的话,则直接通过默认路由从物理网络的c1口发出。
因为VPC支持三层组网,所以它的转发面要复杂一些:跨网段通信时如果目的地址是同一个VPC内部的,流量则会从分布式路由器通过vxlan封装直接发送到分布式路由器;如果不是同一VPC则会交给默认VPC网关来处理。
图四
VPC网关
VPC是一个独立封闭的网络环境,如果用户需要暴露服务的话需要做ip地址的映射,其中一种方式就是通过VPC网关做地址映射。VPC网关具备双网卡,可以通过页面配置把VPC网络内部服务映射成VBC网络可访问的服务。如图四(图中地址非真实地址)所示,VPC网关具有两块网卡,一块连接VBC网络,一块连接VPC网络。在VPC网关处配置nat规则,就可以实现从VBC:100.168.0.10:12345到VPC:192.168.10.10:80服务的映射了。
总结
本文首先介绍了全栈云两种组网带来的能力,随后分析了实现的技术方案,最后对一些技术实现做了简要介绍,希望大家通过这篇文章对全栈云网络能有一个概要认识。由于篇幅限制,并没有深入过多的技术细节。
云计算技术经历了十几年的发展已经逐渐成熟,国家在“十四五”规划中也提出了数字基建的战略方向。用云、上云是信息科技发展的必然趋势,然而在云化推进过程中难免经历变革的阵痛,我们会坚持对外磨合需求,提升体验;对内强化技术,提升可控和稳定性的宗旨来提升整体实力,建设好金融科技的基石。