一种基于GigEVision的网口过滤驱动方法与流程

文档序号:17536053发布日期:2019-04-29 14:00阅读:753来源:国知局
一种基于GigE Vision的网口过滤驱动方法与流程

本发明涉及网络传输技术领域,尤其涉及一种基于gigevision的网口过滤驱动方法。



背景技术:

目前工业相机的通信方式主要包括1394接口、usb接口、ameralink接口以及千兆网接口。1394接口、usb接口、ameralink接口的传输距离受限,而千兆网接口通信,以其传输距离远,传输速度较高,组网设备数量多以及无需数据采集卡等特点,得到了广泛的应用。主流工业相机厂家,国外如德国balser、日本jai、英国e2v,加拿大dalsa,韩国vieworks,国内如大恒、嘉恒中自、微视图像等,均有多款千兆网通信的工业相机产品。

工业相机能连接到千兆网络系统中,必须运行网络通信协议,传统在传输层的协议有tcp协议和udp协议,但tcp协议在网络传输过程中具有占用的cpu资源较大、传输速度慢和易被攻击的缺点,同时udp协议在网络传输过程中存在不能为ip提供可靠性、流控或差错恢复功能的缺陷。由于gigevision协议具有传输距离远,传输速度较高的特点,因而基于已有千兆以太网通信协议开发的gigevision协议得到应用。虽然gigevision协议可以提供可靠性、流控或差错恢复功能,但windows自带的socket通讯会轮询由gigevision传输的当前网络帧,因此在数据传输增加的时候会显著提高cpu占用率,使得gigevision占有cpu的资源相对较高,而且在网络状况波动或者网络拥塞的情况下对于有可能会出现数据帧丢失、乱序的情况,没有相应的重传机制对数据帧进行处理,使得所接收的数据帧出现丢帧、乱帧现象。



技术实现要素:

基于背景技术存在的技术问题,本发明提出了一种基于gigevision的网口过滤驱动方法,该方法的cpu负载较低,同时有效解决数据帧丢帧、乱帧的现象。

本发明提出的一种基于gigevision的网口过滤驱动方法,包括如下步骤:

安装网络过滤驱动,并通过网络过滤驱动在windows内核中注册数据帧的过滤准则;

网络过滤驱动判断每一个到达网口的数据帧是否符合过滤准则;

若是,则将数据帧直接存入预先注册的图像缓冲区;

若否,则将数据帧转发给上层驱动。

进一步地,所述过滤准则包括数据帧的源地址、数据帧的目的地址、数据帧的传输类型和数据帧的端口型号。

进一步地,将所述数据帧直接存入预先注册的图像缓冲区之前,对每一个到达网口的数据帧进行顺序检测,其顺序检测包括如下步骤:

若所述数据帧按序到达网口,则将到达网口的数据帧直接存入所述图像缓冲区;

若所述数据帧未按序到达网口,则对到达网口的数据帧进行修正处理。

进一步地,所述对到达网口的数据帧进行修正处理,包括如下步骤:

设置网络过滤驱动的重传窗口长度为l,初始时所述重传窗口内所有数据帧均标记为空状态;

设置重传窗口的范围为[a1-l,a1],所述a1为重传窗口的最大检测阈值;

判断到达网口的数据帧的索引号x是否处于重传窗口的的范围内;

若是,则将该数据帧标记为满状态,并将该数据帧存入所述图像缓冲区;

若否,则对数据帧进行再次修正处理。

进一步地,所述对数据帧进行再次修正处理,包括如下步骤:

若所述到达网口的数据帧的索引号x小于a1-l,则丢弃该数据帧;

若所述到达网口的数据帧的索引号x大于a1,则更新重传窗口的范围,并将该数据帧标记为满状态;

检测更新后的重传窗口是否丢帧,以实现对数据帧进行再次修正处理。

进一步地,所述检测更新后的重传窗口是否丢帧,包括如下步骤:

所述更新重传窗口的范围为[b1-l,b1],所述b1为更新后重传窗口的最大检测阈值;

设置丢帧的检测范围为[a1-l,b1-l];

检测所述[a1-l,b1-l]内是否存在标记为空状态的数据帧;

若有,则数据帧丢帧,对该数据帧进行重传处理;

若无,则数据帧未丢帧,并将该数据帧存入所述图像缓冲区。

进一步地,所述对该数据帧进行重传处理时,包括如下步骤:

通过网络过滤驱动中设置的定时器设置数据帧的重传定时时间;

判断在重传定时时间内,重传的数据帧是否到达网口;

若是,则判断数据帧是否符合过滤准则;

若否,则再次对该数据帧进行重传处理,直到重传的数据帧到达网口。

进一步地,所述对该数据帧进行重传处理时,添加pakcet_resend_max_count参数,重传的数据帧不大于pakcet_resend_max_count参数。

本发明提供的一种基于gigevision的网口过滤驱动方法的优点在于:本发明结构中提供的一种基于gigevision的网口过滤驱动方法,该方法对于丢失的网络数据帧可以快速发起重传请求,响应度快,重传数据帧和请求数据帧时间间隔较短。同时在网络过滤驱动中设置定时器和添加pakcet_resend_max_count参数,使得网络过滤驱动的运行效率高,即使在网络有效负载接近90%的情况下仍然能够保证数据帧的重传数包按时到达;由于在使用windows自带的socket接口情况下,存在cpu负载会随着数据传输速度增加而显著提升的缺陷,因此过滤驱动在windows内核注册回调函数,调用回调函数中注册的过滤准则,对于到达的每一个网络数据帧都进行过滤处理,无需上层驱动处理网络数据帧的数据,整个过程无需cpu参与,降低了cpu的使用率,提高了网络传输速度;通过对未按序到达网口的数据帧进行修正处理,有效解决了由于交换机带来的数据帧乱序、丢帧等问题,提高了数据帧的获取质量。

附图说明

图1为本发明一种基于gigevision的网口过滤驱动方法的步骤流程示意图;

图2为本发明中步骤s32的详细步骤流程示意图;

图3为本发明中步骤s328的详细步骤流程示意图。

具体实施方式

下面,通过具体实施例对本发明的技术方案进行详细说明。

参照图1,本发明提出的一种基于gigevision的网口过滤驱动方法,包括如下步骤s1至s4:

s1:安装网络过滤驱动,并通过网络过滤驱动在windows内核中注册数据帧的过滤准则,所述过滤准则包括数据帧的源地址、数据帧的目的地址、数据帧的传输类型和数据帧的端口型号;

在pc端安装网络过滤驱动,当安装成功后,在所有网络接口(包括有线网络和无线网络)都会注册相应的过滤驱动实体。通过注册的过滤驱动实体实现对每一个到达网口的数据帧进行相应的过滤处理。在windows内核上注册回调函数,通过调用回调函数中注册的过滤准则,可以过滤每一个到达网口的数据帧,并将符合过滤准则的数据帧按序放入图像缓冲区中。

通过注册的过滤准则,有针对性对数据帧进行过滤处理,实现对数据帧不同信息的过滤、获取、处理等操作。

所述图像缓冲区用于存放有效的网络数据帧。

s2:网络过滤驱动判断每一个到达网口的数据帧是否符合过滤准则;

若是,则进入s3;

若否,则进入s4;

s3:将数据帧直接存入预先注册的图像缓冲区;

s4:将数据帧转发给上层驱动。

通过s1至s4,实现对到达网口的数据帧进行过滤的目的,同时将不符合过滤准则的数据帧直接转发给上层驱动,避免因不符合过滤准则的数据帧在网口过滤驱动的堆积,所造成的网络拥堵现象,从而提高了网络的传输效率和质量。

所述步骤s3中将数据帧直接存入预先注册的图像缓冲区时,网络过滤驱动停止将向上层驱动转发该数据帧。

进一步地,所述步骤s3中数据帧直接存入预先注册的图像缓冲区之前,对每一个到达网口的数据帧进行顺序检测,其顺序检测包括如下步骤:s31至s32。

s31:若所述数据帧按序到达网口,则将到达网口的数据帧直接存入所述图像缓冲区;

s32:若所述数据帧未按序到达网口,则对到达网口的数据帧进行修正处理。

逻辑上所有到达网口的数据帧均是按序到达,但由于网络波动和网络拥塞等情况可能会存在的丢帧现象,使得到达网口的数据帧存在乱序、丢帧的现象,因此需要对到达网口的数据帧进行顺序检测,以使得存入所述图像缓冲区是按序存放的。

如图2所示,进一步地,步骤s32:若所述数据帧未按序到达网口,则对到达网口的数据帧进行修正处理,包括如下步骤s321至s328:

s321:设置网络过滤驱动的重传窗口长度为l,初始时所述重传窗口内所有数据帧均标记为空状态,即packeti=empty(i=[1…l]);

s322:设置重传窗口的范围为[a1-l,a1],所述ai表示重传窗口的最大检测阈值,超过该阈值时,则到达网口的数据帧的索引号x不处于该范围[a1-l,a1]内;

由于网络过滤驱动的维护长度为l,即重传窗口的范围为[a1-l,a1],。

s323:判断所述到达网口的数据帧的索引号x是否处于重传窗口的的范围内;

若是,则进入s324;

若否,则进入s325;

s324:则将该数据帧标记为满状态,并将该数据帧存入所述图像缓冲区;

s325:判断到达网口的数据帧的索引号x是否小于a1-l。

若是,则进入s326;

若否,则进入s327;

s326:丢弃该数据帧;

当到达网口的数据帧的索引号x小于a1-l(重传窗口最小值),表示重传窗口所捕获的数据帧是已经采集到的数据帧,因此将该小于重传窗口最小值的数据帧丢弃,以避免获取重复的数据包。

s327:更新重传窗口的范围,并将该数据帧标记为满状态;

对于步骤s327而言,由于该数据帧的索引号x既不处于[a1-l,a1]范围,同时不小于a1-l,则可以毫无疑义的得出该数据帧的索引号x大于a1,即该数据帧的索引号x大于重传窗口的最大值。

因此当索引号x大于重传窗口最大值时,更新重传窗口的范围,并将该数据帧标记为满状态。

s328:检测更新后的重传窗口是否丢帧,以实现到达网口的数据帧的修正处理。

通过步骤s321至s328,对未按序到达网口的数据帧进行修正,使得进入图像缓冲区中的数据帧是按序存放的,避免因乱序造成数据帧获取有误。

如图3所示,进一步地,所述步骤s328:检测更新后的重传窗口是否丢帧,包括如下步骤s3281至s3285:

s3281:所述更新重传窗口的范围为[b1-l,b1],所述b1为更新后重传窗口的最大检测阈值;

为了更清晰的检测重传窗口是否丢帧,此时b1为到达网口的数据帧的索引号x,更新重传窗口以索引号x为基础,可以较大程度的检测是否有丢帧现象。

由于网络过滤驱动的维护长度为l,即更新后重传窗口的范围为[b1-l,b1]。

s3282:设置丢帧的检测范围为[a1-l,b1-l];

由于更新后的重传窗口的范围为[b1-l,b1],而原重传窗口的范围为[a1-l,a1],即重传窗口移动了b1-a1的距离,因此需要对该距离所形成的范围进行数据帧检测,即该数据帧检测范围为[a1-l,b1-l]。

s3283:检测所述[a1-l,b1-l]内是否存在标记为空状态的数据帧;

若有,则进入s3284;

若无,则进入s3285;

s3284:对该数据帧进行重传处理;

s3285:并将该数据帧存入所述图像缓冲区。

通过步骤s3281至s3285可知,由于更新重传窗口的范围时,将该数据帧标记为满状态,当检测到[a1-l,b1-l]范围内存在数据帧标记为空状态的数据帧,则表示存在数据帧丢失的现象,需要向网口工业相机请求重传该数据包。当未检测到[a1-l,b1-l]范围内存在数据帧标记为空状态的数据帧,则表示不存在数据帧丢失的现象,不需要向网口工业相机请求重传该数据包,将此数据帧存入所述图像缓冲区。

进一步优选地,所述步骤s3284:对该数据帧进行重传处理,包括如下步骤e1至e4:

e1:通过网络过滤驱动中设置的定时器设置数据帧的重传定时时间;

e2:判断在重传定时时间内,重传的数据帧是否到达网口;

若是,则进入步骤e3;

若否,则进入步骤e4;

e3:进入步骤s2;

e4:再次对该数据帧进行重传处理,直到重传的数据帧到达网口。

通过步骤e1至e4,对于每个数据帧的重传数据包,网络过滤驱动为其维护一个定时器,并通过定时器为重传数据帧设置合理的定时时间,当在定时器设定的定时时间内,该重传数据帧仍未到达时,则再次发送重传数据帧指令并启动定时器,直至重传数据帧到达网口。当在定时器设定的定时时间内,该重传数据帧到达网口,则进入步骤s2:网络过滤驱动判断每一个到达网口的数据帧是否符合过滤准则,将重传数据帧与正常数据帧一起,通过以上方法进行相应的过滤处理,实现对重传数据帧的获取和按序存入图像缓冲区。

进一步地,所述对该数据帧进行重传处理时,添加pakcet_resend_max_count参数,重传的数据帧总数不大于pakcet_resend_max_count参数。pakcet_resend_max_count参数表示每帧数据最多重传帧的数量,假设一帧数据需要传输10000个数据帧,则设置packet_resend_max_count=2000表示最多可以重传2000个数据帧。

对于上述重传方法,有可能会在网络拥塞的情况下请求大量的数据帧重传数据包,可能会导致网络环境恶化的现象,为了避免这种现象,在网络过滤驱动中添加pakcet_resend_max_count参数,通过设置该参数,确保重传的数据帧的重传数据包总数不大于该参数,同时使得重传数据包发送速度和正常数据帧发送速度之和小于网络传输最大速度,从而避免了网络拥塞发生的可能。

说明:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1