V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
haython
V2EX  ›  问与答

一个大内网,假如里边设备超过 10 万台,同时访问一个 ip,会有问题吗?

  •  
  •   haython · 2022-02-24 15:28:10 +08:00 · 1799 次点击
    这是一个创建于 1003 天前的主题,其中的信息可能已经有所发展或是发生改变。

    TCP 的 4 元组里边规定的

    源 ip:源端口:目标 ip:目标端口
    

    来标识一个 TCP 连接,

    如果这个大内网使用同一个出口 ip ,同时访问同一个 ip 的 80 端口,会发生什么?

    16 条回复    2022-02-25 15:31:23 +08:00
    soulzz
        1
    soulzz  
       2022-02-24 15:51:39 +08:00
    不考虑带宽因素:
    服务器配置不行或者网页加载非常慢的话会造成 time_wait
    实际上如果是个静态网页,一点问题没有
    考虑带宽因素:
    带宽打满,cpu100%,卡死

    带宽不是瓶颈时的解决方法,SLB 分流
    带宽是瓶颈的解决方法,加带宽
    jifengg
        2
    jifengg  
       2022-02-24 15:53:21 +08:00
    如果目标 IP 只有一台机器,且 ip_local_port_range 为 n~n+1000 ,那么只会有最多 1000 个链接建立成功。
    因为你是同一个出口 ip ,对于目标机器来说你就是一个大整体。

    如果有两个出口 ip ,这两个出口 ip 都可以和目标机器建立 1000 个链接。
    soulzz
        3
    soulzz  
       2022-02-24 15:57:16 +08:00
    看来我的理解出现了偏差
    haython
        4
    haython  
    OP
       2022-02-24 15:58:08 +08:00
    @soulzz 配置和带宽都不是问题,我想知道的是连接能不能建立成功
    毕竟源 ip ,目标 ip 和目标端口是固定的,所以理论上是不是同时最多只能 65535 个连接?那后续的几万个发起请求的,会发生什么
    czfy
        5
    czfy  
       2022-02-24 16:01:05 +08:00
    这是看上了哪个超过 10 万员工的互联网企业,准备干点啥?
    (狗头
    soulzz
        6
    soulzz  
       2022-02-24 16:10:40 +08:00
    概括一下问题:
    城域网内,有且只有一个出口 ip ,
    网内有十万或者几十万台设备,
    同时对城域网外的同一 ip 端口发起请求
    haython
        7
    haython  
    OP
       2022-02-24 16:13:08 +08:00
    @jifengg 你说的这个 ip_local_port_range 是指的出口路由的,还是发起连接的一个内网机器的?
    如果是出口路由的,那内网机器可能并不知道,还会照常发起请求,那在出口路由给拦截回来?
    haython
        8
    haython  
    OP
       2022-02-24 16:13:20 +08:00
    @soulzz 精辟!
    soulzz
        9
    soulzz  
       2022-02-24 16:15:32 +08:00   ❤️ 1
    @haython 不是 你了解一下 java 的 netty nio ,服务器端只需要监听一个端口,同时处理几万个请求没问题
    你的问题关键点在于出口 ip 是一个时,同时往局域网外的同一 ip 端口发请求,这样可用的请求端口就少了,我猜这种情况也不会是简单的分配未使用端口,http 请求结束再回收,没有 keep-alive

    再开个脑洞,如果局域网内的几十万台设备,同一出口 ip,同时请求局域网外的同一 ip 端口,建立 tcp 长连接
    这时候会发生什么
    Tianao
        10
    Tianao  
       2022-02-24 16:16:22 +08:00
    “如果这个大内网使用同一个出口 ip ,同时访问同一个 ip 的 80 端口,会发生什么?“

    这个大内网的出口 NAT 网关会首先因为地址池可用端口枯竭而无法建立新的连接。
    haython
        11
    haython  
    OP
       2022-02-24 16:19:59 +08:00
    @Tianao 感谢,是我想要找的答案,我去了解一下相关的资料
    jifengg
        12
    jifengg  
       2022-02-24 16:39:55 +08:00   ❤️ 1
    @haython 都不是,指的是目标 IP 所在的机器的配置。
    关于这个配置,你自己搜索一下,有很多详细的解析。这篇文章很有帮助: https://mozillazg.com/2019/05/linux-what-net.ipv4.ip_local_port_range-effect-or-mean.html

    这个经常的压测的时候会碰到。
    soulzz
        13
    soulzz  
       2022-02-24 16:43:29 +08:00
    看了一下出口的问题,并发请求量级到了这个级别出口不会只有单 ip
    haython
        14
    haython  
    OP
       2022-02-24 16:47:46 +08:00
    @jifengg 你说的这些我都知道,你发的这个文章是对本机进行的设置,不是目标 ip 所在的机器
    haython
        15
    haython  
    OP
       2022-02-24 17:06:14 +08:00
    @soulzz 正常情况肯定不是单出口 ip ,但如果在只有一个 ip 的情况下,对某个长连接服务做并发压测呢[狗头]
    其实,我想知道的是数据是怎么过去的,中间都有哪些设备,哪些配置会影响并发连接数
    echoo00
        16
    echoo00  
       2022-02-25 15:31:23 +08:00
    内网 IP 访问外网需要做 NAT ,单个 IP 最多 65535 个端口,所以 10 万台机器不可能同时都出去,会有些机器访问不到互联网。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1102 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 110ms · UTC 19:00 · PVG 03:00 · LAX 11:00 · JFK 14:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.