18-组播协议操作
本章节下载 (369.16 KB)
IGMP-Snooping(Internet Group Management Protocol Snooping,IGMP侦听)是运行在二层以太网交换机上的组播约束机制,用于管理和控制组播组。
当二层以太网交换机收到主机和路由器之间传递的IGMP报文时,IGMP-Snooping将对IGMP报文所带的信息进行分析,并进行相应的处理,如表1-1所示:
收到的报文类型 |
发送者 |
接收者 |
交换机处理 |
IGMP主机报告报文(IGMP host report message) |
主机 |
交换机 |
将主机加入相应的组播组列表中 |
IGMP离开报文(IGMP leave message) |
主机 |
交换机 |
将主机相关的组播表项从组播组列表中删除 |
交换机通过监控IGMP报文,可以在数据链路层建立和维护相应的MAC组播地址表,并根据MAC组播地址表转发从路由器下发的组播报文。
如图1-1所示,没有运行IGMP-Snooping时,组播报文将在二层广播。运行IGMP-Snooping后,报文将不再在二层广播,而是进行二层组播。
图1-1 在关闭/使能IGMP-Snooping组播报文传播过程的对比
为描述方便,先介绍一下以太网交换机上与IGMP-Snooping相关的概念。
l
路由器端口(Router Port):以太网交换机上直接和组播路由器相连的端口。
l
组播成员端口:与组播组成员相连的端口。组播组成员此处是加入某个组播组的主机。
l
MAC组播组:以太网交换机维护的以MAC组播地址标识的组播组。
还有三个时间定时器与IGMP-Snooping有密切的关联:
表1-2 IGMP-Snooping相关定时器
定时器 |
设定时间 |
老化时间内收到的报文 |
超时后交换机动作 |
路由器端口老化定时器 |
路由器端口老化时间 |
IGMP通用查询报文/PIM报文/Dvmrp Probe报文 |
认定端口不是路由器端口 |
组播组成员端口老化定时器 |
组播组成员端口老化时间 |
IGMP主机报告报文 |
向组播组成员端口发送IGMP特定组查询报文 |
响应查询定时器 |
最大响应查询时间 |
IGMP报告报文 |
将端口从组播组成员端口列表上删除 |
以太网交换机通过运行IGMP-Snooping实现对IGMP报文的侦测,并为主机、主机对应端口和相应的组播MAC地址之间建立映射关系。
交换机与主机之间通过传递四种特殊的报文,实现了二层组播。下表对这四种报文及其在传输过程中的作用进行了描述。
表1-3 IGMP的四种报文
报文类型 |
发送者 |
接收者 |
目的 |
接收者处理 |
||||
IGMP通用查询报文 |
组播路由器和组播交换机 |
组播成员交换机和主机 |
查询组播组内是否存在成员 |
该查询报文是否来自原路由器端口 |
是,交换机重置路由器端口老化定时器 |
|||
不是,交换机通知组播路由器有成员加入相应的某个组播组,同时启动对该路由器端口的老化定时器 |
||||||||
IGMP特定组查询报文 |
组播路由器和组播交换机 |
组播成员交换机和主机 |
查询IGMP特定组播组是否存在成员 |
向被查询的IP组播组发IGMP特定组查询 |
||||
IGMP主机报告报文 |
主机 |
组播路由器和组播交换机 |
申请加入某个组播组或应答IGMP查询报文 |
查询IP组播组对应的MAC组播组是否存在 |
存在,判断端口是否存在于该MAC组播组中 |
存在,则将IP组播组地址加入到MAC组播组列表中 |
||
不存在,则将端口加入MAC组播组,重置端口老化定时器,并判断对应的IP组播组是否存在 |
存在,则将端口加入到对应IP组播组 |
|||||||
不存在,则新建IP组播组,将端口加入组播组 |
||||||||
不存在,则: 新建MAC组播组,同时通知组播路由器有成员要加入组播组 将端口加入到MAC组播组,同时启动端口老化定时器 将端口所在VLAN内所有端口加入MAC组播组转发表中 将端口加入到新建的IP组播组中 |
||||||||
IGMP离开报文 |
主机 |
组播路由器和组播交换机 |
告知组播路由器和组播交换机主机离开组播组 |
组播路由器和组播交换机向发出离开报文的主机所在组播组发送IGMP特定组查询报文,用于确认该组播组内是否存在成员,同时启动相应查询定时器 |
如定时器超时,交换机将判断端口是否对应唯一的MAC组播组: l 如是,则删除对应的MAC组播组,同时删除对应的IP组播组 l 不是,则仅删除MAC组播组中对应此端口的表项,同时删除对应的IP组播组表项 |
|||
如组播组无应答,且定时器超时,则交换机将通知路由器将该分支从组播树删除 |
||||||||
注意:
E126以太网交换机使能了IGMP-Snooping特性后,当收到某个组播组内的主机发出的IGMP离开报文时,会自动判断该组播组是否存在。如果该组播组不存在,则丢弃这个IGMP离开报文,不再转发。
配置任务 |
说明 |
详细配置 |
启动IGMP-Snooping配置 |
必选 |
|
多种定时器配置 |
可选 |
|
端口从组播组中快速删除功能配置 |
可选 |
|
IGMP-Snooping Filter过滤规则配置 |
可选 |
|
端口从组播组通过数量限制配置 |
可选 |
|
组播VLAN配置 |
可选 |
为了控制IGMP-Snooping是否在二层建立和维护MAC组播组转发表,可以使用下面的命令来启动IGMP-Snooping。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动系统视图下的IGMP-Snooping功能 |
igmp-snooping enable |
必选 缺省情况下IGMP-Snooping功能处于关闭状态 |
进入VLAN视图 |
vlan vlan-id |
- |
启动VLAN视图下的IGMP-Snooping功能 |
igmp-snooping enable |
必选 缺省情况下,IGMP-Snooping功能处于关闭状态 |
注意:
l
二、三层组播协议可以同时运行在交换机上,但是在同一个VLAN或该VLAN对应的虚接口上不能同时运行二层和三层组播协议。
l
在配置VLAN视图下的IGMP-Snooping前,应首先在系统视图下使能全局IGMP-Snooping,然后在VLAN视图下使能IGMP-Snooping,否则IGMP-Snooping功能不能在VLAN视图下进行配置。
本配置任务用来手工设置路由器端口老化定时器和组播组成员端口老化定时器。
l
如果在路由器端口老化时间之内没有收到路由器的IGMP通用查询报文,则交换机把该路由器端口从所有的MAC组播组的端口成员表中删除。
l
在成员端口老化时间之内,如果没有收到IGMP主机报告报文,则交换机向该端口发送IGMP特定组查询报文,同时启动该IP组播组的响应查询定时器。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置路由器端口老化定时器 |
igmp-snooping router-aging-time seconds |
可选 缺省情况下端口老化时间为105秒 |
配置组播组成员端口老化定时器 |
igmp-snooping host-aging-time seconds |
可选 缺省情况下组播组成员端口老化时间为260秒 |
正常情况下,IGMP-Snooping在接收到IGMP离开报文后不会直接将端口从组播组中删除,而是发送IGMP特定组查询报文,如果等待一段时间后没有得到响应,才将该端口从组播组中删除。
启动快速删除功能后,IGMP-Snooping收到IGMP离开报文时,直接将端口从组播组中删除。当端口下只有一个用户时,快速删除可以节省带宽。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口 |
interface
interface-type interface-number |
- |
配置端口从指定VLAN的组播组中快速删除功能 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口从组播组中快速删除功能关闭。 |
IGMP-Snooping Filter通过对连接交换机不同端口的用户配置组播过滤ACL,来限制用户可以点播的组播节目,从而实现不同的用户可以点播不同的节目组,达到区别对待VOD用户的目的。
在实际应用中,当用户点播某个组播节目时,会发起一个IGMP report报文,该报文到达交换机后,交换机检查接收端口上配置的组播过滤ACL,如果此端口可以加入这个组播组,则将这个端口加入到该组播组的转发端口列表中;否则交换机就丢弃该IGMP report报文,这样,数据流就不会送到该端口,从而达到控制用户点播组播节目的目的。
配置此特性前,请确定ACL规则已经配置完毕。
表1-8 IGMP-Snooping Filter过滤规则配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置端口组播过滤功能 |
igmp-snooping group-policy acl-number [ vlan vlan-list
] |
必选 l 用户可在ACL中配置过滤相关的组播组IP地址 l 缺省情况下,组播过滤功能关闭。 |
进入以太网端口视图 |
interface
interface-type interface-number |
- |
配置端口组播过滤功能 |
igmp-snooping group-policy acl-number [ vlan vlan-list ] |
必选 l 用户可在ACL中配置过滤相关的组播组IP地址 l 缺省情况下,组播过滤功能关闭。 |
对交换机端口进行端口组播组通过数量限制配置后,用户在点播组播组节目时,由于端口通过的组播组的数量受到限制,因此用户不能无限制的点播组播组。这样一来,端口带宽就得到了控制。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface
interface-type interface-number |
- |
限制端口上允许通过的组播组数量 |
igmp-snooping group-limit limit [ vlan
vlan-list [ overflow-replace ] ] |
必选 缺省情况下,不限制端口通过的组播组数量。 |
基于以往的组播点播方式,当处于不同VLAN的用户点播同一个组播组时,每个VLAN会在本VLAN内复制这个组播流。这样的组播点播方式,浪费了大量的带宽。
通过配置组播VLAN的方式,将交换机的端口加入到组播VLAN,并在使能了IGMP-Snooping功能以后,使不同VLAN内的用户共用一个组播VLAN,组播流只在一个组播VLAN内进行传输,从而节省了带宽。由于组播VLAN与用户VLAN完全隔离,安全和带宽都得以保证。
组播VLAN主要应用于二层交换,但在三层交换机上也必须进行相应的配置。
组播VLAN配置过程如下:
表1-10 组播VLAN(三层交换机)配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建组播VLAN,并进入VLAN视图 |
vlan vlan-id |
创建用户需要配置的组播VLAN |
退出 |
quit |
- |
创建组播VLAN接口,并进入VLAN接口视图 |
interface Vlan-interface vlan-id |
- |
使能IGMP |
igmp enable |
必选 缺省情况下,IGMP 功能关闭 |
退出 |
quit |
- |
进入与二层交换机相连的以太网端口视图 |
interface interface-type interface-number |
- |
将端口定义为trunk端口或者Hybrid端口 |
port link-type {
trunk | hybrid } |
必选 |
设置以太网允许通过的VLAN ID |
port hybrid vlan
vlan-id-list { tagged | untagged } |
必选 VLAN中必须包括二层交换机上定义的组播VLAN的ID,并且必须将该组播VLAN设置为tagged |
port trunk permit vlan vlan-list |
表1-11 组播VLAN(二层交换机)配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
系统使能IGMP-Snooping功能 |
igmp-snooping enable |
必选 |
进入VLAN视图 |
vlan vlan-id |
vlan-id为VLAN号 |
VLAN使能IGMP-Snooping功能 |
igmp-snooping enable |
必选 缺省情况下,IGMP-Snooping功能关闭 |
使能组播VLAN功能 |
service-type multicast |
必选 |
退出VLAN视图 |
quit |
- |
进入与三层交换机相连的以太网端口视图 |
interface interface-type interface-number |
- |
将端口定义为trunk端口或者Hybrid端口 |
port link-type {
trunk | hybrid } |
- |
设置以太网允许通过的VLAN ID |
port hybrid vlan vlan-list { tagged | untagged } |
VLAN中必须包括组播VLAN的ID,并且必须将组播VLAN设置为tagged |
port trunk permit vlan vlan-list |
||
进入与用户相连的以太网端口视图 |
interface interface-type interface-number |
- |
定义端口的类型为Hybrid |
port link-type hybrid |
必选 |
设置以太网端口上允许通过的VLAN ID |
port hybrid vlan
vlan-id-list { tagged | untagged } |
必选 VLAN中必须包括组播VLAN的ID,并且必须将组播VLAN设置为untagged |
& 说明:
l
一个端口只可以属于一个组播VLAN。
l
与用户终端相连的端口类型只能够为Hybrid。
l
组播成员端口必须与路由器端口属于同一个组播VLAN,否则无法接收到组播数据报文。
l
当路由器端口加入某个组播VLAN,该路由器端口必须配置成Trunk端口或者是带tag的Hybrid端口,否则在此组播VLAN内的所有的组播成员端口都无法接收到组播数据报文。
l
用户建立了组播VLAN后,所有的IGMP主机报告报文只在组播VLAN内广播。如果是非组播VLAN的组播成员端口,其所属VLAN接口将无法建立对应的二层组播表项。因此,建议用户将此端口从组播VLAN内删除。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP-Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IGMP-Snooping统计信息。
表1-12 IGMP-Snooping配置显示和维护
命令 |
说明 |
|
显示当前IGMP-Snooping的配置信息 |
display igmp-snooping configuration |
display命令可以在任意视图下执行 |
显示IGMP-Snooping对收发包的统计信息 |
display igmp-snooping statistics |
|
显示VLAN下的IP组播组和MAC组播组信息 |
display igmp-snooping group [ vlan
vlan-id ] |
|
清除IGMP-Snooping统计信息 |
reset igmp-snooping statistics |
reset命令可以在用户视图下执行 |
配置交换机实现IGMP-Snooping功能。
为了实现交换机的IGMP-Snooping功能,需要在交换机上启动IGMP-Snooping。
交换机上的路由器端口接到路由器上,其他非路由器端口(属于VLAN10)则接到用户的PC机上。
# 在系统视图下启动全局IGMP-Snooping。
<H3C> system-view
[H3C] igmp-snooping enable
# 当VLAN10没有启动三层组播协议时,启动IGMP-Snooping。
[H3C] vlan 10
[H3C-vlan10] igmp-snooping enable
配置交换机实现组播VLAN功能。
组播源为Workstation,Switch A转发组播源发出的组播数据流。组播数据流通过二层交换机Switch B被转发到最终用户PC1、PC2。
具体的设备编号如下:
设备 |
描述 |
说明 |
Switch A |
三层交换机 |
VLAN 20接口的IP地址为168.10.1.1,Ethernet1/0/1属于VLAN 20,Ethernet1/0/1和Work Station相连。 VLAN 10为组播VLAN。 端口Ethernet1/0/10与Switch B相连。 |
Switch B |
二层交换机 |
VLAN 2包含端口Ethernet1/0/1,VLAN 3包括端口Ethernet1/0/2,两个端口分别与PC1、PC2相连。 端口Ethernet1/0/10和Switch A相连。 |
PC 1 |
用户1 |
与Switch B的Ethernet1/0/1端口相连 |
PC 2 |
用户2 |
与Switch B的Ethernet1/0/2端口相连 |
配置组播VLAN,使VLAN 2和VLAN 3内的用户通过组播VLAN接收组播流。
图1-4 组播VLAN组网示意图
以下配置基于IP地址已配置,并正确连接设备的前提下进行配置操作。
(1)
Switch A上的配置
# 配置VLAN 20接口的IP地址为168.10.1.1,并使能PIM DM协议。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] vlan 20
[SwitchA-vlan20] interface Vlan-interface 20
[SwitchA-Vlan-interface20] ip address 168.10.1.1 255.255.255.0
[SwitchA-Vlan-interface20] pim dm
[SwitchA-Vlan-interface20] quit
# 配置组播VLAN 10。
[SwitchA] vlan 10
[SwitchA-vlan10] quit
# 将Ethernet1/0/10定义为Hybrid端口,并将该端口加入到VLAN 2、3、10中,端口发送VLAN 2、VLAN 3和VLAN 10的报文时带VLAN标签。
[SwitchA] interface Ethernet 1/0/10
[SwitchA-Ethernet1/0/10] port link-type hybrid
[SwitchA-Ethernet1/0/10] port hybrid vlan 2 3 10 tagged
[SwitchA-Ethernet1/0/10] quit
# 在VLAN 10接口启动PIM DM协议,并同时启用IGMP。
[SwitchA] interface Vlan-interface 10
[SwitchA-Vlan-interface10] pim dm
[SwitchA-Vlan-interface10] igmp enable
(2)
Switch B上的配置
# 启动设备IGMP-Snooping。
<SwitchB> system-view
[SwitchB] igmp-snooping enable
# 配置VLAN 10为组播VLAN,并使能IGMP-Snooping。
[SwitchB] vlan 10
[SwitchB-vlan10] service-type multicast
[SwitchB-vlan10] igmp-snooping enable
[SwitchB-vlan10] quit
# 将Ethernet 1/0/10定义为Hybrid端口,并将该端口加入到VLAN 2、3、10中,端口发送VLAN 2、VLAN 3和VLAN 10的报文时带VLAN标签。
[SwitchB] interface Ethernet 1/0/10
[SwitchB-Ethernet1/0/10] port link-type hybrid
[SwitchB-Ethernet1/0/10] port hybrid vlan 2 3 10 tagged
[SwitchB-Ethernet1/0/10] quit
# 将Ethernet 1/0/1定义为Hybrid端口,并将该端口加入到VLAN 2、VLAN 10中,端口发送VLAN 2和VLAN 10的报文时不带VLAN标签,端口的缺省VLAN为VLAN 2。
[SwitchB] interface Ethernet 1/0/1
[SwitchB-Ethernet1/0/1] port link-type hybrid
[SwitchB-Ethernet1/0/1] port hybrid vlan 2 10 untagged
[SwitchB-Ethernet1/0/1] port hybrid pvid vlan 2
[SwitchB-Ethernet1/0/1] quit
# Ethernet 1/0/2定义为Hybrid端口,并将该端口加入到VLAN 3、VLAN 10中,端口发送VLAN 3和VLAN 10的报文时不带VLAN标签,端口的缺省VLAN为VLAN 3。
[SwitchB] interface Ethernet 1/0/2
[SwitchB-Ethernet1/0/2] port link-type hybrid
[SwitchB-Ethernet1/0/2] port hybrid vlan 3 10 untagged
[SwitchB-Ethernet1/0/2] port hybrid pvid vlan 3
[SwitchB-Ethernet1/0/2] quit
故障现象:交换机不能实现组播功能。
故障排除:
(1)
IGMP-Snooping没有启动。
l
输入命令display current-configuration查看IGMP-Snooping的状态。
l
如果IGMP-Snooping没有启动,则需查看是全局下是否没有使能IGMP-Snooping,还是在对应的VLAN下没有使能IGMP-Snooping。如果是前者则需在系统视图下输入命令igmp-snooping enable全局使能IGMP-Snooping。同时在VLAN视图下输入命令igmp-snooping enable以使能对应的VLAN下IGMP-Snooping。如果是后者,则只需在VLAN视图下输入命令igmp-snooping enable以使能对应的VLAN下IGMP-Snooping。
(2)
IGMP-Snooping建立的组播转发表不正确。
l
输入命令display igmp-snooping group查看组播组是否是所预期的。
l
如果IGMP-Snooping建立的组播组不正确,请向专业维护人员求助。
l
如果排除了原因2,则进入原因分析3。
(3)
IGMP-Snooping建立的组播转发表不正确。
l
输入命令display mac-address vlan查看在vlan-id下所建立的MAC组播转发表是否和IGMP-Snooping建立的MAC组播转发表一致。
通常情况下,运行IGMP的主机会对组播路由器(或三层组播交换机)的IGMP查询报文进行响应,如果由于某种原因无法响应,就可能导致组播路由器(或三层组播交换机)认为该网段没有该组播组的成员,从而取消相应的路径。
为避免这种情况的发生,可以将二层组播交换机路由器端口所在的三层接口配置成为组播组成员,当从该接口收到IGMP查询报文时,由二层组播交换机进行响应,从而保证接口所在网段能够继续收到组播报文。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置路由端口加入指定组播组 |
igmp host-join group-address vlan vlan-id |
必选 |
缺省情况下,路由端口不加入任何组播组。需要注意的是,指定的端口必须属于该VLAN接口,否则配置不会起作用。
在二层的组播过程中,除了通过二层组播协议动态建立组播转发表项外,还可以通过手工配置组播MAC地址,将端口与组播地址表项进行静态绑定。
通常情况下,如果交换机收到的组播数据报文的组播地址没有在本机注册,该报文会在VLAN内广播,通过配置组播静态MAC地址表项可以避免这种情况。
组播MAC地址表项的配置过程如下:
表3-1 组播MAC地址配置
配置项 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建组播MAC地址表项 |
mac-address multicast mac-address interface interface-list vlan vlan-id |
必选 mac-address必须为组播MAC地址 vlan-id为端口所在的VLAN的ID号 |
进入以太网端口视图 |
interface interface-type interface-number |
- |
创建组播MAC地址表项 |
mac-address multicast mac-address vlan
vlan-id |
可选 用户可以在以太网端口视图下添加组播MAC地址,与系统视图下配置功能相同 |
取消相关配置可以使用相应的undo命令。
注意:
l 如果要创建的组播MAC地址表项已经存在,则系统会给出提示;
l 如果一个组播MAC地址是手工添加的,则交换机不会再通过igmp-snooping学习这个组播MAC地址。undo mac-address
multicast命令只能够删除通过命令手工创建的组播MAC地址表项,无法删除交换机学习到的组播MAC地址表项;
l 如果要向通过命令创建的组播MAC地址表项中加入端口,需要先将该表项删除,然后重新创建该表项,再将指定端口加入到表项的转发端口中;
l 如在端口添加了组播MAC地址,则无法在此端口使能端口汇聚。如端口已经是汇聚端口,则不可以添加组播MAC地址。
通过display命令对添加组播MAC地址配置进行显示,display命令可以在任意视图下执行。
表3-2 添加组播MAC地址的显示和维护
配置 |
命令 |
说明 |
显示已经添加的组播MAC地址表项 |
display mac-address multicast static [ mac-address ] [ vlan vlan-id ] |
display命令可以在任意视图下执行 |
通常情况下,如果交换机收到的组播数据报文的组播地址没有在本机注册,该报文会在该端口所在的VLAN内广播。当启动未知组播丢弃功能后,交换机收到未注册的组播地址的组播数据报文,将丢弃该报文,从而节省带宽,并提高系统的处理效率。
表4-1 未知组播报文丢弃配置
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置未知组播报文丢弃功能 |
unknown-multicast drop enable |
必选 缺省情况下,未知组播报文丢弃功能关闭 |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!