微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 一种TCP/IP卸载引擎架构的应用

一种TCP/IP卸载引擎架构的应用

时间:08-02 来源:互联网 点击:
● 协议模块的设计  

实现tcp/ip的卸载离不开和它紧密相关的协议。为了实现并行处理,整个tcp/ip协议栈分成了图4中的各个模块。不同的报文经过不同的数据路径处理报头信息。每个协议模块的缓冲在存储器中是排队的。这样的设计能够让tcp_rx模块处理报文的时候,ip_rx模块还能为接下来的报文处理ip层的数据。简而言之,每个协议模块都是独立的逻辑电路,协议的处理同软件类似。接收时按缓冲中的顺序处理报文头和数据。发送时根据用户的指令在缓冲中添加报文头和所需数据段。  

  
图4 协议模块处理  

● 协议模块运行状态  

协议模块设计成按照下面图5所描述的状态周期来工作。如果输入索引中没有数据包进入,处理过程将被锁定。在进入一个数据包之后,硬件开始了数据包的处理过程。处理完之后,生成的数据包放在输出索引中。其他的模块把这个输出索引当作自己的输入索引。缓冲器的索引直接依赖于每个模块。在tcp接收模块,输入索引是ip就绪索引,这个ip就绪索引是ip接收模块的输出索引。tcp的输出索引将是tcp就绪索引。应用层以及其他处于tcp上层的协议将使用这个索引来处理已经就绪的tcp/ip数据包。一旦一个模块将一个索引放入它的输出索引,那么这个模块将返回到状态1等待,直到下一个索引的到来。  

  
图5 状态机  

性能分析及模拟  

在这里,要估计在100mb/s以太网的性能。当使用tcp最大负荷时候,一个数据包是1460b,加上tcp和ip头,包长达到1500b,加上14b的mac头和4b的crc校验字节,一共有1518b。此外mac在传输有效报文时,还有8b的前文。这样在100mb以太网处理一个满负荷帧需要1526×8×10ns=122 080ns=0.122 08ms。也就是说系统需要在 0.122 08ms或12 208个100mb的时钟周期内完成整个帧处理。这是最好的情况。当tcp没有任何负荷时,帧的字节总数为20(tcp头)+20(ip头)+14(mac头)+4(crc)+8(mac前文)=66b。在100mb/s的以太网中需要66×8×10ns=5.28μs时间传输。就是说系统需要在5.28μs内处理完这个数据,这是最坏的情况。  

通过系统的分析,对满负荷的帧来说,从mac缓冲器拷贝数据到内部存储器开始,直到处理完毕后放在系统主存储区这个时间内,总共需要的时钟周期平均为1740个。发送的时候需要的1784个时钟周期。没有负荷的时候分别在发送和接收需要280和269个时钟周期。所以,我们可以计算出在100mb/s的以太网需要系统的系统时钟,如表1所示。根据综合的结果,系统能达到的最大时钟为49mhz,差不多能够满足最坏情况的需要。然而,最坏的情况是很少发生的,所以目前设计的toe系统能够很好地满足百兆位以太网的需求。  

  

使用ping、udp和tcp程序进行模拟。模拟环境需要2台通过网络连接的计算机,一台作服务器,一台作客户机。通过quartus ii编译dhl文件,下载到toe网卡的fpga中,将toe网卡连接到客户机。在客户机运行ping、udp和tcp程序,确认服务器是否能够响应客户机的数据包。通过客户机上的network analyzer软件,可以捕获发送接受数据包,能够进一步确认数据包的正确性。  

结束语  

高速以太网的发展,导致目前cpu在tcp/ip协议栈的处理开销越来越大,需要使用专门的硬件来执行tcp/ip的协议栈处理。本文给出了一种硬件实现的toe参考设计,在与普通网卡测试对比中表明,使用toe技术的网卡能够大大降低cpu的负担,而保持网络高吞吐率。

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

网站地图

Top