设为首页 | 收藏本站欢迎来到卓越网络免费免备案CDN加速,DDoS和CC攻击防御,高防CDN管理平台!

已阅读

企业免备案CDN加速应该如何上云?

作者:cdnfine      来源:cdnfine      发布时间:2020-12-28
昨天接到一朋友的消息,问我某个快消企业想把自己的数据中心完全云化,问我该如何解决?特别是这次疫情之中,大量完成“数字化转型”的企业似乎都还活着,而很多传统的企业由于IT架构的陈旧却迟迟不能复工。当然还是老样子,只谈技术本身,并且以史为鉴,毕竟可以知兴替,以免各位被各种营销号带坑里。需要做这方面创业的也看看技术当葫芦自己画瓢也行,需要自己构建多云网络的直接拉到最后看演示。
 
1.传统的企业架构
1.1 全专线的私有网络时代
传统企业架构早期就是完全私有的网络建设,为了某个应用买一堆服务器,安装部署几个月,为了新建一个分支机构,买网络设备租用专线,开通施工几个月。有可能还没开业几个月却因为选址错误,生意冷淡这个门店就撤销了。

企业免备案CDN加速应该如何上云?

随着业务的发展,机房占地面积越来越大,另外专线带宽成本也越来越高,互联拓扑越来越复杂,于是在广域网上出现了典型的“核心-汇聚-预汇聚-分支接入”的架构,例如很多大型银行出现了总行连一级行的企业骨干网,一级行连二级行的汇聚层,以及二级行连分支机构的接入层。

企业免备案CDN加速应该如何上云?

1.2 托管机房和部分v**接入

而数据随着处理能力的需求和网络带宽的需求,网络中心开始出现,企业自己建设DWDM的城域网实现同城灾备的也很多,但是随着两地三中心的监管要求,很多大型企业选择了在大型运营商构建的专业托管机房部署自己的数据中心,毕竟有足够的异地互联资源。

企业免备案CDN加速应该如何上云?

另一个显而易见的问题就来了,如何保证多数据中心之间的数据安全,site-to-site的v**技术也就逐渐出现了, 早期就是Crypto Map对匹配的流量进行加密,但是随着应用的部署又觉得不灵活,干脆弄个GRE隧道在Crypto Map上match GRE就好, 后来还出现了直接配隧道的SVTI,同时随着数据中心虚拟化的趋势,大量的企业部署VMware 实施Vmotion,同时利用广域网路由器在加密IPSec隧道上实施基于OTV的大二层互联互通和基于LISP的资源动态注册。
 
而这个年代随着3G/4G以及互联网宽带逐渐普及,很多对成本敏感的客户和金融保险等行业对移动办公的需求,多种基于IPSecv**或者SSL v**的设备开始部署, 然后分支机构需要动态连接又出现了DVTI等技术,为了同时兼顾移动办公用户使用XAUTH还出现了Easyv**等技术。但总体来看都还是“总部--分支”(Hub-Spoke)的结构。
后来还有一些分支机构之间互相访问的需求,于是出现了Cisco DMv**,早期的Phase-1仅支持HUB-Spoke的星型拓扑结构,也就是说所有分支机构间的流量必须经过HUB互转,HUB端采用mGRE,分支采用P2P的GRE,但是这样很蠢啊,分支到分支流量延迟很大,Hub端带宽也不够,于是DMv** Phase2支持了分支间的互通,仅初始流量通过HUB,后续流量两个Spoke就自己转发了,但Phase2有些现在SDN流表的概念,初期转发表为空,触发到Hub查然后再安装分支互联的流表,这样汇总路由等功能会出现问题,为了解决Phase2不支持路由汇总等一系列不足,还出现了DMv** Phase3.
DMv**商用案例非常广泛,某国内非常出名的连锁酒店,某国际上非常知名的快餐品牌等,基本上的架构都如下图所示,营业门店数量达到几千家的规模,但是FullMesh全互联肯定不行啊,门店路由器哪有那么高的容量,因此也伴生出了v**层次化汇聚的需求:
 
当然这种基于mGRE+IPSec+NHRP的协议栈构成的DMv**解决方案华为也同样实现了一套并命名为DSv**
相关的资料也可以查询如下:
https://support.huawei.com/enterprise/zh/doc/EDOC1000154674?section=k006
 
2.云计算的兴起
2.1 企业上云的商业逻辑
企业上云肯定还是为了钱考虑的,这和不同国家的税收制度和企业自身的成本控制有关。在很多国家都可以把外包的服务费用作为成本摊薄在企业成本中,仅有少数需要拉投资的国家, 才会把固定资产投资作为抵税的政策。另外一块是很多企业逐渐从重资产向轻资产转移的过程,同时对资产也有了更多的弹性的需求,例如消费类企业仅需要在大促时增加资源,而大促后释放资源。所以前文讲软件定义的网络<“软件定义”的网络世界>其实也留了很重要的一块没讲,就是如何上云。
另一方面上云的需求是企业分工协作模式的变革,在数字化转型过程中,整个生产链条需要引入大量的小而精的服务型企业,而同时销售端O2O的转型也加速了整个信息系统上云的需求。
 

2.2 早期的企业上云

其实本质上就像喝自来水一样,为了喝上干净的自来水没有必要建一个自来水厂,只需要把水龙头打开就可以获得要喝的水,而云计算本质上就是一个水池,所以实际上早期的企业上云本质上来看就是把原有的资源池化,并且动态资源调度的过程。
 
资源池如何建立的问题又带来,公共使用的公有云(AWS/Azure/阿里云),企业私人建立的私有云(Openstack+ACI/BGP-Ev**+超融合),然后随着虚拟化和池化部署还出现了根据业务部门分类的不同专网。
 

2.3 VPC(虚拟私有云)的出现

业务需求逐渐的促进了公有云和私有云的融合,AWS发布了通过允许客户透过IPSecv**连接EC2网络,并在公有云的计算资源池上划分出一块虚拟的私有空间供客户使用,因此早期的VPC也被称为InterCloud。
在这里伴随着IPSec v**的使用,很多厂商也开始了v**网关云化虚拟化的进程,例如思科推出了CSR1000v云服务路由器,主要功能便是在AWS上部署和原有的网络构建DMv**网络。
 
但是即便VPC到了云端,也有可靠性和冗余的需求,通常云计算厂商把资源池分为不同的Available Zone(AZ),用户可以在不同的AZ建立VPC从而实现地理上的异地灾备等功能,在这个时期常见的做法就是建立不同VPC之间的Peering(对等)连接
2.4 Transit VPC

随着业务的发展,流量越来越大,单体软件架构面临一系列挑战,在那个年代通常有几种办法来解决:

1. 负载均衡:各个云厂商开始提供基于LVS的负载均衡服务,F5等商业软件也被用户采购

2.CDN:如何按照地域提供应用加速服务也成为了一个难以解决的问题,大量的厂商在一段时期疯狂使用免备案CDN,但后期又发现CDN内容被劫持安全性出现问题,多个免备案CDN网络相互干扰,资源更新冲突等问题,应用隐私也无法保护。

基于多地域AZ的分布式VPC和分布式软件架构逐渐成为解决这类问题的一个办法,问题又来了,如果VPC多了,那么VPC-Peering的数量按照O(N^2)增长,运维复杂度成倍的增加.

为了解决这个问题,云计算厂商又提出了Transit VPC的架构,由思科CSR1000v提供的DMv**作为Region Hub来提供VPC互联的解决方案。

 也就是以后云计算厂商提出的Transit VPC架构,即构成一个中心化的Transit区域

2.5 ServiceMesh / Multicloud 

同一时期,应用软件层面也逐渐的伴随着Docker/K8S等技术的兴起,从单体软件架构向分布式迁移,直到后期逐渐构成以Istio为代表的ServiceMesh架构,伴生的便是完全去中心化的软件架构。

与此同时单个网络运营商的故障带来的巨大损失也被暴露出来。鸡蛋不能放在一个篮子里,那么MultiCloud也就顺理成章的出现了。但是我们注意到传统的DMv**架构还是有明显的Hub-Spoke区分, 应用软件都去中心化了,VPC互联互通又该如何去中心化的实现呢?

3.基于SDWAN的云互联
3.1 MultiCloud VPC互联

MultiCloud的出现使得广域网互联出现明显的去中心化特征,传统的TransitVPC可能成为单点故障,同时伴随着DevOps,企业在云端VPC的扩张速度越来越快,传统的广域网技术已经无法跟上应用的需求了。

在这种背景下,软件定义的风潮开始席卷广域网设备,伴随着DPDK和VPP的出现,基于通用X86 CPU的软件转发能力迅速提高使得NFV这些虚拟化网络设备快速的进入到整个市场。但是技术上如何实现呢?

正如前文介绍思科的DMv**和华为的DSv**一样,本文不涉及厂商,只是透过各个厂家的包装让您看到mGRE+IPSec+NHRP+BGP/OSPF的本质,但是很遗憾的是并未看到华为或者其它SDWAN厂商开放的有价值的技术资料,所以这里以思科的SD-WAN解决方案为示例,但还是仅讨论技术。

3.2 去中心化的SDWAN架构
3.2.1 分布式控制器
当我们实施SDWAN的时候,为了运维方便必须要实现控制器,而控制器又是一种中心化的软件架构,如何保证控制器不失效或者更进一步,如何把控制器做成一个分布式软件放置在多云环境中,这便是SDWAN去中心化的第一个挑战。

思科将SDWAN控制器拆分成三类组件便是出于分布式软件架构和多云部署的考虑,它将业务逻辑分为了编排vBond, 管理vManage,控制vSmart,转发Edge四个不同的功能组件,任何一个组件都能在多云环境下部署并构成集群,如下图所示:

这样极大的提高了在多云环境下的稳定性,任何一个云出现故障都不会导致SDWAN控制器下线。

3.2.2 如何隔离网络

无论一个NFV后面接的是什么设备或者什么地址,SDWAN第一件事便是考虑到网络安全合规要求,隔离互联网和私有网络。通常我们把一个设备连接互联网的接口称为传输端口(Transport Interface)而连接VPC或者私有网络/数据中心的接口称为业务端口(Service Interface),如下图所示:

同时默认在非安全区域添加了默认安全策略组,仅有授权通过的白名单v**流量和控制器流量可以通过。在转发平面上,通常我们会为他们放置不同的路由虚拟转发表(VRF)将它们完全隔离开

3.2.3 如何标记VPC

不同的VPC或者客户的分支站点甚至是数据中心,后面接的网络服务器容器或者是终端,我们都可以抽像为资源,或者就是不同的IP地址段来表示,并且可以通过不同的属性将它们进行v**隔离,也就是我们常说的Overlay层,而Internet区域也被称为Underlay。那么Underlay和Overlay层是如何映射的呢?当然所有的人都会说MP-BGP协议进行TLV扩展来支持键值对(Key-Value Pair)。

直接使用MP-BGP或者BGP-Ev**的问题:

1. Underlay公网地址经常变动,BGP路由协议收敛慢

2. 通常VPC需要跨越NAT,标准的BGP协议NextHop为VPC私网地址,无法穿越NAT

3. 优选路径类型无法在单独的下一跳信息中获得,通常还需要Community熟悉扩展

4. 互联通信还需要NHRP一类的协议进行补充

这些都是思科在尝试使用DMv**技术构建IWAN解决方案时犯的错误,而且正如前文所述新一代的SDWAN需要去中心化的分布式架构,而DMv**或者DSv**的解决方案有明显的中心Hub结构,极易造成单点故障或者规模无法扩展的问题。

思科新一代基于Viptela的SDWAN架构采用递归路径查询的方式,它结合和BGP和LISP的各自优点,将Overlay所对应的VPC网段等资源信息映射到一个被称作为TLOC的资源定位符上,如下图所示,然后再递归查询通过解析TLOC可达性等信息来进行路径选择和策略路由。

具体的TLOC编码如下图所示,我们对每一个VPC站点进行了编码(Site-ID),同时为每一个路由器也编制了System-IP,然后根据它们接入的不同运营商和不同的链路类型,我们为传输接口(Transport Interface)染上了不同的颜色(Color),例如Azure被标记为了Private2(紫色),数据中心的电信链路标记为蓝色(Blue),而联通的线路则标记为红色(Red)。封装形式(Encapsulation)则可以选择明文的GRE传输或者IPsec传输方式。

我们根据这些TLOC编码信息就可以产生v**路由了,即将VPC的网段和资源信息和TLOC绑定了,如下图所示,v**1:Prefix-D1的资源的路由下一跳属性被标记为TLOC <2.2.2.2, INET,IPsec>及<2.2.2.2,MPLS,IPsec>,即v**1:Prefix-D1可以同时通过vEdge-D(system-ip=2.2.2.2)的这台路由器的INET网络和MPLS到达,但是约定必须使用IPsec加密封装的方式传达。

v**路由通过OMP协议更新发送到控制平面vSmart上,并由vSmart集群分发到其它路由器,它的作用和BGP UPDATE消息以及BGP RR路由反射器功能类似。

3.2.4 分布式路径选择

经过控制器vSmart集群的反射,vEdge-S(1.1.1.1)已经知道v**1:Prefix-D1的资源可以通过2.2.2.2的这台路由器到达了,但是还缺少一些信息,广域网Underlay的地址是什么?加密需要的密钥是什么?这里就需要递归查询的第二步了,如何将TLOC和Underlay的信息关联,很简单,再发一个BGP UPDATE消息让vSmart反射就好了,如下图所示

在TLOC Route信息中包含了IPsec的SPI/Auth/Encryption密钥等信息,同时还有NAT穿越的信息, 因为很多场景中,VPC给路由器分配的是私网地址,NAT地址翻译是云服务提供商做的,所以需要通过某种方式获得自己公网地址,这个时候vEdge会通过向vBond编排器集群查询的方式,让vBond编排器将其公网地址信息反馈回vEdge实现。

在获取了TLOC的Underlay信息后,vEdge-S便对会话进行BFD检验,同时测量延迟抖动和丢包等链路质量特征,它会根据自身的情况,进行TLOC可达性测量,并构造出一张TLOC 路由信息表,如下图所示:

最后,Overlay的v**1:Prefix-D1的路径查询第一步查询TLOC,第二步再查询TLOC路由表,选择可达的或者SLA满足的路径查询到Underlay的封装和传输参数,然后将报文发出。这样的递归查询带来了极大的灵活性,例如我们可以根据不同的v**定义不同的Overlay拓扑结构和选路规则:

3.3 分支机构直接上云

随着业务的发展,SaaS类服务越来越多,例如Office 365, Salesforce,Webex等应用的出现。传统的v**架构是采用集中式互联网接入技术带来了极大的性能瓶颈,而分支机构直接上云(Direct Internet Access)或者(Direct-Cloud Access)显得非常重要。

这样就需要对流量有DPI应用识别的能力,并且能够对相应的IP地址和端口进行缓存,因为很多TCP的流量需要第一个包就要重定向到需要的连接上。

而策略定义上,就是定制一个app-list,匹配Google/Dropbox/Office365等应用,某些时候可以将其设置为从一些靠近云端的VPC路由器出去,某些时候也可以将其设置为直接本地通过Internet NAT出去,这也是为什么思科在路由协议上使用递归查询的原因。

4.MultiCloud-SDWAN实战
4.1 阿里云上部署控制

我们选择了杭州的AZ部署控制器,由于只是一个演示环境,随便装了五个虚机,一个vManage,一个vSmart,一个vBond作为控制器, 一个Cedge作为SDWAN路由器,还有一个服务器用来签发CA证书和传输证书用。

4.2 腾讯云上部署控制

为了测试一下长距离不同云VPC互通,我们选择了在腾讯云重庆AZ上部署SDWAN路由器,仅部署了一台:

企业免备案CDN加速应该如何上云?

4.3 Edge设备上线

Edge设备上线非常容易,仅需要配置System-IP,Site-ID,Orgnization-Name,vBond的DNS域名或者IP地址,然后接口上配置IPsec封装和Color就好,而相对于传统的IPsec v**需要配置大量的IKEv1/IKEv2,证书密钥等信息,采用SDWAN新建VPC仅需要几分钟的时间,然后VPC内部的网络通过OMP协议自动通告和远端互通:

企业免备案CDN加速应该如何上云?

就此我们轻松的完成了一个VPC新站点的创建,并不需要Fullmesh配置VPC Peering或者构建复杂的Transit VPC。

注:思科官方支持阿里云将会在明年三月,现阶段在阿里云上可以使用G5NE主机采用部署qcow2镜像的方式做一些实验,腾讯云没有官方支持,但也可以通过自带qcow2镜像去玩玩:)

4.4 运维

当你需要管理一个多云的环境时,可视化运维便成了非常关键的一步了,最简单的就是链路质量检测,丢包率延迟抖动这些。

企业免备案CDN加速应该如何上云?

企业免备案CDN加速应该如何上云?

然后运维规则里,肯定就有要根据SLA做动态路径选择了,比如某种应用声明式运维,我需要它满足延迟和丢包率在某个阈值一下,例如下图:

企业免备案CDN加速应该如何上云?

还有便是集中的告警日志平台:

企业免备案CDN加速应该如何上云?

通常配置大量的设备还需要模板吧,而且北向接口做配置变更也需要容易回退吧,这套方案选择了NSO使用netconf+Yang model的方式,这些细节做的非常不错

同时还有很多开源的运维工具

企业免备案CDN加速应该如何上云?

另一方面还有一些安全相关的增值服务,抽空一起玩玩

企业免备案CDN加速应该如何上云?

5.展望和不足

说了这么多,其实只是想从协议实现上和运维上来给大家解释SDWAN应该如何设计,vSmart的那些OMP路由,如果是非网络设备厂商,完全可以借助K8S使用更新ETCD来实现K-V的分布式存储和策略的分布式存储,vBond用一些Public DNS的方式也可以做一些事情,控制平面上Viptela这个方案跟K8S有很多类似之处,比如一个Edge路由器可以算作一个Pod,但是它没法根据实际的网络Scale动态的新增或者减少Pod,或者动态的调整广域网带宽,这些都是可以在后期多云环境里逐渐加强的,另外就是基于AI的运维,这一方面也需要加强。大概就这么多了吧,也希望大家选择SDWAN的时候从最本源的东西和根本的需求着手,不要被一些花哨的功能而忘记了初心。

 
Keywords: 免费CDN加速 免备案CDN加速 高防CDN加速