4.7 IP 多播
4.7.1 IP 多播的基本概念
1988 年,Steve Deering 首次提出 IP 多播的概念。
多播 (multicast):以前曾译为组播。
目的:更好地支持一对多通信。
一对多通信:一个源点发送到许多个终点。
1、多播可大大节约网络资源
2、IP 多播
在互联网上进行多播就叫做 IP 多播。
互联网范围的多播要靠路由器来实现。
能够运行多播协议的路由器称为多播路由器 (multicast router)。
多播路由器也可以转发普通的单播 IP 数据报。
从 1992 年起,在互联网上开始试验虚拟的多播主干网 MBONE (Multicast Backbone On the InterNEt)。
3、多播 IP 地址
在 IP 多播数据报的目的地址需要写入多播组的标识符。
多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。 地址范围:224.0.0.0 ~ 239.255.255.255
每一个 D 类地址标志一个多播组。
多播地址只能用于目的地址,不能用于源地址。
4、多播数据报
多播数据报和一般的 IP 数据报的区别:
目的地址:使用 D 类 IP 地址。
协议字段 = 2,表明使用网际组管理协议 IGMP。
尽最大努力交付,不保证一定能够交付多播组内的所有成员。
对多播数据报不产生 ICMP 差错报文。在 PING 命令后面键入多播地址,将永远不会收到响应。
4.7.2 在局域网上进行硬件多播
IANA 拥有的以太网地址块的高 24 位为 00-00-5E。
TCP/IP 协议使用的以太网地址块的范围是:
从 00-00-5E-00-00-00
到 00-00-5E-FF-FF-FF
IANA 只拿出 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF (223 个地址)作为以太网多播地址。或者说,在 48 位的多播地址中,前 25 位都固定不变,只有后 23 位可用作多播。
1、D 类 IP 地址与以太网多播地址的映射关系
4.7.3 网际组管理协议 IGMP 和多播路由选择协议
1、IP 多播需要两种协议
(1)网际组管理协议 IGMP (Internet Group Management Protocol)
使多播路由器知道多播组成员信息(有无成员)。
(2)多播路由选择协议
使多播路由器协同工作,把多播数据报用最小代价传送给多播组的所有成员。
(3)IGMP 使多播路由器知道多播组成员信息
(4)多播路由选择协议更为复杂
多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化),因为每一台主机可以随时加入或离开一个多播组。
多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,还要考虑这个多播数据报从什么地方来和要到什么地方去。
多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员的接入网络。
2、网际组管理协议 IGMP
1989 年公布的 RFC 1112(IGMPv1)已成为了互联网的标准协议。
1997 年公布的 RFC 2236(IGMPv2,建议标准)对 IGMPv1 进行了更新。
2002 年 10 月公布了 RFC 3376(IGMPv3,建议标准)。
(1)IGMP 使用 IP 数据报传递其报文
在 IGMP 报文加上 IP 首部构成 IP 数据报。
但 IGMP 也向 IP 提供服务。
因此,不把 IGMP 看成是一个单独的协议,而是整个网际协议 IP 的一个组成部分。
(2)IGMP 工作可分为两个阶段
第一阶段:加入多播组。
第二阶段:探询组成员变化情况。
(3)IGMP 采用的一些具体措施,以避免增加大量开销
所有通信都使用 IP 多播。只要有可能,都用硬件多播来传送。
对所有的组只发送一个请求信息的询问报文。默认询问速率是每 125 秒发送一次。
当同一个网络上连接有多个多播路由器时,能迅速和有效地选择其中的一个来探询主机的成员关系。
分散响应。在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10 秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。若一台主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送。
采用抑制机制。同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就不再发送响应了。
3、多播路由选择
转发多播数据报时使用三种方法:洪泛与剪除、隧道技术 (tunneling)、基于核心的发现技术
1)洪泛与剪除
适合于较小的多播组,所有组成员接入的局域网也是相邻接的。
开始时,路由器转发多播数据报使用洪泛的方法(这就是广播)。
为避免兜圈子,采用反向路径广播 RPB (Reverse Path Broadcasting) 的策略。
(1)RPB 的要点:检查,转发
(2)RPB 的要点:形成以源为根节点的多播转发树
(3)RPB 的要点:剪枝与嫁接
剪枝:如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就把它和下游的树枝一起剪除。
嫁接:当某个树枝有新增加的组成员时,可以再接入到多播转发树上。
2)隧道技术 (tunneling)
3)基于核心的发现技术
(1)对于多播组的大小在较大范围内变化时都适合。
(2)对每一个多播组 G 指定一个核心 (core) 路由器,并给出它的 IP 单播地址。
(3)核心路由器按照前面讲过的 2 种方法创建出对应于多播组 G 的转发树(核心路由器为根节点)。
为一个多播组构建一棵转发树,而不是为每个(源,组)组合构建一棵转发树。
构建转发树开销较小,扩展性较好。
(4)如果有一个路由器 R1 向核心路由器发送数据报,那么它在途中经过的每一个路由器都要检查其内容。
(5)当数据报到达参加了多播组 G 的路由器 R2 时,R2 就处理这个数据报。
如果 R1 发出的是一个多播数据报,其目的地址是 G 的组地址,R2 就向 G 的成员转发这个多播数据报。
如果 R1 发出的数据报是一个请求加入多播组 G 的数据报,R2 就把这个信息加到它的路由中,并用隧道技术向 R1 转发每一个多播数据报的副本。
4、几种多播路由选择协议
距离向量多播路由选择协议 DVMRP (Distance Vector Multicast Routing Protocol)。互联网上使用的第一个多播路由选择协议。
基于核心的转发树 CBT (Core Based Tree)
开放最短通路优先的多播扩展 MOSPF (Multicast Extensions to OSPF)
协议无关多播-稀疏方式 PIM-SM (Protocol Independent Multicast-Sparse Mode) 。唯一成为互联网标准的一个协议。
协议无关多播-密集方式 PIM-DM (Protocol Independent Multicast-Dense Mode)