采集器采集源(IntelDataPlane-s第二步Linux系统开发)
优采云 发布时间: 2022-04-03 00:12采集器采集源(IntelDataPlane-s第二步Linux系统开发)
DPDK的全称是Intel Data Plane Development Kit。它是英特尔提供的数据平面开发工具集。它为 Intel 架构 (IA) 处理器架构下的用户空间中的高效数据包处理提供库函数和驱动程序支持。通俗地说,它是一个用于加速分组数据处理的软件库。
与 Linux 系统不同,DPDK 是为通用目的而设计的,但侧重于网络应用程序中数据包的高性能处理。具体来说,DPDK应用运行在用户空间,利用自身提供的数据平面库进行数据包的收发,绕过Linux内核协议栈处理数据包。它不是用户可以直接构建应用程序的完整产品,也不收录需要与控制层(包括内核和协议栈)交互的工具。
详细教程资料关注+后台私信;数据; 两字可免费领取视频+文档+各大工厂面试题内容包括:C/C++、Linux、golang、Nginx、ZeroMQ、MySQL、Redis、fastdfs、MongoDB、ZK、Streaming、CDN、P2P、K8S、 Docker、TCP/IP、Coroutines、DPDK、Embedded等。与原生Linux(Native Linux)相比,使用Intel DPDK技术可以大大提升IPV4的转发性能,让用户在迁移包处理应用时获得更好的性能(从基于 NPU 的硬件到基于 Intel x86 的平台)。成本和性能优势。同时可以使用统一的平台部署不同的服务,如应用处理、控制处理和报文处理服务
dpdk网卡绑定
第一步:停止服务
转到 cd /opt/../opt/dpdk/mod
执行 ./dpdk-devbind.py -s
Network devices using DPDK-compatible driver
9000:05:00.0 'I350 Gigabit Network Connection' drv=igb_uio unused=igb
0000: 01: 00. 0 'NetXtreme BCM5720 Gigabit Ethernet PCIe' ifeeml drv=tg3 unused=igb_ uio' Active*0000:01:00.1 'NetXtreme BCM5720 Gigabit Ethernet PCIe' if=em2 drv=tg3 unused=igb_uio0000:02:00.0 'NetXtreme BCM5720 Gigabit Ethernet PCIe' if=em3 drv=tg3 unused=igb_uio0000: 02:00. 1 'NetXtreme BCM5720 Giaabit Fthernet PCTe' ifeem4 drv=ta3 unusedsiab uio *Active0000:05:00.1'I350 Gigabit Network Connection' if=p5p2 drv=igb unused=igb_uio
0000:05:00.2 'I350 Gigabit Network Connection' if=p5p3 drv=igb unused=igb_uio0000:05:00.3 'I350 Gigabit Network Connection' if=p5p4 drv=igb unused=igb unused=igd-uio
第二步:进入need_bind_nic.sh文件进行编辑
然后保存接口名完成退出
第三步:
执行绑定网卡命令
./dpdk-devbind.py -b igb p5p1
./dpdk-devbind.py -b igb p5p2
./dpdk-devbind.py -b igb p5p3
./dpdk-devbind.py -b igb p5p4
执行后查看网卡绑定信息
./dpdk-devbind.py -s
执行 ./init_env.sh 命令
./dpdk-devbind.py -s 查看网卡绑定
第四步:
然后重启服务器,重启服务
突发接收和发送
发送原理图
每个(描述,条目)作为一对,对应一个mbuf。如果一条消息需要存储在多个mbuf中,它会占用多个(描述、条目)组合。
每个 tx 条目都有一个指向此消息的 EOP mbuf 的最后一个 id。条目的下一个 id 总是指向它旁边的下一个条目。
每个数据描述都存储了消息的属性,以及mbuf中的缓冲区addr(物理地址,通过iova在mbuf中获得)。
将突发消息放入 tx ring/sw 环后,通知 DMA 通过寄存器从描述中获取消息信息进行实际传输。
dpdk 的混杂模式
混杂模式是指主机可以接受所有经过它的数据流,无论数据流的目的地址是否是它,它都会接受数据包。也就是说,在混杂模式下,网卡会接收所有发给它的数据包。在这种情况下,可以接收来自同一集线器 LAN 的所有数据。
在交换机组网时代,交换机内部计算出目的主机在哪个端口,然后只向那个端口发送数据包,这样既减少了网络流量,又提高了安全性。
交换网络环境中的网络嗅探依赖于端口镜像。采集 端口的主机从源端口获取所有数据包。有两个问题: 1) 是否将目的端口主机网卡设置为混杂模式?2)如何采集所有数据包进出(入站和出站)到源端口?可以实现Wireshark,其代码可以参考!通过伪装成路由,数据包可以通过机器进行抓包。
总结
在端口镜像模式下,交换机的所有端口都可以转移到一个端口来抓包。
如果不使用端口镜像,则只能监控一个端口的流量。
详细教程资料关注+后台私信;数据; 两字可免费领取视频+文档+各大工厂面试题内容包括:C/C++、Linux、golang、Nginx、ZeroMQ、MySQL、Redis、fastdfs、MongoDB、ZK、Streaming、CDN、P2P、K8S、 Docker、TCP/IP、协程、DPDK、嵌入式等。