网络通信 频道

组播协议和组播路由(三)

三、如何来维护组成员

现在有IGMP和CGMP(Cisco专有的)两种协议,可以进行主机和网络设备之间的组员关系的维护。

IGMP是路由器和内部子网之间通信的方式,也就是说它是三层设备对直连子网的组关系的维护机制。它可以分成两个部分,主机部分和路由器部分,每个部分可以完成不同的工作。但是它有一个限制,就是IGMP报文只能在本地子网内传送,使三层设备不能前转到其他的设备上,它的TTL总是1。

IGMPv2主机部分的功能:

运行IGMPv2的主机会产生以下3种信息:

* Member Report消息

用来指示一台主机想要加入一个组播组,这个消息在一个主机第一次加入组的时候会发出,也可以用来响应三层设备发出Membership Query消息。由于Membership Query消息的目的地址是组地址,除了路由器,网内其他的组员主机都会收到这个报文,一旦其他主机收到报文,他们将会抑制自己的Membership Query报文,避免了内部局域网充斥了Membership Query报文。它只需要让路由器知道网内还有一个组员。

* Version 1 Membership Report消息

是为了IGMPv2主机的向后兼容性,用于检测和支持子网中IGMPv1主机和路由器 (转载注明出处n et130)

* Leave Group消息

主机发出的,目的地址为224.0.0.2(所有路由器),告诉路由器主机离开了一个组。

IGMPv2路由器功能:

主要是查询功能,它会有两种查询报文,General Query和Group-Specific Query

General Query每隔一段时间就会向局域网内发送,目的地址是224.0.0.1(网内所有主机),所以子网里的每一个主机都会收到这个报文,并且会以Member Report报文回应,如果在一定的时间间隔内设备没有收到任何Member Report,它就会认为子网内没有组员。

Group-Specific Query报文,当路由器收到一个Leave Group报文的时候,它会发送这样一个具体包含有组地址的报文来查询这个组是否有组成员存在。

当如果在一个子网上同时有两个多播路由器,他们一开始都会认为自己是组播成员的查询者,当他们发送General Query报文时,通过比较从对端收到的报文源IP地址的大小来决定谁是查询者谁不是查询者,IP地址大的成为查询者。如果在一段时间内没有收到查询的报文,就会认为查询者down掉了,它就会充当起查询者的角色。



CGMP(Cisco专有)

考虑到了如果有交换机存在的情况,考虑到了在三层设备和主机中有二层设备,而IGMP是一个三层协议,二层设备如果收到这样一个类型的报文,只会向除了源端口以外的所有端口进行转发,这样会对网络的带宽和整体性能造成影响。解决的方法是希望交换机可以对有组播成员的端口进行组播报文的转发。

在交换式网络上,对组播流的控制有三种方法:

(1)手工配置的交换式多播树

在交换机的桥接表上配置静态的组播MAC地址和端口映射。

(2)GMRP(802.1p)

他让MAC层的多播组地址动态地在交换机上注册和取消。

(3)IGMP侦听

通过在交换机端口上配置,可以使交换机进行IGMP消息地检查,可以知道多播路由器和组员地位置。但是,检测IGMP消息意味着所有地IP包都要进行检查。尤其当这些如果是在软件地方式来实施,会严重降低交换机的性能。

CGMP的做法是通过路由器来告诉交换机,组播成员的组MAC地址和主机MAC地址,让交换机可以知道在那个端口上有组员,并且可以进行转发。
0
相关文章