公众号旧文

IP 组播地址224.0.0.0/4到底有没有人用?

作者:胖子阅读 —

上篇文章IPv4 早就不够用了,却还闲置着 5 亿个地址中,作者说:

图片

结果评论区马上有人出来反驳:

图片

于是只好再发一篇,给上一篇打个补丁,希望能让自己不那么垃圾。

一、IP组播的初衷:让一份数据同时送给很多人

假设有一场直播,有 1 万人同时观看:

  • 单播(Unicast):服务器需要发送 1 万份数据
  • 组播(Multicast):服务器只发送 1 份数据

网络结构大概是这样:

服务器
   │
   ├─ 用户A
   ├─ 用户B
   ├─ 用户C
   └─ 用户D

单播是每个用户一条流。

而组播则变成:

服务器
   │
网络节点复制
   │
 ├─ 用户A
 ├─ 用户B
 ├─ 用户C
 └─ 用户D

理论上,组播是极其节省带宽的技术。

因此在 IPv4 地址规划中,还专门预留了一整块地址:

224.0.0.0 – 239.255.255.255

整整 2.68 亿个地址。

二、现实:公网互联网几乎不用组播

虽然组播在理论上很美好,但在真实的公网互联网里,它并没有被大规模使用。

原因主要有三个。

1.网络运营商之间很难互通

互联网并不是一个统一的网络,而是很多运营商拼接在一起:

电信  ↔  联通  ↔  移动  ↔  国外运营商

组播需要所有网络设备支持:

  • IGMP
  • PIM
  • 组播路由

但现实情况是大多数运营商并不愿意在骨干网上开放组播互通。

维护成本高,收益却很低。

2.商业模式不适合

互联网视频平台需要:

  • 用户鉴权
  • 广告插入
  • 精确统计
  • 按用户计费
  • 不同清晰度

这些需求都更适合HTTP + CDN,而不是组播。

今天主流的视频直播协议,例如:

  • HLS
  • DASH
  • HTTP-FLV

全部都是 单播 + CDN 的模式。

3.网络复杂度增加

组播网络需要维护:

  • 组成员列表
  • 路由树
  • 复制节点

这会让网络运维复杂度显著增加。

很多骨干网运营商干脆选择直接关闭组播。

三、但组播其实一直在大量使用

虽然公网互联网很少用组播,但在很多专用网络中,它反而是主力技术。

1.IPTV(运营商电视)

中国电信、联通、移动的 IPTV 系统,大量使用组播。

电视节目通常对应一个组播地址,例如:

239.x.x.x

当用户打开某个频道时:

  1. 机顶盒发送 IGMP Join
  2. 网络把对应频道流量转发过来

这样无论 1 人看还是 1 万人看,骨干网都只需要一份数据。

2.数据中心内部

在大型数据中心中,组播常用于:

  • 分布式系统同步
  • 服务发现
  • 数据广播

因为这些网络是可控环境。

3.校园网与企业网

很多校园直播、会议系统,也使用组播进行分发。

例如:

  • 校园电视
  • 内部培训直播
  • 广播系统

4.金融行情系统

金融交易系统中,行情数据常常通过组播发送。

原因是同一份数据需要同时送到大量终端。

四、为什么会产生“组播没人用”的错觉?

因为今天人们接触最多的是:

  • 抖音
  • B站
  • YouTube
  • Netflix

这些全部都是CDN + 单播。

于是很多人就误以为组播已经被淘汰了。

但只是应用场景不同。

公网互联网选择 CDN。

而封闭网络仍然大量使用组播。

五、技术世界常常如此

技术从来不是好坏之分,而是适不适合。

正如中国的一句老话:橘生淮南则为橘,生于淮北则为枳。

同样一项技术,在不同环境下,命运也完全不同。

IP组播在公网互联网没能流行,但在运营商网络、金融系统、数据中心里,它依然默默工作着。

很多用户每天看电视、看行情,却从未意识到背后其实正是组播在传输数据。

所以说 IP 组播并没有消失,只是换了一个地方继续存在。

(不知道这样是不是能让骂我的读者们满意了呢…)