1.
步骤1:登录VPS(SSH),确认系统与内核版本(推荐Linux 4.9+ 支持BBR,最好5.x)。命令:uname -a && lsb_release -a。
步骤2:安装测试工具:apt/yum安装iperf3、mtr、tcpdump、ethtool、tc(iproute2)。例如Debian/Ubuntu:sudo apt update && sudo apt install -y iperf3 mtr-tiny tcpdump ethtool iproute2。
步骤3:记录基线表现:使用mtr -rwzbc 100 目标IP记录丢包与延迟,iperf3 -c 目标 -t 30 测速,tcpdump抓包(tcpdump -i eth0 -w test.pcap)。保存结果以便对比。
2.
步骤1:检测MTU路径:使用ping -M do -s 1472 目标IP逐步调整,找到最大不分片包尺寸。例如:ping -M do -s 1472 1.1.1.1。
步骤2:在VPS上设置网卡MTU:sudo ip link set dev eth0 mtu 1400(依据上一步结果调整)。确认:ip link show eth0。
步骤3:在防火墙做MSS修剪,防止TCP建立时协商过大导致分片:iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu;若没有iptables,可用nftables或路由器上配置。
3.
问题:某些虚拟化或宿主环境卸载会导致丢包或checksum问题。检查当前设置:sudo ethtool -k eth0。
实操:若怀疑问题,临时关闭卸载测试:sudo ethtool -K eth0 tso off gso off gro off;测试是否丢包减少,再决定是否长期关闭。
持久化:在系统启动脚本(/etc/rc.local 或 systemd unit)加入ethtool命令,或写入网卡配置文件(因发行版不同而异)。
4.
步骤1:备份当前配置:sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak && sysctl -a > sysctl_before.txt。
步骤2:推荐参数写入 /etc/sysctl.d/99-custom.conf,例如:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_timestamps = 1
net.core.netdev_max_backlog = 250000
应用:sudo sysctl -p /etc/sysctl.d/99-custom.conf
5.
步骤1:检查是否支持BBR:sysctl net.ipv4.tcp_available_congestion_control && lsmod | grep bbr。
步骤2:启用BBR临时:sudo modprobe tcp_bbr && sudo sysctl -w net.ipv4.tcp_congestion_control=bbr && sudo sysctl -w net.core.default_qdisc=fq。
步骤3:持久化:在 /etc/sysctl.d/99-bbr.conf 中加入 net.core.default_qdisc=fq 和 net.ipv4.tcp_congestion_control=bbr,并且在 /etc/modules-load.d/ 添加 tcp_bbr。
注意:BBR 对高丢包链路帮助有限,但对抖动与吞吐在丢包低时提升明显,须与队列管理结合。
6.
步骤1:安装 tc(iproute2已含),验证支持:tc qdisc show dev eth0。
步骤2:给出口套上 fq 或 cake 来减少缓冲膨胀:sudo tc qdisc replace dev eth0 root fq_codel limit 10240
如果想更严格控制带宽并公平排队(推荐游戏/延迟敏感):sudo tc qdisc replace dev eth0 root cake bandwidth 100mbit
步骤3:测试前后延迟使用 ping 或 mtr,观察丢包与抖动变化。注意在虚拟化环境中,宿主机队列也会影响,必要时与提供商沟通启用宿主端cake。
7.
步骤1:使用mtr从不同节点(本地、国内服务器)到VPS测试,确认丢包发生在VPS端还是上游链路:mtr -rwzbc 100 VPS_IP。
步骤2:若丢包在上游或骨干,记录时间戳、丢包率、traceroute结果(traceroute -n VPS_IP),并向VPS提供商提交工单,附上日志和pcap。
步骤3:如能使用多出口(多个网卡或BGP),考虑设置policy routing或keepalived+VRRP做链路备份,或使用第三方线路中转降低峰值波动。
8.
答:用mtr分段检测:从VPS向目标和从目标向VPS各跑一次mtr,若丢包从第一跳(宿主或网卡)开始出现,倾向VPS或宿主问题;若是中间某跳,说明上游链路问题。配合tcpdump抓SYN包和RST/ICMP信息可进一步定位。
9.
答:BBR并不会直接制造丢包,但在链路本身丢包率高时,BBR可能表现不如传统reno在某些场景。判断方法:启用后做对比测试(iperf3和mtr),观察吞吐、RTT和抖动。在短期测试中若整体吞吐、平均RTT下降且抖动减少则可保留,否则回退到默认拥塞算法并记录对比数据。
10.
答:首先持续监控(Prometheus+Grafana或Zabbix),捕捉波动时间段;在波动时抓包(tcpdump)及宿主/虚拟化监控(CPU、内存、IRQ、网卡队列)排查资源争用;将结果提交给VPS商技术支持,要求他们检查宿主节点、网络SLA或更换物理主机或线路。如果条件允许,测试不同机房或提供商的越南原生IP,比较稳定性。
