一种网络芯片中进行TCP数据重传的方法及系统与流程
- 国知局
- 2024-08-02 13:57:20
本发明涉及芯片设计领域,具体涉及一种网络芯片中进行tcp数据重传的方法及系统。
背景技术:
1、tcp/ip协议是目前互联网最基础的协议,任何接入互联网的设备终端都需要遵循tcp/ip协议。为提高网络的数据处理能力、降低cpu负载、提高网络带宽、降低网络处理时延,当前主流的网络芯片都会集成tcp卸载引擎(即toe引擎,tcp offload engine)。
2、tcp数据发送时,应用层通过socket接口将tcp数据写入一段连续的或离散的主机内存,并把该段tcp数据对应的内存地址gpa、tcp序列号tcp_sn、数据长度plen封装成为工作队列元素wqe(work queue element),如图1所示。
3、封装好的工作队列元素wqe存放于主机内存中预先申请好的wqe页面中。多个wqe页面之间通过链接wqe(link wqe,该wqe中存放了下一个wqe页面的地址)以链表方式连接,如图2所示。网络芯片中的toe引擎,通过读取wqe页面中的wqe并进行解析,便可知tcp数据存放的内存地址gpa和数据长度plen,继而读取tcp数据进行切片、封装、发送。
4、toe引擎在发送数据时,作为发送方会维护一个数据重传计时器。当重传计时器超时时,发送方未收到接收方返回的确认报文(ack),或重传计时器超时前,发送方收到接收方返回的快速重传指示(重复ack报文)或选择性确认指示(selective acknowledgement,sack指示),toe引擎会启动重传机制,重传出错或丢失的数据直到接收方正确接收为止,如图3所示。
5、toe引擎在重传tcp数据时,需要根据重传的tcp序列号tcp_sn,扫描已发送数据对应的wqe。因为wqe存放在主机内存,toe引擎需要将wqe从主机内存读取到引擎内再进行扫描,此操作会花费一个往返时延pciertt(round trip time)的时间,往返时延指的是toe引擎往主机内存发送读请求,到主机内存将读数据返回到toe引擎的时间。当已发送但未被确认的tcp数据越多,则需要扫描的wqe越多,扫描找到重传wqe的延迟会越大,进而会影响网络的传输效率和延迟。
技术实现思路
1、本发明目的在于提供一种网络芯片中进行tcp数据重传的方法及系统,本发明设计了toe引擎的高效数据发送方法,针对每一条连接队列对qp(queue pair),toe引擎会维护一个上下文qpc(queue pair context),将已发送tcp数据所对应的每一个wqe信息(内存地址wqe_gpa、最后1b数据的tcp序列号wqe_end_tcp_sn)记录在其中。当发生tcp数据重传时,toe引擎能够快速查找上下文qpc中的wqe信息,找到重传数据所对应的wqe信息,根据该信息将wqe信息从主机中读取回来,解析返回的wqe信息并根据解析信息读取重传的数据以进行数据重传。该方法可提高网络的传输效率,并在发生数据重传时,能够快速找到重传数据对应的wqe信息,从而优化了网络的发送延迟。
2、本发明通过下述技术方案实现:
3、第一方面,本发明提供了一种网络芯片中进行tcp数据重传的方法,该方法包括:
4、在toe引擎中,对每一条连接队列对qp维护一个上下文qpc;
5、发送端每次发送tcp数据时,将tcp数据所对应的wqe信息记录在上下文qpc中;
6、当toe引擎收到发送端返回的确认报文(ack报文)时,则解析确认报文所对应的wqe信息,并更新上下文qpc中的未进行确认的wqe的读指针;
7、当toe引擎收到发送端返回的重传请求时,则toe引擎在上下文qpc中查找重传数据所对应的wqe信息,将重传数据所对应的wqe信息从主机中读取回来并解析,根据解析信息读取重传数据并进行重传。
8、进一步地,上下文qpc包括虚拟功能描述vf(virtual function)、主机编号、未进行确认的wqe的写指针、未进行确认的wqe的读指针、发送次数、发送数据长度、发送数据的tcp序列号范围、最后1b数据的tcp序列号和wqe所在的内存地址。
9、进一步地,wqe信息包括tcp数据对应的内存地址gpa、tcp序列号tcp_sn和数据长度plen。
10、进一步地,发送端每次发送tcp数据时,将tcp数据所对应的wqe信息记录在上下文qpc中,包括:
11、发送端每次发送tcp数据时,将该次发送tcp数据的发送次数、发送数据长度、发送数据的tcp序列号范围、最后1b数据的tcp序列号和wqe所在的内存地址记录在对应的上下文qpc中;
12、并在上下文qpc中将未进行确认的wqe的写指针加1。
13、进一步地,该方法还包括:
14、当已发送但未被确认的wqe信息达到预设值后,发送端再有tcp数据发送请求时,则toe引擎不再响应;其中:已发送但未被确认的wqe信息等于未进行确认的wqe的写指针与未进行确认的wqe的读指针的差值。
15、进一步地,该方法还包括:
16、当toe引擎未收到发送端返回的确认报文(ack报文),且已发送但未被确认的wqe信息达到预设值时,则对发送端的tcp数据发送请求,toe引擎一直不响应。
17、进一步地,toe引擎在上下文qpc中查找重传数据所对应的wqe信息,包括:
18、toe引擎在上下文qpc中的未进行确认的wqe的写指针与未进行确认的wqe的读指针之间,查找第一个满足判断条件的wqe信息,该wqe信息即是重传数据所对应的wqe信息;
19、其中,判断条件为:最后1b数据的tcp序列号>=重传数据tcp序列号。
20、第二方面,本发明又提供了一种网络芯片中进行tcp数据重传的系统,该系统使用上述的一种网络芯片中进行tcp数据重传的方法;该系统包括:
21、上下文qpc构建单元,用于在toe引擎中,对每一条连接队列对qp维护一个上下文qpc;
22、数据发送及qpc记录单元,用于发送端每次发送tcp数据时,将tcp数据所对应的wqe信息记录在上下文qpc中;
23、第一处理单元,用于当toe引擎收到发送端返回的确认报文(ack报文)时,则解析确认报文所对应的wqe信息,并更新上下文qpc中的未进行确认的wqe的读指针;
24、第二处理单元,用于当toe引擎收到发送端返回的重传请求时,则toe引擎在上下文qpc中查找重传数据所对应的wqe信息,将重传数据所对应的wqe信息从主机中读取回来并解析,根据解析信息读取重传数据并进行重传。
25、进一步地,上下文qpc包括虚拟功能描述vf(virtual function)、主机编号、未进行确认的wqe的写指针、未进行确认的wqe的读指针、发送次数、发送数据长度、发送数据的tcp序列号范围、最后1b数据的tcp序列号和wqe所在的内存地址。
26、进一步地,第二处理单元中toe引擎在上下文qpc中查找重传数据所对应的wqe信息,包括:
27、toe引擎在上下文qpc中的未进行确认的wqe的写指针与未进行确认的wqe的读指针之间,查找第一个满足判断条件的wqe信息,该wqe信息即是重传数据所对应的wqe信息;
28、其中,判断条件为:最后1b数据的tcp序列号>=重传数据tcp序列号。
29、本发明与现有技术相比,具有如下的优点和有益效果:
30、1、本发明一种网络芯片中进行tcp数据重传的方法及系统,本发明提出的技术方案根据toe引擎中维护的上下文qpc,准确定位到重传数据对应的wqe信息后,再去读取wqe信息、读取重传数据并上传。该方案避免了读取所有已发送但未被确认wqe所造成的带宽及时间的浪费,提高了重传数据对应wqe的查找效率。本发明可提高网络的传输效率,并在发生数据重传时,能够快速找到重传数据对应的wqe信息,从而优化了网络的发送延迟。
31、2、本发明一种网络芯片中进行tcp数据重传的方法及系统,本发明提出的技术方案的另一优点在于,toe引擎的上下文qpc中最多纪录32个未被确认的wqe信息。该设计不仅是考虑到芯片ram容量的因素,还可以在链路发生拥塞时,有效避免发送窗口过大而导致链路拥塞进一步加剧,从而提高tcp链路的利用率。
本文地址:https://www.jishuxx.com/zhuanli/20240801/241226.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表