dpdk课程学习之练习笔记三(tcp的简单实现)

本文介绍如何基于DPDK实现TCP数据包的处理,包括从接收缓冲区到发送缓冲区的数据流转,以及TCP的三次握手和四次挥手的测试。通过定义状态机控制TCP业务流程,并提供API接口供用户使用。测试过程中使用网络工具进行通信验证,展示TCP协议栈的基础实现。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

dpdk(数据平面开发套件),提供给我们一套框架,使我们可以在此基础上进行数据面相关软件开发。

1:基于DPDK实现tcp数据包的处理的测试

1.1:整理基于dpdk实现tcp协议业务处理的思路:

1:dpdk接管网卡数据后,放入中间接收缓冲区。

​ dpdk提供接口rte_eth_rx_burst 从以太网接收队列中提取接收的数据。

2:专门的线程处理中间接收缓冲区的数据,进行过滤,依次业务处理。(arp/tcp/udp/icmp)(这里可以继续启动线程分类处理)

3:相关其他线程处理完业务数据包,需要回复,则构造相关结构放入中间发送缓冲区中,

4:通过用dpdk对应接口(rte_eth_tx_burst),放入以太网缓冲区中发送数据。

5:考虑tcp的实现,tcp涉及三次握手,四次挥手,通过十一种状态进行控制,以及各种拥塞控制,流量控制,定时器等。

1.2:简单实现测试逻辑

这里从tcp server端的角度考虑,实现tcp 三次握手,正常通信,四次挥手的正常流程测试,其他机制后期扩展。

===> 需要定义结构,保存多个fd与五元组,发送缓冲区和接收缓冲区等。

===>需要定义11中状态,控制tcp业务流程。

===>dpdk发送和接收网卡的控制,接收到的是协议包,发送的也是协议包,最终我们要构造的是tcp的协议包放入缓冲区中。(通过两个缓冲区in_ring_buff和out_ring_buff作为中间层进行数据交互)

===>这里tcp的server端对应多个连接,涉及fd与五元组每个连接发送的细节,在业务处理时,需要关注缓冲区与每个五元组结构的交互。

在这里插入图片描述

1.3:在tcp server的角度,测试三次握手,交互,以及四次挥手的逻辑测试

根据每个fd对应的五元组的结构中保存的状态,对每种状态做不同的业务处理。

	switch (stream->status

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值