最近家庭实验室迎来了一位新的成员,我把家里的另外一台闲置的台式机也加入到了PVE的集群中。
目前家庭实验室有如下成员:
- 一台TP-Link的企业级路由器,型号为TL-ER2260T。
- 一个水晶的8口交换机,型号为 SG108C。
- 一个R4S,用来做旁路由,翻越我们的大长城。
- 一个群晖NAS,型号为DS420+,搭载3*16TB的西数企业级硬盘。
- 一个搭载AMD EPYC 7601 的服务器,可提供32C 128G 和一张3090显卡的计算资源。下面叫做pve01
- 一个搭载Intel I7 8700的台式机,可提供6C 64G 的计算能力。下面叫做pve02
- NVME固态若干、SATA固态若干、大容量的HDD固态若干。
最近下班之后一直投入在我的业余项目OpenEASM里。
这周我花了差不多一周的事件在尝试图数据库上,并不太顺利,主要卡点在于数据库的性能,目前看使用常规方法,查询和写入都是一个问题。目前Neo4j里已经有存储了超过200万个节点和300万条边。
我尝试使用物理世界的逻辑来存储通过各种方式收集到的攻击面信息,例如公司、域名、IP、DNS解析记录、子域名、ASN、域名持有人、Banner数据等。用relationship将这些数据串起来进行一些攻击面的查询。和前几年火热的知识图谱有点像。在合适的时候我会公布这个知识图谱,如果还有精力的话,会对这个图谱做自动化的更新并作为免费的数据供大家使用。
说得有点远了,这一篇主要还是讲Homelab网络的部分,现在PVE_01和PVE_02通过水晶的交换机连接,这个价值仅六十多块钱、塑料外壳的交换机让我对他的性能产生了一些不信任感,刚好今天有空,于是测试一下吞吐能力,并尝试对标一下常见云厂商的服务器性能。
右图为我现在的路由器,看到之后第一眼感觉就是“便宜”、“实惠”、“够用”。
但是如果需要它24*7高负载运行,的确是有点缺乏信心。
测试方法则采用腾讯云官方文档中提及到的方案进行测试,参考链接:https://cloud.tencent.com/document/product/213/11460
测试结果如下:
1. 带宽测试
pve01和pve02两台机器的当前配置均为千兆网卡,在pve01中的虚拟机,开启iperf3的服务端
➜ ~ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
在pve02中的虚拟机,开启iperf3的客户端,进行吞吐测试:
jinxu@ubuntu-node:~$ iperf3 -c 192.168.11.66 -b 2048M -t 300
Connecting to host 192.168.11.66, port 5201
[ 5] local 192.168.11.29 port 54598 connected to 192.168.11.66 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 113 MBytes 947 Mbits/sec 0 2.83 MBytes
[ 5] 1.00-2.00 sec 111 MBytes 934 Mbits/sec 0 2.83 MBytes
[ 5] 2.00-3.00 sec 111 MBytes 934 Mbits/sec 0 2.83 MBytes
[ 5] 3.00-4.00 sec 111 MBytes 933 Mbits/sec 0 2.83 MBytes
[ 5] 4.00-5.00 sec 111 MBytes 929 Mbits/sec 0 2.83 MBytes
[ 5] 5.00-6.00 sec 111 MBytes 934 Mbits/sec 0 2.83 MBytes
[ 5] 6.00-7.00 sec 111 MBytes 932 Mbits/sec 0 2.83 MBytes
[ 5] 7.00-8.00 sec 111 MBytes 934 Mbits/sec 0 2.83 MBytes
[ 5] 8.00-9.00 sec 111 MBytes 934 Mbits/sec 0 2.83 MBytes
[ 5] 9.00-10.00 sec 111 MBytes 934 Mbits/sec 0 2.83 MBytes
可以看到,传输速率在 934 Mbits/sec 左右,并不能跑满1Gbps的带宽。同时,两机器间的通信延迟变大,由个位数的ping值跳到了两位数的ping值。
64 bytes from 192.168.11.29: icmp_seq=2141 ttl=64 time=4.396 ms
64 bytes from 192.168.11.29: icmp_seq=2142 ttl=64 time=4.571 ms
64 bytes from 192.168.11.29: icmp_seq=2143 ttl=64 time=4.473 ms
64 bytes from 192.168.11.29: icmp_seq=2144 ttl=64 time=4.279 ms
64 bytes from 192.168.11.29: icmp_seq=2145 ttl=64 time=4.297 ms
64 bytes from 192.168.11.29: icmp_seq=2146 ttl=64 time=4.392 ms
64 bytes from 192.168.11.29: icmp_seq=2147 ttl=64 time=4.289 ms
64 bytes from 192.168.11.29: icmp_seq=2148 ttl=64 time=34.417 ms
64 bytes from 192.168.11.29: icmp_seq=2149 ttl=64 time=27.791 ms
64 bytes from 192.168.11.29: icmp_seq=2150 ttl=64 time=35.839 ms
64 bytes from 192.168.11.29: icmp_seq=2151 ttl=64 time=27.159 ms
64 bytes from 192.168.11.29: icmp_seq=2152 ttl=64 time=35.875 ms
这个成绩对比云厂商的服务器可谓是非常丢人,要知道云厂商例如腾讯云,最低档的服务器也提供1.5Gbps的内网带宽啊,我的整个pve的节点才一共1Gbps,真是落后一大截。
同时也作了同PVE内两台虚拟机的网络速度测试,在pve01上的另外一台虚拟机(网卡虚拟化技术使用 Intel E1000)上执行测试,偶尔能够跑到1Gbps,但仍有差距。
➜ ~ iperf3 -c 192.168.11.66 -b 2048M -t 300
Connecting to host 192.168.11.66, port 5201
[ 4] local 192.168.11.32 port 60036 connected to 192.168.11.66 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 85.9 MBytes 720 Mbits/sec 5 180 KBytes
[ 4] 1.00-2.00 sec 110 MBytes 924 Mbits/sec 0 226 KBytes
[ 4] 2.00-3.00 sec 113 MBytes 947 Mbits/sec 0 366 KBytes
[ 4] 3.00-4.00 sec 118 MBytes 986 Mbits/sec 0 366 KBytes
[ 4] 4.00-5.00 sec 141 MBytes 1.19 Gbits/sec 0 559 KBytes
[ 4] 5.00-6.00 sec 124 MBytes 1.04 Gbits/sec 0 625 KBytes
[ 4] 6.00-7.00 sec 114 MBytes 958 Mbits/sec 0 659 KBytes
[ 4] 7.00-8.00 sec 114 MBytes 955 Mbits/sec 0 659 KBytes
[ 4] 8.00-9.00 sec 116 MBytes 972 Mbits/sec 0 699 KBytes
[ 4] 9.00-10.00 sec 132 MBytes 1.10 Gbits/sec 0 732 KBytes
[ 4] 10.00-11.00 sec 140 MBytes 1.18 Gbits/sec 0 732 KBytes
在pve01上,使用另外一台使用VirtIO半虚拟化网卡的虚拟机发起网络吞吐测试,吞吐能达到2Gbps左右。相比 Intel E1000这种全虚拟化的方案,在同机器内的通信提升巨大,但是为什么是2Gbps,还有待研究。
[root@localhost ~]# iperf3 -c 192.168.11.66 -b 2048M -t 300
Connecting to host 192.168.11.66, port 5201
[ 4] local 192.168.11.18 port 33136 connected to 192.168.11.66 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 224 MBytes 1.88 Gbits/sec 0 1.40 MBytes
[ 4] 1.00-2.00 sec 244 MBytes 2.05 Gbits/sec 0 2.06 MBytes
[ 4] 2.00-3.00 sec 244 MBytes 2.05 Gbits/sec 0 2.21 MBytes
[ 4] 3.00-4.00 sec 243 MBytes 2.04 Gbits/sec 0 2.30 MBytes
[ 4] 4.00-5.00 sec 244 MBytes 2.05 Gbits/sec 0 2.34 MBytes
[ 4] 5.00-6.00 sec 245 MBytes 2.05 Gbits/sec 0 2.39 MBytes
[ 4] 6.00-7.00 sec 244 MBytes 2.04 Gbits/sec 0 2.40 MBytes
[ 4] 7.00-8.00 sec 244 MBytes 2.05 Gbits/sec 0 2.41 MBytes
[ 4] 8.00-9.00 sec 244 MBytes 2.05 Gbits/sec 0 2.42 MBytes
[ 4] 9.00-10.00 sec 244 MBytes 2.05 Gbits/sec 0 2.43 MBytes
[ 4] 10.00-11.00 sec 244 MBytes 2.05 Gbits/sec 0 2.44 MBytes
[ 4] 11.00-11.56 sec 146 MBytes 2.20 Gbits/sec 0 2.45 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
2. 吞吐测试
吞吐测试使用的工具是 sar和netpert,在不同宿主机间的虚拟机测试,吞吐大约为8w pps.
21时46分17秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21时46分19秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时46分19秒 ens18 76076.50 76104.50 4977.61 4982.59 0.00 0.00 0.00 0.00
21时46分19秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21时46分21秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时46分21秒 ens18 73035.50 73011.00 4778.90 4780.42 0.00 0.00 0.00 0.00
21时46分21秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21时46分23秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时46分23秒 ens18 78009.00 78004.50 5104.03 5107.23 0.00 0.00 0.00 0.00
21时46分23秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21时46分25秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时46分25秒 ens18 75537.50 75542.50 4943.03 5014.78 0.00 0.00 0.00 0.00
21时46分25秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21时46分27秒 lo 24.00 24.00 1.48 1.48 0.00 0.00 0.00 0.00
21时46分27秒 ens18 77705.00 77719.00 5084.17 5088.30 0.00 0.00 0.00 0.00
这个数据对比云厂商的机器则是更为丢人,云厂商的包转发率从30w pps到百万级pps不等。在同一宿主机上测试,发现网络pps差距不大,也为8w左右。
21时53分33秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
21时53分35秒 lo 12.00 12.00 0.74 0.74 0.00 0.00 0.00 0.00
21时53分35秒 ens18 79247.50 79258.50 5185.11 5186.84 0.00 0.00 0.00 0.00
21时53分35秒 br-754ccc599377 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时53分35秒 br-82ebaba2f69e 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时53分35秒 docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时53分35秒 br-aea22aaadb1c 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时53分35秒 br-b66bf5855ec1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时53分35秒 vethd125af7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时53分35秒 vethf3690c1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时53分35秒 veth60edd44 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时53分35秒 vethb745b61 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
下一步计划:
- 硬件层改造:升级硬件,对两台PVE主机进行万兆改造。将内网速率从1Gbps提高到10Gbps。
- 软件层改造:对新增的虚拟机,优先使用半虚拟化技术,硬件到位之后使用 SR-IOV技术提高虚拟化效率。