服务器DPDK l3fwd性能测试

服务器DPDK l3fwd性能测试,第1张

由于项目中需要用到dpdk,当时在服务器平台选型上有如下2种不同配置可供选择,为了理解老的Xeon处理器和Xeon金牌处理器对DPDK转发性能的影响,需要在两台服务器上分别进行DPDK l3fwd性能转发测试。

采用如下拓扑进行测试,测试仪的4个10GE端口连接X710-DA4的4个接口,测试时测试仪的4个端口同时打流,经过服务器DPDK转发后分别从X710-DA4网卡的不同接口送出,在测试仪的4个端口查看是否有丢包。在无丢包的情况下测试仪端口打流的最大速率即为服务器端DPDK能够提供的最大转发能力,以MPPS为单位。

(1) 在服务器上运行dpdk
/examples/l3fwd/x86_64-native-linux-gcc/l3fwd -l 4,6,8,10 -n 4 -w 0000:04:000 -w 0000:04:001 -w 0000:04:002 -w 0000:04:003 -- -p 0xf --config="(0,0,2),(1,0,4),(2,0,6),(3,0,8)"
运行l3fwd前有一些准备工作:

上述是DPDK官方的性能测试报告中建议的BIOS配置,在实际测试用我没有修改CPU C-state和P-state,并关闭了超线程的功能。

也可以通过 cat /sys/class/net/p6p1/device/numa_node 查看

在上述 *** 作完成后便可以知道dpdk运行时应该设置参数。
(2)测试仪打流
在l3fwd运行起来后,会添加1921800/24、1921810/24、1921820/24、1921830/24四个网段的路由,因此在测试仪端4个端口设置流的时候需要将流的目的IP地址分别设置为上述4个网段的地址,流的目的MAC地址设置为对应接口的MAC地址。

上述的DUT2对应Server01,DUT3对应Server02,DUT1的性能数据和配置是从DPDK的性能测试报告中拿到的。DUT1、DUT2和DUT3的配置对比如下。

从测试结果可以看出,DUT3上运行DPDK就能够实现64字节数据包的线速转发。对比DUT2和DUT3的转发性能可以看出,基于 Xeon Gold 5118处理器的平台相比老的Xeon处理器平台,转发性能是有一定提升的。
当然,从我个人的理解来看,现在的转发测试只是测4条路由表的情况,路由表均能够存放到处理器的一级cache中,没有大规模内存访问的压力。如果有大规模的路由表或者服务器上多个网卡同时收发数据,并且涉及到跨网卡之间的数据包转发,当前的服务器能否实现性能的线性扩展还需要后面进一步测试。

因为不知道你的网络结构,所以只能给你提供一个思路:
你想要实现的是用户访问所有域名都是直接访问80端口,而你的所有域名都是解析到同一个外网IP的,因此要解决该问题,必须在外网IP所在设备上对80端口的请求做拆包,并根据报头中的不同域名将数据包转发到不同内网IP的服务器上。

通过隧道技术实现,一种协议传输另外一种协议,用专用协议把TCP/IP协议的要访问对端的数据包封装加密,然后再把数据包封装成包含对端IP的数据包。隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将这些其它协议的数据桢或包重新封装在新的包头中发送。新的包头提供了路由信息,从而使封装的负载数据能够通过互联网络传递。被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由。被封装的数据包在公共互联网络上传递时所经过的逻辑路径称为隧道。一旦到达网络终点,数据将被解包并转发到最终目的地。注意隧道技术是指包括数据封装,传输和解包在内的全过程。隧道所使用的传输网络可以是任何类型的公共互联网络,本文主要以目前普遍使用Internet为例进行说明。此外,在企业网络同样可以创建隧道。隧道技术在经过一段时间的发展和完善之后,目前较为成熟的技术包括:◇IP网络上的SNA隧道技术当系统网络结构(SystemNetworkArchitecture)的数据流通过企业IP网络传送时,SNA数据桢将被封装在UDP和IP协议包头中。◇IP网络上的NovellNetWareIPX隧道技术当一个IPX数据包被发送到NetWare服务器或IPX路由器时,服务器或路由器用UDP和IP包头封装IPX数据包后通过IP网络发送。另一端的IP-TO-IPX路由器在去除UDP和IP包头之后,把数据包转发到IPX目的地。近几年不断出现了一些新的隧道技术,具体包括:◇点对点隧道协议(PPTP)PPTP协议允许对IP,IPX或NetBEUI数据流进行加密,然后封装在IP包头中通过企业IP网络或公共互联网络发送。◇第2层隧道协议(L2TP)L2TP协议允许对IP,IPX或NetBEUI数据流进行加密,然后通过支持点对点数据报传递的任意网络发送,如IP,X25,桢中继或ATM。◇安全IP(IPSec)隧道模式IPSec隧道模式允许对IP负载数据进行加密,然后封装在IP包头中通过企业IP网络或公共IP互联网络如Internet发送。为创建隧道,隧道的客户机和服务器双方必须使用相同的隧道协议。隧道技术可以分别以第2层或第3层隧道协议为基础。上述分层按照开放系统互联(OSI)的参考模型划分。第2层隧道协议对应OSI模型中的数据链路层,使用桢作为数据交换单位。PPTP,L2TP和L2F(第2层转发)都属于第2层隧道协议,都是将数据封装在点对点协议(PPP)桢中通过互联网络发送。第3层隧道协议对应OSI模型中的网络层,使用包作为数据交换单位。IPoverIP以及IPSec隧道模式都属于第3层隧道协议,都是将IP包封装在附加的IP包头中通过IP网络传送

你的配置应该是正确的。但是有一些事情可能会导致源地址转换规则无效:

如果有其他的防火墙规则在 POSTROUTING 链上,那么这些规则可能会覆盖你的源地址转换规则。你可以尝试将你的源地址转换规则放在最后,以确保它是最后一个被应用的规则。

你可能需要设置主机的内核转发功能,以便转发数据包。你可以使用下面的命令来设置内核转发功能:

echo 1 > /proc/sys/net/ipv4/ip_forward

如果你的主机正在运行其他的防火墙程序,比如 iptables-persistent 或 firewalld,那么这些程序可能会忽略你在 iptables 中设置的规则。你可以尝试停止这些程序,然后再尝试转发数据包。

如果你正在使用路由器,那么它可能会忽略你在主机上设置的规则,并将数据包转发回主机。你可以尝试在路由器上设置转发规则,或者将主机设置为路由器的 DMZ 主机,这样它就可以直接接收所有的数据包。

你的服务器可能正在运行 NAT 功能,导致源地址转换规则无效。你可以尝试关闭 NAT 功能,然后再尝试转发数据包。

如果你的服务器正在运行 V/P/N,那么 它 可能会更改数据包的源地址,导致你的源地址转换规则无效。你可以尝试关闭它,然后再尝试转发数据包。

最后,你可能需要在处理数据的服务器上检查防火墙规则是否有阻止数据包的规则。

希望这些建议能帮助你解决问题。如果你还有其他问题,请继续提问,我会尽力帮助你。

二层三层四层交换机区别
二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC 地
址信息,根据MAC 地址进行转发,并将这些MAC 地址与对应的端口记录在自己内部的一个地
址表中。具体的工作流程如下:
(1) 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC 地址,这样它就知道
源MAC 地址的机器是连在哪个端口上的;
(2) 再去读取包头中的目的MAC 地址,并在地址表中查找相应的端口;
(3) 如表中有与这目的MAC 地址对应的端口,把数据包直接复制到这端口上;
(4) 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应
时,交换机又可以学习一目的MAC 地址与哪个端口对应,在下次传送数据时就不再需要对所
有端口进行广播了。
不断的循环这个过程,对于全网的MAC 地址信息都可以学习到,二层交换机就是这样建立和
维护它自己的地址表。
从二层交换机的工作原理可以推知以下三点:
(1) 由于交换机对多数端口的数据进行同时交换,这就要求具有很宽的交换总线带宽,
如果二层交换机有N个端口,每个端口的带宽是M,交换机总线带宽超过N×M,那么这交换
机就可以实现线速交换;
(2) 学习端口连接的机器的MAC 地址,写入地址表,地址表的大小(一般两种表示方式:
一为BEFFER RAM,一为MAC 表项数值),地址表大小影响交换机的接入容量;
(3) 还有一个就是二层交换机一般都含有专门用于处理数据包转发的ASIC (Applicati
on specific Integrated Circuit)芯片,因此转发速度可以做到非常快。由于各个厂家
采用ASIC 不同,直接影响产品性能。
以上三点也是评判二三层交换机性能优劣的主要技术参数,这一点请大家在考虑设备选型
时注意比较。
(二)路由技术
路由器工作在OSI模型的第三层---网络层 *** 作,其工作模式与二层交换相似,但路由器工
作在第三层,这个区别决定了路由和交换在传递包时使用不同的控制信息,实现功能的方
式就不同。工作原理是在路由器的内部也有一个表,这个表所标示的是如果要去某一个地
方,下一步应该向那里走,如果能从路由表中找到数据包下一步往那里走,把链路层信息
加上转发出去;如果不能知道下一步走向那里,则将此包丢弃,然后返回一个信息交给源
地址。
路由技术实质上来说不过两种功能:决定最优路由和转发数据包。路由表中写入各种信息
,由路由算法计算出到达目的地址的最佳路径,然后由相对简单直接的转发机制发送数据
包。接受数据的下一台路由器依照相同的工作方式继续转发,依次类推,直到数据包到达
目的路由器。
而路由表的维护,也有两种不同的方式。一种是路由信息的更新,将部分或者全部的路由
信息公布出去,路由器通过互相学习路由信息,就掌握了全网的拓扑结构,这一类的路由
协议称为距离矢量路由协议;另一种是路由器将自己的链路状态信息进行广播,通过互相
学习掌握全网的路由信息,进而计算出最佳的转发路径,这类路由协议称为链路状态路由
协议。
由于路由器需要做大量的路径计算工作,一般处理器的工作能力直接决定其性能的优劣。
当然这一判断还是对中低端路由器而言,因为高端路由器往往采用分布式处理系统体系设
计。
(三)三层交换技术
近年来的对三层技术的宣传,耳朵都能起茧子,到处都在喊三层技术,有人说这是个非常
新的技术,也有人说,三层交换嘛,不就是路由器和二层交换机的堆叠,也没有什么新的
玩意,事实果真如此吗?下面先来通过一个简单的网络来看看三层交换机的工作过程。
组网比较简单
使用IP 的设备A------------------------三层交换机------------------------使用IP 的
设备B
比如A要给B 发送数据,已知目的IP,那么A就用子网掩码取得网络地址,判断目的IP 是否与
自己在同一网段。
如果在同一网段,但不知道转发数据所需的MAC 地址,A就发送一个ARP请求,B返回其MAC 地
址,A用此MAC 封装数据包并发送给交换机,交换机起用二层交换模块,查找MAC 地址表,将
数据包转发到相应的端口。
如果目的IP 地址显示不是同一网段的,那么A要实现和B的通讯,在流缓存条目中没有对应
MAC 地址条目,就将第一个正常数据包发送向一个缺省网关,这个缺省网关一般在 *** 作系统
中已经设好,对应第三层路由模块,所以可见对于不是同一子网的数据,最先在MAC 表中放
的是缺省网关的MAC 地址;然后就由三层模块接收到此数据包,查询路由表以确定到达B的
路由,将构造一个新的帧头,其中以缺省网关的MAC 地址为源MAC 地址,以主机B 的MAC 地址
为目的MAC 地址。通过一定的识别触发机制,确立主机A与B 的MAC 地址及转发端口的对应关
系,并记录进流缓存条目表,以后的A到B 的数据,就直接交由二层交换模块完成。这就通
常所说的一次路由多次转发。
以上就是三层交换机工作过程的简单概括,可以看出三层交换的特点:
由硬件结合实现数据的高速转发。
这就不是简单的二层交换机和路由器的叠加,三层路由模块直接叠加在二层交换的高速背
板总线上,突破了传统路由器的接口速率限制,速率可达几十Gbit/s。算上背板带宽,这
些是三层交换机性能的两个重要参数。
简洁的路由软件使路由过程简化。
大部分的数据转发,除了必要的路由选择交由路由软件处理,都是又二层模块高速转发,
路由软件大多都是经过处理的高效优化软件,并不是简单照搬路由器中的软件。
结论
二层交换机用于小型的局域网络。这个就不用多言了,在小型局域网中,广播包影响不大
,二层交换机的快速交换功能、多个接入端口和低谦价格为小型网络用户提供了很完善的
解决方案。
路由器的优点在于接口类型丰富,支持的三层功能强大,路由能力强大,适合用于大型的
网络间的路由,它的优势在于选择最佳路由,负荷分担,链路备份及和其他网络进行路由
信息的交换等等路由器所具有功能。
三层交换机的最重要的功能是加快大型局域网络内部的数据的快速转发,加入路由功能也
是为这个目的服务的。如果把大型网络按照部门,地域等等因素划分成一个个小局域网,
这将导致大量的网际互访,单纯的使用二层交换机不能实现网际互访;如单纯的使用路由
器,由于接口数量有限和路由转发速度慢,将限制网络的速度和网络规模,采用具有路由
功能的快速转发的三层交换机就成为首选。
一般来说,在内网数据流量大,要求快速转发响应的网络中,如全部由三层交换机来做这
个工作,会造成三层交换机负担过重,响应速度受影响,将网间的路由交由路由器去完成
,充分发挥不同设备的优点,不失为一种好的组网策略,当然,前提是客户的腰包很鼓,
不然就退而求其次,让三层交换机也兼为网际互连。
第四层交换的一个简单定义是:它是一种功能,它决定传输不仅仅依据MAC 地址(第二层网
桥)或源/目标IP 地址(第三层路由),而且依据TCP/UDP(第四层) 应用端口号。第四层交换功
能就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有>UDP转发可以实现将网络数据包从一个UDP端口传输到另一个UDP端口。通常用于网络游戏、视频流媒体等需要高效、低延迟传输的场景。UDP转发需要一个中间服务器作为转发节点,通过将数据包从客户端发送到转发服务器,再由转发服务器将数据发送给目标服务器或客户端,实现数据包的无损传输。如果需要使用UDP转发的功能,确保代理程序已启动,并将网络设置正确配置,以确保数据能够准确、高速地传输。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13378655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存