一: 多队列及中断信息收集 [root@T185 ~]# ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: RX Mini: RX Jumbo: TX: Current hardware settings: RX: RX Mini: RX Jumbo: TX: [root@T185 ~]# ls /sys/class/net/eth0/queues/ rx- rx- rx- rx- rx- rx- rx- rx- rx…
三层包测试 发包方式:192.168.20.205 发包工具:pktgen 发包网卡:i350 收包设备:1922.168.20.185 CPU:Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz 收包方式:网卡ixgeb驱动,单队列,promisc计数 收包网卡: 82599EB 传输链路:千兆RJ45网线直连 发包方法: Pktgen:/> set 0 size 500 Pktgen:/> set 0 count 1000000 Pktgen:/> se…
前言:DPDK收发包是基础核心模块,从网卡收到包到驱动把包拷贝到系统内存中,再到系统对这块数据包的内存管理,由于在处理过程中实现了零拷贝,数据包从接收到发送始终只有一份,对这个报文的管理在前面的mempool内存池中有过介绍.这篇主要介绍收发包的过程. 一.收发包分解 收发包过程大致可以分为2个部分 1.收发包的配置和初始化,主要是配置收发队列等. 2.数据包的获取和发送,主要是从队列中获取到数据包或者把数据包放到队列中. 二.收发包的配置和初始化 收发包的配置 收发包的配置最主要的工作就是配置…
一个网络报文从网卡接收到被应用处理,中间主要需要经历两个阶段: 阶段一:网卡通过其DMA硬件将收到的报文写入到收包队列中(入队)阶段二:应用从收包队列中读取报文(出队)由于目前正在使用vpp/dpdk 优化waf引擎的工作,所以就看看ixgbe网卡在dpdk框架下是怎么工作的.下面分别介绍一下 收包队列结构 初始化(使能) 收包流程 收发包的配置和初始化,主要是配置收发队列等. 收发包的配置最主要的工作就是配置网卡的收发队列,设置DMA拷贝数据包的地址等.使用数据包时,只要去对应队列取出指定地址…
本文将介绍网络连接建立的过程.收发包流程,以及其中应用层.tcp层.ip层.设备层和驱动层各层发挥的作用. 应用层 对于使用socket进行网络连接的服务器端程序,我们会先调用socket函数创建一个套接字: fd = socket(AF_INET, SOCK_STREAM, ); 以上指定了连接协议,socket调用返回一个文件句柄,与socket文件对应的inode不在磁盘上,而是存在于内存. 之后我们指定监听的端口.允许与哪些ip建立连接,并调用bind完成端口绑定: server_add…
转自:https://blog.csdn.net/crazycoder8848/article/details/46333761 版权声明:本文没有任何版权限制,任何人可以以任何方式使用本文. https://blog.csdn.net/crazycoder8848/article/details/46333761 本文通过学习RealTek8169/8168/8101网卡的驱动代码(drivers/net/r8169.c),梳理一下Linux下网卡的收包过程. 在下水平相当有限,有不当之处,还…
下午验证一个高流量发包问题时,发现了一个值得记录的问题:socket的收发buffer尺寸是会影响收发包的效率的,高流量通讯时,若socket的收发buffer尺寸过小会一定程度降低收发包效率. 自己先分别获取了一下Windows/Linux系统中默认的收发包尺寸值在x86 Win7环境里实际程序验证结果为 $ ./sockopt.exe UDP socket options: receive buffer: 0x2000 send buffer: 0x2000 TCP socket optio…
交换芯片支持:报文.计数.表项3种DMA类型,其中报文DMA包括系统从芯片到接收报文或发送报文到交换芯片,计数DMA用来从片上获取统计计数,表项DMA功能分为SLAM DMA(系统内存DMA到片上交换芯片表项内)和TABLE DMA(从芯片的表项内获取内容DMA到系统内存),是ram和交换芯片之间的两个方向上的操作. 交换芯片包含的每一个CMIC控制器都有4个DMA通道,其中CMIC1和2控制器只在内部使用,只有CMIC0控制器的4个DMA通道可以被用来收发报文,CMIC0内的3个DMA通道用于…
Intel X710网卡VxLAN offload性能测试 1.  测试环境参数: 交换机:盛科E580 服务器: Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz  384G RAM Intel 800G SSD, Intel X710 万兆网卡 宿主机OS: RHEL 7.1:  kernel: 3.10.0 Libvirt: 1.2.17 QEMU: 1.5.3 Open vSwitch: 2.5.0 Ubuntu 16.04:   kernel:4.4.…
参考: [development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存 完成了以上内容之后, 下一步需要做的是挂载, 大页内存只有被挂载了之后,才能被应用程序使用. 挂载方法如下: 参考dpdk文档:  http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html mkdir /mnt/huge mount -t hugetlbfs nodev /mnt/huge 如果是有1G的大页, 需要给定默认参数 pagesize=1…
DebugLog 可以用来查看收发包的情况,比较有意思,现特意记录下来: Sample: import urllib2 httpHandler = urllib2.HTTPHandler(debuglevel=1) httpsHandler = urllib2.HTTPSHandler(debuglevel=1) opener = urllib2.build_opener(httpHandler, httpsHandler) urllib2.install_opener(opener) resp…
花了几天看了一下ppp/pppoe有关的东西,画了一下用户态pppoe收发包的示意图.…
ref: Dpdk programmer’s guide 1.  概述 dpdk不仅提供针对物理和虚拟网卡的pmd驱动(Poll Mode Drivers),还提供两个纯软件的pmd驱动,libpcap pmd就是其中之一.Libpcap pmd使用libpcap库读写报文,读写的源可以是文件,也可以是使用Linux内核驱动的物理网卡. 在没有或不方便配置物理网卡的机器上,使用libpcap pmd可以帮助dpdk应用开发人员进行功能性测试或代码调试:更重要的是,EAL(Environment…
参考博客 Pktgen概述 Pktgen,(Packet Gen-erator)是一个基于DPDK的软件框架,发包速率可达线速. 提供运行时管理,端口实时测量. 可以控制 UDP, TCP, ARP, ICMP, GRE, MPLS and Queue-in-Queue等包. 可以通过TCP进行远程控制. Pktgen官网 安装使用过程 版本:Ubuntu 16.04 DPDKL 18.02 cpu配置: 安装DPDK依赖: DPDK安装依赖项合集 环境合集 安装DPDK:Quick Start…
转自:https://blog.csdn.net/xy010902100449/article/details/47362787 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xy010902100449/article/details/47362787函数接口设备初始化函数 网络设备驱动在 Linux 内核中是以内核模块的形式存在的,对应于模块的初始化,需要提供一个初始化函数来初始化网络设备的硬件寄存器.配置 DMA 以及初始化相关内核变量等…
这个事来自dpdk, 所以, 先参考. http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html 当前, 假设你已经读过上边内容, 知道大页内存时候, dpdk是什么,以及怎样使用. 我们已经知道, 为系统分配大页内存有两种大小: 2M 和 1G 1G的只有64位系统支持, 并且我们推荐64位的操作系统尽量使用1G的page 同时, 我们还知道配置大页内存,有两个时机 boot time 和 run time boot time的配置写在grub里,给…
发现了一个工具 dpdk-pmdinfo 但是文档介绍的很不清楚, http://dpdk.org/doc/guides/tools/pmdinfo.html 经过摸索, 这可能就是一个查询 dpdk程序都支持那些硬件设备的工具, 用法如下: [root@dpdk tools]# ./dpdk-pmdinfo.py /anthropoid/daemon/chimpanzee 其中, 参数就是你编译了dpdk进去的二进制可执行文件, (ELF文件), 注意, 点a 文件, 并不是ELF文件, 点s…
dpdk程序无法启动, 错误如下: EAL: Requesting pages of size 2MB EAL: Requesting pages of size 2MB EAL: Can only reserve pages requested Current CONFIG_RTE_MAX_MEMSEG= is not enough Please either increase it or request less amount of memory. PANIC in rte_eal_init…
1.修订单个socket的缓冲区大小:通过setsockopt使用SO_RCVBUF来设置接收缓冲区,该参数在设置的时候不会与rmem_max进行对比校验,但是如果设置的大小超过rmem_max的话,则超过rmem_max的部分不会生效:2.修订linux系统udp缓冲区大小:通过rmem_max来设置系统中udp缓存的上限,该值可通过如下方式查看:root@ubuntu:/mnt/hgfs/vm-shared/socket# cat /proc/sys/net/core/rmem_max131…
由于程序的异常退出, 内核的引用计数没有被清除(我猜的). 所以驱动不能被卸载掉, 强制也不行. 如下: [root@localhost ~]# insmod /opt/scorpion/KingKong/kmod/igb_uio.ko insmod: error inserting File exists You have new mail in /var/spool/mail/root [root@localhost ~]# rmmod /opt/scorpion/KingKong/kmod…
目录 文章目录 目录 前文列表 传统内核协议栈的数据转发性能瓶颈是什么? DPDK DPDK 基本技术 DPDK 架构 DPDK 核心组件 应用 NUMA 亲和性技术减少跨 NUMA 内存访问 应用 CPU 绑核技术减少上下文切换损耗 应用大页内存技术减少 TLB miss 应用 PMD 轮询技术减少网卡外设的硬件中断 应用 UIO 和内存池技术减少内存拷贝 应用无锁循环队列较少锁操作对 CPU 的开销 DPDK 优化技术 DPDK 性能影响因素 硬件结构的影响 OS 版本及其内核的影响 OVS…
一,ethtool命令所属的包 [root@centos8 liuhongdi]# whereis ethtool ethtool: /usr/sbin/ethtool /usr/share/man/man8/ethtool.8.gz [root@centos8 liuhongdi]# rpm -qf /usr/sbin/ethtool ethtool-5.0-2.el8.x86_64 默认情况下centos已自带了ethtool, 如果找不到此命令,可以用yum安装 [root@centos8…
作者:shane,腾讯后台开发高级工程师 QQ18年 1999年2月10日,腾讯QQ横空出世.光阴荏苒,那个在你屏幕右下角频频闪动的企鹅已经度过了18个年头.随着QQ一同成长的你,还记得它最初的摸样吗?   1999年:腾讯QQ的前身OICQ诞生,该版本具备中文网络寻呼机.公共聊天室以及传输文件功能. 1999年QQ界面 2000年,OICQ正式更名为QQ,发布视频聊天功能.QQ群和QQ秀等功能. 2003年版本,QQ发布聊天场景.捕捉屏幕.给好友播放录影及QQ炫铃等功能. 2004年,QQ新增…
先理解cache的作用CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容:否则,就 称为“ 不命中”,CPU只好去内存中调用所需的子程序或指令了.CPU不但可以直接从Cache中读出内容,也可以直接往其中写入内容.由于Cache的存取速 率相当快,使得CPU的利用率大大提高,进而使整个系统的性能得以提升. Cache的一致性就是直Cache中的数据,与对应的内存中的数据是一致的. DMA是直接操作总线地址的,这里…
pktgen: http://dpdk.org/browse/apps/pktgen-dpdk/refs/ git clone git://dpdk.org/apps/pktgen-dpdk pktgen doc:http://pktgen-dpdk.readthedocs.io/en/latest/ OS:Linux D128 3.10.0-693.el7.x86_64 OS2: Linux D129 3.10.0-327.el7.x86_64 dpdk: dpdk-stable-18.02.…
dpdk pci网卡设备的热插拔. 样例程序如下: ... ... static int driverctl(char* pci) { int pid; pid = fork(); ) { execlp("driverctl", "driverctl", "--nosave", "set-override", pci, "igb_uio", NULL); perror("driverctl set…
[前言] 使用DPDK开发的朋友应该都了解使用dpdk的fwd线程的工作模式是polling模式,即100%轮询的方式去加速网络IO,这样我们在操作系统层面上来观察目标processer会发现usage一直为100%,但是这真的是系统的真实负载么?很显然并不是,本文给出一种方法来计算dpdk的fwd线程的真实负载的方法. [场景] 使用DPDK头痛的一点就是DPDK的fwd线程工作在polling模式,会直接消耗一整个processer的计算资源,有的时候为了性能考虑,往往还会给当前proces…
接续前节:[dpdk] 熟悉SDK与初步使用 (一)(qemu搭建实验环境) 程序逻辑: 运行参数: 关键API: 入口函数: int rte_eal_init(int argc, char **argv) 内存池函数: rte_pktmbuf_pool_create.  它是函数 rte_mempool_create 的一个封装. struct rte_mempool * rte_pktmbuf_pool_create(const char *name, unsigned n, unsigne…
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 对我而言,这是一个新的领域,很有意思. 一.解释名词: NFV(Network Function Virtualization):通过使用x86等通用性硬件以及虚拟化技术,来承载很多功能的软件处理.从而降低网络昂贵的设备成本. 这项技术的目的在于软硬件的解耦合,让网络设备功能不再依赖于底层硬件,为啥呢,因为硬件研发周期长,贵啊. DPDK(Intel Data Plane Developme…
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由Willko发表于云+社区专栏 一.网络IO的处境和趋势 从我们用户的使用就可以感受到网速一直在提升,而网络技术的发展也从1GE/10GE/25GE/40GE/100GE的演变,从中可以得出单机的网络IO能力必须跟上时代的发展. 1. 传统的电信领域 IP层及以下,例如路由器.交换机.防火墙.基站等设备都是采用硬件解决方案.基于专用网络处理器(NP),有基于FPGA,更有基于ASIC的.但是基于硬件的劣势非常明显,发生Bug不易修…