用 iptables 做端口转发的延时抖动问题

200 天前
 tiscool

背景是这样的:

现在有个 openvpn 的隧道,需要从 A 点连到 B 点(B 点有公网 IP),但是如果通过公网线路不优,延时比较大,想利用地理位置靠近 B 的 AWS EC2 上开一个 VM (C 点)去转发包,来改善延时

开始线路如下:

IP A (openvpn client) -> IP B (openvpn server) 直连 ping 值 300 ms

通过 EC2 端口转发后:

IP A (openvpn client) -> IP C(AWS EC2 NAT)-> IP B (openvpn server) 通过 AWS EC2 / IP C 的转发,IP A 到 IP B 的端到端延时的确降低不少,但不是很稳定,低的话 150ms ,但是有的时候经常性抖到 250ms 应该是端口转发带来的抖动,有什么优化思路或者更好的实现方法吗

IP A 到 IP C ,IP C 到 IP B 的公网 ping 值都非常稳定,加起来一直是 150 ms 这个量级。

希望优化方案不需要碰 openvpn server 端的配置,谢谢 V 友指导

1591 次点击
所在节点    Linux
4 条回复
nkloveni
200 天前
你这个应该不是端口转发的问题,这个坑很小,应该还是被 QoS 了,你用的 tcp 还是 udp ,用对应协议,大包 ping 下试试。
sendi
189 天前
sudo sysctl -w net.ipv4.tcp_window_scaling=1
sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 6291456'
sudo sysctl -w net.ipv4.tcp_wmem='4096 65536 6291456'
试试优化下内核 如果不行就用 haproxy 转发 tcp 和 udp 试试 可以优化更多呢
Charlie17Li
65 天前
@sendi 有个小疑问,基于 haproxy 为什么会比 iptables 更优呢?从数据包在 nat 节点的流转路径来看,iptables 的方式不需要将数据包从内核态拷贝到用户态,不是消耗更小吗
sendi
63 天前
@Charlie17Li haproxy 对 tcp 的优化多些 但是还是可以减少抖动 iptables 的消耗更小是肯定的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1037182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX