13-组播协议操作
本章节下载 (1.82 MB)
& 说明:
本文所指的路由器及路由器图标代表了一般意义下的路由器或是运行了组播协议的三层交换机。
作为一种与单播和广播并列的通信方式,组播技术能够有效地解决单点发送、多点接收的问题,从而实现了网络中点到多点的高效数据传送,能够节约大量网络带宽、降低网络负载。
利用组播技术可以方便地提供一些新的增值业务,包括在线直播、网络电视、远程教育、远程医疗、网络电台、实时视频会议等对带宽和数据交互的实时性要求较高的信息服务。
如图1-1所示,采用单播(Unicast)方式时,信息源为每个需要信息的主机都发送一份独立的信息拷贝。
假设HostB、HostD和HostE需要某信息,则信息源分别与HostB、HostD和HostE建立传输通道。
采用单播方式传输时,网络中的信息量与要求接收该信息的用户量成正比,因此当用户数量很庞大时,这将对信息源以及网络带宽造成巨大的压力。
从单播方式的信息传播过程可以看出,该传输方式不利于信息的批量发送。
如图1-2所示,采用广播(Broadcast)方式时,信息源把信息传送给网络中的所有主机,而不管其是否需要。
假设只有HostB、HostD和HostE需要某信息,如果信息源广播该信息,则HostA和HostC也可以接收到该信息,这样不仅信息的安全性得不到保障,而且会造成同一网络中信息的泛滥。
因此,广播不利于与特定对象进行数据交互,并且还占用了大量的带宽。
综上所述,传统的单播和广播的通信方式不能以最小的网络开销实现单点发送、多点接收的问题。
IP组播技术的出现及时解决了这个问题。如图1-3所示,当网络中的某些主机需要信息时,组播源(即信息源)仅发送一次信息,借助组播路由协议为组播数据包建立树型路由,被传递的信息在尽可能远的分叉路口才开始复制和分发。
假设只有HostB、HostD和HostE需要某信息,为了将该信息顺利地传输给这些主机,可以将HostB、HostD和HostE组成一个接收者的集合,并由网络中各路由器根据该集合中接收者的分布情况进行信息的复制和转发,最后该信息会准确地发送给HostB、HostD和HostE。
综上所述,组播的优势如下:
l 相比单播来说,组播的优势在于:由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致网络负载的显著增加。
l 相比广播来说,组播的优势在于:由于组播数据只会发送给需要该数据的接收者,所以可以合理利用带宽,不会造成网络资源的浪费,并能提高网络的安全性。
在组播方式的信息传输过程中,网络中各部分的角色如下:
l 信息的发送者称为“组播源”,如图1-3中的Source;
l 所有的接收者都是“组播组成员”,如图1-3中的Receiver;
l 由所有接收者构成一个“组播组”,“组播组”不受地域的限制;
l 可以提供组播路由功能的路由器称为“组播路由器”,组播路由器不仅提供组播路由功能,也提供组播组成员的管理功能。
为了更好地理解,可以将组播方式的信息传输过程类比于电视节目的传送:
l 电视台(组播源)通过某个频道(组播组)传送电视节目(组播数据);
l 用户对其电视机(接收者)进行频道的设置(加入组播组);
l 然后电视机便能够接收该电视台传送的节目(接收者能够收到该组播源发送的组播数据)了。
注意:
l 组播源不一定属于组播组,也就是说其本身不一定是组播数据的接收者;
l 可以同时有多个组播源向同一个组播组发送数据;
l 如果网络中存在不支持组播的路由器,则组播路由器可以使用隧道方式将组播数据包封装在单播IP包中传送给邻居组播路由器,邻居组播路由器在去掉其IP头部后继续进行组播传输,从而避免了对网络结构进行较大的改动。
组播技术的优点主要在于:
l 提高效率:减轻信息源和网络设备CPU的负荷;
l 优化性能:减少冗余流量;
l 分布式应用:使用最少的网络资源实现多点应用。
组播技术主要应用于以下几个方面:
l 多媒体、流媒体的应用,如:网络电视、网络电台、实时视/音频会议;
l 培训、联合作业场合的通信,如:远程教育、远程医疗;
l 数据仓库、金融应用(股票);
l 其它任何“点到多点”的数据发布应用。
根据对组播源处理方式的不同,组播模型有下列三种:
l ASM(Any-Source Multicast,任意信源组播)
l SFM(Source-Filtered Multicast,信源过滤组播)
l SSM(Source-Specific Multicast,指定信源组播)
简单地说,ASM模型就是任意源组播模型。
在ASM模型中,任意一个发送者都可以成为组播源,向某组播组地址发送信息。众多接收者通过加入由该组播组地址标识的组播组以获得发往该组播组的组播信息。
在ASM模型中,接收者无法预先知道组播源的位置,但可以在任意时间加入或离开该组播组。
SFM模型继承了ASM模型,从发送者角度来看,两者的组播组成员关系完全相同。
同时,SFM模型在功能上对ASM模型进行了扩展。在SFM模型中,上层软件对收到的组播报文的源地址进行检查,允许或禁止来自某些组播源的报文通过。因此,接收者只能收到来自部分组播源的组播数据。从接收者的角度来看,只有部分组播源是有效的,组播源被经过了筛选。
SSM模型
在现实生活中,用户可能只对某些组播源发送的组播信息感兴趣,而不愿接收其它源发送的信息。SSM模型为用户提供了一种能够在客户端指定组播源的传输服务。
SSM模型与ASM模型的根本区别在于:SSM模型中的接收者已经通过其他手段预先知道了组播源的具体位置。SSM模型使用与ASM/SFM模型不同的组播地址范围,直接在接收者和其指定的组播源之间建立专用的组播转发路径。
对于IP组播,需要关注下列问题:
l 组播源将组播信息传输到哪里,即组播寻址机制;
l 网络中有哪些接收者,即主机注册;
l 组播信息如何传输,即组播路由。
IP组播属于端到端的服务,组播的框架结构包括以下四个部分:
l 寻址机制:借助组播地址,实现信息从组播源发送到一组接收者;
l 主机注册:允许接收者主机动态加入和离开某组播组,实现对组播成员的管理;
l 组播路由:构建组播报文分发树(即组播数据在网络中的树型转发路径),并通过该分发树将报文从组播源传输到接收者;
l 组播应用:组播源与接收者必须安装支持视频会议等组播应用的软件,TCP/IP协议栈必须支持组播信息的发送和接收。
为了让组播源和组播组成员进行通信,需要提供网络层组播地址,即IP组播地址。同时必须存在一种技术将IP组播地址映射为链路层的组播MAC地址。
IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用,范围从224.0.0.0到239.255.255.255,如表1-1所示。
表1-1 IPv4组播地址的范围及含义
地址范围 |
含义 |
224.0.0.0~224.0.0.255 |
IANA预留的组播地址(永久组地址),除224.0.0.0保留不做分配外,其它地址供路由协议、拓扑查找和协议维护使用 |
224.0.1.0~231.255.255.255 233.0.0.0~238.255.255.255 |
用户可用的ASM/SFM组播地址(临时组地址),全网范围内有效 |
232.0.0.0~232.255.255.255 |
用户可用的SSM组播地址(临时组地址),全网范围内有效 |
239.0.0.0~239.255.255.255 |
本地管理组播地址,仅在特定的本地范围内有效。使用本地管理组播地址可以灵活地定义组播域的范围、实现不同组播域之间的地址隔离,从而实现在不同组播域内重复使用相同的组播地址而不会冲突 |
(1) 组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。
(2) 组播地址可分为如下两类:
l 永久组地址:由IANA为路由协议预留的组播地址,用于标识一组特定的网络设备(也称为保留组播组),具体请参见表1-2。永久组地址保持不变,组成员的数量可以是任意的,甚至可以为零。
l 临时组地址:为用户组播组临时分配的组播地址。如果组成员的数量一旦为零,即被取消。
表1-2 常用的永久组地址及其含义
永久组地址 |
含义 |
224.0.0.1 |
子网内的所有系统,包括主机与路由器 |
224.0.0.2 |
子网内的所有组播路由器 |
224.0.0.3 |
未分配 |
224.0.0.4 |
DVMRP路由器 |
224.0.0.5 |
OSPF路由器 |
224.0.0.6 |
OSPF指定路由器/备用指定路由器 |
224.0.0.7 |
ST路由器 |
224.0.0.8 |
ST主机 |
224.0.0.9 |
RIP-2路由器 |
224.0.0.11 |
移动代理 |
224.0.0.12 |
DHCP服务器/中继代理 |
224.0.0.13 |
所有PIM路由器 |
224.0.0.14 |
RSVP封装 |
224.0.0.15 |
所有CBT路由器 |
224.0.0.16 |
指定SBM |
224.0.0.17 |
所有SBM |
224.0.0.18 |
VRRP |
以太网传输单播IP报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据包时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用组播MAC地址。
IANA规定,组播MAC地址的高24位为0x01005E,第25位为0x0,低23位为IP组播地址的低23位。IP组播地址与组播MAC地址的映射关系如图1-4所示。
图1-4 IP组播地址与组播MAC地址的映射关系
由于IP组播地址的高4位是1110,代表组播标识,而低28位中只有23位被映射到组播MAC地址,这样IP组播地址中就有5位信息丢失。这样,就有32个IP组播地址映射到了同一个组播MAC地址上,因此在二层处理过程中,设备可能要接收一些本IP组播组以外的组播数据,而这些多余的组播数据就需要设备的上层进行过滤了。
根据RFC 2373,IPv6组播地址的格式如图1-5所示。
图1-5 IPv6组播地址格式
l FF:8比特,标识此地址为IPv6组播地址。
l flags:4比特,其中高3位是保留位,取0;最低位是临时标识位,0代表永久分配的well-known组播地址,1代表非永久分配的组播地址。
l scope:4比特,标识该IPv6组播组的应用范围,其可能的取值及其含义如表1-3所示。
l reserved:80比特,目前置为全0。
l group ID:32比特,IPv6组播组标识号,可据此生成组播MAC地址。在未来的发展中,IPv6组播地址空间可以按需求进行扩展。
表1-3 scope字段的取值及其含义
取值 |
含义 |
0 |
保留(reserved) |
1 |
节点本地范围(node-local scope) |
2 |
链路本地范围(link-local scope) |
3、4、6、7、9~D |
未分配(unassigned) |
5 |
站点本地范围(site-local scope) |
8 |
机构本地范围(organization-local scope) |
E |
全局范围(global scope) |
F |
保留(reserved) |
IP组播涉及到的协议主要有组播组管理协议和组播路由协议。与IP组播相关的协议在网络中的应用位置如图1-6所示。
图1-6 IP组播相关协议的应用位置
在主机和与其直接相连的组播路由器之间通常采用组播组管理协议IGMP(Internet Group Management Protocol,互联网组管理协议),该协议规定了主机与组播路由器之间建立和维护组播组成员关系的机制。
IGMP目前包含三个版本:IGMPv1、IGMPv2和IGMPv3,而且新版本完全与旧版本兼容。
组播路由协议运行在组播路由器之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。组播路由建立了从一个数据源端到多个接收端的无环(loop-free)数据传输路径,即组播分发树结构。
对于ASM模型,可以将组播路由分为域内和域间两大类:
l 域内组播路由目前已经相当成熟。在众多的域内组播路由协议中,PIM(Protocol Independent Multicast,协议无关组播)是目前应用最多的一个,该协议通过发现组播源并构建组播分发树从而将信息传递到接收者。按照转发机制的不同,PIM可以分为PIM-DM(Dense Mode,密集模式)和PIM-SM(Sparse Mode,稀疏模式)两种。
l 域间路由的首要问题是路由信息如何在AS(Autonomous System,自治系统)之间传递,目前比较成型的解决方案有MSDP(Multicast Source Discovery Protocol,组播信源发现协议)。
对于SSM模型,没有域内和域间的划分。由于接收者预先知道组播源的具体位置,因此只需要借助PIM-SM构建的通道即可实现组播信息的传输。
在组播模型中,IP报文的目的地址字段为组播组地址,组播源向以此目的地址所标识的主机群组传送信息。因此,转发路径上的组播路由器为了将组播报文传送到各个方位的接收站点,往往需要将从一个入接口收到的组播报文转发到多个出接口。与单播模型相比,组播模型的复杂性就在于此:
l 为了保证组播报文在网络中的传输,必须依靠单播路由表或者单独提供给组播使用的组播路由表来指导转发;
l 为了处理同一设备在不同接口上收到来自不同对端的相同组播信息,需要对组播报文的入接口进行RPF(Reverse Path Forwarding,逆向路径转发)检查,以决定转发还是丢弃该报文。RPF检查机制是大部分组播路由协议进行组播转发的基础,关于RPF的详细介绍,请参见“8.1.1 2. RPF机制”。
IGMP Snooping是Internet Group Management Protocol Snooping(互联网组管理协议窥探)的简称,它是运行在二层设备上的组播约束机制,用于管理和控制组播组。
运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发组播数据。
如图2-1所示,当二层设备没有运行IGMP Snooping时,组播数据在二层被广播;当二层设备运行了IGMP Snooping后,已知组播组的组播数据不会在二层被广播,而在二层被组播给指定的接收者。
如图2-2所示,RouterA连接组播源,在SwitchA和SwitchB上分别运行IGMP Snooping,HostA和HostC为接收者主机(即组播组成员)。
结合图2-2,介绍一下IGMP Snooping相关的端口概念:
l 路由器端口(Router Port):交换机上连接组播路由器的端口,如SwitchA和SwitchB各自的Ethernet1/0/1端口。交换机将本设备上的所有路由器端口都记录在路由器端口列表中。
l 成员端口(Member Port):又称组播组成员端口,表示交换机上连接组播组成员的端口,如SwitchA的Ethernet1/0/2和Ethernet1/0/3端口,以及SwitchB的Ethernet1/0/2端口。交换机将本设备上的所有成员端口都记录在IGMP Snooping转发表中。
& 说明:
本文中提到的路由器端口都是指交换机上连接组播路由器的端口,而不是指路由器设备上的端口。
表2-1 IGMP Snooping端口老化定时器
定时器 |
说明 |
超时前应收到的报文 |
超时后交换机的动作 |
路由器端口老化定时器 |
交换机为其上的每个路由器端口都启动一个定时器,其超时时间为路由器端口老化时间 |
源地址不为0.0.0.0的IGMP普遍组查询报文或PIM Hello报文 |
将该端口从路由器端口列表中删除 |
成员端口老化定时器 |
当一个端口加入某组播组时,交换机为该端口启动一个定时器,其超时时间为成员端口老化时间 |
IGMP成员关系报告报文 |
将该端口从组播组的转发表中删除 |
运行了IGMP Snooping的交换机对不同IGMP动作的具体处理方式如下:
IGMP查询器定期向本地网段内的所有主机与路由器发送IGMP普遍组查询报文,以查询该网段有哪些组播组的成员。
在收到IGMP普遍组查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
l 如果该端口是路由器端口列表中已有的路由器端口,则重置该路由器端口的老化定时器。
l 如果该端口不是路由器端口列表中已有的路由器端口,则将其加入路由器端口列表,并启动该路由器端口的老化定时器。
以下情况,主机会向组播路由器发送IGMP成员关系报告报文:
l 当组播组的成员主机收到IGMP查询报文后,会回复IGMP成员关系报告报文。
l 如果主机要加入某个组播组,它会主动向组播路由器发送IGMP成员关系报告报文以声明加入该组播组。
在收到IGMP成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,从该报文中解析出主机要加入的组播组地址,并对该报文的接收端口做如下处理:
l 如果该端口已存在于组播组转发表中,则重置该端口的成员端口老化定时器;
l 如果该端口不在组播组转发表中,则在组播组转发表中为该端口增加转发表项,并启动该端口的成员端口老化定时器。
& 说明:
交换机不会将IGMP成员关系报告报文通过非路由器端口转发出去,原因如下:根据IGMP成员关系报告抑制机制,如果非路由器端口下还有该组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该组播组的成员主机。
运行IGMPv1的主机离开组播组时不会发送IGMP离开组报文,因此交换机无法立即获知主机离开的信息。但是,由于主机离开组播组后不会再发送IGMP成员关系报告报文,因此当其对应的成员端口的老化定时器超时后,交换机就会将该端口对应的转发表项从转发表中删除。
运行IGMPv2或IGMPv3的主机离开组播组时,会通过发送IGMP离开组报文,以通知组播路由器自己离开了某个组播组。
当从最后一个成员端口上收到IGMP离开组报文时,交换机会将该报文通过VLAN内的所有路由器端口转发出去,同时由于并不知道该报文的接收端口下是否还有该组播组的其它成员,所以交换机不会立刻把该端口对应的转发表项从转发表中删除,而是重置该成员端口的老化定时器。
当IGMP查询器收到IGMP离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP特定组查询报文。交换机在收到IGMP特定组查询报文后,将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。
对于IGMP离开组报文的接收端口,交换机在该成员端口的老化时间内:
l 如果从该端口收到了主机发送的响应该组播组的IGMP成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置该成员端口的老化定时器;
l 如果没有从该端口收到主机发送的响应该组播组的IGMP成员关系报告报文,则表示该端口下已没有该组播组的成员,则在该成员端口老化时间超时后,将转发表中该端口对应该组播组的转发表项删除。
支持IGMP Snooping功能的交换机在不同的情况下,对各种组播协议报文的处理有所差异。具体规则如下:
(1) 如果交换机上只使能了IGMP,或同时使能了IGMP和PIM,则进行常规处理。
(2) 如果交换机上只使能了PIM:
l 对于IGMP报文,将其当作未知报文进行广播;
l 对于PIM Hello报文,则会为其维护相应的路由器端口。
(3) 在交换机上关闭IGMP,或者清除IGMP转发表项(reset igmp group)时:
l 如果未使能PIM,则删除所有二层组播表项和路由器端口;
l 如果已使能了PIM,则只删除二层组播表项,而路由器端口将被保留。
(4) 在交换机上关闭PIM时:
l 如果未使能IGMP,则删除所有路由器端口;
l 如果已使能了IGMP,则所有二层组播表项和路由器端口都将被保留。
表2-2 IGMP Snooping配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置IGMP Snooping基本功能 |
使能IGMP Snooping |
必选 |
|
配置IGMP Snooping版本 |
可选 |
||
配置端口老化定时器 |
可选 |
||
配置IGMP Snooping端口功能 |
配置静态端口 |
可选 |
|
配置模拟主机加入 |
可选 |
||
配置端口快速离开 |
可选 |
||
配置IGMP成员关系报告报文抑制 |
可选 |
||
配置IGMP相关功能 |
使能IGMP Snooping查询器 |
可选 |
|
配置IGMP定时器 |
可选 |
||
配置IGMP查询报文源IP地址 |
可选 |
||
配置端口的组播组策略 |
配置组播组过滤器 |
可选 |
|
配置端口通过的组播组最大数量 |
可选 |
||
配置组播组替换 |
可选 |
& 说明:
l 在IGMP-Snooping视图下所作的配置对所有的VLAN都有效,在VLAN视图下所作的配置只对属于该VLAN的以太网端口有效,而后者的优先级高于前者。
l IGMP-Snooping视图下的配置具有全局性;以太网端口视图下的配置只对当前端口有效;端口组视图下的配置对当前端口组中的所有端口有效。
l 系统优先采用以太网端口视图或端口组视图下的配置,当在以太网端口视图或端口组视图下没有进行配置时,才采用IGMP-Snooping视图下的配置。
在配置IGMP Snooping基本功能之前,需完成以下任务:
l 配置相应VLAN
l 配置相应端口组
在配置IGMP Snooping基本功能之前,需准备以下数据:
l IGMP Snooping的版本
l 路由器端口老化时间
l 成员端口老化时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局使能IGMP Snooping,并进入IGMP-Snooping视图 |
igmp-snooping |
必选 缺省情况下,IGMP Snooping处于关闭状态 |
退回系统视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内使能IGMP Snooping |
igmp-snooping enable |
必选 缺省情况下,VLAN内的IGMP Snooping处于关闭状态 |
& 说明:
l 在VLAN内使能IGMP Snooping之前,必须先在系统视图下全局使能IGMP Snooping,否则将无法在VLAN内使能IGMP Snooping。
l 在指定VLAN内使能了IGMP Snooping之后,该功能只在属于该VLAN的以太网端口上生效。
配置IGMP Snooping的版本,实际上就是配置IGMP Snooping可以分析处理的IGMP报文的版本:
l 当版本为2时,IGMP Snooping能够对IGMPv1和IGMPv2的报文进行分析处理,对IGMPv3的报文则不进行分析处理,而是在VLAN内将其广播;
l 当版本为3时,IGMP Snooping能够对IGMPv1、IGMPv2和IGMPv3的报文进行分析处理。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置IGMP Snooping的版本 |
igmp-snooping version version-number |
可选 缺省情况下,IGMP Snooping的版本为2 |
注意:
当IGMP Snooping的版本由版本3切换到版本2时,系统将清除所有通过动态加入的IGMP Snooping转发表项;对于在版本3下通过手工配置而静态加入的IGMP Snooping转发表项,则分为以下两种情况进行不同的处理:
l 如果配置的仅仅是静态加入组播组,而没有指定组播源,则这些转发表项将不会被清除;
l 如果配置的是指定了组播源的静态加入组播源组,则这些转发表项将会被清除,并且当再次切换回版本3时,这些转发表项将被重新恢复。
如果在路由器端口老化时间超时前,没有收到IGMP普遍组查询报文或者PIM Hello报文,交换机将把该端口从路由器端口列表中删除。
如果在成员端口老化时间超时前,没有收到该组播组的IGMP成员关系报告报文,交换机将把该端口从该组播组的转发表中删除。
如果组播组成员的变动比较频繁,可以把成员端口老化时间设置小一些,反之亦然。
表2-5 全局配置端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置路由器端口老化时间 |
router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为105秒 |
配置成员端口老化时间 |
host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
表2-6 在VLAN内配置端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置路由器端口老化时间 |
igmp-snooping router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为105秒 |
配置成员端口老化时间 |
igmp-snooping host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
在配置IGMP Snooping端口功能之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping或在VLAN接口上使能IGMP
在配置IGMP Snooping端口功能之前,需准备以下数据:
l 组播组和组播源的地址
如果某端口所连接的主机需要固定接收某个组播组或组播源组的组播数据,可以配置该端口静态加入该组播组或组播源组,成为静态成员端口。
在拓扑稳定的网络中,可以将交换机上的路由器端口配置为静态路由器端口,交换机可以通过该端口接收路由器发来的IGMP报文。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置静态成员端口 |
igmp-snooping static-group group-address [ source-ip source-address ] vlan vlan-id |
必选 缺省情况下,静态成员端口功能处于关闭状态 |
|
配置静态路由器端口 |
igmp-snooping static-router-port vlan vlan-id |
必选 缺省情况下,静态路由器端口功能处于关闭状态 |
l 只有指定了一个有效的组播源地址,且当IGMP Snooping的版本为3时,配置静态加入组播源组的功能才会有效。
l 在配置静态成员端口,即使能或关闭静态加入组播组或组播源组功能后,端口不会主动发送IGMP成员关系报告报文或IGMP离开组报文。
l 静态成员端口和静态路由器端口都不会老化,只能通过配置命令删除。
通常情况下,运行IGMP的主机会对组播路由器发出的IGMP查询报文进行响应。如果主机由于某种原因无法响应,就可能导致组播路由器认为该网段没有该组播组的成员,从而取消相应的转发路径。
为避免这种情况的发生,可以将交换机的某个端口配置成为组播组成员(即配置模拟主机加入)。当收到IGMP查询报文时由该端口进行响应,从而保证该交换机能够继续收到组播报文。
通过配置模拟主机加入可以实现如下功能:
l 在以太网端口上使能模拟主机加入功能时,模拟主机会主动发送一个IGMP成员关系报告报文;
l 在收到IGMP普遍组查询报文后,模拟主机同样会响应一个IGMP成员关系报告报文;
l 在以太网端口上关闭模拟主机加入功能后,模拟主机也会发送一个IGMP离开组报文。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置模拟主机加入组播组或组播源组 |
igmp-snooping host-join group-address [ source-ip source-address ] vlan vlan-id |
必选 缺省情况下,模拟主机加入组播组或组播源组的功能处于关闭状态 |
& 说明:
l 每配置一次模拟主机加入,即相当于启动了一台独立的主机。例如,当收到IGMP查询报文时,每条配置所对应的模拟主机将分别进行响应。
l 模拟主机所采用的IGMP版本与设备当前所采用的IGMP Snooping版本一致。
在没有使能端口快速离开功能之前,交换机从某端口收到离开某组播组的IGMP离开组报文时不会直接将该端口从组播转发表中删除,而是先向该端口发送针对该组播组的IGMP特定组查询报文,如果等待一段时间后没有收到IGMP成员关系报告报文,才将该端口从组播组中删除。
在使能了端口快速离开功能之后,交换机从某端口收到离开某个组播组的IGMP离开组报文时,将直接把该端口从组播转发表中删除,而不再向该端口发送针对该组播组的IGMP特定组查询报文。
表2-9 全局配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置端口快速离开 |
fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
表2-10 在端口上配置端口快速离开
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口快速离开 |
igmp-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
注意:
在配置了端口快速离开后,当端口下有多个用户时,一个用户的离开会导致该端口下属于同一组播组的其它用户无法收到组播数据。
当二层设备收到来自某组播组成员的IGMP成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同IGMP成员关系报告报文。
当使能了IGMP成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某组播组内的第一个IGMP成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一组播组的其它IGMP成员关系报告报文,这样可以减少网络中的报文数量。
表2-11 配置IGMP成员关系报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
使能IGMP成员关系报告报文抑制功能 |
report-aggregation |
可选 缺省情况下,IGMP成员关系报告报文抑制功能处于使能状态 |
在配置IGMP相关功能之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping
在配置IGMP相关功能之前,需准备以下数据:
l 发送IGMP普遍组查询报文的时间间隔
l 发送IGMP特定组查询报文的时间间隔
l IGMP普遍组查询的最大响应时间
l IGMP普遍组查询报文的源IP地址
l IGMP特定组查询报文的源IP地址
在运行了IGMP的组播网络中,会有一台三层组播设备充当IGMP查询器,负责发送IGMP查询报文。
但是,在一个没有三层组播设备的网络中,由于二层设备并不支持IGMP,因此无法实现IGMP查询器的相关功能。为了解决这个问题,可以在二层设备上使能IGMP Snooping查询器,使其能够在数据链路层建立并维护组播转发表项,从而实现IGMP查询器的相关功能。
表2-12 使能IGMPSnooping查询器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能IGMP Snooping查询器 |
igmp-snooping querier |
必选 缺省情况下,IGMP Snooping查询器处于关闭状态 |
注意:
l IGMP Snooping查询器不参与IGMP查询器的选举。
l 在运行了IGMP的组播网络中,配置IGMP Snooping查询器没有实际的意义,反而可能会由于其发送的IGMP普遍组查询报文的源IP地址较小而影响IGMP查询器的选举。
可以根据网络的实际情况来修改发送IGMP普遍组查询报文的时间间隔。
在收到IGMP查询报文(包括普遍组查询和特定组查询)后,主机会为其所加入的每个组播组都启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的IGMP查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。
合理配置IGMP查询的最大响应时间,既可以使主机对IGMP查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
l 对于IGMP普遍组查询报文来说,通过配置IGMP普遍组查询的最大响应时间来填充其最大响应时间字段;
l 对于IGMP特定组查询报文来说,所配置的发送IGMP特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说,IGMP特定组查询的最大响应时间从数值上与发送IGMP特定组查询报文的时间间隔相同。
表2-13 全局配置IGMP定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置IGMP普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置发送IGMP特定组查询报文的时间间隔 |
last-member-query-interval interval |
可选 缺省情况下,发送IGMP特定组查询报文的时间间隔为1秒 |
表2-14 在VLAN内配置IGMP定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置发送IGMP普遍组查询报文的时间间隔 |
igmp-snooping query-interval interval |
可选 缺省情况下,发送IGMP普遍组查询报文的时间间隔为60秒 |
配置IGMP普遍组查询的最大响应时间 |
igmp-snooping max-response-time interval |
可选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置发送IGMP特定组查询报文的时间间隔 |
igmp-snooping last-member-query-interval interval |
可选 缺省情况下,发送IGMP特定组查询报文的时间间隔为1秒 |
注意:
在配置时,应确保发送IGMP普遍组查询报文的时间间隔大于IGMP普遍组查询的最大响应时间。
对于收到源IP地址为0.0.0.0的查询报文的端口,交换机不会将其设置为路由器端口,所以建议将IGMP查询报文的源IP地址配置为一个有效的IP地址。
表2-15 配置IGMP查询报文源IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置IGMP普遍组查询报文源IP地址 |
igmp-snooping general-query source-ip { current-interface | ip-address } |
可选 缺省情况下,IGMP普遍组查询报文的源IP地址为0.0.0.0 |
配置IGMP特定组查询报文源IP地址 |
igmp-snooping special-query source-ip { current-interface | ip-address } |
可选 缺省情况下,IGMP特定组查询报文的源IP地址为0.0.0.0 |
注意:
IGMP查询报文源IP地址的改变可能会影响网段内IGMP查询器的选择。
在配置端口的组播组策略之前,需完成以下任务:
l 在VLAN内使能IGMP Snooping或在VLAN接口上使能IGMP
在配置端口的组播组策略之前,需准备以下数据:
l 组播组过滤的ACL规则
l 允许端口通过的组播组最大数量
在使能了IGMP Snooping的交换机上,通过配置组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,主机会发起一个IGMP成员关系报告报文,该报文到达交换机后,进行ACL检查;如果该接收端口可以加入这个组播组,则将其列入到IGMP Snooping组播组列表中;否则交换机就丢弃该报文。这样,未通过ACL检查的组播数据就不会送到该端口,从而达到控制用户点播组播节目的目的。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置组播组过滤器 |
group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置组播组过滤器,即主机可以加入任一组播组 |
表2-17 在端口上配置组播组过滤器
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置组播组过滤器 |
igmp-snooping group-policy acl-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置组播组过滤器,即主机可以加入任一组播组 |
通过配置端口通过的组播组的最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口通过的组播组最大数量 |
igmp-snooping group-limit limit [ vlan vlan-list ] |
可选 缺省情况下,端口上允许通过的组播组最大数量为1000个 |
& 说明:
l 在对端口通过的组播组最大数量进行配置时,如果当前端口上的组播组数量已经超过了配置值,系统将把该端口从所有相关的IGMP Snooping转发表中删除,该端口上的主机需要重新加入组播组。
l 如果手工配置了静态成员端口或者模拟主机加入,系统在把该端口从所有相关的IGMP Snooping转发表中删除后,会把这些配置重新运行生效一次,直至该端口加入的组播组数量达到限制值为止。
由于某些特殊的原因,当前交换机或以太网端口上通过的组播组数目有可能会超过交换机或以太网端口的限定。针对这种情况,可以在交换机或者某些以太网端口上使能组播组替换功能。当以太网端口上加入的组播组数量已达到限定值时:
l 若使能了组播组替换功能,则新加入的组播组会自动替代已存在的组播组,替代规则是替代IP地址最小的组播组;
l 若没有使能组播组替换功能,则自动丢弃新的IGMP成员关系报告报文。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP-Snooping视图 |
igmp-snooping |
- |
配置组播组替换功能 |
overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,组播组替换功能处于关闭状态 |
表2-20 在端口上配置组播组替换
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置组播组替换功能 |
igmp-snooping overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,组播组替换功能处于关闭状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除组播组信息。
表2-21 IGMP Snooping显示和维护
命令 |
|
查看IGMP Snooping窥探到的组播组信息 |
display igmp-snooping group [ vlan vlan-id ] [ verbose ] |
查看IGMP Snooping窥探到的IGMP报文的统计信息 |
display igmp-snooping statistics |
清除IGMP Snooping表项信息 |
reset igmp-snooping group { group-address | all } [ vlan vlan-id ] |
清除IGMP Snooping窥探到的所有IGMP报文的统计信息 |
reset igmp-snooping statistics |
& 说明:
l reset igmp-snooping group命令只对使能了IGMP Snooping的VLAN有效,而对VLAN接口上使能了IGMP的VLAN无效。
l 通过reset igmp-snooping group命令不能够清除通过静态配置加入的IGMP Snooping表项。
如图2-3所示,要求通过配置,使HostA和HostB不论是否加入了组播组224.1.1.1,都能够收到来自组播源1.1.1.1/24、发往组播组224.1.1.1的组播数据。
# 创建VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
# 把端口Ethernet1/01到Ethernet1/0/4添加到VLAN100中。
[SwitchA-vlan100] port Ethernet 1/0/1 to Ethernet 1/0/4
[SwitchA-vlan100] quit
(2) 配置模拟主机加入组播源组
# 在VLAN100内使能IGMP Snooping,并将其版本设为3。
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] igmp-snooping version 3
[SwitchA-vlan100] quit
# 在Ethernet1/0/3和Ethernet1/0/4上分别使能模拟主机加入组播源组功能。
[SwitchA] interface Ethernet 1/0/3
[SwitchA-Ethernet1/0/3]igmp-snooping host-join 224.1.1.1 source-ip 1.1.1.1 vlan 100
[SwitchA-Ethernet1/0/3] quit
[SwitchA] interface Ethernet 1/0/4
[SwitchA-Ethernet1/0/4] igmp-snooping host-join 224.1.1.1 source-ip 1.1.1.1 vlan 100
[SwitchA-Ethernet1/0/4] quit
(3) 检验配置效果
# 查看VLAN100内的组播组详细信息。
[SwitchA] display igmp-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 1 port.
Ethernet1/0/1 (D) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(1.1.1.1, 224.1.1.1):
Attribute: Host Port
Host port(s):total 2 port.
Ethernet1/0/3 (D) ( 00:03:23 )
Ethernet1/0/4 (D) ( 00:03:23 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 2 port.
Ethernet1/0/3
Ethernet1/0/4
由此可见,SwitchA上的端口Ethernet1/0/3和Ethernet1/0/4已经加入了组播源组(1.1.1.1,224.1.1.1)。
如图2-4所示,RouterB上未运行任何组播协议,要求通过配置使SwitchA将组播数据转发到RouterB上。
(1) 配置VLAN
# 创建VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
# 把端口Ethernet1/0/1到Ethernet1/0/4添加到VLAN100中。
[SwitchA-vlan100] port Ethernet 1/0/1 to Ethernet 1/0/4
[SwitchA-vlan100] quit
(2) 配置静态路由器端口
# 在VLAN100内使能IGMP Snooping。
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] igmp-snooping enable
[SwitchA-vlan100] quit
# 把Ethernet1/0/4配置为静态路由器端口。
[SwitchA] interface Ethernet 1/0/4
[SwitchA-Ethernet1/0/4] igmp-snooping static-router-port vlan 100
[SwitchA-Ethernet1/0/4] quit
(3) 检验配置效果
# 查看VLAN100内的组播组详细信息。
[SwitchA] display igmp-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 2 port.
Ethernet1/0/1 (D) ( 00:01:30 )
Ethernet1/0/4 (S) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:224.1.1.1
(1.1.1.1, 224.1.1.1):
Attribute: Host Port
Host port(s):total 1 port.
Ethernet1/0/3 (D) ( 00:03:23 )
MAC group(s):
MAC group address:0100-5e01-0101
Host port(s):total 1 port.
Ethernet1/0/3
由此可见,SwitchA上的端口Ethernet1/0/4已经成为了静态路由器端口。
交换机不能实现IGMP snooping二层组播功能。
IGMP Snooping没有使能。
(1) 使用display current-configuration命令查看IGMP Snooping的运行状态。
(2) 如果是没有使能IGMP Snooping,则需先在系统视图下使用igmp-snooping命令全局使能IGMP Snooping,然后在VLAN视图下使用igmp-snooping enable命令使能VLAN内的IGMP Snooping。
(3) 如果只是没有在相应VLAN下使能IGMP Snooping,则只需在VLAN视图下使用igmp-snooping enable命令使能VLAN内的IGMP Snooping。
配置了组播组策略,只允许主机加入某些特定的组播组,但主机仍然可以收到发往其它组播组的组播数据。
l ACL规则配置不正确;
l 组播组策略应用不正确,如果使用了一个不存在的或配置为空的ACL规则做为组播策略,将过滤掉所有的组播组;
l 端口被配置为静态加入组播组,且该配置与所配置的组播组策略冲突。
(1) 使用display acl命令查看所配置的ACL规则,检查其是否与所要实现的组播组过滤策略相符合。
(2) 在IGMP-Snooping视图或相应的接口视图下使用display this命令查看是否应用了正确的组播组策略。如果没有,则使用group-policy或igmp-snooping group-policy命令应用正确的组播组策略。
(3) 使用display igmp-snooping group命令检查是否有端口被配置为静态加入组播组。如果有,则检查所配置的端口静态加入组播组与组播组策略之间是否冲突,如有冲突,则建议删除端口静态加入组播组的相关配置。
MLD Snooping是Multicast Listener Discovery Snooping(组播侦听发现协议窥探)的简称。它是运行在二层设备上的IPv6组播约束机制,用于管理和控制IPv6组播组。
运行MLD Snooping的二层设备通过对收到的MLD报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发IPv6组播数据。
如图3-1所示,当二层设备没有运行MLD Snooping时,IPv6组播数据报文在二层被广播;当二层设备运行了MLD Snooping后,已知IPv6组播组的组播数据报文不会在二层被广播,而在二层被组播给指定的接收者。
图3-1 二层设备运行MLD Snooping前后的对比
如图3-2所示,RouterA连接组播源,在SwitchA和SwitchB上分别运行MLD Snooping,HostA和HostC为接收者主机(即IPv6组播组成员)。
结合图3-2,介绍一下MLD Snooping相关的端口概念:
l 路由器端口(Router Port):交换机上连接组播路由器的端口,如SwitchA和SwitchB各自的Ethernet1/0/1端口。交换机将本设备上的所有路由器端口都记录在路由器端口列表中。
l 成员端口(Member Port):又称IPv6组播组成员端口,表示交换机上连接IPv6组播组成员的端口,如SwitchA的Ethernet1/0/2和Ethernet1/0/3端口,以及SwitchB的Ethernet1/0/2端口。交换机将本设备上的所有成员端口都记录在MLD Snooping转发表中。
& 说明:
本文中提到的路由器端口都是指交换机上连接组播路由器的端口,而不是指路由器设备上的端口。
表3-1 MLD Snooping端口老化定时器
定时器 |
说明 |
超时前应收到的报文 |
超时后交换机的动作 |
路由器端口老化定时器 |
交换机为其上的每个路由器端口都启动一个定时器,其超时时间为路由器端口老化时间 |
源地址不为0::0的MLD普遍组查询报文或IPv6 PIM Hello报文 |
将该端口从路由器端口列表中删除 |
成员端口老化定时器 |
当一个端口加入某IPv6组播组时,交换机为该端口启动一个定时器,其超时时间为成员端口老化时间 |
MLD成员关系报告报文 |
将该端口从IPv6组播组的转发表中删除 |
运行了MLD Snooping的交换机对不同MLD动作的具体处理方式如下:
MLD查询器定期向本地网段内的所有主机与路由器发送MLD普遍组查询报文,以查询该网段有哪些IPv6组播组的成员。
在收到MLD普遍组查询报文时,交换机将其通过VLAN内除接收端口以外的其它所有端口转发出去,并对该报文的接收端口做如下处理:
l 如果该端口是路由器端口列表中已有的路由器端口,则重置该路由器端口的老化定时器。
l 如果该端口不是路由器端口列表中已有的路由器端口,则将其加入路由器端口列表,并启动该路由器端口的老化定时器。
以下情况,主机会向组播路由器发送MLD成员关系报告报文:
l 当IPv6组播组的成员主机收到MLD查询报文后,会回复MLD成员关系报告报文。
l 如果主机要加入某个IPv6组播组,它会主动向组播路由器发送MLD成员关系报告报文以声明加入该IPv6组播组。
在收到MLD成员关系报告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,从该报文中解析出主机要加入的IPv6组播组地址,并对该报文的接收端口做如下处理:
l 如果该端口已存在于IPv6组播组转发表中,则重置该端口的成员端口老化定时器;
l 如果该端口不在IPv6组播组转发表中,则在IPv6组播组转发表中为该端口增加转发表项,并启动该端口的成员端口老化定时器。
& 说明:
交换机不会将MLD成员关系报告报文通过非路由器端口转发出去,原因如下:根据MLD成员关系报告抑制机制,如果非路由器端口下还有该IPv6组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该IPv6组播组的成员主机。
当主机离开IPv6组播组时,会通过发送MLD离开组报文,以通知组播路由器自己离开了某个IPv6组播组。
当从最后一个成员端口上收到MLD离开组报文时,交换机会将该报文通过VLAN内的所有路由器端口转发出去,同时由于并不知道该报文的接收端口下是否还有该IPv6组播组的其它成员,所以交换机不会立刻把该端口对应的转发表项从转发表中删除,而是重置该成员端口的老化定时器。
当MLD查询器收到MLD离开组报文后,从中解析出主机要离开的IPv6组播组的地址,并通过接收端口向该IPv6组播组发送MLD特定组查询报文。交换机在收到MLD特定组查询报文后,将其通过VLAN内的所有路由器端口和该IPv6组播组的所有成员端口转发出去。
对于MLD离开组报文的接收端口,交换机在该成员端口的老化时间内:
l 如果从该端口收到了主机发送的响应该IPv6组播组的MLD成员关系报告报文,则表示该端口下还有该IPv6组播组的成员,于是重置该成员端口的老化定时器;
l 如果没有从该端口收到主机发送的响应该IPv6组播组的MLD成员关系报告报文,则表示该端口下已没有该IPv6组播组的成员,则在该成员端口老化时间超时后,将转发表中该端口对应该IPv6组播组的转发表项删除。
表3-2 MLD Snooping配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置MLD Snooping基本功能 |
使能MLD Snooping |
必选 |
|
配置端口老化定时器 |
可选 |
||
配置MLD Snooping端口功能 |
配置静态端口 |
可选 |
|
配置模拟主机加入 |
可选 |
||
配置端口快速离开 |
可选 |
||
配置MLD成员关系报告报文抑制 |
可选 |
||
配置MLD相关功能 |
使能MLD Snooping查询器 |
可选 |
|
配置MLD定时器 |
可选 |
||
配置MLD查询报文源IPv6地址 |
可选 |
||
配置端口的IPv6组播组策略 |
配置IPv6组播组过滤器 |
可选 |
|
配置端口通过的IPv6组播组最大数量 |
可选 |
||
配置IPv6组播组替换 |
可选 |
& 说明:
l 在MLD-Snooping视图下所作的配置对所有的VLAN都有效,在VLAN视图下所作的配置只对属于该VLAN的以太网端口有效,而后者的优先级高于前者。
l MLD-Snooping视图下的配置具有全局性;以太网端口视图下的配置只对当前端口有效;端口组视图下的配置对当前端口组中的所有端口有效。
l 系统优先采用以太网端口视图或端口组视图下的配置,当在以太网端口视图或端口组视图下没有进行配置时,才采用MLD-Snooping视图下的配置。
在配置MLD Snooping基本功能之前,需完成以下任务:
l 配置相应VLAN
l 配置相应端口组
在配置MLD Snooping基本功能之前,需准备以下数据:
l 路由器端口老化时间
l 成员端口老化时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局使能MLD Snooping,并进入MLD-Snooping视图 |
mld-snooping |
必选 缺省情况下,MLD Snooping处于关闭状态 |
退回系统视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-id |
- |
在VLAN内使能MLD Snooping |
mld-snooping enable |
必选 缺省情况下,VLAN内的MLD Snooping处于关闭状态 |
& 说明:
l 在VLAN内使能MLD Snooping之前,必须先在系统视图下全局使能MLD Snooping,否则将无法在VLAN内使能MLD Snooping。
l 在指定VLAN内使能了MLD Snooping之后,该功能只在属于该VLAN的以太网端口上生效。
如果在路由器端口老化时间超时前,没有收到MLD普遍组查询报文或者IPv6 PIM Hello报文,交换机将把该端口从路由器端口列表中删除。
如果在成员端口老化时间超时前,没有收到该IPv6组播组的MLD成员关系报告报文,交换机将把该端口从该IPv6组播组的转发表中删除。
如果IPv6组播组成员的变动比较频繁,可以把成员端口老化时间设置小一些,反之亦然。
表3-4 全局配置端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置路由器端口老化时间 |
router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为260秒 |
配置成员端口老化时间 |
host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
表3-5 在VLAN内配置端口老化定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置路由器端口老化时间 |
mld-snooping router-aging-time interval |
可选 缺省情况下,路由器端口的老化时间为260秒 |
配置成员端口老化时间 |
mld-snooping host-aging-time interval |
可选 缺省情况下,成员端口的老化时间为260秒 |
在配置MLD Snooping端口功能之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置MLD Snooping端口功能之前,需准备以下数据:
l IPv6组播组的地址
如果某端口所连接的主机需要固定接收某个IPv6组播组的IPv6组播数据,可以配置该端口静态加入该IPv6组播组,成为静态成员端口。
在拓扑稳定的网络中,可以将交换机上的路由器端口配置为静态路由器端口,交换机可以通过该端口接收路由器发来的MLD报文。
表3-6 配置静态端口
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置静态成员端口 |
mld-snooping static-group ipv6-group-address vlan vlan-id |
必选 缺省情况下,静态成员端口功能处于关闭状态 |
|
配置静态路由器端口 |
mld-snooping static-router-port vlan vlan-id |
必选 缺省情况下,静态路由器端口功能处于关闭状态 |
& 说明:
l 在配置静态成员端口,即使能或关闭静态加入IPv6组播组功能后,端口不会主动发送MLD成员关系报告报文或MLD离开组报文。
l 静态成员端口和静态路由器端口都不会老化,只能通过配置命令删除。
通常情况下,运行MLD的主机会对组播路由器发出的MLD查询报文进行响应。如果主机由于某种原因无法响应,就可能导致组播路由器认为该网段没有该IPv6组播组的成员,从而取消相应的转发路径。
为避免这种情况的发生,可以将交换机的某个端口配置成为IPv6组播组成员(即配置模拟主机加入)。当收到MLD查询报文时由该端口进行响应,从而保证该交换机能够继续收到IPv6组播报文。
通过配置模拟主机加入可以实现如下功能:
l 在以太网端口上使能模拟主机加入功能时,模拟主机会主动发送一个MLD成员关系报告报文;
l 在收到MLD普遍组查询报文后,模拟主机同样会响应一个MLD成员关系报告报文;
l 在以太网端口上关闭模拟主机加入功能后,模拟主机也会发送一个MLD离开组报文。
表3-7 配置模拟主机加入
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置模拟主机加入IPv6组播组 |
mld-snooping host-join ipv6-group-address vlan vlan-id |
必选 缺省情况下,模拟主机加入IPv6组播组的功能处于关闭状态 |
& 说明:
每配置一次模拟主机加入,即相当于启动了一台独立的主机。例如,当收到MLD查询报文时,每条配置所对应的模拟主机将分别进行响应。
在没有使能端口快速离开功能之前,交换机从某端口收到离开某IPv6组播组的MLD离开组报文时不会直接将该端口从组播转发表中删除,而是先向该端口发送针对该IPv6组播组的MLD特定组查询报文,如果等待一段时间后没有收到MLD成员关系报告报文,才将该端口从IPv6组播组中删除。
在使能了端口快速离开功能之后,交换机从某端口收到离开某个IPv6组播组的MLD离开组报文时,将直接把该端口从组播转发表中删除,而不再向该端口发送针对该IPv6组播组的MLD特定组查询报文。
表3-8 全局配置端口快速离开
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置端口快速离开 |
fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
表3-9 在端口上配置端口快速离开
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口快速离开 |
mld-snooping fast-leave [ vlan vlan-list ] |
必选 缺省情况下,端口快速离开功能处于关闭状态 |
注意:
在配置了端口快速离开后,当端口下有多个用户时,一个用户的离开会导致该端口下属于同一IPv6组播组的其它用户无法收到IPv6组播数据。
当二层设备收到来自某IPv6组播组成员的MLD成员关系报告报文时,会将该报文转发给与其直连的三层设备。这样,当二层设备上存在属于某IPv6组播组的多个成员时,与其直连的三层设备会收到这些成员发送的相同MLD成员关系报告报文。
当使能了MLD成员关系报告报文抑制功能后,在一个查询间隔内二层设备只会把收到的某IPv6组播组内的第一个MLD成员关系报告报文转发给三层设备,而不继续向三层设备转发来自同一组播组的其它MLD成员关系报告报文,这样可以减少网络中的报文数量。
表3-10 配置MLD成员关系报告报文抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
使能MLD成员关系报告报文抑制功能 |
report-aggregation |
可选 缺省情况下,MLD成员关系报告报文抑制功能处于使能状态 |
在配置MLD相关功能之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置MLD相关功能之前,需准备以下数据:
l 发送MLD普遍组查询报文的时间间隔
l 发送MLD特定组查询报文的时间间隔
l MLD普遍组查询的最大响应时间
l MLD普遍组查询报文的源IPv6地址
l MLD特定组查询报文的源IPv6地址
在运行了MLD的IPv6组播网络中,会有一台三层组播设备充当MLD查询器,负责发送MLD查询报文。
但是,在一个没有三层组播设备的网络中,由于二层设备并不支持MLD,因此无法实现MLD查询器的相关功能。为了解决这个问题,可以在二层设备上使能MLD Snooping查询器,使其能够在数据链路层建立并维护IPv6组播转发表项,从而实现MLD查询器的相关功能。
表3-11 使能MLD Snooping查询器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能MLD Snooping查询器 |
mld-snooping querier |
必选 缺省情况下,MLD Snooping查询器处于关闭状态 |
注意:
l MLD Snooping查询器不参与MLD查询器的选举。
l 在运行了MLD的IPv6组播网络中,配置MLD Snooping查询器没有实际的意义,反而可能会由于其发送的MLD普遍组查询报文的源IPv6地址较小而影响MLD查询器的选举。
可以根据网络的实际情况来修改发送MLD普遍组查询报文的时间间隔。
在收到MLD查询报文(包括普遍组查询和特定组查询)后,主机会为其所加入的每个IPv6组播组都启动一个定时器,定时器的值在0到最大响应时间(该时间值由主机从所收到的MLD查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的IPv6组播组发送MLD成员关系报告报文。
合理配置MLD查询的最大响应时间,既可以使主机对MLD查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
l 对于MLD普遍组查询报文来说,通过配置MLD普遍组查询的最大响应时间来填充其最大响应时间字段;
l 对于MLD特定组查询报文来说,所配置的发送MLD特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说,MLD特定组查询的最大响应时间从数值上与发送MLD特定组查询报文的时间间隔相同。
表3-12 全局配置MLD定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置MLD普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
配置发送MLD特定组查询报文的时间间隔 |
last-member-query-interval interval |
可选 缺省情况下,发送MLD特定组查询报文的时间间隔为1秒 |
表3-13 在VLAN内配置MLD定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置发送MLD普遍组查询报文的时间间隔 |
mld-snooping query-interval interval |
可选 缺省情况下,发送MLD普遍组查询报文的时间间隔为125秒 |
配置MLD普遍组查询的最大响应时间 |
mld-snooping max-response-time interval |
可选 缺省情况下,MLD普遍组查询的最大响应时间为10秒 |
配置发送MLD特定组查询报文的时间间隔 |
mld-snooping last-member-query-interval interval |
可选 缺省情况下,发送MLD特定组查询报文的时间间隔为1秒 |
注意:
在配置时,应确保发送MLD普遍组查询报文的时间间隔大于MLD普遍组查询的最大响应时间。
表3-14 配置MLD查询报文源IPv6地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置MLD普遍组查询报文源IPv6地址 |
mld-snooping general-query source-ip { current-interface | ipv6-address } |
可选 缺省情况下,MLD普遍组查询报文的源IPv6地址为fe80::02ff:ffff:fe00:0001 |
配置MLD特定组查询报文源IPv6地址 |
mld-snooping special-query source-ip { current-interface | ipv6-address } |
可选 缺省情况下,MLD特定组查询报文的源IPv6地址为fe80::02ff:ffff:fe00:0001 |
注意:
MLD查询报文源IPv6地址的改变可能会影响网段内MLD查询器的选择。
在配置端口的IPv6组播组策略之前,需完成以下任务:
l 在VLAN内使能MLD Snooping
在配置端口的IPv6组播组策略之前,需准备以下数据:
l IPv6组播组过滤的IPv6 ACL规则
l 允许端口通过的IPv6组播组最大数量
在使能了MLD Snooping的交换机上,通过配置IPv6组播组过滤器,可以限制用户对组播节目的点播。
在实际应用中,当用户点播某个组播节目时,主机会发起一个MLD成员关系报告报文,该报文到达交换机后,进行ACL检查;如果该接收端口可以加入这个IPv6组播组,则将其列入到MLD Snooping组播组列表中;否则交换机就丢弃该报文。这样,未通过ACL检查的IPv6组播数据就不会送到该端口,从而达到控制用户点播组播节目的目的。
表3-15 全局配置IPv6组播组过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置IPv6组播组过滤器 |
group-policy acl6-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置IPv6组播组过滤器,即主机可以加入任一IPv6组播组 |
表3-16 在端口上配置IPv6组播组过滤器
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置IPv6组播组过滤器 |
mld-snooping group-policy acl6-number [ vlan vlan-list ] |
必选 缺省情况下,没有配置IPv6组播组过滤器,即主机可以加入任一IPv6组播组 |
通过配置端口通过的IPv6组播组的最大数量,可以限制用户点播组播节目的数量,从而控制了端口上的数据流量。
表3-17 配置端口通过的IPv6组播组最大数量
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置端口通过的IPv6组播组最大数量 |
mld-snooping group-limit limit [ vlan vlan-list ] |
可选 缺省情况下,端口上允许通过的IPv6组播组最大数量为1000个 |
& 说明:
l 在对端口通过的IPv6组播组最大数量进行配置时,如果当前端口上的IPv6组播组数量已经超过了配置值,系统将把该端口从所有相关的MLD Snooping转发表中删除,该端口上的主机需要重新加入IPv6组播组。
l 如果手工配置了静态成员端口或者模拟主机加入,系统在把该端口从所有相关的MLD Snooping转发表中删除后,会把这些配置重新运行生效一次,直至该端口加入的组播组数量达到限制值为止。
由于某些特殊的原因,当前交换机或以太网端口上通过的IPv6组播组数目有可能会超过交换机或以太网端口的限定。针对这种情况,可以在交换机或者某些以太网端口上使能IPv6组播组替换功能。当以太网端口上加入的IPv6组播组数量已达到限定值时:
l 若使能了IPv6组播组替换功能,则新加入的IPv6组播组会自动替代已存在的IPv6组播组,替代规则是替代IPv6地址最小的IPv6组播组;
l 若没有使能IPv6组播组替换功能,则自动丢弃新的MLD成员关系报告报文。
表3-18 全局配置IPv6组播组替换
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MLD-Snooping视图 |
mld-snooping |
- |
配置IPv6组播组替换功能 |
overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,IPv6组播组替换功能处于关闭状态 |
表3-19 在端口上配置IPv6组播组替换
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入相应视图 |
进入以太网端口视图 |
interface interface-type interface-number |
二者必选其一 |
进入端口组视图 |
port-group { manual port-group-name | aggregation agg-id } |
||
配置IPv6组播组替换功能 |
mld-snooping overflow-replace [ vlan vlan-list ] |
必选 缺省情况下,IPv6组播组替换功能处于关闭状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后MLD Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IPv6组播组信息。
表3-20 MLD Snooping显示和维护
配置 |
命令 |
查看MLD Snooping窥探到的IPv6组播组信息 |
display mld-snooping group [ vlan vlan-id ] [ verbose ] |
查看MLD Snooping窥探到的MLD报文的统计信息 |
display mld-snooping statistics |
清除MLD Snooping表项信息 |
reset mld-snooping group { ipv6-group-address | all } [ vlan vlan-id ] |
清除MLD Snooping窥探到的所有MLD报文的统计信息 |
reset mld-snooping statistics |
& 说明:
通过reset mld-snooping group命令不能够清除通过静态配置加入的MLD Snooping表项。
如图3-3所示,要求通过配置,使HostA和HostB不论是否加入了IPv6组播组FF1E::1,都能够收到发往IPv6组播组FF1E::1的IPv6组播数据。
(1) 配置VLAN
# 创建VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
# 把端口Ethernet1/0/1到Ethernet1/0/4添加到VLAN100中。
[SwitchA-vlan100] port Ethernet 1/0/1 to Ethernet 1/0/4
[SwitchA-vlan100] quit
(2) 配置模拟主机加入IPv6组播组
# 在VLAN100内使能MLD Snooping。
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] quit
# 在Ethernet1/0/3上使能模拟主机加入IPv6组播组功能。
[SwitchA] interface Ethernet 1/0/3
[SwitchA-Ethernet1/0/3] mld-snooping host-join ff1e::1 vlan 100
[SwitchA-Ethernet1/0/3] quit
[SwitchA] interface Ethernet 1/0/4
[SwitchA-Ethernet1/0/4] mld-snooping host-join ff1e::1 vlan 100
[SwitchA-Ethernet1/0/4] quit
(3) 检验配置效果
# 查看VLAN100内的IPv6组播组详细信息。
[SwitchA] display mld-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 1 port.
Ethernet1/0/1 (D) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:FF1E::1
(::, FF1E::1):
Attribute: Host Port
Host port(s):total 2 port.
Ethernet 1/0/3 (D) ( 00:03:23 )
Ethernet 1/0/4 (D) ( 00:03:23 )
MAC group(s):
MAC group address:3333-0000-0001
Host port(s):total 2 port.
Ethernet 1/0/3
Ethernet 1/0/4
由此可见,SwitchA上的端口Ethernet1/2和Ethernet1/0/4已经加入了IPv6组播组ff1e::1。
如图3-4所示,RouterB上未运行任何组播协议,要求通过配置使SwitchA将IPv6组播数据转发到RouterB上。
(1) 配置VLAN
# 创建VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
# 把端口Ethernet1/0/1到Ethernet1/0/4添加到VLAN100中。
[SwitchA-vlan100] port Ethernet 1/0/1 to Ethernet 1/0/4
[SwitchA-vlan100] quit
(2) 配置静态路由器端口
# 在VLAN100内使能MLD Snooping。
[SwitchA] mld-snooping
[SwitchA-mld-snooping] quit
[SwitchA] vlan 100
[SwitchA-vlan100] mld-snooping enable
[SwitchA-vlan100] quit
# 把Ethernet1/0/4配置为静态路由器端口。
[SwitchA] interface Ethernet 1/0/4
[SwitchA-Ethernet1/0/4] mld-snooping static-router-port vlan 100
[SwitchA-Ethernet1/0/4] quit
(3) 检验配置效果
# 查看VLAN100内的IPv6组播组详细信息。
[SwitchA] display mld-snooping group vlan 100 verbose
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Port flags: D-Dynamic port, S-Static port, A-Aggregation port, C-Copy port
Subvlan flags: R-Real VLAN, C-Copy VLAN
Vlan(id):100.
Total 1 IP Group(s).
Total 1 IP Source(s).
Total 1 MAC Group(s).
Router port(s):total 2 port.
Ethernet 1/0/1 (D) ( 00:01:30 )
Ethernet 1/0/4 (S) ( 00:01:30 )
IP group(s):the following ip group(s) match to one mac group.
IP group address:FF1E::1
(::, FF1E::1):
Attribute: Host Port
Host port(s):total 1 port.
Ethernet 1/0/3 (D) ( 00:03:23 )
MAC group(s):
MAC group address:3333-0000-0001
Host port(s):total 1 port.
Ethernet 1/0/3
由此可见,SwitchA上的端口Ethernet1/0/4已经成为了静态路由器端口。
交换机不能实现MLD snooping二层组播功能。
MLD Snooping没有使能。
(1) 使用display current-configuration命令查看MLD Snooping的运行状态。
(2) 如果是没有使能MLD Snooping,则需先在系统视图下使用mld-snooping命令全局使能MLD Snooping,然后在VLAN视图下使用mld-snooping enable命令使能VLAN内的MLD Snooping。
(3) 如果只是没有在相应VLAN下使能MLD Snooping,则只需在VLAN视图下使用mld-snooping enable命令使能VLAN内的MLD Snooping。
配置了IPv6组播组策略,只允许主机加入某些特定的IPv6组播组,但主机仍然可以收到发往其它IPv6组播组的IPv6组播数据。
l IPv6 ACL规则配置不正确;
l IPv6组播组策略应用不正确,如果使用了一个不存在的或配置为空的IPv6 ACL规则做为IPv6组播策略,将过滤掉所有的IPv6组播组;
l 端口被配置为静态加入IPv6组播组,且该配置与所配置的IPv6组播组策略冲突。
(1) 使用display acl ipv6命令查看所配置的IPv6 ACL规则,检查其是否与所要实现的IPv6组播组过滤策略相符合。
(2) 在MLD-Snooping视图或相应的接口视图下使用display this命令查看是否应用了正确的IPv6组播组策略。如果没有,则使用group-policy或mld-snooping group-policy命令应用正确的IPv6组播组策略。
(3) 使用display mld-snooping group命令检查是否有端口被配置为静态加入IPv6组播组。如果有,则检查所配置的端口静态加入IPv6组播组与IPv6组播组策略之间是否冲突,如有冲突,则建议删除端口静态加入IPv6组播组的相关配置。
如图4-1所示,在传统的组播点播方式下,当属于不同VLAN的主机HostA、HostB和HostC分别进行组播点播时,RouterA需要把组播数据在每个VLAN内都复制一份。这样既造成了带宽的浪费,也给三层设备增加了额外的负担。
图4-1 二层设备运行组播VLAN前后的对比
为了解决这个问题,可以在SwitchA上配置组播VLAN功能,即把这些主机所属的VLAN都配置成为一个组播VLAN的子VLAN,并在该组播VLAN内使能二层组播功能。这样,RouterA只需把组播数据在组播VLAN内复制一份即可,而不必在每个VLAN内都复制一份,从而节省了网络带宽,也减轻了三层设备的负担。
表4-1 配置组播VLAN
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能指定VLAN为组播VLAN |
multicast-vlan vlan-id enable |
必选 缺省情况下,VLAN不是组播VLAN |
为指定组播VLAN配置子VLAN |
multicast-vlan vlan-id subvlan vlan-list |
必选 缺省情况下,组播VLAN内没有子VLAN |
& 说明:
l 要配置的组播VLAN及其子VLAN必须存在;
l 要配置的组播VLAN的子VLAN不能是组播VLAN;
l 要配置的组播VLAN的子VLAN不能是其他组播VLAN的子VLAN;
l 组播VLAN的子VLAN总数不能超过系统限制(S3610&S5510系列以太网交换机支持16个组播VLAN,每个组播VLAN下最多支持1000个子VLAN,交换机所有的子VLAN也不能超过1000个)。
注意:
l 如果设备上已使能了三层组播功能,则不允许在该设备上配置组播VLAN。
l 在配置成为组播VLAN的VLAN内必须使能二层组播功能,才能实现组播VLAN功能;而在组播VLAN的子VLAN内不必使能二层组播功能。
在完成上述配置后,在任意视图下执行display命令可以显示配置后组播VLAN的运行情况,通过查看显示信息验证配置的效果。
表4-2 组播VLAN显示
操作 |
命令 |
查看组播VLAN及其子VLAN的信息 |
display multicast-vlan [ vlan-id ] |
l 在RouterA的接口Ethernet1/0/1上使能IGMP和PIM-DM;
l SwitchA的端口Ethernet1/0/1属于VLAN1024,端口Ethernet1/0/2到Ethernet1/0/6分别属于VLAN11到VLAN15,HostA到HostE分别连接到SwitchA的端口Ethernet1/0/2到Ethernet1/0/6上;
l 通过配置组播VLAN,使RouterA向SwitchA下的这五台主机传送组播数据时,只需要向VLAN1024发送一份即可,而不必向每个VLAN都发送。
图4-2 组播VLAN典型配置组网图
(1) 配置RouterA
# 在Ethernet1/0/1上使能IGMP和PIM-DM。
<RouterA> system-view
[RouterA] multicast routing-enable
[RouterA] interface ethernet 1/0/1
[RouterA-Ethernet1/0/1] pim dm
[RouterA-Ethernet1/0/1] igmp enable
(2) 配置SwitchA
# 全局使能IGMP Snooping。
<SwitchA> system-view
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 配置VLAN11,将Ethernet1/0/2加入该VLAN。
[SwitchA] vlan 11
[SwitchA-vlan11] port ethernet 1/0/2
[SwitchA-vlan11] quit
VLAN12到VLAN15的配置与VLAN11相似,配置过程略。
# 配置VLAN1024,将Ethernet1/0/1加入该VLAN,并在该VLAN内使能IGMP Snooping。
[SwitchA] vlan 1024
[SwitchA-vlan1024] port Ethernet1/0/1
[SwitchA-vlan1024] igmp-snooping enable
[SwitchA-vlan1024] quit
# 使能VLAN1024为组播VLAN,并把VLAN11到VLAN15都配置为该组播VLAN的子VLAN。
[SwitchA] multicast-vlan 1024 enable
[SwitchA] multicast-vlan 1024 subvlan 11 to 15
(3) 检验配置效果
# 查看SwitchA上所有组播VLAN及其子VLAN的信息。
[SwitchA] display multicast-vlan
multicast vlan 1024's subvlan list:
vlan 11-15
IGMP是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
到目前为止,IGMP有三个版本:
l IGMPv1(由RFC 1112定义)
l IGMPv2(由RFC 2236定义)
l IGMPv3(由RFC 3376定义)
所有版本的IGMP都支持ASM(Any-Source Multicast,任意信源组播)模型,另外IGMPv3为SSM(Source-Specific Multicast,指定信源组播)模型也提供了有力的支持。
IGMPv1主要基于查询和响应机制来完成对组播组的管理。
当一个网段内有多台组播路由器时,由于它们都能从主机那里收到IGMP成员关系报告报文,因此只需要其中一台路由器发送IGMP查询报文就足够了。这就需要有一个查询器的选举机制来确定由哪台路由器作为IGMP查询器。
对于IGMPv1来说,由三层组播路由协议(例如PIM)选举出唯一的组播信息转发者DR(Designated Router,指定路由器)作为IGMP查询器。
图5-1 IGMPv1的工作机制
如图5-1所示,假设HostB与HostC想要收到组播组G1的组播信息,而HostA想要收到组播组G2的组播信息,则主机加入组播组的过程如下:
(1) IGMP查询器(图中的DR)周期性地向本地网段内的所有主机与路由器发送IGMP查询(Query)报文(目的地址为224.0.0.1);
(2) 在收到该查询报文后,对G1感兴趣的HostB与HostC的其中之一(这取决于谁的延迟定时器先超时),譬如HostB会首先发送IGMP成员关系报告(Report)报文(目的地址为G1的组地址),以宣告自己要加入G1;
(3) 由于HostC也在关注G1,因此它能收到HostB发往G1的报告报文。当收到该报告报文后,HostC将抑制自己发送同样针对G1的报告报文,因为IGMP路由器已知道本网段中有对G1感兴趣的主机了。这个机制称为IGMP成员关系报告抑制机制,该机制有助于减少本地网段的信息流量;
(4) 与此同时,由于HostA关注的是G2,所以它仍将发送报告报文(目的地址为G2的组地址),以宣告自己要加入G2;
(5) 经过查询和响应,IGMP路由器了解了本地网段有组播组G1和G2的成员,并生成(*,G1)和(*,G2)组播转发项作为组播信息的转发依据,*代表任意组播源;
(6) 当IGMP路由器收到发往G1或G2的组播信息时,由于IGMP路由器上存在(*,G1)和(*,G2)组播转发项,于是将该组播信息转发到本地网段,接收者主机便能收到该组播信息了。
IGMPv1没有专门定义离开组播组的报文。当运行IGMPv1的主机离开某组播组后,将不再发送以此组播组的地址为目的地址的报告报文。当网段中不再存在该组播组的成员后,IGMP路由器将收不到任何发往该组播组的报告报文,于是IGMP路由器便删除该组播组所对应的转发项。
与IGMPv1相比,IGMPv2增加了查询器选举机制和离开组机制。
在IGMPv1中,由三层组播路由协议(例如PIM)选举的指定路由器充当查询器。
在IGMPv2中,增加了独立的查询器选举机制,其选举过程如下:
(1) 所有IGMPv2路由器在初始时都认为自己是查询器,并向本地网段内的所有主机与路由器发送IGMP普遍组查询报文(目的地址为224.0.0.1);
(2) 其它IGMPv2路由器在收到该报文后,将报文的源IP地址与自己的接口地址作比较。通过比较,IP地址最小的IGMPv2路由器将成为查询器,其它IGMPv2路由器成为非查询器;
(3) 所有非查询器上都会启动一个定时器(即非查询器存在时间定时器)。在定时器超时前,如果收到了来自查询器的IGMP查询报文,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。
在IGMPv1中,主机离开组播组时不会向任何组播路由器发出任何通知,导致组播路由器只能依靠组播组成员查询的响应超时来获知组播组成员的离开。
而在IGMPv2中,当一个主机离开某组播组时:
(1) 该主机向本地网段内的所有组播路由器(224.0.0.2)发送离开组报文;
(2) 当查询器收到该报文后,向该主机所声明要离开的那个组播组发送特定组查询报文(该报文的目的地址字段和组地址字段均为要查询的组播组地址);
(3) 如果该网段内还有该组播组的其它成员,则这些成员在收到特定组查询报文后,会在该报文中所设定的最大响应时间内发送成员关系报告报文;
(4) 如果在最大响应时间内收到了该组播组其它成员发送的成员关系报告报文,查询器就会继续维护该组播组的成员关系;否则,查询器将认为该网段内已无该组播组的成员,于是不再维护这个组播组的成员关系。
IGMPv3在兼容和继承IGMPv1和IGMPv2的基础上,进一步增强了主机的控制能力,并增强了查询和报告报文的功能。
IGMPv3在指定组播组查询的基础上增加了关于组播源的过滤模式(Include或Exclude),使主机不仅可以指定要加入的组播组,还能明确要求接收或拒绝从某特定组播源发出的组播信息:
l 当主机加入组播组时,要求只接收来自指定组播源如S1、S2、……发来的组播信息,则其报告报文中可以设置为Include Sources(S1,S2,……);
l 当主机加入组播组时,拒绝接收来自指定组播源如S1、S2、……发来的组播信息,则其报告报文中可以设置为Exclude Sources(S1,S2,……)。
如图5-2所示,网络中存在Source1和Source2两个组播源,均向组播组G发送组播报文。HostB仅对从Source1发往G的信息感兴趣,而对来自Source2的信息没有兴趣。
如果主机与路由器之间运行的是IGMPv1或IGMPv2,HostB加入组播组G时无法对组播源进行选择,因此无论HostB是否需要,Source1和Source2的组播信息都将传递给HostB。
当主机与路由器之间运行了IGMPv3之后,HostB就可以要求加入Source1所对应的组播组G,或要求退出Source2所对应的组播组G,这样就只有来自Source1的组播信息才能传递给HostB了。
(1) 携带源地址的查询报文
IGMPv3不仅支持IGMPv1的普遍组查询和IGMPv2的特定组查询,而且还增加了对特定源组查询的支持:
l 普遍组查询报文中,既不携带组地址,也不携带源地址;
l 特定组查询报文中,携带组地址,但不携带源地址;
l 特定源组查询报文中,既携带组地址,还携带一个或多个源地址。
(2) 包含多组记录的报告报文
IGMPv3报告报文的目的地址为224.0.0.22,可以携带一个或多个组记录。在每个组记录中,包含有组播组地址以及数目不等的源地址信息。
组记录可以分为多种类型,如:
l 当前状态记录:报告接口当前的接收状态,包括Include(表示包含指定源地址列表)和Exclude(表示不包含指定源地址列表)两种状态类型。
l 过滤模式改变记录:报告接口接收状态从Include状态切换到Exclude状态,或从Exclude状态切换到Include状态。
l 源地址列表改变记录:报告新的源地址加入,或删除某源地址。
与IGMP相关的协议规范有:
l RFC 1112:Host Extensions for IP Multicasting
l RFC 2236:Internet Group Management Protocol,Version 2
l RFC 3376:Internet Group Management Protocol,Version 3
表5-1 IGMP配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置IGMP基本功能 |
使能IGMP |
必选 |
|
配置IGMP版本 |
可选 |
||
调整IGMP性能 |
配置IGMP报文选项 |
可选 |
|
配置IGMP定时器 |
可选 |
||
配置IGMP快速离开 |
可选 |
& 说明:
l IGMP视图下的配置具有全局性,接口视图下的配置仅对所在接口有效。
l 若没有在接口视图下进行配置,则该接口继承IGMP视图下的全局配置;若两个视图都进行了配置,则优先采用该接口视图下所作的配置。
在配置IGMP基本功能之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
l 配置PIM-DM(或PIM-SM)
在配置IGMP基本功能之前,需准备以下数据:
l IGMP的版本
l 以静态方式加入的组播组和组播源的地址
l 组播组过滤的ACL规则
在需要建立和维护组播组成员关系的接口上使能IGMP。
表5-2 使能IGMP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由 |
multicast routing-enable |
必选 缺省情况下,IP组播路由处于关闭状态 |
进入接口视图 |
interface interface-type interface-number |
- |
使能IGMP |
igmp enable |
必选 缺省情况下,IGMP处于关闭状态 |
由于不同版本IGMP协议的报文结构与种类不同,因此需要为同一网段上的所有路由器配置相同版本的IGMP,否则IGMP将不能正常运行。
表5-3 全局配置IGMP版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP视图 |
igmp |
- |
配置全局性IGMP版本 |
version version-number |
可选 缺省情况下,IGMP的版本为IGMPv2 |
表5-4 配置接口的IGMP版本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口的IGMP版本 |
igmp version version-number |
可选 缺省情况下,IGMP的版本为IGMPv2 |
& 说明:
对于本节中的配置任务来说:
l 在IGMP视图下所作的配置对所有接口生效,在接口视图下所作的配置仅对当前接口生效;
l 如果在这两个视图下进行了相同功能或参数的配置,则不论配置次序的先后,接口视图下的配置将被优先采用。
在调整IGMP性能之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
l 配置IGMP基本功能
在调整IGMP性能之前,需准备以下数据:
l 发送IGMP普遍组查询报文的时间间隔
l IGMP普遍组查询的最大响应时间
l IGMP非查询器的存在时间
l 发送IGMP特定组查询报文的时间间隔和次数
对于IP头中是否携带Router-Alert(路由器报警)选项的IGMP报文,设备会做出不同的处理。有关Router-Alert的详细介绍,请参考RFC 2113。
出于兼容性考虑,缺省情况下,设备不对Router-Alert选项进行检查,即处理所有收到的IGMP报文。此时,IGMP报文中无论是否携带有Router-Alert选项,设备都会将其送给上层协议进行处理。
为了提高设备性能,减少不必要的开支,同时出于协议安全性的考虑,也可以配置设备丢弃未携带Router-Alert选项的IGMP报文,此时,当设备收到IGMP报文时,会检查该报文的Router-Alert选项,如果没有携带该选项,就丢弃该报文。
表5-5 全局配置IGMP报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP视图 |
igmp |
- |
配置丢弃未携带Router-Alert选项的IGMP报文 |
require-router-alert |
可选 缺省情况下,设备不对Router-Alert选项进行检查 |
配置在发送的IGMP报文中携带Router-Alert选项 |
send-router-alert |
可选 缺省情况下,在发送的IGMP报文中携带Router-Alert选项 |
表5-6 配置接口的IGMP报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置丢弃未携带Router-Alert选项的IGMP报文 |
igmp require-router-alert |
可选 缺省情况下,设备不对Router-Alert选项进行检查 |
配置在发送的IGMP报文中携带Router-Alert选项 |
igmp send-router-alert |
可选 缺省情况下,在发送的IGMP报文中携带Router-Alert选项 |
IGMP查询器周期性地发送IGMP普遍组查询报文,以判断网络上是否有组播组成员。可以根据网络的实际情况来修改周期性发送IGMP普遍组查询报文的时间间隔。
在收到IGMP查询报文(包括普遍组查询和特定组查询)后,主机会为其所加入的每个组播组都启动一个延迟定时器,其值在0到最大响应时间(该时间值从IGMP查询报文的最大响应时间字段获得)中随机选定,当定时器的值减为0时,主机就会向该定时器对应的组播组发送IGMP成员关系报告报文。
合理配置IGMP查询的最大响应时间,既可以使主机对IGMP查询报文做出快速响应,又可以减少由于定时器同时超时,造成大量主机同时发送报告报文而引起的网络拥塞:
l 对于IGMP普遍组查询报文来说,通过配置IGMP普遍组查询的最大响应时间来填充其最大响应时间字段;
l 对于IGMP特定组查询报文来说,所配置的发送IGMP特定组查询报文的时间间隔将被填充到其最大响应时间字段。也就是说,IGMP特定组查询的最大响应时间从数值上与发送IGMP特定组查询报文的时间间隔相同。
当同一网段上有多台组播路由器时,由IGMP查询器负责发送IGMP查询报文。如果非查询器在其存在时间超时前没有收到来自查询器的IGMP查询报文,就会认为原有查询器失效,从而触发新的查询器选举过程;否则,非查询器将重置其存在时间定时器。
表5-7 全局配置IGMP定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP视图 |
igmp |
- |
配置周期性发送IGMP普遍组查询报文的时间间隔 |
timer query interval |
可选 缺省情况下,发送IGMP普遍组查询报文的时间间隔为60秒 |
配置IGMP普遍组查询的最大响应时间 |
max-response-time interval |
可选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置发送IGMP特定组查询报文的时间间隔 |
lastmember-queryinterval interval |
可选 缺省情况下,发送IGMP特定组查询报文的时间间隔为1秒 |
配置发送IGMP特定组查询报文的次数 |
robust-count robust-value |
可选 缺省情况下,发送IGMP特定组查询报文的次数为2次 |
配置IGMP非查询器的存在时间 |
timer other-querier-present interval |
可选 关于IGMP非查询器存在时间的缺省取值请参见表5-8后的说明 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置发送IGMP普遍组查询报文的时间间隔 |
igmp timer query interval |
可选 缺省情况下,发送IGMP普遍组查询报文的时间间隔为60秒 |
配置IGMP普遍组查询的最大响应时间 |
igmp max-response-time interval |
可选 缺省情况下,IGMP普遍组查询的最大响应时间为10秒 |
配置发送IGMP特定组查询报文的时间间隔 |
igmp lastmember-queryinterval interval |
可选 缺省情况下,发送IGMP特定组查询报文的时间间隔为1秒 |
配置发送IGMP特定组查询报文的次数 |
igmp robust-count robust-value |
可选 缺省情况下,发送IGMP特定组查询报文的次数为2次 |
配置IGMP非查询器的存在时间 |
igmp timer other-querier-present interval |
可选 关于IGMP非查询器存在时间的缺省取值请参见表5-8后的说明 |
& 说明:
关于IGMP非查询器的存在时间:
l 如果没有进行手工配置,则其取值由如下公式决定:IGMP非查询器的存在时间=发送IGMP普遍组查询报文的时间间隔×发送IGMP特定组查询报文的次数+IGMP普遍组查询的最大响应时间÷2。缺省情况下,以上三个参数的取值分别为60秒、2次和10秒,则IGMP非查询器存在时间的缺省值=60×2+10÷2=125(秒);
l 如果进行了手工配置,则取配置值。
注意:
l 如果配置的IGMP非查询器的存在时间小于发送IGMP普遍组查询报文的时间间隔,可能导致网络内的IGMP查询器反复变化。
l 在配置时,请确保IGMP普遍组查询的最大响应时间小于发送IGMP特定组查询报文的时间间隔(即IGMP特定组查询的最大响应时间),否则有可能造成对组播组成员的误删。
l 对于发送IGMP特定组查询报文的时间间隔和次数所做的配置,只有当IGMP查询器运行在IGMPv2或IGMPv3时才有效。
为了快速响应主机的离开组报文,可以配置IGMP快速离开。在开启了IGMP快速离开功能后,当IGMP查询器收到来自主机的离开组报文后,不再发送IGMP特定组查询报文,而是直接向上游发送离开通告,这样一方面减小了响应延迟,另一方面也节省了网络带宽。
表5-9 配置IGMP快速离开功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IGMP视图 |
igmp |
- |
配置组播组成员快速离开功能 |
prompt-leave [ group-policy acl-number ] |
必选 缺省情况下,组播组成员快速离开功能是关闭的 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后IGMP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除IGMP的统计信息。
表5-10 IGMP显示和维护
操作 |
命令 |
查看IGMP组播组信息 |
display igmp group [ group-address | interface interface-type interface-number ] [ static | verbose ] |
查看IGMP二层端口信息 |
display igmp group port-info [ vlan vlan-id ] [ verbose ] |
查看接口上IGMP配置和运行信息 |
display igmp interface [ interface-type interface-number ] [ verbose ] |
查看IGMP路由表的路由信息 |
display igmp routing-table [ source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] ] * |
清除IGMP转发表项 |
reset igmp group { all | interface interface-type interface-number { all | group-address [ mask { mask | mask-length } ] [ source-address [ mask { mask | mask-length } ] ] } } |
& 说明:
通过reset igmp group命令不能够清除通过静态配置加入的IGMP转发表项。
注意:
执行reset igmp group命令可能导致接收者中断组播信息的接收。
l 接收者通过组播方式接收视频点播信息,不同组织的接收者组成末梢网络,每个末梢网络中都存在一到多台接收者主机(Host)。
l HostA与HostC分别为两个末梢网络中的组播信息接收者。
l PIM网络中的SwitchA连接其中一个末梢网络N1,SwitchB与SwitchC共同连接另一个末梢网络N2。
l SwitchA通过Vlan-interface100连接末梢网络N1,通过Vlan-interface101连接PIM网络中的其它设备。
l SwitchB与SwitchC分别通过各自的Vlan-interface200连接末梢网络N2,并分别通过Vlan-interface201和Vlan-interface202连接PIM网络中的其它设备。
l SwitchA与末梢网络N1之间运行IGMPv3;SwitchB、SwitchC与末梢网络N2之间运行IGMPv2,通常由SwitchB充当IGMP查询器。
图5-3 IGMP典型配置组网图
(1) 配置各交换机接口的IP地址和单播路由协议
请按照图5-3配置各接口的IP地址和子网掩码,具体配置过程略。
配置各交换机之间采用OSPF协议进行互连,确保PIM网络中SwitchA、SwitchB和SwitchC之间能够在网络层互通,并且各交换机之间能够借助单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IP组播路由,并在主机侧接口上使能IGMP
# 在SwitchA上使能IP组播路由,并在Vlan-interface100接口上使能IGMP和PIM-DM,配置IGMP版本为3。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] igmp version 3
[SwitchA-Vlan-interface100] pim dm
[SwitchA-Vlan-interface100] quit
# 在SwitchB上使能IP组播路由,并在Vlan-interface200接口上使能IGMP和PIM-DM,配置IGMP版本为2。
<SwitchB> system-view
[SwitchB] multicast routing-enable
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] igmp enable
[SwitchB-Vlan-interface200] igmp version 2
[SwitchB-Vlan-interface200] pim dm
[SwitchB-Vlan-interface200] quit
# 在SwitchC上使能IP组播路由,并在Vlan-interface200接口上使能IGMP和PIM-DM,配置IGMP版本为2。
<SwitchC> system-view
[SwitchC] multicast routing-enable
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] igmp enable
[SwitchC-Vlan-interface200] igmp version 2
[SwitchC-Vlan-interface200] pim dm
[SwitchC-Vlan-interface200] quit
(3) 检验配置效果
通过使用display igmp interface命令可以查看各交换机接口上IGMP的配置和运行情况。例如:
# 显示SwitchB在Vlan-interface200上的IGMP信息。
[SwitchB] display igmp interface vlan-interface 200
Vlan-interface200(10.110.2.1):
IGMP is enabled
Current IGMP version is 2
Value of query interval for IGMP(in seconds): 60
Value of other querier timeout for IGMP(in seconds): 125
Value of maximum query response time for IGMP(in seconds): 10
Querier for IGMP: 10.110.2.1 (this router)
Total 1 IGMP Group reported
当某主机发送了加入组播组G的报文后,离该主机最近的路由器上却没有组播组G的组成员信息。
l 组网、接口连线的正确与否将直接影响组播组成员信息的生成;
l 在路由器上必须使能组播路由;
(1) 检查组网是否正确,接口间的连线是否正确。
(2) 检查接口与主机是否在同一网段。通过命令display current-configuration interface查看接口IP地址。
(3) 检查是否使能了组播路由。通过命令display current-configuration查看是否配置了命令multicast routing-enable。若缺少该配置,则需要在系统视图下执行命令multicast routing-enable使能IP组播路由,同时也需要在相应接口上使能IGMP。
(4) 检查接口状态是否正常,是否配置了正确的IP地址。通过命令display igmp interface查看接口信息。若无接口信息输出,说明接口状态异常,原因通常是接口上配置了shutdown命令,或者接口连线不正确,或者接口上没有配置正确的IP地址。
在同一网段的不同IGMP路由器上,各自维护的组成员关系不一致。
l 运行IGMP的路由器为每个接口维护多个参数,各参数之间相互影响,非常复杂。如果同一网段路由器的IGMP接口参数配置不一致,必然导致组成员关系的混乱。
l 另外,IGMP目前有3个版本,版本不同的IGMP路由器与主机之间虽然可以兼容,但是连接在同一网段的所有路由器必须运行相同版本的IGMP。如果同一网段路由器的IGMP版本不一致,也将导致IGMP组成员关系的混乱。
(1) 检查IGMP配置。通过命令display current-configuration观察接口上IGMP的配置信息。
(2) 在同一网段的所有路由器上执行命令display igmp interface来检查IGMP相关定时器的参数,确保配置一致。
(3) 通过命令display igmp interface来检查各路由器上运行的IGMP版本是否一致。
PIM是Protocol Independent Multicast(协议无关组播)的简称。表示可以利用静态路由或者任何单播路由协议(包括RIP、OSPF、IS-IS、BGP等)生成的单播路由表为IP组播提供路由。PIM通过使用单播路由表进行RPF(Reverse Path Forwarding,逆向路径转发)检查,以实现对组播数据的传送,关于RPF的详细介绍,请参见“第8章 组播策略配置”。
根据转发机制的不同,PIM分为两种模式:
l PIM-DM(Protocol Independent Multicast Dense Mode,密集模式协议无关组播)
l PIM-SM(Protocol Independent Multicast Sparse Mode,稀疏模式协议无关组播)
& 说明:
为了描述的方便,本文中将把由支持PIM协议的组播路由器所组成的网络简称为“PIM域”。
PIM-DM属于密集模式的组播路由协议,使用“推(Push)模式”传送组播数据,通常适用于组播组成员相对比较密集的小型网络。
PIM-DM有如下特点:
l PIM-DM假设网络中的每个子网都存在至少一个组播组成员,因此组播数据将被扩散(Flooding)到网络中的所有节点。然后,PIM-DM对没有组播数据转发的分支进行剪枝(Prune),只保留包含接收者的分支。这种“扩散—剪枝”现象周期性地发生,被剪枝的分支也可以周期性地恢复成转发状态。
l 当被剪枝分支的节点上出现了组播组的成员时,为了减少该节点恢复成转发状态所需的时间,PIM-DM使用嫁接(Graft)机制主动恢复其对组播数据的转发。
一般说来,密集模式下数据包的转发路径是有源树(Source Tree,即以组播源为“根”、组播组成员为“枝叶”的一棵转发树)。由于有源树使用的是从组播源到接收者的最短路径,因此也称为最短路径树(Shortest Path Tree,SPT)。
PIM-DM的工作机制可以概括如下:
l 邻居发现
l 构建SPT
l 嫁接
l 断言
在PIM域中,路由器通过周期性地的向所有PIM路由器(224.0.0.13)以组播方式发送PIM Hello报文(以下简称Hello报文),以发现PIM邻居,维护各路由器之间的PIM邻居关系。
路由器每个激活的接口都会周期性地发送Hello报文,从而了解与该接口相关的PIM邻居信息。
构建SPT的过程也就是“扩散-剪枝”的过程:
(1) 在PIM-DM域中,组播源S向组播组G发送组播报文时,首先对组播报文进行扩散:路由器对该报文的RPF检查通过后,便创建一个(S,G)表项,并将该报文向网络中的所有下游节点转发。经过扩散,PIM-DM域内的每个路由器上都会创建(S,G)表项。
(2) 然后对那些下游没有接收者的节点进行剪枝:由没有接收者的下游节点向上游节点发剪枝报文,以通知上游节点将相应的接口从其组播转发表项(S,G)所对应的出接口列表中删除,并不再转发该组播组的报文至该节点。
& 说明:
(S,G)表项包括组播源的地址S、组播组的地址G、出接口列表和入接口等。
如图6-1所示,剪枝过程最先由叶子路由器(如RouterA)发起,并一直持续到PIM-DM域中只剩下必要的分支,这些分支共同构成了SPT。
图6-1 构建SPT示意图
“扩散—剪枝”的过程是周期性发生的。各个被剪枝的节点提供超时机制,当剪枝超时后便重新开始这一过程。
当被剪枝分支的节点上出现了组播组的成员时,为了减少该节点恢复成转发状态所需的时间,PIM-DM使用嫁接(Graft)机制主动恢复其对组播数据的转发,过程如下:
(1) 需要恢复接收组播数据的节点向其上游节点逐跳发送嫁接报文(Graft Message)以申请重新加入到SPT中;
(2) 当上游节点收到该报文后恢复该下游节点的转发状态,并向其回应一个嫁接应答报文(Graft-Ack Message)以进行确认;
(3) 如果发送嫁接报文的节点没有收到来自其上游节点的嫁接应答报文,将重新发送嫁接报文直到被确认。
在共享网络中如果存在多台组播路由器,则相同的组播报文可能会被重复发送到该网段。为了避免出现这种情况,就需要通过断言(Assert)机制来选定唯一的组播数据转发者。
图6-2 Assert机制示意图
如图6-2所示,RouterA和RouterB从上游收到(S,G)的组播数据后,都会分别将其转发至本地网段,于是二者将从各自的本地接口收到对方转发来的该组播数据。当出现了这种情况时,路由器会从该接口向所有PIM路由器(224.0.0.13)以组播方式发送断言报文(Assert Message),该报文中携带有以下信息:组播源地址S、组播组地址G、到组播源的单播路由的优先级和度量值。通过比较这些参数,RouterA和RouterB中的获胜者将成为(S,G)的组播数据在本网段的转发者,比较过程如下:
(1) 到组播源的单播路由的优先级较高的路由器获胜;
(2) 如果到组播源的单播路由的优先级相等,那么到组播源的度量值较小的路由器获胜;
(3) 如果到组播源的度量值也相等,则本地接口IP地址较大的路由器获胜。
PIM-DM使用以“扩散—剪枝”方式构建的SPT来传送组播数据。尽管SPT的路径最短,但是其建立的过程效率较低,并不适合大中型网络。
PIM-SM属于稀疏模式的组播路由协议,使用“拉(Pull)模式”传送组播数据,通常适用于组播组成员分布相对分散、范围较广的大中型网络。
PIM-SM有如下特点:
l PIM-SM假设所有主机都不需要接收组播数据,只向明确提出需要组播数据的主机转发。PIM-SM实现组播转发的核心任务就是构造并维护RPT(Rendezvous Point Tree,共享树或汇集树),RPT选择PIM域中某台路由器作为公用的根节点RP(Rendezvous Point,汇集点),组播数据通过RP沿着RPT转发给接收者。
l 连接接收者的路由器向某组播组对应的RP发送加入报文(Join Message),该报文被逐跳送达RP,所经过的路径就形成了RPT的分支;
l 组播源如果要向某组播组发送组播数据,首先由与组播源直连的路由器负责将组播数据封装为注册报文(Register Message),并通过单播方式发送给RP,该报文到达RP后触发建立SPT。之后组播源把组播数据沿着SPT发向RP,当组播数据到达RP后,被复制并沿着RPT发送给接收者。
PIM-SM的工作机制可以概括如下:
l 邻居发现
l DR选举
l RP发现
l 构建RPT
l 组播源注册
l RPT向SPT切换
l 断言
PIM-SM使用与PIM-DM完全相同的邻居发现机制,具体请参见“6.1.2 1. 邻居发现”一节。
借助Hello报文还可以为共享网络选举DR(Designated Router,指定路由器),DR将作为该共享网络中组播数据的唯一转发者。
无论是与组播源连接的网络,还是与接收者连接的网络,只要是共享网络,就需要选举DR。接收者侧的DR负责向RP发送加入报文;组播源侧的DR负责向RP发送注册报文。
& 说明:
选举出的DR对于PIM-SM有实际的意义;而对于PIM-DM来说,其本身其实并不需要DR,但如果PIM-DM域中的共享网络上运行了IGMPv1,则需要选举出DR来充当共享网络上的IGMPv1查询器。
图6-3 DR工作示意图
如图6-3所示,DR的选举过程如下:
(1) 共享网络上的各路由器互相发送携带有竞选DR优先级参数的Hello报文,拥有最高优先级的路由器将成为DR;
(2) 如果优先级相同,或者网络中至少有一台路由器不支持在Hello报文中携带竞选DR优先级参数,则根据各路由器的IP地址大小来竞选DR,IP地址最大的路由器将成为DR;
(3) 当DR出现故障时,其余的路由器在超时后仍没有收到来自DR的Hello报文,则会触发新的DR选举。
RP是PIM-SM域中的核心设备。在结构简单的小型网络中,组播信息量少,整个网络仅依靠一个RP进行组播信息的转发即可,此时可以在PIM-SM域中的各路由器上静态指定RP的位置;但是更多的情况下,PIM-SM域的规模都很大,通过RP转发的组播信息量巨大。为了缓解RP的负担,并优化RPT的拓扑结构,不同的组播组应该对应不同的RP,这就需要通过自举机制来动态选举RP,此时需要配置BSR(BootStrap Router,自举路由器)。
BSR是PIM-SM域中的管理核心,负责收集网络中由C-RP(Candidate-RP,候选RP)发来的宣告报文(Advertisement Message),然后为每个组播组选择部分C-RP信息以组成RP-Set(RP集,即组播组与RP的映射关系数据库),并发布到整个PIM-SM域。由此,网络中所有的路由器(包括DR)都会知道RP的位置。
在一个PIM-SM域(或管理域)内只能有一个BSR,但可以配置多个C-BSR(Candidate-BSR,候选BSR)。这样,一旦BSR发生故障,其余C-BSR能够通过自动选举产生新的BSR,从而确保业务免受中断。同样,一个PIM-SM域内也可以配置多个C-RP,并通过BSR机制计算出每个组播组所对应的RP。
RP和BSR在网络中的位置如图6-4所示。
图6-4 RP与BSR的位置示意图
图6-5 构建RPT示意图
如图6-5所示,RPT的构建过程如下:
(1) 当接收者加入一个组播组G时,先通过IGMP报文通知与其直连的DR;
(2) DR掌握了组播组G的接收者的信息后,向该组的RP方向逐跳发送加入报文(Join Message);
(3) 从DR到RP所经过的路由器就形成了RPT的分支,这些路由器都在其转发表中生成了(*,G)表项,这里的“*”表示来自任意组播源。RPT以RP为根,以DR为叶子。
当发往组播组G的组播数据流经RP时,数据就会沿着已建立好的RPT到达DR,进而到达接收者。
当某接收者对组播组G的信息不再感兴趣时,与其直连的DR会逆着RPT向该组的RP方向逐跳发送剪枝报文(Prune Message);上游路由器收到该报文后在其接口列表中删除与下游路由器之间的链路,并检查自己是否拥有该组播组的接收者,如果没有则继续向其上游转发该剪枝报文。
组播源注册的目的是向RP通知组播源的存在。
图6-6 PIM-SM中构建SPT示意图
如图6-6所示,组播源向RP注册的过程如下:
(1) 当组播源S向组播组G发送了一个组播报文时,与组播源直连的DR在收到该报文后,就将其封装成注册报文,并通过单播方式发送给相应的RP;
(2) 当RP收到该报文后,一方面解封装注册报文并将该组播报文沿着RPT转发给接收者,另一方面向组播源逐跳发送(S,G)加入报文。这样,从RP到组播源所经过的路由器就形成了SPT的分支,这些路由器都在其转发表中生成了(S,G)表项。SPT以组播源为根,以RP为叶子。
组播源发出的组播数据沿着已建立好的SPT到达RP,然后由RP把组播数据沿着RPT向接收者进行转发。
当接收者侧的DR发现从RP发往组播组G的组播数据速率超过了一定的阈值时,将由其发起从RPT向SPT的切换,过程如下:
(1) 首先,接收者侧DR向组播源S逐跳发送(S,G)加入报文,并最终送达组播源侧DR,沿途经过的所有路由器在其转发表中都生成了(S,G)表项,从而建立了SPT分支;
(2) 随后,接收者侧DR向RP逐跳发送剪枝报文,RP收到该报文后会向组播源方向将其转发,从而最终实现从RPT向SPT的切换。
从RPT切换到SPT后,组播数据将直接从组播源发送到接收者。通过由RPT向SPT的切换,PIM-SM能够以比PIM-DM更经济的方式建立SPT。
PIM-SM使用与PIM-DM完全相同的断言机制,具体请参见“6.1.2 4. 断言”一节。
在一个PIM-SM域内只能有一个BSR,并由该BSR负责在整个PIM-SM域宣告RP-Set信息,所有组播组的信息都在此BSR管理的网络范围内进行转发。
考虑到管理的精细化并能针对不同组播组提供不同的服务,可以将整个PIM-SM域划分为一个Global域和多个BSR管理域。
为了更清晰地理解BSR管理域和Global域,需要从地域空间和组地址范围两个角度进行考虑:
(1) 地域空间角度
BSR管理域是针对特定组播组的逻辑管理区域,各BSR管理域在地域上必须相互独立,如图6-7所示。
图6-7 地域空间上各BSR管理域之间的关系
在地域空间上,各BSR管理域之间相互隔离,即同一路由器不能从属于多个BSR管理域。换句话说,各BSR管理域所包含的路由器互不相同。而Global域则包含了PIM-SM域内的所有路由器。
(2) 组地址范围角度
每个BSR管理域为特定的组播组提供服务,这些组播组地址之间通常没有交集,但是也可能存在相互交叉和重叠关系,如图6-8所示。
图6-8 组地址范围上BSR管理域之间的关系
BSR1域与BSR2域所对应的组地址范围无交集,而BSR3域的组地址是BSR1域组地址的子集;Global域所对应的组地址范围是除各BSR管理域组地址外的其它所有组地址,即G-G1-G2。也就是说,Global域和所有BSR管理域之间就组地址范围来说是互补关系。
BSR管理域和Global域之间的关系如下:
l Global域与每个BSR管理域都包含针对各自域的C-RP和BSR设备,这些设备仅在所在域有效,也就是说BSR机制与RP选举在各管理域之间是隔离的;
l 每个BSR管理域都有自己的边界,各BSR管理域内的组播信息(如C-RP宣告报文、BSR自举报文等)不能跨越域边界;
l Global域内的组播信息也只能在其域内传递,而不能进入任意BSR管理域;
l 就组播信息的传递来说,各BSR管理域之间、BSR管理域与Global域之间相互独立,且各BSR管理域之间不能互相重叠。
SSM(Source-Specific Multicast,指定信源组播)模型和ASM(Any-Source Multicast,任意信源组播)模型是两个完全对等的模型。目前,ASM模型包括PIM-DM和PIM-SM两种模式,SSM模型能够借助PIM-SM的部分技术来实现。
SSM模型为指定源组播提供了解决方案,通过IGMPv3来维护主机与路由器之间的关系。鉴于PIM-DM模式以“扩散—剪枝”方式构建以组播源为根的SPT,虽然SPT的路径最短,但是分发树的建立过程效率较低,不适合大中型网络。
在实际应用中,通常采用PIM-SM模式的一部分技术来实现SSM模型。由于接收者已经通过其它渠道(如广告咨询等)知道了组播源的具体位置,因此在SSM模型中无需RP,无需构建RPT,无需源注册过程,也无需通过MSDP(Multicast Source Discovery Protocol,组播源发现协议)来发现其它PIM域内的组播源。
SSM模型仅需要IGMPv3和PIM-SM部分子集的支持,SSM模型在PIM域内的工作机制可以简单概括如下:
l 邻居发现
l DR选举
l 构建SPT
PIM-SSM使用与PIM-SM完全相同的邻居发现和DR选举机制,具体请分别参见“6.1.4 1. 邻居发现”和“6.1.4 2. DR选举”两节。
构建为PIM-SM服务的RPT,还是构建为PIM-SSM服务的SPT,关键在于接收者准备加入的组播组是否属于SSM组地址范围(IANA保留的SSM组地址范围为232.0.0.0/24)。
图6-9 PIM-SSM中构建SPT示意图
如图6-9所示,HostB、HostD和HostE为组播信息的接收者,由其借助IGMPv3的报告报文向DR报告自己对来自组播源S的信息感兴趣,标记为(Include S,G);或对来自除组播源S外的其它组播源的信息感兴趣,则标记为(Exclude S,G)。无论如何描述,都表示组播源S的位置对接收者是明确指定的。
收到该报告报文的DR先判断该报文中的组地址是否在SSM组地址范围内:
l 如果在SSM组地址范围内,则构建PIM-SSM,并向组播源S逐跳发送通道的定制报文。沿途所有路由器上都创建(Include S,G)或(Exclude S,G)表项,从而在网络内构建了一棵以组播源S为根、以接收者为叶子的SPT,该SPT就是PIM-SSM中的传输通道;
l 如果不在SSM组地址范围内,则仍旧按照PIM-SM的流程进行后续处理,此时DR需要向RP发送加入报文,同时需要进行组播源的注册。
& 说明:
在PIM-SSM中,借助“通道(Channel)”的概念来表示组播组,借助“定制报文(Subscribe Message)”的概念表示加入报文。
与PIM相关的协议规范有:
l RFC 2362:Protocol Independent Multicast-sparse Mode(PIM-SM):Protocol Specification
l RFC 3973:Protocol Independent Multicast-Dense Mode(PIM-DM):Protocol Specification(Revised)
l draft-ietf-pim-sm-v2-new-07:Protocol Independent Multicast-Sparse Mode (PIM-SM)
l draft-ietf-pim-dm-new-v2-05:Protocol Independent Multicast-Dense Mode (PIM-DM)
l draft-ietf-pim-v2-dm-03:Protocol Independent Multicast Version 2 Dense Mode Specification
l draft-ietf-pim-sm-bsr-03:Bootstrap Router (BSR) Mechanism for PIM Sparse Mode
l draft-ietf-ssm-arch-03:Source-Specific Multicast for IP
l draft-ietf-ssm-overview-05:An Overview of Source-Specific Multicast (SSM)
表6-1 PIM-DM配置任务简介
配置任务 |
说明 |
详细配置 |
使能PIM-DM |
必选 |
|
使能状态刷新能力 |
可选 |
|
配置状态刷新参数 |
可选 |
|
配置PIM-DM定时器 |
可选 |
|
配置PIM公共信息 |
可选 |
在配置PIM-DM之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
在配置PIM-DM之前,需准备以下数据:
l 发送状态刷新报文的时间间隔
l 等待接收新状态刷新报文的最小时间
l 状态刷新报文的TTL值
l 嫁接报文的重传时间
在接口上使能了PIM-DM后,路由器会定期发送Hello报文以发现PIM邻居,并对收到的来自PIM邻居的报文进行处理。在部署PIM-DM域时,建议在非边界路由器(边界路由器是指那些处于BSR管理域边界上的PIM路由器)的所有接口上使能PIM-DM。
表6-2 使能PIM-DM
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由 |
multicast routing-enable |
必选 缺省情况下,IP组播路由处于关闭状态 |
进入接口视图 |
interface interface-type interface-number |
- |
使能PIM-DM |
pim dm |
必选 缺省情况下,PIM-DM处于关闭状态 |
注意:
同一台设备所有接口上启用的PIM模式必须相同。
未使能状态刷新能力的接口将不转发状态刷新报文。
表6-3 使能状态刷新能力
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
使能状态刷新能力 |
pim state-refresh-capable |
可选 缺省情况下,状态刷新能力处于使能状态 |
为了避免各路由器上被剪枝的接口因为超时而恢复转发,与组播源直连的路由器会周期性地发送(S,G)状态刷新报文,该报文沿着PIM-DM域最初的扩散路径逐跳进行转发,从而刷新沿途所有路由器上的剪枝定时器的状态。
路由器可能在短时间内收到多个状态刷新报文,而其中有些报文可能是重复的。为了避免接收这些重复的报文,可以配置接收新状态刷新报文的等待时间:路由器将丢弃在该时间内收到的状态刷新报文;当该时间超时后,路由器将正常接收新的状态刷新报文,并更新自己的PIM状态,同时重置该等待时间。
在收到状态刷新报文时,路由器会将该报文的TTL值减1后转发给其下游,直至该报文的TTL值减为0,当网络规模很小时,状态刷新报文将在网络中循环传递。因此,为了有效控制刷新报文的传递范围,需要根据网络规模大小配置合适的TTL值。
表6-4 配置状态刷新参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置发送状态刷新报文的时间间隔 |
state-refresh-interval interval |
可选 缺省情况下,发送状态刷新报文的时间间隔为60秒 |
配置接收新状态刷新报文的等待时间 |
state-refresh-rate-limit interval |
可选 缺省情况下,接收新状态刷新报文的等待时间为30秒 |
配置状态刷新报文的TTL值 |
state-refresh-ttl ttl-value |
可选 缺省情况下,状态刷新报文的TTL值为255 |
嫁接报文是PIM-DM中唯一使用确认机制的报文。在PIM-DM域中,下游路由器发出嫁接报文后,如果在指定时间内没有收到来自其上游路由器的嫁接应答报文,则会重发嫁接报文,直到被确认。
表6-5 配置PIM-DM定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置嫁接报文的重传时间 |
pim timer graft-retry interval |
可选 缺省情况下,嫁接报文的重传时间为3秒 |
& 说明:
PIM-DM其它定时器的配置请参见“6.5.5 配置PIM公共定时器”。
& 说明:
一台设备可以同时充当C-RP和C-BSR。
表6-6 PIM-SM配置任务简介
配置任务 |
说明 |
详细配置 |
|
|
使能PIM-SM |
必选 |
|||
配置BSR |
配置基本C-BSR |
可选 |
||
配置Global域C-BSR |
可选 |
|||
配置管理域C-BSR |
可选 |
|||
配置BSR管理域边界 |
可选 |
|||
配置全局性C-BSR参数 |
可选 |
|||
配置RP |
配置C-RP |
可选 |
||
使能自动RP侦听功能 |
可选 |
|||
配置C-RP定时器 |
可选 |
|||
配置静态RP |
可选 |
|||
配置PIM-SM注册报文 |
可选 |
|||
配置RPT向SPT切换 |
可选 |
|||
配置PIM公共信息 |
可选 |
在配置PIM-SM之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
在配置PIM-SM之前,需准备以下数据:
l 表示合法BSR地址范围的ACL规则
l 计算RP的哈希掩码长度
l C-BSR的优先级
l 自举时间间隔
l 自举超时时间
l 表示合法的C-RP地址范围及其所服务的组播组范围的ACL规则
l 发送宣告报文的时间间隔
l C-RP超时时间
l 静态RP的IP地址
l 表示注册报文过滤规则的ACL规则
l 注册抑制状态超时时间
l 探测时间
l RPT向SPT切换的组播数据速率阈值、ACL规则和排序规则
l RPT向SPT切换前检查组播数据速率阈值的时间间隔
在接口上使能了PIM-SM后,路由器会定期发送Hello报文以发现PIM邻居,并对收到的来自PIM邻居的报文进行处理。在部署PIM-SM域时,建议在非边界路由器(边界路由器是指那些处于BSR管理域边界上的PIM路由器)的所有接口上使能PIM-SM。
表6-7 使能PIM-SM
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由 |
multicast routing-enable |
必选 缺省情况下,IP组播路由处于关闭状态 |
进入接口视图 |
interface interface-type interface-number |
- |
使能PIM-SM |
pim sm |
必选 缺省情况下,PIM-SM处于关闭状态 |
注意:
同一台设备所有接口上启用的PIM模式必须相同。
& 说明:
BSR是由众多C-BSR通过竞选动态产生的,由于无法预知谁将最终会成为BSR,因此本节的命令是在所有C-BSR上配置的。
关于计算RP的哈希掩码长度和C-BSR的优先级这两个参数:
l 可以在三种范围内配置:全局、Global域和管理域;
l 如果不进行配置,Global域和管理域内的参数值继承全局值;
l 如果对Global域或管理域下的参数进行了配置,则取其配置值。
在一个PIM-SM域中只能有一个BSR,但需要配置至少一个C-BSR。任意一台路由器都可以被配置为C-BSR。在C-BSR之间通过自动选举产生BSR,BSR负责在PIM-SM域中收集并发布RP信息。
C-BSR应配置在骨干网的路由器上,在将路由器配置为C-BSR时,必须同时指定一个使能了PIM-SM的接口。C-BSR间的自动选举机制简单描述如下:
l 最初,每个C-BSR都认为自己是本PIM-SM域的BSR,并使用接口的IP地址作为BSR地址,发送自举报文(Bootstrap Message);
l 当某C-BSR收到其它C-BSR发来的自举报文时,首先比较自己与后者的优先级,优先级较高者获胜;在优先级相同的情况下,再比较自己与后者的BSR地址,拥有较大IP地址者获胜。如果后者获胜,则用后者的BSR地址替换自己的BSR地址,并不再认为自己是BSR;否则,保留自己的BSR地址,并继续认为自己是BSR。
通过在路由器上配置合法BSR的地址范围,可以对收到的BSR报文按照地址范围进行过滤,从而防止某些恶意主机非法伪装成BSR,以避免合法的BSR被恶意取代。通常针对以下两类情况实施预防措施:
(1) 某些恶意主机通过伪造BSR报文以欺骗路由器,试图更改RP映射关系。这种攻击通常发生在边缘路由器上,由于BSR处于网络内部,主机在网络外部,因此边缘路由器通过对收到的BSR报文进行邻居检查和RPF检查,丢弃不符合要求的报文,就可以避免外部网络用户对内部网络BSR的攻击;
(2) 网络中某台路由器被攻击者控制,或者有非法接入的路由器时,攻击者可以将这样的路由器配置为C-BSR,并使其在竞争中获胜,从而控制网络中RP信息的发布权。由于在被配置为C-BSR后,路由器会自动向整个网络扩散BSR报文,而BSR报文是TTL值为1的组播报文,所以只要其邻居路由器不接收该BSR报文,就不会影响整个网络。因此,通过在整个网络的所有路由器上都配置合法BSR的地址范围,从而丢弃合法范围之外的BSR报文,就可以防止此类攻击。
以上两种预防策略可以部分地保护网络中BSR的安全。但是如果某台合法的BSR路由器被攻击者控制,还是可能导致问题。
表6-8 配置基本C-BSR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置某接口为C-BSR |
c-bsr interface-type interface-number [ hash-length [ priority ] ] |
必选 缺省情况下,没有配置C-BSR |
配置合法的BSR地址范围 |
bsr-policy acl-number |
可选 缺省情况下,BSR的地址范围不受任何限制 |
& 说明:
由于BSR与PIM-SM域中的其它设备需要交换大量信息,因此应在C-BSR与PIM-SM域中的其它设备之间保留较大的通信带宽。
表6-9 配置Global域C-BSR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置Global域的C-BSR |
c-bsr global [ hash-length hash-length | priority priority ] * |
必选 缺省情况下,没有配置Global域的C-BSR |
为了更有针对性地管理PIM-SM网络,可以在PIM-SM域中所有路由器上使能BSR管理域机制。
BSR管理域与组播组相对应,针对不同组播组应划分相应的BSR管理域,一方面可以有效分担单一BSR的管理压力,另一方面可以为特定组播组提供专门的服务。
表6-10 配置管理域C-BSR
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
使能BSR管理域机制 |
c-bsr admin-scope |
必选 缺省情况下,BSR管理域机制处于关闭状态 |
配置BSR管理域的C-BSR |
c-bsr group group-address { mask | mask-length } [ hash-length hash-length | priority priority ] * |
可选 缺省情况下,没有配置BSR管理域的C-BSR |
BSR是针对特定的服务范围而言的,众多BSR边界接口将网络划分成不同的BSR管理域,自举报文无法通过BSR管理域的边界,但其它类型的PIM报文可以通过该边界。
表6-11 配置BSR管理域边界
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置BSR管理域边界 |
pim bsr-boundary |
必选 缺省情况下,没有配置BSR管理域的边界 |
当某C-BSR竞选成为BSR后,它会通过自举报文向其所服务的区域以组播方式发送自己的IP地址和RP-Set信息。BSR以自举时间间隔周期性地向网络发送自举报文,收到该报文的C-BSR会在自举超时时间内将其保持,此时BSR选举过程暂停;当自举超时时间超时后,C-BSR之间会触发新一轮的BSR选举过程。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置计算RP的哈希掩码长度 |
c-bsr hash-length hash-length |
可选 缺省情况下,计算RP的哈希掩码长度为30 |
配置C-BSR的优先级 |
c-bsr priority priority |
可选 缺省情况下,C-BSR的优先级为0 |
配置自举时间间隔 |
c-bsr interval interval |
可选 关于自举时间间隔的缺省取值请参见表6-12后的说明 |
配置自举超时时间 |
c-bsr holdtime interval |
可选 关于自举超时时间的缺省取值请参见表6-12后的说明 |
& 说明:
关于自举超时时间:
l 如果没有进行手工配置,则其取值由如下公式决定:自举超时时间=自举时间间隔×2+10。缺省情况下,自举时间间隔为60秒,则自举超时时间的缺省值=60×2+10=130(秒)。
l 如果进行了手工配置,则取配置值。
关于自举时间间隔:
l 如果没有进行手工配置,则其取值由如下公式决定:自举时间间隔=(自举超时时间-10)÷2。缺省情况下,自举超时时间为130秒,则自举时间间隔的缺省值=(130-10)÷2=60(秒)。
l 如果进行了手工配置,则取配置值。
注意:
配置时,应保证自举时间间隔小于自举超时时间。
可以借助BSR机制动态选举RP:在PIM-SM域中,可以把有意成为RP的路由器配置为C-RP。BSR通过接收来自C-RP的C-RP信息,或者接收来自其它路由器的自动RP宣告,收集C-RP信息并将其汇总为RP-Set信息,然后在全网内扩散。之后,网络内的其它路由器根据RP-Set信息计算出特定组播组范围所对应的RP。建议在骨干网路由器上配置C-RP。
为了防止C-RP欺骗,需要在BSR上配置合法的C-RP地址范围及其所服务的组播组范围。同时由于每个C-BSR都可能成为BSR,因此需要在每个C-BSR上都配置相同的过滤策略。
表6-13 配置C-RP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置某接口为C-RP |
c-rp interface-type interface-number [ group-policy acl-number | priority priority | holdtime hold-interval | advertisement-interval adv-interval ] * |
可选 缺省情况下,没有配置C-RP |
配置合法C-RP的地址范围及其所服务的组播组范围 |
crp-policy acl-number |
可选 缺省情况下,C-RP的地址范围及其所服务的组播组范围不受任何限制 |
& 说明:
l 在配置C-RP时,应在C-RP与PIM-SM域中的其它设备之间保留较大的通信带宽。
l 一个RP可以为多个组播组服务,也可以为所有组播组服务。每个组播组在任意时刻,只能由唯一的一个RP为其转发数据,而不能由多个RP转发数据。
自动RP宣告(Announce)和发现(Discovery)报文的目的地址分别为组播组地址224.0.1.39和224.0.1.40。在设备上使能了自动RP侦听功能后,该设备便能够接收这两种报文,并记录报文中所携带的RP信息。
表6-14 使能自动RP侦听功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
使能自动RP侦听功能 |
auto-rp enable |
可选 缺省情况下,自动RP侦听功能处于关闭状态 |
为了使BSR能够在PIM-SM域内分发RP-Set信息,C-RP必须周期性地向BSR发送宣告报文,BSR从该报文中学习RP-Set信息,并将该信息与自己的IP地址一起封装在自举报文中向域中的所有PIM路由器(224.0.0.13)进行宣告。
C-RP在其宣告报文中封装一个保持时间,BSR在收到该报文后,从中获得该时间值并启动C-RP超时定时器,如果超时后BSR仍没有收到来自C-RP后续的宣告报文,则认为目前网络中的C-RP失效或不可达。
表6-15 配置C-RP定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置发送宣告报文的时间间隔 |
c-rp advertisement-interval interval |
可选 缺省情况下,发送宣告报文的时间间隔为60秒 |
配置C-RP超时时间 |
c-rp holdtime interval |
可选 缺省情况下,C-RP的超时时间为150秒 |
& 说明:
l 本节的命令是在C-RP上配置的。
l PIM-SM其它定时器的配置请参见“6.5.5 配置PIM公共定时器”。
RP也可以通过手工方式静态配置,但对于大型PIM网络,配置静态RP将会非常繁琐。通常,配置静态RP是作为动态选举RP机制的备份手段,可以提高网络的健壮性,增强组播网络的运营管理能力。同时,当网络中仅有一个动态RP时,静态RP可以避免因单一节点故障而引起的通信中断,同时也可以避免C-RP与BSR之间频繁的信息交互。
表6-16 配置静态RP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置静态RP |
static-rp rp-address [ acl-number ] [ preferred ] |
可选 缺省情况下,没有配置静态RP |
在PIM-SM域内,组播源侧DR向RP发送注册报文,而这些注册报文拥有不同的组播源或组播组地址。为了让RP服务于特定的组播组,可以对注册报文进行过滤。如果某个(S,G)表项被过滤规则拒绝,或者过滤规则中没有定义对它的操作,RP都会向DR发送注册终止报文(Register-Stop Message),以停止该组播数据的注册过程。
出于对注册报文在传递过程中完整性的考虑,可以配置根据整个报文来计算校验和。但为了减少往注册报文中封装数据报文的工作量并考虑到互通性,一般情况下不建议配置根据注册报文的全部内容来计算校验和的方式。
当接收者不再通过RP接收发往某组播组的数据(即RP不再服务于该组播组),或RP正式开始接收来自组播源的组播数据时,RP将向组播源侧DR发送注册终止报文,DR收到该报文后将停止发送封装有组播数据的注册报文并进入注册抑制(Register-Suppression)状态。
在注册抑制期间,DR可以通过向RP发送空注册报文(即不封装组播数据的注册报文)以通告组播源仍处于激活状态。探测时间(Probe-Time)就是指在注册抑制状态超时前,允许DR发送空注册报文的时间。当注册抑制状态超时后,DR将重新开始发送注册报文。较小的注册抑制状态超时时间意味着RP将更频繁地收到突发性组播数据;较大的超时时间则意味着新接收者加入组播组的延迟时间将更长。
表6-17 配置PIM-SM注册报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置注册报文的过滤规则 |
register-policy acl-number |
可选 缺省情况下,没有配置注册报文的过滤规则 |
配置仅根据注册报文头计算校验和 |
register-header-checksum |
可选 缺省情况下,根据整个注册报文计算校验和 |
配置注册抑制状态超时时间 |
register-suppression-timeout interval |
可选 缺省情况下,注册抑制状态超时时间为60秒 |
配置探测时间 |
probe-interval interval |
可选 缺省情况下,探测时间为5秒 |
& 说明:
通常,只需在接收者侧DR和RP上配置上述参数。但由于DR和RP都是经过选举产生的,所以本节的命令应在可能竞选成为DR的路由器和可能竞选成为RP的C-RP上进行配置。
由于RPT不一定是路径最短的树,因此当组播数据流量变大时有必要将RPT切换为路径最短的SPT。PIM-SM路由器最初通过RPT转发组播数据,但是如果组播数据通过的速率超过一定的阈值,则将由接收者侧DR发起从RPT到SPT的切换。
接收者侧DR和RP都能够周期性检测流经的组播报文速率,从而触发从RPT切换到SPT。
表6-18 配置RPT向SPT切换
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置RPT向SPT切换的参数 |
spt-switch-threshold infinity [ group-policy acl-number [ order order-value] ] |
可选 缺省情况下,设备从RPT收到第一个组播数据包后便立即向SPT切换 |
& 说明:
通常,只需在接收者侧DR和RP上配置上述参数。但由于DR和RP都是经过选举产生的,所以本节的命令应在可能竞选成为DR的路由器和可能竞选成为RP的C-RP上进行配置。
& 说明:
PIM-SSM模型需要IGMPv3的支持,因此应确保携带有接收者的PIM路由器上使能了IGMPv3。
表6-19 PIM-SSM配置任务简介
配置任务 |
说明 |
详细配置 |
使能PIM-SM |
必选 |
|
配置PIM-SSM组播组范围 |
可选 |
|
配置PIM公共信息 |
可选 |
在配置PIM-SSM之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
在配置PIM-SSM之前,需准备以下数据:
l PIM-SSM组播组范围
由于SSM模型是通过PIM-SM的部分子集功能实现的,因此系统在使能了PIM-SM的同时也具备了PIM-SSM能力。
在部署PIM-SM域时,建议在非边界路由器(边界路由器是指那些处于BSR管理域边界上的PIM路由器)的所有接口上使能PIM-SM。
表6-20 使能PIM-SM
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由 |
multicast routing-enable |
必选 缺省情况下,IP组播路由处于关闭状态 |
进入接口视图 |
interface interface-type interface-number |
- |
使能PIM-SM |
pim sm |
必选 缺省情况下,PIM-SM处于关闭状态 |
注意:
同一台设备所有接口上启用的PIM模式必须相同。
在把来自组播源的信息传递给接收者的过程中,是采用PIM-SSM模型还是PIM-SM模型,这取决于接收者订阅通道(S,G)中的组播组是否在PIM-SSM组播组范围之内,所有使能了PIM-SM的接口将会认为属于该范围内的组播组采用了PIM-SSM模型。
表6-21 配置PIM-SSM组播组范围
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置PIM-SSM组播组范围 |
ssm-policy acl-number |
可选 缺省情况下,PIM-SSM组播组范围为232.0.0.0/8 |
& 说明:
本节的命令是在PIM域内的所有路由器上配置的。
注意:
l 应确保域内所有路由器上配置的PIM-SSM组播组地址范围都一致,否则组播信息将无法通过SSM模型进行传输。
l 如果某组播组属于PIM-SSM组播组范围,且该组成员使用IGMPv1或IGMPv2发送加入报文,则设备不会触发(*,G)加入报文。
& 说明:
对于本节中的配置任务来说:
l 在PIM视图下所作的配置对所有接口生效,在接口视图下所作的配置仅对当前接口生效;
l 如果在这两个视图下进行了相同功能或参数的配置,则不论配置先后,接口视图下的配置将被优先采用。
表6-22 PIM公共信息配置任务简介
配置任务 |
说明 |
详细配置 |
配置PIM过滤器 |
可选 |
|
配置Hello报文选项 |
可选 |
|
配置PIM公共定时器 |
可选 |
|
配置加入/剪枝报文限制 |
可选 |
在配置PIM公共信息之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
l 配置PIM-DM(或PIM-SM、PIM-SSM)
在配置PIM公共信息之前,需准备以下数据:
l 表示组播数据过滤器的ACL规则
l 竞选DR的优先级(全局值/接口值)
l 保持PIM邻居可达状态的时间(全局值/接口值)
l 剪枝延迟时间(全局值/接口值)
l 剪枝否决时间(全局值/接口值)
l 发送Hello报文的时间间隔(全局值/接口值)
l 发送Hello报文的最大延迟时间(接口值)
l 保持断言状态的时间(全局值/接口值)
l 发送加入/剪枝报文的时间间隔(全局值/接口值)
l 保持加入/剪枝状态的时间(全局值/接口值)
l 组播源生存时间
l 加入/剪枝报文的最大长度
l 加入/剪枝报文中(S,G)表项的最大数量
无论在PIM-DM还是PIM-SM域内,各路由器都可以对流经自己的组播数据进行检查,通过比较是否符合过滤规则,从而决定是否继续转发组播数据。也就是说PIM域内的路由器能够成为组播数据的过滤器。过滤器的存在一方面有助于实现信息流量控制,另一方面可以在安全性方面限定下游接收者能够获得的信息。
表6-23 配置PIM过滤器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置组播数据过滤器 |
source-policy acl-number |
必选 缺省情况下,没有配置组播数据过滤器 |
& 说明:
l 通常,过滤器的位置离组播源距离越近,过滤影响越明显。
l 过滤器不仅过滤独立的组播数据,还过滤封装在注册报文中的组播数据。
无论在PIM-DM域还是在PIM-SM域内,各路由器之间发送的Hello报文都包含很多可供配置的选项,对各选项的介绍如下:
l DR_Priority(仅用于PIM-SM):表示竞选DR的优先级,优先级高的设备被选举为DR。可以在与组播源或接收者直连的共享网络中的所有路由器上都配置此参数。
l Holdtime:表示保持PIM邻居可达状态的时间,若超时后仍没有收到Hello报文,则认为PIM邻居失效或不可达。可以在PIM域中的所有路由器上都配置此参数,当各PIM邻居上该时间值不同时,取其中最大的值。
l LAN_Prune_Delay:表示在共享网络上传递剪枝报文的延迟时间,该选项由三部分组成:Lan-delay(剪枝延迟时间)、Override-interval(剪枝否决时间)和禁止加入报文抑制能力位。可以在PIM域中的所有路由器上都配置此参数。当各PIM路由器协商出的剪枝延迟或否决时间值不同时,取其中最大的值。
剪枝延迟时间将使上游路由器延迟处理收到的剪枝报文。如果配置的剪枝延迟时间过小,可能导致下游路由器还未否决剪枝动作,上游路由器就已经停止转发组播数据,因此配置时需要慎重。
剪枝否决时间表示允许下游路由器否决剪枝动作的时间。路由器在收到下游路由器发来的剪枝报文后并不立即执行剪枝动作,而是仍然将当前的转发状态保持剪枝延迟时间,如果下游路由器需要继续接收组播数据,则必须在剪枝否决时间内否决剪枝动作;否则上游路由器会在剪枝延迟时间超时后执行剪枝动作。
PIM路由器发送Hello报文时,会生成一个随机数Generation ID并携带在该报文中。一台PIM路由器的Generation ID一般不会变化,除非该路由器的状态发生了改变(如接口刚使能了PIM或设备进行了重启),此时,当其开始或重新开始发送Hello报文时,会生成一个新的Generation ID。这样,如果PIM路由器发现其上游邻居发来的Hello报文中Generation ID发生了改变,就会认为该邻居的状态已经丢失或其上游邻居已经改变,从而触发发送加入报文以进行状态刷新。
如果禁止了加入报文抑制能力(即使能邻居跟踪),上游路由器将精确地跟踪每台下游路由器的加入报文。应该在同一链路中的所有PIM路由器上同时使能或禁止该能力。
表6-24 全局配置Hello报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置竞选DR的优先级 |
hello-option dr-priority priority |
可选 缺省情况下,竞选DR的优先级为1 |
配置保持PIM邻居可达状态的时间 |
hello-option holdtime interval |
可选 缺省情况下,保持PIM邻居可达状态的时间为105秒 |
配置剪枝延迟时间 |
hello-option lan-delay interval |
可选 缺省情况下,剪枝延迟时间为500毫秒 |
配置剪枝否决时间 |
hello-option override-interval interval |
可选 缺省情况下,剪枝否决时间为2500毫秒 |
禁止加入报文抑制能力 |
hello-option neighbor-tracking |
可选 缺省情况下,加入报文抑制能力处于使能状态 |
表6-25 配置接口的Hello报文选项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置竞选DR的优先级 |
pim hello-option dr-priority priority |
可选 缺省情况下,竞选DR的优先级为1 |
配置保持PIM邻居可达状态的时间 |
pim hello-option holdtime interval |
可选 缺省情况下,保持PIM邻居可达状态的时间为105秒 |
配置剪枝延迟时间 |
pim hello-option lan-delay interval |
可选 缺省情况下,剪枝延迟时间为500毫秒 |
配置剪枝否决时间 |
pim hello-option override-interval interval |
可选 缺省情况下,剪枝否决时间为2500毫秒 |
禁止加入报文抑制能力 |
pim hello-option neighbor-tracking |
可选 缺省情况下,加入报文抑制能力处于使能状态 |
配置不接受无Generation ID的Hello报文 |
pim require-genid |
可选 缺省情况下,接受无Generation ID的Hello报文 |
PIM路由器通过周期性地发送Hello报文,以发现PIM邻居,并维护各路由器之间的PIM邻居关系。
为了避免多个PIM路由器同时发送Hello报文而导致冲突,当PIM路由器在收到Hello报文时,将延迟一个随机时间后再发送Hello报文,该时间值不大于发送Hello报文的最大延迟时间。
在断言中落选的路由器将会剪掉其下游的转发接口,并把这种断言状态保持一段时间。超时后,落选的路由器会重新恢复转发组播数据。
PIM路由器通过周期性地向其上游路由器发送加入/剪枝报文以更新状态,在该报文中携带有保持时间,上游路由器为被剪枝的下游接口设置保持加入/剪枝状态定时器,超时后其下游接口将恢复转发组播数据。
当路由器没有收到来自组播源S的后续组播数据时,不会立即删除(S,G)表项,而是将其维持一段时间(即组播源生存时间)后再删除。
表6-26 全局配置PIM公共定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置发送Hello报文的时间间隔 |
timer hello interval |
可选 缺省情况下,发送Hello报文的时间间隔为30秒 |
配置保持断言状态的时间 |
holdtime assert interval |
可选 缺省情况下,保持断言状态的时间为180秒 |
配置发送加入/剪枝报文的时间间隔 |
timer join-prune interval |
可选 缺省情况下,发送加入/剪枝报文的时间间隔为60秒 |
配置保持加入/剪枝状态的时间 |
holdtime join-prune interval |
可选 缺省情况下,保持加入/剪枝状态的时间为210秒 |
配置组播源生存时间 |
source-lifetime interval |
可选 缺省情况下,组播源的生存时间为210秒 |
表6-27 配置接口的PIM公共定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置发送Hello报文的时间间隔 |
pim timer hello interval |
可选 缺省情况下,发送Hello报文的时间间隔为30秒 |
配置发送Hello报文的最大延迟时间 |
pim triggered-hello-delay interval |
可选 缺省情况下,发送Hello报文的最大延迟时间为5秒 |
配置保持断言状态的时间 |
pim holdtime assert interval |
可选 缺省情况下,保持断言状态的时间为180秒 |
配置发送加入/剪枝报文的时间间隔 |
pim timer join-prune interval |
可选 缺省情况下,发送加入/剪枝报文的时间间隔为60秒 |
配置保持加入/剪枝状态的时间 |
pim holdtime join-prune interval |
可选 缺省情况下,保持加入/剪枝状态的时间为210秒 |
& 说明:
如果网络没有特殊要求,建议采用缺省值。
如果加入/剪枝报文的尺寸较大,则丢失一个报文将导致较多信息的遗失;如果加入/剪枝报文的尺寸较小,则单个报文的丢失所产生的影响也将降低。
通过控制加入/剪枝报文中(S,G)表项的数目,可以有效减少单位时间内发送的(S,G)表项数量。
表6-28 配置加入/剪枝报文限制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入PIM视图 |
pim |
- |
配置加入/剪枝报文的最大长度 |
jp-pkt-size packet-size |
可选 缺省情况下,加入/剪枝报文的最大长度为8100字节 |
配置加入/剪枝报文中(S,G)表项的最大数量 |
jp-queue-size queue-size |
可选 缺省情况下,加入/剪枝报文中(S,G)表项的最大数量为1020个 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后PIM的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除PIM统计信息。
表6-29 PIM显示和维护
操作 |
命令 |
查看PIM-SM域中的BSR信息,以及本地配置并生效的C-RP信息 |
display pim bsr-info |
查看PIM所使用的单播路由信息 |
display pim claimed-route [ source-address ] |
查看PIM控制报文的数量 |
display pim control-message counters [ interface interface-type interface-number | message-type message-type ] * |
查看尚未被确认的嫁接信息 |
display pim grafts |
查看接口上的PIM信息 |
display pim interface [ interface-type interface-number ] [ verbose ] |
查看待发送的加入/剪枝报文信息 |
display pim join-prune mode { sm [ flags flag-value ] | ssm } [ interface interface-type interface-number | neighbor neighbor-address ] * [ verbose ] |
查看PIM邻居信息 |
display pim neighbor [ interface interface-type interface-number | neighbor-address | verbose ] * |
查看PIM路由表的内容 |
display pim routing-table [ group-address [ mask { mask-length | mask } ] | source-address [ mask { mask-length | mask } ] | incoming-interface [ interface-type interface-number | register ] | outgoing-interface { include | exclude | match } { interface-type interface-number | register } | mode mode-type | flags flag-value | fsm ] * |
查看RP的信息 |
display pim rp-info [ group-address ] |
重置PIM控制报文计数器 |
reset pim control-message counters [ interface interface-type interface-number ] |
l 接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在一到多台接收者主机,整个PIM域采用DM方式;
l 如图6-10所示,HostA和HostC为两个末梢网络中的组播信息接收者;
l SwitchD通过Vlan-interface300接口与组播源Source所在的网络连接;
l SwitchA通过Vlan-interface100接口连接末梢网络N1,通过Vlan-interface103接口连接SwitchD;
l SwitchB和SwitchC通过各自的Vlan-interface200接口连接末梢网络N2,分别通过Vlan-interface101和Vlan-interface102接口连接SwitchD;
l SwitchA与末梢网络N1之间运行IGMPv3;SwitchB和SwitchC与末梢网络N2之间也运行IGMPv3,通常SwitchB充当查询器。
图6-10 PIM-DM典型配置组网图
(1) 配置各交换机接口的IP地址和单播路由协议
请按照图6-10配置各接口的IP地址和子网掩码,具体配置过程略。
配置PIM-DM域内的各交换机之间采用OSPF协议进行互连,确保PIM-DM域中SwitchA、SwitchB、SwitchC和SwitchD之间能够在网络层互通,并且各交换机之间能够借助单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IP组播路由,并在各接口上使能PIM-DM
# 在SwitchA上使能IP组播路由,在各接口上使能PIM-DM,并在SwitchA连接末梢网络的接口Vlan-interface100上使能IGMPv3。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] igmp version 3
[SwitchA-Vlan-interface100] pim dm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 103
[SwitchA-Vlan-interface103] pim dm
[SwitchA-Vlan-interface103] quit
SwitchB和SwitchC的配置与SwitchA相似,配置过程略。
# 在SwitchD上使能IP组播路由,并在其各接口上使能PIM-DM。
<SwitchD> system-view
[SwitchD] multicast routing-enable
[SwitchD] interface vlan-interface 300
[SwitchD-Vlan-interface300] pim dm
[SwitchD-Vlan-interface300] quit
[SwitchD] interface vlan-interface 103
[SwitchD-Vlan-interface103] pim dm
[SwitchD-Vlan-interface103] quit
[SwitchD] interface vlan-interface 101
[SwitchD-Vlan-interface101] pim dm
[SwitchD-Vlan-interface101] quit
[SwitchD] interface vlan-interface 102
[SwitchD-Vlan-interface102] pim dm
[SwitchD-Vlan-interface102] quit
(3) 检验配置效果
通过使用display pim interface命令可以查看交换机接口上PIM的配置和运行情况。例如:
# 查看SwitchD上PIM的配置信息。
[SwitchD] display pim interface
Vpn-instance: public net
Interface NbrCnt HelloInt DR-Pri DR-Address
Vlan300 0 30 1 10.110.5.1
Vlan103 1 30 1 192.168.1.2
Vlan101 1 30 1 192.168.2.2
Vlan102 1 30 1 192.168.3.2
通过使用display pim neighbor命令可以查看交换机之间的PIM邻居关系。例如:
# 查看SwitchD上PIM的邻居关系信息。
[SwitchD] display pim neighbor
Vpn-instance: public net
Total Number of Neighbors = 3
Neighbor Interface Uptime Expires Dr-Priority
192.168.1.1 Vlan103 00:02:22 00:01:27 1
192.168.2.1 Vlan101 00:00:22 00:01:29 3
192.168.3.1 Vlan102 00:00:23 00:01:31 5
假如HostA需要接收组播组G(225.1.1.1/24)的信息,当组播源S(10.110.5.100/24)向组播组G发送组播数据时,通过扩散生成SPT,SPT路径中各交换机(SwitchA和SwitchD)上都存在(S,G)表项,HostA向SwitchA注册,在SwitchA上生成(*,G)表项,通过使用display pim routing-table命令可以查看交换机PIM路由表信息。例如:
# 查看SwitchA上的PIM路由表信息。
[SwitchA] display pim routing-table
Vpn-instance: public net
Total 1 (*, G) entry; 1 (S, G) entry
(*, 225.1.1.1)
Protocol: pim-dm, Flag: WC
UpTime: 00:04:25
Upstream interface: NULL
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: igmp, UpTime: 00:04:25, Expires: never
(10.110.5.100, 225.1.1.1)
Protocol: pim-dm, Flag: ACT
UpTime: 00:06:14
Upstream interface: Vlan-interface103,
Upstream neighbor: 192.168.1.2
RPF prime neighbor: 192.168.1.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: pim-dm, UpTime: 00:04:25, Expires: never
SwitchB和SwitchC上的显示信息与SwitchA类似。
# 查看SwitchD上的PIM路由表信息。
[SwitchD] display pim routing-table
Vpn-instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 225.1.1.1)
Protocol: pim-dm, Flag: LOC ACT
UpTime: 00:03:27
Upstream interface: Vlan-interface300
Upstream neighbor: NULL,
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 3
1: Vlan-interface103
Protocol: pim-dm, UpTime: 00:03:27, Expires: never
2: Vlan-interface101
Protocol: pim-dm, UpTime: 00:03:27, Expires: never
3: Vlan-interface102
Protocol: pim-dm, UpTime: 00:03:27, Expires: never
l 接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在一到多台接收者主机,整个PIM域采用SM单BSR管理域方式;
l HostA和HostC为两个末梢网络中的组播信息接收者;
l SwitchD通过Vlan-interface300接口与组播源Source所在网络连接;
l SwitchA通过Vlan-interface100接口连接末梢网络N1,通过Vlan-interface101接口和Vlan-interface102接口分别连接SwitchD和SwitchE;
l SwitchB和SwitchC通过各自的Vlan-interface200接口连接末梢网络N2,分别通过Vlan-interface103和Vlan-interface104接口连接SwitchE;
l SwitchE连接SwitchA、SwitchB、SwitchC和SwitchD,并且将其Vlan-interface102接口作为C-BSR和C-RP。
图6-11 PIM-SM单BSR域典型配置组网图
(1) 配置各交换机接口的IP地址和单播路由协议
请按照图6-11配置各接口的IP地址和子网掩码,具体配置过程略。
配置PIM-SM域内的各交换机之间采用OSPF协议进行互连,确保PIM-SM域中SwitchA、SwitchB、SwitchC、SwitchD和SwitchE之间能够在网络层互通,并且各交换机之间能够借助单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IP组播路由,并在各接口上使能PIM-SM
# 在SwitchA上使能IP组播路由,在各接口上使能PIM-SM,并在SwitchA连接末梢网络的接口Vlan-interface100上使能IGMPv3。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] igmp version 3
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 102
[SwitchA-Vlan-interface102] pim sm
[SwitchA-Vlan-interface102] quit
SwitchB和SwitchC的配置与SwitchA相似,SwitchD和SwitchE除了不需要在相应接口上使能IGMP外,其它的配置也与SwitchA相似,配置过程略。
(3) 配置C-BSR和C-RP
# 在SwitchE上配置RP通告的服务范围,以及C-BSR和C-RP的位置。
<SwitchE> system-view
[SwitchE] acl number 2005
[SwitchE-acl-basic-2005] rule permit source 225.1.1.0 0.0.0.255
[SwitchE-acl-basic-2005] quit
[SwitchE] pim
[SwitchE-pim] c-bsr vlan-interface 102
[SwitchE-pim] c-rp vlan-interface 102 group-policy 2005
(4) 检验配置效果
通过使用display pim interface命令可以查看交换机接口上PIM的配置和运行情况。例如:
# 查看SwitchA上PIM的配置信息。
[SwitchA] display pim interface
Vpn-instance: public net
Interface NbrCnt HelloInt DR-Pri DR-Address
Vlan100 0 30 1 10.110.1.1 (local)
Vlan101 1 30 1 192.168.1.2
Vlan102 1 30 1 192.168.9.2
通过使用display pim bsr-info命令可以查看交换机上BSR选举的信息,以及本地配置并生效的C-RP信息。例如:
# 查看SwitchA上的BSR信息,以及本地配置并生效的C-RP信息。
[SwitchA] display pim bsr-info
Vpn-instance: public net
Current BSR Address: 192.168.9.2
Priority: 0
Hash mask length: 30
State: Accept Preferred
Scope: Not scoped
Uptime: 01:40:40
Next BSR message scheduled at: 00:01:42
# 查看SwitchE上的BSR信息,以及本地配置并生效的C-RP信息。
[SwitchE] display pim bsr-info
Vpn-instance: public net
Current BSR Address: 192.168.9.2
Priority: 0
Hash mask length: 30
State: Elected
Scope: Not scoped
Uptime: 00:00:18
Next BSR message scheduled at: 00:01:52
通过使用display pim rp-info命令可以查看交换机上获取的RP信息。例如:
# 查看SwitchA上的RP信息。
[SwitchA] display pim rp-info
Vpn-instance: public net
PIM-SM BSR RP information:
Group/MaskLen: 225.1.1.0/24
RP: 192.168.9.2
Priority: 0
HoldTime: 150
Uptime: 00:51:45
Next BSR message scheduled at: 00:02:22
假如HostA需要接收组播组G(225.1.1.1/24)信息,SwitchA和SwitchE之间会生成RPT。当组播源S(10.110.5.100/24)向RP发起注册后,SwitchD和SwitchE之间会生成SPT。当SwitchA收到组播数据后立即执行从RPT到SPT的切换。RPT路径中的交换机(如SwitchA和SwitchE)上存在(*,G)表项,而SPT路径中的交换机(如SwitchA和SwitchD)上存在(S,G)表项,通过使用display pim routing-table命令可以查看交换机PIM路由表信息。例如:
# 查看SwitchA上的PIM路由表信息。
[SwitchA] display pim routing-table
Vpn-instance: public net
Total 1 (*, G) entry; 1 (S, G) entry
(*, 225.1.1.1), RP: 192.168.9.2
Protocol: pim-sm, Flag: WC
UpTime: 00:13:46
Upstream interface: Vlan-interface102,
Upstream neighbor: 192.168.9.2
RPF prime neighbor: 192.168.9.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: pim-sm, UpTime: 00:13:46, Expires: -
(10.110.5.100, 225.1.1.1), RP: 192.168.9.2
Protocol: pim-sm, Flag: SPT LOC
UpTime: 00:00:42
Upstream interface: Vlan-interface101,
Upstream neighbor: 192.168.9.2
RPF prime neighbor: 192.168.9.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: pim-sm, UpTime: 00:00:42, Expires:-
SwitchB和SwitchC上的显示信息与SwitchA类似。
# 查看SwitchD上的PIM路由表信息。
[SwitchD] display pim routing-table
Vpn-instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 225.1.1.1), RP: 192.168.9.2
Protocol: pim-sm, Flag: SPT LOC
UpTime: 00:00:42
Upstream interface: Vlan-interface300
Upstream neighbor: 10.110.5.100
RPF prime neighbor: 10.110.5.100
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface105
Protocol: pim-sm, UpTime: 00:00:42, Expires:-
# 查看SwitchE上的PIM路由表信息。
[SwitchE] display pim routing-table
Vpn-instance: public net
Total 1 (*, G) entry; 0 (S, G) entry
(*, 225.1.1.1), RP: 192.168.9.2 (local)
Protocol: pim-sm, Flag: WC
UpTime: 00:13:16
Upstream interface: Register
Upstream neighbor: 192.168.4.2
RPF prime neighbor: 192.168.4.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface102
Protocol: pim-sm, UpTime: 00:13:16, Expires: 00:03:22
l 接收者通过组播方式接收视频点播信息,不同组织的接收者群体组成末梢网络,每个末梢网络中都存在一到多台接收者主机,整个PIM域采用SSM方式;
l HostA和HostC为两个末梢网络中的组播信息接收者;
l SwitchD通过Vlan-interface300接口与组播源Source所在网络连接;
l SwitchA通过Vlan-interface100接口连接末梢网络N1,通过Vlan-interface101接口和Vlan-interface102接口连接分别连接SwitchD和SwitchE;
l SwitchB和SwitchC通过各自的Vlan-interface200接口连接末梢网络N2,分别通过Vlan-interface103和Vlan-interface104接口连接SwitchE;
l SwitchE连接SwitchA、SwitchB、SwitchC和SwitchD;
l SSM组播组的范围是232.1.1.0/24;
l SwitchA、SwitchB、SwitchC以及末梢网络N1、N2之间都运行IGMPv3。
图6-12 PIM-SSM典型配置组网图
(1) 配置各交换机的接口IP地址和单播路由协议
请按照图6-12配置各接口的IP地址和子网掩码,具体配置过程略。
配置PIM-SM域内的各交换机之间采用OSPF协议进行互连,确保PIM-SM域中SwitchA、SwitchB、SwitchC、SwitchD和SwitchE之间能够在网络层互通,并且各交换机之间能够借助单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IP组播路由,并在各接口上使能PIM-SM
# 在SwitchA上使能IP组播路由,在各接口上使能PIM-SM,并在SwitchA连接末梢网络的接口Vlan-interface100上使能IGMPv3。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] igmp version 3
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 102
[SwitchA-Vlan-interface102] pim sm
[SwitchA-Vlan-interface102] quit
SwitchB和SwitchC的配置与SwitchA相似,SwitchD和SwitchE除了不需要在相应接口上使能IGMP外,其它的配置也与SwitchA相似,配置过程略。
(3) 配置PIM-SSM组播组的地址范围
# 在SwitchA上配置PIM-SSM组播组地址范围为232.1.1.0/24。
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule permit ip source 232.1.1.0 0.0.0.255
[SwitchA-acl-basic-2000] quit
[SwitchA] pim
[SwitchA-pim] ssm-policy 2000
SwitchB、SwitchC、SwitchD和SwitchE的配置与SwitchA相似,配置过程略。
(4) 检验配置效果
通过使用display pim interface命令可以查看交换机接口上PIM的配置和运行情况。例如:
# 查看SwitchA上PIM的配置信息。
[SwitchA] display pim interface
Vpn-instance: public net
Interface NbrCnt HelloInt DR-Pri DR-Address
Vlan100 0 30 1 10.110.1.1 (local)
Vlan101 1 30 1 192.168.1.2
Vlan102 1 30 1 192.168.9.2
假如HostA需要接收指定组播源S(10.110.5.100/24)发往组播组G(232.1.1.1/24)的信息,SwitchA会向组播源方向构造SPT,SPT路径中的交换机(如SwitchA和SwitchD)上生成(S,G)表项,而SPT路径之外的SwitchE上没有组播路由项,通过使用display pim routing-table命令可以查看交换机PIM路由表信息。例如:
# 查看SwitchA上的PIM路由表信息。
[SwitchA] display pim routing-table
Vpn-instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 232.1.1.1)
Protocol: pim-ssm, Flag:
UpTime: 00:13:25
Upstream interface: Vlan-interface101
Upstream neighbor: 192.168.1.2
RPF prime neighbor: 192.168.1.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: pim-ssm, UpTime: 00:13:25, Expires: -
SwitchB和SwitchC上的显示信息与SwitchA类似。
# 查看SwitchD上的PIM组播路由表信息。
[SwitchD] display pim routing-table
Vpn-instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 232.1.1.1)
Protocol: pim-ssm, Flag:
UpTime: 00:12:05
Upstream interface: Vlan-interface300
Upstream neighbor: 10.110.5.100
RPF prime neighbor: 10.110.5.100
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface105
Protocol: pim, UpTime: 00:12:05, Expires: 00:03:25
网络中各路由器(包括直连组播源或接收者的路由器)上都没有组播转发项,也就是说无法正确建立组播分发树,客户端无法接收组播数据。
l 当全网运行PIM-DM时,组播数据由直连组播源的第一跳路由器沿SPT扩散到直连客户端的最后一跳路由器。无论组播数据扩散到哪一台路由器,只有该路由器存在到达组播源的路由,才会创建(S,G)项。反之,如果没有到达组播源的路由或者到达组播源的RPF接口没有使能PIM-DM,则该路由器无法创建(S,G)项。
l 当全网运行PIM-SM时,路由器在准备加入SPT时,只有存在到达组播源的路由,才会创建(S,G)项。反之,如果没有到达组播源的路由或者到达组播源的RPF接口没有使能PIM-SM,则该路由器无法创建(S,G)项。
l 对于某个RPF检查对象,在现存的单播路由表中查找到达该对象的最优路由,该路由的出接口作为RPF接口,下一跳作为RPF邻居。RPF接口完全依赖于现存的单播路由,并且与PIM本身无关。RPF接口必须使能PIM,而且RPF邻居也必须是PIM邻居。如果RPF接口或RPF邻居所在路由器上没有使能PIM,必然导致组播分发树无法正确建立,组播必然不通。
l Hello报文并不携带PIM的模式信息,所以运行PIM的路由器无法掌握自己的PIM邻居运行的是何种模式的PIM。如果RPF接口和RPF邻居所在路由器的对应接口没有使能相同模式的PIM,必然导致组播分发树无法正确建立,组播必然不通。
l 全网必须运行相同模式的PIM。否则,组播分发树必然无法正确建立,组播必然不通。
(1) 检查单播路由。使用命令display ip routing-table检查从接收者主机是否有到达组播源的单播路由项。
(2) 检查接口上是否使能PIM,尤其是RPF接口上是否使能PIM。通过命令display pim interface观察接口上的PIM信息。若接口上没有使能PIM,请使用pim dm或pim sm命令使能PIM-DM或者PIM-SM。
(3) 检查RPF邻居是否是PIM邻居。通过命令display pim neighbor观察PIM邻居信息。
(4) 检查直连组播源或接收者的路由器接口上是否使能PIM。
(5) 检查PIM模式是否一致。通过命令display pim interface verbose检查RPF接口和RPF邻居所在路由器的对应接口上是否使能了相同模式的PIM。
(6) 检查全部网络中各路由器上的PIM模式是否一致。确保全网所有路由器配置相同模式的PIM,即要么全部配置为PIM-SM,要么全部配置为PIM-DM。如果配置为PIM-SM,则还需要检查BSR以及RP的配置是否正确。
组播数据可以到达中间路由器,但无法到达最后一跳路由器。中间路由器某接口上收到组播数据,但PIM路由表中没有创建相应的(S,G)项。
l 命令multicast boundary用于在接口上设置组播转发边界,如果组播数据无法通过该边界,PIM是无法创建路由项的。
l 此外,source-policy命令用于过滤接收到的组播数据报文。如果组播数据报文无法通过该命令的ACL规则,PIM也是无法创建路由项的。
(1) 检查组播转发边界的配置。通过命令display current-configuration查看组播转发边界上的设置,使用multicast boundary命令更改组播转发边界的设置,使组播数据能够通过该边界。
(2) 检查组播过滤器配置。通过命令display current-configuration查看组播过滤器的配置,更改source-policy命令的ACL规则,使组播数据的源/组地址通过ACL过滤。
共享树无法正确建立,或者RP无法加入到达组播源的最短路径树。
l RP是PIM-SM的核心,为特定的组服务。网络中可以同时存在多个RP。必须保证所有路由器的RP信息完全一致,并且对于某个特定的组映射到相同的RP。否则必然导致组播不正常。
l 如果使用静态RP机制,必须在全网所有路由器上配置完全相同的静态RP命令。否则必然导致组播不正常。
(1) 检查是否有到达RP的路由。通过命令display ip routing-table查看各路由器上是否有到达RP的路由。
(2) 检查动态RP信息。通过命令display pim rp-info查看各路由器上的RP信息是否一致。
(3) 检查静态RP配置。通过命令display pim rp-info查看全网所有路由器上是否配置了完全相同的静态RP。
C-RP无法向BSR单播通告报文,BSR没有发布包含C-RP的自举报文,BSR上没有到达各C-RP的单播路由,共享树无法正确建立,或者DR无法向RP进行源注册。
l 由于C-RP周期性地向BSR单播宣告报文,如果C-RP没有到达BSR的单播路由就无法发送宣告报文,BSR就收不到C-RP宣告报文,也就不会发布包含该C-RP的自举报文。
l 另外,如果BSR没有到达C-RP的单播路由,就会丢弃该宣告报文,也就不会发布包含该C-RP的自举报文。
l RP是PIM-SM域的核心。必须保证全网所有路由器的RP信息完全一致,并且对于某个特定的组G映射到相同的RP,并且存在到达RP的单播路由。
(1) 检查是否有到达各C-RP/RP、BSR的路由。通过命令display ip routing-table查看各路由器上是否有到达RP和BSR的路由,及RP和BSR之间的路由。确保C-RP上存在到达BSR的单播路由,BSR上存在到达C-RP的单播路由,全网络所有路由器上存在到达RP的单播路由。
(2) 检查RP和BSR信息。PIM-SM协议需要有RP和BSR的支持,首先使用命令display pim bsr-info查看是否有BSR信息,使用display pim rp-info命令查看RP信息是否正确。
(3) 检查PIM邻居关系。通过命令display pim neighbor来查看是否正确建立了邻居关系。
MSDP是Multicast Source Discovery Protocol(组播源发现协议)的简称,是基于多个PIM-SM(Protocol Independent Multicast Sparse Mode,协议无关组播—稀疏模式)域的互连而开发的一种域间组播解决方案,用来发现其它PIM-SM域内的组播源信息。
在PIM-SM域中,组播源只向本地RP(Rendezvous Point,汇集点)进行注册,因此RP知道本域内的所有组播源。如果能够有一种机制,使不同PIM-SM域的RP共享其组播源信息,那么就能够将其它域内活动的组播源信息传递给本域内的接收者,从而实现组播报文的跨域转发。MSDP成功地实现了这一构想,通过在各域的RP之间建立MSDP对等体关系,使它们能够在域间相互转发组播数据,共享组播源信息。
注意:
l MSDP的适用前提:域内组播路由协议必须是PIM-SM;
l MSDP仅对ASM(Any-Source Multicast,任意信源组播)模型有意义。
l 如果不特别说明,本手册中的MSDP对等体均为RP间的MSDP对等体。
当某PIM-SM域内存在激活的组播源时,该域内的RP能够借助组播源注册过程了解该组播源的存在。如果其它ISP(Internet Service Provider,互联网服务提供商)管理的PIM-SM域也想从该组播源获取组播信息,则两个PIM-SM域内的路由器之间需要建立MSDP对等体关系。
图7-1 MSDP对等体示意图
图7-1显示的是建立在各RP之间的MSDP对等体关系,其基本原理如下:
l PIM-SM1域中有激活的组播源Source,该网络内的RP1通过组播源注册过程了解到组播源的具体位置,并向其它PIM-SM域内的MSDP对等体周期性地发送SA(Source Active,信源有效)消息。
l 该SA消息中除了包含组播源的地址S、组播组的地址G以及生成该消息的RP的地址外,还包含PIM-SM1域内RP收到的第一个组播数据包。
l SA消息被转发并最终到达所有的MSDP对等体,这样PIM-SM1域内的组播源信息就会被传递到所有的PIM-SM域。
l MSDP对等体对SA消息进行RPF(Reverse Path Forwarding,逆向路径转发)检查,只接受从正确路径上收到的SA消息并进行转发,从而避免SA消息传递环路;另外,可以通过在MSDP对等体之间配置全连接组(Mesh Group),以避免SA消息在MSDP对等体之间的泛滥。
l 假如PIM-SM4域中的RP4收到该SA消息,则检查对应的组播组是否有接收者存在,如果有则向组播源逐跳发送(S,G)加入消息(Join Message),从而构建了一棵基于组播源的SPT(Shortest Path Tree,最短路径树),而PIM-SM4域中的RP4与接收者之间为RPT(Rendezvous Point Tree,共享树或汇集树)。
& 说明:
l 全连接组是指多个MSDP对等体进行两两之间的相互连接。
l MSDP对等体之间使用TCP进行连接(端口号为639),既可以建立在不同PIM-SM域的RP之间,也可以建立在同一PIM-SM域的多个RP之间,还可以建立在RP与普通路由器之间,或普通路由器彼此之间。
l 在使用MSDP进行域间组播时,RP在收到组播源的信息后就不再需要依赖其它PIM-SM域内的RP,此时接收者可以跨越中途各PIM-SM域内的RP,而直接加入基于组播源的SPT。
Anycast RP(任播RP)是指通过使同一个PIM-SM域内两个或多个具有相同地址的RP之间形成的MSDP对等体关系,以实现域内RP之间的负载分担和冗余备份。
如图7-2所示,在一个PIM-SM域内,在不同路由器的接口(通常是逻辑接口,如Loopback接口)上配置相同的IP地址(称为Anycast RP地址,通常使用私有地址),同时将这些接口配置为C-RP(Candidate RP,候选RP),并在这些路由器之间建立MSDP对等体关系。
图7-2 Anycast RP典型组网图
组播源通常选择距离最近的RP进行注册,形成SPT;接收者也向距离最近的RP发送加入消息以构建RPT,因此组播源注册的RP可能不是接收者加入的RP。互为MSDP对等体的RP之间通过发送SA消息,了解对方的组播源信息,并最终使所有RP了解整个PIM-SM域内的所有组播源信息。这样,各RP上的接收者都可以收到整个PIM-SM域内所有组播源发出的组播数据。
由于RP之间通过MSDP互通信息,而组播源或接收者向就近的RP分别发起注册或加入,因此可以实现RP的负载分担。
当某RP失效后,原先注册或加入在该RP上的组播源或接收者会自动选择就近的RP进行注册或加入,从而实现了RP的冗余备份。
l 必须为Anycast RP地址配置32位的子网掩码(即255.255.255.255),也即将其配置为一个主机地址。
l 配置时,MSDP对等体的地址不能与Anycast RP地址相同。
如图7-3所示,网络中包含四个PIM-SM域,分别为PIM-SM1、PIM-SM2、PIM-SM3和PIM-SM4。各域内的RP之间建立MSDP对等体关系,PIM-SM1和PIM-SM4中存在组播组的成员。
当PIM-SM1中的组播源Source向组播组发送组播数据时,PIM-SM1和PIM-SM4中的接收者通过MSDP获得该组播源的信息,并成功接收来自该组播源的组播数据。具体过程如下:
(1) PIM-SM1中的组播源开始发送组播数据;
(2) 连接组播源的DR(Designated Router,指定路由器)把收到的组播数据封装在注册消息(Register Message)中,发送给RP1;
(3) RP1将注册消息解封装,并沿本域内的RPT将组播数据向下转发给域内的所有成员,同时向组播源发送加入消息(Join Message)。本域内的这些成员可以选择是否切换到SPT上;
(4) 与此同时,RP1生成一个SA消息,将其发送给对应的MSDP对等体(RP2和RP3),并最终转发至RP4。该SA消息中包括组播源的地址、组播组的地址、生成该消息的RP1的地址,以及RP1收到的第一个组播数据包。在此过程中,为了避免传递SA消息时出现环路,MSDP对等体对收到的SA消息进行RPF检查,如果RPF检查不通过,SA消息将被丢弃;
(5) 如果RP1的MSDP对等体所在的域内有接收者,例如PIM-SM4中有接收者,则该域内的RP4将解封装SA消息中的组播数据,并将组播数据沿其RPT下发到接收者,同时向组播源发送加入消息。此时,PIM-SM4中连接组成员的路由器可以选择是否切换到SPT上。
如图7-4所示,有三个自治系统AS1、AS2和AS3,每个自治系统都包含一个或多个PIM-SM域,且每个PIM-SM域内分别有一个RP,各RP之间建立MSDP对等体关系,其中RP2、RP3和RP4之间建立全连接组。
图7-4 MSDP对等体之间SA消息的转发
这些MSDP对等体按照如下原则处理相互之间转发的SA消息:
l 如果SA消息来自组播源所在域的RP,则接受该SA消息并向其它对等体转发。如RP1发给RP2的SA消息,RP2接受该消息并向RP3和RP4转发;
l 如果只有一个MSDP对等体,则接受该对等体发来的SA消息。如RP2发给RP1的SA消息,RP1接受该消息;
l 如果SA消息来自静态RPF对等体,则接受该SA消息并向其它对等体转发。如RP4发给RP5的SA消息,RP5接受该消息并向RP6转发;
l 如果SA消息来自MSDP全连接组中的对等体,则接受该SA消息并向该全连接组以外的对等体转发。如RP2发给RP4的SA消息,RP4接受该消息并向RP5和RP6转发;
l 如果SA消息来自同一个自治系统的MSDP对等体,且该对等体是到组播源所在PIM-SM域RP最佳路径上的下一跳,则接受该SA消息并向其它对等体转发。如RP5发给RP6的SA消息,RP6接受该消息;
l 如果SA消息来自不同自治系统的MSDP对等体,且该自治系统是到组播源所在PIM-SM域RP最佳路径上的下一个自治系统,则接受该SA消息并向其它对等体转发。如RP4发给RP6的SA消息,RP6接受该消息;
l 对于其它SA消息,不接受也不转发。
与MSDP相关的协议规范有:
l RFC 3618:Multicast Source Discovery Protocol (MSDP)
l RFC 3446:Anycast Rendevous Point (RP) mechanism using Protocol Independent Multicast (PIM) and Multicast Source Discovery Protocol (MSDP)
表7-1 MSDP配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置MSDP基本功能 |
使能MSDP |
必选 |
|
创建MSDP对等体连接 |
必选 |
||
配置静态RPF对等体 |
可选 |
||
配置MSDP对等体连接 |
配置MSDP对等体描述信息 |
可选 |
|
配置MSDP全连接组 |
可选 |
||
配置MSDP对等体连接控制 |
可选 |
||
配置SA消息 |
配置SA消息内容 |
可选 |
|
配置SA请求消息 |
可选 |
||
配置SA消息过滤规则 |
可选 |
||
配置SA消息缓存 |
可选 |
本节的所有配置都是在PIM-SM域内的RP上进行的,这些RP将成为MSDP对等体的一端。
在配置MSDP基本功能之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
l 配置PIM-SM
在配置MSDP基本功能之前,需准备以下数据:
l MSDP对等体的IP地址
l 表示RP地址过滤策略的地址前缀列表
在配置MSDP各功能之前,必须先使能MSDP。
表7-2 使能MSDP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由 |
multicast routing-enable |
必选 缺省情况下,IP组播路由处于关闭状态 |
使能MSDP,并进入MSDP视图 |
msdp |
必选 缺省情况下,MSDP处于关闭状态 |
MSDP对等体是两个PIM-SM域RP节点之间的关系,使用地址对来标识,即本端MSDP对等体地址和远端MSDP对等体地址。
需要在互为对等体的两端都创建MSDP对等体连接。
表7-3 创建MSDP对等体连接
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
创建MSDP对等体连接 |
peer peer-address connect-interface interface-type interface-number |
必选 缺省情况下,没有创建MSDP对等体连接 |
& 说明:
如果路由器某接口同时作为MSDP对等体和BGP对等体中的一端,则建议为MSDP对等体和BGP对等体配置相同的IP地址。
存在MSDP对等体关系的两台路由器之间,需要存在一条BGP路由,从而可以在PIM-SM域间通过该路由直接传递SA消息。如果没有该路由,则必须配置静态RPF对等体。
对于只有一个MSDP对等体的区域(称为STUB区域),MSDP对等体之间也可以不需要BGP路由,而通过配置静态RPF对等体并借助自治系统之间现有的路由来实现SA消息的传递。
配置静态RPF对等体还可以避免对收到的SA消息进行RPF检查。
表7-4 配置静态RPF对等体
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
配置静态RPF对等体 |
static-rpf-peer peer-address [ rp-policy ip-prefix-name ] |
必选 缺省情况下,没有配置静态RPF对等体 |
& 说明:
如果在一台路由器上只配置了一个MSDP对等体,则该MSDP对等体将被当作静态RPF对等体。
在配置MSDP对等体连接之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
l 配置MSDP基本功能
在配置MSDP对等体连接之前,需准备以下数据:
l MSDP对等体的描述信息
l MSDP对等体全连接组的名称
l 建立MSDP对等体连接的重试周期
管理员可以通过MSDP对等体的描述信息方便地区分不同的MSDP对等体,从而更好地管理MSDP对等体。
表7-5 配置MSDP对等体描述信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
配置MSDP对等体的描述信息 |
peer peer-address description text |
必选 缺省情况下,MSDP对等体没有描述信息 |
一个自治系统内可能包含多个MSDP对等体,为了避免这些MSDP对等体之间泛滥SA消息,可以使用MSDP全连接组(Mesh Group)机制来优化数据流量。
构成全连接组的MSDP对等体,一方面接收来自全连接组外的SA消息,并转发给组内的其它成员;另一方面,对来自组内对等体的SA消息不经RPF检查就接受,也不在组内进行重复转发。这种操作既避免了SA消息的泛滥,同时还由于不需要在MSDP对等体之间运行BGP,所以也就简化了对等体RPF检查机制。
表7-6 配置MSDP全连接组
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
把MSDP对等体加入全连接组 |
peer peer-address mesh-group name |
必选 缺省情况下,MSDP对等体不属于任何全连接组 |
& 说明:
l 在配置MSDP全连接组之前,应使各路由器之间保持两两互连。
l 为多个MSDP对等体配置相同的全连接组名称,可以建立全连接组。
l 如果在同一MSDP对等体上多次配置加入全连接组,最后一个配置有效。
可以手工临时关闭某些MSDP对等体连接,并根据需要再进行激活。手工关闭MSDP对等体连接后,MSDP对等体之间不再传递SA消息,TCP连接关闭,并不再重试建立连接,但配置信息会被保留。
在重新建立MSDP对等体关系,或当发生故障的MSDP对等体重新恢复工作时,MSDP对等体将在重试时间内反复尝试建立TCP连接,直至连接建立。
表7-7 配置MSDP对等体连接控制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
手工关闭MSDP对等体连接 |
shutdown peer-address |
可选 缺省情况下,MSDP对等体处于连接状态 |
配置建立MSDP对等体连接的重试时间 |
timer retry interval |
可选 缺省情况下,建立MSDP对等体连接的重试时间为30秒 |
在配置SA消息传递之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
l 配置MSDP基本功能
在配置SA消息传递之前,需准备以下数据:
l 表示SA请求消息过滤规则的ACL
l 表示SA消息创建规则的ACL
l 表示接收或转发SA消息的过滤规则的ACL
l 封装在SA消息中组播报文的最小TTL值
l 缓存SA消息的最大数量
SA消息中除了携带有组播源地址、组播组地址以及生成该消息的RP的地址等相关信息外,还可以封装组播源所在域的RP收到的第一个组播数据包。对于某些突发性的组播数据,例如组播数据的发送间隔超过了SA消息的保持时间,则必须在SA消息中封装第一个组播数据包,否则接收者将永远无法收到组播源的信息。
MSDP对等体之间传递SA消息,当路由器对收到的SA消息进行RPF检查时,如果发现对端RP的地址与本地RP的地址相同,就会丢弃该SA消息。但在Anycast RP应用中,要求在同一个PIM-SM域内的两台或多台路由器上配置IP地址相同的RP,并在这些路由器之间建立MSDP对等体关系,因此必须为SA消息指定一个与实际RP的地址不同的逻辑RP地址(即逻辑接口上的RP地址),以通过RPF检查。
表7-8 配置SA消息内容
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
使能在SA消息中封装第一个组播数据包 |
encap-data-enable |
可选 缺省情况下,在SA消息中不封装第一个组播数据包 |
配置接口地址为SA消息的RP地址 |
originating-rp interface-type interface-number |
可选 缺省情况下,SA消息的RP地址为PIM的RP地址 |
& 说明:
在Anycast RP应用中,MSDP对等体的地址不能与Anycast RP地址相同,且C-BSR和C-RP必须配置在不同的设备或接口上。通常情况下,将PIM-SM域的C-BSR和C-RP配置在同一台路由器,并使用相同的接口地址。但在Anycast RP应用中,由于多个RP使用相同的地址,每个DR分别将其直连的源注册到离自己最近的RP上,然而在PIM-SM域中只能有一个BSR生效。因此,如果在一台路由器上配置相同的C-BSR地址和RP地址,其它C-RP在对收到的BSR报文进行检查时,会由于报文中的BSR地址是本地地址而拒绝接收该BSR报文,从而造成其它配置了C-RP的路由器不认为自己是RP,也就无法完成Anycast RP功能。
缺省情况下,当一个新接收者加入时,路由器不会主动向其MSDP对等体发送SA请求消息,而是等待其MSDP对等体在下一个周期发来的SA消息,这将延迟接收者获取组播信息的时间。为了尽快让新接收者了解到当前活跃的组播源信息,需要主动向MSDP对等体发送SA请求消息。
表7-9 配置SA请求消息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
使能发送SA请求消息 |
peer peer-address request-sa-enable |
可选 缺省情况下,不发送SA请求消息 |
配置SA请求消息的过滤规则 |
peer peer-address sa-request-policy [ acl acl-number ] |
可选 缺省情况下,不对SA请求消息进行过滤 |
通过配置SA消息的创建规则,路由器可以在创建SA消息时,对其通告的(S,G)表项进行过滤,从而实现在创建SA消息时对组播源消息传播的控制。
对于SA消息组播源信息的传播控制,除了可以控制SA消息的创建,还可以控制对SA消息的转发和接收:
l 通过配置接收或转发SA消息的过滤规则,路由器可以在接收或转发SA消息时,对其通告的(S,G)转发项进行过滤,从而实现在接收和转发SA消息时,对组播源消息传播的控制。
l 封装了组播数据包的SA消息,只有当其IP头中的TTL值超过阈值时才能被转发给域外指定的MSDP对等体,因此可以通过配置封装在SA消息中组播数据包的TTL阈值来控制这类SA消息转发。
表7-10 配置SA消息过滤规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
配置SA消息的创建规则 |
import-source [ acl acl-number ] |
必选 缺省情况下,在创建SA消息时,对其通告的(S,G)项不作限制 |
配置接收或转发SA消息的过滤规则 |
peer peer-address sa-policy { import | export } [ acl acl-number ] |
必选 缺省情况下,不对接收或转发的SA消息进行过滤 |
配置封装在SA消息中组播报文的最小TTL值 |
peer peer-address minimum-ttl ttl-value |
可选 缺省情况下,封装在SA消息中组播报文的最小TTL值为0 |
为了减少获取组播源信息的时延,可以在路由器上缓存SA消息。缓存的消息越多,所占用的路由器内存空间越大。
在使能了SA消息缓存机制后,当收到一个新的组加入消息时,路由器并不会主动向其MSDP对等体发送SA请求消息,而是分如下两种情况分别处理:
l 如果缓存中尚未存有SA消息,便等候其MSDP对等体在下一个周期发来的SA消息;
l 如果缓存中已存有SA消息,则直接从其中获得所有活动源的信息,并加入到相应的SPT。
有时为了防止路由器受到DoS(Deny of Service,拒绝服务)攻击,可以配置允许路由器缓存SA消息的最大数量。
表7-11 配置SA消息缓存
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MSDP视图 |
msdp |
- |
使能SA消息缓存机制 |
cache-sa-enable |
可选 在缺省情况下,SA消息缓存机制处于使能状态 |
配置缓存SA消息的最大数量 |
peer peer-address sa-cache-maximum sa-limit |
可选 缺省情况下,缓存SA的最大数量为8192 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后MSDP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除MSDP的统计信息。
表7-12 MSDP显示和维护
操作 |
命令 |
查看MSDP对等体的简要信息 |
display msdp brief [ state { connect | down | listen | shutdown | up } ] |
查看MSDP对等体的详细状态信息 |
display msdp peer-status [ peer-address ] |
查看MSDP缓存中的(S,G)表项信息 |
display msdp sa-cache [ group-address | source-address | as-number ] * |
查看MSDP缓存中的SA消息数量 |
display msdp sa-count [ as-number ] |
重置与MSDP对等体的TCP连接 |
reset msdp peer [ peer-address ] |
清除MSDP缓存中的(S,G)表项 |
reset msdp sa-cache [ group-address ] |
清除MSDP对等体的统计信息 |
reset msdp statistics [ peer-address ] |
l 两个ISP所维护网络的自治系统分别为AS100和AS200,各AS内部采用OSPF进行互联,AS之间采用BGP交换路由信息;
l PIM-SM1属于AS100,PIM-SM2和PIM-SM3属于AS200;
l 每个PIM-SM域都采用单BSR管理域方式,分别拥有0或1个组播源以及多个接收者,域内运行OSPF协议以提供单播路由;
l 将SwitchC、SwitchD和SwitchF各自的Loopback0接口分别配置为各自PIM-SM域的C-BSR和C-RP;
l 在SwitchC与SwitchF之间通过EBGP建立MSDP对等体关系,在SwitchF与SwitchD之间通过IBGP建立MSDP对等体关系。
图7-5 MSDP典型配置组网图
(1) 配置各交换机的接口IP地址和单播路由协议
请按照图7-5配置各接口的IP地址和子网掩码,具体配置过程略。
配置各域内的交换机之间采用OSPF协议进行互连,确保PIM-SM1域中SwitchA、SwitchB和SwitchC之间能够在网络层互通,PIM-SM2域中SwitchD和SwitchE之间能够在网络层互通,PIM-SM3域中SwitchF和SwitchG之间能够在网络层互通,并且每个PIM-SM域内各交换机之间能够借助单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IP组播路由,并在各接口上使能PIM-SM
# 在SwitchC上使能IP组播路由,并在各接口上使能PIM-SM。
<SwitchC> system-view
[SwitchC] multicast routing-enable
[SwitchC] interface vlan-interface 100
[SwitchC-Vlan-interface100] pim sm
[SwitchC-Vlan-interface100] quit
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] pim sm
[SwitchC-Vlan-interface200] quit
[SwitchC] interface vlan-interface 101
[SwitchC-Vlan-interface101] pim sm
SwitchA、SwitchB、SwitchD、SwitchE、SwitchF和SwitchG上的配置与SwitchC相似,配置过程略。
# 在SwitchC上配置BSR服务边界。
[SwitchC-Vlan-interface101] pim bsr-boundary
[SwitchC-Vlan-interface101] quit
SwitchD和SwitchF上的配置与SwitchC相似,配置过程略。
(3) 配置Loopback0接口和C-BSR、C-RP的位置
# 在SwitchC上配置Loopback0接口和C-BSR、C-RP的位置。
[SwitchC] interface loopback 0
[SwitchC-LoopBack0] ip address 1.1.1.1 255.255.255.255
[SwitchC-LoopBack0] pim sm
[SwitchC-LoopBack0] quit
[SwitchC] pim
[SwitchC-pim] c-bsr loopback 0
[SwitchC-pim] c-rp loopback 0
[SwitchC-pim] quit
SwitchD和SwitchF上的配置与SwitchC相似,配置过程略。
(4) 配置自治系统间的BGP路由协议,将BGP与OSPF互相引入
# 在SwitchC上配置EBGP协议,并引入OSPF路由。
[SwitchC] bgp 100
[SwitchC-bgp] router-id 1.1.1.1
[SwitchC-bgp] peer 192.168.1.2 as-number 200
[SwitchC-bgp] import-route ospf 1
[SwitchC-bgp] quit
# 在SwitchF上配置IBGP和EBGP协议,并引入OSPF路由。
[SwitchF] bgp 200
[SwitchF-bgp] router-id 3.3.3.3
[SwitchF-bgp] peer 192.168.1.1 as-number 100
[SwitchF-bgp] peer 192.168.3.1 as-number 200
[SwitchF-bgp] import-route ospf 1
[SwitchF-bgp] quit
# 在SwitchD上配置IBGP协议,并引入OSPF路由。
[SwitchD] bgp 200
[SwitchD-bgp]] router-id 2.2.2.2
[SwitchD-bgp] peer 192.168.3.2 as-number 200
[SwitchD-bgp] import-route ospf 1
[SwitchD-bgp] quit
# 在SwitchC的OSPF中引入BGP。
[SwitchC] ospf 1
[SwitchC-ospf-1] import-route bgp
[SwitchC-ospf-1] quit
SwitchD和SwitchF上的配置与SwitchC相似,配置过程略。
通过使用display bgp peer命令可以查看交换机之间BGP对等体的关系。例如:
# 查看SwitchC上BGP对等体关系的信息。
[SwitchC] display bgp peer
BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
192.168.1.2 4 200 24 21 0 6 00:13:09 Established
# 查看SwitchD上BGP对等体关系的信息。
[SwitchD] display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 200
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
192.168.3.2 4 200 21 20 0 6 00:12:05 Established
# 查看SwitchF上BGP对等体关系的信息。
[SwitchF] display bgp peer
BGP local router ID : 3.3.3.3
Local AS number : 200
Total number of peers : 2 Peers in established state : 2
Peer V AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
192.168.1.1 4 100 18 16 0 1 00:12:04 Established
192.168.3.1 4 200 16 14 0 1 00:10:58 Established
通过使用display bgp routing-table命令可以查看交换机上的BGP路由表。例如:
# 查看SwitchF上BGP路由表的信息。
[SwitchF] display bgp routing-table
Total Number of Routes: 13
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.1/32 192.168.1.1 0 0 100?
*>i 2.2.2.2/32 192.168.3.1 0 100 0 ?
*> 3.3.3.3/32 0.0.0.0 0 0 ?
*> 192.168.1.0 0.0.0.0 0 0 ?
* 192.168.1.1 0 0 100?
*> 192.168.1.1/32 0.0.0.0 0 0 ?
*> 192.168.1.2/32 0.0.0.0 0 0 ?
* 192.168.1.1 0 0 100?
*> 192.168.3.0 0.0.0.0 0 0 ?
* i 192.168.3.1 0 100 0 ?
*> 192.168.3.1/32 0.0.0.0 0 0 ?
*> 192.168.3.2/32 0.0.0.0 0 0 ?
* i 192.168.3.1 0 100 0 ?
(5) 配置MSDP对等体
# 在SwitchC上配置MSDP对等体。
[SwitchC] msdp
[SwitchC-msdp] peer 192.168.1.2 connect-interface vlan-interface 101
[SwitchC-msdp] quit
# 在SwitchD上配置MSDP对等体。
[SwitchD] msdp
[SwitchD-msdp] peer 192.168.3.2 connect-interface vlan-interface 102
[SwitchD-msdp] quit
# 在SwitchF上配置MSDP对等体。
[SwitchF] msdp
[SwitchF-msdp] peer 192.168.1.1 connect-interface vlan-interface 101
[SwitchF-msdp] peer 192.168.3.1 connect-interface vlan-interface 102
[SwitchF-msdp] quit
当PIM-SM1域内的组播源S1发送组播信息时,PIM-SM2和PIM-SM3域内的接收者能收到该组播信息。通过使用display msdp brief命令可以查看交换机之间MSDP对等体建立情况。例如:
# 查看SwitchC上MSDP对等体建立情况的简要信息。
[SwitchC] display msdp brief
MSDP Peer Brief Information
Configured Up Listen Connect Shutdown Down
1 1 0 0 0 0
Peer's Address State Up/Down time AS SA Count Reset Count
192.168.1.2 Up 00:12:27 200 13 0
# 查看SwitchD上MSDP对等体建立情况的简要信息。
[SwitchD] display msdp brief
MSDP Peer Brief Information
Configured Up Listen Connect Shutdown Down
1 1 0 0 0 0
Peer's Address State Up/Down time AS SA Count Reset Count
192.168.3.2 Up 00:15:32 200 8 0
# 查看SwitchF上MSDP对等体建立情况的简要信息。
[SwitchF] display msdp brief
MSDP Peer Brief Information
Configured Up Listen Connect Shutdown Down
2 2 0 0 0 0
Peer's Address State Up/Down time AS SA Count Reset Count
192.168.3.1 UP 01:07:08 200 8 0
192.168.1.1 UP 00:06:39 100 13 0
# 查看SwitchC上MSDP对等体的详细信息。
[SwitchC] display msdp peer-status
MSDP Peer 192.168.1.2, AS 200
Description:
Information about connection status:
State: Up
Up/down time: 00:15:47
Resets: 0
Connection interface: Vlan-interface101 (192.168.1.1)
Number of sent/received messages: 16/16
Number of discarded output messages: 0
Elapsed time since last connection or counters clear: 00:17:51
Information about (Source, Group)-based SA filtering policy:
Import policy: none
Export policy: none
Information about SA-Requests:
Policy to accept SA-Request messages: none
Sending SA-Requests status: disable
Minimum TTL to forward SA with encapsulated data: 0
SAs learned from this peer: 0, SA-cache maximum for the peer: none
Input queue size: 0, Output queue size: 0
Counters for MSDP message:
Count of RPF check failure: 0
Incoming/outgoing SA messages: 0/0
Incoming/outgoing SA requests: 0/0
Incoming/outgoing SA responses: 0/0
Incoming/outgoing data packets: 0/0
l PIM-SM域内采用单BSR管理域方式,拥有多个组播源和接收者,并在域内运行OSPF协议以提供单播路由;
l 在PIM-SM域内配置Anycast RP,当有新成员加入组播组时,与接收者直接相连的交换机能够向拓扑距离最近的RP发起加入消息;
l 在SwitchC和SwitchD之间建立MSDP对等体关系;
l 将SwitchC和SwitchD各自的Loopback1接口配置为C-BSR、Loopback10接口配置为C-RP;
l SwitchC的router ID为1.1.1.1,SwitchD的router ID为2.2.2.2。
图7-6 Anycast RP应用配置组网图
(1) 配置各交换机的接口IP地址和单播路由协议
请按照图7-6配置各接口的IP地址和子网掩码,具体配置过程略。
配置各交换机之间采用OSPF协议进行互连,具体配置过程略。
(2) 使能IP组播路由,并在各接口上使能PIM-SM
# 在SwitchC上使能IP组播路由,并在各接口上使能PIM-SM。
<SwitchC> system-view
[SwitchC] multicast routing-enable
[SwitchC] interface vlan-interface 103
[SwitchC-Vlan-interface103] pim sm
[SwitchC-Vlan-interface103] quit
[SwitchC] interface vlan-interface 100
[SwitchC-Vlan-interface100] pim sm
[SwitchC-Vlan-interface100] quit
[SwitchC] interface Vlan-interface 101
[SwitchC-Vlan-interface101] pim sm
[SwitchC-Vlan-interface101] quit
SwitchA、SwitchB、SwitchD、SwitchE、SwitchF和SwitchG上的配置与SwitchC相似,配置过程略。
(3) 配置Loopback1、Loopback10接口,以及C-BSR、C-RP的位置
# 在SwitchC和SwitchD上分别配置Loopback1接口地址和相同的Loopback10接口地址,并分别在Loopback1上配置C-BSR,在Loopback10上配置C-RP。
[SwitchC] interface loopback 1
[SwitchC-LoopBack1] ip address 3.3.3.3 255.255.255.255
[SwitchC-LoopBack1] pim sm
[SwitchC-LoopBack1] quit
[SwitchC] interface loopback 10
[SwitchC-LoopBack10] ip address 10.1.1.1 255.255.255.255
[SwitchC-LoopBack10] pim sm
[SwitchC-LoopBack10] quit
[SwitchC] pim
[SwitchC-pim] c-bsr loopback 1
[SwitchC-pim] c-rp loopback 10
[SwitchC-pim] quit
SwitchD上的配置与SwitchC相似,配置过程略。
通过使用display pim routing-table命令可以查看交换机上的PIM路由。当PIM-SM域内的组播源S1(10.110.5.100/24)向组播组G(225.1.1.1/24)发送组播信息时,SwitchD所携带的接收者能收到该组播信息,通过比较SwitchC与SwitchD上PIM路由的显示信息,可知此时的RP为SwitchC:
# 查看SwitchC上的PIM路由的信息。
[SwitchC] display pim routing-table
Vpn-instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 225.1.1.1), RP: 10.1.1.1 (local)
Protocol: pim-sm, Flag: SPT LOC ACT
UpTime: 00:10:20
Upstream interface: Vlan-interface100
RPF neighbor: 10.110.1.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface101
Protocol: pim-sm, UpTime: 00:10:20, Expires: 00:03:10
# 查看SwitchD上的PIM路由的信息。
[SwitchD] display pim routing-table
Vpn-instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 225.1.1.1), RP: 10.1.1.1
Protocol: pim-sm, Flag: SPT ACT
UpTime: 00:03:32
Upstream interface: Vlan-interface102
RPF neighbor: 192.168.3.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface200
Protocol: pim-sm, UpTime: 00:03:32, Expires: -
(4) 配置Loopback0接口和MSDP对等体
# 在SwitchC的Loopback0接口上配置MSDP对等体。
[SwitchC] interface loopback 0
[SwitchC-LoopBack0] ip address 1.1.1.1 255.255.255.255
[SwitchC-LoopBack0] pim sm
[SwitchC-LoopBack0] quit
[SwitchC] msdp
[SwitchC-msdp] originating-rp loopback 0
[SwitchC-msdp] peer 2.2.2.2 connect-interface loopback 0
[SwitchC-msdp] quit
# 在SwitchD的Loopback0接口上配置MSDP对等体。
[SwitchD] interface loopback 0
[SwitchD-LoopBack0] ip address 2.2.2.2 255.255.255.255
[SwitchD-LoopBack0] pim sm
[SwitchD-LoopBack0] quit
[SwitchD] msdp
[SwitchD-msdp] originating-rp loopback 0
[SwitchD-msdp] peer 1.1.1.1 connect-interface loopback 0
[SwitchD-msdp] quit
通过使用display msdp brief命令可以查看交换机之间MSDP对等体建立情况。
# 查看SwitchC上MSDP对等体的简要信息。
[SwitchC] display msdp brief
MSDP Peer Brief Information
Configured Up Listen Connect Shutdown Down
1 1 0 0 0 0
Peer's Address State Up/Down time AS SA Count Reset Count
2.2.2.2 Up 00:10:17 ? 0 0
# 查看SwitchD上MSDP对等体的简要信息。
[SwitchD] display msdp brief
MSDP Peer Brief Information
Configured Up Listen Connect Shutdown Down
1 1 0 0 0 0
Peer's Address State Up/Down time AS SA Count Reset Count
1.1.1.1 Up 00:10:18 ? 0 0
l 两个ISP所维护网络的自治系统分别为AS100和AS200,各AS内部采用OSPF进行互联,AS之间采用BGP交换路由信息;
l PIM-SM1属于AS100,PIM-SM2和PIM-SM3属于AS200;
l 每个PIM-SM域都采用单BSR管理域方式,分别拥有0或1个组播源以及多个接收者,域内运行OSPF以提供单播路由;
l PIM-SM2和PIM-SM3都是PIM STUB区域,这两个区域与PIM-SM1之间无需运行BGP或者MBGP,而是与之建立静态RPF对等体,从而避免对SA消息进行RPF检查;
l 将SwitchC、SwitchD和SwitchF各自的Loopback0接口分别配置为各自PIM-SM域的C-BSR和C-RP;
l SwitchC的静态RPF对等体为SwitchD和SwitchF,SwitchD和SwitchF也分别只有SwitchC这一个静态RPF对等体,任何交换机都能够接收来自其静态RPF对等体的且被相应过滤策略允许的SA消息。
图7-7 静态RPF对等体组网图
(1) 配置各交换机的接口IP地址和单播路由协议
请按照图7-7配置各接口的IP地址和掩码,具体配置过程略。
配置各交换机之间采用OSPF协议进行互连,确保PIM-SM1域中SwitchA、SwitchB和SwitchC之间能够在网络层互通,PIM-SM2域中SwitchD和SwitchE之间能够在网络层互通,PIM-SM3域中SwitchF和SwitchG之间能够在网络层互通,并且每个PIM-SM域内各交换机之间能够借助单播路由协议实现动态路由更新,具体配置过程略。
在SwitchC与SwitchD、SwitchC与SwitchF之间配置EBGP,将BGP与OSPF互相引入,具体配置过程略。
(2) 使能IP组播路由,并在各接口上使能PIM-SM
# 在SwitchC上上使能IP组播路由,并在各接口上使能PIM-SM。
<SwitchC> system-view
[SwitchC] multicast routing-enable
[SwitchC] interface vlan-interface 101
[SwitchC-Vlan-interface101] pim sm
[SwitchC-Vlan-interface101] quit
[SwitchC] interface vlan-interface 102
[SwitchC-Vlan-interface102] pim sm
SwitchA、SwitchB、SwitchD、SwitchE、SwitchF和SwitchG上的配置与SwitchC相似,配置过程略。
# 在SwitchC上配置BSR服务边界。
[SwitchC-Vlan-interface102] pim bsr-boundary
[SwitchC-Vlan-interface102] quit
[SwitchC] interface vlan-interface 101
[SwitchC-Vlan-interface101] pim bsr-boundary
[SwitchC-Vlan-interface101] quit
SwitchD和SwitchF上的配置与SwitchC相似,配置过程略。
(3) 配置Loopback0接口和C-BSR、C-RP的位置
# 在SwitchC上配置Loopback0接口和C-BSR和C-RP的位置。
[SwitchC] router-id 1.1.1.1
[SwitchC] interface loopback 0
[SwitchC-LoopBack0] ip address 1.1.1.1 255.255.255.255
[SwitchC-LoopBack0] pim sm
[SwitchC-LoopBack0] quit
[SwitchC] pim
[SwitchC-pim] c-bsr loopback 0
[SwitchC-pim] c-rp loopback 0
[SwitchC-pim] quit
SwitchD和SwitchF上的配置与SwitchC相似,配置过程略。
(4) 配置静态RPF对等体
# 配置SwitchD和SwitchF作为SwitchC的静态RPF对等体。
[SwitchC] ip ip-prefix list-df permit 192.168.0.0 16 greater-equal 16 less-equal 32
[SwitchC] msdp
[SwitchC-msdp] peer 192.168.3.1 connect-interface vlan-interface 102
[SwitchC-msdp] peer 192.168.1.2 connect-interface vlan-interface 101
[SwitchC-msdp] static-rpf-peer 192.168.3.1 rp-policy list-df
[SwitchC-msdp] static-rpf-peer 192.168.1.2 rp-policy list-df
[SwitchC-msdp] quit
# 配置SwitchC作为SwitchD的静态RPF对等体。
[SwitchD] ip ip-prefix list-c permit 192.168.0.0 16 greater-equal 16 less-equal 32
[SwitchD] msdp
[SwitchD-msdp] peer 192.168.3.2 connect-interface vlan-interface 102
[SwitchD-msdp] static-rpf-peer 192.168.3.2 rp-policy list-c
[SwitchD-msdp] quit
# 配置SwitchC作为SwitchF的静态RPF对等体。
[SwitchF] ip ip-prefix list-c permit 192.168.0.0 16 greater-equal 16 less-equal 32
[SwitchF] msdp
[SwitchF-msdp] peer 192.168.3.2 connect-interface vlan-interface 102
[SwitchF-msdp] static-rpf-peer 192.168.3.2 rp-policy list-c
[SwitchF-msdp] quit
(5) 检验配置效果
通过使用display bgp peer命令可以查看交换机之间BGP对等体建立情况,如果无任何信息输出,说明交换机之间未建立BGP对等体关系。
当PIM-SM1域内的组播源S1发送组播信息时,PIM-SM2和PIM-SM3域内的接收者能收到该组播信息,通过使用display msdp brief命令可以查看交换机之间MSDP对等体的建立情况。例如:
# 查看SwitchC上MSDP对等体的简要信息。
[SwitchC] display msdp brief
MSDP Peer Brief Information
Configured Up Listen Connect Shutdown Down
2 2 0 0 0 0
Peer's Address State Up/Down time AS SA Count Reset Count
192.168.3.1 UP 01:07:08 ? 8 0
192.168.1.2 UP 00:16:39 ? 13 0
# 查看SwitchD上MSDP对等体的简要信息。
[SwitchD] display msdp brief
MSDP Peer Brief Information
Configured Up Listen Connect Shutdown Down
1 1 0 0 0 0
Peer's Address State Up/Down time AS SA Count Reset Count
192.168.3.2 UP 01:07:09 ? 8 0
# 查看SwitchF上MSDP对等体的简要信息。
[SwitchF] display msdp brief
MSDP Peer Brief Information
Configured Up Listen Connect Shutdown Down
1 1 0 0 0 0
Peer's Address State Up/Down time AS SA Count Reset Count
192.168.3.2 UP 00:16:40 ? 13 0
配置了MSDP对等体,但其状态一直显示为down。
l 所配置的本地接口地址与MSDP对等体地址之间,建立起基于TCP连接的MSDP对等体关系;
l 如果本地接口地址与对端路由器上所配置的MSDP对等体地址不一致,TCP连接就不会建立起来;
l 如果两个MSDP对等体之间没有路由,TCP连接也不会建立起来。
(1) 检查各路由器之间的路由是否通达。通过命令display ip routing-table查看各路由器之间单播路由是否正确。
(2) 检查将成为MSDP对等体的两个路由器间是否存在到达对方的单播路由。
(3) 检查MSDP对等体之间的接口地址是否匹配。通过命令display current-configuration查看本地接口地址是否与对端MSDP对等体地址一致,应确保一致。
MSDP没有将(S,G)转发项通过SA消息发送出去。
l 命令import-source用于控制将本域的(S,G)项通过SA消息发送给MSDP对等体。如果没有指定参数acl-number则表示默认过滤掉所有的(S,G)项,即不通告本域的所有(S,G)项;
l 未配置import-source命令时,系统将发送本域的所有(S,G)信息。如果MSDP没有将本域的(S,G)项通过SA消息发送出去,应检查import-source命令的配置是否正确。
(1) 检查各路由器之间的路由是否通达。通过命令display ip routing-table查看各路由器之间单播路由是否正确。
(2) 检查将成为MSDP对等体的两个路由器间是否存在到达对方的单播路由。
(3) 检查命令import-source及其参数acl-number的配置情况,确保ACL规则能够过滤合适的(S,G)信息。
在Anycast RP的应用中,各RP之间没有互相交换其本地注册的(S,G)信息。
l 在Anycast RP应用中,通过将同一PIM-SM域内的RP配置为MSDP对等体,可以实现RP间的负载分担;
l MSDP对等体地址不能与Anycast RP地址相同,且C-BSR和C-RP必须配置在不同的设备或接口上;
l 在使用originating-rp命令进行配置后,MSDP将利用该命令所指定的接口地址替换SA消息中的RP地址;
l 当MSDP对等体对收到的SA消息进行RPF检查时,如果发现RP地址与本地配置的RP地址相同,将拒绝接收SA消息。
(1) 检查各路由器之间的路由是否通达。通过命令display ip routing-table查看各路由器之间单播路由是否正确。
(2) 检查将成为MSDP对等体的两个路由器间是否存在到达对方的单播路由。
(3) 检查originating-rp命令的配置情况。在Anycast RP的应用环境中,一定要配置originating-rp命令,而且originating-rp命令所指定的接口地址要与建立MSDP对等体连接的本地接口地址相同。
(4) 检查所配置的C-BSR地址是否与Anycast RP的地址不同,应确保两个地址不同。
为了保证组播数据包在网络中的正确传输,需要对组播数据包的接收接口进行RPF(Reverse Path Forwarding,逆向路径转发)检查:
l 如果检查通过,路由器创建相应的组播转发项并对组播数据包进行转发;
l 如果检查不通过,组播数据包将被丢弃。
组播策略就是为了对RPF路由选择信息进行过滤而实施的一些策略。
在组播实现中,组播路由和转发分为三个方面:
l 每个组播路由协议都有一个协议自身的路由表,如PIM 路由表(PIM Routing-Table);
l 各组播路由协议的组播路由信息经过综合形成一个总的组播路由表(Multicast Routing-Table);
l 组播转发表(Multicast Forwarding-Table)直接用于控制着组播数据包的转发。
组播路由表由一组(S,G)表项组成,其中(S,G)表示由源S向组播组G发送组播数据的路由信息。如果路由器支持多种组播路由协议,则其组播路由表中将包括由多种协议生成的组播路由。路由器根据组播路由和转发策略,从组播路由表中选出最优的组播路由,并下发到组播转发表中。
组播转发表是真正指导组播数据转发的转发表,设备在收到由组播源S向组播组G发送的组播报文后,首先查找组播转发表:
l 如果存在对应的(S,G)表项,且该报文实际到达接口与组播转发表中的入接口一致,则向所有的出接口执行转发。
l 如果存在对应的(S,G)表项,但是报文实际到达的接口与组播转发表中的入接口不一致,则对此报文执行RPF检查:若检查通过,则将入接口修改为报文实际到达的接口,然后向所有的出接口执行转发;若检查不通过,则丢弃该报文。
l 如果不存在对应的(S,G)表项,则对该报文执行RPF检查:若检查通过,则根据相关路由信息,创建对应的路由表项,并下发到组播转发表中,然后向所有的出接口执行转发;若检查不通过,则丢弃该报文。
RPF检查的执行过程如下:
(1) 在单播路由表中查找RPF接口。单播路由表中汇集了到达各个目的地址的最短路径。
l 如果当前组播路径沿袭了从组播源到接收者的最短路径树(Shortest Path Tree,SPT)或组播源到汇集点(Rendezvous Point,RP)的源树,则路由器以组播源的IP地址为目的地址查找单播路由表,相应表项的出接口为RPF接口。路由器认为由该RPF接口收到的组播报文所经过的路径是从组播源到本地的最短路径;
l 如果当前组播路径沿袭了从汇集点到接收者的共享树(Rendezvous Point Tree,RPT),则路由器以汇集点的IP地址为目的地址查找单播路由表,相应表项的出接口为RPF接口。路由器认为由该RPF接口收到的组播报文所经过的路径是从汇集点到本地的最短路径。
& 说明:
(2) 将RPF接口与组播报文的实际到达接口相比较,以判断到达路径的正确性,从而决定是否转发该组播报文:
l 如果两接口一致,就认为该组播报文由正确路径而来,RPF检查通过,转发该组播报文;
l 如果两接口不一致,RPF检查失败,丢弃该组播报文。
作为路径判断依据的单播路由信息可以来源于任何一种单播路由协议或者组播静态路由。
当组播路径沿袭从组播源到接收者的最短路径树时,RPF检查过程如图8-1所示。
图8-1 RPF检查过程
l RouterC从接口POS5/0收到来自Source的组播报文,组播转发表中没有相应的转发表项。执行RPF检查,发现单播路由表中到达网段192.168.0.0/24对应的最短路径出接口是POS5/1,则判断该报文实际到达接口非RPF接口。RPF检查失败,该组播报文被丢弃。
l RouterC从接口POS5/1收到来自Source的组播报文,组播转发表中没有相应的转发表项。执行RPF检查,发现单播路由表中到达网段192.168.0.0/24对应的最短路径出接口正是该报文实际到达接口。RPF检查通过,对该报文进行转发。
RPF机制除了可以正确地按照组播路由的配置转发组播报文外,还能避免由于各种原因而造成的环路。
当组播的网络拓扑结构与单播网络拓扑结构相同时,接收者通过单播路由可以收到组播数据。然而组播的网络拓扑与单播网络拓扑有可能不同,而且网络中的一些路由器可能只支持单播而不支持组播。在这种情况下,可以通过配置组播静态路由为组播数据和单播数据提供不同的传输路径。需要注意以下两点:
l 组播静态路由只用于组播路由的RPF检查,并不用于指导组播数据转发;
l 组播静态路由仅对所配置的组播路由器生效,不会以任何方式被广播或者引入给其他路由器。
配置组播静态路由后,在进行RPF检查时,系统会同时查找单播路由表和组播静态路由表,从中分别选出最优的单播RPF路由和组播静态路由,通过比较以确定使用哪条作为RPF路由。
如图8-2所示,当网络中没有配置组播静态路由时,RPF路由为单播路由,组播信息从RouterA经由RouterB传递到RouterC;如果在RouterC上配置了来自RouterA的组播静态路由后,RPF路由将更新为直接从RouterA到RouterC的路由。
表8-1 组播策略配置任务简介
配置任务 |
说明 |
详细配置 |
使能IP组播路由 |
必选 |
|
配置组播静态路由 |
必选 |
|
配置组播路由匹配 |
可选 |
|
配置组播流量分担 |
可选 |
|
配置组播转发范围 |
可选 |
|
配置组播转发表容量 |
可选 |
在配置组播策略之前,需完成以下任务:
l 配置任一单播路由协议,实现域内网络层互通
l 配置PIM-DM(或PIM-SM)
在配置组播策略之前,需准备以下数据:
l 组播转发的最小TTL值
l 组播转发表中一条路由项的最大下行节点数目
l 组播转发表的最大路由数目
表8-2 使能IP组播路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IP组播路由 |
multicast routing-enable |
必选 缺省情况下,IP组播路由处于关闭状态 |
可以通过配置组播静态路由为组播数据和单播数据提供不同的传输路径。
表8-3 配置组播静态路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置组播静态路由 |
ip rpf-route-static source-address { mask | mask-length } [ protocol [ process-id ] ] [ route-policy policy-name ] { rpf-nbr-address | interface-type interface-number } [ preference preference ] [ order order-number ] |
必选 缺省情况下,没有配置组播静态路由 |
注意:
l 每个网段允许配置8条不同的组播静态路由。
l 配置组播静态路由可以改变组播RPF路由。
RPF在进行路由选择时,先分别从组播静态路由表和单播路由表中各选出一条最优路由,然后从这两条路由中选择最优路由。路由匹配策略有以下两种情况:
l 如果配置了按照最长匹配选择路由,则:
(1) 从这两条路由中选出最长匹配的那条路由;
(2) 如果这两条路由的掩码一样,则选择其中优先级最高的那条路由;
(3) 如果它们的优先级也相同,则按照组播静态路由、单播路由的顺序进行选择。
l 如果没有配置按照最长匹配选择路由,则:
(4) 从这两条路由中选出优先级最高的那条路由;
(5) 如果它们的优先级相同,则按照组播静态路由、单播路由的顺序进行选择。
表8-4 配置组播路由匹配
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置按照最长匹配选择路由 |
multicast longest-match |
必选 缺省情况下,按照路由表项的顺序来选择路由 |
使能了对组播流量进行负载分担的功能后,组播流量将平均分布在各条路由中。
表8-5 配置组播流量分担
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置对组播流量进行负载分担 |
multicast load-splitting { source | source-group } |
必选 缺省情况下,不对组播流量进行负载分担 |
组播信息在网络中的转发并不是漫无边际的,每个组播组对应的组播信息都必须在确定的范围内传递。目前有两种方式定义组播转发范围:
l 确定充当组播转发边界的接口,以形成一个封闭的组播转发区域;
l 确定组播转发的最小TTL(Time to Live,生存时间)值,以确定组播报文被转发的距离。
可以在所有支持组播转发的接口上配置针对某个组播组的转发边界。组播转发边界为指定范围的组播组划定了边界条件,如果组播报文的目的地址与边界条件匹配,就停止转发。当在一个接口上配置了组播转发边界后,将不能从该接口转发组播报文(包括本机发出的组播报文),也不能从该接口接收组播报文。
表8-6 配置组播转发范围
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置组播转发边界 |
multicast boundary group-address { mask | mask-length } |
必选 缺省情况下,没有配置组播转发边界 |
为了防止路由器的内存被大量的组播路由项耗尽,从而导致路由器性能下降,可以对组播路由项的数量进行限制。用户可以根据实际组网情况和业务性能要求对组播路由表中的表项数量进行限制,但不得超过路由表项数目的系统定义值。
如果组播转发表中一条路由项最大下行节点数目(即最大出接口数目)的配置值小于当前值,则超出数目的下行节点并不会被立刻删除,而必须由组播路由协议来删除,同时新增的下行节点将无法添加到转发表的该路由项中。
如果组播转发表最大路由数目的配置值小于当前值,则超出数目的路由并不会立刻被删除,而必须由组播路由协议来删除,同时新增的路由将无法添加到转发表中。
表8-7 配置组播转发表容量
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置组播转发表中一条路由项的最大下行节点数目 |
multicast forwarding-table downstream-limit limit |
必选 缺省情况下,组播转发表中一条路由项的最大下行节点数目为128 |
配置组播转发表的最大路由数目 |
multicast forwarding-table route-limit limit |
必选 缺省情况下,组播转发表的最大路由数目为1000 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后组播策略的信息,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除组播转发表和路由表的信息。
表8-8 组播策略显示和维护
操作 |
命令 |
查看组播边界信息 |
display multicast boundary [ group-address [ mask | mask-length ] ] [ interface interface-type interface-number ] |
查看组播转发表信息 |
display multicast forwarding-table [ source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } | outgoing-interface { { exclude | include | match } { interface-type interface-number | register } } | statistics | [ port-info ] [ verbose ] |
查看组播路由表信息 |
display multicast routing-table [ source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } | outgoing-interface { { exclude | include | match } { interface-type interface-number | register } } ] * |
查看组播静态路由信息 |
display multicast routing-table static [ config ] [ source-address { mask-length | mask } ] |
查看组播源的RPF信息 |
display multicast rpf-info source-address [ group-address ] |
清除组播转发表中的转发项 |
reset multicast forwarding-table { { source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } } * | all } |
清除组播路由表中的路由项 |
reset multicast routing-table { { source-address [ mask { mask | mask-length } ] | group-address [ mask { mask | mask-length } ] | incoming-interface { interface-type interface-number | register } } * | all } |
注意:
l 执行reset命令将清除组播转发表或组播路由表中的信息,可能导致组播信息无法正常传输;
l 清除组播转发表中的转发项后,组播路由表中的相应表项也将随之删除;
l 清除组播路由表中的路由项后,组播转发表中的相应表项也将随之删除。
l 网络中的所有交换机都支持组播功能;
l SwitchA、SwitchB和SwitchC之间运行OSPF协议;
l Receiver能通过SwitchA-SwitchB-SwitchC的路径正常接收来自Source1的组播信息;
l 通过配置,使Receiver可以通过SwitchC获得来自OSPF域外Source2的组播信息。
图8-3 组播静态路由配置组网图
(1) 配置各交换机的接口IP地址和单播路由协议
请按照图8-3配置各接口的IP地址和掩码,具体配置过程略。
配置SwitchA、SwitchB和SwitchC之间采用OSPF协议进行互连,确保网络中各交换机能够在网络层互通,并且能够借助单播路由协议实现动态路由更新,具体配置过程略。
(2) 使能IP组播路由,并在各接口上使能PIM
# 在SwitchC上使能IP组播路由,并在各接口上使能PIM-DM。
<SwitchC> system-view
[SwitchC] multicast routing-enable
[SwitchC] interface vlan-interface 100
[SwitchC-Vlan-interface100] pim dm
[SwitchC-Vlan-interface100] quit
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] igmp enable
[SwitchC-Vlan-interface200] pim dm
[SwitchC-Vlan-interface200] quit
[SwitchC] interface vlan-interface 300
[SwitchC-Vlan-interface300] pim dm
[SwitchC-Vlan-interface300] quit
SwitchA、SwitchB和SwitchD上的配置与SwitchC相似,配置过程略。
(3) 配置组播静态路由
# 在SwitchC上配置组播静态路由,RPF检查接口地址为192.168.3.2/24。
[SwitchC] ip rpf-route-static 10.220.5.100 255.255.255.0 192.168.3.2
(4) 检验配置效果
# 配置组播静态路由前,Receiver能正常收到来自Source1的组播信息,SwitchC从SwitchB接收组播数据,SwitchC上的RPF转发信息如下:
[SwitchC] display multicast rpf-info 10.110.5.100
RPF information about source 10.110.5.100:
RPF interface: Vlan-interface100
Referenced route/mask: 10.110.5.0/24
Referenced route type: igp
Route selection rule: preference-preferred
Load splitting rule: disable
# 配置组播静态路由后,比较RPF邻居,将发现RPF上游交换机发生了变化,也就是组播静态路由发挥作用,SwitchC上的RPF转发信息如下:
[SwitchC] display multicast rpf-info 10.220.5.100
RPF information about source 10.220.5.100:
RPF interface: Vlan-interface300
Referenced route/mask: 10.220.5.0/24
Referenced route type: unicast
Route selection rule: preference-preferred
Load splitting rule: disable
路由器没有配置动态路由协议,接口的物理状态与链路层协议状态都显示为up;但是组播静态路由失败。
l 如果没有正确配置或更新与当前网络情况相匹配的组播静态路由,则组播配置路由表和组播路由表中不存在此路由项;
l 如果查询到了最佳路由,也可能导致组播静态路由失败。
(1) 使用display multicast routing-table static config命令在组播路由配置表中查看组播路由表的详细信息,以确定是否正确配置了对应的路由并存在组播配置表中;
(2) 使用display multicast routing-table static命令在组播路由表中查看组播静态路由表的信息,以确定组播静态路由是否正确配置了对应的路由并存在于组播路由表中;
(3) 检查组播静态路由下一跳接口的接口类型。若为非点到点接口,则配置组播静态路由时,出接口必须使用下一跳地址的形式配置;
(4) 检查是否匹配指定的路由协议。如果指定了协议,使用display ip routing-table命令检查是否该协议添加了相同的路由;
(5) 检查是否匹配指定的路由策略。如果指定了路由策略,使用display route-policy命令检查配置的路由策略。
组播数据可以到达一些路由器,但无法到达最后一跳路由器。
通过在接口上使用multicast boundary命令可以设置组播转发边界,组播数据是无法跨越该边界的。
(1) 使用display pim routing-table命令查看各路由器上是否有(S,G)表项:如果有则表示收到了组播数据;否则表示没有收到组播数据。
(2) 使用display multicast boundary命令来查看接口的组播边界信息。使用multicast boundary命令来更改组播转发边界。
(3) 若采用了PIM-SM,使用display current-configuration命令检查是否配置了BSR和RP。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!