骨干网(Internet Backbone Network)是连接国与国、城市与城市之间的高速互联网络。如下图所示,它通过海缆和路缆,将分布在世界各地的数据中心连接起来,是互联网服务提供商和云计算服务提供商的重要基础设施,肩负着满足全球范围内网络数据通信需求的重任。
全球骨干网示意图
骨干网的角色如此重要,以至于与此有关的话题,常常会引起业界的关注和讨论。作为云计算的基础,国内的云计算服务提供商是如何运维自己的骨干网的?又是如何实现自动化运维的?有哪些值得分享、思考的经验和做法?作为一名从业10年的网络架构师,我向大家介绍一下金山云骨干网的现况,希望对大家有所帮助。
如何快速发现骨干网级别故障?
首先简要介绍一下建设进展。金山云目前在北京和上海两地之间租用专线搭建起了骨干网络,按照计划,今年金山云会在广州部署节点,将进一步扩大环网规模,搭建北上广骨干环网,大幅提升金山云公有云服务的网络质量SLA。
当然,这并不是说建设骨干环网后就不会出故障了,对于互联网公司和云计算服务商来说,运营商的骨干网络故障是很让人头痛的,因为在通常情况下,这种故障会影响到多个省份用户网络的访问质量。
例如,2016年11月19日晚8点,包括华南、西南、华中等在内的国内多个地区,超过10个省份的用户,在访问华北地区的服务节点时,均出现了问题。测试结果显示,ICMP丢包率高达30%,延迟增大了约100ms,这种级别的丢包率和延迟情况,如果不及时处理,将导致用户的业务严重受损。
那么,对于这种骨干网级别的故障,云服务商能否做到快速发现定位呢?当然是可以的。
金山云的做法是,通过自研开源监控的方式,研发出服务于金山云整个骨干网的网络质量监控系统(Netbench)。
金山云网络质量监控系统监控图
如上图所示,金山云的这套系统支持多地区、多ISP监控,可在运营商发生骨干网故障时,快速发现并准确定位故障,同时采用电子地图这种直观形式,显示出各省份各地级市的网络质量(延迟、丢包等数据),如果某地出现问题,地图上相应位置的颜色就会变得不同。
金山云网络质量监控系统架构图
金山云这套网络质量监控系统的主要特点,分为定位策略、主要功能、应用场景三部分:
一、定位策略
抓取访问客户服务的用户IP作为监控目的IP;
多对多的监控模式,多个源IP监控全国各个省市的用户IP(保证数据的准确性避免路由ecmp不均匀的问题);
通过对抓取到的IP进行筛选,排除掉一些不准确的IP,最终筛选出每省份数百个有效IP进行监控;
商用的IP地址库与BGP IP结合对抓取到的IP进行区分(ISP、省、市等);
Master-Slave的部署模式,监控周期可精确到分钟级(每1分钟)。
二、主要功能
提供短信、微信、邮件告警;
提供故障时的MTR数据(平均每省份多个MTR),可帮助判断loss节点;
提供柱状图、历史数据展示等功能,可追溯故障,查看故障时的丢包以及延迟情况;
可针对重要的IP进行指定监控。
三、应用场景
可覆盖CDN、静态、BGP等多网络类型;
目前可针对EIP(计算)、KS3(存储)、KLS(视频)等业务类型进行监控。
骨干网调度架构图
如何快速解决骨干网级别故障?
对于骨干网级别的故障,除了需要快速发现,更需要快速解决。
有些互联网和云计算服务提供商,会通过多线BGP切换故障ISP流量至其他的ISP的方式绕开故障点,由于我国南北互通问题,跨网访问的质量很差,丢包和延迟都无法保证,而且在跨网切换时,会有较长时间的路由收敛,导致客户长连接业务中断。
金山云避免了这些问题。因为金山云的自建骨干网络拥有支持跨区域调度能力,当出现故障时,能够通过骨干网跨地区调度故障运营商流量,这种调度只是在同ISP不同地区之间的调度,只增加地区间的延迟,对整体丢包并无影响,这样一来,整体服务质量就得到了保障,同ISP内的路由切换收敛时间,可保证用户无感知,在近几次运营商南北骨干网故障中,金山云均做到了故障的快速调度恢复,客户也不必再因为运营商骨干网的故障而头疼了。
骨干网络调度前后对比图
这里解释一下原因。金山云可以做到以省市为单位的出口切换级别,比如目标浙江省出现了故障,会优先尝试调度浙江省出向流量至正常地区节点,在丢包恢复后将不会有下一步切换动作,不会导致全国切换而加大其它省份的延迟,只有在多省份同时异常而且调度出向无效后才会切全局入向流量。当前已经定义了一整套切换规则来判定什么情况下切换,什么情况下不切换。
骨干网运维自动化
每当出现骨干网级别的故障时,工程师很容易出现误操作刷错脚本等低级错误,导致业务受影响,故障处理速度上也得不到最有效的保障。
目前金山云上线的骨干网自动化运维平台,可实现对这种骨干网级别的故障的自动化判断和处理等一系列自动化流程,减轻了工程师的压力,它有着如下特点:
首先,Netbench提供判断依据,给出当前网络的质量情况,作为自动化脚本的触发条件开始进入自动化流程;
第二,通过Python脚本定义多个故障场景,当出现不同类型的骨干网时可根据脚本库调出对应的脚本;
第三,通过Netconf下发所需要调用的脚本策略配置到对应的核心网络设备上;
第四,直接对接邮件系统,从Netbench调用MTR发送给ISP进行自动报障;
第五,对接微信、短信告警平台,在故障时让客户能第一时间知道当前故障状态以及故障的处理进度。
自动化调度架构图
在两三个Region级别的骨干网通过“人”计算还是可以实现最优调度的,但是随着Region的增加,“人”计算的方式效率会越来越低,准确度也会越来越差,那么如何解决多Region骨干网调度呢?我总结出了几种方法:
1、通过Netbench的MTR功能定时定点采集每Region到每ISP的数据,平均每省份保证10-20个IP即可(排除路由Ecmp hash不均的问题);
2、对采集到的数据进行分层分级,区分到运营商层面的超核、核心、省市等,并在这些层级的IP上保留MTR当中的延迟值(运营商的设备都会对ICMP有保护所以不采用丢包值);
3、通过脚本分析构建ISP的逻辑IP网络拓扑图;
4、在运营商骨干网故障时能够清晰的描述到是哪个层级哪个核心节点出现的问题,能够在拓扑上清晰地看到问题所在;
5、在故障时可通过构建的逻辑IP拓扑计算出调度的最优RTT路径;
6、结合自动化调度实现最优调度。
随着客户对网络问题的重视程度的增加,骨干网以及多Region骨干网结构已经是现在的互联网服务提供商和云计算服务提供商不可或缺的重要环节。越来越多的重网络业务的出现,比如实施对战类的手机游戏、视频直播等对网络质量要求非常高的业务,不能一而再再而三地把我们所谓的SLA推到运营商的层面,站在客户业务的角度去考虑这是极其不负责任的态度,我们要在有限的网络环境中尽可能把客户的问题合理解决,这样客户才能把重要的业务托付到你那里。
由于运营、成本问题、运维、网络现状受限等复杂的因素,金山云目前并没有使用商用SDN的技术来实现骨干网自动化,,而是通过实践,使用了BGP、Python、GO等网络协议以及脚本工具配合Netconf来实现对于金山云骨干网的自动化。我希望通过介绍金山云在骨干网运维方面的思路,能给大家带来一些启发和帮助。
联系客服