Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

客户端切换网络时,当前连接会被当成新连接 #223

Open
tianwailaike61 opened this issue May 15, 2022 · 5 comments
Open

客户端切换网络时,当前连接会被当成新连接 #223

tianwailaike61 opened this issue May 15, 2022 · 5 comments

Comments

@tianwailaike61
Copy link

代码中没有使用conv当唯一标识,而是使用ip和port作为唯一标识。当客户端切换网络或者挂上VPN时,IP会改变,这样就认为是一个新连接了,后续发送的包无法和客户端对应上。这个问题需要如何处理呢?

@Gitforxuyang
Copy link

这个很麻烦吧, 如果想做连接迁移,估计得像quic一样。而且还得负载均衡器也支持才可以做到。

@ryanrain2016
Copy link

最近也遇到这个问题,公网出口端口都会变,我有每隔30秒心跳包也会这样,每隔12分钟左右之后都会变,会当作新连接,根本没法保证长连接
image

@Gitforxuyang
Copy link

最近也遇到这个问题,公网出口端口都会变,我有每隔30秒心跳包也会这样,每隔12分钟左右之后都会变,会当作新连接,根本没法保证长连接 image

你这个不太一样吧。 如果你有正常的心跳,在不切换网络的情况下理应不会变化地址跟端口的。 你这个估计是别的问题,建议重点排查一下为什么出网端口为什么会变。

@ryanrain2016
Copy link

个人项目,只有一个客户端在家里的电脑上,客户端断开或者出错会有日志,但是我没有找到相关日志。出口会变,不受我的控制,毕竟大部分情况客户端都在层层nat下

@someview
Copy link

代码中没有使用conv当唯一标识,而是使用ip和port作为唯一标识。当客户端切换网络或者挂上VPN时,IP会改变,这样就认为是一个新连接了,后续发送的包无法和客户端对应上。这个问题需要如何处理呢?

目前也准备做这件事情,quic协议里简单提到负载均衡器使用其中的perfer address port来做负载均衡,当然也可以使用previous connectionId来作负载均衡

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants