专利名称:面向udp协议的nfs流控方法
技术领域:
本发明涉及的是一种计算机网络技术领域的方法,具体是一种面向UDP(用户数 据报)协议的NFS(网络文件系统)流控方法。
背景技术:
网络文件系统是一种在网络环境下计算机间共享数据的方式。 一个计算机可以把 其它计算机输出的目录挂载到本地,然后像访问位于本机硬盘上的文件一样访问位于其它 计算机上的文件。NFS网络文件系统的协议包括NFS、远程过程调用(RPC)和底层的传输 层协议(传输控制协议TCP或用户数据报UDP)组成。NFS v3版本中默认使用UDP通信。 UDP和TCP协议属于传输层协议,两者各有优缺点。TCP提供IP环境下的数据可靠传输,它 提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、 端到端和可靠的数据包发送。而UDP则不为IP提供可靠性、流控或差错恢复功能,是一个 无连接的轻量级传输协议。因为无连接,因此两个计算机彼此通信之前没有握手过程,比起 TCP的延时较小,适合于实时应用以及可靠性较高的网络环境下使用。
经对现有文献检索发现,《Managing NFS and NlS,2nd Edition (管理NFS和NIS, 第2版)》第7章中分析了 NFS的协议和实现机制NFS在远程过程调用层引入超时重传机 制来解决丢包问题,如果客户端发送文件读写请求后,在指定的时间内没有收到服务器端 的应答,则客户端会重新发送这些请求。然而,由于UDP协议没有流量控制机制来协调双方 通信,当发送方发送请求的速率超过接收方的处理能力时,就会发生丢包情况;而发送方则 会重新发送数据,进一步增加接收方的负载。这种方式在严重情况下会导致网络拥塞,甚至 服务器瘫痪。
发明内容
本发明的目的在于克服现有技术存在的上述不足,提供一种面向UDP协议的NFS
流控方法。本发明通过在RPC协议层引入流量控制,来规约客户端发送RPC请求和服务器
端发送应答的速率,防止导致网络拥塞或服务器过载。 本发明是通过以下技术方案实现的,包括以下步骤 第一步,客户端将消息封装成RPC请求报文。 第二步,客户端对重传计数Nl进行判断,若重传计数Nl等于重传阈值时,执行系 统调用sle印()睡眠时间tl,并在睡眠时间tl后执行第三步;当重传计数N1小于重传阈 值时,直接执行第三步。 所述的睡眠时间tl的范围是ls-5s。
所述的重传阈值的范围是5-10。 第三步,客户端发送RPC请求报文,调用select()等待服务器应答,并将总发包数 N2加1,当总发包数N2等于总发包阈值时,将重传计数Nl和总发包数N2分别清零。
所述的重传计数Nl是在发送总发包阈值个请求中,重传的请求个数,且重传计数Nl是位于0和重传阈值之间的一个整数。 所述的总发包数N2是包括重传计数N1在内的发送的总的请求个数,且总发包数 N2是位于0和总发包阈值之间的一个整数。
所述的总发包阈值的范围是10-30。 第四步,若在等待时间间隔t2内收到服务器返回的应答,则返回第一步,准备发 送下个报文;若在等待时间间隔t2内没有收到服务器返回的应答,则将重传计数N1加1, 返回第二步,准备重发该报文。 与现有技术相比,本发明的有益效果是在服务器端处理能力较弱或者网络状况 较差的情况下,根据总发包阈值个数之内重传包所占比例,动态调整发送请求包的速率,防 止网络进一步恶化以及服务器端过载以致崩溃,有效提高NFS网络文件系统在各种应用环 境下的可用性和性能。
图1是本发明方法的流程图。
具体实施例方式以下结合附图对本发明的方法进一步描述本实施例在以本发明技术方案为前提 下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述 的实施例
实施例 本实施例中的客户端是Linux操作系统,服务端是运行于虚拟机中的vxWorks操 作系统,网络状况比较差,设置重传阈值为5,总发包阈值为20,睡眠时间tl是2s,开始时重 传计数Nl是4,总发包数N2是17,如图1所示,包括以下步骤
第一步,客户端将消息封装成RPC请求报文; 第二步,客户端对重传计数N1进行判断,此时重传计数N1是4,4小于5,即重传计 数N1小于重传阈值,直接执行下一步; 所述的重传计数Nl是在发送总发包阈值个请求中,重传的请求个数,且重传计数 Nl是位于0和重传阈值之间的一个整数。 第三步,客户端发送RPC请求报文,调用select ()等待服务器应答,并将总发包数 N2加1,此时总发包数N2为18 ; 所述的总发包数N2是包括重传计数N1在内的发送的总的请求个数,且总发包数 N2是位于0和总发包阈值之间的一个整数。 第四步,在等待时间间隔t2内没有收到服务器返回的应答,则将重传计数N1加1 变为5,准备重发该报文; 第五步,客户端对重传计数N1进行判断,此时重传计数N1是5,等于重传阈值,则 执行系统调用sle印(),并在2s后执行下一步; 第六步,客户端发送RPC请求报文,调用select ()等待服务器应答,并将总发包数 N2加1,此时总发包数N2为19 ; 第七步,在等待时间间隔t2内收到服务器返回的应答,则准备发送下个报文;
4
第八步,客户端对重传计数N1进行判断,此时重传计数N1是5,等于重传阈值,则 执行系统调用sle印(),并在2s后执行下一步; 第九步,客户端发送RPC请求报文,调用select ()等待服务器应答,并将总发包数 N2加1 ,此时总发包数N2为20,总发包数N2等于总发包阈值,则将重传计数Nl和总发包数
N2都清零; 第十步,若在等待时间间隔t2内收到服务器返回的应答,则返回第一步,准备发 送下个报文;若在等待时间间隔t2内没有收到服务器返回的应答,则将重传计数N1加1, 准备重发该报文。 本实施例通过抓包显示网络中的重传报文明显减少,没有出现服务器端失去响应 的情况,有效提高了 NFS网络文件系统在各种应用环境下的可用性和性能。
权利要求
一种面向UDP协议的NFS流控方法,其特征在于,包括以下步骤第一步,客户端将消息封装成RPC请求报文;第二步,客户端对重传计数N1进行判断,若重传计数N1等于重传阈值时,执行系统调用sleep()睡眠时间t1,并在睡眠时间t1后执行第三步;当重传计数N1小于重传阈值时,直接执行第三步;第三步,客户端发送RPC请求报文,调用select()等待服务器应答,并将总发包数N2加1,当总发包数N2等于总发包阈值时,将重传计数N1和总发包数N2分别清零;第四步,若在等待时间间隔t2内收到服务器返回的应答,则返回第一步,准备发送下个报文;若在等待时间间隔t2内没有收到服务器返回的应答,则将重传计数N1加1,返回第二步,准备重发该报文。
2. 根据权利要求1所述的面向UDP协议的NFS流控方法,其特征是,所述的重传计数 Nl是在发送总发包阈值个请求中,重传的请求个数,且重传计数Nl是位于0和重传阈值之 间的一个整数。
3. 根据权利要求1所述的面向UDP协议的NFS流控方法,其特征是,所述的总发包数 N2是包括重传计数Nl在内的发送的总的请求个数,且总发包数N2是位于0和总发包阈值 之间的一个整数。
4. 根据权利要求1所述的面向UDP协议的NFS流控方法,其特征是,所述的睡眠时间 tl的范围是ls-5s。
5. 根据权利要求1或者2所述的面向UDP协议的NFS流控方法,其特征是,所述的重传 阈值的范围是5-10。
6. 根据权利要求1或者2或者3所述的面向UDP协议的NFS流控方法,其特征是,所述 的总发包阈值的范围是10-30。
全文摘要
一种计算机网络技术领域的面向UDP协议的NFS流控方法,包括以下步骤第一步,将消息封装成RPC请求报文;第二步,对重传计数N1进行判断,若N1等于重传阈值时,执行系统调用sleep( )睡眠时间,并在睡眠时间后执行第三步;当N1小于重传阈值时,直接执行第三步;第三步,发送RPC请求报文,调用select( )等待服务器应答,将总发包数N2加1,当N2等于总发包阈值时,将N1和N2都清零;第四步,若在等待时间间隔内收到服务器返回的应答,则返回第一步,准备发送下个报文;若在等待时间间隔内没有收到服务器返回的应答,则将N1加1,返回第二步,准备重发该报文。本发明动态调整发送请求包的速率,防止导致网络拥塞或服务器过载,提高NFS的可用性和性能。
文档编号H04L12/56GK101741747SQ20091031205
公开日2010年6月16日 申请日期2009年12月23日 优先权日2009年12月23日
发明者战科宇, 李小勇, 郑涔 申请人:上海交通大学