V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
devzhaoyou
V2EX  ›  程序员

求教国内网络 UDP 对音视频通话的友好程度

  •  
  •   devzhaoyou ·
    gezhaoyou · 9 天前 · 3926 次点击

    本人是做 WebRTC 音视频聊天开发,音视频走的都是 UDP 协议。在模拟环境对比腾讯会议和微信,我们做的程序在抗丢包,带宽拥塞控制方面都不比腾讯差多少。

    但是在线上环境总有不少用户反馈,使用我们的产品视频通话就卡,使用腾讯会议就没问题。通过统计数据看,用户卡的时候,UDP 通信带宽非常低,基本在 100kbps 以下了。

    最近看了 V 站上有讨论国内运营商对 UDP 有限制,所以想弄明白,运营商事对国外到国内的 UDP 有限制,还是境内内部的 UDP 也有限制。为什么相同条件下腾讯会议表现不卡,我们的卡?难道运营商对腾讯会议这些用户量大的软件有白名单?

    49 条回复    2024-06-21 20:51:37 +08:00
    JensenQian
        1
    JensenQian  
       9 天前
    都有,本人回家之前用 wireguard ,给限速的只剩下一半
    用基于 tcp 的 openvpn 就没问题
    估计是了,微信什么的肯定有白名单吧
    drymonfidelia
        2
    drymonfidelia  
       9 天前
    境内肯定有限制,国内视频网站都在用 webrtc 嫖用户上传带宽
    yueji
        3
    yueji  
       9 天前
    udp 的话,记得上 fec 算法
    yankebupt
        4
    yankebupt  
       9 天前
    抗丢包做的很好的话求报一下丢包率数据……100kbps 不知道得丢多少包……
    另外不知道还剩 100kbps 是不是只够打 udp 游戏的。
    dpx
        5
    dpx  
       9 天前
    只要服务器在国内,UDP 数据不加密。问题不大。
    DonaldErvinKnuth
        6
    DonaldErvinKnuth  
       9 天前
    个人理解
    运营商针对 udp 有限制,因为无连接,容易攻击,所以会限制
    服务器拉的不同线路对 udp 的限制不一致,不清楚你们的线路是否合理
    ip 层本身有 tos ,不同的包优先级不一样,不知道是不是在这里要做优化
    运营商会对腾讯等大公司有一些特殊照顾,你们是不是也要找运营商谈
    WeaponXu
        7
    WeaponXu  
       9 天前
    网络处理有优先级啊,楼上老哥说的 tos ,腾讯肯定是付费用户。
    Kroos
        8
    Kroos  
       9 天前
    音频的话还好吧,我用 coturn 、eturnal 搭建的 ICE 服务器,15 人同一个房间(启用强制 TURN ),服务器峰值上行快到 30M 了一点问题都没有。视频的话我就不清楚了。
    Kroos
        9
    Kroos  
       9 天前
    @Kroos 不过我的 TURN 服务器就在腾讯云上
    NewYear
        10
    NewYear  
       9 天前
    我在出租屋流量连接公司专线的 wireguard ,限速 50KB ,卡得死死的,所以没有任何幻想。
    asuraa
        11
    asuraa  
       9 天前 via iPhone
    fec 然后疯狂发包就是了
    wangyucn
        12
    wangyucn  
       8 天前
    >fec 然后疯狂发包就是了

    别教别人乱搞 超过一定限度发越多丢越多
    busier
        13
    busier  
       8 天前 via iPhone
    你都自己能判断出通信带宽非常低,还有什么可抱有幻想的,明显就是运营商会特殊照顾鹅厂

    再说了 鹅厂的又不是不能用 干嘛还要去开发一个 幻想要自主可控?
    zhs227
        14
    zhs227  
       8 天前
    首先你要确定假设成不成立。音频在网络上传送的时候,你可以装个测速计看看腾讯会议之类的占用的带宽是多少,给腾讯会议上个限速看看他怎么表现,以及用了 TCP 还是用了 UDP 。在拥塞控制指示显示拥塞的时候,是否有对音频进行降码率,是否使用了 Lyra 之类的低比特率编码方案替代。除了所有这些软实力以外,就是运营商开 buf 了,这种硬实力一般的人没有,也基本上不能通过技术改进来解决。
    coderxy
        15
    coderxy  
       8 天前
    腾讯在各大运营商那边充值了,带宽不够时优先保障腾讯的报文, 你技术上怎么比?
    zombiecong
        16
    zombiecong  
       8 天前
    不同运营商对不同厂家的服务器网络路由都不一样,要在调度和架构上优化
    lasuar
        17
    lasuar  
       8 天前
    很多大厂的音视频童话服务都是有协议级别的优化的,小公司基本上很难搞,用户多起来全是投诉。纯 UDP 搞不定的,不过为什么要自研呢,直接使用云提供的 IM 服务啊,这块自研成本巨高的,不是几个人 clone 个开源项目就能搞出来的。
    wanwaneryide
        18
    wanwaneryide  
       8 天前
    @DonaldErvinKnuth 我觉得大公司其实不需要找运营商谈,毕竟通常来说,大公司的基础产品基本是不得不用的地步,即使不好用了,卡顿,普通人都会认为是运营商的问题,不会是大公司产品的问题,只要这类的投诉多了,运营商自然而然的会做相关的优化
    wy315700
        19
    wy315700  
       8 天前
    你们是不是用了 BGP 的线路。。线路质量不一样,QOS 等级不一样
    shadowyue
        20
    shadowyue  
       8 天前
    这种像基建一样的服务,感觉不用大厂成熟方案,自己搞会不会是无底洞
    toneytonight
        21
    toneytonight  
       8 天前
    真实经历过从自研放弃到大厂方案的,底层协议和算法的优化不是一个小团队可以搞定的
    mengzhuo
        22
    mengzhuo  
       8 天前
    @wangyucn 大佬!

    @devzhaoyou 其实我想上来说你们集成一下 wangyu 大佬的 udp2raw ,伪装成 tcp 就行
    deavorwei
        23
    deavorwei  
       8 天前
    udp over tcp ?
    victorc
        24
    victorc  
       8 天前
    大厂和运营商都会 1 对 1 对接商务

    小团体玩不起这个
    kenvix
        25
    kenvix  
       8 天前
    不会给你故意加延迟或者加塞,但是会有速率限制。这样可以保证游戏和通话通畅。因此一般没问题
    kenvix
        26
    kenvix  
       8 天前
    不过带宽更大的话就得和运营商那边谈了。小规模带宽(游戏)一般没问题,因此你把码率压得很低也是可以的
    guanzhangzhang
        27
    guanzhangzhang  
       8 天前
    @NewYear 我 1M 云主机 wireguard+转 tcp ,速度能有 600-700kb
    basncy
        28
    basncy  
       8 天前
    @DonaldErvinKnuth #6 没有自己的专属 IP 段, 估计不好谈, 无法优化.
    所以思科 webex, zoom, gcp 有自己的 VoIP IP 段.

    @Kroos #8 谁家的? 可以指定自建的 turn 服务器?
    LLaMA2
        29
    LLaMA2  
       8 天前
    视频 H265 720P 15fps
    音频 G711 alaw
    单路通话双向流量大概不超过 3.5Mbps ,差不多单边 220KB/s

    特么你要上 1080P H264 30fps AAC 单边差不多要 900KB/S
    cnbatch
        30
    cnbatch  
       8 天前
    有个办法绕开 UDP 限速,但不保证 100%有效

    首先建议给 UDP 测速,看看 UDP 流量是一开始就被限速,还是过一段时间再被限速的。
    遇到限速后,再在同一条宽带建立新的连接,重新再试。
    整个最好用另一条闲置线路去测,不要直接用现有的繁忙的业务线路,这样准确点。

    如果是过一段时间才遇到限速,并且建立新连接后发现限速解除,新连接再过一段时间又限速,那就说明运营商做的限速是基于端口的限速。这种情况就可以试下这个办法。

    办法很简单:
    服务器侧监听一大段端口,客户端连接这里面的端口都能通。
    客户端建立连接后,每隔一段时间就再建立新的 connection ,连上服务器侧的另一个端口,把现有通讯转过去。

    为什么客户端要建立新连接?因为这样可以保证客户端的源地址也会改变。

    这个办法就是我写的工具 UDPHop 的基本原理,做起来相对简单
    wangyucn
        31
    wangyucn  
       8 天前   ❤️ 1
    @cnbatch 我也遇到过类似的情况:

    (有时候)1. 本来 udp 连接很快,但是过了几天会非常慢。如果重连换个连接就会快起来。

    (其他有的时候)2. udp 刚连就很慢。如果手动反复重连,多试几次可以挑出来一个快(或者说丢包低)的 session 。然后可以保持快的速度很久。 (就好像底层有什么负载均衡机制,会把 udp session 分到不同的设备,反复手动重连可以“挑”出来一个快的设备)
    lightionight
        32
    lightionight  
       8 天前
    milzero
        33
    milzero  
       8 天前
    我之前做 K12 产品的,每天差不多 100W 分钟左右,按城市和运营商还有用户场景这些,差别很大。只能说这个地域性很强。

    再说 100K 这个 case ,多半是 GCC 的锅,可以检查下,是不是同时伴随丢包。
    milzero
        34
    milzero  
       8 天前
    @coderxy 好奇运营商是怎么识别出腾讯的 RTP 包的
    me1onsoda
        35
    me1onsoda  
       7 天前
    音视频不是都用 tcp 封装的 rmtp 嘛
    GreyWang
        36
    GreyWang  
       7 天前
    腾讯会议编码用的是 H265 ,本身码率会比较低,同时加了很多魔法操作,比如网络带宽差的时候降分辨率、降帧率,这些操作都能降低对带宽的要求,保证通话的流畅性,不会出现卡顿的情况。
    另外实际线上环境还有乱序到达的问题,webrtc 如果没特殊处理的话兼容性很差,基本只要一乱序就发 nack 重传,很多带宽就被浪费了。
    devzhaoyou
        37
    devzhaoyou  
    OP
       7 天前
    @milzero #33 是有丢包,如果这时候 GCC 不降带宽,暴利发包,丢包会更严重,重传带宽很高,接收端还是比较卡。从统计上看就是带宽降的非常低。每天有 1W 左右的用户,出现带宽突然降低的非常低的情况占比接近 1%
    luxor
        38
    luxor  
       7 天前
    运营商对于 UDP 不只是限速,而且还会出现断流。是所有 UDP 都断流。不存在按照端口限速的问题。
    milzero
        39
    milzero  
       7 天前
    @devzhaoyou

    超过丢包阈值后就要分析丢包类型了:
    1. 如果是运营商 QoS 导致的丢包,也有两种模式,第一个限制带宽,这种情况只有让运营商识别不到这种方式解决了,第二个是随机丢包,特征就是不管你发多少,运营商都按一定的比例来丢,这种情况就是 Fec 多发。或者尝试多径,但是成本有点高。
    2. 信道受损产生的丢包,比如离路由器或者基站远了,或者 wifi 干扰比较严重,这个时候实际带宽可能充足,也有可能受限。如果充足的话,可以考虑调整 BWE 下降的策略.
    3. 带宽受限导致的丢包,这种情况就只能考虑降级了。

    上面这些都是基于我之前的一些经验。不知道你们的架构和业务这些,可能说的不对。 都得 case by case 的分析原因,针对性的看。

    不知道这 1% 在城市,运营商(移动联调电信),场景(wifi,固网,蜂窝网络)上的分布,1%说不多,说少也不少了。
    milzero
        40
    milzero  
       7 天前
    运营商肯定会有 QoS ,但是和具体的公司还有地域相关性很高
    EsWann
        41
    EsWann  
       7 天前
    https://github.com/wangyu-/UDPspeeder
    https://github.com/wangyu-/udp2raw

    你可以看一下这两个项目,都是解决 UDP 丢包这类问题的
    opentrade
        42
    opentrade  
       7 天前
    很多云服务器对 udp 也不友好
    daokedao
        43
    daokedao  
       7 天前
    那 http/3 也受影响?不知道国内 http/3 用的怎样?
    lihaohenqiang
        44
    lihaohenqiang  
       7 天前 via iPhone
    @daokedao QUIC 流量基本就是寄,有时候跨省的 QoS
    就非常感人
    Donaldo
        45
    Donaldo  
       7 天前
    都说有限制,不过我还没遇到过。不管是打游戏,打电话,还是 Hysteria2.。。
    Meonardo
        46
    Meonardo  
       6 天前
    很神奇! 我遇到个问题, 手机 5G 网络和一台 PC 进行 WebRTC 视频通话必失败(P2P), 但是通过阿里云部署的 SFU 服务就能正常通话, 协议都是一样, 阿里云机房 IP 运营商是上了白名单吗?
    Meonardo
        47
    Meonardo  
       6 天前
    有自己部署的 STUN/TURN, 如果不通过 SFU 中转, 只通过 TURN 做转发也是不行... 这个 TURN 也是部署在阿里云.
    milzero
        48
    milzero  
       5 天前
    @Meonardo 你是 full-ice 还是 lite-ice 啊
    Meonardo
        49
    Meonardo  
       5 天前
    @milzero 是 full ice.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1053 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:29 · PVG 03:29 · LAX 12:29 · JFK 15:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.