apernet / tcp-brutal

GNU General Public License v3.0
654 stars 70 forks source link

中转鸡上端口转发了落地机的协议,tcpbrutal还有作用吗? #20

Closed leslieqwq closed 3 months ago

leslieqwq commented 3 months ago

rt

haruue commented 3 months ago

如果是用 iptables / nftables 的 NAT 功能做的端口转发(第三层转发), 那通常仍然是有作用的。

leslieqwq commented 3 months ago

如果是用 iptables / nftables 的 NAT 功能做的端口转发(第三层转发), 那通常仍然是有作用的。

如果用任意门这种就没用了是吗,中转鸡的bbr会介入

haruue commented 3 months ago

如果是传输层或者应用层转发的话, 那么整个传输路径实际上是要作为两部分考虑。

例如下面这种节点设计, A 是代理服务器, B 是国内中转机, C 是代理客户端。

A ==brutal== B ==bbr== C

这里假设 A-B 这一段由于经过国际出口, 丢包和延迟都比较高, 而 B-C 作为国内段丢包和延迟都低, 在这种情况下 brutal 仍然能有效地起到提升体验的作用。

核心思路是要将 brutal 用在整个传输路径中丢包和延迟表现最糟糕一部分上。

leslieqwq commented 3 months ago

如果是传输层或者应用层转发的话, 那么整个传输路径实际上是要作为两部分考虑。

例如下面这种节点设计, A 是代理服务器, B 是国内中转机, C 是代理客户端。

A ==brutal== B ==bbr== C

这里假设 A-B 这一段由于经过国际出口, 丢包和延迟都比较高, 而 B-C 作为国内段丢包和延迟都低, 在这种情况下 brutal 仍然能有效地起到提升体验的作用。

核心思路是要将 brutal 用在整个传输路径中丢包和延迟表现最糟糕一部分上。

如果是第三层转发的话,那么流程是怎么样的

haruue commented 3 months ago

如果是 iptables 或者 nftables 的 NAT 的话, 那么中转机等同于是链路上的一个第三层路由器。

这种情况下中转机只转发 IP 数据包(以及修改 IP 地址、传输层的端口、根据修改修正 checksum), 不参与 TCP 层的确认、 重传, 整个传输路径的 TCP 栈与中转机无关, 也就是说中转机自身的拥塞控制算法设置(net.ipv4.tcp_congestion_control)对经由 iptables / nftables NAT 的数据包无效。

leslieqwq commented 3 months ago

如果是 iptables 或者 nftables 的 NAT 的话, 那么中转机等同于是链路上的一个第三层路由器。

这种情况下中转机只转发 IP 数据包(以及修改 IP 地址、传输层的端口、根据修改修正 checksum), 不参与 TCP 层的确认、 重传, 整个传输路径的 TCP 栈与中转机无关, 也就是说中转机自身的拥塞控制算法设置(net.ipv4.tcp_congestion_control)对经由 iptables / nftables NAT 的数据包无效。

明白了,感谢大佬,讲得很透彻