对Windows TCP/IP协议栈的一种简化设计
摘要:为了让Windows下的网络数据快速发送与接收,提高实时性能,采用对Windows TCP/IP协议栈进行一种简化设计,通过利用Windows提供的用户与设备对象的交互,减少Windows从用户态到内核态的分层,对Socket层进行简单的封装,并且利用零拷贝技术减少数据的拷贝次数以及设置多级优先级队列使数据按照优先级发送,从而使数据达到快速发送和接收的目的。实验结果验证了这种方法能达到预期效果。
关键词:网络体系结构;协议驱动;TCP/IP;零拷贝;优先级队列
随着现代信息技术的进一步发展,对信息传递的速度及对大信息量的传输都有进一步需求,在这样的情况下,无论是对于硬件要求还是软件方面的要求都在提升。而在相同的硬件条件下,如何提高通信的速度、实时性能,软件的优劣在很大程度上影响着这些方面。由于Windo ws的广泛使用和其方便完善的网络结构的支持,针对Windows的网络开发不断增加,然而由于Windows系统为了包容多种协议以及Windows分层驱动的特点,导致数据从用户应用程序到网卡经过的驱动层数很多,势必导致数据的延迟增加,这对那些要求通信实时性能较高的系统来说是无法容忍的。所以研究Windows网络体系架构,对TCP/IP协议栈进行优化,使之适合于对于特定要求的系统,有很重要的研究意义和价值。
1 Windows网络的多层结构
如图1所示,标准的Windows网络体系结构的最底层是网卡,网卡通过NDIS与网卡(NIC)驱动程序通信,网卡驱动程序又通过NDIS与协议驱动程序通信。在NIC驱动程序和协议驱动程序之间还可以插进去一个中间驱动程序。在协议驱动程序的上边,是内核模式TDI客户驱动程序,通过TDI接口同协议驱动程序交互。再往上,则是用户模式的动态连接库(提供WIN32 NETAPI)及网络应用程序。
从图1中可以看出,用户层编写网络程序与其他主机进行通信,发送数据需要经过Sockets接口,TDI客户,TDI传输驱动接口,MDIS协议驱动(TCP/IP协议栈),NIC驱动程序,网卡,可以看出数据从用户提交给网卡的分层很多,Windows操作系统利用这种分层设计的方法,有诸多好处,开发人员可以只关注整个结构中的某一层;分层可以降低层与层之间的依赖,既可以良好地保证未来的可扩展,在复用性上也是很好的优势。但是分层结构也不可避免具有一些缺陷,一方面,分层过多会导致系统性能的下降,因为不采用分层结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成,其中需要处理数据通过各层的信息等操作,这些都降低了系统性能;另一方面是数据的拷贝次数增多,数据拷贝操作不单需要占用CPU时间片,同时也需要占用额外的内存带宽,这就增加了系统开销。这些消耗都会造成数据的时间延迟增加,这对于那些对实时性能有特别要求的而又需要利用Windows平台的系统来说,这是很难容忍的。
2 对Windows TCP/IP协议栈的简化设计
由于Windows网络结构分层较多,导致系统性能下降,网络数据的实时性能得不到体现,一种策略是简化现今Windows TCP/IP协议栈,减少分层;另一方面,利用零拷贝技术减少拷贝次数,减少系统性能消耗;可以采用多级优先级队列,让优先级较高的数据比优先级低的数据优先发送的基本策略,采用适当的调度算法进行处理。通过这几个方面的改进,可以一定程度上弥补Windows系统网络通信延迟较大的缺陷。
如图2所示,第1层为用户应用层;第2层是协议驱动,里面包括简化了的TCP/IP协议栈,只保留TCP,UDP,ARP,ICMP协议,并且对Wind ows中的AFD驱动模块简化,一些数据结构等就存放在设备扩展中;第3层是网卡驱动,第4层就是具体收发数据的网卡。在这几层里面第2层是最关键的部分,下面就具体如何设计进行比较详细的介绍。
2.1 采用零拷贝技术
简单一点来说.零拷贝就是一种避免CPU将数据从一块存储拷贝到另外一块存储的技术。零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除传输数据在存储器之间不必要的中间拷贝次数,从而有效地提高数据传输效率。而且,零拷贝技术减少了用户应用程序地址空间和操作系统内核地址空间之间因为上下文切换而带来的开销。在本文中对于TCP/IP协议栈,采用零拷贝技术,避免操作系统内核缓冲区之间进行数据拷贝操作,可以大大提高系统性能。
在接收发送数据时,用NDIS中的NDIS_PACKET包描述符,包描述符中包含了数据包的总长度,指向第一个缓冲描述符NDIS_BUFFER的指针,缓冲描述符NDIS_BUFFER里面的Start Virtual Address才是指向真正的数据所在的首地址以及包含了此缓冲中的数据长度。利用这个NDI
- 集成简化设计(01-22)
- 采用单片IC使电路简化的红外遥控接收电路及工作原理分析(02-20)
- 使调制电路简化的80MHZ FM信号发送电路功能及工作原理(02-19)
- 使调制电路简化的80MHZ FM信号发送电路(05-31)
- 采用单片IC使电路简化的红外遥控接收电路(06-01)
- 采用模拟开关和差动放大器使电路简化的同步检波电路(05-25)