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

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

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

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

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

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

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

8 月 31 日
阅读 3 分钟
220
获取每个 DMA 设备的名称 {代码...} 配置 DMA 设备 {代码...} 执行 DMA 传输 {代码...} main {代码...}

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

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

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

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

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

8 月 31 日
阅读 8 分钟
209
客户端: {代码...} 服务端 {代码...}

dpdk--加解密数据结构

8 月 31 日
阅读 4 分钟
195
对称加密算法(Symmetric Ciphers):AES-CBCAES-CTRAES-GCMAES-XTS3DES-CBC3DES-CTRChaCha20

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

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

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

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

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

8 月 31 日
阅读 6 分钟
287
以太网帧结构 {代码...} 在 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使用(事件驱动)

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

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

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

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

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

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

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

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

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

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

8 月 30 日
阅读 2 分钟
220
大量练习: {代码...}

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

8 月 30 日
阅读 5 分钟
276
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--常用的数据结构

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

dpdk--环境部署

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

网桥/ 网关/Vlan --rust

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

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

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

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

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

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

8 月 26 日
阅读 1 分钟
155
安装 iptables 的 TEE 模块: {代码...} 实现双向镜像: {代码...} {代码...}

vpn里面的加密处理--rust

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

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

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

内网穿透技术-- rust

8 月 26 日
阅读 7 分钟
158
技术实现: A请求B服务,B服务在自己家里部署。 (A是不能直接连接B的) 此时,需要有一个角色C, 部署在公网上。B请求C , 然后维持一个会话。 A请求C,C在缓存的会话中,找到B,转发流量即可。

网络协议

8 月 19 日
阅读 1 分钟
149
网卡入门[链接]通过openvpn分析tun实现隧道的数据流程通过openvpn分析tun实现隧道的数据流程

网络协议--vpn

8 月 18 日
阅读 10 分钟
187
基本原理VPN的基本原理是通过加密和隧道技术在公共网络(如互联网)上创建一个虚拟的专用网络。这些技术确保了数据的保密性、完整性和真实性。加密:VPN加密传输的数据,使其在公共网络上不可读。隧道:VPN将数据打包,通过一个称为隧道的加密通道传输,保护数据免受窥探和篡改。工作流程以下是VPN的基本工作流程:客户...