监测网络丢包率的方法及系统的制作方法

文档序号:7720133阅读:213来源:国知局
专利名称:监测网络丢包率的方法及系统的制作方法
技术领域
本发明涉及网络技术领域,特别涉及一种监测网络丢包率的方法及系统。
背景技术
在Internet中,IP包本身并不具有任何安全特性,很容易被仿造、修改,重播和拦 截查看包内容。而IPSec(IP安全协议)提供了一种标准的、健壮的以及包容广泛的机制来 为IP及上层协议提供安全保证。IPSec可以保护通信的源IP地址和目的IP地址,提供数 据完整性验证,保证数据的机密性,还提供抗重播功能。 IPSec VPN是采用IPSec安全协议建立的VPN (Virtual PrivateNetwork,虚拟专 用网络)隧道,可以在公网上建立安全的虚拟通道以便远程访问。而尽管IPSec VPN可以 保障主机之间、网络安全网关之间或主机与安全网关之间的数据包的安全,并提供端到端 的认证,但是IPSec VPN却不能避免由于所跨的网络本身可靠性低,网络性能差或者人为原 因导致VPN传输受阻等原因造成的网络丢包、安全性下降等问题。因此,在IPSec VPN网络 中,我们仍然需要实时地监测网络性能,了解网络运行状况,根据网络性能对网络进行管理 或者与相关部门协商解决网络中存在的问题。 丢包率是体现网络性能的一个重要指标,能够反映网络对业务的服务质量,所以 有必要对丢包率进行监测。在IPSec VPN网络中监测丢包率需要知道网络源端发送的报文 数以及网络宿端收到的报文数。有的方案提出源端向宿端发送带有统计的报文数量的帧 或者标有报文序号的帧,但是这些方法或者改变帧结构或者增加帧中填充内容,其实现都 有一定的特定性,无法应用于所有的IPSec VPN网络中。同时,源端和宿端设备都要增加 相应的解析功能,也导致成本的增加。也有方法提出使用网管系统监测源端发送报文数以 及目的端接收报文数,而网管对数据的统计不具有实时上报的特性,所以使丢包率的监测 不具有实时性。还有的方法提出在网络内部设置监测器来监测网络性能,这种方法的前提 是对网络的拓扑结构比较了解,且对网络具有控制权,可以在其内部放置监测仪器,而对于 IPSec VPN的使用者来说,通常所使用的网络不归自己所有,也就无法获知网络内部情况。
与上述现有技术相关的专利技术有 技术方案1 :申请号为200510058846. 1的中国专利申请公开了一种在多协议标签 网络中监测丢包率的方法。其中,所述方法包括以下内容在MPLS(multi protocol label switch,多协议标签交换)连接的源节点定时发送给宿节点的连通性校验帧(CV帧)或快 速故障检测帧(FFD帧)中,携带该源节点已发送的报文数;在所述MPLS连接的宿节点捕 获并解析所述CV帧或FFD帧,记录源节点已发送的报文数和本节点当前时刻已接收的报文 数,并根据连续两个时刻已发送的报文数和接收的报文数计算出丢包率。
技术方案2 :申请号为200810210890. 3的中国专利申请公开了一种基于链路层发 现协议进行链路质量检测的方法及系统,网络设备以单位时间Tl为周期,采集各LLDP信宿 端口在单位时间Tl内收到的链路层发现协议LLDP数据包数Ml,并在管理信息库MIB保存 当前采集的各LLDP信宿端口的LLDP数据包数Ml ;网络管理系统对每一待检测链路进行质
5量检测时,从该链路目的端口所在网络设备的MIB获取当前采集的该目的端口在单位时间 Tl内收到的LLDP数据包数M1的信息,并得到该链路的源端口在单位时间T1内发送的LLDP 数据包数M2,计算出该链路当前的丢包率H二 (1-M1/M2)X100%。该发明无需消耗额外资 源,且易于实现。 技术方案3 :申请号为200810115485. 3的中国专利申请公开了一种基于内部监测 器的链路丢包率的推测方法,该方法在初始逻辑拓扑树内部放置监测器,并收集初始逻辑 树的所有观测数据,然后建立每棵子树对应的叶子节点的丢包序列,从而推测出它内部每 条链路的丢包率。本发明具有低复杂度、估计出的丢包率更接近于真实丢包率的优点。
上述技术方案1的缺陷为该方案是通过主动发送探测帧的方式将源节点在两个 时刻发送的报文数分别传送给宿节点。对于主动探测本身来说,当网络中流量很大时,会 增加网络负荷。同时,由于帧中需要携带报文数等信息,所以需要改变原来帧的信息,对于 该专利可以将改动信息放在MPLS的预留标签中,但是对于其他网络,则会需要增加帧的字 节,改变帧结构或者使用新的帧来专门传送报文数,这样会使数据包的信源端和信宿端都 相应的增加帧的解析功能,而如果在很大范围内增加这种功能将造成成本的提高。除此以 外,该方案中传送的帧也有可能丢失,而这种丢失的帧没有被计算在发送的报文数之内,这 也导致其丢包率计算不够准确,不能真实反映网络的状况。 上述技术方案2的缺陷为该方案采用了网管设备对源端发送数据包数和宿端接 收数据包数进行了统计,由于网管本身可以实现这种统计功能,所以无需增加新的设备和 资源,但是网管统计的特征是周期比较长,需要长时间的统计计算然后上报,这样无法做到 实时监测网络中的丢包率,实时性比较差。 上述技术方案3的缺陷为该方案主要用于推测网络内部各节点的丢包率,事先 知道网络的树形拓扑结构,然后在网络内部安置监测器,这种丢包率算法要求在网络内部 已知的情况下进行,而对于内部拓扑未知的且由于人为因素无法在网络内部设置检测器的 网络则无法使用。 在其它现有方案中,一般是针对不同网络使用不同的丢包率计算方法,目前还没 有一种针对IPSec VPN网络的端到端丢包率方法。而且现有方案多是从网络两端分别统计 发送数据包数和接收的数据包数,而在一些网络中,普遍存在多个终端设备与一个集中式 设备控制器通信,如果在多个终端都放置统计工具明显是不合理的,会增加成本。如果只在 集中的设备控制器中进行统计就可以得到网络中每个终端到控制器的链路丢包率,将会节 省很多的成本。

发明内容
本发明针对现有技术的不足,提出了一种成本低、效率高的网络丢包率监测方法, 尤其适用于IPSec VPN网络中。 为了达到上述目的,本发明提供了一种监测网络丢包率的方法,所述方法包括以 下步骤 Sl,在信宿端捕获数据包;
S2,存储所述数据包的头部信息; S3,利用所述头部信息将每个数据包连续地存储在协议信息表中,其中,来自不同信源端的数据包存储在不同的协议信息表中,在协议信息表中按照读到的数据包的标识位 identification域值从小到大顺序存储; S4,在信宿端根据所述协议信息表中的信息计算信源端发送的完整数据报文个数 以及信宿端接收到的完整数据报文个数; S5,根据所述信源端发送的完整数据报文个数以及信宿端接收到的完整数据报文 个数计算得到来自该信源端的数据报文的丢包率。 所述信宿端和信源端为处于IP安全协议IPSec网络中的通信节点。 所述步骤S2具体为对所述数据包从头开始读取,首先检查该数据包是否为IP数
据包,若不是,则读取下一个数据包;否则,判断该数据包的内部协议是否为封装安全负载
ESP协议,若不是则读取下一个数据包,否则存储该数据包的IP头部信息及ESP头部信息。 所述步骤S4具体为 S41,根据所述协议信息表中的信息判断该数据包使用的安全联盟SA是否经过重 新协商; S42,保存SA重新协商次数以及每次重新协商后使用的最大SA序列号MaxSA,根据 每次重新协商后使用的最大SA序列号确定该次重新协商后信源端发送的完整数据报文个 数; S43,确定数据报文是否完整,计算信宿端接收到的完整数据报文个数B ; S44,将每次重新协商后信源端发送的数据报文个数求和,得到信源端发送的数据
报文总数 ZMu&4 A =" ; 其中,判断SA是否经过重新协商以及获得每次SA重新协商后使用的最大SA序列 号的方法为初始化SA协商次数SAContNum = 0 ;读取每个数据包的SPI值,当SPI值发生 改变时,代表SA重新协商;每次SA重新协商,SA协商次数加1 ;在每次SA重新协商后,初 始化本次重新协商后SA序列号最大值MaxSA = 0 ;每读取一个数据包,比较数据包的SA序 列号与MaxSA的大小,若前者大于后者,则将当前的SA序列号赋值给MaxSA,依次操作,从而 得到本次SA协商后最大的SA序列号,也即本次重新协商后信源端发送的完整数据报文个 数; 确定数据报文是否完整,并计算信宿端收到的完整数据报文个数B的方法为
①设信宿端收到的完整数据报文个数初值B = 0,标识位identification初值Id
=0 ; ②检查协议信息表中所有Identification域值为Id且未被处理过的数据包标志 位Flag的域值; ③如果不存在标志位Flag域值为0的数据包,则说明标识位Identification域 值为Id的数据报文不完整,没有最后一个分段,则将标识位Identification域值为Id的 所有数据包均标识为已处理,并读取下一个协议信息表信息,将标识位Identification的 域值赋值给Id,重复②; ④否则,设协议信息表当前数据包的偏移量初值OffsetValue = 0,检查所有 Identification域值为Id的数据包的偏移量Offset的域值; ⑤如果不存在Offset域值等于0ffsetValue的数据包,则说明标识位Identification域值为Id的数据报文不完整,则将标识位Identification域值为Id的所 有数据包均标识为已处理,并读取下一个协议信息表信息,将标识位Identification的域 值赋值给Id,重复②; ⑥否则,检查该数据包的标志位Flag域值是否为0,如果为0,说明标识位 Identification域值为Id的数据报文已完整收到,将收到的完整数据报文个数B增加1 ; 将该数据包标识为已处理,并读取下一个协议信息表信息,将标识位Identification的域 值赋值给Id,重复②; ⑦如果该数据包的标志位Flag域值不为O,将该数据包标识为已处理,同时进 行如下赋值0ffsetValue = OffsetValue+TotalLen-HeadLen,其中TotalLen为数据 包总长度,HeadLen为数据包的头长度,然后继续检查是否有数据包的Offset域值等于 0ffsetValue,重复⑤; 将所有的协议信息表都处理完成后,所得到的B值即为信宿端收到的完整数据报 文个数。 所述步骤S5具体为 根据所述步骤S43中信宿端接收到的完整数据报文个数B、所述步骤S44中信 源端发送的完整数据报文总数A;从而计算出网络中来自该信源端的数据报文的丢包率
P = (l-^)xl00%。
本发明还提供了一种监测网络丢包率的系统,所述系统包括
数据包获取模块,用于在信宿端捕获数据包; 数据包存储模块,用于存储所述数据包的头部信息;利用所述头部信息将每个数 据包连续地存储在协议信息表中,其中,来自不同信源端的数据包存储在不同的协议信息 表中,在协议信息表中按照数据包的标识位identification的域值从小到大顺序存储;
数据包分析模块,用于根据所述协议信息表中的信息计算信源端发送的完整数据 报文个数以及信宿端接收到的完整数据报文个数; 丢包率计算模块,用于根据所述信源端发送的完整数据报文个数以及信宿端接收
到的完整数据报文个数计算得到所述网络中来自该信源端的数据报文的丢包率。 所述信宿端和信源端为处于IP安全协议IPSec网络中的通信节点。 所述数据包分析模块包括信源端发送数据报文计算模块,其用于根据所述协议
信息表中的信息判断数据包使用的安全联盟SA是否经过重新协商;然后保存SA重新协商
次数以及每次重新协商后使用的最大SA序列号MaxSA,根据每次重新协商后使用的最大SA
序列号确定该次重新协商后信源端发送的完整数据报文个数; 判断SA是否经过重新协商并计算每次重新协商后使用的最大SA序列号时,首先 初始化SA协商次数SAContNum = 0 ;读取每个数据包的SPI值,当SPI值发生改变时,代表 SA重新协商;每次SA重新协商,SA协商次数加1 ;在每次SA重新协商后,初始化本次重新 协商后SA序列号最大值MaxSA = 0 ;每读取一个数据包,比较数据包的SA序列号与MaxSA 的大小,若前者大于后者,则将当前的SA序列号赋值给MaxSA,依次操作,从而得到本次SA 协商后最大的SA序列号,也即本次重新协商后信源端发送的完整数据报文个数。
所述数据包分析模块还包括信宿端接收报文计算模块,其用于确定数据报文是否完整,并计算信宿端收到的完整数据报文个数B ; 确定数据报文是否完整并计算信宿端收到的完整数据报文数时, ①设信宿端收到的完整数据报文个数初值B = 0,标识位identification初值Id
=0 ; ②检查协议信息表中所有Identification域值为Id且未被处理过的数据包标志 位Flag的域值; ③如果不存在标志位Flag域值为0的数据包,则说明标识位Identification域 值为Id的数据报文不完整,没有最后一个分段,则将标识位Identification域值为Id的 所有数据包均标识为已处理,并读取下一个协议信息表信息,将标识位Identification的 域值赋值给Id,重复②; ④否则,设协议信息表当前数据包的偏移量初值OffsetValue = 0,检查所有 Identification域值为Id的数据包的偏移量Offset的域值; ⑤如果不存在Offset域值等于0ffsetValue的数据包,则说明标识位 Identification域值为Id的数据报文不完整,则将标识位Identification域值为Id的所 有数据包均标识为已处理,并读取下一个协议信息表信息,将标识位Identification的域 值赋值给Id,重复②; ⑥否则,检查该数据包的标志位Flag域值是否为0,如果为0,说明标识位 Identification域值为Id的数据报文已完整收到,将收到的完整数据报文个数B增加1 ; 将该数据包标识为已处理,并读取下一个协议信息表信息,将标识位Identification的域 值赋值给Id,重复②; ⑦如果该数据包的标志位Flag域值不为O,将该数据包标识为已处理,同时进 行如下赋值0ffsetValue = OffsetValue+TotalLen-HeadLen,其中TotalLen为数据 包总长度,HeadLen为数据包的头长度,然后继续检查是否有数据包的Offset域值等于 0ffsetValue,重复⑤; 将所有的协议信息表都处理完成后,所得到的B值即为信宿端收到的完整数据报 文个数。 上述技术方案具有如下优点本发明采用被动监测丢包率的方法,不会给网络带 来额外的符合,也不需要更改数据帧的结构或者内容;实时监测丢包率,可以及时监测网络 运行性能,监控网络质量;无需知道IPSec VPN网络内部拓扑结构,也无需在网络内部安置 检测器即可较为准确的估算出网络丢包率;只在网络一端即可计算丢包率,无需将计算设 备增设到网络的每一台设备中,可以节省成本。


图1为本发明实施例的监测网络丢包率的方法流程图; 图2为本发明实施例的方法中过滤数据包流程图; 图3为本发明实施例的方法中存储数据包信息流程图; 图4为本发明实施例的方法中计算信源端发送的完整数据报文个数流程图; 图5为本发明实施例的方法中计算信宿端收到的完整数据报文个数流程图; 图6为对本发明实施例的方法进行仿真时的网络拓扑 图7为对图6所示的网络进行仿真的结果示意图。
具体实施例方式
下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施 例用于说明本发明,但不用来限制本发明的范围。 依据本发明实施例的监测网络丢包率的方法流程如图1所示, 步骤101,使用网络抓包工具winpc即抓取IPSec VPN网络信宿端网卡上的数据包
并存储抓包时间可以自由确定,即可以是一直持续的,也可以选择某一个时间段;每次抓
包的时间长度也是可以自由确定的,即可以每次持续时间长度不同。所有数据包的目的IP
地址均为宿端的IP地址。 步骤102,读取cap文件,过滤得到IP/ESP数据包对存储在cap文件中的数据包 从头开始读取,首先检查收到的数据包是否为IP数据包,不是IP包则越过该数据包读下一 个数据包。如果是IP数据包,分析其内部协议是否为ESP协议,不是ESP数据包则越过读取 下一个数据包。如果是ESP数据包,则对数据包的IP头和ESP头信息进行存储之后分析。 其流程参见如图2所示的步骤201 205。 步骤103,存储数据包信息的流程参见图2 3所示的步骤301 305。由于不同 的信源端可能同时向同一个信宿端发送数据包,所以在存储IP/ESP信息时,应先检查数据 包的源IP地址,不同信源端的数据包存储到不同的协议信息表中。 同时,由于底层网络传输数据都存在最大传输单元MTU的限制,一个完整的数据 报文在IP层可能会根据MTU被分段,分成几个数据包,同一报文被分段后,各分段的IP头 中Identification域值相同。 在后面计算完整报文数中,我们需要知道同一个Identification共有几个分段,
而由于IP协议的无连接特性,导致数据包可能不是按照发送顺序到达目的地址的,同时源
端每发送一个报文,Identification的值就会增1,因此为了方便检查数据报文的完整性,
而不是每查一个分段都要在所有已存信息中检索一遍,我们在存储数据包信息时将数据包
按照Identification域值从小到大顺序存储,Identification域值相同的数据包会被连
续地存储在协议信息表中。 信息协议表包括以下内容 例如,若为IPv4网络,则IPv4协议中的内容为版本Version,头长度HeadLen,服 务类型T0S,总长度TotalLen,标识位Identification,生存时间TTL,标志位Flag,偏移量 Offset,协议Protocol,校验和CheckSum,源IP地址SrcIP,目的IP地址DestIP。还包括 ESP协议相关信息安全参数索引SPI,安全联盟序列号SASeq。为了便于处理信息,还包括 数据包编号PacketN咖,安全联盟协商次数SAContN咖,数据包是否被处理isDesposed。
步骤104,计算收到的完整报文数和发送的完整报文数。在信宿端我们接收到的都 是IP数据包,每个数据包可能是完整的报文,也可能是一个报文的分段,因此我们要在宿 端统计接收到的完整的报文数,就需要知道每个数据包是否是一个分段,如果是分段则需 要确定该报文的所有分段是否都被接收到。通过步骤103,已经将同一个报文的所有分段都 连续地存储在协议信息表中。在本步骤中我们将从协议信息表中读出每个数据包的信息, 并完成以下功能
(1)判断该数据包使用的SA是否经过重新协商; (2)保存SA重新协商次数以及每次重新协商使用的最大SA序列号; (3)处理分段数据包,确定报文是否完整,并计算信宿端接收到的完整数据报文个
数B ; (4)将每次重新协商后信源端发送的完整数据报文个数求和,得到信源端发送的
完整数据报文总数 Z^"x&i A ="=i ; 其中,判断SA是否经过重新协商以及获得每次SA重新协商后使用的最大SA序列 号的方法为初始化SA协商次数SAContNum = 0。读取每个数据包的SPI值,当SPI值发 生改变时,代表SA重新协商。每次SA重新协商,SA协商次数加1。在每次SA重新协商后, 初始化本次协商SA序列号最大值MaxSA = 0。每读取一个数据包,比较数据包的SA序列号 与MaxSA的大小,若前者大于后者,则将当前SA序列号赋值给MaxSA,依次操作,从而得到本 次SA协商后最大的SA序列号,也即本次重新协商后信源端发送的完整数据报文总数。由 此可见,信源端发送报文数的计算主要根据IP包中的ESP头信息计算,在IPSec隧道建立 后,通信双方会协商SA,源端每发送一个报文,SA序列号会增加1, SA超时或者传送字节数 超过阙值(由加密算法确定)时,双方会重新协商SA,此时SPI值会改变,SA的序列号会重 新开始计算,Identification相同的数据包SPI和SA也相同。其流程如图4中步骤401 407所示。 确定报文是否完整,并计算信宿端收到的完整数据报文个数B的方法为
①设信宿端收到的完整数据报文个数初值B = O,标识位初始值Id = 0。
②检查协议信息表中所有Identification域值为Id且未被处理过的数据包 (isDisposed域的值为未处理)的标志位Flag的域值。 ③如果不存在标志位Flag域值为0的数据包,则说明标识位Identification域 值为Id的数据报文不完整,没有最后一个分段,则将标识位Identification域值为Id的 所有数据包均标识为已处理(isDisposed的域值设置为已处理),并读取下一个协议信息 表信息,将标识位Identification的域值赋值给Id,重复②; ④否则,设协议信息表当前数据包的偏移量初值OffsetValue = 0,检查所有 Identification域值为Id的数据包的偏移量Offset的域值。 ⑤如果不存在Offset域值等于0ffsetValue的数据包,则说明标识位 Identification域值为Id的数据报文不完整,则将标识位Identification域值为Id的所 有数据包均标识为已处理(isDisposed的域值设置为已处理),并读取下一个协议信息表 信息,将标识位Identification的域值赋值给Id,重复②; ⑥否则,检查该数据包的标志位Flag域值是否为0,如果为0,说明标识位 Identification域值为Id的数据报文已完整收到,将收到的完整数据报文个数B增加1 ; 将该数据包标识为已处理(isDisposed的域值设置为已处理),并读取下一个协议信息表 信息,将标识位Identification的域值赋值给Id,重复②; ⑦如果该数据包的标志位Flag域值不为0,将该数据包标识为已 处理(isDisposed域值设置为已处理),同时进行如下赋值OffsetValue = OffsetValue+TotalLen-HeadLen(其中TotalLen为数据包总长度,HeadLen为数据包的头
11长度),然后继续检查是否有数据包的Offset域值等于OffsetValue,重复⑤。 将所有的协议信息表都处理完成后,所得到的B值即为信宿端收到的完整数据报
文个数。其流程如图5所示的步骤408 420。 步骤105,计算丢包率。在本步骤中,我们直接使用步骤104计算所得信宿端收到 的完整数据报文总数B和信源端发送的完整数据报文总数A,最终可以计算出IPSec VPN网
络中来自某一个源地址的数据报文的丢包率P-(l-导)x100。/。。
」 如果需要计算全网丢包率,则需要将信宿端收到的每个源地址发来的数据报文总 数求和,即E B,同时对每个源地址发送的所有数据报文求和,即E A,然后计算全网丢包率 以下举例说明本发明实施例的方法。如图6所示,为使用GNS3仿真软件对IPSec VPN网络进行丢包率监测实验的网络拓扑图,其中,RO和Rl为信源端,持续向信宿端R3发 送数据包,通过在信宿端R3部署一个抓包工具,在信宿端R3的el/O端口处抓取数据包。 在控制台每五分钟抓一次c即文件,每次实验抓取十次以上,并在R2处不定时使用filter 丢包命令。依据本发明上述实施例的方法对抓取到的包进行存储、解析和计算,最终得到 IPSec VPN网络的丢包率。 计算结果如图7所示,图中,粗实线为标准上限;一个信源端的丢包率计算一条折 线,不同信源端用不同线条区别。每个时间段计算出的丢包率值显示在该点上方。从图7 中可以很明显的看出,信源端16. 1. 1.0发送的数据包丢包率在第4个时间段内超出了标准 上限。 本发明的实施例还提供了一种监测网络丢包率的系统,该系统包括
数据包获取模块,用于在信宿端捕获数据包; 数据包存储模块,用于存储所述数据包的头部信息;利用所述头部信息将每个数 据包连续地存储在协议信息表中,其中,来自不同信源端的数据包存储在不同的协议信息 表中,在协议信息表中按照数据包的标识位(identification)的域值从小到大顺序存储;
数据包分析模块,用于根据所述协议信息表中的信息计算信源端发送的完整数据 报文个数以及信宿端接收到的完整数据报文个数; 丢包率计算模块,用于根据所述信源端发送的完整数据报文个数以及信宿端接收
到的完整数据报文个数计算得到所述网络中来自该信源端的数据报文的丢包率。 由以上实施例可以看出,本发明采用被动监测丢包率的方法,不会给网络带来额
外的符合,也不需要更改数据帧的结构或者内容;实时监测丢包率,可以及时监测网络运行
性能,监控网络质量;无需知道IPSec VPN网络内部拓扑结构,也无需在网络内部安置检测
器即可较为准确的估算出网络丢包率;只在网络一端即可计算丢包率,无需将计算设备增
设到网络的每一台设备中,可以节省成本。 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型 也应视为本发明的保护范围。
权利要求
一种监测网络丢包率的方法,其特征在于,所述方法包括以下步骤S1,在信宿端捕获数据包;S2,存储所述数据包的头部信息;S3,利用所述头部信息将每个数据包连续地存储在协议信息表中,其中,来自不同信源端的数据包存储在不同的协议信息表中,在协议信息表中按照读到的数据包的标识位identification域值从小到大顺序存储;S4,在信宿端根据所述协议信息表中的信息计算信源端发送的完整数据报文个数以及信宿端接收到的完整数据报文个数;S5,根据所述信源端发送的完整数据报文个数以及信宿端接收到的完整数据报文个数计算得到来自该信源端的数据报文的丢包率。
2. 如权利要求1所述的监测网络丢包率的方法,其特征在于,所述信宿端和信源端为 处于IP安全协议IPSec网络中的通信节点。
3. 如权利要求2所述的监测网络丢包率的方法,其特征在于,所述步骤S2具体为对 所述数据包从头开始读取,首先检查该数据包是否为IP数据包,若不是,则读取下一个数 据包;否则,判断该数据包的内部协议是否为封装安全负载ESP协议,若不是则读取下一个 数据包,否则存储该数据包的IP头部信息及ESP头部信息。
4. 如权利要求1 3之任一项所述的监测网络丢包率的方法,其特征在于,所述步骤 S4具体为S41,根据所述协议信息表中的信息判断该数据包使用的安全联盟SA是否经过重新协商;S42,保存SA重新协商次数以及每次重新协商后使用的最大SA序列号MaxSA,根据每次 重新协商后使用的最大SA序列号确定该次重新协商后信源端发送的完整数据报文个数; S43,确定数据报文是否完整,计算信宿端接收到的完整数据报文个数B ; S44,将每次重新协商后信源端发送的数据报文个数求和,得到信源端发送的数据报文总数 2]M^&i A = "=i ;其中,判断SA是否经过重新协商以及获得每次SA重新协商后使用的最大SA序列号的 方法为初始化SA协商次数SAContNum = 0 ;读取每个数据包的SPI值,当SPI值发生改变 时,代表SA重新协商;每次SA重新协商,SA协商次数加1 ;在每次SA重新协商后,初始化 本次重新协商后SA序列号最大值MaxSA = 0 ;每读取一个数据包,比较数据包的SA序列号 与MaxSA的大小,若前者大于后者,则将当前的SA序列号赋值给MaxSA,依次操作,从而得到 本次SA协商后最大的SA序列号,也即本次重新协商后信源端发送的完整数据报文个数;确定数据报文是否完整,并计算信宿端收到的完整数据报文个数B的方法为① 设信宿端收到的完整数据报文个数初值B = O,标识位初值Id = 0 ;② 检查协议信息表中所有Identification域值为Id且未被处理过的数据包的标志位 Flag的域值;③ 如果不存在标志位Flag域值为0的数据包,则说明标识位Identification域值为 Id的数据报文不完整,没有最后一个分段,则将标识位Identification域值为Id的所有数 据包均标识为已处理,并读取下一个协议信息表信息,将标识位Identification的域值赋值给Id,重复②; 否则,设协议信息表当前数据包的偏移量初值OffsetValue = 0,检查所有 Identification域值为Id的数据包的偏移量Offset的域值;⑤ 如果不存在Off set域值等于Off setValue的数据包,则说明标识位Identification 域值为Id的数据报文不完整,则将标识位Identification域值为Id的所有数据包均标识 为已处理,并读取下一个协议信息表信息,将标识位Identification的域值赋值给Id,重 复②;⑥ 否贝U,检查该数据包的标志位Flag域值是否为0,如果为0,说明标识位 Identification域值为Id的数据报文已完整收到,将收到的完整数据报文个数B增加1 ; 将该数据包标识为已处理,并读取下一个协议信息表信息,将标识位Identification的域 值赋值给Id,重复②;⑦ 如果该数据包的标志位Flag域值不为O,将该数据包标识为已处理,同时进行如下 赋值OffsetValue = OffsetValue+TotalLen-HeadLen,其中TotalLen为数据包总长度, HeadLen为数据包的头长度,然后继续检查是否有数据包的Offset域值等于OffsetValue, 重复⑤;将所有的协议信息表都处理完成后,所得到的B值即为信宿端收到的完整数据报文个数。
5. 如权利要求4所述的监测网络丢包率的方法,其特征在于,所述步骤S5具体为 根据所述步骤S43中信宿端接收到的完整数据报文个数B、所述步骤S44中信源端发送的完整数据报文总数A;从而计算出网络中来自该信源端的数据报文的丢包率P = (l_2)xlOOo/0。
6. —种监测网络丢包率的系统,其特征在于,所述系统包括 数据包获取模块,用于在信宿端捕获数据包;数据包存储模块,用于存储所述数据包的头部信息;利用所述头部信息将每个数据包 连续地存储在协议信息表中,其中,来自不同信源端的数据包存储在不同的协议信息表中, 在协议信息表中按照数据包的标识位identification的域值从小到大顺序存储;数据包分析模块,用于根据所述协议信息表中的信息计算信源端发送的完整数据报文 个数以及信宿端接收到的完整数据报文个数;丢包率计算模块,用于根据所述信源端发送的完整数据报文个数以及信宿端接收到的完整数据报文个数计算得到所述网络中来自该信源端的数据报文的丢包率。
7. 如权利要求6所述的监测网络丢包率的系统,其特征在于,所述信宿端和信源端为 处于IP安全协议IPSec网络中的通信节点。
8. 如权利要求6所述的监测网络丢包率的系统,其特征在于,所述数据包分析模块包 括信源端发送数据报文计算模块,其用于根据所述协议信息表中的信息判断数据包使用 的安全联盟SA是否经过重新协商;然后保存SA重新协商次数以及每次重新协商后使用的 最大SA序列号MaxSA,根据每次重新协商后使用的最大SA序列号确定该次重新协商后信源 端发送的完整数据报文个数;判断SA是否经过重新协商并计算每次重新协商后使用的最大SA序列号时,首先初始化SA协商次数SAContNum = 0 ;读取每个数据包的SPI值,当SPI值发生改变时,代表SA重 新协商;每次SA重新协商,SA协商次数加1 ;在每次SA重新协商后,初始化本次重新协商 后SA序列号最大值MaxSA = 0 ;每读取一个数据包,比较数据包的SA序列号与MaxSA的大 小,若前者大于后者,则将当前的SA序列号赋值给MaxSA,依次操作,从而得到本次SA协商 后最大的SA序列号,也即本次重新协商后信源端发送的完整数据报文个数。
9.如权利要求6所述的监测网络丢包率的系统,其特征在于,所述数据包分析模块还 包括信宿端接收报文计算模块,其用于确定数据报文是否完整,并计算信宿端收到的完整 数据报文个数B ;确定数据报文是否完整并计算信宿端收到的完整数据报文数时,① 设信宿端收到的完整数据报文个数初值B = O,标识位identification初值Id =0 ;② 检查协议信息表中所有Identification域值为Id且未被处理过的数据包标志位 Flag的域值;③ 如果不存在标志位Flag域值为0的数据包,则说明标识位Identification域值为 Id的数据报文不完整,没有最后一个分段,则将标识位Identification域值为Id的所有数 据包均标识为已处理,并读取下一个协议信息表信息,将标识位Identification的域值赋 值给Id,重复②; 否则,设协议信息表当前数据包的偏移量初值OffsetValue = 0,检查所有 Identification域值为Id的数据包的偏移量Offset的域值;⑤ 如果不存在Off set域值等于Off setValue的数据包,则说明标识位Identification 域值为Id的数据报文不完整,则将标识位Identification域值为Id的所有数据包均标识 为已处理,并读取下一个协议信息表信息,将标识位Identification的域值赋值给Id,重 复②;⑥ 否贝U,检查该数据包的标志位Flag域值是否为0,如果为0,说明标识位 Identification域值为Id的数据报文已完整收到,将收到的完整数据报文个数B增加1 ; 将该数据包标识为已处理,并读取下一个协议信息表信息,将标识位Identification的域 值赋值给Id,重复②;⑦ 如果该数据包的标志位Flag域值不为O,将该数据包标识为已处理,同时进行如下 赋值OffsetValue = OffsetValue+TotalLen-HeadLen,其中TotalLen为数据包总长度, HeadLen为数据包的头长度,然后继续检查是否有数据包的Offset域值等于OffsetValue, 重复⑤;将所有的协议信息表都处理完成后,所得到的B值即为信宿端收到的完整数据报文个数。
全文摘要
本发明公开了一种监测网络丢包率的方法及系统。该方法包括步骤在信宿端捕获数据包;存储所述数据包的头部信息;利用所述头部信息将每个数据包连续地存储在协议信息表中,其中,来自不同信源端的数据包存储在不同的协议信息表中,在协议信息表中按照读到的数据包的标识位的值从小到大顺序存储。在信宿端根据所述协议信息表中的信息计算信源端发送的完整数据报文个数以及信宿端接收到的完整数据报文个数;根据所述信源端发送的完整数据报文个数以及信宿端接收到的完整数据报文个数计算得到所述网络中来自该信源端的数据报文的丢包率。本发明的方法不会给网络带来额外的负荷,也不需要更改数据帧的结构或者内容,能实时监测丢包率,成本低。
文档编号H04L12/46GK101783715SQ20091023796
公开日2010年7月21日 申请日期2009年11月19日 优先权日2009年11月19日
发明者刘会永, 孟朱丽, 李文璟, 王智立, 詹志强, 陈兴渝 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1