menu LittleJake's Blog
color_lens
avatar
Jake Liu
Never Settle
creative commons by-nc-sa
hit
Category
keyboard_arrow_down

© 2024 LittleJake's Blog.

萌ICP备20223020号

P2P大并发连接导致路由器转发缓慢

BitComet

介绍

类似的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高。(待考证)

总结

  1. DNS:采用SmartDNS,加速解析DNS
  2. NAT:BitTorrent导致NAT表的大量占用
  3. TCP:TIME_WAIT连接数过多,需要快速回收
  4. 路由器、电脑方面:软件设置(降低软件最大同时连接数,以及发起连接的间隔,防止后期快速发包导致转发效率低甚至产生雪崩效应)

2020.4.3更新:
大吞吐路由器可对其进行类似服务器的TCP调优,https://colobu.com/2014/09/18/linux-tcpip-tuning/
主要为增加队列长度以及对NAT的netfilter超时时间进行调整,快速回收无用的established的连接。


2022.1.3更新:
要求分配公网IP后未出现卡顿的现象,预计为运营商NAT分配最大限制的问题

Buy me a beer

buymeacoffee
Jake Liu
Never Settle

Title: P2P大并发连接导致路由器转发缓慢

Author: Jake Liu

Origin:

Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) For any re-post you must give appropriate credit.

文章遵循CC许可 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 转载请注明出处

Tag:BitTorrent, NAT, TCP, TIME_WAIT, P2P, OpenWrt, Padavan

评论区

Add a new comment.

Theme