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