You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
变更说明
本 PR 在现有 OpenVPN outbound 支持的基础上,补充了一批稳定性、兼容性和性能改进,主要用于提升 OpenVPN TCP/UDP 节点在真实使用场景下的可用性。
主要改动
OpenVPN 连接稳定性
IPv4-only 隧道处理
network is unreachable一类错误。CBC 数据通道性能优化
数据包乱序兼容
SoftEther / VPNGate 兼容性
ifconfigpush 解析逻辑。ifconfig <local> <peer>点对点格式。测试
已在本地执行:
go test -tags with_gvisor ./transport/openvpn ./adapter/outbound测试通过。
此外,也使用多个 VPNGate OpenVPN TCP/UDP 节点进行了手动连通性测试,验证了:
备注
本 PR 主要目标是提升当前 OpenVPN outbound 的稳定性和兼容性,并减少数据通道热路径上的明显分配开销。OpenVPN 的整体吞吐仍然会受到 gVisor 用户态网络栈、Go 实现的数据通道处理以及本地代理转发路径影响,因此性能 不能 达到官方 OpenVPN 客户端水平。推翻先前几次PR建立的架构并试图完全移植 OpenVPN 的官方实现架构以追求达成与官方客户端相近的性能并不现实,作为一个简单的PR这么做并不合理,并且目前的架构实现的性能对于测试性质的用途已经够用,故不会考虑推倒重做。