DPDK X710 DDP PPPoE 实践
DPDK X710 DDP PPPoE 实践
DPDK version: 21.08
X710 firmware-version: 6.80 0x80003cc1 1.1747.0
DDP PPPoE profile version: 1.0.0.0
# lspci |grep Ethernet |grep X710
04:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
04:00.1 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)# ethtool -i eth4
driver: i40e
version: 2.8.20-k
firmware-version: 6.80 0x80003cc1 1.1747.0
expansion-rom-version:
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
testpmd
:
./dpdk-testpmd -c 0xffff --socket-mem=5120,7168 -n 2 -r 2 --no-hpet --create-uio-dev -w 0000:04:00.0 -w 0000:04:00.1 \-- -i --rxq=8 --txq=8 --pkt-filter-mode=perfect --rss-ip --rss-udp
DDP PPPoE Profile
Intel® Ethernet Controller X710/XXV710/XL710 Adapters Dynamic Device Personalization PPPoE Package 下载 DDP PPPoE Profile 解压.
启动 testpmd
加载 DDP Profile:
port stop all
ddp add 0 /sdd/tmp/ppp-oe-ol2tpv2.pkgo,/sdd/tmp/ppp-oe-ol2tpv2.pkgo.bak
ddp get list 0
Profile number is: 1Profile 0:
Track id: 0x80000006
Version: 1.0.0.0
Profile name: E710 PPPoE and PPPoL2TPv2port start all
查看当前网卡 pctype -> flowtype
映射:
testpmd> show port 0 pctype mapping
pctype: 36 -> flowtype: 03
pctype: 33 -> flowtype: 04
pctype: 31 -> flowtype: 05
pctype: 34 -> flowtype: 06
pctype: 35 -> flowtype: 07
pctype: 46 -> flowtype: 09
pctype: 43 -> flowtype: 10
pctype: 41 -> flowtype: 11
pctype: 44 -> flowtype: 12
pctype: 45 -> flowtype: 13
pctype: 63 -> flowtype: 14
pctype: 15 -> flowtype: 15
查看 DDP PPPoE profile
:
testpmd> ddp get info /sdd/tmp/ppp-oe-ol2tpv2.pkgoGlobal Track id: 0x80000006
Global Version: 1.0.0.0
Global Package name: PPPoE and PPPoL2TPv2i40e Profile Track id: 0x80000006
i40e Profile Version: 1.0.0.0
i40e Profile name: E710 PPPoE and PPPoL2TPv2Package Notes:
This profile enables PPPoE and PPPoL2TPv2 parsing
L2TPv2 Tunnel ID extracted to field 46
L2TPv2/PPPoE Session ID extracted to field 47
PPP Protocol ID extracted to field 48List of supported devices:8086:1572 FFFF:FFFF8086:1574 FFFF:FFFF8086:1580 FFFF:FFFF8086:1581 FFFF:FFFF8086:1583 FFFF:FFFF8086:1584 FFFF:FFFF8086:1585 FFFF:FFFF8086:1586 FFFF:FFFF8086:1587 FFFF:FFFF8086:1588 FFFF:FFFF8086:1589 FFFF:FFFF8086:158A FFFF:FFFF8086:158B FFFF:FFFFList of used protocols:12: IPV413: IPV615: GRENAT17: TCP18: UDP19: SCTP20: ICMP22: L2TPv2CTRL23: ICMPV626: L2TPv227: L2TPv2PAY28: PPPoL2TPv229: PPPoE33: PAY234: PAY335: PAY444: IPV4FRAG48: IPV6FRAG52: OIPV453: OIPV6List of defined packet classification types:14: L2TPv2CTRL15: PPPoE IPV416: PPPoE IPV617: PPPoE18: PPPoL2TPv2 IPV419: PPPoL2TPv2 IPV620: PPPoL2TPv221: L2TPv2PAYList of defined packet types:154: PPPoE PAY2155: PPPoE IPV4FRAG PAY3156: PPPoE IPV4 PAY3157: PPPoE IPV4 UDP PAY4158: PPPoE IPV4 TCP PAY4159: PPPoE IPV4 SCTP PAY4160: PPPoE IPV4 ICMP PAY4161: PPPoE IPV6FRAG PAY3162: PPPoE IPV6 PAY3163: PPPoE IPV6 UDP PAY4164: PPPoE IPV6 TCP PAY4165: PPPoE IPV6 SCTP PAY4166: PPPoE IPV6 ICMPV6 PAY4167: OIPV4 L2TPv2 PPPoL2TPv2 PAY3168: OIPV4 L2TPv2 PPPoL2TPv2 IPV4FRAG PAY3169: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 PAY3170: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 UDP PAY4171: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 TCP PAY4172: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 SCTP PAY4173: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 ICMP PAY4174: OIPV4 L2TPv2 PPPoL2TPv2 IPV6FRAG PAY3175: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 PAY3176: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 UDP PAY4177: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 TCP PAY4178: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 SCTP PAY4179: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 ICMPV6 PAY4180: OIPV6 L2TPv2 PPPoL2TPv2 PAY3181: OIPV6 L2TPv2 PPPoL2TPv2 IPV4FRAG PAY3182: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 PAY3183: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 UDP PAY4184: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 TCP PAY4185: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 SCTP PAY4186: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 ICMP PAY4187: OIPV6 L2TPv2 PPPoL2TPv2 IPV6FRAG PAY3188: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 PAY3189: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 UDP PAY4190: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 TCP PAY4191: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 SCTP PAY4150: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 ICMPV6 PAY412: OIPV4 L2TPv2 L2TPv2CTRL PAY413: OIPV6 L2TPv2 L2TPv2CTRL PAY414: OIPV4 L2TPv2 L2TPv2PAY PAY315: OIPV6 L2TPv2 L2TPv2PAY PAY3
注意以下信息为 DDP PPPoE profile
新定义的pctype
类型, 与文档介绍一致:
List of defined packet classification types:14: L2TPv2CTRL15: PPPoE IPV416: PPPoE IPV617: PPPoE18: PPPoL2TPv2 IPV419: PPPoL2TPv2 IPV620: PPPoL2TPv221: L2TPv2PAY
映射 pctype 15: PPPoE IPV4
到 DPDK flow type 15
:
testpmd> port config 0 pctype mapping update 15 15
testpmd> port start 0
testpmd> start
testpmd> port config all rss 15
testpmd> show port 0 pctype mapping
pctype: 36 -> flowtype: 03
pctype: 33 -> flowtype: 04
pctype: 31 -> flowtype: 05
pctype: 34 -> flowtype: 06
pctype: 35 -> flowtype: 07
pctype: 46 -> flowtype: 09
pctype: 43 -> flowtype: 10
pctype: 41 -> flowtype: 11
pctype: 44 -> flowtype: 12
pctype: 45 -> flowtype: 13
pctype: 63 -> flowtype: 14
pctype: 15 -> flowtype: 15
port config 0 pctype mapping update 15 15
调用rte_pmd_i40e_flow_type_mapping_update()
映射pctype 22
到 DPDKflow type 15
.port config all rss 22
对flowtype 15
启用RSS
.
scapy
发送测试PPPOE IPv4
报文:
from scapy.all import *pkt=Ether(dst="90:e2:ba:0a:73:0c")/PPPoE(sessionid=0x7)/PPP(proto=0x21)/IP(src="1.1.1.1",dst="2.2.2.2")/UDP(sport=4000,dport=8000)/Raw('x' * 20)
sendp(pkt, iface="enp5s0f1")
pkt=Ether(dst="90:e2:ba:0a:73:0c")/PPPoE(sessionid=0x7)/PPP(proto=0x21)/IP(src="4.4.4.1",dst="3.3.3.2")/UDP(sport=4000,dport=8000)/Raw('x' * 20)
sendp(pkt, iface="enp5s0f1")
检查 testpmd verbose 输出, 2个数据包分别到了 queue 4
和 queue 1
:
testpmd> set verbose 8
testpmd> port 0/queue 4: received 1 packetssrc=84:8F:69:FE:ED:E0 - dst=90:E2:BA:0A:73:0C - type=0x8864 - length=70 - nb_segs=1 - RSS hash=0x7054557c - RSS queue=0x4 - hw ptype: L2_ETHER_PPPOE L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER - l2_len=14 - Receive queue=0x4ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN
port 1/queue 4: sent 1 packetssrc=84:8F:69:FE:ED:E0 - dst=90:E2:BA:0A:73:0C - type=0x8864 - length=70 - nb_segs=1 - RSS hash=0x7054557c - RSS queue=0x4 - hw ptype: L2_ETHER_PPPOE L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER - l2_len=14 - Send queue=0x4ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN
port 0/queue 1: received 1 packetssrc=84:8F:69:FE:ED:E0 - dst=90:E2:BA:0A:73:0C - type=0x8864 - length=70 - nb_segs=1 - RSS hash=0x7f119e69 - RSS queue=0x1 - hw ptype: L2_ETHER_PPPOE L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER - l2_len=14 - Receive queue=0x1ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN
port 1/queue 1: sent 1 packetssrc=84:8F:69:FE:ED:E0 - dst=90:E2:BA:0A:73:0C - type=0x8864 - length=70 - nb_segs=1 - RSS hash=0x7f119e69 - RSS queue=0x1 - hw ptype: L2_ETHER_PPPOE L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER - l2_len=14 - Send queue=0x1ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN
卸载 DDP PPPoE profile
:
testpmd> port stop 0
testpmd> ddp del 0 /sdd/tmp/ppp-oe-ol2tpv2.pkgo.bak
testpmd> ddp get list 0
Profile number is: 0testpmd>
其他
DDP PPPoE 最新版本为 1.1.6.1, 新定义的 pctype 更详细
testpmd> ddp get info /sdd/tmp/ppp-oe-ol2tpv2.pkg
Global Track id: 0x80000006
Global Version: 1.1.6.1
Global Package name: PPPoE and PPPoL2TPv2i40e Profile Track id: 0x80000006
i40e Profile Version: 1.1.6.1
i40e Profile name: PPPoE and PPPoL2TPv2Package Notes:
This profile enables PPPoE and PPPoL2TPv2 parsing
L2TPv2 Tunnel ID extracted to field 46
L2TPv2/PPPoE Session ID extracted to field 47
PPP Protocol ID extracted to field 48List of supported devices:8086:1572 FFFF:FFFF8086:1574 FFFF:FFFF8086:1580 FFFF:FFFF8086:1581 FFFF:FFFF8086:1583 FFFF:FFFF8086:1584 FFFF:FFFF8086:1585 FFFF:FFFF8086:1586 FFFF:FFFF8086:1587 FFFF:FFFF8086:1588 FFFF:FFFF8086:1589 FFFF:FFFF8086:158A FFFF:FFFF8086:158B FFFF:FFFF8086:15FF FFFF:FFFF8086:104F FFFF:FFFF8086:104E FFFF:FFFFList of used protocols:12: IPV413: IPV615: GRENAT17: TCP18: UDP19: SCTP20: ICMP21: PPPoL2TPv222: L2TPv2CTRL23: ICMPV626: L2TPv229: PPPoE33: PAY234: PAY335: PAY444: IPV4FRAG48: IPFRAG52: OIPV453: OIPV6List of defined packet classification types:0: PPPoE IPV4 UDP1: PPPoE IPV4 TCP2: PPPoE IPV4 SCTP3: PPPoE IPV44: PPPoE IPV4 IPFRAG5: PPPoE IPV6 UDP6: PPPoE IPV6 TCP7: PPPoE IPV6 SCTP8: PPPoE IPV69: PPPoE IPV6 IPFRAG10: PPPoL2TPv2 IPV4 UDP11: PPPoL2TPv2 IPV4 TCP12: PPPoL2TPv2 IPV4 SCTP13: PPPoL2TPv2 IPV414: PPPoL2TPv2 IPV4 IPFRAG15: PPPoL2TPv2 IPV6 UDP16: PPPoL2TPv2 IPV6 TCP17: PPPoL2TPv2 IPV6 SCTP18: PPPoL2TPv2 IPV619: PPPoL2TPv2 IPV6 IPFRAG20: PPPoL2TPv222: L2TPv2CTRL24: PPPoEList of defined packet types:154: PPPoE PAY2155: PPPoE IPV4FRAG PAY3156: PPPoE IPV4 PAY3157: PPPoE IPV4 UDP PAY4158: PPPoE IPV4 TCP PAY4159: PPPoE IPV4 SCTP PAY4160: PPPoE IPV4 ICMP PAY4161: PPPoE IPV6 IPFRAG PAY3162: PPPoE IPV6 PAY3163: PPPoE IPV6 UDP PAY4164: PPPoE IPV6 TCP PAY4165: PPPoE IPV6 SCTP PAY4166: PPPoE IPV6 ICMPV6 PAY4167: OIPV4 L2TPv2 PPPoL2TPv2 PAY3168: OIPV4 L2TPv2 PPPoL2TPv2 IPV4FRAG PAY3169: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 PAY3170: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 UDP PAY4171: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 TCP PAY4172: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 SCTP PAY4173: OIPV4 L2TPv2 PPPoL2TPv2 IPV4 ICMP PAY4174: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 IPFRAG PAY3175: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 PAY3176: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 UDP PAY4177: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 TCP PAY4178: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 SCTP PAY4179: OIPV4 L2TPv2 PPPoL2TPv2 IPV6 ICMPV6 PAY4180: OIPV6 L2TPv2 PPPoL2TPv2 PAY3181: OIPV6 L2TPv2 PPPoL2TPv2 IPV4FRAG PAY3182: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 PAY3183: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 UDP PAY4184: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 TCP PAY4185: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 SCTP PAY4186: OIPV6 L2TPv2 PPPoL2TPv2 IPV4 ICMP PAY4187: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 IPFRAG PAY3188: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 PAY3189: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 UDP PAY4190: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 TCP PAY4191: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 SCTP PAY4150: OIPV6 L2TPv2 PPPoL2TPv2 IPV6 ICMPV6 PAY412: OIPV4 L2TPv2 L2TPv2CTRL PAY413: OIPV6 L2TPv2 L2TPv2CTRL PAY416: OIPV4 UDP L2TPv2 L2TPv2CTRL PAY417: OIPV6 UDP L2TPv2 L2TPv2CTRL PAY4testpmd>
但是映射 0: PPPoE IPV4 UDP
到 DPDK flowtype 会报错, 追踪代码发现pctype
与 i40e pmd
中预定义相冲突, 有待进一步研究:
testpmd> port config 0 pctype mapping update 0,1,2,3,4,5,6,7,8 15
invalid pctype or flow type
testpmd> port config 0 pctype mapping update 1,2,3,4,5,6,7,8 15
testpmd> show port 0 pctype mapping
pctype: 36 -> flowtype: 03
pctype: 33 -> flowtype: 04
pctype: 15 -> flowtype: 05
pctype: 16 -> flowtype: 06
pctype: 17 -> flowtype: 07
pctype: 46 -> flowtype: 09
pctype: 43 -> flowtype: 10
pctype: 41 -> flowtype: 11
pctype: 44 -> flowtype: 12
pctype: 45 -> flowtype: 13
pctype: 63 -> flowtype: 14
pctype: 01,02,03,04,05,06,07,08 -> flowtype: 15
testpmd> port config all rss 15
References
Intel® Ethernet Controller 700 Series: Hash and Flow Director Filters
Intel® Ethernet Controller XL710 datasheet
Intel Ethernet 700 Series firmware 6.01
Dynamic Device Personalization for Intel® Ethernet 700 Series
Intel® Ethernet Controller X710/XXV710/XL710 Adapters Dynamic Device Personalization PPPoE Package
DDP PPPoE/L2TPv2/PPPoL2TPv2
DPDK-Fortville Configure RSS Queue Regions Tests
DPDK X710 DDP PPPoE 实践相关推荐
- 动手实践看懂深度学习的DP和DDP
摘要 为了尽可能加快训练,我们会使用两种GPU并行手段,DP和DDP,但是DP其实只会开一个进程去管理,计算资源分配不均,DDP上我们倾向于一张卡开一个进程,使得我们的计算资源能够最大化的利用.本次的 ...
- 「分布式训练」使用 DDP 实现程序单机多卡并行指南
最近在大趋势的影响下,开始染指大模型.由于实验室计算资源的限制,需要使用单机多卡并行的方式运行程序,这里以 BLOOM-560m 模型为例,演示如何通过单机多卡DDP并行的方式微调完成下游任务. 目录 ...
- DPDK(Data Plane Development Kit)快速处理数据包 开发平台及接口 简介
一.网络IO的处境和趋势 从我们用户的使用就可以感受到网速一直在提升,而网络技术的发展也从1GE/10GE/25GE/40GE/100GE的演变,从中可以得出单机的网络IO能力必须跟上时代的发展. 1 ...
- lwip协议栈优化_干货分享 | KNI性能优化实践
友情提示:全文5000多文字,预计阅读时间15分钟 文章源自现网实践对支撑及用户态/内核态网络报文交换场景的认识,欢迎有Linux/FreeBSD内核.网络协议栈.DPDK优化实践经验的同学留言探讨- ...
- 从C10K到C10M高性能网络的探索与实践
原文:https://blog.qiniu.com/archives/4941 优化整理:极客重生 hi,大家好,今天是大年初一,先祝大家新年快乐!今天依然是干货,性能优化大局观,高端食材,值得品尝. ...
- 初学者也能看懂的DPDK解析
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由Willko发表于云+社区专栏 一.网络IO的处境和趋势 从我们用户的使用就可以感受到网速一直在提升,而网络技术的发展也从1GE/10 ...
- DPDK 网卡收包流程
Table of Contents 1.Linux网络收发包流程 1.1 网卡与liuux驱动交互 1.2 linux驱动与内核协议栈交互 题外1: 中断处理逻辑 题外2:中断的弊端 2.linux ...
- 绝对干货!初学者也能看懂的DPDK解析
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由Willko发表于云+社区专栏 一.网络IO的处境和趋势 从我们用户的使用就可以感受到网速一直在提升,而网络技术的发展也从1GE/10 ...
- Intel 万兆网卡调研 X520 X540 X550 X710 X810 对比 10GB/40GB/100GB NIC
目录 对Intel网卡进行调研 支持SR-IOV的网卡 X520 X540 X550对比 区别 相同 X520 X710 X810系列对比 区别 X520网卡文档翻译 Overview Best ch ...
- DPDK官方文档说明
目录 1.Release Notes 2.Getting Started Guide for Linux/FreeBSD/Windows 3.Programmer's Guide 4.API Refe ...
最新文章
- unigui 导入导出数据
- MATLAB从入门到精通-MATLAB零矩阵zeros()函数使用方法汇总
- [转]vc中socket编程步骤
- Sentinel(三)之如何使用
- android 多个按钮响应,处理Android Recyclerview中的多个按钮单击并将响应存储在Array或ArrayList中...
- collectors 求和_Collectors扩展接口 实现BigDecimal的相加
- 【探索篇】测试人员一直疏忽掉的测试用例点,你中枪了吗?
- 【思科百难】RIP两个版本之间能够相互通信?
- red flag linux双网卡,centos双网卡绑定负载均衡
- python使用rpa需要什么插件_使用Python制作ArcGIS插件基础篇——工具介绍
- Xcode6 - 更改项目Copyright
- 标签树状结构JSP中树状图的代码实现
- Maple绘图小技巧1
- BT656与BT1120的区别
- mongodb查询某个字段数据
- 转载:技术大停滞——范式春梦中的地球工业文明5:台阶前的坑:人类社会的宿命
- Android7.1.1新增Shortcuts快捷方式,让App更加快捷方便
- irving - 初学python
- 财务共享建设后,为什么比别人效率低,因为忽略了这个关键点
- 【golang学习总结】10 golang中map用法
热门文章
- [USACO DEC13] 虫洞
- echarts--(2)--创建一个饼图
- c语言键盘函数空格,C语言中关于scanf函数的用法
- python怎么画小海龟_python画图之“小海龟”turtle
- html5 职工入职后台管理系统_丽水微信社群裂变营销管理系统公司
- c语言输入身高计算标准体重_体质测试 | 身高 / 体重测试评分标准及方法
- java_web tomcat服务器的安装与配置
- 计算机机房里面难闻的气味,新装中央空调气味刺鼻为什么?怎么办?-中央空调 异味 刚开...
- access mysql oracle_Oracle访问Access实现数据同步
- 安卓和php开发融云聊天室,聊天室