一种计算机网络端主机系统精确标记数据包时间戳的方法

文档序号:6368298阅读:207来源:国知局
专利名称:一种计算机网络端主机系统精确标记数据包时间戳的方法
技术领域
本发明涉及计算机网络技术领域,特别涉及一种计算机网络端主机系统精确标记数据包时间戳的方法,尤其是使用多任务操作系统的端主机系统精确标记数据包时间戳的方法。
2、多任务操作系统多任务操作系统中多个任务并发执行,由操作系统协调多个任务共享CPU。当前,大多数多任务操作系统的实现是采用多进程并发的方法。
3、进程(process)进程是一个具有一定独立功能的程序在一个数据集合上的一种动态执行过程。
4、进程的并发执行指多个进程在同一计算机系统中的并发执行,由操作系统协调多个进程共享CPU。
5、进程切换指处理机从一个进程的运行转到另一个进程上运行。
6、用户模式是处理机的一种执行模式,又叫非特权模式,用户程序在这种模式下运行,仅有有限的特权,用来保障操作系统的安全性。
7、系统模式是处理机的一种执行模式,又叫做特权模式、核心模式,操作系统核心程序在这种模式下运行且能够获得更多的特权。
8、时间戳计算机系统中标记某种事件的发生的时间信息。
在目前广泛使用的传统时间戳标记方法中,为网络数据包标记发送/接收时间戳信息的任务运行在用户模式下,由于操作系统多任务并发的特性,为了提高整机的资源利用率,系统的不同任务之间存在频繁的切换,影响了时间戳信息的精确性。
对于端主机系统发送出去的数据包,利用传统时间戳标记方法获得发送时间戳的方式通常包含以下步骤步骤1应用进程产生待发送数据包;步骤2应用进程通过系统调用获得当前时间,作为数据包的发送时间戳;步骤3应用进程发送数据包;步骤4数据包被发送到物理链路上。
如果步骤1到步骤4连续不间断执行,系统可以获得比较精确的数据包发送时间戳。但是由于多任务操作系统具有并发性,在用户模式运行的应用进程经常由于中断、系统调用等原因进入操作系统核心,并发生进程切换。对于上述记录时间戳信息并发送数据包的应用进程而言,如果进程切换发生在步骤2、3之间,也即在系统记录时间戳信息之后,由于进程切换使得该数据包并未立即被发送出去,记录时间戳信息与发送数据包之间存在一定的延迟时间,则该时间戳没有准确的反映出数据包被发送到链路上的时间信息。附

图1是进程切换对现有给发送数据包打时间戳方法的影响示意图,应用进程在时刻t1创建数据包,在时刻t2打时间戳,但此后由于进程切换被挂起,直到时刻t3该应用进程被唤醒,将数据包发送出去,而由于进程切换导致的延迟(t3-t2)可能达到数十个毫秒甚至数百毫秒,因而大大降低了时间戳的精度。此外,即使步骤2、3之间没有发生进程切换,由于步骤3是在用户模式执行的操作,步骤4是在系统模式执行的操作,二者之间可能存在较大延迟,这也将影响数据包发送时间戳的精确度,如附图1中的延迟(t4-t3)。
对于端主机系统接收的数据包,获得接收时间戳的方式通常包含以下步骤步骤1运行在系统内核中的网络设备驱动程序从链路接口上接收数据包并暂存在内核缓冲中;步骤2应用进程得到处理器资源,获得数据包;步骤3应用进程通过系统调用获得当前时间,作为该数据包的接收时间戳;如果步骤1与步骤2之间或者步骤2与步骤3之间由于进程切换造成较大延迟,则应用进程获得的数据包接收时间戳将非常不精确,这将直接影响到网络性能参数计算的准确度。附图2是进程切换对现有给接收数据包打时间戳方法的影响示意图,应用进程在时刻t0由于进程切换被挂起,数据包1、2分别于时刻t1,t2到达。由于应用进程没有获得处理机,两数据包被存储在系统缓冲中,在时刻t3,应用进程获得处理机被重新执行,分别在时刻t3,t4标记数据包1、2的时间戳信息。如果该应用进程用于估计网络带宽,对于该应用进程而言,数据包1、2到达的时间间隔真实值应为t2-t1,但是由于多进程并发带来的缓存的影响,该时间间隔变为t4-t3,应用程序会错误的将系统缓冲到用户进程缓冲的内存拷贝速率(数据包2的包长/(t4-t3))当作数据包从网络到达的速率,其直接影响是把网络带宽估计过高。
目前,大多数端主机操作系统中都提供了包过滤器(Packet Filter),如Linux,BSD,Soloris,HP-UNIX,Windows等系统。附图3是现有端主机操作系统中的包过滤器示意图,所谓包过滤器是操作系统内核中负责捕获进出端主机系统网络数据包的一个内核模块,该模块可以由用户设置特定的过滤条件进行数据包过滤操作,从而只将满足过滤条件需要的数据包及相关信息传送给用户进程。包过滤器在捕获一个数据包时,会给数据包标记相应的发送/接收时间戳,该时间戳与数据包实际的发送/接收时间非常近似,并且由于这些操作由系统核心在系统模式下执行,因此不会受到多进程并发的影响。虽然包过滤器标记的时间戳与理想的数据包时间戳之间存在着一定的误差,但这一误差非常小,可近似忽略。因此可以利用包过滤器来标记网络数据包的精确时间戳,使之不受多进程并发的影响。
同时,为解决接收数据包时可能遇到的时间戳与数据包之间不匹配的问题,提出时间戳回退方法。
步骤1中时间戳存取模块设置两个先进先出时间戳队列,一个存放发送数据包时间戳信息,一个存放接收数据包时间戳信息;时间戳存取模块从包过滤器获得一个数据包时间戳信息后,根据该数据包是用户进程发送的数据包,还是用户进程接收的数据包,将时间戳信息相应地放入发送时间戳队列或接收时间戳队列的队尾;在用户请求从时间戳存取模块获得一个时间戳时,如果用户请求获得发送时间戳,则时间戳存取模块从与该用户请求对应的发送时间戳队列队头取出一个时间戳并将其返回给用户;如果用户请求获得接收时间戳,则时间戳存取模块从与该用户请求对应的接收时间戳队列队头取出一个时间戳并将其返回给用户。
步骤4中,用户进程发送一个数据包之后,在发送另一个数据包之前,必须且只能从时间戳存取模块取回一个发送时间戳,用户进程接收一个数据包之后,在接收另一个数据包之前,必须且只能从时间戳存取模块取回一个接收时间戳。
步骤4为解决接收数据包时可能遇到的时间戳与数据包之间不匹配的问题,提出的时间戳回退检查,包括步骤步骤1判断接收的数据包是否符合包过滤器过滤条件,如果符合,进入步骤2,否则将时间戳退回给时间戳存取模块;步骤2如果接收的数据包不是用户进程想要打时间戳的数据包,则丢弃该数据包和本次获得的时间戳,否则,该时间戳就是用户需要的时间戳。
步骤1中退回的时间戳将插入到时间戳存取模块中接收时间戳队列队头。
只要为包过滤器设置的过滤条件能唯一地确定应用进程发送的数据包,则通过上述方法得到的发送时间戳与发送数据包能正确地一对应。
只要为包过滤器设置的过滤条件能全部覆盖应用进程需要接收的数据包,且满足过滤条件的到达数据包均能被应用进程接收,则通过本发明提出的精确时间戳方法得到的接收时间戳与接收数据包能正确地一一对应。
图4是本发明利用包过滤器为用户进程网络数据包打时间戳方法的示意图。
发明实施方式本发明调用操作系统内核中的包过滤器获取用户进程数据包时间戳并将此信息放入时间戳存取模块的相应时间戳队列中,用户进程在发送或者接收一个数据包后,必须立即从时间戳模块中取得相应时间戳。附图4是本发明利用包过滤器为用户进程网络数据包打时间戳方法的示意图,针对每一个需要网络数据包精确时间戳的应用进程,设置一个时间戳存取模块,它负责与操作系统内核的包过滤器交互以获得其捕获的网络数据包时间戳信息并将该信息存储在时间戳队列中,根据需要返回给用户进程。时间戳存取模块中维护两个时间戳先入先出队列发送时间戳队列和接收时间戳队列,其中前者存放由用户进程发往其他目的地的数据包时间戳信息,后者存放用户进程收到的其他主机发来的数据包的时间戳信息。根据用户进程设置的包过滤条件,时间戳存取模块向包过滤器请求指定数据包的时间戳信息,并根据该数据包是用户进程发送的数据包,还是用户进程接收的数据包,将时间戳信息相应地放入发送时间戳队列或接收时间戳队列的队尾。在用户请求从时间戳存取模块获得一个时间戳时,如果用户请求获得发送时间戳,则时间戳存取模块从与该用户请求对应的发送时间戳队列队头取出一个时间戳并将其返回给用户;如果用户请求获得接收时间戳,则时间戳存取模块从与该用户请求对应的接收时间戳队列队头取出一个时间戳并将其返回给用户。用户进程在获取时间戳信息时,必须遵守以下规则用户进程发送一个数据包之后,在发送另一个数据包之前,必须且只能从时间戳存取模块取回一个发送时间戳,用户进程接收一个数据包之后,在接收另一个数据包之前,必须且只能从时间戳存取模块取回一个接收时间戳。这样规定的目的是保证时间戳信息与数据包之间正确的对应关系。性质1 只要为包过滤器设置的过滤条件能唯一地确定应用进程发送的数据包,则通过本发明提出的精确时间戳方法得到的时间戳与发送数据包能正确地一一对应。证明因为包过滤器设置的过滤条件能唯一地确定应用进程发送的数据包,所以包过滤器能够捕获的发送数据包就是应用进程发送的数据包,且捕获的数据包之间的相对顺序就是应用进程发送数据包的相对顺序。此外,包过滤器将数据包的时间戳信息传递给时间戳存取模块的顺序是按数据包被捕获的顺序,时间戳存取模块将时间戳以先入先出的方式放入发送时间戳队列,因此用户进程发送完一个数据包,立即从时间戳存取模块获得的发送时间戳,就是对应于该数据包的时间戳。证毕。
在某些特殊的情况下,特别是在一些网络测量应用中,往往不能构造出100%精确地描述需要打时间戳的接收数据包流的过滤条件,或者过滤条件虽然100%精确地描述了需要打时间戳的接收数据包流,但用户进程可能收到额外的数据包,这时用户进程得到的时间戳与收到的数据包之间就可能存在错误的对应关系。例如,在因特网(Internet)中最常用的测量工具ping,它通过发送因特网控制消息协议(ICMP)回声请求包(EchoRequest)并收集相应的ICMP回声应答包(Echo Reply)来计算网络通路的往返延迟等性能参数,在ping发送了一个ICMP回声请求包后,它可能收到其他类型的ICMP数据包甚至属于其他进程的ICMP数据包。为此本发明提出一种时间戳回退技术,用以解决上述在为接收数据包打时间戳时遇到的问题。时间戳存取模块提供接收时间戳回退功能,即将退回的时间戳重新插入到接收时间戳队列的队列头部。在实际使用时,尽可能将过滤条件设置得严格一些(当然,该条件应当覆盖所有应用进程想要打时间戳的进出数据包),在接收一个数据包并得到一个时间戳后,执行如下步骤步骤1判断接收的数据包是否符合过滤条件,如果符合,进入步骤2,否则将时间戳退回给时间戳存取模块;步骤2如果接收的数据包不是用户进程想要打时间戳的数据包,则丢弃该数据包和得到的时间戳,否则,得到的时间戳就是用户需要的时间戳。
性质2 只要为包过滤器设置的过滤条件能全部覆盖应用进程需要接收的数据包,且满足过滤条件的到达数据包均能被应用进程接收,则通过本发明提出的精确时间戳方法得到的时间戳与接收数据包能正确地一一对应。
证明假设得到的时间戳与应用进程接收到的需要打时间戳的数据包之间可能存在不匹配的情况。由于有时间戳回退机制,接收时间戳队列中的时间戳不可能由于应用进程收到不满足过滤条件的数据包而被消耗,也就是说接收时间戳队列中时间戳的总数等于应用进程接收到的满足过滤条件的数据包总数。那么,错误匹配的原因是时间戳队列中时间戳之间的相对顺序不同于它们对应的数据包被应用进程接收的相对顺序。而这是不可能的,因为包过滤器将数据包的时间戳信息传递给时间戳存取模块的顺序是按数据包被捕获的顺序,时间戳存取模块将时间戳以先入先出的方式管理发送时间戳队列,用户进程也是发送或接收一个数据包,立即从时间戳队列中取出一个时间戳。因此,通过本发明提出的精确时间戳方法得到的时间戳与应用进程接收到的需要的数据包之间不可能存在不匹配的情况。证毕。
本发明方法可以在多任务并发的端主机系统中获得稳定、精确的网络数据包时间戳信息,可应用于网络性能测量以及适应性(Adaptive)网络应用等领域。
权利要求
1.一种计算机网络端主机系统精确标记数据包时间戳的方法,包括步骤步骤1设置包过滤器过滤条件,该过滤条件能精确地定义用户进程将要发送和接收的数据包,为每一个用户进程设置一个时间戳存取模块,该模块向包过滤器请求其捕获的每一个数据包时间戳信息,并返回给用户进程;步骤2用户进程发送或者接收数据包;步骤3包过滤器根据过滤条件在系统内部捕获用户进程发送或者接收的数据包,同时记录时间戳信息,并将时间戳信息送给时间戳存取模块;步骤4用户进程发送或接收一个数据包后,立即从时间戳存取模块取回一个时间戳,将其作为该数据包的发送/接收时间戳;在接收数据包时,要执行时间戳回退检查。
2.根据权利要求1的方法,其特征在于,步骤1中时间戳存取模块设置两个先进先出时间戳队列,一个存放发送数据包时间戳信息,一个存放接收数据包时间戳信息;时间戳存取模块从包过滤器获得一个数据包时间戳信息后,根据该数据包是用户进程发送的数据包,还是用户进程接收的数据包,将时间戳信息相应地放入发送时间戳队列或接收时间戳队列的队尾;在用户请求从时间戳存取模块获得一个时间戳时,如果用户请求获得发送时间戳,则时间戳存取模块从与该用户请求对应的发送时间戳队列队头取出一个时间戳并将其返回给用户;如果用户请求获得接收时间戳,则时间戳存取模块从与该用户请求对应的接收时间戳队列队头取出一个时间戳并将其返回给用户。
3.根据权利要求1的方法,其特征在于,步骤4中,用户进程发送一个数据包之后,在发送另一个数据包之前,必须且只能从时间戳存取模块取回一个发送时间戳,用户进程接收一个数据包之后,在接收另一个数据包之前,必须且只能从时间戳存取模块取回一个接收时间戳。
4.根据权利要求1的方法,其特征在于,步骤4为解决接收数据包时可能遇到的时间戳与数据包之间不匹配的问题,提出的时间戳回退检查,包括步骤步骤1判断接收的数据包是否符合包过滤器过滤条件,如果符合,进入步骤2,否则将时间戳退回给时间戳存取模块;步骤2如果接收的数据包不是用户进程想要打时间戳的数据包,则丢弃该数据包和本次获得的时间戳,否则,该时间戳就是用户需要的时间戳。
5.根据权利要求4的方法,其特征在于,步骤1中退回的时间戳将插入到时间戳存取模块中接收时间戳队列队头。
6.根据权利要求1和2和3所述方法,其特征在于,只要为包过滤器设置的过滤条件能唯一地确定应用进程发送的数据包,则通过上述方法得到的发送时间戳与发送数据包能正确地一对应。
7.根据权利1和2和3和4和5所述方法,其特征在于,只要为包过滤器设置的过滤条件能全部覆盖应用进程需要接收的数据包,且满足过滤条件的到达数据包均能被应用进程接收,则通过本发明提出的精确时间戳方法得到的接收时间戳与接收数据包能正确地一一对应。
全文摘要
一种计算机网络通信中端主机系统精确标记数据包时间戳的方法,包括步骤步骤1设置包过滤器过滤条件。为每一个用户进程设置一个时间戳存取模块;步骤2用户进程发送或者接收数据包;步骤3包过滤器根据过滤条件在系统内部捕获用户进程发送或者接收的数据包,同时记录时间戳信息,并将时间戳信息送给时间戳存取模块;步骤4用户进程发送或接收一个数据包后,立即从时间戳存取模块取回一个时间戳,将其作为该数据包的发送/接收时间戳(在接收数据包时,要执行时间戳回退检查)。本发明方法可以在多任务并发的端主机系统中获得稳定、精确的网络数据包时间戳信息,可应用于网络性能测量以及适应性(Adaptive)网络应用等领域。
文档编号G06F9/48GK1456977SQ0314273
公开日2003年11月19日 申请日期2003年6月16日 优先权日2003年6月16日
发明者王恺, 黄靖, 杨峰 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1