前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何实现超大规模网络的配置审计

如何实现超大规模网络的配置审计

作者头像
鹅厂网事
发布2023-04-03 10:10:08
7670
发布2023-04-03 10:10:08
举报
文章被收录于专栏:鹅厂网事鹅厂网事

前言

    现代信息化社会的背后是由百万、千万级的服务器支撑起来的,服务器之间的流量交互需要网络设备来构造联通路径,巨量的服务器需要海量的网络设备做底层支撑,网络设备需要进行有序编排,提供具有高质量高效率的互联网络。为此形成一系列编排手段,如不同的网络架构,4-post架构、clos架构等,根据互联方式有full-mesh、分平面等,不同的管控方式有分布式、SDN集中控制等,网络设备之间传递路由的协议有静态、ospf、isis、bgp等。高质量的网络环境意味着网络能够按照我们的设计意图稳定可靠运行,网络设备的行为由配置决定,所以设备配置100%可控、零差错,是保证网络高质量最重要的基石。但网络设备的配置是随业务需求、网络架构的不断迭代而动态变化的,任何不符合预期的配置差异都可能导致网络故障、业务受损。Azure统计了在2015-2017年的所有网络故障的根因,由配置问题引起的故障占比高达27%;2021年facebook由于一条配置命令错误,导致facebook网络全球宕机6个小时;各大公有云服务提供商都有过因为配置问题引起的网络故障,进而导致业务受损的经历。

    在腾讯的实践中,我们针对超大规模网络设计了一套配置管理系统来解决这一问题。

审计方法,人工检查?

    配置审计最简单的方法是人工检查,运维人员登陆设备查看配置是否符合预期,找出现网配置与规范模板的差异,并进行修复。这种方法对于网络规模小(比如几十台以内),系统门槛低,见效快。但当涉及超大规模的网络(如十万级、百万级),人工方式效率低且不可控。如何多快好省的对超大规模网络进行配置审计,是困扰网络运营人员的老大难问题。如何实现超大规模网络的配置审计,答案说起来很简单,通过自动化,将简单重复的工作交给机器,用代码来实现,保证准确性的同时提高效率。那么如何进行自动化?

图1 如何多快好省进行配置审计

增加抽象层,纳管所有?

    自动化配置审计面对的第一个难题,就是各厂商差异的CLI(Command Line Interface,命令行界面),各个厂商有各自实现逻辑和编排方式,如果给每家厂商建造一套审计系统,人力投入高,且系统复杂,运营成本高,如何简化审计逻辑给自动化审计带来了挑战。世界上第一位计算机科学博士David Wheeler曾经说过“在计算机科学中,没有什么问题是不能通过增加一个中间层来解决的”,针对各厂商差异化配置导致的建设、管理、审计困难的问题,只需在设备配置之上,增加一个抽象层来屏蔽底层差异,以实现运维人员只需对抽象层做编排管理。比如各家厂商的接口配置均有接口描述、ip地址、掩码等信息,把这些信息以结构化的方式存储起来就形成了一个抽象层。简单地说,抽象层是一个数据建模的过程,通过设计一个配置参数存储的数据格式,对所有配置信息进行记录。

图2 抽象层屏蔽各厂商差异化实现

YANG+NETCONF,是否可行?

    关于网络配置抽象层的定义,业界已经有一些比较成熟的方案,比如2010年就被提出的YANG Model,是专门为解决网络配置问题而量身打造的建模语言。但是抽象层最终如何与设备对接,是将抽象层转译成CLI命令再与设备交互,还是定义一种新的网络协议,将抽象层直接下发到设备上,比如NETCONF,显然后者是更高效的实现方式。NETCONF是一个基于XML,被设计用来替代CLI、SNMP的网络配置和管理协议,YANG Model与NETCONF也进行了完整的适配。

    基于YANG Model和NETCONF的配置生成过程:

    1.网络架构师基于YANG Model模型对网络架构进行定义,生成某个架构版本对应的YANG Model实例;

    2.配置生成系统将YANG Model实例转化成XML语句;

    3.配置下发系统将对应的XML语句通过NETCONF接口下发到设备上。

    同样的,配置审计过程其实是配置生成的反向过程:

    1.配置采集系统通过NETCONF接口获取设备配置;

    2.配置生成系统将采集到的XML语句反向转化成YANG Model实例;

    3.配置比对系统将生成的YANG Model实例与目标架构的标准YANG Model实例进行差异对比和输出。

    方法和过程并不复杂,但NETCONF自2006年提出,2011年以RFC6241作为终稿再次发布后,在比较长的一段时间内主流网络设备厂商对NETCONF支持有限,近些年随着SDN和网络自动化运维的迅速发展,NETCONF才在诞生10多年后在传统计算机网络领域重新崛起。而多数厂商并非采用统一的NETCONF数据模型,各个硬件型号和软件版本的支持覆盖度也不同,导致现网实际很难通过NETCONF对网络设备进行大规模的配置审计和管理。

图3 NETCONF作为交互协议是否可行

自研交换机,问题转机?

    自研交换机的出现让问题出现了转机。自研交换机的软件操作系统由各互联网公司自主研发,当前使用最广泛的是基于开源SONiC系统。自研操作系统有以下几个优点,第一是“做加法”,可以根据自身场景特点和需求自定义实现一些新功能,满足各自的生产需要;第二是“做减法”,自研系统精简掉商用系统众多不需要的功能,通过更简单的系统保证更高的系统稳定性;第三是“利于海量运营”,操作系统统一,版本统一,更便于维护。腾讯自研交换机系统(TONS,Tencent Oper Networking System)天然支持腾讯自定义YANG Model,通过RPC下发配置,完美解决了网络设备配置的抽象定义、生成、下发和审计问题。

图4 自研交换机采集审计逻辑

商用设备,另辟蹊径?

    对于现网中的存量商用交换机,基于YANG Model的配置建模方法并非完全无解。整个建立抽象层、网络架构代码化、统一编排和运营的理念都是没有问题的,关键问题在于抽象层和网络设备的对接上。让各厂商同时支持一个统一的抽象层和数据模型以实现完美对接显然是不现实的,同样的思路,没有什么问题是不能通过增加一个中间层来解决的,如果有,就再加一层。在抽象层与网络设备之间再加一层翻译层,直接将YANG Model模型实例的结构化数据翻译成各厂商的CLI命令行,即可实现与网络设备的无感对接。

图5 商用设备采集审计逻辑

YANG+翻译层,问题搞定?

    理论上通过上述两种审计方式可以覆盖现网运营中的所有设备类型(自研设备+商用设备),即以YANG Model为纲,架构代码化管理,自研设备通过RPC方式、商用设备通过翻译层+CLI方式,辅以自动化运营系统,就可以实现超大规模网络的配置自动生成和审计,实现配置零差错。但理想很丰满,现实很骨感,问题出在商用设备的翻译层适配上。一台核心节点网络设备的配置数超过1万行,且大量配置存在复杂的依赖关系,同一特性在不同厂商设备的实现逻辑不同,甚至同一型号设备在不同软件版本下配置也存在差异,这些问题导致翻译层适配的难度持续升高,需要大量的人力成本。出于对投入产出比的考虑,该方法适用于架构相对简化,设备类型相对单一的商用设备场景。

    回归问题本源,之所以要设计一个统一的抽象层,对网络设备进行统一的配置下发、审计及管理,让整个网络系统规范化、结构化、代码化,是为了来提升网络质量和效率,建设面向未来可持续迭代和扩展的网络。对于少部分“老旧”的存量网络设备,甚至已经接近退役周期,显然需要一种更轻量、快捷的方法来实现配置审计。

文本对比,简单快捷?

    是否存在一种简单、直接的方法,能够以极短的开发周期、极低的落地成本来实现配置审计。参考在小规模网络中常用的人工审计方法,其本质是以人工的方式,用模板配置与网络设备的实际CLI配置进行文本对比,所以问题变成了如何实现海量配置文件的文本对比。得益于腾讯基础网络全自研网管平台(Sniper网络管理平台)和运营平台(NetOps自动化运营平台),结合腾讯云云函数开发平台,我们仅用了数周时间即上线了基于文本对比的自动化配置审计系统,实现了对现网全量设备的自动化配置审计。

    配置模板管理:将模板分feature存储与审计,引入Configuration As Code的概念,利用成熟的Git文件管理系统,使用Git-Flow工作流方式进行多人开发,通过流水线方式进行持续集成与持续部署;

    集中式参数管理:按照大区、城市、网络模块、设备等以不同层级,不同粒度存储参数,并联动网管平台、云函数进行参数拓展;

    自动化审计:使用基于Python的jinja框架对模板和参数渲染生成模板配置,对设备配置进行切片,自定义审计项颗粒度,文本对比差异结果可视化展示;

    模糊差异处理:对有默认值的配置做特殊审计处理,屏蔽prefix编号及顺序差异等;

    多版本匹配:引入版本匹配算法,解决多配置版本的共存问题;

    差异管理与修复:构建配置审计自动关联工单系统,打通自动化变更平台。

图6 配置审计系统总体架构

图7 配置审计整体流程

图8 建模和文本审计方式对比

►►►

总结

    超大规模网络的配置审计是各大互联网公司网络发展过程中面临的一个无法回避的问题,在业务发展初期,网络架构快速迭代,效率优先;尤其在网络规模较小的阶段,配置错误问题并不突出,随着网络规模不断扩大,由配置问题引起的case越来越多,积重难返;在海量规模下实现配置审计,依赖底层基础设施运营平台能力的完善,配置审计成为一个需要系统性解决的难题。

    文本对比和配置建模两种方法,类似金庸笔下的剑宗、气宗。剑宗更重招式,前期厉害,但后劲不足;气宗重视内力,厚积薄发。文本对比方式,直面问题,打蛇打七寸,快速显著,但后期乏力,难以实现架构代码化管理、配置自动化生成与下发等能力;配置建模方式,统一运营,面向未来,但前期需要大量投入构建系统能力。哪种方式更好,借用我们改革‍开放总设计师给出过的答案,“黑猫白猫,捉到老鼠就是好猫”。

    行稳致远,为者常成,基础网络的目标是给业务提供高质量、可扩展的底层支撑,下一步我们将继续朝着更加智能化的方向持续迭代配置管理能力,建立更加完备的自动化配置管理系统。‍

欢迎关注公众账号“鹅厂网事”,我们给你提供最新的行业动态信息、腾讯网络最接地气的干货分享。

注1:凡注明来自“鹅厂网事”的文字和图片等作品,版权均属于“深圳市腾讯计算机系统有限公司”所有,未经官方授权,不得使用,如有违反,一经查实,将保留追究权利;

注2:本文图片部分来自互联网,如涉及相关版权问题,请联系:sandyshuang@tencent.com或 mianyang@tencent.com

/

/

鹅厂网事/

分享鹅厂网络的那些事

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鹅厂网事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
配置审计
配置审计(Config)帮助您集中审计和治理云资源。它可持续记录和评估分散在您账号下各地域、各类云资源的配置信息和变更操作,从而帮助您高效实现资源自主监管和规范运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档