- 博客(13)
- 收藏
- 关注
原创 DPDK环形缓冲区——ringbuf
环形缓冲区(ringbuf)是DPDK中的一个关键组件,主要用于在不同线程和进程间无锁传递数据,以实现高速数据访问。
2024-08-08 13:33:53
338
原创 DPDK实现TCP/IP协议(三)---丢包
序列号分析:通过分析序列号和确认号来识别丢包。如果一个具有较高序列号的数据包在具有较低序列号的数据包之前到达,就可以推断出有数据包丢失。检测重复ACK:当发送方收到连续三个或以上的重复ACK时,它假定数据包丢失。ACK超时:为期望的数据包设置超时。如果数据包在指定时间内未到达,则认为其丢失负确认(NACK):使用NACK来显式地指示丢失的数据包,当检测到序列中断时发送NACK根据序列号// 丢包检测逻辑i < nb_rx;i++) {// 提取IP头部。
2024-08-05 16:17:08
311
原创 DPDK实现TCP/IP协议(二)--拥塞控制
DPDK主要用于在用户空间加速数据包处理。DPDK可以通过其提供的加速数据包处理能力来构建自己传输层协议或优化现有协议。DPDK本身并不提供拥塞控制机制,但可以使用DPDK来实现现代化的拥塞控制算法,结合传统TCP/IP协议栈,加速数据包的发送和接收。
2024-08-04 17:37:05
172
1
原创 DPDK实现TCP/IP协议(一)----组包
在DPDK中,采用struct rte_ether_hdr定义以太网协议头。以下是DPDK中以太网头的结构体。DPDK中IP协议头的结构体。DPDK中IP协议头的结构体。
2024-08-03 15:21:22
601
原创 DPDK实现数据包的收发
DPDK(Data Plane Development Kit)允许应用程序直接访问网卡,从网卡数据缓冲区获取数据。1.配置hugepage。
2024-08-02 20:21:25
584
原创 DPDK简单配置启动示例
分配一组数据包缓冲区,并使用 rte_eth_tx_burst 函数一次性发送这些数据包。配置第一个可用的以太网设备 (port_id = 0) 的接收和发送队列。该结构体包含多个字段,用于描述以太网设备的配置信息。该结构体包含多个字段,用于描述接收队列的配置信息。– max_rx_pkt_len: 最大接收数据包长度。成功时返回指向创建的内存池的指针,失败时返回 NULL。– split_hdr_size: 拆分的头部大小。配置第一个以太网设备的发送队列。配置第一个以太网设备的接收队列。
2024-07-21 16:42:54
654
原创 hugepage配置
由于hugepagesz 默认为2M,需要修改hugepagesz >2M ,GRUB_CMDLINE_LINUX后需要增加参数default-hugepagesz=1G修改默认hugepagesz ,否则可能无法分配hugepages。以hugepagesz = 1G hugepages=10为例,hugepagesz * hugepages = 10G =10240M,需要10G的内存空间,实际只能分配出5个hugepage。查看可用的内存大小,以M为单位。当内存free空间等于5891时。
2024-07-19 17:21:48
168
原创 问题解决:dpdk-19.08.02编译报错
这个原因是由于找不到pci_set_dma_mask函数。可用命令检查uname -r内核版本是否支持。
2024-07-17 23:55:45
122
原创 问题解决:gcc: error: unrecognized command-line option ‘-ftrivial-auto-var-init=zero’
问题解决
2024-07-16 00:58:24
189
原创 问题解决:error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
问题解决
2024-07-16 00:05:22
168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人