摘要:网络领域在IT技术里一直是复杂的,而网络故障发生频率往往较高,对业务影响也比较大。
本文分享自华为云社区《【华为云Stack】【大架光临】第1期:华为云网络测量如何“悬丝诊脉”》,作者:华为云Stack资深架构师 李俊武 。
一、背景:
云计算为数据中心注入新活力,业务通过云化来实现资源快速部署;弹性伸缩和敏捷创新,而网络领域也从原来的交换机、路由器、防火墙等物理网络逐步延伸到包括虚拟交换机、虚拟路由器、虚拟防火墙和应用类网络虚拟设备的虚拟网络。
传统网络设备运维已经形成了配套的标准和工具,比如交换机设备常用的端口收发报文计数、SNMP交换机监控指标、端口镜像/流镜像/ERSAPN镜像、ACL计数、日志信息等。随着网络SDN架构的发展,基于SDN架构的云网络具有智能化的基因,比如网元提供Netconf信息上报接口等。随着云网络的发展以及业务上云的普及,虚拟网络成为云计算开发者、使用者、运维工程师等角色需要深入理解的技术。
图1 云网络的常见流量
二、云计算虚拟网络发展带来的问题和难点
网络领域在IT技术里一直是比较复杂的,而网络故障发生频率往往较高,对业务影响也比较大。传统业务上云后,计算和存储的资源对象是局部静态的,本身就有访问权限控制的概念,除了同主机资源隔离外并不需要太多特定的隔离技术,但是网络资源对象却是全局的且处于变动的运行态,不同租户间甚至VPC内部都有隔离诉求;而且业务运行时一旦出现云网络问题会让运维人员感到棘手和头疼。 因此,对云平台运维人员提出了更高的要求,包括虚拟网络系统知识的学习、云平台虚拟网络架构的学习等,并且也对云平台虚拟网络的运维工具的功能丰富度和普适性都提出了新诉求。
云网络有很多自身的特点和测量的前提约束,所以云网络测量和传统网络测量在技术方案上会有些不同,我们逐一来分析下:
云平台的虚拟网络需要大量的软硬件系统知识和相关工具
物理网络多是网络协议RFC和相关设备特性的积累,而虚拟网络的技术掌握除了需要熟悉传统网络相关技能外,还需要理解程序运行的CPU/内存等硬件、OS/工具等软件有关知识,并且积累相关云网络运维的可用技术和工具手段也是一件非常琐碎的事情。
虚拟网络架构复杂,涉及网络功能繁杂,需考虑运维技术的普适性
为了实现地址重叠和多租户VPC能力,并且具备从传统网络架构上演进为云网络的能力,云网络整体架构通常分下Underlay和Overlay两层,常见技术是Vxlan、NvGRE或Geneve等隧道封装,Underlay网络是云平台运行的物理网络,虚拟网络是在云网络里由租户来创建,但其维护职责依然在云平台相关的管理/运维角色来负责,所以云网络运维要支持分开测量业务Overlay网络和底层Underlay网络,且二者测量能力是解耦的,以解除对Underlay网络硬件依赖;云网络测量还具有网元分布式范围广、非对称路由存在广泛、网络配置动态变更频率高、子网地址重叠等特征,这些也是云平台网络测量必备适应能力。
虚拟网络测量不可影响租户业务
云网络环境下,计算实例运行的业务属于对应租户,网路测量不能对租户业务造成任何的影响,不能因为测量导致业务报文丢弃,或是业务报文测量信息进入计算实例内造成业务受损;这就决定了传统修改业务报文的DSCP/TTL等字段作为测量报文标识是不可取的。云网络测量如果想达到良好的效果和影响可控,必须采用主动测量,而主动测量的报文必须和业务报文在转发路径上要一致,才能达到精确测量的目的。
网络测量的安全性
传统网络业务和网络属于同一个管理者,所以业务可以配合网络测量并且不会对业务造成影响。但是云网络测量不同,一方面因为云平台为租户提供资源租用服务的原因,一旦对业务报文修改可能造租户成业务影响;另一方面对于恶意租户,可能会知晓测量内部实现,故意伪造或风暴大量测量动作,从而造成网络测量的错误甚至影响平台工作的运行稳定。所以网络测量报文和测量方案一定是要经过精心的设计,即前面说的必须主动测量。一云网络测量的测量标识有一部分是可以自定义的并且可控的可周期性变化,纵然恶意租户发送的伪造测量标识一样,但自定义部分无法被测量算法匹配而识别到是攻击,进而达到安全测量的目的。
政企客户的云平台里,虚拟网路和物理网路的建设及维护都在客户的数据中心里发生。对于政企的网络建设或维护的负责部门,在技能积累、工具复用、运维流程等方面都有很大的差异,这些差异可能会造成云平台管理维护、业务上云的相关人员的不适应。因此云平台通过转发面数据的信息采集和分析,对网络故障定界定位,网络测量技术意义非常重大。
三、华为云的独门秘籍:网络带内测量方案为云网络“悬丝诊脉”
华为云Stack通过云平台运维功能提供了相应的网络定界能力,将原来数小时甚至数天才能定界清楚的故障场景,缩短到了分钟级,并且精确度和流量适应性都极大的提高,同时很大程度上降低了维护人员的技能要求和对云平台内部实现细节的熟悉程度的要求。
图2 华为云Stack网络测量工具界面
在IETF RFC 7799论文中,将网络测量分为了三类:主动(Active,构造测量报文来获取网络运行信息)、被动(Passive,在业务报文原始数据来获取网络运行信息)和混合态(Hybrid type;混合态又分为两种,一种是在原始业务报文上添加比如修改DHCP、IP/TCP OPTION等,另一种是主动和被动的同时使用)。
仅仅基于原有故障业务的报文进行测量会存在不可控的问题。举个例子,假设是租户错误配置防火墙规则导致特定源端口丢弃,导致客户业务流出现了TCP流量中断;想定位/定界这个问题需要基于在该TCP流报文路径各个结点继续采集获取网络运行信息,但是因为TCP中断该流,不再有新报文发送而无法继续测量。而对于该断流场景,又不能基于Ping报文等做测试,一方面Ping报文相比TCP五元组在网元集群时可能因ECMP/LACP的哈希走不同路径,另一方面防火墙/SNAT匹配时走的有状态转发规则也不同,所以可能存在Ping测量没有问题,但是特定TCP流有问题的情况而无法测量出结果。因此,基于业务报文自身的测量,对于测量速率、测量总量等都无法有效控制,被动测量的方式在云网络测量系统的测量效果将会十分不理想。
我们可以看出,云网络测量想达到极好的测量效果,我们必须使用有可编程能力的网络测量技术,并且使用主动测量来设计相关方案,从而实现精确的网络测量。我们提出了华为云自己的网络带内遥测协议。应用场景包括云计算网络的业务故障网络节点测量定位,并兼容传统数据中心测量的能力。可用在企业自建云下,可以进行虚拟网络和物理网络组件问题定界以分配问题到具体责任组件,还可以为公有云租户提供定期巡检能力,让其业务感知云平台网络情况,合理进行业务流量优化调度。测量平台整体架构如图3中的架构。
图3 云网络测量架构设计
华为云Stack云网络方案实现通常分为控制面和转发面两个部分,云网络测量系统对应的分别由测量控制器、测量CMDB、测量网元及其对接Agent或SDN控制器几个关键组件构,这些组件互相配合,实现网络精准测量。我们为此申请了专利《网络测量系统、方法、设备及存储介质》申请号:201910886165.6。
在整个测量系架构统设计中,我们实现了如下几个关键技术点:
- 高精准性:测量系统基于故障业务流报文/L2/L3/L4头等信息结合测量标识构建Active的测量报文,从而实现精确的测量;
- 高安全性:测量系统对租户的业务流报文的进行安全测试: 在测量路径始节点开始注入测量,测量路径各个节点进行测量标识匹配并将测量信息送到测量控制器和分析器,并在测量路径末节点丢弃该测量报文避免对租户业务产生不良影响,各节点测量信息在分析器汇总后将测试结果返回测量系统管理者;
- 低资源损耗:测量系统针在转发面网元通过测量标识来识别测量报文,转发面网元对测量报文的识别特征归一,仅需要固定下发少量匹配规则,不需要随着测量动作动态更改网元配置,转发面性能影响在3%以下,大大减少了网元匹配的资源耗费。
- 高灵活性:测量Agent采集各测量结点的测量信息时,除了原始测量报文的内容,还包括报文转发状态信息和时间戳等相关信息,并且可以基于编程能力自定义所需要的采集信息;
图4 华为云网络测量方案关键技术点说明
四、华为云网络测量方案的小结
华为云Stack的虚拟网络基于测量方案——网络带内遥测协议,实现不同租户、不同业务流报文的测量标识在控制面、转发面等协作测量。既可以实现网络故障出现后的故障定界,也可以在故障发生前进行周期性巡检来事前预防,特征包括丢包和时延等。经过精心设计的云网络测量方案不仅可以适用于Underlay和Overlay的不同网元,还可以自适应不同网络流量的路径,后续云网络新能力上线后测量能力无需重新开发适配,帮助政企业务在云上稳定运行。