微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 高性能路由器硬件抽象层的关键技术研究

高性能路由器硬件抽象层的关键技术研究

时间:10-11 来源:互联网 点击:
2.3.2基于分隔符的TCP实时传输方法

采用了基于分隔符的TCP实时传输方法来解决包粘滞问题。该方法在应用层数据包的起始部分附加上有特定格式的分隔符和数据长度域,其中分隔符用于界定数据包之间的界限,长度域则用于表示该数据包的实际长度。

首先,所有经内部通信模块传输的数据,都需要进行一次内部固定格式的封装。封装后数据包的包头,是由内部通信模块自定义的,起始位置是分隔符和长度域。其次,接收方按照内部通信模块的自定义的包结构,接收后对数据流进行预处理,还原成为应用程序可正确识别的数据包。预处理的原理如下:先查找包头中的分隔符,他标识着一个数据包的开始;接下来的域表示的是实际数据包的长度len,取出紧跟在包头后的长度为len的那段数据,这就是需要应用程序处理的数据包。

包粘滞的情况具体可细分为3大类,这里均以2个应用程序数据包粘滞成一段的情况为例,如图5~图9所示,当应用程序数据包个数为n时,可采用类似的方法进行处理。











第1类,粘滞数据是由完整的数据包组成的,如图5所示。这种情况的处理非常简单,按分隔符找到数据包的起始位置,再根据数据长度取出应用程序数据即可。

第2类,粘滞数据是由完整数据包和应用程序数据残缺的数据包组成,如图6和图7所示。处理时,需要对残缺数据包2的应用程序数据部分进行保存,内部通信包头的数据长度域也要记录下来,以便下次接收时知道应用程序数据剩余部分的长度。再次收到数据时,就根据剩余长度取出一段数据,与上次保存的应用程序数据合为一个完整的数据包。

第3类,粘滞数据是由完整数据包和内部通信包头残缺的数据包组成,如图8和图9所示。首先,要将如图8所示数据段中收到的残缺的这部分包头保存起来,然后收取下一次数据如图9所示。再从收取的数据中,截取可以与上次残缺包头组成完整的内部通信包头的一段报文,形成所需要的内部通信包头。当然,该段数据有可能并不是内部通信包头,这可以从分隔符是否正确等内部通信封装格式来判断。如果发生这种情况,就要将指针以字节为单位,顺次向后滑动,直到找到真正的内部通信包头为止。然后根据包头中的信息,取出相应长度的应用程序数据交送给应用程序接收者。

解决了上述分析的2大不足之后,内部通信模块中实现的TCP传输,在保证数据传输的良好的可靠性和流控性之外,还具备了一定的实时性能和防止数据包粘滞的功能。

3 结 语

本文研究了硬件抽象层在高性能IPv6路由器实现中的关键技术,主要分析了虚拟驱动的动态加载模式、基于分隔符的TCP实时传输方法、基于地址映射的内核态与用户态间的阻塞式数据交换机制。通过上述关键技术的研究,使硬件抽象层得以实时、高效地运行,并且已稳定运行于高性能IPv6 路由器中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top