dpvs源码分析03--调度前准备工作分析

2024-09-02
阅读 4 分钟
480
模块之一: dpvs_scheduler_init负责任务调度和负载均衡的初始化和终止。调度器管理不同处理器核心上的任务分配和执行初始化一个二维数组用来维护全局的任务: {代码...} 几种角色: {代码...} 任务类型: {代码...} 每一个任务的具体结构 {代码...} dpvs_lcore_job_register:添加一个任务到全局数据结构当中。 dpvs_lc...

dpvs源码分析02

2024-09-01
阅读 5 分钟
529
最熟悉的还是IP协议。 找到入手点。再去延伸。src/main:系统的入口modules_init(); 这里用来加载模块,这里不能忽略。 各种模块的初始化。dpdk的主从启动?模块之一:inet (初始化和管理 IP 协议栈,处理 IPv4 和 IPv6 数据包的路由和转发) {代码...} neigh_init函数(arp相关)ARP(Address Resolution Protocol) {...

dpvs源码分析01

2024-09-01
阅读 4 分钟
526
Packet Processing(数据包处理)描述Packet Reception:通过 DPDK 从网络接口接收数据包。Packet Parsing:解析数据包,提取 L2/L3/L4 头部信息。Packet Classification:根据数据包类型进行分类(如 TCP、UDP、ICMP 等)。Packet Dispatch:将数据包分发到相应的处理模块(如 NAT、Load Balancing 等)。

dpdk应用场景系列17--主从启动

2024-08-31
阅读 2 分钟
411
主核(Master Core)数量建议通常情况下,一个主核就足够了。主核的主要任务是初始化和管理系统,分配和监控从核的任务。由于这些任务通常不需要大量的计算资源,一个主核可以胜任。

dpdk应用场景系列16--ip_fragmentation (分片与重组)

2024-08-31
阅读 6 分钟
660
IP 分片当一个 IP 数据包的大小超过了网络的 MTU(最大传输单元)时,数据包需要被拆分成多个较小的片段进行传输。每个片段都包含一部分原始数据包的内容,并且带有标识信息,用于在接收端进行重组

dpdk应用场景系列15--bpf (整合)

2024-08-31
阅读 3 分钟
725
BPF 程序通常以字节码的形式存在,可以通过编译器生成。以下是一个简单的 BPF 程序,展示了如何定义一个过滤 IPv4 数据包的 BPF 程序。

dpdk应用场景系列14--dma( 直接访问内存而不需要经过 CPU 参与的技术)

2024-08-31
阅读 3 分钟
530
获取每个 DMA 设备的名称 {代码...} 配置 DMA 设备 {代码...} 执行 DMA 传输 {代码...} main {代码...}

dpdk应用场景系列12--l3fwd-acl(三层数据包转发+过滤)

2024-08-31
阅读 6 分钟
806
访问控制列表(ACL)用于根据预定义的规则对数据包进行过滤和分类。ACL 数据结构主要包括 ACL 参数、规则和上下文等。以下是 ACL 数据结构的详细解释,并附有中文注解。

dpdk应用场景系列11--l3fwd(三层数据包转发)

2024-08-31
阅读 5 分钟
949
路由表管理: l3fwd 包含一个路由表,用于存储网络前缀和相应的下一跳信息。应用程序在初始化时加载路由表,并在运行时根据路由表进行转发决策。

dpdk应用场景系列10--socket 使用

2024-08-31
阅读 8 分钟
470
客户端: {代码...} 服务端 {代码...}

dpdk--加解密数据结构

2024-08-31
阅读 4 分钟
510
对称加密算法(Symmetric Ciphers):AES-CBCAES-CTRAES-GCMAES-XTS3DES-CBC3DES-CTRChaCha20

dpdk应用场景系列09--l2fwd-crypto(二层地址转发+ 加解密)

2024-08-31
阅读 9 分钟
501
以下是一个示例,展示如何配置 AES-CBC 加密算法:服务端: {代码...} 客户端: {代码...}

dpdk应用场景系列08--l2fwd-cat (二层地址转发+分类处理)

2024-08-31
阅读 12 分钟
540
l2fwd-cat 增加了对数据包分类的支持,可以根据特定的规则对数据包进行分类和处理。以下是 l2fwd-cat 的一些应用场景:高性能防火墙根据源 IP 地址、目的 IP 地址或端口号等字段对数据包进行分类,并应用相应的防火墙规则来过滤和处理数据包。 {代码...} 流量监控和统计统计不同类型流量的带宽占用情况,例如 HTTP、HTTP...

dpdk应用场景系列07--l2fwd (二层地址转发)

2024-08-31
阅读 6 分钟
828
以太网帧结构 {代码...} 在 DPDK 中,以太网头部由 rte_ether_hdr 结构表示。以下是 rte_ether_hdr 结构的定义: {代码...} rte_ether_addr 结构表示一个 MAC 地址: {代码...} 常见的 ether_type 值IPv4 (Internet Protocol version 4)ether_type 值:0x0800描述:表示以太网帧的负载是一个 IPv4 数据包。ARP (Address ...

dpdk应用场景系列06--rte_event使用(事件驱动)

2024-08-31
阅读 6 分钟
544
rte_event 是 DPDK(Data Plane Development Kit)中的一个事件驱动框架,用于处理高性能数据包处理任务。它提供了一个灵活的事件调度机制,可以在多个核心之间高效地分配和处理网络事件。

dpdk与tap的区别, 以及dpdk 收发数据包过程

2024-08-31
阅读 1 分钟
576
特点:用户态运行:DPDK 在用户态运行,避免了内核态和用户态之间的上下文切换开销。内存管理:提供高效的内存管理机制,如内存池(mempool)和环形缓冲区(ring buffer)。多核支持:利用多核处理器的并行处理能力,显著提高数据包处理性能。网卡驱动:提供一系列的网卡驱动(PMD,Poll Mode Driver),支持多种网卡硬件。

dpdk应用场景系列05--rte_flow使用(流量处理)

2024-08-30
阅读 12 分钟
1.1k
它允许用户在网卡(NIC)上配置复杂的数据包过滤和处理规则,以实现高效的数据包分类和处理。rte_flow 可以用于各种网络应用场景,如防火墙、负载均衡、流量监控等。

dpdk应用场景系列04--rte_bbdev 使用(无线通信系统中的基带处理)

2024-08-30
阅读 4 分钟
569
dpdk应用案例04rte_bbdev 主要用于无线通信系统中的基带处理,特别是前向纠错编码和解码操作。它在无线基站、核心网络设备和无线通信测试设备中有广泛的应用,通过利用硬件加速器,可以显著提高基带处理的性能,降低 CPU 负载。

dpdk应用场景系列03--rte_ring 使用(多个线程之间传递数据)

2024-08-30
阅读 3 分钟
685
多线程数据传递:在多核环境下,线程之间需要高效地传递数据,而不需要复杂的锁机制。rte_ring 提供了无锁的多生产者、多消费者队列,极大地提高了性能。

dpdk应用场景系列02--rte_pktmbuf_mtod 使用(数据填充)

2024-08-30
阅读 2 分钟
683
大量练习: {代码...}

dpdk应用场景系列01--rte_mbuf使用(网络包)

2024-08-30
阅读 5 分钟
869
CPU 和 Core:每个 NUMA 节点包含一个或多个 CPU,每个 CPU 又包含多个核心(Core)。例如,NUMA Node 0 包含 CPU 0 和 CPU 1,每个 CPU 又包含多个核心(Core 0 和 Core 1)。内存:每个 NUMA 节点有其独立的内存。NUMA 节点内的 CPU 访问本地内存的速度通常比访问其他 NUMA 节点的内存快。网卡(NIC):每个 NUMA 节点...

dpdk应用场景系列00--常用的数据结构

2024-08-30
阅读 3 分钟
537
DPDK 中用于存储网络数据包的基础数据结构。它包含了数据包的元数据(如长度、头部信息)以及实际的数据负载。常用字段:ata_len:数据部分的长度。pkt_len:整个数据包的长度。buf_addr:指向数据缓冲区的指针。next:指向下一个 rte_mbuf 的指针,用于支持多段数据包。

dpdk--环境部署

2024-08-29
阅读 4 分钟
601
vfio-pci 驱动程序:设备直通:允许用户空间程序直接访问设备。内存隔离:通过 IOMMU 提供内存隔离,确保设备只能访问被授权的内存区域。

网桥/ 网关/Vlan --rust

2024-08-27
阅读 5 分钟
559
转发数据帧学习和记忆MAC地址: 网桥具有“学习”功能,它可以通过查看接收到的数据帧的源MAC地址来学到哪些设备(或接口)连接在其各个端口上,并将这些信息存储在MAC地址表中。

tap(虚拟机之间相互连接)-- rust

2024-08-26
阅读 1 分钟
508
在 macOS 上启动两个带有不同网段配置的虚拟机(通过桥接设备):初始化桥接和TAP设备: {代码...} 启动第一个虚拟机连接到tap0: {代码...} 启动第二个虚拟机连接到tap1: {代码...} 在虚拟机中配置 IP 地址: {代码...} 另外,为了让不同网段流量能够互通,可以在主机或虚拟机中添加相应的路由。 {代码...}

tap使用场景(流量重放)--rust

2024-08-26
阅读 1 分钟
368
直接分析 capture.pcap 文件只能看到原始捕获的数据,但不会经过你当前运行的网络栈、网络设备或应用程序。通过 TAP 设备重放流量可以模拟真实环境中的网络流量,从而测试和验证当前系统或网络在面对这些流量时的表现。

tap 使用场景(流量镜像) -- rust

2024-08-26
阅读 1 分钟
396
安装 iptables 的 TEE 模块: {代码...} 实现双向镜像: {代码...} {代码...}

vpn里面的加密处理--rust

2024-08-26
阅读 3 分钟
608
ChaCha20-Poly1305 是一个组合了流加密算法(ChaCha20)和消息认证码(Poly1305)的加密方案ChaCha20 是一种流加密算法,设计用于效率高且安全性强的加密。它是 Salsa20 的一个变种,通过更好的设计提高了性能和安全性。工作原理:ChaCha20 使用一个 256 位的对称密钥和一个 96 位的 nonce。通过这些,ChaCha20 会生成一...

最简单vpn(tap/tun)--rust

2024-08-26
阅读 7 分钟
1.4k
TAP (Network TAP):工作在数据链路层(第2层)。TUN (Network TUNnel):工作在网络层(第3层)。传输加密的 IP 数据包,从而实现点到点的加密通信。虚拟的物理网络接口,用户态可以直接写数据。 数据包可以被操作系统协议栈进一步处理,就像该数据包是通过一个物理网络接口接收到的一样。