Linux高性能网络详解:从DPDK、RDMA到XDP

Linux高性能网络详解:从DPDK、RDMA到XDP

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

编辑推荐

源自作者十多年高性能网络设备领域的开发经验总结细致剖析Linux高性能网络主流解决方案以及开发细节涵盖DPDK和RDMA等当下热点技术,同时涉及前沿的XDP技术源码级教学,图示软硬件交互流程,实现方法翔实齐全,可直接用于业务实践,提升高性能网络开发能力本书主要内容:第1部分,背景知识介绍网络基本概念、计算机硬件构成、Linux操作系统、软硬件之间的信息传递方式、内核协议栈方案及其存在的问题,并详细讲解了开源网卡解决方案Corundum的实现机制。第2部分,DPDK介绍DPDK技术,具体内容包括DPDK简介、内存管理、UIO机制、基本使用方法等,并测试和分析DPDK的性能,以及为Corundum编写DPDK驱动程序。第3部分,RDMA介绍RDMA技术,内容包括其软件架构、基本元素、基本操作类型及其配套机制、传输服务、RDMA主要元素的实现等。第4部分,XDP介绍XDP的基本概念、实现机制、使用方法,以及如何在Linux设备驱动中支持XDP功能。

内容简介

《Linux高性能网络详解:从DPDK、RDMA到XDP》主要介绍了DPDK、RDMA和XDP三种高性能网络技术的原理、使用方法和实现方案。《Linux高性能网络详解:从DPDK、RDMA到XDP》总计26章,分为四大部分。第1部分介绍了计算机网络、计算机硬件和Linux操作系统的基础知识,以及软件和硬件之间传递信息的方式、以内核协议栈为基础的网络方案和Corundum。第2部分介绍了DPDK的入门知识、DPDK的内存管理、UIO/DPDK的基本使用方法、测试和分析高性能网卡,以及如何为Corundum编写DPDK驱动程序。第3部分包括RDMA技术简介、软件架构、基本元素、基本操作类型及其配套机制、传输服务类型、应用程序执行流程、主要元素的实现、数据传输、RoCEv2网卡的配置、性能测试工具等内容。第4部分包括XDP简介、XDP教程代码分析、简单的XDP性能测试、如何让网卡驱动程序支持XDP功能等内容。《Linux高性能网络详解:从DPDK、RDMA到XDP》适合对高性能网络技术感兴趣的软件和硬件开发工程师、系统工程师、网络性能分析人员阅读。

作者简介

刘伟,拥有14年网络设备开发领域的从业经验,当前就职于浪潮电子信息产业股份有限公司体系结构研究部,负责高性能网卡的架构设计和驱动程序开发工作。在此之前,曾以驱动团队和网络接入设备产品开发负责人的身份在上海诺基亚贝尔固网事业部工作了7年;还曾经就职于中兴通讯和上海爱吉信息技术有限公司,负责多款通信产品的研发工作。平时喜欢钻研技术和读书,并经常在自己的个人公 众号“布鲁斯的读书圈”中发表原创的技术文章。

章节目录

第 1部分 背景知识


第 1章 计算机网络概述3


1.1 计算机网络的定义和构成3


1.2 计算机网络的体系结构4


1.3 常见术语6


第 2章 计算机硬件10


2.1 中央处理器10


2.1.1 处理器体系结构11


2.1.2 Cache12


2.1.3 NUMA17


2.2 存储器19


2.3 总线19


2.4 网卡22


第3章 Linux操作系统25


3.1 Linux操作系统的诞生和发展25


3.2 用户态和内核态27


3.3 虚拟地址、物理地址和页表28


3.4 用户空间和内核空间30


3.5 Linux内核的组成31


3.5.1 Linux内核源代码的目录结构31


3.5.2 Linux内核的主要组成部分32


3.6 Linux设备驱动程序35


第4章 软件和硬件之间传递信息的方式37


4.1 寄存器37


4.2 数据缓存38


4.3 队列和描述符39


4.4 中断43


4.5 DMA46


第5章 内核协议栈方案及其存在的问题47


5.1 内核协议栈方案的工作过程47


5.2 内核协议栈方案的数据流49


5.3 内核协议栈方案的缺点50


第6章 Corundum——一个开源的基于FPGA的100G网卡方案51


6.1 Corundum方案简介51


6.2 Corundum的队列54


6.3 Corundum的Linux网络设备驱动程序解析56


6.3.1 驱动程序源码概览57


6.3.2 驱动程序的编译和使用57


6.3.3 驱动程序的加载和注册58


6.3.4 驱动程序和设备的匹配59


6.3.5 初始化阶段60


6.3.6 打开网络接口72


6.3.7 数据发送75


6.3.8 中断处理81


6.3.9 发送完成处理85


6.3.10 数据接收89


第 2部分 DPDK


第7章 认识DPDK97


7.1 为什么需要DPDK97


7.2 DPDK体系结构98


7.2.1 核心组件98


7.2.2 轮询模式驱动100


7.3 一个典型的DPDK应用程序102


第8章 DPDK的内存管理104


8.1 影响数据包处理速度的内存问题104


8.2 大页105


8.2.1 在Linux系统中预留和配置大页105


8.2.2 DPDK的大页管理106


8.3 mempool111


8.4 通道和rank113


8.5 DPDK使用的内存管理技巧总结114


第9章 UIO——DPDK的基石115


9.1 UIO驱动程序的构成115


9.2 应用程序和UIO的交互方式118


9.3 UIO驱动程序的API119


9.4 DPDK如何使用UIO120


第 10章 DPDK的基本使用方法123


10.1 编译DPDK123


10.2 使用dpdk-testpmd进行数据包转发测试123


10.2.1 运行环境和连接方式124


10.2.2 使用Linux以太网驱动程序运行dpdk-testpmd125


10.2.3 使用轮询模式驱动程序运行dpdk-testpmd129


10.3 使用pktgen测试Mellanox ConnectX-4 LX 10G网卡132


10.3.1 硬件环境132


10.3.2 软件版本132


10.3.3 安装Mellanox网卡驱动程序132


10.3.4 编译和安装DPDK133


10.3.5 “回环+转发”测试133


10.3.6 编译pktgen138


10.3.7 “外部发包+本地转发”测试138


10.3.8 测试过程中可能遇到的问题及解决方法141


第 11章 测试和分析高性能网卡142


11.1 关于DDR访问速率的思考和测试142


11.1.1 硬件配置和软件版本143


11.1.2 DDR理论速率144


11.1.3 内存性能测试工具mbw145


11.1.4 单核测试146


11.1.5 多核测试148


11.2 基于100G网卡的单核和多核测试150


11.2.1 硬件配置150


11.2.2 软件版本和配置150


11.2.3 单核测试150


11.2.4 双核测试152


11.2.5 测试结果总结153


11.3 使用Intel VTune Profiler定量分析DPDK154


11.3.1 硬件环境和软件版本154


11.3.2 Intel VTune Profiler的下载和安装155


11.3.3 测试模型155


11.3.4 重新编译安装DPDK155


11.3.5 使用Intel VTune Profiler启动和监控dpdk-testpmd156


11.3.6 开始产生和发送数据包159


11.3.7 统计和分析159


第12章 为Corundum编写DPDK驱动程序163


12.1 Corundum DPDK驱动程序的组成164


12.2 注册和打开调试日志164


12.2.1 DPDK的日志级别164


12.2.2 Corundum DPDK驱动程序的日志165


12.3 Corundum DPDK驱动程序的注册167


12.4 Corundum DPDK驱动程序的初始化168


12.5 启动队列173


12.6 数据发送176


12.7 编写驱动程序时的注意事项179


第3部分 RDMA


第 13章 RDMA技术简介185


13.1 RDMA的控制通路和数据通路185


13.2 RDMA的优势188


13.3 RDMA协议189


13.3.1 InfiniBand190


13.3.2 RoCE190


13.3.3 iWARP192


13.4 RDMA网络构成192


13.5 LID和GID194


13.5.1 LID194


13.5.2 GID195


第 14章 RDMA软件架构198


14.1 rdma-core198


14.2 内核RDMA子系统199


14.3 RDMA软件架构总览201


第 15章 RDMA基本元素202


15.1 WQ和WQE202


15.2 QP和QPN203


15.3 CQ和CQN205


15.4 WR和WC206


15.5 RDMA基本元素总结207


第 16章 RDMA基本操作类型及其配套机制208


16.1 Send和Receive208


16.2 RDMA Write209


16.3 RDMA Read210


16.4 其他RDMA操作类型212


16.5 RDMA操作类型总结213


16.6 Memory Region214


16.6.1 MR的基本概念215


16.6.2 MR的作用之一215


16.6.3 MR的作用之二216


16.6.4 MR的作用之三217


16.7 PD218


16.8 Doorbell机制219


16.9 RDMA各种元素的实体形式220


第 17章 RDMA传输服务222


17.1 传输服务维度一——可靠 不可靠222


17.2 传输服务维度二——连接 数据报223


17.3 传输服务类型225


第 18章 一个简单的RDMA应用程序229


18.1 程序的执行和输出229


18.2 代码执行流程230


第 19章 RDMA主要元素的实现234


19.1 分配PD234


19.2 注册MR240


19.2.1 代码执行流程分析240


19.2.2 注册MR的具体工作242


19.2.3 硬件查表获取MR物理地址的过程246


19.2.4 MR相关的软硬件行为汇总248


19.3 创建CQ249


19.3.1 代码执行流程分析249


19.3.2 CQ buffer的组织形式253


19.3.3 CQ Context的组织形式255


19.3.4 硬件获取CQE地址的过程257


19.3.5 CQ相关的软硬件行为汇总258


19.4 创建QP258


19.4.1 代码执行流程分析258


19.4.2 QP buffer的组织形式263


19.4.3 QP Context的组织形式264


19.5 修改QP265


19.5.1 应用程序修改QP265


19.5.2 代码执行流程分析267


19.5.3 硬件获取WQE地址的过程270


第 20章 进行一次数据传输272


20.1 发起数据传输——RDMA Write272


20.1.1 应用程序发起数据传输272


20.1.2 代码执行流程分析273


20.2 确认数据传输完毕——轮询CQ276


20.3 软件和硬件行为汇总277


第 21章 RoCEv2网卡的MAC、IP和GID279


21.1 RoCEv2网卡的GID279


21.2 向RoCEv2网卡配置自己的MAC、IP和GID281


21.2.1 获取RoCEv2网卡自己的MAC281


21.2.2 获取RoCEv2网卡自己的IP地址281


21.2.3 配置RoCEv2网卡自己的0号GID281


21.2.4 配置RoCEv2网卡自己的非0号GID282


21.3 向RoCEv2网卡配置对端设备的MAC、IP和GID282


21.3.1 应用程序获取本地和对端设备的0号GID283


21.3.2 应用程序获取对端设备的非0号(3号)GID284


21.3.3 向RoCEv2网卡配置对端设备的MAC地址284


21.3.4 向RoCEv2网卡配置对端设备的IP地址285


第 22章 RDMA性能测试工具—perftest286


22.1 源码获取和安装286


22.2 测试方法和注意事项286


22.3 测试选项287


22.4 简单的测试过程和结果呈现289


第4部分 XDP


第 23章 XDP简介293


23.1 什么是BPF和eBPF293


23.2 XDP系统架构294


23.2.1 XDP程序的执行流程295


23.2.2 BPF map297


第 24章 XDP教程代码分析298


24.1 xdp-tutorial代码获取和编译298


24.2 基础课程299


24.2.1 XDP程序的加载和卸载299


24.2.2 按名称加载SEC301


24.2.3 使用BPF map302


24.2.4 多程序交流和共享304


24.3 数据包处理课程308


24.3.1 解析数据包308


24.3.2 改写数据包311


24.3.3 重定向313


第 25章 简单的XDP性能测试319


25.1 测试方法319


25.2 测试流程和命令320


25.3 测试结果321


25.4 测试结果分析321


第 26章 让网卡驱动程序支持XDP功能322


26.1 XDP代码在网卡驱动中的位置322


26.2 数据包的准备323


26.3 返回值的处理323


附录A 在Linux系统中查找各种核的对应关系325


附录B 关于内存性能测试工具mbw的问题分析331


附录C 简单分析memcpy的代码优化方法335


附录D 用线性回归方法计算CPU频率338

Linux高性能网络详解:从DPDK、RDMA到XDP是1970年由人民邮电出版社出版,作者刘伟。

得书感谢您对《Linux高性能网络详解:从DPDK、RDMA到XDP》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢
Linux系统运维指南:从入门到企业实战 电子书
《Linux系统运维指南:从入门到企业实战》用简洁的语言阐述了企业系统运维的核心知识; 《Linux系统运维指南:从入门到企业实战》囊括学习Linux操作系统必备的理论; 《Linux系统运维指南:从入门到企业实战》LAMP/LNMP架构的部署、配置与优化的应用详解; 《Linux系统运维指南:从入门到企业实战》展示企业运维环境下的各开源软件服务及配置过程; 《Linux系统运维指南:从入门到企业实战》结合实际场景对数据库、服务器等架构进行演练。
Wireshark网络分析从入门到实践 电子书
1.这是一本好用的工具书 对于对于网络运维人员、网络安全人员,WireShark是非常好的网络分析工具,这本优秀的基础工具书正是目前大家需要的。本书内容由浅入深,案例环环相扣,同时配备完整的代码资源,适合读者边学边练,从实践中夯实基础,掌握实践技能。 2.带读者体验身临其境的网络分析 本书系统地将WireShark与虚拟网络环境(ENSP)相结合,将WireShark的应用提升到真正实践的层面,可以帮助那些无法拥有真实网络设备的读者建立虚拟环境,从而降低学习者的门槛。除此之外,本书还采用Lua语言,扩展了Wireshark的功能。 3.这是一本经得起实践考验的教程 除此之外,本书的作者是拥有丰富经验高校教师,多年来培育了大量的网络安全方向工作人员,拥有多年的网络安全一线教学与实践经验,让你读书犹如老师在身边一对一地讲解。
非常网管:网络管理从入门到精通(第3版) 电子书
传道——讲授网络管理的理论 授业——分享提升技能的方法 解惑——探索解决问题的关键 20年zi深网络管理员详细剖析网络管理核心技术 65个经典实验全面提升网络管理实战技能 4大讨论主题全面涵盖网络基础、服务器架设和管理、路由和交换、高级应用与故障排除 畅销10余年,被众多院校和培训机构选作网络管理课程 内容全新升级,适用于Windows 10和Windows Server 2016 本书源自作者近20年网络管理从业经历的经验总结,并在其中巧妙融合了作者多年的培训经验,旨在打造一本即有利于帮助读者夯实理论基础,又能切实提高其动手能力的实用类网络管理教程。 本书深入浅出地讲解了网络管理所涉及的理论知识,分享了提升网络管理水平的技巧和方法,并通过贯穿于全书的65个经典实验帮助读者将理论知识上升到实战水平,实现从理性到感性、从抽象到具体的知识转化。对于打算从事网络管理的零基础读者来说,本书实为理想之选。 本书组织架构: 网络管理篇 网络基础知识回顾 网络硬件知识 服务器架设和管理篇 Windows Server 2016安装和简介 计算机管理 配置常用服务器 活动目录 路由和交换篇 路由器的硬件和软件 路由 交换机 访问控制列表 AAA(认证、授权、记账) VPN(虚拟专用网) VoIP(IP电话) SolarWinds网管系统 高级应用和故障排除篇 在路由器上配置DHCP 策略路由 路由器NAT实验 网关冗余 交换端口分析 配置QoS 防止非法DHCP影响网络 限制BT流量 ARP攻击的攻、判、防
Kali Linux 2网络渗透测试实践指南 电子书
Kali是世界渗透测试行业公认的杰出的网络安全审计工具集合,它可以通过对设备的探测来审计其安全性,而且功能完备,几乎包含了目前所有的热门工具。本书由知名的网络安全领域的教师编写完成,全书共16章,内容围绕如何使用Kali这款网络安全审计工具集合展开。本书涉及网络安全渗透测试的相关理论和工具、KaliLinux2使用基础、被动扫描、主动扫描、漏洞扫描、远程控制、渗透攻击、Armitage、社会工程学
Linux网络操作系统应用基础教程(RHEL版) 电子书
本书以目前被广泛应用的RedHatLinux服务器发行版为例,采用理论与实践相结合的方式,全面系统地介绍了应用Linux操作系统架设网络服务器的方法,内容包括项目概述、安装Linux操作系统、Linux基础操作与文档编辑、用户和租的管理、基本磁盘管理、Linux网络基础、资源共享服务器配置、DHCP服务器、Apache服务器、电子邮件服务器、VPN服务器、集群技术、Linux系统安全。本书采用大案