软路由小包数据慢到拉垮?什么是小包?到底是怎么回事?
在前几的文章中大家在争论软路由小包拉垮的问题。
今天咱们就来聊聊什么是小包,以及为什么小包会拉垮的问题。在文章最后,iN给大家一个测试程序的源代码,大家也可以实际的去测试一下自己家里的路由器到底有多“拉垮”。
实际上“小包拉垮”是一个网路术语(Small Packet Performance Degradation,小包性能拉垮)Degradation直接翻译过来就是“拉垮”的意思。这是一个放之四海皆准的说法。
但为什么会出现“小包拉垮”的问题呢?
这是因为数据在以太网上传输的过程中往往需要先转换为以太网帧,一个标准的以太网帧(不包括物理层的前导码和帧尾部)的最小长度是64个字节,最大长度为1518个字节(由MTU决定)。这个长度包括了目标MAC地址、源MAC地址、长度/类型字段、有效载荷(数据)和校验和字段。数据就承载在以太网帧的有效载荷内。如果要传输的数据大于MTU(最大传输单元)就会在传输的过程中进行切片,重新封装成数个以太网帧。
这里面就需要 网卡、路由器、 交换机做出各种解封、封装、组合的动作了。通常的情况下在交换机的电路中可以直接处理以太网帧。不过以太网帧是有最小的长度的,也就是64个字节,除去帧的头部14个字节和尾部4个字节之后其有效载荷是46个字节。小于46个字节的纯数据传输都会直接消耗掉一个以太网帧。这也是最小的包长度了。
为什么叫做以太网帧呢?
因为以太网帧是以太网上有效传输的最小切片信号,你的网络接口带宽在这个层面上有多大并无所谓,关键是你的设备能在单位时间内处理多少以太网帧。所以说其实小包拉垮的问题在任何软硬件 网络设备上都是存在的,并不是软路由独有的。
但是到了软路由上,由于来源和目标地址需要软路由再做解析的。软路由并没有专门对应网络数据处理的电路,就需要解码之后再做二次处理和封装。这里就出现了额外的不必要的开销,如果数据包足够大,能以最大传输单元的形式进行传输。软路由反复解码所带来的系统开销就会少一些。但如果是持续的传输小包,要达到一定的传输速率的状况下,软路由的处理开销就相当明显了。尤其是一些软路由是纯靠CPU来计算的,甚至连专门的交换机芯片也不配备,这时候问题就更加显著。
写了个测试程序,在家跑了几轮测试,你会发现当数据包的大小被设置为64个字节的时候
实际上传输速度也就只有200兆上下,这是因为整个网络系统在处理小包数据,而计算开销的大小要远大实际传输有效数据的大小。
但一旦把网络数据包的大小增加,例如增加到6400个字节:
网络的速度就一下子跑到了接近于满速率。
那么小包的极限在哪里呢?当我们把数据包的长度设置在400字节的时候,网络还是几乎跑在了满速状态。
到100个字节的时候,速度一下子就降低下来了:
这其实就是网络数据包的处理开销远远大于了实际承载有效数据的量。
到设定为16个字节的时候,你会发现实际网速已经仅仅剩下两位数字了
这些测试,都是在一台专用路由器上做的测试。
如果换成软路由会是什么样子呢?
恰好,手里还有几个之前玩剩下的软路由,直接换接入到测试的两台电脑上:
在 服务器和测试机,以及线路都不变的情况下,跑16字节的数据小包,软路由跑小包的速度大约是路由器交换机的1/3吧。
这其实就是软路由本身性能问题给网络带来的影响了。而且,在测试软路由的时候,我们还可以发现:
在测试进行了大约80秒之后,软路由的缓冲区耗尽,包转发速率出现大幅度下降的问题。
这种问题,基本上也都是软路由通用CPU处理网络数据有局限性的实时要背锅的了。
程序给大家附加在文末了,每次测试后,会生成一张图表,大家也可以测测自己的网络到底是怎么样的:
import socket
import threading
import time
import argparse
import matplotlib.pyplot as plt
from datetime import datetime
import numpy as np
def send_small_packet_data(host, port, data, packet_size, test_duration, packet_rates):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
start_time = time.time()
packet_count = 0
second_count = 0
packet_rate = 0
while time.time() - start_time < test_duration:
try:
sock.sendto(data.encode(), (host, port))
packet_count += 1
elapsed_time = time.time() - start_time
if int(elapsed_time) > second_count:
packet_rate = packet_count
second_count += 1
packet_rates.append(packet_rate)
human_readable_rate = get_human_readable_packet_rate(packet_rate)
transmission_rate = packet_rate * packet_size * 8 # 以比特/秒为单位
human_readable_transmission_rate = get_human_readable_transmission_rate(transmission_rate)
print(f"Sent {packet_rate} packets in last second, current rate: {human_readable_rate}, packet size: {len(data)} bytes, transmission rate: {human_readable_transmission_rate}")
packet_count = 0
except socket.error as e:
print(f"Error sending data: {e}")
break
print(f"Finished sending packets for {second_count} seconds.")
sock.close()
def get_human_readable_packet_rate(packet_rate):
if packet_rate >= 10**9:
return f"{packet_rate / 10**9:.2f} gpps"
elif packet_rate >= 10**6:
return f"{packet_rate / 10**6:.2f} mpps"
elif packet_rate >= 10**3:
return f"{packet_rate / 10**3:.2f} kpps"
else:
return f"{packet_rate:.2f} pps"
def get_human_readable_transmission_rate(transmission_rate):
units = ["bps", "Kbps", "Mbps", "Gbps"]
unit_index = 0
while transmission_rate >= 1000 and unit_index < 3:
transmission_rate /= 1000
unit_index += 1
return f"{transmission_rate:.2f} {units[unit_index]}"
def receive_small_packet_data(host, port, buffer_size, packet_rates):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((host, port))
start_time = time.time()
packet_count = 0
second_count = 0
packet_rate = 0
try:
while True:
data, _ = sock.recvfrom(buffer_size)
packet_count += 1
elapsed_time = time.time() - start_time
if int(elapsed_time) > second_count:
packet_rate = packet_count
second_count += 1
packet_rates.append(packet_rate)
human_readable_rate = get_human_readable_packet_rate(packet_rate)
print(f"Received {packet_count} packets in last second, current rate: {human_readable_rate}, packet size: {len(data)} bytes")
packet_count = 0
except KeyboardInterrupt:
print(f"Stopped receiving packets. Total received: {packet_count} packets")
sock.close()
def generate_packet_rate_chart(packet_rates, host, port, packet_size, test_duration):
plt.plot(packet_rates)
plt.xlabel('Time (seconds)')
plt.ylabel('Packet Rate (packets/second)')
plt.xticks(np.arange(0, test_duration + 1, step=max(1, test_duration // 10)))
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
plt.title(f"Packet Rate Test - {timestamp}", fontsize=10)
test_info = f"Test Parameters:n Host: {host} Port: {port} Packet Size: {packet_size} bytes Test Duration: {test_duration} seconds"
plt.figtext(0.5, -0.05, test_info, wrap=True, horizontalalignment='center', fontsize=10)
plt.grid(True)
plt.tight_layout()
plt.savefig(f"packet_rate_{timestamp}.jpeg")
plt.show()
def send_tcp_data(host, port, data, packet_size, test_duration, packet_rates):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
start_time = time.time()
packet_count = 0
second_count = 0
packet_rate = 0
while time.time() - start_time < test_duration:
try:
sock.send(data.encode())
packet_count += 1
elapsed_time = time.time() - start_time
if int(elapsed_time) > second_count:
packet_rate = packet_count
second_count += 1
packet_rates.append(packet_rate)
human_readable_rate = get_human_readable_packet_rate(packet_rate)
transmission_rate = packet_rate * packet_size * 8 # 以比特/秒为单位
human_readable_transmission_rate = get_human_readable_transmission_rate(transmission_rate)
print(f"Sent {packet_rate} packets in last second, current rate: {human_readable_rate}, packet size: {len(data)} bytes, transmission rate: {human_readable_transmission_rate}")
packet_count = 0
except socket.error as e:
print(f"Error sending data: {e}")
break
print(f"Finished sending packets for {second_count} seconds.")
sock.close()
def receive_tcp_data(host, port, buffer_size, packet_rates):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((host, port))
sock.listen(1)
conn, addr = sock.accept()
start_time = time.time()
packet_count = 0
second_count = 0
packet_rate = 0
try:
while True:
data = conn.recv(buffer_size)
if not data:
break
packet_count += 1
elapsed_time = time.time() - start_time
if int(elapsed_time) > second_count:
packet_rate = packet_count
second_count += 1
packet_rates.append(packet_rate)
human_readable_rate = get_human_readable_packet_rate(packet_rate)
print(f"Received {packet_count} packets in last second, current rate: {human_readable_rate}, packet size: {len(data)} bytes")
packet_count = 0
except KeyboardInterrupt:
print(f"Stopped receiving packets. Total received: {packet_count} packets")
sock.close()
def run_test(server_mode, tcp_mode, host, port, data, packet_size, test_duration):
packet_rates = []
if tcp_mode:
send_func = send_tcp_data
receive_func = receive_tcp_data
else:
send_func = send_small_packet_data
receive_func = receive_small_packet_data
if server_mode:
print("Running in server mode...")
receive_func(host, port, packet_size, packet_rates)
else:
print("Running in client mode...")
start_time = time.time()
thread = threading.Thread(target=send_func,
args=(host, port, data, packet_size, test_duration, packet_rates))
thread.start()
thread.join()
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Sent packets for {elapsed_time:.4f} seconds.")
generate_packet_rate_chart(packet_rates, host, port, packet_size, test_duration)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Small Packet Data Test")
parser.add_argument("--server", action="store_true", help="Run in server mode")
parser.add_argument("--client", action="store_true", help="Run in client mode")
parser.add_argument("--tcp", action="store_true", help="Run in TCP mode")
parser.add_argument("host", type=str, help="Server IP address")
parser.add_argument("-z", "--packet-size", type=int, default=64, help="Packet size in bytes (default: 64)")
parser.add_argument("-d", "--test-duration", type=float, default=10.0, help="Test duration in seconds (client mode only, default: 10.0)")
args = parser.parse_args()
host = args.host
port = 12345
data = 'X' * args.packet_size
packet_size = args.packet_size
test_duration = args.test_duration
if args.server:
run_test(True, args.tcp, host, port, data, packet_size, None)
elif args.client:
run_test(False, args.tcp, host, port, data, packet_size, test_duration)
else:
print("Please specify either server mode or client mode.")
![](https://res.smzdm.com/pc/pc_shequ/dist/img/the-end.png)
- 相关商品推荐
![](https://qny.smzdm.com/202201/29/61f50c91011584005.png_a200.jpg)
WPS 金山软件 WPS 超级会员 3年卡
WPS 金山软件 WPS 超级会员 3年卡
334元起![](https://qny.smzdm.com/202308/11/64d5fadebd34e2366.png_a200.jpg)
WPS 金山软件 超级会员15个月卡+哔哩哔哩大会员年卡
WPS 金山软件 超级会员15个月卡+哔哩哔哩大会员年卡
暂无报价![](https://qny.smzdm.com/202405/14/66432df4770637874.jpg_a200.jpg)
WPS 金山软件 AI会员1年 金山办公软件官方正版
WPS 金山软件 AI会员1年 金山办公软件官方正版
188元起![](https://qny.smzdm.com/202309/06/64f83183a567e8212.png_a200.jpg)
WPS 金山软件 超级会员15个月+芒果TV年卡
WPS 金山软件 超级会员15个月+芒果TV年卡
158元起![](https://y.zdmimg.com/202312/14/657a94920703f9343.jpg_a200.jpg)
Microsoft 微软 365家庭版一年
Microsoft 微软 365家庭版一年
256.68元起![](https://qny.smzdm.com/202405/06/66389d01c4d865941.jpg_a200.jpg)
Microsoft 微软 365 家庭版 30月
Microsoft 微软 365 家庭版 30月
538元起![](https://qny.smzdm.com/202111/26/61a0aa508a5cc3278.jpg_a200.jpg)
Microsoft 微软 OFFICE 365 家庭版 会员
Microsoft 微软 OFFICE 365 家庭版 会员
248元起![](https://y.zdmimg.com/202111/11/618cc02eed62c6400.jpg_a200.jpg)
WPS 金山软件 超级会员季卡
WPS 金山软件 超级会员季卡
暂无报价![](https://y.zdmimg.com/202405/06/6638a114a1ea68787.jpg_a200.jpg)
统信 UOS桌面操作系统V20/适用于国产型号/官方正版授权/国产专用
统信 UOS桌面操作系统V20/适用于国产型号/官方正版授权/国产专用
598元起![](https://y.zdmimg.com/202404/10/66166b18ccfd38939.jpg_a200.jpg)
猎寻 手机信息采集系统1.0 -ZK5000(手机快速点验/手机检查仪)
猎寻 手机信息采集系统1.0 -ZK5000(手机快速点验/手机检查仪)
38800元起![](https://qny.smzdm.com/202205/10/627a193e859fb337.png_a200.jpg)
WPS稻壳会员1年套餐PPT模板素材字体美化图标思维导图官方正版
WPS稻壳会员1年套餐PPT模板素材字体美化图标思维导图官方正版
68元起![](https://qny.smzdm.com/202212/15/639abd68309ac1053.jpg_a200.jpg)
365office365OfficePLUS Microsoft365 12 -
365office365OfficePLUS Microsoft365 12 -
279元起![](https://qny.smzdm.com/202305/10/645b71742e9231168.jpg_a200.jpg)
WPS 金山软件 超级会员2年卡 赠AI会员
WPS 金山软件 超级会员2年卡 赠AI会员
235.6元起![](https://y.zdmimg.com/202304/10/64338d549cb24809.jpg_a200.jpg)
ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包
ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包
268元起![](https://qny.smzdm.com/202112/13/61b714b7c02c675.jpg_a200.jpg)
Microsoft 微软 OFFICE 365 个人版 办公软件
Microsoft 微软 OFFICE 365 个人版 办公软件
199元起![](https://y.zdmimg.com/202212/15/639ab8b6552dd8029.jpg_a200.jpg)
Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储
Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储
329元起-
Microsoft 微软 office365家庭版 30个月
528元(需用券)买2年送半年,到手30月。office365家庭版Microsoft365叠加优惠券:满500减30元 阅读全文8 已打分 +1 2 已打分 +1 3去购买 -
WPS 金山软件 超级会员 2年+QQ音乐绿钻 年卡
256元(需用券)365G云空间,海量模版~京东WPS旗舰店,推出QQ音乐联合会员,超级会员2年+QQ音乐绿钻年卡售价316元,领取60券... 阅读全文0 已打分 +1 0 已打分 +1 0去购买 -
WPS 金山软件 超级会员年卡+QQ音乐绿钻月卡
118元(需用券)支持PDF转word ,批量输出长图等功能~京东WPS旗舰店,此款售价168元,领取50券,实付118元到手。官方旗舰店... 阅读全文0 已打分 +1 1 已打分 +1 0去购买 -
PLUS会员:WPS 金山软件 超级会员2.5年卡+AI会员2个月+伴鱼绘本月卡
241.55元包邮(需用券)京东WPS旗舰店,此款售价349元,PLUS会员95折,叠加80元券,礼金10元,实付241.55元。额外赠送AI会员2... 阅读全文0 已打分 +1 1 已打分 +1 0去购买 -
Microsoft 微软 15月 微软office365家庭版microsoft365增强版
269元(需用券)狂暑季活动中。15月到手269元。相当合算。需要的朋友可以下单。叠加优惠券:满319元减50元 阅读全文7 已打分 +1 1 已打分 +1 1去购买 -
WPS 金山软件 AI会员年卡+超级会员月卡+伴鱼绘本月卡
165.6元包邮(需用券)WPS AI会员年卡是金山公司为其办公软件WPS推出的高级增值服务。该服务旨在为用户提供更智能、更高效的办公体验,通过A... 阅读全文0 已打分 +1 1 已打分 +1 0去购买 -
WPS大会员年卡+伴鱼绘本月卡
240.6元包邮(需用券)京东WPS旗舰店,推出WPS大会员年卡,售价348元,PLUS会员95折叠加80元券,礼金10元,实付240.6元到手,... 阅读全文0 已打分 +1 0 已打分 +1 0去购买 -
WPS 金山软件 超级会员2.5年卡+AI会员2个月+伴鱼绘本月卡
232.55元包邮(需用券)京东WPS旗舰店,此款售价329元,PLUS会员95折,叠加70元券,礼金10元,实付232.55元。加赠AI会员2个月... 阅读全文0 已打分 +1 0 已打分 +1 0去购买 -
WPS 金山软件 AI会员年卡+超级会员月卡+伴鱼绘本月卡
165.6元包邮(需用券)WPS AI会员年卡是金山公司为其办公软件WPS推出的高级增值服务。该服务旨在为用户提供更智能、更高效的办公体验,通过A... 阅读全文2 已打分 +1 1 已打分 +1 1去购买 -
WPS大会员年卡+伴鱼绘本月卡
240.6元包邮(需用券)京东WPS旗舰店,推出WPS大会员年卡,售价348元,PLUS会员95折叠加80元券,礼金10元,实付240.6元到手,... 阅读全文0 已打分 +1 0 已打分 +1 0去购买 -
PLUS会员:WPS 金山软件 超级会员2.5年卡+AI会员2个月+伴鱼绘本月卡
232.55元包邮(双重优惠)京东WPS旗舰店,此款售价329元,PLUS会员95折,叠加70元券,礼金10元,实付232.55元。加赠AI会员2个月... 阅读全文2 已打分 +1 3 已打分 +1 6去购买 -
Microsoft 微软 15月 微软office365家庭版microsoft365增强版
269元(需用券)近期线上最低的价格了。269元到手15月。价格相当不错。需要的值友可以下单叠加优惠券:满319元减50元 阅读全文6 已打分 +1 1 已打分 +1 7去购买 -
SANGFOR 深信服科技 OSM-1000-B1150运维安全管理系统
124300元京东此款目前活动售价124300元,近期好价。 阅读全文0 已打分 +1 4 已打分 +1 2去购买 -
WPS 金山软件 超级会员 2年卡
259元(需用券)此商品目前在京东特价至259,可参加满296减70元活动,近期难得好价。叠加优惠券:满296减70元 阅读全文0 已打分 +1 4 已打分 +1 1去购买 -
Microsoft 微软 到手30月 17.6元/月 微软office365家庭版续费microsoft365
528元(需用券)活动力度比较大。很合算。到手30月,平均17.6元/月,非常值 ,有需要的朋友可以下单。叠加优惠券:满558元减30元 阅读全文4 已打分 +1 0 已打分 +1 2去购买 -
WPS 金山软件 超级会员2.5年卡+AI会员2个月+云空间+伴鱼绘本月卡
269元(需用券)文档多设备实时同步,365G超大云空间~京东此款目前活动售价271元,下单领取满100减2元优惠券,优惠活动,实付低至2... 阅读全文0 已打分 +1 4 已打分 +1 0去购买 -
PLUS会员:WPS 金山软件 超级会员2.5年卡+AI会员2个月+云空间+伴鱼绘本月卡
271.6元包邮(双重优惠)京东WPS旗舰店,此款售价288元,PLUS会员95折,叠加2元券,实付271.6元,加赠AI会员2个月+云空间+伴鱼绘... 阅读全文0 已打分 +1 1 已打分 +1 0去购买 -
Microsoft 微软 限时赠送3个月。到手15个月 微软office365家庭版microsoft365增强版
269元(需用券)限时赠送3个月。到手15个月 微软office365家庭版microsoft365增强版叠加优惠券:满319元减50元 阅读全文9 已打分 +1 2 已打分 +1 9去购买 -
WPS大会员年卡+伴鱼绘本月卡+云空间
252.6元包邮京东WPS旗舰店,推出WPS大会员年卡,售价268元,PLUS会员95折叠加2元券,实付252.6元到手,加赠伴鱼绘本月... 阅读全文0 已打分 +1 0 已打分 +1 0去购买 -
PLUS会员:WPS 金山软件 超级会员2.5年卡+AI会员2个月+云空间+伴鱼绘本月卡
271.6元包邮(双重优惠)京东WPS旗舰店,此款售价288元,PLUS会员95折,叠加2元券,实付271.6元,加赠AI会员2个月+云空间+伴鱼绘... 阅读全文0 已打分 +1 1 已打分 +1 0去购买
相关文章推荐
- 最热
- 最新
-
软件资源干货2376内容 788人关注关注软件资源干货
- 蟒蛇下载神器!一键搞定所有资源类型,你值得拥有!
- 一键搞定!芙芙工具箱,你的全能小助手
- 拟声音乐神器!跨平台播放,独特体验,你值得拥有!
- 腾讯音乐黑科技!一键分离人声伴奏,MIR计算让创作更简单
- 告别PS繁琐!PhotoDirector轻松搞定专业级修图
-
G3 三模鼠标 12000DPI 800mAh98.55元G3 三模鼠标 12000DPI 800mAh
-
X1800S 无线键鼠套装 白色58.66元X1800S 无线键鼠套装 白色
-
LR03S10 彩虹碱性电池7号 1.5V 10节单色6.94元(需用券)LR03S10 彩虹碱性电池7号 1.5V 10节单色
-
AX3000满血WiFi6自研双核芯品质家居别墅ap 主路由Mesh3000M189元AX3000满血WiFi6自研双核芯品质家居别墅ap 主路由Mesh3000M
-
三网(移动 联通 电信)200元 24小时内到账195.96元三网(移动 联通 电信)200元 24小时内到账
-
小米Redmi 27英寸2K显示器 A27Q 2025款 IPS技术 100Hz719元小米Redmi 27英寸2K显示器 A27Q 2025款 IPS技术 100Hz
-
无界14X暴风雪轻薄本办公商务本游戏本笔记本电脑4299元无界14X暴风雪轻薄本办公商务本游戏本笔记本电脑
-
炼狱蝰蛇V3专业版无线鼠标 轻量化 右手人体工学设计黑色719元(需用券)炼狱蝰蛇V3专业版无线鼠标 轻量化 右手人体工学设计黑色
-
摄像头2k云台版 家用监控器宝监护器红外夜视看家高清手机查看智能摄像机300W像素婴儿看护器149.9元摄像头2k云台版 家用监控器宝监护器红外夜视看家高清手机查看智能摄像机300W像素婴儿看护器
![大容量自带线快充,联想Thinkplus充电宝体验分享](https://eimg.smzdm.com/202406/27/667d27c55607e5851.png_f600.jpg)
![只要199元的做饭神器来了!美的智能电压力锅MY-E4809众测体验报告来了~](https://eimg.smzdm.com/202406/27/667d279c2614e5403.png_f600.jpg)
![『按需打印,按页付费』不到400块钱的兄弟DCP-C421W彩色打印机是否值得买?](https://eimg.smzdm.com/202407/05/66876756176a37780.png_f600.jpg)
![生活焕新纪 篇172:大通量长效净化,冷热鲜活安心直饮—追觅U20厨下净水器](https://eimg.smzdm.com/202407/05/66876841050171196.png_f600.jpg)
![一天洗手800遍是什么体验?有了它,爱上洗手很简单~](https://eimg.smzdm.com/202407/05/668768b595f037958.png_f600.jpg)
-
智能剃须新体验——奔腾(POVOS)PQ9501黑金刚电动剃须刀289 13
-
轻弹更来劲,长跑不费劲:Nike飞马PEGASUS 41公路跑步鞋268 175
-
QCY AilyBuds Pro 真无线蓝牙耳机 主动降噪 值得入手207 22
-
走进2024中国联通合作伙伴大会,vivo创新科技亮相0 0走进2024中国联通合作伙伴大会,vivo创新科技亮相
-
教你20个风油精的使用妙招,3块钱的东西,用出300块钱的效果0 0教你20个风油精的使用妙招,3块钱的东西,用出300块钱的效果
-
明日大暑,按照老传统,吃2肉,食3菜,顺时而食,顺利过三伏天0 0明日大暑,按照老传统,吃2肉,食3菜,顺时而食,顺利过三伏天
-
燃气灶刚打好火,一松手就灭掉?动一下这个开关,瞬间解决问题5 3燃气灶刚打好火,一松手就灭掉?动一下这个开关,瞬间解决问题
-
告别油腻!舒肤佳沐浴露,让肌肤自由呼吸1 1告别油腻!舒肤佳沐浴露,让肌肤自由呼吸
-
台式微蒸烤一体机如何选:入门or进阶?平炉or风炉?超全选购干货+避坑攻略,热门品牌机型盘点!778 270台式微蒸烤一体机如何选:入门or进阶?平炉or风炉?超全选购干货+避坑攻略,热门品牌机型盘点!
-
这些年轻人太神了,自制7款“家居神器”,看着离谱,却十分好用416 182这些年轻人太神了,自制7款“家居神器”,看着离谱,却十分好用
-
超多反转超过瘾,这些推理小说不容错过363 129超多反转超过瘾,这些推理小说不容错过
-
看完就想骂?大佬气吐血?女生DIY一台电脑有多难!402 237看完就想骂?大佬气吐血?女生DIY一台电脑有多难!
-
2024年的尖端画质是何体验?——TCL X11H测评490 672024年的尖端画质是何体验?——TCL X11H测评
![](https://res.smzdm.com/pc/pc_shequ/dist/img/xiewenzhang.png)
已收藏
去我的收藏夹
捕蛇
校验提示文案
值友1542384354
校验提示文案
clamp2nd
校验提示文案
值友5438759755
校验提示文案
怂系青年
校验提示文案
棠溪2022
校验提示文案
怂系青年
校验提示文案
值友3624108104
校验提示文案
第5象限
校验提示文案
v阿诺舒华生力啤
校验提示文案
solitonor
校验提示文案
_36_
校验提示文案
marc7777
校验提示文案
爱锅者
校验提示文案
birdhuman
校验提示文案
birdhuman
校验提示文案
爱锅者
校验提示文案
marc7777
校验提示文案
怂系青年
校验提示文案
值友1542384354
校验提示文案
捕蛇
校验提示文案
_36_
校验提示文案
solitonor
校验提示文案
棠溪2022
校验提示文案
v阿诺舒华生力啤
校验提示文案
第5象限
校验提示文案
值友3624108104
校验提示文案
怂系青年
校验提示文案
值友5438759755
校验提示文案
clamp2nd
校验提示文案