
1以太网头属于数据链路层共 14 字节。目的 MAC 地址6 字节标识数据包的接收方物理地址。源 MAC 地址6 字节标识数据包的发送方物理地址。协议类型2 字节指示以太网帧中承载的下一层协议类型0x0800表示 IPv4。代码语言Bash自动换行AI代码解释6 bytes 6 bytes 2 bytes -------------------------------- | SMAC | DMAC | Type | --------------------------------2IP 头属于网络层对于 IPv4 标准头部长度是 20 字节不包含可选字段。包括数据包的路由信息。源 IP 地址 (Source IP Address)4 字节标识数据包的发送方逻辑地址。目的 IP 地址 (Destination IP Address)4 字节标识数据包的接收方逻辑地址。其他重要字段版本、头部长度、服务类型、总长度、标识、分片偏移、生存时间 (TTL)、协议指示上层协议如 UDP 为 17和校验和等。3UDP 头 属于传输层共 8 字节。源端口号 (Source Port)2 字节。目的端口号 (Destination Port)2 字节。UDP 长度 (Length)2 字节包括 UDP 头部和数据部分的长度。校验和 (Checksum)2 字节。4UDP 内容 (UDP Payload)实际的应用数据。DPDK 应用程序直接访问这些原始数据包的内存地址利用 DPDK 提供的 API 进行字段的读取、修改和校验实现高效的协议解析和封装。二、NIC与DPDK的比较DPDK相比NIC它可以最大程度的使用网卡的性能。DPDK 的设计目标是最大限度榨取网卡的性能潜力。NICDPDK不支持huge page主要是4K的page支持huge page最高可达到4G中断方式接收数据适合少量数据情况轮询的方式接收数据适合接收大数据CPU参与数据拷贝通过DMA的方式零拷贝数据所以DPDK可以使网卡性能最大而NIC不可以的原因NIC不支持huge page以4K的页利用中断的方式触发接收数据数据传输时需要CPU参与拷贝这是比不上DPDK的。普通 NIC不支持巨页主要使用 4KB 大小的标准内存页。所以操作系统在进行内存管理时产生大量的 TLB (Translation Lookaside Buffer) 缓存未命中增加内存访问开销。而DPDK 全面支持巨页最高可支持 1GB 或 2MB 的大内存页。使用巨页可以显著减少 TLB 未命中次数提高内存访问效率并减少页表查找的开销从而提升数据包处理的整体性能。