组播相关

来源:互联网 发布:python meshgrid函数 编辑:程序博客网 时间:2024/05/16 15:16
1) 什么是IP组播?
协议层常需要和组群打交道,进行发现、通知、查询等工作。IP用组播IP地址在第三层组播,一个multicast IP address 可以有多个成员,组播数据包会被IP层路由器转发到组群成员所在的路由器,然后用以太网的组播功能把数据包送到组播成员的网卡接口。例,OSPF 用Hello来发现局域网中的OSPF邻居,HSRP发送Hello组播包把自己的状态通知其它的HSRP路由器。
2) 以太网怎么组播的 (multicast)?
以太网具有广播属性,一个节点发送的数据包会被以太网泛洪,导致每一个以太网网卡接口都会收到这个数据包。接口收到数据包后,并不马上交给节点CPU处理,而是进行MAC地址比较,如果数据包的目的MAC地址和接口的MAC地址一样,它才接受,把数据包交给计算机,否则就把数据包丢弃。组群成员的网卡接口除了硬件MAC地址 (unicast MAC),还有组播MAC地址 (multicast MAC)。接口收到组播包,会把此包的目的MAC地址 (是个组播MAC)和自己的MAC地址比较,如果组播地址相同,就会接受此包。这样,局网内这个组群的所有成员,都会收到送往该组群的组播包。
3) IP-Ethernet 的组播地址和组播MAC地址有什么关系?
许多MAC组播地址是从IP组播地址转换而来。例,OSPF IP组播地址是224.0.0.5, 转换为相应的MAC组播地址如下:
(1) 把IP地址(32位)用二进制表现 1110000: 00000000: 00000000: 00000101
(2) 然后抽出最右边的23叫做A: 0000000: 00000000: 00000101
(3) 把IEEE定义的组播01:00:5e作为B. B有24位 (二进制是 00000001:00000000:01011110)
(4) 合成相应的MAC组播地址如下:连接 B,0,A。 B有24位,在左边; 0是一位,在中间;A有23位,在右边。共48位。 二进制是 00000001:00000000:01011110:00000000: 00000000: 00000101 十六进制是 01:00:5e:00:00:05
4) 有多少个IP组播地址?
IP协议把224.0.0.0 ~ 239.255.255.255之间的IP地址都用做IP组播地址。以下列出前几个组播地址。 224.0.0.0 Base address (reserved)
224.0.0.1 The All Hosts multicast group that contains all systems on the same network segment 224.0.0.2 The All Routers multicast group that contains all routers on the same network segment 224.0.0.5 The Open Shortest Path First (OSPF) AllSPFRouters address. Used to send Hello packets to all OSPF routers on a network segment
224.0.0.6。The OSPF AllDRouters address. Used to send OSPF routing information to OSPF designated routers on a network segment
224.0.0.9 The RIP version 2 group address. Used to send routing information using the RIP protocol to all RIP v2-aware routers on a network segment
224.0.0.10 EIGRP group address. Used to send EIGRP routing information to all EIGRP routers 。
5) 有没有以太网专用的MAC组播地址?以下列出一些以太网专用的组播地址,
Ethernet multicast address Type Field Usage 01-00-0C-CC-CC-CC 0x0802 CDP (Cisco Discovery Protocol), VTP (VLAN Trunking ) 01-00-0C-CC-CC-CD 0x0802 Cisco Shared Spanning Tree Protocol Address 01-80-C2-00-00-00 0x0802 Spanning Tree Protocol (for bridges) IEEE 802.1D


IGMP Snooping工作机制

运行了IGMP Snooping的交换机对不同IGMP动作的具体处理方式如下:

本节中所描述的增删端口动作均只针对动态端口,静态端口只能通过相应的配置进行增删。

 

1. 普遍组查询

IGMP查询器定期向本地网段内的所有主机与路由器(224.0.0.1)发送IGMP普遍组查询报文,以查询该网段有哪些组播组的成员。

在收到IGMP普遍组查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:

l              如果在路由器端口列表中已包含该动态路由器端口,则重置其老化定时器。

l              如果在路由器端口列表中尚未包含该动态路由器端口,则将其添加到路由器端口列表中,并启动其老化定时器。

2. 报告成员关系

以下情况,主机会向IGMP查询器发送IGMP成员关系报告报文:

l              当组播组的成员主机收到IGMP查询报文后,会回复IGMP成员关系报告报文。

l              如果主机要加入某个组播组,它会主动向IGMP查询器发送IGMP成员关系报告报文以声明加入该组播组。

在收到IGMP成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,从该报文中解析出主机要加入的组播组地址,并对该报文的接收端口做如下处理:

l              如果不存在该组播组所对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;

l              如果已存在该组播组所对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;

l              如果已存在该组播组所对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器。

交换机不会将IGMP成员关系报告报文通过非路由器端口转发出去,因为根据主机上的IGMP成员关系报告抑制机制,如果非路由器端口下还有该组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该组播组的成员主机。

 

3. 离开组播组

运行IGMPv1的主机离开组播组时不会发送IGMP离开组报文,因此交换机无法立即获知主机离开的信息。但是,由于主机离开组播组后不会再发送IGMP成员关系报告报文,因此当其对应的动态成员端口的老化定时器超时后,交换机就会将该端口对应的转发表项从转发表中删除。

运行IGMPv2或IGMPv3的主机离开组播组时,会通过发送IGMP离开组报文,以通知组播路由器自己离开了某个组播组。当交换机从某动态成员端口上收到IGMP离开组报文时,首先判断要离开的组播组所对应的转发表项是否存在,以及该组播组所对应转发表项的出端口列表中是否包含该接收端口:

l              如果不存在该组播组对应的转发表项,或者该组播组对应转发表项的出端口列表中不包含该端口,交换机不会向任何端口转发该报文,而将其直接丢弃;

l              如果存在该组播组对应的转发表项,且该组播组对应转发表项的出端口列表中包含该端口,交换机会将该报文通过VLAN内的所有路由器端口转发出去。同时,由于并不知道该接收端口下是否还有该组播组的其它成员,所以交换机不会立刻把该端口从该组播组所对应转发表项的出端口列表中删除,而是重置其老化定时器。

当IGMP查询器收到IGMP离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP特定组查询报文。交换机在收到IGMP特定组查询报文后,将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。对于IGMP离开组报文的接收端口(假定为动态成员端口),交换机在其老化时间内:

l              如果从该端口收到了主机响应该特定组查询的IGMP成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置其老化定时器;

l              如果没有从该端口收到主机响应特定组查询的IGMP成员关系报告报文,则表示该端口下已没有该组播组的成员,则在其老化时间超时后,将其从该组播组所对应转发表项的出端口列表中删除。


IGMP Snooping Proxying

通过在边缘设备上配置IGMP Snooping Proxying(IGMP Snooping代理)功能,可以减少其上游设备收到的IGMP报告报文和离开报文的数量,有效提高其上游设备的整体性能。配置了IGMP Snooping Proxying功能的设备(称为IGMP Snooping代理设备),在其上游设备看来,相当于一台主机;而在其下游主机看来,则相当于一台查询器。

尽管在其上游设备看来,IGMP Snooping代理设备相当于一台主机,但主机上的IGMP成员关系报告抑制机制在IGMP Snooping代理设备上并不会生效。

 

图 3 IGMP Snooping Proxying组网图

 

如图 3所示,作为IGMP Snooping代理设备的Switch A,对其上游设备Router A来说是一台主机,代理下游主机向Router A发送报告报文和离开报文;而对其下游的主机来说则是一台查询器,代理Router A向下游主机发送普遍组查询报文和特定组查询报文,维护组成员关系。

IGMP Snooping代理设备对IGMP报文的处理方式如表 2所示。

表 2 IGMP Snooping代理设备对IGMP报文的处理方式

IGMP报文类型

处理方式

普遍组查询报文

收到普遍组查询报文后,向本VLAN内除接收端口以外的所有端口转发;同时根据本地维护的组成员关系生成报告报文,并向所有路由器端口发送

特定组查询报文

收到针对某组播组的特定组查询报文时,若该组对应的转发表项中还有成员端口,则向所有路由器端口回复该组的报告报文

报告报文

从某端口收到某组播组的报告报文时,若已存在该组对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器;若已存在该组对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;若尚不存在该组对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器,然后向所有路由器端口发送该组的报告报文

离开报文

从某端口收到某组播组的离开报文后,向该端口发送针对该组的特定组查询报文。只有当删除某组播组对应转发表项中的最后一个成员端口时,才会向所有路由器端口发送该组的离开报文

 

交换机对组播协议报文的特殊处理规则

支持IGMP Snooping功能的交换机使能了三层组播路由后,在不同的情况下对各种组播协议报文的处理有所差异。具体规则如下:

(1)        如果交换机上只使能了IGMP,或同时使能了IGMP和PIM,进行常规处理。

(2)        如果交换机上只使能了PIM:

l              对于IGMP报文,将其当作未知报文在VLAN内进行广播;

l              对于PIM Hello报文,则会为其维护相应的动态路由器端口。

(3)        在交换机上关闭IGMP时:

l              如果未使能PIM,则删除所有动态成员端口和动态路由器端口;

l              如果已使能PIM,则删除动态成员端口,只保留动态路由器端口。

(4)        在交换机上关闭PIM时:

l              如果未使能IGMP,则删除动态路由器端口;

l              如果已使能IGMP,则保留所有动态成员端口和动态路由器端口。




http://www.h3c.com.cn/Products___Technology/Technology/Group_Management/Other_technology/Technology_recommend/200805/605838_30003_0.htm

















0 0