Linux经典的几款收包引擎

本文介绍了Linux下的四款高效收包引擎:libpcap及其改进版libpcap-mmap,PF_RING以及DPDK。这些引擎通过减少内存拷贝、使用UIO、PMD、HugePages等技术提高性能。此外,还提到了XDP(eXpress Data Path),一种在驱动层进行数据包预处理的技术,具备无需额外库、支持多种网络模式等优点。
摘要由CSDN通过智能技术生成

本文列举四个比较经典的 Linux 收包引擎,如果还有其他你觉得ok的可以留言。这四个分别是: Linux学习

  • libpcap/libpcap-mmap
  • PF_RING
  • DPDK
  • xdp

libpcap

libpcap的包捕获机制是在数据链路层增加一个旁路处理,不干扰系统自身的网路协议栈的处理,对发送和接收的数据包通过Linux内核做过滤和缓冲处理,最后直接传递给上层应用程序。

  1. 数据包到达网卡设备。

  2. 网卡设备依据配置进行DMA操作。( 「第1次拷贝」 :网卡寄存器->内核为网卡分配的缓冲区ring buffer)

  3. 网卡发送中断,唤醒处理器。

  4. 驱动软件从ring buffer中读取,填充内核skbuff结构( 「第2次拷贝」 :内核网卡缓冲区ring buffer->内核专用数据结构skbuff)

  5. 接着调用netif_receive_skb函数:

    • 5.1 如果有抓包程序,由网络分接口进入BPF过滤器,将规则匹配的报文拷贝到系统内核缓存 ( 「第3次拷贝」 )。BPF为每一个要求服务的抓包程序关联一个filter和两个buffer。BPF分配buffer 且通常情况下它的额度是4KB the store buffer 被使用来接收来自适配器的数据;th
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值