内容摘要:本文针对高性能路由器体系结构的特点,研究了硬件抽象层在实现过程中的关键技术。主要包括虚拟驱动的动态加载模式、基于分隔符的TCP实时传输方法、基于地址映射的内核态与用户态间的阻塞式数据交换机制几个内容。
前者因为数据被排队而不是立即发送的,因此不适用于需要快速响应时间的系统。后者则会影响到接收方的数据处理的准确性。第一种不足可以通过使用PUSH标记来实现,发送方如果使用了该标志,会立即将缓冲区中的数据发送出去。对于第二个问题,解决起来就比较复杂,因为出现数据包粘滞现象的原因既可能由发送方造成,也可能由接收方造成。
2.3.2 基于分隔符的TCP实时传输方法
采用了基于分隔符的TCP实时传输方法来解决包粘滞问题。该方法在应用层数据包的起始部分附加上有特定格式的分隔符和数据长度域,其中分隔符用于界定数据包之间的界限,长度域则用于表示该数据包的实际长度。
首先,所有经内部通信模块传输的数据,都需要进行一次内部固定格式的封装。封装后数据包的包头,是由内部通信模块自定义的,起始位置是分隔符和长度域。其次,接收方按照内部通信模块的自定义的包结构,接收后对数据流进行预处理,还原成为应用程序可正确识别的数据包。预处理的原理如下:先查找包头中的分隔符,他标识着一个数据包的开始;接下来的域表示的是实际数据包的长度len,取出紧跟在包头后的长度为len的那段数据,这就是需要应用程序处理的数据包。
包粘滞的情况具体可细分为3大类,这里均以2个应用程序数据包粘滞成一段的情况为例,如图5~图9所示,当应用程序数据包个数为n时,可采用类似的方法进行处理。


责编:豆豆技术应用
正在加载评论...