云原生视角下的开放网络

时间:2019-07-09 来源:www.pubblicitahotels.com

通博信誉最好的pt老虎

从云元生的角度看开放网络

4ec8866961be4d7faec70762130db1cc.jpeg

随着轻量级和高效虚拟化技术(如容器)的兴起和微服务的普及,云计算正朝着“云原生”的方向发展。为了适应这种趋势,还需要对网络进行修改,以更好地支持云原生平台的大规模弹性功能和服务自愈特性。开放网络技术将广泛用于云原生场景。

本文基于周伟博士在NCDC会议上的讲话《云原生视角下的开放网络》。

什么是“云原生”

自2015年以来,微服务,CI/CD,DevOps,无服务器,SRE等词汇大量涌现,云计算本土化运动正式启动。

从广义上讲,Yun Yuansheng是一套新的设计理念和方法,可以更好地构建云平台和云应用程序。从狭义上讲,CNCF技术生态堆栈由Docker容器和Kubernetes(K8S)支持。彻底改变整个IT架构。我担心这个会议还有一个OpenStack开发者论坛,但所有的演讲主题都是容器或Kubernetes,这也可以证实云的趋势是不可阻挡的。

Docker所代表的轻量级容器虚拟化技术将成为未来企业应用程序发布的标准形式,涵盖许多Linux甚至Windows平台。

80fc4ada6b9f4c94afea97172f0cedfd.jpeg

由Kubernetes代表的云本地编排系统将成为分布式集群架构的核心操作系统。

a642c1ccf62642a7b2e25202b61f0b40.jpeg

当时,硅谷的大家伙抛出了云的最初想法,表明以前使用云的方式存在很大问题。它不是原生的,主要反映为:

业务系统烟囱建设,项目经验不能沉淀和重用,项目数据无法共享和共享,IT治理难度

操作和维护模式没有必要的变化。虚拟化的出现使得物理资源的运营和维护变得不必要,但它在运营和维护虚拟机上的负担更多,例如服务的高可用性,自动扩展以及监控和审计。平台无法保证这些。还需要人工干预

开发尚未解放,开发人员在编写程序时仍需考虑使用资源,高可用性程序,您还需要自己部署中间件,自己测试

随着云的出现,其理想的场景,首先,IT的能力可以最大化重用,分层构建的能力,反映IT治理的有效性。其次,它是最重要的适用性。它包括云源强调的大规模横向柔性,自愈性高,平稳升级,可测量,集装箱化等特点。最后,发展是友好的。越来越多的项目表明,吸引开发者的项目更有可能成为主流。此外,CI/CD开发和运营集成流程可以大大减少集成部署的时间和难度,提高生产效率。

811941f1f54c425798dbd4b34e2fa2fe.jpeg

从数据中心架构演进的角度来看,最早的云计算是IaaS资源池,以VMware和OpenStack为代表的IaaS业务流程系统,统一管理网络计算,存储和资源。在这个阶段,主要的解放是资源的运行和维护,但应用程序的构建和部署方式,弹性扩展和高可用性安全性没有本质的变化。

c71912b48afa481a8f5ba48ef8b345d9.jpeg

第二阶段是PaaS的服务,强调服务的能力,以及对灵活性和高可用性的需求。云原生应用程序不仅可以简单地提供IT资源服务,还可以更好地利用云平台提供的功能。云原生是真正重建整个IT架构和组织架构到分布式云,最终状态是无服务器,应用程序不需要关心底层资源的运行和维护。

第三阶段是更现代的数据智能阶段,它强调数据的操作能力以及内部和外部数据集成外部服务的能力。数据治理和隐私数据保护是数据操作的重要保障。系统架构设计基于数据流是核心,也是将企业核心数据真正转化为生产力和生产价值的重要阶段。

目前的系统架构主要集中在第二阶段,大数据智能的第三阶段也在逐步发展,当然,它也是基于PaaS服务。作为PaaS服务的核心,云的最初目标是可以重用功能堆栈,并且可以在有保证的云平台上快速启动服务。

周博士的第二部分介绍了云原生网络。由于云的原始含义非常丰富,因此要理清上下文并不容易。在这里,云本机网络主要从两个角度进行解释:一个是网络如何为云原生应用程序提供支持,另一个是如何使用云的原始设计概念来改进网络。第一部分称为云本地网络,第二部分称为网络云生化。

可以从平台和业务中分析云元生对网络的吸引力:

从平台的角度来看,扩展的性能增益越来越有限,整个平台系统是在分布式灵活性的方向上发展起来的,可以保证更高的性能和可靠性。

对于业务而言,整个趋势是从原始单一应用程序转变为微服务,从而可以更好地利用灵活且可扩展的云平台的优势。前端服务尽可能无状态,有状态部分存储在后端的分布式存储中。对于服务之间的可靠通信,流量平衡和故障自我修复,平台负责处理。平台的分布和业务的微服务都需要强大的网络来支持大规模虚拟节点和微服务之间的通信。

39086f87a7894f51824e568749e58edd.jpeg

具体到技术层面,云对于网络的要求,首先是基本的两层或三层网络连接,第二层是4到7层的高级网络功能。

第2层和第3层网络主要在Kubernetes中实现CNI接口。 CNI接口的定义非常简单。基本上,创建了一个双层虚拟隔离网络,这相当于IaaS中vpc网络的概念。具体实施选项包括Calico,Flannel,Weave,Contiv等。这些程序有许多在线资料。与虚拟机时代的vPC不同,在云原生场景中,对于创建第2层和第3层网络存在高性能要求。每秒都会创建数千个网络的端点,并且可以灵活地弯曲和缩回。除了将服务部署到多个集群之外,网络还需要提供跨Kubernetes集群进行网络连接的能力。

e48311dffbc944269053ade1f830c1f2.jpeg

4~7层网络是Service Mesh,中文翻译是服务网格。顾名思义,Service Mesh中的通信不再是点对点通信,而是对服务和服务之间通信的抽象。每项服务都包含众多计算实例。这种以服务为中心的抽象将削弱每个实例的IP,并更加关注服务的虚拟IP。 Service Mesh的本质是提供安全,可靠,灵活和高效的跨服务通信。有些文章将Service Mesh称为下一代SDN,它有一些道理,但它也与基本的两层或三层网络的连通性密不可分。 Service Mesh将提供一些更先进的网络功能,如状态通信,路由限制,灰度流量切换,保险丝监控等,这是整个微服务框架的基本支持。

对于上述功能,您可以将其分解:

首先是负载平衡。负载平衡在Kubernetes中的作用并未被高估。整个分布式体系结构的数据平面基本上由负载平衡维护。例如,门户的路由是7层负载均衡器。服务或服务发现之间的通信也是依赖负载平衡将流量分发到另一个服务的特定示例。此外,如果释放灰度,则在旧版本和新版本之间也会切换负载平衡,并且弹性扩展本质上是负载平衡,其逐渐将流量切换到新数量的计算实例。

c90e48a6c1c343fe94a96ac611e6d80a.jpeg

在Kubernetes中,服务之间的负载平衡是通过iptables中每个实例规则的概率匹配来实现的。在服务网格Istio的实现中,边车侧车载容器用于“劫持”两个服务容器之间的流量。一旦流量被“劫持”,它就可以进行负载平衡,熔丝限制和一系列操作,如灰度发布,安全检测和遥测报告。当然,在这种情况下,边车(Envoy容器)的转发性能是关键。

我提到了Istio,它是CNCF目前推动的微服务框架。下面详细描述实现架构。

4db7c420f0954302a564f6a0180c4f87.jpeg

在数据平面中,它通过边车劫持流量,从而实现没有代码入侵的服务网格。这是一个很大的实现功能。与Spring Cloud,Dubbo等框架相比,它可以称为平台级微服务框架,这意味着微服务通信的所有功能都是通过平台实现的。无需增加应用程序代码,也不需要支持Java应用程序框架,这更符合云的原始设计理念。

在控制平面的两个组件中,Pilot负责发布控制,Mixer收集运行状态,Citadel负责处理安全证书。

另外,在另一个方面。 Istio还有一个非常丰富的后台工具,可以支持闭环操作。第一个是Prometheus和Grafana,它监控Istio的指标并将其可视化。接下来是Jaeger和Kiali等分布式跟踪工具,他们可以显示微服务之间的调用拓扑,以及每个API完全调用的子调,相应的持续时间等,这是发现微服务通信之间的网络。例外和性能瓶颈起着非常重要的作用。

最后,让我们来看看云的本机网络的安全性。这里的重点是网络和安全性。

d5fb2c73bf3144ccac525536bfc251ea.jpeg

具体来说,第一个是最小权限网络。与之前的默认交互操作相比,在服务方案中,默认情况下不会连接优化的实现。仅当服务之间存在呼叫关系时,才会发出访问策略。实现精细的网络访问控制。

第二个是零信任安全。它强调在每次通话之前验证连接。对于网络,身份验证可以基于Kubernetes身份验证系统。

这是一个名为Cilium的另一个有趣的实现案例,它也是CNCF CNI中的一个项目,但它主要是一个安全卡,首先在数据平面中,使用BPF机制(Berkeley Packet Filter,Cilium的整个开发团队)它是原始的BPF团队,随后是应用程序的感知。基于BPF框架,Cilium可以使用Service/Pod/Container动态管理网络和安全策略,分离控制平面的控制并更改策略。网络环境还实现了第7层功能,并感知常见的HTTP,Kafka和其他应用程序流量,以实现对流量的精确控制。第三,它是可扩展的,其状态由etcd维护,并且Kubernetes的一些功能被重用。

周博士主要通过两种典型的网络架构BGP和SDN来分析云原生指数。

BGP实现以SONiC为例。 SDN的实现是Stratum + ONOS,两者都是开源交换机操作系统。

9b24898dc9ad4c77ad32ee8e80624ba5.jpeg

第一个是云的两个最重要的指标:水平可扩展性,自我修复和高可用性。 BGP分布式路由具有天然的优势,已在全球大规模的Internet场景中进行了测试。对于SDN式集中控制,分布式和可扩展的控制平面高度可用,需要大量的笔和墨水来设计。另外,一旦数据平面和控制平面之间的链路发生故障,是否可以快速恢复也是一个主要考虑因素。

另一方面,配置友好性,可测性,闭环可控性,这些指标BGP并不占优势,经常报告BGP人为错误配置,分布式网络的故障排除特别困难,这又是SDN网络控制的一些优点。

在集装箱化支持方面,SONiC操作系统采用先进的集装箱化和模块化设计;而ONOS是一个基于Java OSGi的框架,并没有容器化计划。最后,就发展友好性而言,两者的当前状态只能被评估为一般。

接下来,周博士分享了这两个系统未来可能的改进。

如前所述,SONiC操作系统的设计采用了集装箱化和模块化的概念。其中心是用于存储状态的Redis数据库。其他功能组件围绕它构建。有BGP路由的容器和SAI容器,它们负责处理内核层硬件转发芯片的驱动程序。

3c9914ec119d4204b918dea42a2ae761.jpeg

在系统改进方面,需要更多的动态配置支持,包括ZTP,动态配置工具等。其次,支持网络状态获取,网络管理,监控工具对接,热启动等操作和维护功能非常重要。第三是数据平面的可视化,尤其是INT功能的支持。目前,所有正式启动的SONiC集群都将INT功能作为强制选项添加,以便更好地跟踪网络流量。当然,仅从网络级别进行分析是不够的。它还必须与上层业务系统的分布式跟踪相结合,以获得更好的结果。最后,主机端高度可用。 SONiC目前不支持主机双上行链路,这适用于生产应用。这几乎很难接受,所以你需要添加mlag或更简洁的堆叠功能。

看看Stratum + ONOS架构的网络设计。

cd193e85b43843bca46831226346d8de.jpeg

Stratum是由Google和ONF运营的开源软件。他的整体设计方案贯穿了Google一致的Controller-Worker分布式系统设计模式。具体来说,P4Runtime负责发布控制权,gNMI和gNOI负责网络管理和运营。所有三个接口都封装在gRPC Protobuf中,这提高了接口调用的效率。

如果我们将Stratum + ONOS的架构与Kubernetes和Istio进行比较,我们会发现它非常相似。

在Kubernetes中,Master通过Kubelet向工作节点发送指令,并且还向etcd数据库报告节点状态。 KubeProxy负责数据平面。

在Istio的架构中,Pilot负责发出控制命令,而Mixer负责收集操作数据。 Stratum与其整体管理和控制方法非常相似。它也可以通过IT界面和管理来设计CT系统。

7704de442a814aabacf19510f33ee4b5.jpeg

在控制平面上,为了适应云原始的生化结构,将有进一步的加固和改进空间。在ONOS的实现框架中,最重要的是分布式核心(左侧的黄色部分),它提供整个集群的状态。管理,消息通知,高可用性和弹性扩展。

这部分是云的原始系统,这是Kubernetes处理的优势。当然,它必须配合辅助中间件功能,如消息总线,缓存处理,持久性,配置管理,健康检测等。通过容器部署各种网络功能。这是使用Kubernetes转换ONOS控制平面的想法,可以将其重用于Kubernetes的许多分布式核心平台的功能,保持CT和IT架构的统一,并降低ONOS的整体复杂性。

此外,数据平面还需要一些虚拟化编程支持。

6061fd4ecaad4fb88459feff9b04f653.jpeg

以硅谷创业公司Kaloom为例。它侧重于软件定义的结构,数据平面由P4语言和可编程开关支持。

通过网络控制,整个物理结构可以分为多个虚拟vFabrics,并提供给Neutron或CNI用于vPC网络。

因此,虽然数据平面正在利用其速度,但可编程抽象的程度需要提高,主要反映结构的数据平面抽象和虚拟化的P4抽象,这需要进一步的研究工作。

还有一个形成闭环的监控平面。 Stratum提供gNMI和gNOI接口以与外部网络管理平台连接。

628eb14ceeed4a7c99517c415fe84eb2.jpeg

与传统的网络管理平台相比,我们仍然期望采用开源数据监控实现。目前,Prometheus和Grafana基本上是云原生系统的标准监控工具。因此,也可以使用两个组件来执行网络监视。对接,从而提高整个平台的可控性和运行能力。

最后,回到“云遇到开放网络时”的主题。周博士指出,无论是前面提到的SONiC,Stratum,ONOS还是P4,都可以说开放式网络在整个云网络系统中发挥着重要作用。

cb0eeb75188344a1b6c1203f58761cd7.jpeg

上图是根据思科云原生网络功能白皮书修改的。底层是容器引擎和容器编排平台。数据平面具有优秀的开源工具,如P4,OpenvSwitch,DPDK,VPP,SAI和控制平面。有SONiC和Stratum。切换操作系统,如ONOS和ODL控制器。除此之外,我们还可以构建各种微服务网络功能,如负载均衡,网络遥测,网关等,并通过整个CI/CD布局和DevOps操作和维护自动化整个网络系统。自愈闭环结构。

网络堆栈的开放为云原生网络的大规模系统工程提供支持。很难想象封闭的云盒和大盒子可以堆积云原生网络。

在云原生场景中,网络是分布式和微服务的重要支持。网络的功能主要是为应用程序提供服务。因此,它应该是需求驱动的,网络的功能将更适合云。最初的应用需求正朝着这个方向发展。

利用云原生的概念转换网络设计,尤其是控制平面的设计,可以利用当前基于云的IT系统构建的经验和成果来提高网络的可控性和高可用性灵活性。随着网络IT能力的提高和ICT集成的加速,云源生化对网络的设计和控制将过度。

网络的软件定义和网络堆栈的开源开放性已经在一定程度上得到了发展。在数据平面中,随着OpenvSwitch和P4的出现,可以将软件功能发布到网络域中。整个转发处理管道可以是软件定义的。 ONF,Linux Foundation和CNCF等开源组织的一系列项目网络堆栈已经完成了一系列重要任务,这将有助于最终实现云的本机网络目标,未来开放网络将发挥更大作用云的本机网络系统中的角色!

由于时间有限,本报告的范围主要集中在数据中心内的网络。尚未开发出其他主题,如WAN,拥塞控制和AIOps。

本文转载自公共号:SDNLAB,点击查看原文。

看看更多