关于国内 UDP 网络环境的问题

2020-06-25 17:51:14 +08:00
 Zhuzhuchenyan

Hello 又是我,

背景是这样的,

上回书说到和小伙伴一起做了一个 1v1 小游戏,目前已经在小群体发布了,目前平均每小时也有 3-4 人在线对战了。然后有玩家反应在用蜂窝网络的时候,特别是地铁上,会遇到断线的问题。

服务端对此表现为 socket.poll(read)成功后 socket.available 返回 0,或者 socket.poll(Write)返回 false

基于此小弟要做一个断线重连的机制,问题就来了,目前游戏是 UDP,TCP 双轨制,这是当时一拍脑袋的想法,因为基于状态同步的状态想通过 tcp 发送,但是对客户端每秒采样的移动速度和位置(大概 10-15HZ 频率)采用了 UDP 来发送。

断线重连时目前的想法是要同时判断 socket 是否联通,以及客户端的新的 ip endpoint 是否能回应 UDP 的响应。

然后问题来了, 团队里一直有声音说要弃用 TCP,简单在上层封装一个可靠点的 UDP,这样尤其是在断线重连时要做的逻辑少很多,暂且不说可靠点的 UDP 的工作量的问题,一直听说国内网络运营商对 UDP 包不怎么待见,但是一直不知道是为啥,能请各位说一下网络上盛传已久的国内的 UDP 环境不好的原因是什么么?

当然如果仅仅是个传言(谣言),那就再好不过了。

感谢, zhuzhu

3770 次点击
所在节点    互联网
11 条回复
terrytw
2020-06-25 18:50:36 +08:00
三家都针对 UDP 流量有明显的 QOS
电信和联通较为保守
移动大概做了个白名单,不在名单里的 UDP 流量有时候都直接给你全丢了
GreatHumorist
2020-06-25 19:06:05 +08:00
什么架构? C/S 还是 P2P?
Zhuzhuchenyan
2020-06-25 19:09:58 +08:00
Zhuzhuchenyan
2020-06-25 19:17:08 +08:00
@terrytw 好的,也就是说实际效果还要根据使用时段不同,或者是地域不同还会有差别。有的时段非常好,有的时段就会很差?
Zhuzhuchenyan
2020-06-25 20:13:15 +08:00
仔细想了想,这个问题是个伪问题。
既然担心 udp 丢包那么从一开始就不应该用,毕竟移动数据丢了,光有状态数据,这个游戏也根本完不成。
Kaiyuan
2020-06-25 20:17:20 +08:00
我倒是想知道省内隧道里面是不是也有限制,我用隧道组网打算连两个地方的监控,但是会隔秒限速。
opengps
2020-06-25 20:18:35 +08:00
udp 感觉不谈重用,是否发送成功全靠设计响应包进行的回复
既然已经用了 tcp,何不将 tcp 的改进的健壮一点,直接公用
cheng6563
2020-06-25 21:53:07 +08:00
??一般不是就是为了能自己设计断线重发机制才会用 udp 吗?
terrytw
2020-06-26 10:26:37 +08:00
@Zhuzhuchenyan 这就跟墙一样,到底他们规则如何谁也说不清,只能通过使用中的感受摸索总结规律
我总结的规律就是上面说到的那些了
Zhuzhuchenyan
2020-06-26 15:09:22 +08:00
@terrytw 好的,目前已经决定全部流量走 tcp 了(捂脸)
x1911
2020-08-02 09:33:44 +08:00
晕,最近正装备上 udp 解决延迟问题,因为实在 tcp 卡顿和掉 ping 在晚上太严重

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

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

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

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

© 2021 V2EX