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

问个问题, UDP 通信每秒 200 个包压力大不大

  •  
  •   MonoLogueChi · 2019-06-13 15:04:50 +08:00 · 4674 次点击
    这是一个创建于 1991 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在两个程序之间使用 UDP 通信,大概每秒会有 200 个数据包发出,每个数据包内容大多在 100 字节以内,这么多的数据包会对程序有很大的压力嘛?

    我没学过通信相关的东西,对这方面的东西基本没有什么了解

    8 条回复    2019-06-14 10:32:35 +08:00
    Lax
        1
    Lax  
       2019-06-13 15:31:57 +08:00
    100B x 200 /s,加上报头算算带宽才多少
    zhs227
        2
    zhs227  
       2019-06-13 15:32:45 +08:00
    基本上处在一个很轻的水平,只要收包的后处理不要太 费时
    ruxuan1306
        3
    ruxuan1306  
       2019-06-13 15:33:25 +08:00
    UDP 头、IP 头、MAC 头加起来大概 50B。
    发送速率:(100B+50B)*200/1s=30000B/s=30KB/s=240kb/s=0.24Mb/s

    只要你的上行带宽高于 0.24Mb/s,我觉得,都没什么问题。
    ryd994
        4
    ryd994  
       2019-06-13 15:51:12 +08:00 via Android   ❤️ 2
    200pps 问题不大,单线程都可以轻松应对。超过几千的话可以考虑 port reuse。再高可能就不得不 dpdk 了。

    @Lax
    @ruxuan1306
    对于 100B 的小 UDP 包,瓶颈不在带宽。且不说一般的网络栈,就算 dpdk 也几无可能跑到带宽上限。
    建议二位先看篇文章学习一下基础
    https://blog.cloudflare.com/how-to-receive-a-million-packets/
    MonoLogueChi
        5
    MonoLogueChi  
    OP
       2019-06-13 23:54:57 +08:00 via Android
    @Lax @ruxuan1306 带宽不是问题,都是局域网通信,甚至很多情况都是单机上面的通信,主要是处理能力。
    @ryd994 谢谢解答,服务端和客户端都是我自己拿 C#撸出来,主要是怕自己写的东西性能太差,处理不过来。
    MonoLogueChi
        6
    MonoLogueChi  
    OP
       2019-06-13 23:57:05 +08:00 via Android
    @zhs227 处理不是很费时,一个 UTF8 编码的字符串,然后反序列化就可以了,我是担心收发包压力过大
    ryd994
        7
    ryd994  
       2019-06-14 00:32:09 +08:00 via Android
    @MonoLogueChi 涉及到业务的话就没底了
    可以多线程,一个线程专门负责收发,也可以直接用 port reuse。
    Lax
        8
    Lax  
       2019-06-14 10:32:35 +08:00
    @ryd994 谢谢指点🙏

    @MonoLogueChi 提到带宽是因为从直觉也会知道那么少的包不会有问题。前些年我还在搞网卡的时候测出过单机 1200k pps,现在上限应该更高了。另外楼主大部分是单机通讯在 loopback 设备上,更不会受到实际网卡的限制。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6009 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:10 · PVG 14:10 · LAX 22:10 · JFK 01:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.