介绍
类似的P2P技术得以普及到CDN、游戏更新,甚至是win10的对等下载。
(解决方式待求证,路由器最近分区好像出了点问题,存在不确定因素)
问题出现
最近莫名其妙下载的时候,发现家中电视经常断线,PPPoE连接闪断。家中使用的是华为SA1456c千兆光猫,已开启NAT + UPnP。发现在卡顿时,电脑体验明显感觉DNS的查询变慢了,Initial Connection Time变长。检查发现华为光猫CPU占用非常高,怀疑是光猫作为电信配套的设备:成本低、转发效率不高。
解决尝试
更换路由器
由于光猫路由模式性能不足,刚好手头上有一台MT7621AT的千兆路由器。将其换为主路由器,将光猫设置成桥接模式。
整体性能确有好转,但好景不长老头子抱怨电视又开始卡顿了。
降低MTU
由于在IPV6测试测试提示大数据包传输缓慢。
当时以为是MTU问题,查询资料发现MTU为了提高可用性,默认其设置至1500。因此为了稳定,改为1280。
接入ChinaDNSng + SmartDNS
当时也有觉得应该是DNS的问题,因为发现DNS解析IPV4较慢、IPV6网页却解析速度很快。
因此处理一下DNS,将DNS换为阿里巴巴DNSv6和运营商默认DNSv6以及常用的其他几个114PublicDNS等。
NAT问题
检查防火墙位置,发现Netfilter页面下,最大连接占用超4w时,CPU占用直线上升、路由页面也开始卡顿了。
再了解一下发现TCP连接存在很多未回收的TIME_WAIT连接,最后将内核TCP连接回收时间改为激进一点的30秒。
再次尝试有所缓解卡顿的问题。
中断问题
使用命令cat /proc/interrupts
,可以发现网卡占用中断数很高。研究了一下,理论上应该irqbalance这个软件可以智能分配中断,解决网卡性能问题(但是openwrt没有,懒得编译)。
硬件加速和流控问题
每个以太网端口有RX/TX流量控制管理,可以将其关闭或设置为异步TX防止中断产生?(大概率,需要检查网络端口暂停包的数量)
NAT硬件加速有待研究,众说纷纭的玄学现象:打开ipv4 offload会断流+ping高。(待考证)
总结
- DNS:采用SmartDNS,加速解析DNS
- NAT:BitTorrent导致NAT表的大量占用
- TCP:TIME_WAIT连接数过多,需要快速回收
- 路由器、电脑方面:软件设置(降低软件最大同时连接数,以及发起连接的间隔,防止后期快速发包导致转发效率低甚至产生雪崩效应)
2020.4.3更新:
大吞吐路由器可对其进行类似服务器的TCP调优,https://colobu.com/2014/09/18/linux-tcpip-tuning/
主要为增加队列长度以及对NAT的netfilter超时时间进行调整,快速回收无用的established的连接。
2022.1.3更新:
要求分配公网IP后未出现卡顿的现象,预计为运营商NAT分配最大限制的问题