dpdk

Sending pcap file via packetgen dpdk

孤人 提交于 2021-02-11 15:02:34
问题 Sending a pcap file on port 0. I get the following error. Any fix would be appreciated! The command used is: sudo ./app/x86_64-native-linuxapp-gcc/pktgen -c 0X01 -n 1 --file-prefix=pg -w 4:00.1 -- -m 1.0 -T -P -s 0:~/Downloads/bigFlows.pcap 回答1: There are 2 obvious reasons for the failure. Number of CPU cores for pktgen to work is 1 + number of ports in use you have extra argument in comamnd executed in pktgen. Checking the link, it show the command used is sudo ./app/x86_64-native-linuxapp

DPDK的基本原理、学习路线总结

て烟熏妆下的殇ゞ 提交于 2021-01-30 09:32:04
一、DPDK原理 网络设备(路由器、交换机、媒体网关、SBC、PS网关等)需要在瞬间进行大量的报文收发,因此在传统的网络设备上,往往能够看到专门的NP(Network Process)处理器,有的用FPGA,有的用ASIC。这些专用器件通过内置的硬件电路(或通过编程形成的硬件电路)高效转发报文,只有需要对报文进行深度处理的时候才需要CPU干涉。 但在公有云、NFV等应用场景下,基础设施以CPU为运算核心,往往不具备专用的NP处理器,操作系统也以通用Linux为主,网络数据包的收发处理路径如下图所示: 在虚拟化环境中,路径则会更长: 由于包处理任务存在内核态与用户态的切换,以及多次的内存拷贝,系统消耗变大,以CPU为核心的系统存在很大的处理瓶颈。为了提升在通用服务器(COTS)的数据包处理效能,Intel推出了服务于IA(Intel Architecture)系统的DPDK技术。 DPDK是Data Plane Development Kit的缩写。简单说,DPDK应用程序运行在操作系统的User Space,利用自身提供的数据面库进行收发包处理,绕过了Linux内核态协议栈,以提升报文处理效率。 DPDK是一组lib库和工具包的集合。最简单的架构描述如下图所示: 上图蓝色部分是DPDK的主要组件(更全面更权威的DPDK架构可以参考Intel官网),简单解释一下: PMD:Pool

DPDK Hello world : error allocating rte services array in custom Linux

半世苍凉 提交于 2021-01-29 08:01:25
问题 This is regarding Helloworld program in DPDK in custom linux running with VM player. I have installed DPDK19.11 in a Ubuntu VM and tried Hello world program. I have also allocated hugepages and mounted in /mnt/huge. It's working fine. The NIC driver is e1000. Then I installed DPDK 19.11 using the same steps in a custom Linux distribution. It was not working well. I noticed that NIC driver info is mentioned as PCNET32 from AMD(somewhere in custom Linux creation this might be set). Hence I have

Programming FPGA with DPDK

假如想象 提交于 2021-01-29 06:46:58
问题 I'm facing a problem: there is a need to create a simple firewall to cut unwanted packets directly on FPGA. Basically the idea is to have a shared table with rules. This table is meant to be accessed from FPGA to check whether to pass a packet or not and it's populated by an app from userspace. I've heard of DPDK project that can handle packet processing. But I couldn't find any info how to make it work on FPGA. Is it possible? Are there any recommendations on solving the problem? 回答1: DPDK

DPDK: HW offloaded calculation of UDP checksum not working

蹲街弑〆低调 提交于 2021-01-25 07:19:26
问题 I am working with DPDK version 18.11.8 stable on Linux with an Intel X722 NIC. My app works fine if I calculate IP and UDP checksums in software but I get a segmentation fault if I calculate in hardware. Here is my code: local_port_conf.txmode.offloads = local_port_conf.txmode.offloads | DEV_TX_OFFLOAD_IPV4_CKSUM | DEV_TX_OFFLOAD_UDP_CKSUM; mb->ol_flags |= PKT_TX_IPV4 | PKT_TX_IP_CKSUM | PKT_TX_UDP_CKSUM; mb->l2_len = sizeof(struct ether_hdr); mb->l3_len = sizeof(struct ipv4_hdr); mb->l4_len

Linux性能优化(九)——Kernel Bypass

[亡魂溺海] 提交于 2021-01-18 10:24:56
一、Linux内核协议栈性能瓶颈 在x86体系结构中,接收数据包的传统方式是CPU中断方式,即网卡驱动接收到数据包后通过中断通知CPU处理,然后由CPU拷贝数据并交给内核协议栈。在数据量大时,CPU中断方式会产生大量 CPU中断,导致CPU负载较高。 (1)硬件中断导致的线程、进程切换 硬件中断请求会抢占优先级较低的软件中断,频繁到达的硬件中断和软中断意味着频繁的线程切换,随着而来的就是运行模式切换、上下文切换、线程调度器负载、高速缓存缺失(Cache Missing)、多核缓存共享数据同步、竞争锁等一系列的CPU性能损耗。 (2)内存拷贝 网卡驱动位于内核态,网络驱动接收到数据包后会经过内核协议栈的处理,然后再拷贝到用户态的应用层缓冲区.从内核态到用户态的数据拷贝是耗时操作,数据拷贝的时间会占数据包处理流程时间的50%以上。 (3)多处理器平台CPU漂移 一个数据包可能中断在CPU0,内核态处理在CPU1,用户态处理在 CPU2,跨多个物理核(Core)处理会导致大量的 CPU Cache命中缺失,造成局部性失效。对于NUMA架构,还会出现跨NUMA节点的内存访问,极大地影响CPU性能。 (4)缓存失效 传统服务器大多采用页式虚拟存储器,内存页默认为4K的小页,在存储空间较大的处理机上会存在大量的页面映射项。同时由于TLB缓存空间有限,最终导致TLB快表的映射项频繁变更

Linux内存、Swap、Cache、Buffer详细解析

旧巷老猫 提交于 2021-01-08 07:51:32
作者:CircleBlog 链接:https://my.oschina.net/circleblog/blog/715711 1. 通过free命令看Linux内存 total:总内存大小。 used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。 free:空闲的内存大小。 shared:进程间共享内存(一般不会用,可以忽略)。 buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。 cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。 -/+ buffers/cache看做两部分: -buffers/cache:正在使用的内存大小(注意不是used部分,因为buffers和cached并不是正在使用的,组织和人民需要是它们是可以释放的),其值=used-buffers-cached。 +buffers/cache:可用的内存大小(同理也不是free表示的部分),其值=free+buffers+cached。 Swap:硬盘上交换分区的使用大小。 设计的目的就是当上面提到的+buffers/cache表示的可用内存都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘,从而把磁盘的部分空间当做虚拟内存来使用。 2. Buffer和Cache介绍 Cache(缓存)

How to compute the queue id if I can compute the RSS hash with Software implementation(rte_softrss)?

不打扰是莪最后的温柔 提交于 2021-01-05 08:55:02
问题 My NIC is Intel I210 and driver is e1000. DPDK version is latest 19.11.5. I'm trying to do following work: compute RSS hash by software (it should be save with mbuf->hash.rss); infer the queue id based on the computed hash(it should be save with the real received queue id) My question is how to infer the queue id based on the hash. 回答1: For any physical NIC in DPDK the RSS value is calculated by ASIC before injecting the packets into final queue destination. This information is available once

How to compute the queue id if I can compute the RSS hash with Software implementation(rte_softrss)?

陌路散爱 提交于 2021-01-05 08:54:55
问题 My NIC is Intel I210 and driver is e1000. DPDK version is latest 19.11.5. I'm trying to do following work: compute RSS hash by software (it should be save with mbuf->hash.rss); infer the queue id based on the computed hash(it should be save with the real received queue id) My question is how to infer the queue id based on the hash. 回答1: For any physical NIC in DPDK the RSS value is calculated by ASIC before injecting the packets into final queue destination. This information is available once

OpenVSwitch 硬件加速浅谈

▼魔方 西西 提交于 2020-12-25 03:14:53
阅读本文大概需要 8 分钟。 本文转载自公众号: SDNLAB,推荐大家关注。 作者简介: 肖宏辉,毕业于中科院研究生院,思科认证网络互连专家(CCIE),8年的工作经验,其中6年云计算开发经验,关注网络,OpenStack,SDN,NFV等技术,OpenStack和ONAP开源社区活跃开发者。本文所有观点仅代表作者个人观点,与作者现在或者之前所在的公司无关。 现代的虚拟化技术使得开发和部署高级网络服务变得更加简单方便。基于虚拟化的网络服务,具有多样性,低成本,易集成,易管理,低持有成本等优点。而虚拟交换机已经成为了一个高度虚拟化环境不可缺少的一部分。OpenVSwitch是所有虚机交换机中的佼佼者,广泛被各种SDN方案采用。 OpenVSwitch kernel datapath OpenVSwitch是一个实现了OpenFlow的虚拟交换机,它由多个模块组成。主要有位于用户空间的ovsdb-server和ovs-vswitchd进程,和位于内核空间的OVS datapath组成。在一个SDN架构中,Controller将各种网络拓扑,网络功能转换成OVS的数据和OpenFlow规则,分别下发给ovsdb-server和ovs-vswitchd进程,OpenFlow规则可以通过ovs-ofctl dump-flows查看。 网络数据的转发,都是由位于内核空间的OVS