求问:大规模 NAT1 转 4 之下,对于这个做法的一些疑问

2023-05-17 15:58:17 +08:00
 MFWT

稍微续一下上篇:人还是要活着的,还是继续折腾下技术的好,不然我还有什么依靠呢


最近河南移动大规模把 NAT 类型从 FullCone 转到 Symmetric 了(下面简称 1 转 4 ,更具体的分类在下面),根据我在网上查询到的信息,主要说法有这么两个(但是可能都不太保真,毕竟我是没有查询到官方说法),贴在下面:

  1. 如那张网传的图所说,是为了遏制 PCDN
  2. 内部消息所言,是因为移动确实太缺 IP 了,有些地方甚至连专线 IP 都开不出来了,只能出此下策

但是有趣的是,同时我在网上查询到,原因 1 是『不惜浪费 ip 』做出的决定,原因 2 是『为了节省 ip 』做出的决定

显然,这两个说法互相矛盾

其次,根据我自己对 NAT 的理解,如果单看 mapping 策略,NAT4 是『当客户机,使用同一个 ip 和端口,请求一个不同的公网地址或端口时,NAT新分配一个外部 ip 和端口』,直观感觉是比 NAT1/2/3 的『当客户机,使用同一个 ip 和端口,请求一个不同的公网地址或端口时,NAT不会新分配一个外部 ip 和端口』会多消耗公网 IP ,因为如果带机量大(连接数大)的时候,NAT4 很快会用完同一 IP 下的端口,不知道我这个理解是否正确?

因此我有这些疑问,望请各位大佬解答

  1. 1 转 4 中的 1 和 4 ,是不是 RFC3489 所规定的 FullCone 和 Symmetric ,还是说运营商会使用 RFC5389 进一步细化具体的映射和过滤规则?

  2. 1 转 4 ,究竟是浪费了 IP (利用率降低)还是节省了 IP ?

  3. 续 2 ,这个行为会不会因为上层协议是 TCP 还是 UDP 而有所变化?

  4. 另一个说法是,中国移动在这次 1 转 4 中,还额外限制了家宽的连接数(降到了 1000 甚至 500 ),那么问题 2 会不会也因为这个原因而有所改变呢?

  5. ** [与本题无关] **我有两条家宽接入,从软路由看,旧的一条能拿到 /64 的公网地址和 /60 的前缀,但是新的一条只能拿到 /64 的公网地址,拿不到前缀(两个都是路由器拨号,且设置项一模一样)。此时,会是运营商限制的可能性大,还是光猫设置不当的可能性大?如果内网设备单用新宽带,能正常获取到公网 v6 地址吗?

谢谢

3492 次点击
所在节点    宽带症候群
14 条回复
leefor2020
2023-05-17 16:02:38 +08:00
一直有个疑问,开条宽带这也不让那也不让
运营商是不是真的觉得普通人用网络刷刷抖阴就够了?
zhouqian
2023-05-17 16:30:49 +08:00
@leefor2020 最好是开通之后不上网,正常缴费。哈哈哈。
heiher
2023-05-17 16:32:20 +08:00
之前讨论过这个问题,当时的结论是 NAT4 比 NAT1 理论上可以更节省公网 IP 、端口资源,但是 NAT4 需要维护的公、私映射关系比 NAT1 更多,不利于 NAT 的硬件加速实现。
oblivion
2023-05-17 16:46:34 +08:00
在运营商的 CGNAT 模式下确实是 NAT4 更省 IP ,CGNAT 开 NAT1 是每个用户固定分配 2000~3000 个端口范围,对应 65535 个端口只能开 20~30 个私网用户,但是 CGNAT 开 NAT4 后,公网 IP 的每个端口都可以多次复用给多个私网用户,甚至同一个用户也可以复用同一个端口,可获得几十倍的并发连接数提升。
至于 @heiher #3 提到的 NAT 硬件加速,实际上现在运营商都在改造为虚拟化 vBRAS ,列如华为的 VNE9000 、中兴的 V6000 ,转发平面开始上云并且用 x86 堆性能,同步改造 NAT4 也是没什么问题的。
zhywang
2023-05-17 17:26:00 +08:00
累了,IPv4 赶紧毁灭,全面普及 IPv6 吧
NSAgold
2023-05-17 17:30:38 +08:00
宽带 IP 不够我是不信的,威胁到移动卖商用带宽我是信的。
移动一共有 3500 余万个 ip 按 4 亿宽带用户 NAT1 ,每个 IP20 用户算,只需要 2000 万个 ip 。
如果真不够的话北京移动就不会还在卖公网 ip 叠加包了。
laozhoubuluo
2023-05-17 17:42:43 +08:00
0. 手机的 IPv4 NAT 是所有手机共享一个大的地址池,靠 NAT 日志溯源。国内家宽 IPv4 NAT 的主流模式是拨号上线固定分配一个 IP 和一批端口资源(可以配置为完全固定也可以动态扩容,一般是完全固定。以下简称固定分配端口),靠端口号分配记录溯源。当然理论来说家宽也可以用手机的模式,但是 NAT 日志存储压力很大所以走这个路线的不多。
1. 是 RFC3489 ,相当于做的是 NAPT ,但是在固定分配端口的模式下限制了公网侧允许使用的 IP 和端口范围。
2. NAT4 对运营商设备跟踪会话的能力要求增高了,毕竟 NAT1 只要源端口一样那不管多少连接只占用一个会话,而 NAT4 是一个连接一条会话,至于 TCP 还是 UDP 感觉不是重点。如果在 NAT4 的同时改成和手机一样的共享地址池模式那确实可以节省 IP 占用(类似多年前北京移动只用几个 C 段承载整个北京的手机上网服务,不知道现在改没改),但如果是固定分配端口模式,节约地址只能靠砍单用户端口数初始值和上限(完全固定的话初始值=上限,动态扩容的话允许动态扩容几次后达到上限)以及连接数上限( NAT 会话数同样是资源)来实现。

另外拿不到前缀的问题请先跳开软路由用其他确认 IPv6 支持没问题的设备测试,如果仍然只有 64 那就是运营商配置 DHCP-PD 的问题,因为 /60 或者 /56 的大前缀是通过 DHCP-PD 协议下发的。
artnowben
2023-05-17 18:19:42 +08:00
很多运营商的 CGNAT 使用 DPDK 开发,思路与四层负载均衡相通,用五元组表示一条连接:
(协议,源 IP ,源端口,目的 IP ,目的端口) -> (协议,公网 IP1 ,端口 1 ,目的 IP ,目的端口)
同一个公网 IP 与端口,可以用于多个不同的目的 IP 、目的端口。用少量公网 IP 池可以承载非常多的连接。

例如,dperf 单机可以承载几十亿并发连接数,原理就是端口可以复用,只要五元组中任意一项不一样,就表示一个新的连接。国内的几个头部运营商都在用 dperf 来测试他们的网络组件包括 CGNAT ,不妨了解一下高并发的原理。
https://github.com/baidu/dperf
MFWT
2023-05-17 18:56:34 +08:00
@zhouqian
不可能的,前段时间看过一个老哥的例子,说是从 DNS53 换成了自建的 DoH ,结果一段时间后运营商打电话来问是不是宽带闲置了(因为没检测到 DNS 解析请求了)
MFWT
2023-05-17 18:59:22 +08:00
@laozhoubuluo 同一个软路由双线接入,旧宽带可以拿到 PD ,新的不行,不知道是不是因为双线接入的缘故?
laozhoubuluo
2023-05-17 20:20:43 +08:00
@MFWT 本质上双线就是两条单独的宽带嘛,双线自身肯定不是问题。
如果软路由没问题,那么基本上就是运营商在 BRAS 上或者认证系统上配置的数据异常,比如地址池之类的。
不过带着软路由这样一个复杂、影响因素多的东西测试麻烦,而且运营商也不一定认可。最简单的就是排除软路由,直接拿个单独的路由器分别测试两条线路,如果结果和软路由一致就可以拿单独测试的结果去找师傅,报修甚至投诉。
qwvy2g
2023-05-17 20:54:58 +08:00
有端口复用技术,能让一个端口同时建立支持多个连接。只是不知道这个技术和 nat 类型有没有关系。
K8dcnPEZ6V8b8Z6
2023-05-17 21:24:20 +08:00
@leefor2020 事实上大部分普通人真的就只需要这样
xinJang
2023-05-17 21:29:20 +08:00
广东移动:关我屁事?
广东移动用户:你敢改试试,欠收拾了?大不了全额退费注销走人

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

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

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

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

© 2021 V2EX