计算机网络(4.23)网络层-网际组管理协议IGMP和多播路由选择协议

1、IP多播需要两种协议 

为了使路由器知道多播组成员的信息,需要利用网际组管理协议IGMP (Internet Group Management Protocol)。

连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议

IGMP的使用范围:IGMP 并非在互联网范围内对所有多播组成员进行管理的协议。IGMP不知道IP多播组包含的成员数,也不知道这些成员都分布在哪些网络上。

IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。

计算机网络(4.23)网络层-网际组管理协议IGMP和多播路由选择协议

多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由。

多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。

2、网际组管理协议IGMP 

1989年公布的RFC 1112(IGMPv1)早已成为了互联网的标准协议。

1997 年公布的RFC 2236(IGMPv2,建议标准)对IGMPv1进行了更新。

2002 年10月公布了RFC 3376(IGMPv3,建议标 准),宣布RFC 2236(IGMPv2)是陈旧的。

和ICMP相似,IGMP使用IP数据报传递其报文(即IGMP报文加上IP首部构成IP数据报),但它也向IP提供服务。因此,我们不把IGMP看成是一个单独的协议,而是属于整个网际协议IP的一个组成部分。

IGMP工作可分为两个阶段

第一阶段:加入多播组。当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,将组成员关系转发给互联网上的其他多播路由器。

第二阶段:探询组成员变化情况。因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要对某个组有一个主机响应,那么多播路由器就认为 这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应, 则不再将该组的成员关系转发给其他的多播路由器。

在主机和多播路由器之间的所有通信都是使用IP多播。携带IGMP报文的数据报都用硬件多播传送。

多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是每125秒发送一次。当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。

在IGMP 的询问报文中有一个数值N,它指明一个最长响应时间(默认值为10秒)。当收到询问时, 主机在0到N之间随机选择发送响应所需经过的时延。某主机同时参加几个多播组时,主机会选择不同的随机数对应每个多播组,对应于最小时延的响 应最先发送。

同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。因为多播路由器并不关心有多少主机属于该组,而只关心该组是否还至少拥有一个主机。

3、多播路由选择 

多播路由选择协议尚未标准化。一个多播组中的成员是动态变化的,随时会有主机加 入或离开这个多播组。 多播路由选择实际上就是要找出以源主机为根结点的多播转发树。

在多播转发树上的路由器不会收到重复的多播数据报。对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树。

多播路由选择协议在转发多播数据报时使用三种方 法: • (1) 洪泛与剪除。(2) 隧道技术(tunneling)。(3) 基于核心的发现技术。

(1) 洪泛与剪除

这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。一开始,路由器转发多播数据报使用洪泛的方法 (这就是广播)。为了避免兜圈子,采用了叫做反向路径广播 RPB (Reverse Path Broadcasting) 的策略。

路由器收到多播数据报时,先检查它是否是从源点经最短路径传送来的。利用反向路径法检查。

若是,就向所有其他方向转发刚才收到的多播数据报 (但进入的方向除外),否则就丢弃而不转发。

如果存在几条同样长度的最短路径,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的 相邻路由器谁的IP地址最小。最后就得出了用来转发多播数据报的多播转发树,以后就按这个多播转发树转发多播数据报。避免了多播数据报的兜圈子,同时每一个路由器也不会接收重复的多播数据报。

 如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就应把它和下游的树枝一起剪除。当某个树枝有新增加的组成员时,可以再接入到多播转发树上。

            计算机网络(4.23)网络层-网际组管理协议IGMP和多播路由选择协议

(2) 隧道技术(tunneling)

                       计算机网络(4.23)网络层-网际组管理协议IGMP和多播路由选择协议

(3) 基于核心的发现技术

这种方法对于多播组的大小在较大范围内变化时都适合。这种方法是对每一个多播组G指定一个核心(core) 路由器,给出它的IP单播地址。核心路由器按照前面讲过的方法创建出对应于多播组G的转发树。

距离向量多播路由选择协议DVMRP (Distance Vector Multicast Routing Protocol)——互联网上使用的第一个多播路由选择协议。

基于核心的转发树CBT (Core Based Tree) ——使用核心路由器作为转发树的根节点。还可划分多区域,每区域均选择一个核心路由器。

开放最短通路优先的多播扩展MOSPF (Multicast Extensions to OSPF) ——是单播路由选择协议OSPF的扩充。

协议无关多播-稀疏方式PIM-SM (Protocol Independent Multicast-Sparse Mode) ——构造多播转发树与CBT方法相同。 使用非特定的单播路由选择协议建立多播转发树。

协议无关多播-密集方式PIM-DM (Protocol Independent Multicast-Dense Mode)  ——适用于组成员集中的情况,且不使 用核心路由器,转发数据报采用洪泛方式。

单播、组播、广播之比较

单播是相互感兴趣的主机双方进行通信的方式,主机不能接收对其不感兴趣的其它主机发送的信息,属于点对点通信。

广播是主机向子网内所有主机发送信息,子网内所有主机都能收到来自某台主机的广播信息,属于点对所有点的通信。

组播则介于两者之间,是主机向一组主机发送信息,存在于某个组的所有主机都可以接收到信息,属于点对多点通信。 从

这个意义上讲,广播可以认为是组范围最大化的组播。 当然,二者还是存在显著区别的:首先,广播被限制在子网内,不会被路由器转发。其次,主机被默认为是接收者, 而组播方式则需要主机主动加入。