一种网络中物理环路故障诊断方法
技术领域
本发明属于网络技术领域,尤其涉及到一种网络中物理环路故障诊断方法。
背景技术
由于当今网络技术高速发展,人们对网络的依赖程度越来越高,因此网络故障对人们的生活和工作就带来了极大的影响。网络高速发展,导致网络中出现的问题多种多样,故障排查及定位给络运维人员带来了很大的困扰,光靠人力来排查这些问题,会花费这些工作者极大的时间和精力。
物理环路是一种常见的网络问题,是由于施工的疏忽,导致网络设备配置错误或者连线错误,产生了链路冗余。
物理环路形成的原因有多种,如在不同交换机间互连形成物理环路或在制作网线时由于接线短路形成物理环路,还可能是因为在做负载均衡时,由于配置了一端的交换机,另一端的交换机或服务器没有配置,形成物理环路,或者在同一台交换机上,直接将网线连接到同一个VLAN的两个端口,形成物理环路。
目前,物理环路故障难以定位及排查,给网络维护人员带来很大的困扰。
发明内容
本发明的目的是能快速的检测出网络中发生物理环路故障,并给出诊断结果,明确显示发生故障的物理设备。
为解决上述问题,本发明提供了一种网络中物理环路故障诊断方法,包括如下步骤:
步骤一:预先创建物理环路检查表、信息数组。
所述物理环路检查表用于存储被捕获数据包的关键词及对应条目信息、根据关键词进行数据包查询,所述条目信息包括第一次捕获时间、捕获次数。
所述信息数组用于按照时间先后顺序存储与物理环路检查表中各个关键词一一对应的关键词,用于对物理环路检查表中的信息顺序进行管理。
步骤二:利用网络抓包软件进行网络抓包。
步骤三:根据物理环路检查表定义的关键词获取被捕获数据包的对应信息,并在物理环路检查表中进行查找匹配,如果没有匹配成功,则进行步骤四~步骤五,否则跳转到步骤六。
步骤四:判断物理环路检查表的存储条目是否达到存储上限,如未达到,则直接执行步骤五,否则根据信息数组中排序最靠前的关键词查找到物理环路检查表中对应的关键词及条目,并移除,且信息数组也删除掉对应关键词,然后再执行步骤五;
步骤五:被抓取数据包的关键词对应内容加入到物理环路检查表及信息数组,条目信息对应内容也存储到物理环路检查表,条目信息包括捕获次数及第一次捕获时间,所述捕获次数的值能够在递增,取值为该数据包被捕获次数。
步骤六:根据被捕获数据包捕获次数、捕获时间与第一次捕获时间的差值进行物理环路故障判断。
步骤七:重复进行步骤二-步骤六,直到完成预定的抓包任务。
进一步的,步骤六的具体步骤为:
步骤6.1:用当前数据包的捕获时间减去第一次捕获时间,如果差值符合预定的时间阈值,则进行步骤6.2。
步骤6.2:将捕获次数与预先定义的捕获次数阈值相比较,如果大于或者等于捕获次数阈值,则进行步骤6.3,否则不进行。
步骤6.3:记录到达捕获次数阈值时被捕获数据包到达的物理设备,及该数据包相关信息。
进一步的,步骤六还包括步骤6.4:将被捕获数据包对应的物理环路故障信息予以显示。
进一步的,步骤6.4中,物理环路故障信息包括被捕获数据包到达的物理设备的名称、数据包的源IP地址、源物理地址、目标IP地址、目标物理地址。
进一步的,关键词包括数据包的源物理地址、目的物理地址、源IPv4地址、目的IPv4地址,IPID、上层协议、生存时间。
进一步的,步骤6.1中所述时间阈值为1ms。
进一步的,步骤6.2中所述捕获次数阈值为10次。
本发明的有益效果为:
本发明提供了一种可快速察觉物理环路故障的方法,并且能迅速定位涉及的物理设备,所有步骤可自动完成,且可实现检测结果的呈现,无需运维人员进行人工检查,效率极高、定位准确、节约人力物理,具有良好的应用前景。
附图说明
图1是本发明所述方法的时序图。
具体实施方式
如图1所示为本发明的流程图。需要说明的是,图1中的querykey、ipPhysItemMap、iPPhysItemRecordInfo、ipPhysItemManager分别为后述的查询关键词、物理环路检查表、条目信息、信息数组。
本发明所述网络中物理环路故障诊断方法包括如下步骤:
步骤一:预先创建物理环路检查表(图1中)、信息数组。
下面分别物理环路检查表及信息数组进行介绍。
1.物理环路检查表。
所述物理环路检查表用于存储被捕获网络数据包的关键词及对应条目信息、根据关键词进行数据包查询,所述条目信息包括第一次捕获时间、捕获次数。
该表的关键词包括以下信息:
源物理地址:srcMac;
目的物理地址:dstMac;
源IPv4地址:srcIP;
目的IP地址:dstIP;
IP标志:ipID;
上层协议:ipProtocol;
生存时间:ttl;
前两点信息来自于数据包的物理头部、后五点信息来自于数据包的IPv4头部。
对应的条目信息包括:
捕获次数:captureCount;
第一次捕获时间:firstCaptureTime。
需要说明的是捕获次数是一个变量,相同数据包每被捕获一次,捕获次数就自动加1。
物理环路检查表有数据容纳上限,本实施例设置上限为10万条,具体数值可以根据使用者检测设备硬件条件来增减;
示例:以std的hash_map来举例为:
stdext::hash_map<KEY,iPPhysItemRecordInfo>
ipPhysItemMap
2.信息数组
所述信息数组用于按照时间先后顺序存储与物理环路检查表中各个关键词一一对应的关键词,用于对物理环路检查表中的信息顺序进行管理。
信息数组的条目数量应与物理环路检查表条目大小一致,当物理环路检查表中存入新的关键词及条目信息时,信息数组应该也增加相应的关键词,删除亦然。
创建信息数组的原因是因为物理环路检查表是个无序的表,信息数组中的关键词是按照时间顺序排列的,当需要对物理环路检查表中的存储项进行移除的时候,就从信息数组中取出时间排序第一的关键词,并在物理环路检查表中查找到对应的关键词,将对应内容进行移除。
当然,物理环路检查表也可以为有序的表,但是性能不如无序表。
步骤二:利用网络抓包软件进行网络抓包。
网络抓包软件采用的是现有的、成熟的网络抓包工具,本发明并不限定使用某种或者某个公司的网络抓包工具,只要能实现抓包即可。
步骤三:根据物理环路检查表定义的关键词获取被捕获数据包的对应信息,并在物理环路检查表中进行查找匹配,如果没有匹配成功,则进行步骤四,否则直接跳转到步骤六。
被捕获数据包的对应信息构成了查询关键词。
步骤四:判断物理环路检查表的存储条目是否达到存储上限,如未达到,则直接执行步骤五,否则根据信息数组中排序最靠前的关键词查找到物理环路检查表中对应的关键词及条目,并移除,且信息数组也删除掉对应关键词,然后再执行步骤五;
步骤五:被抓取数据包的关键词对应内容加入到物理环路检查表及信息数组,条目信息对应内容也存储到物理环路检查表。如前所述,条目信息包括捕获次数及第一次捕获时间,所述捕获次数的值能够在递增,取值为该数据包被捕获次数。
在此需要说明的是,被捕获数据包相关信息第一次被存储到物理环路检查表及信息数组时就被记录了第一次捕获时间,捕获次数的值初始化为1,以后再被捕获时,第一次捕获时间不变,捕获次数的值自增。
步骤六:根据被捕获数据包捕获次数、捕获时间与第一次捕获时间的差值进行物理环路故障判断。
具体步骤为:
步骤6.1:用当前数据包的捕获时间减去第一次捕获时间,如果差值符合预定的时间阈值,则进行步骤6.2。
时间阈值可以自定,本实施例为1ms。
步骤6.2:将捕获次数与预先定义的捕获次数阈值相比较,如果大于或者等于捕获次数阈值,则进行步骤6.3,否则不进行。
捕获次数阈值可以自定,本实施例为10次。
步骤6.3:记录到达捕获次数阈值时被捕获数据包到达的物理设备,及该数据包相关信息。
上述的相关信息一般就是被捕获数据包到达的物理设备的名称、数据包的源IP地址、源物理地址、目标IP地址、目标物理地址、数据包数(被诊断为物理环路故障时指该数据包总抓取次数)、采样时间(距离第一次被抓取时的时间间隔)。
优选的,还包括步骤6.4:将被捕获数据包对应的物理环路故障信息予以显示。
物理环路故障信息包括被捕获数据包到达的物理设备的名称、数据包的源IP地址、源物理地址、目标IP地址、目标物理地址、故障严重程度(可以用不同颜色表示不同严重程度)、故障类型、故障层别(如,数据链路层)、事件描述(如,物理环路)。
步骤七:重复进行步骤二-步骤六,直到完成预定的抓包任务。