随笔分类 - dpdk&vpp
传统引擎性能已经遇到瓶颈,还是来玩玩dpdk&vpp吧
摘要:1.用户空间轮询 减少中断带来开销; 减少系统调用带来开销; 零拷贝减少内存拷贝的时间; 轮询 Polling,busy looping 提供了I/O批量处理的可能性; 避免中断性能瓶颈是DPDK提升数据包处理速度的关键之一; 2.多核CPU性能优化 RSS硬件队列; CPU独占:独占CPU资源,减
阅读全文
摘要:FNAT在两个接口之间进行转发。假设一个是WAN接口(dpdk1),另一个是LAN接口(dpdk0) 配置包括: (1)用于DPDK局域网(LAN)/广域网(WAN)的ip地址和路由。 (2)WAN接口上的VIP(dpdk1)。 (3)FNAT服务(vip:vport)及相关RS(Real Serv
阅读全文
摘要:tcp新建连接调度 /** * set @verdict if failed to schedule * 新建的连接由conn_sched进行调度,对于tcp服务调用tcp_conn_sched,在__dp_vs_in中被调用 * 返回值: * EDPVS_OK: 继续lvs处理 * 其余: 结束l
阅读全文
摘要:DPVS的数据流量从以流入流出划分为:inbond outbond; outbond:指数据包从内网服务器 -> DPVS -> 外网服务器(如 qq.com ) inbond:指数据包从外网服务器(如qq.com) -> DPVS -> 内网服务器 outbond 方向数据包处理流程 内网服务器需
阅读全文
摘要:arp 协议: 接口link down >当然删除arp表项的时候需要注意静态路由不能删除,已经被标示为invalid 不可用状态也不要删除, 其实不可用状态由不可用状态逻辑来维护 接口ip变化 >首先要发送免费arp ;更新arp 缓存,比如以前在这个接口上学习的arp 是否还能为valid状态,
阅读全文
摘要:转载自 DPDK 完全内核旁路技术实现 DPDK 技术分为基本技术和优化技术两类。其中,前者指标准的 DPDK 数据平面开发包和 I/O 转发实现技术。 DPDK 实现原理 内核协议栈(左边):网卡 -> 驱动 -> 协议栈 -> Socket 接口 -> 业务。 DPDK 基于 UIO(User
阅读全文
摘要:转载自 Memory Access Address Alignment 在内存中存取一个变量最高效的方式是将其放在一个可以被它的长度整除的地址上。 (void *)&variable % sizeof(variable) == 0 所谓的按某个长度对齐就是这个意思。GCC编译器会自动帮我们处理这些事
阅读全文
摘要:dpdk框架中,调用 rte_eal_init对端口的初始化操作已经基本完成,后面则是根据用户的设置,配置端口的收发包队列以及最终start端口,开始收发包: a、rte_eth_dev_configure()函数完成端口配置:队列数配置、RSS、offload等等设置; b、rte_eth_rx_
阅读全文
摘要:PMD是Poll Mode Driver的缩写,即基于用户态的轮询机制的驱动 在不考虑vfio的情况下,PMD的结构图如下 虽然PMD是在用户态实现设备驱动,但还是依赖于内核提供的策略。其中uio模块,是内核提供的用户态驱动框架,而igb_uio是DPDK kit中拥有与uio交互,bind指定网卡
阅读全文
摘要:pci设备的基地址 上图为pci配置空间的分布图,在图中,0x0010 ~ 0x0028这24个字节中,分布着6个PCI BAR(base address register),也就是最最重要的“基地址”,那这里有人可能会想问“这个图和我们有关系么?这个图中的空间在哪?我们该怎么解析?”,答案是“无关
阅读全文
摘要:通常这些非标准设备的驱动被实现为字符驱动。这些驱动使用了很多内核内部函数和宏。而这些内部函数和宏是变化的。这样驱动的编写者必须编写一个完全的内核驱动,而且一直维护这些代码。 而且这些驱动进不了主内核源码。于是就出现了用户空间I/O框架(Userspace I/O framework)。 UIO 怎样
阅读全文
摘要:CAS-Compare & Set,或是 Compare & Swap 现在cpu 都支持cas原子操作了, 比如x86下 对应的是CMPXCHG汇编指令有了它 我们来看下各种无锁队列数据结构 这个操作用C语言来描述就是下面这个样子:(代码来自Wikipedia的Compare And Swap)看
阅读全文
摘要:一个网络报文从网卡接收到被应用处理,中间主要需要经历两个阶段: 阶段一:网卡通过其DMA硬件将收到的报文写入到收包队列中(入队)阶段二:应用从收包队列中读取报文(出队)由于目前正在使用vpp/dpdk 优化waf引擎的工作,所以就看看ixgbe网卡在dpdk框架下是怎么工作的。下面分别介绍一下 收包
阅读全文
摘要:编译安装: make install-dep make build 编译 vpp 查看 pci 网卡 id : lshw -class network -businfo DPDK hugepage设置 echo 1024 > /sys/kernel/mm/hugepages/hugepages-20
阅读全文