Address Group
---------------------------------------
224.0.0.1 All systems on this subnet
224.0.0.2 All routers on this subnet
224.0.0.4 DVMRP routers
224.0.0.5 All OSPF routers
224.0.0.6 OSPF designated routers
224.0.0.9 RIP-2 routers
224.0.0.10 EIGRP routers
224.0.0.13 PIM routers
224.0.0.15 CBT routers
224.0.1.39 Cisco-RP-Announce
224.0.1.40 Cisco-RP-Discovery
以太网组播地址的映射
具有多播功能的以太网、令牌环和FDDI的NIC都采用保留的IEEE802地址0100.5E00.0000来决定唯一的多播MAC地址。
以太网接口把组IP地址的最后23bit映射到保留的MAC地址的最后23bit组成一个多播MAC地址,如上图所示。图中,以太网的多播MAC地址是由IP地址的最后23bit连接在MAC地址0100.5E00.0000的前256bit后构成。
如OSPF的224.0.0.5的组播MAC地址0100.5E00.0005就是这么得来的。
为什么组播MAC需要映射?难道直接用原来的MAC不行么(10进制转16进制)? 其实,D类地址跟A、B、C类完全是不同的,当初定义就不一样,所以,MAC地址的算法自然也就不一样!在考虑组播时不要拿它跟普通IP做对比。 另外,组播的源地址大部分在软件上设置(如视频电视等),当然router上也可以设置组播源。
从上面的图中可以看出,每一个组播MAC都会对应32个不同的地址,因为D类地址规则是“1110”,又因组播MAC是由IP地址的后23位映射的,所以中间有“10111”五位可变的位,也就是2的5次方,32个组合。
虽然有重复,但根据IETF的观点,这种可能性比较小,在此可以不用深入研究为什么可能性小。
组播管理协议IGMP
IGMPv2:
IGMPv2的主机功能:
1. Membership Report 消息
主机加入组播时发出,不会等待路由器的查询。此信息发送的时间间隔为10s.
因为主机发的信息是组播的,所以组中的其他成员也会收到这个信息,如果主机在它的计时器超时前收到Membership Report信息,他就不会再发送此信息,这样可以节约带宽,不会使整个子网充斥这Membership Report信息。
2. Version 1 Membership Report 消息
为了兼容IGMPv1的消息而设置的。
3. Leave Group 消息
主机退出时发出的消息。
IGMPv2的路由功能:
1. General Query
路由器对所有子网进行轮询查找是否有组员存在。默认时间间隔为60s,可以通过ip igmp query-interveal命令来更改此默认时间。
此查询包含Max Response Time的值,这个值是主机用Membership Report来响应查询的时间,这个值的默认时间为10s,可以通过ip igmp query-max-response-time来改变。Max Response Time占用了8bit。
此消息被发向“子网中的所有系统”224.0.0.1 ,也就是所有支持多播的设备。如果路由器连续3次发送的查询没有回应,那么它就认为它的子网中没有此组的组员。
2. Group-Specific Query
主机正常退出时会发送Leave Group ,当路由器收到此信息后,必须判断子网中是否有组员存在,为了这个目的,路由器会发送Group-Specific Query,与Greneral Query不同的是,它包含的是组的地址,目的地址是组地址而不是224.0.0.1。
如果此信息被破坏或被丢弃,组员收不到,那么路由器会认为没有组员存在而停止转发组数据。因此路由器会每隔1s分别发送2个Group-Specific Query消息。
当多播路由器被激活时,他认为自己是查询者,所以会发送General Query和 Group-Specific Query消息。当子网中有多个路由器时,会选较小IP地址的路由器做查询者。 当路由器收到General Query时,会查看源地址,如果它自己的IP地址更小,那么会继续发送查询;当新路由器收到一个General Query,发现此路由器有较小的IP,那么那么他会成为非查询者。
非查询者有一个非查询者时间间隔,也就是Other Query Present Interval,是默认时间的2倍,也就是120s,可用ip igmp query-timeout来改变。如果过了120s还收不到查询者的查询时,他会认为查询者不存在了,并自己成为查询者。
IGMPv1:
1. 没有leave group消息。
2. 没有group-specfic query消息
3. 不在查询消息中存在最大响应时间,而在主机中固定一个最大响应时间,为10s。
4. 没有选举过程,所以可能在一个子网中存在多个查询者。
IGMP v1&v2
Gold#debug ip igmp
IGMP debugging is on
Gold#
IGMP: Send v2 Query on Ethernet0/0 to 224.0.0.1
IGMP: Received v2 Report from 172.16.1.23 (Ethernet0/0) for 239.1.2.3
IGMP: Received v1 Report from 172.16.1.254 (Ethernet0/0) for 228.0.5.3
IGMP: Starting old host present timer for 228.0.5.3 on Ethernet0/0
IGMP: Send v2 Query on Ethernet0/0 to 224.0.0.1
IGMP: Received v2 Report from 172.16.1.23 (Ethernet0/0) for 239.1.2.3
IGMP: Received v1 Report from 172.16.1.254 (Ethernet0/0) for 228.0.5.3
IGMP: Starting old host present timer for 228.0.5.3 on Ethernet0/0
路由器不断发送版本2的General Queries消息,而且最大响应时间不为0。路由器收到239.1.2.3的IGMPv2的Membership Report消息与组228.0.5.3的IGMPv1的Membership Report。版本1的消息会使路由器为这个组设置一个 old host present timer时间,版本1的主机会忽略它。主机将版本2的查询理解为版本1的查询。
组成员资格协议CGMP
交换网中多播的控制方法:
1. CGMP
下面将详细讲解。
2. 手工配置的交换式多播树
静态的绑定端口和组播地址,主要有以下缺点:
1,手工配置,不适合大量部署。
2,不能跨越VLAN
3. GMRP
动态的添加多播地址,是一个开放协议,802.1p,它是一个严格的2层协议。
4. IGMP监听
支持多个厂家的3层协议,检查所有经过的IGMP消息,如果用软件来实施,那会严重降低交换机的性能,所以当交换机的硬件转发支持IGMP时(或有专门的ASIC),才推荐用这个。
CGMP的操作
CGMP是cisco的专有协议,只有路由器能产生CGMP包,交换机只能读取这些包。
CGMP分2种包:
1. Join,路由器发出,告诉交换机向多播组加入一个或多个组员。
2. Leave, 路由器发出,告诉交换机删除一个或多个组员,或是整个组。
2种包的信息包括了:
1. GDA:组目的地址
2. USA:单播源地址。
当CGMP的路由器启动后,它向交换机发送一个CGMP的join包,这个包中的GDA为0(0000.0000.0000.0000),USA设置为自己的MAC地址。于是交换机知道多播路由器连接在它收到这个包的端口上。路由器每隔60s发送一个包来维持存活。
以下是CGMP的操作过程:
主机发送IGMP Membership Report,经过交换机到达路由器,路由器会发送Join包给交换机,交换机收到后,根据包的信息,建立MAC地址与组播地址的映射关系,当路由器发送IGMP查询时,交换机会把查询信息发送到除接受端口外的所有组端口上。
主机发送IGMP Leave消息,路由器收到后,发出2个IGMP Group-Specific Query查询,交换机收到后,把此消息转到组的端口上,如果有还有组员响应,那么路由器发送IGMP Leave包到交换机,交换机收到后,根据包中的描述,删除跟组员相对应的端口。如果没有组员响应,路由器也发送IGMP Leave包,交换机收到后,删除整个组。
上面讲到都是EGMP 的Leave包,但意义不同,以下是CGMP包的格式:
Type | GDA | USA | Function |
---|---|---|---|
Join | Zero | Router MAC | Identifies the port as a multicast router port. |
Join | Group MAC | Member MAC | Identifies the multicast group and adds the member's port to the group. |
Leave | Group MAC | Member MAC | Removes the member port from the specified group. |
Leave | Group MAC | Zero | Removes the group from the CAM. |
Leave | Zero | Router MAC | Removes all groups and ports bound for the router's port from the CAM. |
Leave | Zero | Zero | Removes all groups from all switches. |
没有评论:
发表评论