37

网络链路品质自动化监控—RPing系统实践

 4 years ago
source link: https://www.sdnlab.com/23978.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者简介:
田博文,北京世纪互联宽带数据中心有限公司网络运维中心,华北与骨干网络部经理。近十年数据中心、运营商网络工作经验;在传统IDC数据中心BGP网络、运营商城域网,有比较丰富的经验。毕业于长沙理工大学,通信工程
熊学涛,北京世纪互联宽带数据中心有限公司网络运维中心,网络运维总监

在多活DC托管业务或者多区域云部署的场景下,DCI线路的传输质量和稳定性决定了整体业务的可靠性。传统的网管监控、通断监测、手工切换,已经远远满足不了现有业务对DCI网络稳定性的要求。为了做到DCI线路延时与丢包秒级报警、流量自动切换,提供更快、更智能、更全面的网络监控服务就成为了一种必须具备的基础能力。本文分享一些世纪互联网络运维中心在实现网络链路品质监控及流量切换自动化方面的探索与实践经验。

1.回顾未部署RPing监控时NOC遇到的网络问题

network-link-1.png

图1.DCI网络连接示意图

如图1拓扑所示,IDC-A1机房与IDC-B1机房间DCI网络由长传链路A、B、C组成,正常情况三条链路延时丢包率基本一致且流量负载。如果其中一条线路A故障时丢包率/延时增大,必然会对托管客户业务产生影响。传统方法NOC排障需要逐条线路测试排查,定位故障链路后调整业务路由优先级切换流量恢复业务。
运维痛点:这类故障属于常态化故障,实际生产网络的网络拓扑也会比图1中复杂很多,例如有多条主用直连链路,也有备用迂回链路。个别线路出现问题比较频繁,NOC逐条排查周期长、难度大,故障期间对客户业务影响时间长。

2.部署Rping系统解决痛点问题

network-link-2.png

图2.Rping系统架构图

解决方法:使用Zabbix结合shell/python脚本,部署RPing检测,实现监控链路延时、丢包变化秒级报警,报警可以送到邮件、钉钉值班组、短信等,帮助NOC值班工程师快速发现并定位故障链路,迅速恢复业务。同时通过zabbix系统使监控报警来联动触发脚本,自动执行预案加载配置,完成流量自动切换到备份线路,实测故障监测、处理、恢复秒级的处理。

RPing基本原理:通过使用cisco、juniper私有MIB库中的ping管理分组,执行和获取远程设备之间的 (ICMP)活动,实现网络设备链路间延时、丢包实时监控和报警功能。其中涉及对应MIB-Ping分组:Cisco:(1.3.6.1.4.1.9.9.16节点下),juniper:(1.3.6.1.2.1.80.1.2节点下),通过执行snmpset、snmpwalk命令实时获取网络设备间ICMP测试延时、丢包值。

部分脚本分享(Cisco版本):

Java
#####使用ping-mib进程号范围大于300 [ $PID -lt 300 ] && exit #####判断Snmp-community是否正确及源IP是否可达 snmpset -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.16.$PID integer 6 &>/dev/null [ $? -eq 1 ] && echo "0" && exit #####调用Ping-mib进行一组Ping测试 snmpset -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.16.$PID integer 6 &>/dev/null #清除之前创建行记录 snmpset -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.16.$PID integer 5 &>/dev/null #创建行并将状态设置为5(初始状态) snmpset -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.2.$PID integer 1 &>/dev/null #设置测试的协议为1(ip协议) snmpset -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.3.$PID d $Test_IP &>/dev/null #设置测试的目标ip snmpset -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.6.$PID integer 1000 &>/dev/null #设置测试的超时时间 snmpset -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.4.$PID integer 10 &>/dev/null #设置测试的发包数 snmpset -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.5.$PID integer 100 &>/dev/null #设置测试数据包的大小 snmpset -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.16.$PID i 1 &>/dev/null #设置行状态为1(开始测试状态) sleep 11 #设置预留测试组操作时间11s SentPackets=$(snmpwalk -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.9.$PID|awk -F ' ' '{print $NF}') #获取实际测试发包数 ReceivedPackets=$(snmpwalk -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.10.$PID|awk -F ' ' '{print $NF}') #获取实际测试回包数 Delay=$(snmpwalk -v 2c -c $Comm $SIP .1.3.6.1.4.1.9.9.16.1.1.1.12.$PID |awk -F ' ' '{print $NF}') #获取实际测试平均延时
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#####使用ping-mib进程号范围大于300
[$PID-lt300]&&exit
#####判断Snmp-community是否正确及源IP是否可达
snmpset-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.16.$PID integer6&>/dev/null
[$?-eq1]&&echo"0"&&exit
#####调用Ping-mib进行一组Ping测试
snmpset-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.16.$PID integer6&>/dev/null  
#清除之前创建行记录
snmpset-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.16.$PID integer5&>/dev/null
#创建行并将状态设置为5(初始状态)
snmpset-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.2.$PID integer1&>/dev/null  
#设置测试的协议为1ip协议)
snmpset-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.3.$PIDd$Test_IP&>/dev/null  
#设置测试的目标ip
snmpset-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.6.$PID integer1000&>/dev/null
#设置测试的超时时间
snmpset-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.4.$PID integer10&>/dev/null  
#设置测试的发包数
snmpset-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.5.$PID integer100&>/dev/null
#设置测试数据包的大小
snmpset-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.16.$PIDi1&>/dev/null        
#设置行状态为1(开始测试状态)
sleep11
#设置预留测试组操作时间11s
SentPackets=$(snmpwalk-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.9.$PID|awk-F' ''{print $NF}')     #获取实际测试发包数
ReceivedPackets=$(snmpwalk-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.10.$PID|awk-F' ''{print $NF}')
#获取实际测试回包数
Delay=$(snmpwalk-v2c-c$Comm$SIP.1.3.6.1.4.1.9.9.16.1.1.1.12.$PID|awk-F' ''{print $NF}')         #获取实际测试平均延时

报警邮件:
network-link-3.png
network-link-4.png

3.小结

目前世纪互联已经将高效、敏捷的网络监控及网络自愈能力打造为世纪互联网络产品线的核心能力之一。当前已开发完成的网络自动化系统有:配置自动备份、RPing监控系统、SNMPTRAP自动化报警工具、网络故障流量自动切换系统、网络设备自动巡检系统、DDOS自动防护系统、SMK公网品质监控系统等。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK