监控是否丢包 bat 监控网络丢包_重传

监控是否丢包 bat 监控网络丢包_重传_02

全路径丢包监控


监控是否丢包 bat 监控网络丢包_时间戳_03

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

啥是全路径丢包监控?


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_05

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_06

知道啥是网络丢包么?


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

数据报文在网络传输过程中出现被丢弃的现象


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_05

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_06

聪明!网络中数据的传输是以发送和接收数据包的形式传输的,理想状态下发送数据包等于接收数据包,但由于信号衰减、网络质量等诸多因素,接收到数据往往小于发送数据包,就会发生丢包。

在单位时间内,丢掉的数据包和发送数据包的比率就是:丢包率;当丢包率较大时,将会严重影响传输质量,造成重大业务影响,所以丢包率越小越好。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_06

网络丢包故障是影响银行业务潜在重大故障之一,发现与处理不当将会造成重大生产事故,为此,我们一直在探索如何在此故障场景下解决与实现方案。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

什么原因引起丢包呢?


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_05

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_06

主机网卡故障、通道中任一网线或光线故障、路由问题,带宽拥塞、网络交换机或路由器故障等等。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

能不能形象点解释?


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_05

在一般银行网络里面,网卡或任一条网线都可能出现故障,如下图所示,从客户端到服务端,途经的可能的故障点会有几十个之多,例如:Client网卡->路由器、防火墙、负载均衡等设备->交换机->Server端防火墙->Server端交换机->Serve端网卡.

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_20


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

有什么监控手段么?或者如何快速定位问题?

G行已部署的丢包监控手段有:

1、专线丢包。使用rping(remote ping)技术监控,rping是指通过对远程设备发出以该设备为源的ping。

2、交换机之间线路丢包。使用VPC ping技术监控:通过ping不同的多个目标ip地址,使数据包遍历交换机之间多个物理链路的ping。

3、设备丢包。使用ping监控:从监控服务器ping目标设备ip,计算丢包率。

4、分段丢包监控。使用报文采集技术,通过特定算法,计算TCP协议传输过程中丢失报文的数量。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

有监控死角么?会不会存在这些手段监控不到位的情况?

好问题!!以上几种丢包监控方法在日常监控中的局部发挥重要作用,缺陷是当丢包位置未发生在上述监控部位,那么事件处理就会很被动。

我们在现有丢包监控技术基础上,经过长期研究与论证、测试,认为采用全路径丢包监控技术,将能够弥补短板,能在较短时间内定位丢包具体范围位置,使我们在丢包监控领域迈出关键的一步。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

终于到正题了。。

监控是否丢包 bat 监控网络丢包_时间戳_27

全路径丢包监控与分析是指对某个通讯对从发起端的网卡至接收端的网卡传输的所有报文在其经过的所有物理路径进行报文捕获,并通过特定方法进行计算,实时丢包故障告警,并展现具体丢包位置范围。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

采用这个手段有什么好处?


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_05

全路径丢包监控与分析,节省时间。

由于采用了全自动的手法,从发现到定位,较传统通过手工方式下载报文再对比分析所花的时间有了飞跃式的提升,通常能够从30分钟缩短至1-5分钟,这将会为我们后续事件处置节省宝贵时间。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

监控与分析原理是是啥?通俗点!


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_05

可以从下面三个问题理解:

1)什么是全路径?

2)怎么判定包丢了?

3)丢包定位算法有哪些?

4)如何判定丢包位置?

下面简单描述一下每一项。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

1)全路径是指端到端报文所经过的所有网络节点,我们在每个节点处部署流量采集设备,对该节点的报文进行全量捕获,最后通过分析引擎对所有报文进行方法运算,绘制报文途经的所有网络节点图。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

2)通过TCP重传判定数据包是否丢失?TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题,TCP设计了超时与重传机制:在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到发送数据的ACK确认报文,则对该报文进行重传,在达到一定次数还没有成功时放弃并发送一个复位信号。

丢包的判定:数据报文通过TCP协议进行传输的时候,每个报文都带有一个seq号,当自动分析引擎发现有重传的时候,将会触发另外一个运算机制,来判定报文seq是否正常,从而发现丢包。

丢包位置判定:当自动分析引擎发现丢包后,将结合全路径的计算,运算出具体丢包网络节点。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

3)丢包算法,G行研究应用了三代算法:

A、包数对比:我们对每个网络节点的报文进行数量对比,这种方法对流量分流设备与采集设备的要求很高,在分流设备与采集设备自身出现问题的时候,会导致误判。

B、分段丢失算法:我们对路径中每段的丢包数量进行计算,并对比各个节点的丢失数量后,来判定丢包位置。

C、逐包对比算法:我们对同一个TCP会话中的每个报文在每个节点进行逐个对比,对缺失报文标识丢包,从而判定丢包位置。

这三种算法,适合不同场景,通常都是组合使用来提高判定准确性。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

那我大概明白了。。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_05

小白能坚持读懂到这里已经很棒了,可直接跳到最后!下面介绍全路径丢包实现监控实现机制,专业同学可继续细读参考。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07

全路径丢包监控实现

一 技术架构

全路径丢包监控的实现需要构建网络流量分流网络、网络流量采集、自动分析引擎三方面的内容。

监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_41

图1 全路径丢包监控架构

A、网络流量分流网络:传统通过交换机镜像直接发送给网络流量采集的设备方式因无法对流量进行过滤、分类等加工,已经不满足基于报文采集分析的各类需求,因此需要构建流量分流网络,它是由具备强大负载性能与各种分流策略设备组成。

为实现全路径丢包监控,我们需要网络流量分流网络将满足需求的报文发送给网络流量采集设备,其中加工操作包括打时间戳与截包等。

B、网络流量采集设备:将网络原始报文收集后,进行粗加工,统计、汇总、分类,并处理来自自动分析引擎的指令,为实现复杂智能运算提供基础数据。

C、自动分析引擎:将网络流量采集设备提供的基础统计数据进行复杂运算,计算路径、判定丢包位置范围,自动分析引擎是整个架构中的大脑。

2 关键技术实现

A、重传的判定:不管是网络中各种设备或线路出现质量问题导致丢包还是拥塞导致丢包,都会触发TCP重传,我们需要通过特定算法来对重传报文进行界定,同时在监控系统中,将对徒增的重传现象进行告警。

重传包定义:当前包的seq号小于或等于上一个包的seq号,并且ipid大于上一个包的ipid,统计一个重传包,ipid是数据包的身份证号。

 

监控是否丢包 bat 监控网络丢包_时间戳_42

图2 TCP重传包示意图

B、丢包的判定。对重传包进行界定后,我们会排除由于接受方不及时回应导致发送端重新发送的场景(非真正丢包),只统计由于真正网络质量或拥塞导致的丢包数量。丢包需要考虑的场景有:正常丢包情况、重传包丢失情况、乱序情况、ACK包被丢失情况等,下面针对正常丢包情况进行说明:

监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_43

图3 丢包常规示意图

在采集点2,第2个包产生了跳号,进行异常记录,在采集点2,判断第三个包(seq=2 ipid=4的包)为重传包。记录1次丢包 ,所有采集点可判断重传数均为1(第4个包),采集点2可判断丢包数1。

C、逐包的对比机制。传统人工进行丢包判定的时候,一般会找到重传报文对应的被重传包后,逐个对各个采集点进行比对,寻找被重传报文,越接近发送端处如果未找到重传报文,那么就是丢包位置,自动分析引擎将这一手工机制进行了计算机自动化,即逐包对比机制。逐包对比需要考虑的几种场景:常规丢包场景、回复ACK被丢场景、分流器丢包场景等,下面图4为常规丢包场景。

监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_44

图4 逐包对比示意图

D、物理路径的计算。丢包位置判定的前提是我们通过比对各个采集点,相同报文的时间戳的先后次序,绘制物理路径。

监控是否丢包 bat 监控网络丢包_时间戳_45

图5 采集点时间戳示意图

一个通讯对从发送方到接收方,流经的网络路径到底经过哪些网络节点,通常是建立在网络人员对网络拓扑很清晰的基础上,存在两个问题,一是记忆不清搞错网络路径,影响判断,二是在不知道通讯对流经的路径时,须花额外时间解决路径的问题。以时间戳方式自动计算路径,将大幅提升效率及减少差错。 

 对每个采集点的报文打上时间戳,分为两种,一是分析设备打的时间戳,二是分流器打的时间戳,我们将采用分流器的时间戳,道理在于分流器打的时间戳最接近网络交换机真实转发时间,这里面采集网须采用NTP时间同步。

F、时间戳误差的解决:在局域网里面,交换机与交换机之间的转发时延通常是20微秒左右,而NTP协议标准的误差通常是毫秒级,无法满足要求,为此,我们通过在同数据中心采用唯一分流设备集中打时间戳的方式来解决同数据中心的时间误差问题,通过更加精确的NTP服务,解决跨数据中心时间误差的问题。

G、容量与投入问题的解决:我们需要对网络里面的报文进行全量采集才能实现覆盖面较广的丢包监控功能,因此,对采集设备的性能与数量提出较高要求,按照传统方法,多节点采集需要配置数十台流量采集交换机,投资较大,通过分流网设备只采集报文报头,只需要配置数台设备,较好的节省费用。

三 实现功能示意

A、全网丢包集中展示。动态实时监控全网各个网络节点丢包与重传情况,统计重传、丢包通讯对个数,计算受影响业务系统数量,为业务影响判断提供数据。

监控是否丢包 bat 监控网络丢包_重传_46

图6 丢包集中展示示意图

B、通讯对物理路径画制。在出现大面积或局部丢包或重传告警时,可以选择任意或丢包数量较多的通讯对来进行丢包位置判定,首先通过该通讯对进行物理路径画制。

监控是否丢包 bat 监控网络丢包_时间戳_47

图7 物理路径示意图

C、丢包位置的判定。选择通讯对里面某个具体的TCP会话,进行逐包对比,明确丢包位置。

监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_48

图8 对比丢包判定示意图


监控是否丢包 bat 监控网络丢包_监控是否丢包 bat_04

懂了....

监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_50

总结一下,在现有丢包监控技术基础上,全路径丢包监控功能的部署,将实现网络传输质量端到端的监控与定位,提高丢包故障的整体解决速度

后续我们在此基础上,一是要不断提高基础算法的稳定性,使之针对不同场景能实现精准定位,二是要结合大数据思维不断挖掘数据价值,不断推动监控运维水平的智能化与自动化,夯实G行信息系统运维工作基础。


监控是否丢包 bat 监控网络丢包_sqlloader 直接路径和常规路径_07