修改过后的l2fwd源码包我已经上传了,有需要的可以下载:
支持dpdk17版本的l2fwd:https://download.csdn.net/download/minxihou/10857596
支持dpdk18版本的l2fwd:https://download.csdn.net/download/minxihou/10857603
该功能在dpdk17的版本中添加,所以会原生支持dpdk17。下载了dpdk17的源码包解压之后会有个l2fwd_dmac_v17111.diff的文件,该文件就是对比了dpdk17源码包原生l2fwd和追加了dmac功能的l2fwd的diff对比文件。找到增加的方法同样也可以移植到dpdk18的l2fwd中。
前言这个功能是由我同事针对特定测试需求在l2fwd脚本中二次开发的功能。用以支持l2fwd转发流量能够自定义指定用户输入的mac地址。今年初我同事因为各种原因离开公司和团队,谨以此博客来纪念我同事无私的奉献。并希望有同样功能诉求的人在看到这篇博客时,这个工具能对你们有所帮助。功能详解l2fwd脚本运行时会绑端口,将绑定的端口上的流量进行转发。但是仔细一想转发只是完成了一个流向转换的过程。以p...
l2fwd 是 dpdk 二层转发示例,它会将一个口收到的报文经过相邻口转发出去,在日常测试中经常用到。
下面我从源码入手,分析下 l2fwd 内部的工作原理。
l2fwd 初始化 eal 并解析参数
516 int
517 main(int argc, char **argv)
518 {
519 struct lcore_queue_conf *qconf;
520 struct rte_eth_dev_info dev_info;
521 int ret;
522 ui
适配dpdk-17.11.1,命令通过新增-d指定端口的dmac。 ./build/l2fwd -c 3 -n 2 -- -p 3 -d 11:11:11:11:11:11 -d 22:22:22:22:22:22
Port0的dmac为: 11:11:11:11:11:11
Port2的dmac为: 22:22:22:22:22:22
运行时输出信息增加了port的用户指定dmac显示:
Initializing port 0... done:
Port 0, MAC address: 52:54:00:46:8D:C0
Initializing port 1... done:
Port 1, MAC address: 52:54:00:F0:6C:50
Port 0, Destination MAC address: 11:11:11:11:11:11
Port 1, Destination MAC address: 22:22:22:22:22:22
l2fwd命令是一个用于测试网络性能的工具。它使用了 DPDK(Data Plane Development Kit)库来进行高效的数据包转发,可以在网络中测量吞吐量、延迟和丢包率等指标。
使用方法:
l2fwd [EAL options] -- -p PORTMASK [-q NQ]
其中,PORTMASK 是用于选择要使用的端口的掩码,NQ 是要使用的队列数。例如,如果要使用端口 0 和 1,...
vmware启动上三个host:host1、host2、host3。host之间的网口通过虚拟交换机相连。
在host2上跑dpdk-l3fwd打通host1和host3之间的连接,组网如下:
host1-port0(ens38:192.168.56.167)<---->(port0)
(host2_l3fwd)
原作者:张云尧 出处:http://aidaiz.com/dpdk_l2fwd/
本例中实现了相邻端口之间的相互转发。
比如一共4个端口可用,那么端口1收到数据后会转发给端口2,端口2收到数据后会转发给端口1,端口3和端口4也会相互转发。
设置环境变量
二层转发基础简介以太网基础CS: 载波监听MA:多点接入CD:碰撞检测MAC地址单播组播广播帧表ARPL2FDB冲突域广播域hub交换机二层转发原理源MAC地址学习VLANIVLSVL
根据OSI网络七层模型,第一层到第七层分别是物理层、链路数据层、网络层、传输层、会话层、表示层和应用层。在二层转发中,二层指的就是数据链路层,而第二层数据链路层负责的就是MAC地址,所以二层转发就是基于MAC地址进行数据包转发。
以太网基础
冲突检测:CSMA/CD(Carrier Sense Multiple Ac
适配dpdk-17.11.1,命令通过新增-d指定端口的dmac。 ./build/l2fwd -c 3 -n 2 -- -p 3 -d 11:11:11:11:11:11 -d 22:22:22:22:22:22
Port0的dmac为: 11:11:11:11:11:11
Port2的dmac为: 22:22:22:22:22:22
运行时输出信息增加了port的用户指定dmac显示:
Initializing port 0... done:
Port 0, MAC address: 52:54:00:46:8D:C0
Initializing port 1... done:
Port 1, MAC address: 52:54:00:F0:6C:50
Port 0, Destination MAC address: 11:11:11:11:11:11
Port 1, Destination MAC address: 22:22:22:22:22:22
每台能够上网的电脑都有网卡,不管是有线还是无线,网卡本身都得有物理地址,也就是MAC(Media Access Control 或 Medium Access Control)地址。这个地址理论上是固定的,但也可以修改,这次IT之家就介绍一下两种修改方法。
在修改之前,可以先确定一下要修改的网卡MAC地址,查询方法有很多种,比如:
1、在设置→网络和Internet→WLAN/以太网,如下...
set(CMAKE_SYSTEM_NAME Linux)
message(STATUS "CC: \"$ENV{CC}\"")
message(STATUS "CXX: \"$ENV{CXX}\"")
message(STATUS "CMAKE_C_COMPILER: \"${CMAKE_C_COMPILER}\"")
message(STATUS "CMAKE_CXX_COMPILER
1.pktgen简介
pktgen是一个位于linux内核层的高性能网络测试工具,由瑞士皇家理工大学的TSlab实验室的Robert Olsson开发的(现在应该不在皇家理工了),主要用来测试网络驱动与网卡设备,支持多线程,能够产生随机mac地址、IP地址、UDP端口号的数据包,pktgen
的作者使用多CPU处理器在不同的PCI总线(pci 、pcie等总线)上用千兆以太网卡做过测
前言:在以openstack云平台为基础架设上的虚机,要获得端到端三层网络pps性能测试最佳值,需要给虚拟机开启网卡多队列。在thinkcloud云平台上由于操作界面尚未继承网卡多队列的功能,因此需要到kvm中开启网卡多队列。
查看网卡网卡多对列:
# ethtool -l eth0
Channel parameters for eth0:
Pre-set maximums:
RX: 0
TX:...
理解vegeta的压测原理和设计目的,并且以正确的姿势使用该工具。
解读vegeta的报告并通过笔者实际测试经验合理的设置压测参数。
学会使用vegeta压测https的GET请求和POST请求。(虽然vegeta的说明文档中也有写)
阅读本文你将无法知道什么:
本文不会详述网络测试整个模型,测试指标之间的关联性。如果你不太清楚如何进行网络测...